i2c: designware: assert reset when error happen at ->probe()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 19 Aug 2019 10:24:23 +0000 (13:24 +0300)
committerWolfram Sang <wsa@the-dreams.de>
Thu, 29 Aug 2019 20:10:01 +0000 (22:10 +0200)
The commit c62ebb3d5f0d ("i2c: designware: Add support for an interface clock")
introduced an optional clock while missed correct error handling.
assert reset line back if error happen at ->probe().

Fixes: c62ebb3d5f0d ("i2c: designware: Add support for an interface clock")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-designware-platdrv.c

index ddfb818..4624ef8 100644 (file)
@@ -346,8 +346,10 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
 
        /* Optional interface clock */
        dev->pclk = devm_clk_get_optional(&pdev->dev, "pclk");
-       if (IS_ERR(dev->pclk))
-               return PTR_ERR(dev->pclk);
+       if (IS_ERR(dev->pclk)) {
+               ret = PTR_ERR(dev->pclk);
+               goto exit_reset;
+       }
 
        dev->clk = devm_clk_get(&pdev->dev, NULL);
        if (!i2c_dw_prepare_clk(dev, true)) {