Arria 10 w Marvell 88E1512 transmit fine but no receive - 100% packet loss


I have a custom Arria 10 SoC board with a Marvell 88E1512 PHY attached to the HPS EMAC0 that I’m trying to get working with Linux. The kernel boots and upon running dhcp (or ping with a static IP) - there are 0 RX Bytes reported. I can see my ping or dhcp request from wireshark, so I am indeed transmitting just fine. But I can’t receive. I have looked at the signals on the PCB, and all signals appear to be working (i.e.: I can see the activity when I ping, etc.). Has anyone implemented a PCB with an A10 + Marvell PHY? Any ideas what could be the issue? Maybe an issue in the device tree source?


I found the issue. I had to set the device tree phy-mode setting to “rgmii-id” meaning “Internal Delays”, which means RX TX clock-to-data delays are handled by the PHY, not the MAC. I also had to remove the manually added MAC delays that were in my device tree, and change the phy-addr = < 0xffffffff >, which means auto-detect address (but this can just be set to the actual phy address)


…and inside of the marvell phy driver c code, this will then set bits 4 and 5 of register 2-21