We have a custom board using the LS1028A(actually a VA7230) with a VSC8574RT ethernet quad PHY. The LS1028 is connected to the PHY using QSGMII. In the u-boot build (defconfig), I have enabled CONFIG_PHY_MSCC and disabled CONFIG_PHY_VITESSE. Once u-boot comes up I am running these commands:
> setenv ethact swp3
> setenv ipaddr 192.168.1.3
> ping 192.168.1.1
Swp3 is directly connected to a PC with a static ip address of 192.168.1.1.
The ping times out and the host is not alive.
After further investigation, we have determined the following:
1) All of the external PHY's are detected and listed in the emdio-3 interface using the "mii info" command
2) The external PHY says that the link is up
3) The internal PHY says that the link is down
=> mii device enet-2
=> mii dump 3 1
1. (0009) -- PHY status register --
(8000:0000) 1.15 = 0 100BASE-T4 able
(4000:0000) 1.14 = 0 100BASE-X full duplex able
(2000:0000) 1.13 = 0 100BASE-X half duplex able
(1000:0000) 1.12 = 0 10 Mbps full duplex able
(0800:0000) 1.11 = 0 10 Mbps half duplex able
(0400:0000) 1.10 = 0 100BASE-T2 full duplex able
(0200:0000) 1. 9 = 0 100BASE-T2 half duplex able
(0100:0000) 1. 8 = 0 extended status
(0080:0000) 1. 7 = 0 (reserved)
(0040:0000) 1. 6 = 0 MF preamble suppression
(0020:0000) 1. 5 = 0 A/N complete
(0010:0000) 1. 4 = 0 remote fault
(0008:0008) 1. 3 = 1 A/N able
(0004:0000) 1. 2 = 0 link status
(0002:0000) 1. 1 = 0 jabber detect
(0001:0001) 1. 0 = 1 extended capabilities
I have compared this same setup with the LS1028ARDB devkit (which uses a VSC8514 external PHY) and it reports that its internal PHY link is up:
=> mii dump 3 1
1. (002d) -- PHY status register --
(8000:0000) 1.15 = 0 100BASE-T4 able
(4000:0000) 1.14 = 0 100BASE-X full duplex able
(2000:0000) 1.13 = 0 100BASE-X half duplex able
(1000:0000) 1.12 = 0 10 Mbps full duplex able
(0800:0000) 1.11 = 0 10 Mbps half duplex able
(0400:0000) 1.10 = 0 100BASE-T2 full duplex able
(0200:0000) 1. 9 = 0 100BASE-T2 half duplex able
(0100:0000) 1. 8 = 0 extended status
(0080:0000) 1. 7 = 0 (reserved)
(0040:0000) 1. 6 = 0 MF preamble suppression
(0020:0020) 1. 5 = 1 A/N complete
(0010:0000) 1. 4 = 0 remote fault
(0008:0008) 1. 3 = 1 A/N able
(0004:0004) 1. 2 = 1 link status
(0002:0000) 1. 1 = 0 jabber detect
(0001:0001) 1. 0 = 1 extended capabilities
What could be causing the internal PHY to not complete auto-neg and not bring the link up?