Some LCD panels have back-powering issue when un-powered, allows users
to use an alternate pinctrl "sleep" in order to clamp outputs to a
wanted state at suspend.

Signed-off-by: Sylvain Rochet <sylvain.rochet at finsecur.com>
Acked-by: Boris Brezillon <boris.brezillon at free-electrons.com>
---
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c 
b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
index 79c9a19..decd9ea 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
@@ -21,6 +21,7 @@
 #include <linux/clk.h>
 #include <linux/pm.h>
 #include <linux/pm_runtime.h>
+#include <linux/pinctrl/consumer.h>

 #include <drm/drm_crtc.h>
 #include <drm/drm_crtc_helper.h>
@@ -156,6 +157,7 @@ static void atmel_hlcdc_crtc_disable(struct drm_crtc *c)
                cpu_relax();

        clk_disable_unprepare(crtc->dc->hlcdc->sys_clk);
+       pinctrl_pm_select_sleep_state(dev->dev);

        pm_runtime_allow(dev->dev);

@@ -178,6 +180,7 @@ static void atmel_hlcdc_crtc_enable(struct drm_crtc *c)

        pm_runtime_forbid(dev->dev);

+       pinctrl_pm_select_default_state(dev->dev);
        clk_prepare_enable(crtc->dc->hlcdc->sys_clk);

        regmap_write(regmap, ATMEL_HLCDC_EN, ATMEL_HLCDC_PIXEL_CLK);
-- 
2.1.4

Reply via email to