Hello On Tue, Sep 20, 2022 at 10:56:17AM +0200, Marco Felsch wrote: > Hi Sakari, > > On 22-09-19, Sakari Ailus wrote: > > ... > > > > > > + ret = clk_prepare_enable(mt9m111->clk); > > > > > + if (ret < 0) > > > > > + return ret; > > > > > + > > > > > + extclk_rate = clk_get_rate(mt9m111->clk); > > > > > + clk_disable_unprepare(mt9m111->clk); > > > > > > > > I don't think you'll need to enable a clock to just get its frequency. > > > > > > The official API states that you need to turn on the clk before > > > requesting it and it makes sense. Also there is a new helper > > > devm_clk_get_enabled() which addresses simple clk usage since most of > > > drivers don't enable it before requesting the rate. Had the same question on v1 and Marco pointed me to the clk_get_rate() documentation https://elixir.bootlin.com/linux/v6.0-rc1/source/include/linux/clk.h#L682 which indeed specifies "This is only valid once the clock source has been enabled." However none (or very few) of the linux-media i2c drivers actually do that. I have added in cc the clk framework maintainer to see if he can help shed some light on this > > > > I guess the rate could change in the meantime, unless exclusive access is > > requested. > > Not only that, there are a bunch of clk provider hw around which may > need to turned on first. Anyway, I really don't care on this topic. As > I said I wanted to fullfil the API and if drop clk_prepare_enable() I > don't. So if this okay for you I will go that way. > > > The clock framework currently doesn't offer a way to set the assigned > > rate and prevent changing it. But above, couldn't the clock frequency > > be changed again once the clock has been disabled? > > Yes it could. > > Regards, > Marco