diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2017-01-30 07:05:11 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-01-30 07:05:10 -0800 |
| commit | 51026923d0d0dfe26ca28030a794964146a261c0 (patch) | |
| tree | ad1abb390961e1587eafe4092b580701133d4022 /drivers/video/fbdev | |
| parent | 675a5c8af01056fbea20135c15f26cc4e1b4f660 (diff) | |
| parent | 912edf6078113fc56caccd02dfa729e960250ce8 (diff) | |
Merge "msm: mdss: Fix handling of Doze mode"
Diffstat (limited to 'drivers/video/fbdev')
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_fb.h | 6 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_ctl.c | 9 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_layer.c | 3 |
3 files changed, 15 insertions, 3 deletions
diff --git a/drivers/video/fbdev/msm/mdss_fb.h b/drivers/video/fbdev/msm/mdss_fb.h index 656b58eb62d7..111d7cfc7c9a 100644 --- a/drivers/video/fbdev/msm/mdss_fb.h +++ b/drivers/video/fbdev/msm/mdss_fb.h @@ -428,6 +428,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 b288ca4ce519..ffbf156e9eed 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_ctl.c +++ b/drivers/video/fbdev/msm/mdss_mdp_ctl.c @@ -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 a3e08f259db8..0eb82dd8371d 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_layer.c +++ b/drivers/video/fbdev/msm/mdss_mdp_layer.c @@ -2853,7 +2853,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; |
