Quoting Théo Lebrun (2023-12-22 03:25:12) > On Wed Dec 20, 2023 at 12:09 AM CET, Stephen Boyd wrote: > > Quoting Théo Lebrun (2023-12-18 09:14:18) > > > > + of_clk_add_hw_provider(np, of_clk_hw_onecell_get, data); > > > +} > > > + > > > +CLK_OF_DECLARE_DRIVER(eq5c, "mobileye,eyeq5-clk", eq5c_init); > > > > Please use a platform driver. > > I've been trying to do that but I had a stall at boot. I initially > associated it with the UART driver acquiring a clock too early but > instead it is the CPU timer clocksource driver that consumes one of our > clock way earlier than any platform driver initialisation. > > The clocksource driver we are talking about is this one for reference: > https://elixir.bootlin.com/linux/v6.6.8/source/drivers/clocksource/mips-gic-timer.c > > Its usage of TIMER_OF_DECLARE means it gets probed by timer_probe -> > plat_time_init -> time_init -> start_kernel. This is way before any > initcalls. Our prior use of CLK_OF_DECLARE_DRIVER meant that we got > probed by of_clk_init -> plat_time_init. > > I'm guessing we are not the first one in this situation; any advice on > how to deal with it? > You guessed correctly. In that case, use CLK_OF_DECLARE_DRIVER() and register the clk(s) needed for the timer in that function. Other clks shall be registered with a platform driver.