[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <aJLI9WCK5kPA1qZ3@pie>
Date: Wed, 6 Aug 2025 03:16:05 +0000
From: Yao Zi <ziyao@...root.org>
To: Jakub Kicinski <kuba@...nel.org>
Cc: Drew Fustini <fustini@...nel.org>, Guo Ren <guoren@...nel.org>,
Fu Wei <wefu@...hat.com>, Andrew Lunn <andrew+netdev@...n.ch>,
"David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>, Paolo Abeni <pabeni@...hat.com>,
Emil Renner Berthing <emil.renner.berthing@...onical.com>,
Jisheng Zhang <jszhang@...nel.org>, nux-riscv@...ts.infradead.org,
netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH net] net: stmmac: thead: Enable TX clock before MAC
initialization
On Tue, Aug 05, 2025 at 05:38:25PM -0700, Jakub Kicinski wrote:
> On Fri, 1 Aug 2025 09:45:07 +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. The rate doesn't matter, which we
> > could reclock properly according to the link speed later after link is
> > up.
>
> All the possible DIV values are valid?
> I think it's safer to set the DIV to some well known constant,
> just to be on the safe side.
Oops, this statement seems misleading. I was going to say "the exact
rate isn't critical for MAC initialization". The patch actually sets
the divider to zero, which works according to my test.
And I realized the divider's behavior isn't well-documented when DIV is
set to zero. Will set the clock to RGMII speed in v2, and adjust the
commit message like
Let's simply write GMAC_PLLCLK_DIV_EN to GMAC_PLLCLK_DIV to
enable the divider before MAC initialization. The exact rate
doesn't affect MAC's initialization according to my test. It's
set to the speed required by RGMII and could be reclocked
later after link is up if necessary.
Thanks,
Yao Zi
Powered by blists - more mailing lists