ppc4xx: setup 440EPx/GRx ZMII/RGMII bridge depending on PFC register content.

Signed-off-by: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
This commit is contained in:
Matthias Fuchs 2007-04-24 14:03:45 +02:00 committed by Stefan Roese
parent d216862635
commit 37ed6cdd41

View File

@ -339,29 +339,41 @@ int ppc_4xx_eth_setup_bridge(int devnum, bd_t * bis)
int ppc_4xx_eth_setup_bridge(int devnum, bd_t * bis) int ppc_4xx_eth_setup_bridge(int devnum, bd_t * bis)
{ {
unsigned long zmiifer=0x0; unsigned long zmiifer=0x0;
unsigned long pfc1;
/* mfsdr(sdr_pfc1, pfc1);
* Right now only 2*RGMII is supported. Please extend when needed. pfc1 &= SDR0_PFC1_SELECT_MASK;
* sr - 2006-08-29
*/ switch (pfc1) {
switch (1) { case SDR0_PFC1_SELECT_CONFIG_2:
case 0:
/* 1 x GMII port */ /* 1 x GMII port */
out32 (ZMII_FER, 0x00); out32 (ZMII_FER, 0x00);
out32 (RGMII_FER, 0x00000037); out32 (RGMII_FER, 0x00000037);
bis->bi_phymode[0] = BI_PHYMODE_GMII; bis->bi_phymode[0] = BI_PHYMODE_GMII;
bis->bi_phymode[1] = BI_PHYMODE_NONE; bis->bi_phymode[1] = BI_PHYMODE_NONE;
break; break;
case 1: case SDR0_PFC1_SELECT_CONFIG_4:
/* 2 x RGMII ports */ /* 2 x RGMII ports */
out32 (ZMII_FER, 0x00); out32 (ZMII_FER, 0x00);
out32 (RGMII_FER, 0x00000055); out32 (RGMII_FER, 0x00000055);
bis->bi_phymode[0] = BI_PHYMODE_RGMII; bis->bi_phymode[0] = BI_PHYMODE_RGMII;
bis->bi_phymode[1] = BI_PHYMODE_RGMII; bis->bi_phymode[1] = BI_PHYMODE_RGMII;
break; break;
case 2: case SDR0_PFC1_SELECT_CONFIG_6:
/* 2 x SMII ports */ /* 2 x SMII ports */
out32 (ZMII_FER,
((ZMII_FER_SMII) << ZMII_FER_V(0)) |
((ZMII_FER_SMII) << ZMII_FER_V(1)));
out32 (RGMII_FER, 0x00000000);
bis->bi_phymode[0] = BI_PHYMODE_SMII;
bis->bi_phymode[1] = BI_PHYMODE_SMII;
break;
case SDR0_PFC1_SELECT_CONFIG_1_2:
/* only 1 x MII supported */
out32 (ZMII_FER, (ZMII_FER_MII) << ZMII_FER_V(0));
out32 (RGMII_FER, 0x00000000);
bis->bi_phymode[0] = BI_PHYMODE_MII;
bis->bi_phymode[1] = BI_PHYMODE_NONE;
break; break;
default: default:
break; break;