summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/video/fbdev/msm/mdss_fb.h8
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_ctl.c11
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_layer.c5
3 files changed, 18 insertions, 6 deletions
diff --git a/drivers/video/fbdev/msm/mdss_fb.h b/drivers/video/fbdev/msm/mdss_fb.h
index 1487c4e7f6e2..51688858e6fa 100644
--- a/drivers/video/fbdev/msm/mdss_fb.h
+++ b/drivers/video/fbdev/msm/mdss_fb.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008-2016, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2008-2017, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -427,6 +427,12 @@ static inline bool mdss_fb_is_power_on_lp(struct msm_fb_data_type *mfd)
return mdss_panel_is_power_on_lp(mfd->panel_power_state);
}
+static inline bool mdss_fb_is_power_on_ulp(struct msm_fb_data_type *mfd)
+{
+ return mdss_panel_is_power_on_ulp(mfd->panel_power_state);
+}
+
+
static inline bool mdss_fb_is_hdmi_primary(struct msm_fb_data_type *mfd)
{
return (mfd && (mfd->index == 0) &&
diff --git a/drivers/video/fbdev/msm/mdss_mdp_ctl.c b/drivers/video/fbdev/msm/mdss_mdp_ctl.c
index f397aca8ad3a..bda1ab7331ee 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_ctl.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_ctl.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -4434,6 +4434,13 @@ int mdss_mdp_ctl_stop(struct mdss_mdp_ctl *ctl, int power_state)
goto end;
}
+ /*
+ * reset the play_cnt, after the cmd_stop
+ * this will ensure pipes are reconfiged
+ * after every panel power state change
+ */
+ ctl->play_cnt = 0;
+
if (mdss_panel_is_power_on(power_state)) {
pr_debug("panel is not off, leaving ctl power on\n");
goto end;
@@ -4450,8 +4457,6 @@ int mdss_mdp_ctl_stop(struct mdss_mdp_ctl *ctl, int power_state)
mdss_mdp_reset_mixercfg(ctl);
- ctl->play_cnt = 0;
-
end:
if (!ret) {
ctl->power_state = power_state;
diff --git a/drivers/video/fbdev/msm/mdss_mdp_layer.c b/drivers/video/fbdev/msm/mdss_mdp_layer.c
index 5a7f8e7e95b4..e81f1975f0ae 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_layer.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_layer.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -2726,7 +2726,8 @@ int mdss_mdp_layer_atomic_validate(struct msm_fb_data_type *mfd,
return -ENODEV;
}
- if (mdss_fb_is_power_off(mfd)) {
+ if (mdss_fb_is_power_off(mfd) ||
+ mdss_fb_is_power_on_ulp(mfd)) {
pr_err("display interface is in off state fb:%d\n",
mfd->index);
return -EPERM;