[U-Boot-Users] Debugging 85xx eTSEC's

robert lazarski robertlazarski at gmail.com
Wed Oct 31 14:20:25 CET 2007


On 10/27/07, C Balakumar <c.balakumar at 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




More information about the U-Boot mailing list