Hi Chris, On Tue, Sep 18, 2018 at 5:52 PM Chris Brandt <Chris.Brandt@xxxxxxxxxxx> wrote: > On Tuesday, September 18, 2018 1, Geert Uytterhoeven wrote: > > > What do you see the .dtsi and .dts looking like? > > > > The part using CLK_OF_DECLARE() is not a platform driver. It does not > > operate on a device (struct platform_device), but on a device node > > (struct > > device_node). Hence it would match against the same DT node, but map it > > using of_iomap(). So you just need the existing "renesas,r7s9210-cpg- > > mssr" > > node. > > So...I tried that...and it doesn't work. > > Basically, this: > CLK_OF_DECLARE(cpg_mstp_early_clks, "renesas,r7s9210-cpg-mssr", > rza2_cpg_mssr_early_init); > > But, what happens is that rza2_cpg_mssr_early_init gets called because > it find a match against "renesas,r7s9210-cpg-mssr". But later after > cpg_mssr_init gets call, cpg_mssr_probe never gets called. I assume that is > because device "renesas,r7s9210-cpg-mssr" has already been matched to a > driver. > > > Please have a look at e.g. "mediatek,mt2712-topckgen". > > One thing I don't understand is that in the early init, it registers a > of_clk_add_provider. But then later in the probe, it register > of_clk_add_provider again (on the same DT node). I guess you can do that???? Yeah, I noticed that, too. It just adds the same xlate method and data pointer to the list. So it's harmless, but unneeded. > So I see what the mediatek is doing, but I can't seem to reproduce it. I > must be missing something. It's using CLK_OF_DECLARE_DRIVER(), which clears OF_POPULATED: /* * Use this macro when you have a driver that requires two initialization * routines, one at of_clk_init(), and one at platform device probe */ #define CLK_OF_DECLARE_DRIVER(name, compat, fn) \ static void __init name##_of_clk_init_driver(struct device_node *np) \ { \ of_node_clear_flag(np, OF_POPULATED); \ fn(np); \ } \ OF_DECLARE_1(clk, name, compat, name##_of_clk_init_driver) Sorry for failing to tell you. I did know about that flag, but only remembered due to your problem report. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds