rockchip: backport gmac clk fixes for rk3588
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
parent
42afc4e64e
commit
0511e98b81
@ -0,0 +1,54 @@
|
||||
From cd8b5366636bdff0449b789fb2d33abb20804255 Mon Sep 17 00:00:00 2001
|
||||
From: Heiko Stuebner <heiko.stuebner@cherry.de>
|
||||
Date: Sat, 14 Dec 2024 23:48:19 +0100
|
||||
Subject: [PATCH] clk: rockchip: rk3588: make refclko25m_ethX critical
|
||||
|
||||
Ethernet phys normally need a 25MHz refclk input. On a lot of boards
|
||||
this is done with a dedicated 25MHz crystal. But the rk3588 CRU also
|
||||
provides a means for that via the refclko25m_ethX clock outputs that
|
||||
can be used for that function.
|
||||
|
||||
The mdio bus normally probes devices on the bus at runtime, by reading
|
||||
specific phy registers. This requires the phy to be running and thus
|
||||
also being supplied by its reference clock.
|
||||
|
||||
While there exist the possibility and dt-binding to declare these
|
||||
input clocks for each phy in the phy-dt-node, this is only relevant
|
||||
_after_ the phy has been detected and during the drivers probe-run.
|
||||
|
||||
This results in a chicken-and-egg-problem. The refclks in the CRU are
|
||||
running on boot of course, but phy-probing can very well happen after
|
||||
clk_disable_unused has run.
|
||||
|
||||
In the past I tried to make clock-handling part of the mdio bus code [0]
|
||||
but that wasn't very well received, due to it being specific to OF and
|
||||
clocks with the consensus being that resources needed for detection
|
||||
need to be enabled before.
|
||||
|
||||
So to make probing ethernet phys using the internal refclks possible,
|
||||
make those 2 clocks critical.
|
||||
|
||||
[0] https://lore.kernel.org/netdev/13590315.F0gNSz5aLb@diego/T/
|
||||
|
||||
Signed-off-by: Heiko Stuebner <heiko.stuebner@cherry.de>
|
||||
Link: https://lore.kernel.org/r/20241214224820.200665-1-heiko@sntech.de
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
drivers/clk/rockchip/clk-rk3588.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/clk/rockchip/clk-rk3588.c
|
||||
+++ b/drivers/clk/rockchip/clk-rk3588.c
|
||||
@@ -772,10 +772,10 @@ static struct rockchip_clk_branch rk3588
|
||||
COMPOSITE(MCLK_GMAC0_OUT, "mclk_gmac0_out", gpll_cpll_p, 0,
|
||||
RK3588_CLKSEL_CON(15), 7, 1, MFLAGS, 0, 7, DFLAGS,
|
||||
RK3588_CLKGATE_CON(5), 3, GFLAGS),
|
||||
- COMPOSITE(REFCLKO25M_ETH0_OUT, "refclko25m_eth0_out", gpll_cpll_p, 0,
|
||||
+ COMPOSITE(REFCLKO25M_ETH0_OUT, "refclko25m_eth0_out", gpll_cpll_p, CLK_IS_CRITICAL,
|
||||
RK3588_CLKSEL_CON(15), 15, 1, MFLAGS, 8, 7, DFLAGS,
|
||||
RK3588_CLKGATE_CON(5), 4, GFLAGS),
|
||||
- COMPOSITE(REFCLKO25M_ETH1_OUT, "refclko25m_eth1_out", gpll_cpll_p, 0,
|
||||
+ COMPOSITE(REFCLKO25M_ETH1_OUT, "refclko25m_eth1_out", gpll_cpll_p, CLK_IS_CRITICAL,
|
||||
RK3588_CLKSEL_CON(16), 7, 1, MFLAGS, 0, 7, DFLAGS,
|
||||
RK3588_CLKGATE_CON(5), 5, GFLAGS),
|
||||
COMPOSITE(CLK_CIFOUT_OUT, "clk_cifout_out", gpll_cpll_24m_spll_p, 0,
|
Loading…
x
Reference in New Issue
Block a user