In our design we are using two processors. one is IMX8M Plus and another one is zynq APSoC. Can we connect ethernet MAC to MAC without external phy between APSoC and IMX via RGMII. what are the design constrains needs to consider?
Hi
We have tried with different speed and phy mode combinations. no improvements in behaviour. Can you confirm whether any MAC or PHY mode configuration need to be hanlded in software IMX8MP since our hardware ENET pins are phyless, so is there any method of configuration to enable MAC mode ?
Step 1 — Check TX actually sending
Run:
ping
ethtool -S eth0
Look at:
If TX = 0 → MAC not transmitting → pinmux/clock issue
If TX > 0 but RX = 0 → skew/timing issue
Step 2 — Probe signals (critical)
Check with scope:
|
Signal |
Expectation |
|
TXC |
clock toggling |
|
TXD[0:3] |
data activity |
|
RXC |
received clock |
|
RXD[0:3] |
data toggling |
If TXD always static → MAC not sending (SW/pinmux issue)
If TX OK but RX empty → timing/skew problem
Step 3 — Validate phy-mode combination
Your DTS:
phy-mode = "rgmii-id";
Check BOTH sides:
Try:
or:
This is the#1 fix in MAC-to-MAC RGMII
Step 4 — Force TX clock/output direction
On i.MX EQOS:
Check if you need:
Some SoCs require explicit:
Step 5 — Verify pinctrl completeness
For EQOS you MUST include:
If any RX pin missing → tcpdump empty
Step 6 — Check interface mapping (very common bug)
Verify:
ethernet0 = &eqos;
ethernet1 = &fec;
Ensure:
Step 7 — Different speed test
You configured:
speed = <10>;
Try:
speed = <100>;
or:
speed = <1000>;
Many MAC-to-MAC setups fail at 10 Mbps
Step 8 — Confirm both sides identical config
Both SoCs must match:
|
Parameter |
Must match |
|
speed |
Match |
|
duplex |
Match |
|
phy-mode |
compatible |
Hi yiping,
From software side both sides fixed-phy link with speed of 10 mbps configured since there was no PHY chip mounted in hardware whether device drivers in bootloader affect the data integrity ? when we are verifying the link shows it is up, but unable to ping. could you please provide any debugging steps ? NOTE: Between 2 processors RGMII lines are hard wired with cable length matched. unable to capture any valid packets using tcpdump also. Attaching dts FYR
&eqos {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_eqos>;
phy-mode = "rgmii-id";
status = "okay";
fixed-link {
speed = <10>;
full-duplex;
};
}; Please suggest if there any other node / enet controller need to be enabled in pin muxing
Yes, if both MACs can operate in fixed-link mode (no PHY auto-negotiation), the RGMII timing is engineered correctly, especially the TX/RX clock-to-data skew, which is normally handled by a PHY.
Please refer to AN14149
Hi yiping,
We have verified external loopback in IMX with cross connection, after changing the phy-mode to rgmii-txid now we are able to see the transmitted packets counts and received packet counts are properly updating. Still when trying to send or receive from zynq no ping is happening, im suspecting the other side link partner (MAC) itself is having some issue.
There is NO special “MAC-only mode enable” in i.MX8MP hardware
The correct method is:
|
Mode |
Meaning |
|
rgmii |
NO delay |
|
rgmii-id |
both TX & RX delay |
|
rgmii-txid |
TX delay only |
|
rgmii-rxid |
RX delay only |
TXC must connect to RXC (cross connection), NOT TXC–TXC.
Hi yiping,
Does other end MAC also need to have same phy-mode and same speed with fixed phy link?