diff options
| author | Tatenda Chipeperekwa <tatendac@codeaurora.org> | 2015-11-06 14:53:45 -0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:48:06 -0700 |
| commit | 224a53ac447a1ff595ba20ce5532e512154e2d2b (patch) | |
| tree | f6d3536099f9d1996020b6bf1725fa49581871f8 | |
| parent | a1aedeeb038a8d09c5a2a50b83454fad79f17b29 (diff) | |
msm: mdss: hdmi: fix handling of panel suspend event
Unset the HPD state on receiving a suspend event, and ignore
any HPD interrupts that are signalled while panel is in a
suspended state.
Change-Id: I21955079522e0688cd4cee17dae32f5e6d8496ab
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_hdmi_tx.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/video/fbdev/msm/mdss_hdmi_tx.c b/drivers/video/fbdev/msm/mdss_hdmi_tx.c index 36dcaec5ba2d..7d8925fc6267 100644 --- a/drivers/video/fbdev/msm/mdss_hdmi_tx.c +++ b/drivers/video/fbdev/msm/mdss_hdmi_tx.c @@ -3840,7 +3840,9 @@ static irqreturn_t hdmi_tx_isr(int irq, void *data) * waits for hpd interrupt to finish. Suspend thread will * eventually reset the HPD module. */ - if (!hdmi_ctrl->panel_suspend) + if (hdmi_ctrl->panel_suspend) + hdmi_ctrl->hpd_state = 0; + else queue_work(hdmi_ctrl->workq, &hdmi_ctrl->hpd_int_work); } @@ -4139,13 +4141,14 @@ static int hdmi_tx_panel_event_handler(struct mdss_panel_data *panel_data, case MDSS_EVENT_SUSPEND: mutex_lock(&hdmi_ctrl->power_mutex); if (!hdmi_ctrl->panel_power_on && - !hdmi_ctrl->hpd_off_pending) { + !hdmi_ctrl->hpd_off_pending && !hdmi_ctrl->hpd_state) { mutex_unlock(&hdmi_ctrl->power_mutex); if (hdmi_ctrl->hpd_feature_on) hdmi_tx_hpd_off(hdmi_ctrl); hdmi_ctrl->panel_suspend = false; } else { + hdmi_ctrl->hpd_state = 0; mutex_unlock(&hdmi_ctrl->power_mutex); hdmi_ctrl->hpd_off_pending = true; hdmi_ctrl->panel_suspend = true; |
