We have a new board design using AM3356 CPU. We have two Broadcom BCM54612E Phy chips connected to the CPU the same as on the EVM board. Its driver is detected by Linux during boot-up at the correct address, but any traffic to the network interface (eth0) just doesn't go anywhere. We seem to be able to talk to the phy over RGMII, read and write registers. We've probed AM335x's reset pin and it should be resetting the phy correctly too at boot-up, as per the phy requirement.
We are using kernel version 3.2, and the TI AM335x SDK 6.0 U-Boot (u-boot-2013.01.01-psp06.00.00.00) and have the same issue on both.
The specific Phy address is detected during boot-up, both in the U-Boot and kernel boot-up messages, i.e. the phy is being recognised as the Broadcom device (I had to modify the am33xx_cpsw_slaves[] structure).
U-Boot
Net: My note -- Broadcom chip initialised
<ethaddr> not set. Validating first E-fuse MAC
My note -- Found phy ID = 0x3625xx
cpsw:02 is connected to cpsw. Reconnecting to cpsw
cpsw
Hit any key to stop autoboot: 0
Kernel
[ 1.187415] davinci_mdio davinci_mdio.0: phy[01]: device 0:01, driver Broadcom BCM54612E
[ 1.196046] davinci_mdio davinci_mdio.0: phy[02]: device 0:02, driver Broadcom BCM54612E
Once booted, I try to enable the ethernet port, and either get a DHCP address or set static IP:
ifconfig eth0 up
udhcpc
The dhcp gets nothing though and times out:
# udhcpc
udhcpc (v1.20.2) started
Sending discover...
Sending discover...
Sending discover...
and pinging with static IP address does nothing either:
ifconfig eth0 10.10.10.200 netmask 255.255.255.0
# ping 10.10.10.1
PING 10.10.10.1 (10.10.10.1): 56 data bytes
^C
--- 10.10.10.1 ping statistics ---
8 packets transmitted, 0 packets received, 100% packet loss
When the ethernet cable is plugged in, I can see the messages that it has recognised the connection and auto-negotiated the connection type, we've tried switches with 10/Half and 100/Half and now got a router to test 100/Full.
[ 187.106181] CPSW phy found : id is : 0x3625xx
# [ 190.049131] PHY: 0:01 - Link is Up - 100/Full
We've set sniffing at its MAC address, but got nothing out.
It seems to me that CPSW is doing all the handling of data going to any external ports, so just wondering if its configuration could be rather particular.
Any suggestions for how such an issue could be debugged? Is there something that needs to be done to configure CPSW correctly?
Any help would be greatly appreciated. I'm really really stuck...