i2c: sprd: Validate the return value of clock initialization
authorBaolin Wang <baolin.wang@linaro.org>
Thu, 25 Jul 2019 07:56:18 +0000 (15:56 +0800)
committerWolfram Sang <wsa@the-dreams.de>
Tue, 6 Aug 2019 20:54:23 +0000 (22:54 +0200)
The 'enable' clock of I2C master is required, we should return an error
if failed to get the 'enable' clock, to make sure the I2C driver can be
defer probe if the clock resource is not ready.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-sprd.c

index bbcb0569522d3ef356fbdc15f1da88127d0e84d0..b432e7580458d34139e174e90ea422986fa4afb1 100644 (file)
@@ -466,9 +466,9 @@ static int sprd_i2c_clk_init(struct sprd_i2c *i2c_dev)
 
        i2c_dev->clk = devm_clk_get(i2c_dev->dev, "enable");
        if (IS_ERR(i2c_dev->clk)) {
-               dev_warn(i2c_dev->dev, "i2c%d can't get the enable clock\n",
-                        i2c_dev->adap.nr);
-               i2c_dev->clk = NULL;
+               dev_err(i2c_dev->dev, "i2c%d can't get the enable clock\n",
+                       i2c_dev->adap.nr);
+               return PTR_ERR(i2c_dev->clk);
        }
 
        return 0;
@@ -519,7 +519,10 @@ static int sprd_i2c_probe(struct platform_device *pdev)
        if (i2c_dev->bus_freq != 100000 && i2c_dev->bus_freq != 400000)
                return -EINVAL;
 
-       sprd_i2c_clk_init(i2c_dev);
+       ret = sprd_i2c_clk_init(i2c_dev);
+       if (ret)
+               return ret;
+
        platform_set_drvdata(pdev, i2c_dev);
 
        ret = clk_prepare_enable(i2c_dev->clk);