
On 10/27/07, C Balakumar c.balakumar@gdatech.co.in wrote:
Hi Robert,
Check the MDIO and MDC lines on your custom board.
It seems like you are not able to read the PHY ID. And also check the phy address configuration in the u-boot board config file.
The MDIO and MDC lines had a jumper in the wrong place, thanks for the help everyone. This is what I get now as only eTSEC2 is currently mounted on the board:
eTSEC2: PHY is Marvell 88E1111S (1410cc2)
=> mii info PHY_PHYIDR2 @ 0x0 = 0xffff PHY_PHYIDR2 @ 0x1 = 0xffff PHY_PHYIDR2 @ 0x2 = 0x0cc2 PHY_PHYIDR[1,2] @ 0x2 = 0x01410cc2 PHY 0x02: OUI = 0x5043, Model = 0x0C, Rev = 0x02, 10baseT, HDX PHY_PHYIDR2 @ 0x3 = 0xffff
However, I still can't ping:
=> setenv ethact eTSEC2 => setenv netdev eth2 => ping 10.101.43.10 eTSEC2: No link. Speed: 1000, full duplex Using eTSEC3 device ping failed; host 10.101.43.10 is not alive
I have a feeling this may be because eTSEC2 is in sgmii mode and not rgmii - does that make sense? Do TSEC's in u-boot fall into sgmii by default? My code detects sgmii :
void pci_init_board(void) { volatile immap_t *immap = (immap_t *)CFG_IMMR; volatile ccsr_gur_t *gur = &immap->im_gur; uint devdisr = gur->devdisr; uint io_sel = (gur->pordevsr & MPC85xx_PORDEVSR_IO_SEL) >> 19; uint host_agent = (gur->porbmsr & MPC85xx_PORBMSR_HA) >> 16;
debug (" pci_init_board: devdisr=%x, io_sel=%x, host_agent=%x\n", devdisr, io_sel, host_agent);
if (io_sel & 1) { if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII1_DIS)) printf (" eTSEC1 is in sgmii mode.\n"); if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII2_DIS)) printf (" eTSEC2 is in sgmii mode.\n"); if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII3_DIS)) printf (" eTSEC3 is in sgmii mode.\n"); if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII4_DIS)) printf (" eTSEC4 is in sgmii mode.\n"); } ... }
I've been looking at the tsec driver and the code for the 88E1111S in particular and its unclear to me so far how to ensure that all my TSEC's are in rgmii mode. Any ideas?
Thanks, Robert