I am trying to ping one EMAC from another, and have instantiated the following in the HPS: These are exported to the top level, then connected as followed: // https://www.intel.com/content/...
On top of what my other colleagues asked, Can you also dump, the boot Linux log for all the lines that mentions "socfpga-dwmac"?
I want to understand if the Hard IP is even accessible or enabled correctly by the Quartus design for Ethernet. The example i have here is for gmac2. But you are using gmac0 and gmac1. It seems you are unable to even perform the initial setup of the ETH HW which has a DMA engine. This requires write to the ETH HW CSR register address.
I want to see if the GMAC0 and GMAC1 are even enabled correctly from the Quartus design at the HPS.
In the Quartus HPS config, did you enable GMAC0 and GMAC1 from the dropdowns to select the function?
This should be propagated as a handoff data to the U-boot HPS FSBL which will configure the PINMUX and also CLK settings. The Handoff is important to the HPS to configure the ETH clock settings and pinmux. The GMAC0 and GMAC1 reset should already been de-asserted by the U-boot during boot-up. So, i don't suspect the reset de-assertion. It is either the CLK or the PINMUX or a combination of both. Without CLK, the IP will be permanently be disabled. CLK is the major suspect.
In short, I suspect that, the GMAC0 and GMAC1 CLK are disabled by a bad Quartus configuration.
Log for Linux: Example for a working GMAC on GMAC2. I need to see the similar log for GMAC0 and GMAC1 on your end. I want to know how far it went before it threw the error.
[ 0.744790] socfpga-dwmac 10830000.ethernet: Adding to iommu group 0
[ 0.746937] socfpga-dwmac 10830000.ethernet: IRQ eth_wake_irq not found
[ 0.747646] socfpga-dwmac 10830000.ethernet: IRQ eth_lpi not found
[ 0.748310] socfpga-dwmac 10830000.ethernet: IRQ sfty not found