i2c: rk3x: enable clock before getting rate
authorJohn Keeping <john@metanate.com>
Mon, 4 Oct 2021 13:15:39 +0000 (14:15 +0100)
committerWolfram Sang <wsa@kernel.org>
Mon, 29 Nov 2021 09:38:36 +0000 (10:38 +0100)
clk_get_rate() is documented as requiring the clock to be enabled.
Ensure that the bus clock is enabled before calling clk_get_rate() in
rk3x_i2c_probe() to satisfy this requirement.

Signed-off-by: John Keeping <john@metanate.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-rk3x.c

index 819ab4e..332755f 100644 (file)
@@ -1338,8 +1338,15 @@ static int rk3x_i2c_probe(struct platform_device *pdev)
                goto err_pclk;
        }
 
+       ret = clk_enable(i2c->clk);
+       if (ret < 0) {
+               dev_err(&pdev->dev, "Can't enable bus clk: %d\n", ret);
+               goto err_clk_notifier;
+       }
+
        clk_rate = clk_get_rate(i2c->clk);
        rk3x_i2c_adapt_div(i2c, clk_rate);
+       clk_disable(i2c->clk);
 
        ret = i2c_add_adapter(&i2c->adap);
        if (ret < 0)