On 12/15, Pierre-Louis Bossart wrote:
I am not sure I understand this last comment. init.name is not a constant, it's made of the "pmc_plt_clk_" string concatenated with an id which directly maps to which hardware clock is registered.
That's all fine. We need globally unique strings for clk names in the framework so things work.
Clients use devm_clk_get() with a "pmc_plt_clk_<n>" argument.
This is the problem. Clients should be calling clk_get() like:
clk_get(dev, "signal name in datasheet")
where the first argument is the device and the second argument is some string that is meaningful to the device, not the system as a whole. The way clkdev is intended is so that the dev argument's dev_name() is combined with the con_id that matches some signale name in the datasheet. This way when the same IP is put into some other chip, the globally unique name doesn't need to change, just the device name that's registered with the lookup. Obviously this breaks down quite badly when dev_name() isn't stable. Is that happening here?