Re: [PATCH net v3] net: stmmac: thead: Enable TX clock before MAC initialization

From: Drew Fustini
Date: Sat Aug 16 2025 - 19:06:48 EST


On Fri, Aug 15, 2025 at 10:48:03AM +0000, Yao Zi wrote:
> The clk_tx_i clock must be supplied to the MAC for successful
> initialization. On TH1520 SoC, the clock is provided by an internal
> divider configured through GMAC_PLLCLK_DIV register when using RGMII
> interface. However, currently we don't setup the divider before
> initialization of the MAC, resulting in DMA reset failures if the
> bootloader/firmware doesn't enable the divider,
>
> [ 7.839601] thead-dwmac ffe7060000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0
> [ 7.938338] thead-dwmac ffe7060000.ethernet eth0: PHY [stmmac-0:02] driver [RTL8211F Gigabit Ethernet] (irq=POLL)
> [ 8.160746] thead-dwmac ffe7060000.ethernet eth0: Failed to reset the dma
> [ 8.170118] thead-dwmac ffe7060000.ethernet eth0: stmmac_hw_setup: DMA engine initialization failed
> [ 8.179384] thead-dwmac ffe7060000.ethernet eth0: __stmmac_open: Hw setup failed
>
> Let's simply write GMAC_PLLCLK_DIV_EN to GMAC_PLLCLK_DIV to enable the
> divider before MAC initialization. Note that for reconfiguring the
> divisor, the divider must be disabled first and re-enabled later to make
> sure the new divisor take effect.
>
> The exact clock rate doesn't affect MAC's initialization according to my
> test. It's set to the speed required by RGMII when the linkspeed is
> 1Gbps and could be reclocked later after link is up if necessary.
>
> Fixes: 33a1a01e3afa ("net: stmmac: Add glue layer for T-HEAD TH1520 SoC")
> Signed-off-by: Yao Zi <ziyao@xxxxxxxxxxx>

Reviewed-by: Drew Fustini <fustini@xxxxxxxxxx>