i2c: omap: Improve error reporting for problems during .remove()
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Thu, 6 Apr 2023 08:23:54 +0000 (10:23 +0200)
committerWolfram Sang <wsa@kernel.org>
Thu, 13 Apr 2023 16:47:13 +0000 (18:47 +0200)
If pm_runtime_get() fails in .remove() the driver used to return the
error to the driver core. The only effect of this (compared to returning
zero) is a generic warning that the error value is ignored.

So emit a better warning and return zero to suppress the generic (and
little helpful) message. Also disable runtime PM in the error case.

This prepares changing platform device remove callbacks to return void.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-omap.c

index f9ae520aed22863ba19e98c99a640115bec91f90..2b4e2be51318f8695dcb89a0b30d9fb78d50c194 100644 (file)
@@ -1525,14 +1525,17 @@ static int omap_i2c_remove(struct platform_device *pdev)
        int ret;
 
        i2c_del_adapter(&omap->adapter);
-       ret = pm_runtime_resume_and_get(&pdev->dev);
+
+       ret = pm_runtime_get_sync(&pdev->dev);
        if (ret < 0)
-               return ret;
+               dev_err(omap->dev, "Failed to resume hardware, skip disable\n");
+       else
+               omap_i2c_write_reg(omap, OMAP_I2C_CON_REG, 0);
 
-       omap_i2c_write_reg(omap, OMAP_I2C_CON_REG, 0);
        pm_runtime_dont_use_autosuspend(&pdev->dev);
        pm_runtime_put_sync(&pdev->dev);
        pm_runtime_disable(&pdev->dev);
+
        return 0;
 }