Hello,
I have a device with two processors. One is an AM6234, and the other is a processor from another manufacturer. I am attempting to connect the two processors via an RGMII fixed-link connection with no PHY in between.I am limited on board space so adding a PHY is not an option.The interface on the second processor is configured and working correctly. My question is regarding the AM6234 side of things.
On the AM6234 I am using v08.06.00.42 of the SDK. In the hardware port 1 of the CPSW3G switch is connected directly to the second processor. I configured the port in the DeviceTree as a fixed link connection at 1Gig.
cpsw_port1: port@1 {
reg = <1>;
ti,mac-only;
label = "port1";
mac-address = [00 00 00 00 00 00];
fixed-link {
speed = <1000>;
full-duplex;
};
};
When I booted up Linux it gave me the following error message:
am65-cpsw-nuss 8000000.ethernet: /bus@f0000/ethernet@8000000/ethernet-ports/port@1 error retrieving port phy: -19
I started investigating the am65_cpsw_nuss driver to see why it was not recognized and noticed that in the am65_cpsw_nuss_init_slave_ports function it assumes that there is a PHY and throws an error if there is not.
These changes allowed me to bring up the fixed link interface in Linux. I can see the following messages print while Linux is booting:
am65-cpsw-nuss 8000000.ethernet eth0: configuring for fixed/rgmii-id link mode
am65-cpsw-nuss 8000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
At this point, I set the ip address using the ifconfig command and attempted to ping my second processor, but it never receives a response to the ping. I used the ifconfig command to print out the statistics on both processors.
On the secondary processor:
eth1 Link encap:Ethernet HWaddr 00:1C:44:00:06:FE
inet addr:10.6.0.1 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1260 (1.2 KiB) TX bytes:523 (523.0 B)
Interrupt:45 Base address:0xb000
On the primary processor:
eth0 Link encap:Ethernet HWaddr 34:08:E1:87:67:C3
inet addr:10.6.0.2 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:18720 (18.2 KiB)
This indicates to me that the AM6234 is sending messages successfully, and the second processor is receiving them and sending a response, but the AM6234 is not processing that response for some reason. As you can see there are no errors or drops indicated on either side of the connection. I used a scope to check the clock, data, and control lines between the processors and they indicate that packets are being sent both directions as expected.
I did some debug print statements and it looks like the am65_cpsw_nuss_rx_poll function is never even getting called.
I realize what I am attempting to do is not a common use case for this device, but using a PHY between the processors is not an option for my design. I have been unable to find any helpful info on E2E so far.
Any ideas for how to resolve this issue?