i2c: rk3x: handle dynamic clock rate changes correctly
i2c: rk3x: handle dynamic clock rate changes correctly

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 <76b9f0f67f1148bdd76344491471ffc1a0904b3d@online.de>
Tested-by: Doug Anderson <49983c4a76b998672954ed5edf4a62db4a336502@chromium.org> on RK3288
Reviewed-by: Doug Anderson <49983c4a76b998672954ed5edf4a62db4a336502@chromium.org>
Signed-off-by: Wolfram Sang <fd4ce474653598159cad06f3c83387a05cd53a44@the-dreams.de>

KristFoundation/Programs,KristFoundation/Programs,KristFoundation/Programs,KristFoundation/Programs,KristFoundation/Programs,KristFoundation/Programs