Am Tue, 24 Sep 2024 17:53:17 +0100 schrieb "Russell King (Oracle)" <linux@xxxxxxxxxxxxxxx>: > On Mon, Sep 23, 2024 at 02:04:47PM +0200, Andreas Kemnade wrote: > > So the way forward is to check whether that registration is really > > needed at: > > https://elixir.bootlin.com/linux/v6.11/source/drivers/bus/ti-sysc.c#L2380 > > If yes, then > > a) increade the size of the name in the clk subsystem or > > b) workaround like > > https://elixir.bootlin.com/linux/v6.11/source/drivers/bus/ti-sysc.c#L353 > > > > I'll also mention that if one is using DT, then the clkdev tables > should not be relevant - the lookups of clocks should be done by > parsing the clocks property in the description of the device. > I played around to ensure I know really what I am doing and what I am messing around with: we have in i2c-omap.c: fclk = clk_get(omap->dev, "fck"); just for getting the module clock rate to configure i2c accordingly That only works if https://elixir.bootlin.com/linux/v6.11/source/drivers/bus/ti-sysc.c#L2380 is working. Here some clk_get(omap->dev->parent, ...) would also just work without said line in ti-sysc.c because then dt lookup kicks in. In the omap3 case, there are several devices using the older hwmod mechanism and are not converted to ti-sysc yet. Then the clock gets registered here: https://elixir.bootlin.com/linux/v6.11/source/arch/arm/mach-omap2/omap_device.c#L116 In the case, a clk_get(omap->dev->parent, ...) in e.g. i2c-omap.c would fail. No dt lookup can kick in. The background of this is to ensure to keep soc-specific pm out of the drivers and do it in a common place. Regards, Andreas