diff options
-rw-r--r-- | drivers/gpu/imx/dcss/dcss-common.c | 9 | ||||
-rw-r--r-- | drivers/gpu/imx/dcss/dcss-prv.h | 4 |
2 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/imx/dcss/dcss-common.c b/drivers/gpu/imx/dcss/dcss-common.c index b6cb93c99188..cd4afdc3f76e 100644 --- a/drivers/gpu/imx/dcss/dcss-common.c +++ b/drivers/gpu/imx/dcss/dcss-common.c @@ -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; @@ -488,6 +491,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); @@ -512,6 +517,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; @@ -524,6 +531,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); diff --git a/drivers/gpu/imx/dcss/dcss-prv.h b/drivers/gpu/imx/dcss/dcss-prv.h index 3df06c539b28..d2b739d18e7d 100644 --- a/drivers/gpu/imx/dcss/dcss-prv.h +++ b/drivers/gpu/imx/dcss/dcss-prv.h @@ -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 */ |