MLK-16922-2: drm: imx: dcss: call DCSS runtime PM routines
authorLaurentiu Palcu <laurentiu.palcu@nxp.com>
Tue, 21 Nov 2017 07:32:25 +0000 (09:32 +0200)
committerLeonard Crestez <leonard.crestez@nxp.com>
Wed, 17 Apr 2019 23:51:34 +0000 (02:51 +0300)
When CRTC is disabled/enabled, the runtime PM routines should be called.

Signed-off-by: Laurentiu Palcu <laurentiu.palcu@nxp.com>
drivers/gpu/drm/imx/dcss/dcss-crtc.c

index af79cf8..a305bf2 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/device.h>
 #include <linux/platform_device.h>
 #include <linux/component.h>
+#include <linux/pm_runtime.h>
 #include <drm/drmP.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_atomic_helper.h>
@@ -169,9 +170,13 @@ static void dcss_crtc_atomic_enable(struct drm_crtc *crtc,
                                                   base);
        struct dcss_soc *dcss = dev_get_drvdata(dcss_crtc->dev->parent);
 
+       pm_runtime_get_sync(dcss_crtc->dev->parent);
+
        dcss_ss_enable(dcss, true);
        dcss_dtg_enable(dcss, true);
        dcss_ctxld_enable(dcss);
+
+       crtc->enabled = true;
 }
 
 static void dcss_crtc_atomic_disable(struct drm_crtc *crtc,
@@ -195,6 +200,11 @@ static void dcss_crtc_atomic_disable(struct drm_crtc *crtc,
        dcss_ss_enable(dcss, false);
        dcss_dtg_enable(dcss, false);
        dcss_ctxld_enable(dcss);
+
+       crtc->enabled = false;
+
+       pm_runtime_mark_last_busy(dcss_crtc->dev->parent);
+       pm_runtime_put_autosuspend(dcss_crtc->dev->parent);
 }
 
 static const struct drm_crtc_helper_funcs dcss_helper_funcs = {