fbdev: da8xx-fb: Fix error handling in .remove()
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Mon, 17 Oct 2022 19:52:50 +0000 (21:52 +0200)
committerHelge Deller <deller@gmx.de>
Tue, 18 Oct 2022 08:22:28 +0000 (10:22 +0200)
Even in the presence of problems (here: regulator_disable() might fail),
it's important to unregister all resources acquired during .probe() and
disable the device (i.e. DMA activity) because even if .remove() returns
an error code, the device is removed and the .remove() callback is never
called again later to catch up.

This is a preparation for making platform remove callbacks return void.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Helge Deller <deller@gmx.de>
Fixes: 611097d5daea ("fbdev: da8xx: add support for a regulator")
drivers/video/fbdev/da8xx-fb.c

index ae76a2111c7741e646d45a0258eb052e88c17318..11922b009ed7cefc34bdcf9f5d9824276c093e59 100644 (file)
@@ -1076,7 +1076,8 @@ static int fb_remove(struct platform_device *dev)
        if (par->lcd_supply) {
                ret = regulator_disable(par->lcd_supply);
                if (ret)
-                       return ret;
+                       dev_warn(&dev->dev, "Failed to disable regulator (%pe)\n",
+                                ERR_PTR(ret));
        }
 
        lcd_disable_raster(DA8XX_FRAME_WAIT);