[PATCH v7] i2c: rk3x: handle dynamic clock rate changes correctly

Doug Anderson dianders at chromium.org
Fri Nov 21 10:22:17 PST 2014


On Fri, Nov 21, 2014 at 10:18 AM, Wolfram Sang <wsa at the-dreams.de> wrote:
> On Thu, Nov 20, 2014 at 10:26:50AM +0100, Max Schwarz wrote:
>> The i2c input clock can change dynamically, e.g. on the RK3066 where
>> pclk_i2c0 and pclk_i2c1 are connected to the armclk, which changes
>> rate on cpu frequency scaling.
>> Until now, we incorrectly called clk_get_rate() while holding the
>> i2c->lock in rk3x_i2c_xfer() to adapt to clock rate changes.
>> Thanks to Huang Tao for reporting this issue.
>> Do it properly now using the clk notifier framework. The callback
>> logic was taken from i2c-cadence.c.
>> Also rename all misleading "i2c_rate" variables to "clk_rate", as they
>> describe the *input* clk rate.
>> Signed-off-by: Max Schwarz <max.schwarz at online.de>
>> Tested-by: Max Schwarz <max.schwarz at online.de> on RK3188
> Superfluous, I assume that you tested a patch when you send it :)
>> Tested-by: Doug Anderson <dianders at chromium.org> on RK3288
>> Reviewed-by: Doug Anderson <dianders at chromium.org>
> Please drop such tags when there are significant changes between the
> revisions (which happened here). They need to be sent again explicitly,
> so I know really this version has been worked on.
> So, Doug, please confirm those tags.

Consider them confirmed.  I like this new version and it seems to be
working well for me.  I don't use the dynamic clock changes but it at
least doesn't crash or break in any other ways.  I've landed it
locally in my tree.


More information about the Linux-rockchip mailing list