]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
bus: ti-sysc: Fix warnings for unbind for serial
authorTony Lindgren <tony@atomide.com>
Thu, 12 May 2022 05:30:21 +0000 (08:30 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 14 Jun 2022 14:59:33 +0000 (16:59 +0200)
[ Upstream commit c337125b8834f9719dfda0e40b25eaa266f1b8cf ]

We can get "failed to disable" clock_unprepare warnings on unbind at least
for the serial console device if the unbind is done before the device has
been idled.

As some devices are using deferred idle, we must check the status for
pending idle work to idle the device.

Fixes: 76f0f772e469 ("bus: ti-sysc: Improve handling for no-reset-on-init and no-idle-on-init")
Cc: Romain Naour <romain.naour@smile.fr>
Reviewed-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Link: https://lore.kernel.org/r/20220512053021.61650-1-tony@atomide.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/bus/ti-sysc.c

index b6a278183d82764a7ea1d0093feba6f55c495e63..bc274ddb9767c2255a2cf37f9b57d010d51727de 100644 (file)
@@ -1801,7 +1801,9 @@ static int sysc_remove(struct platform_device *pdev)
        struct sysc *ddata = platform_get_drvdata(pdev);
        int error;
 
-       cancel_delayed_work_sync(&ddata->idle_work);
+       /* Device can still be enabled, see deferred idle quirk in probe */
+       if (cancel_delayed_work_sync(&ddata->idle_work))
+               ti_sysc_idle(&ddata->idle_work.work);
 
        error = pm_runtime_get_sync(ddata->dev);
        if (error < 0) {