MLK-17140-1: drm: imx: dcss: add PM QoS
authorLaurentiu Palcu <laurentiu.palcu@nxp.com>
Thu, 7 Dec 2017 10:57:19 +0000 (12:57 +0200)
committerNitin Garg <nitin.garg@nxp.com>
Tue, 20 Mar 2018 19:51:01 +0000 (14:51 -0500)
PM QoS is needed so that cpuidle doesn not influence DCSS performance.

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

index 99a7057..28b43a9 100644 (file)
@@ -19,6 +19,7 @@
 #include <linux/clk.h>
 #include <linux/pm_runtime.h>
 #include <linux/busfreq-imx.h>
+#include <linux/pm_qos.h>
 #include <video/imx-dcss.h>
 
 #include <drm/drm_fourcc.h>
@@ -473,6 +474,8 @@ static int dcss_suspend(struct device *dev)
 
        dcss_clocks_enable(dcss, false);
 
+       pm_qos_remove_request(&dcss->pm_qos_req);
+
        dcss_bus_freq(dcss, false);
 
        return 0;
@@ -485,6 +488,8 @@ static int dcss_resume(struct device *dev)
 
        dcss_bus_freq(dcss, true);
 
+       pm_qos_add_request(&dcss->pm_qos_req, PM_QOS_CPU_DMA_LATENCY, 0);
+
        dcss_clocks_enable(dcss, true);
 
        dcss_blkctl_cfg(dcss);
@@ -509,6 +514,8 @@ static int dcss_runtime_suspend(struct device *dev)
 
        dcss_clocks_enable(dcss, false);
 
+       pm_qos_remove_request(&dcss->pm_qos_req);
+
        dcss_bus_freq(dcss, false);
 
        return 0;
@@ -521,6 +528,8 @@ static int dcss_runtime_resume(struct device *dev)
 
        dcss_bus_freq(dcss, true);
 
+       pm_qos_add_request(&dcss->pm_qos_req, PM_QOS_CPU_DMA_LATENCY, 0);
+
        dcss_clocks_enable(dcss, true);
 
        dcss_blkctl_cfg(dcss);
index 3df06c5..d2b739d 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef __DCSS_PRV_H__
 #define __DCSS_PRV_H__
 
+#include <linux/pm_qos.h>
+
 #define SET 0x04
 #define CLR 0x08
 #define TGL 0x0C
@@ -54,6 +56,8 @@ struct dcss_soc {
 
        bool bus_freq_req;
        bool clks_on;
+
+       struct pm_qos_request pm_qos_req;
 };
 
 /* BLKCTL */