Knowledge Base Article

Why does Linux report "DMA engine initialization failed" error when EMAC uses GMII interface?

Description

When supporting GMII interface for HPS EMAC, there are three clocks exported to FPGA:

emac_tx_clk_i(input), emac_rx_clk_i(input), emac_gtx_clk(output)

The Linux would report below error if the emac_tx_clk_i clock is not connected correctly:

......

[    4.291414] socfpga-dwmac ff802000.ethernet: Failed to reset the dma

[    4.297785] socfpga-dwmac ff802000.ethernet eth1: stmmac_hw_setup: DMA engine initialization failed

[    4.306806] socfpga-dwmac ff802000.ethernet eth1: stmmac_open: Hw setup failed

......

Resolution

Besides connecting the emac_rx_clk_i(125MHz) for GMII, the emac_tx_clk_i also needs to be connected correctly (2.5MHz or 25MHz), although it is not used in GMII mode. 

The emac_tx_clk_i requirement information has been added in the HPS document beginning with version 21.2.

Updated 1 month ago
Version 2.0
No CommentsBe the first to comment