Hi all,
On my custom board, there are two 66AK2H14s, one BCM5389(Broadcom 8 port 1GbE switch) and one PHY Marvell 88E1111.
The SGMII port 0 of each 66AK2H14 are connected to BCM5389 and the 88E1111's SGMII port is connected to BCM5389 too.
After powering the board on, I find the link between BCM5389 and 88E1111's SGMII port is OK. This link is indicated by one LEDA signal of BCM5389. Low means link is up and If send data through 88E1111 from PC and then this LEDA can blink as the BCM5389's datasheet says.
So I think the BCM5389 and 88E1111 both work well.
Then I load program into one 66AK2H14. The configuration is as the figure below
And then the following codes can go over.
do { CSL_SGMII_getStatus(macPortNum, &sgmiiStatus); } while (sgmiiStatus.bIsLinkUp != 1); /* Wait for SGMII Autonegotiation to complete without error */ do { CSL_SGMII_getStatus(macPortNum, &sgmiiStatus); if (sgmiiStatus.bIsAutoNegError != 0) return -1; } while (sgmiiStatus.bIsAutoNegComplete != 1);
I mean the 66AK2H14 can check the link between itself and BCM5389 is up.
But this link's indication signal LEDA of BCM5389 remains high! I mean the BCM5389 thinks the link between itself and 66AK2H14 is not up.
I think BCM5389 works well.
So is there something wrong in 66AK2H14? But It had checked the SGMII status and found the link is up and the Auto Negotiation is completed.
So why? Can anyone help me?
Regards,
Feng