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)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 20:47:06 +0000 (15:47 -0500)
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 8db9b3f..e839cf0 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>
@@ -151,9 +152,13 @@ static void dcss_crtc_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,
@@ -177,6 +182,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 = {