]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/tidss: Use PM autosuspend
authorTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Thu, 9 Nov 2023 07:37:55 +0000 (09:37 +0200)
committerTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Fri, 1 Dec 2023 10:04:42 +0000 (12:04 +0200)
Use runtime PM autosuspend feature, with 1s timeout, to avoid
unnecessary suspend-resume cycles when, e.g. the userspace temporarily
turns off the crtcs when configuring the outputs.

Reviewed-by: Aradhya Bhatia <a-bhatia1@ti.com>
Link: https://lore.kernel.org/r/20231109-tidss-probe-v2-2-ac91b5ea35c0@ideasonboard.com
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
drivers/gpu/drm/tidss/tidss_drv.c

index bb12978208568d5e3d0566dd0fb8ee0066710cd0..09e30de2dd484930deb51e6d843943b7eac94d63 100644 (file)
@@ -43,7 +43,9 @@ void tidss_runtime_put(struct tidss_device *tidss)
 
        dev_dbg(tidss->dev, "%s\n", __func__);
 
-       r = pm_runtime_put_sync(tidss->dev);
+       pm_runtime_mark_last_busy(tidss->dev);
+
+       r = pm_runtime_put_autosuspend(tidss->dev);
        WARN_ON(r < 0);
 }
 
@@ -144,6 +146,9 @@ static int tidss_probe(struct platform_device *pdev)
 
        pm_runtime_enable(dev);
 
+       pm_runtime_set_autosuspend_delay(dev, 1000);
+       pm_runtime_use_autosuspend(dev);
+
 #ifndef CONFIG_PM
        /* If we don't have PM, we need to call resume manually */
        dispc_runtime_resume(tidss->dispc);
@@ -192,6 +197,7 @@ err_runtime_suspend:
 #ifndef CONFIG_PM
        dispc_runtime_suspend(tidss->dispc);
 #endif
+       pm_runtime_dont_use_autosuspend(dev);
        pm_runtime_disable(dev);
 
        return ret;
@@ -215,6 +221,7 @@ static void tidss_remove(struct platform_device *pdev)
        /* If we don't have PM, we need to call suspend manually */
        dispc_runtime_suspend(tidss->dispc);
 #endif
+       pm_runtime_dont_use_autosuspend(dev);
        pm_runtime_disable(dev);
 
        /* devm allocated dispc goes away with the dev so mark it NULL */