summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAjay Singh Parmar <aparmar@codeaurora.org>2013-10-24 12:33:59 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:22:51 -0700
commit05c60b98b32f2d4961411f63c222ff0b147aae90 (patch)
tree582b6c303c1729e7d02f73560e351300f7ab3805
parentebba5a27ae46dea1384ec1dee2afc69379516219 (diff)
msm: mdss: hdmi: Proper DDC power off sequence
Shutdown the power for DDC (Display Data Channel) module only after HDCP (High-bandwidth Digital content Protection) module has been turned off as HDCP continue to use DDC line until it is turned off. Also, no need to check for DDC hardware status on HDCP off as once the cable is disconnected it will not be updated. Change-Id: Ic5b8c2d6c4a43bf7d0ed0d420690b7e84bbe3b6c Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_hdmi_hdcp.c3
-rw-r--r--drivers/video/fbdev/msm/mdss_hdmi_tx.c11
2 files changed, 9 insertions, 5 deletions
diff --git a/drivers/video/fbdev/msm/mdss_hdmi_hdcp.c b/drivers/video/fbdev/msm/mdss_hdmi_hdcp.c
index bf28e8cf7a45..80b27ed63b21 100644
--- a/drivers/video/fbdev/msm/mdss_hdmi_hdcp.c
+++ b/drivers/video/fbdev/msm/mdss_hdmi_hdcp.c
@@ -1185,9 +1185,6 @@ void hdmi_hdcp_off(void *input)
DSS_REG_W(io, HDMI_HDCP_RESET, BIT(0));
- /* Wait to be clean on DDC HW engine */
- hdmi_hdcp_hw_ddc_clean(hdcp_ctrl);
-
/* Disable encryption and disable the HDCP block */
DSS_REG_W(io, HDMI_HDCP_CTRL, 0);
diff --git a/drivers/video/fbdev/msm/mdss_hdmi_tx.c b/drivers/video/fbdev/msm/mdss_hdmi_tx.c
index d4b75d0d0f2d..fc29ef2ca2af 100644
--- a/drivers/video/fbdev/msm/mdss_hdmi_tx.c
+++ b/drivers/video/fbdev/msm/mdss_hdmi_tx.c
@@ -1074,8 +1074,12 @@ static void hdmi_tx_hpd_int_work(struct work_struct *work)
hdmi_tx_set_audio_switch_node(hdmi_ctrl, 0, false);
hdmi_tx_wait_for_audio_engine(hdmi_ctrl);
- if (hdmi_tx_enable_power(hdmi_ctrl, HDMI_TX_DDC_PM, false))
- DEV_WARN("%s: Failed to disable ddc power\n", __func__);
+ if (!hdmi_ctrl->panel_power_on) {
+ if (hdmi_tx_enable_power(hdmi_ctrl, HDMI_TX_DDC_PM,
+ false))
+ DEV_WARN("%s: Failed to disable ddc power\n",
+ __func__);
+ }
hdmi_tx_send_cable_notification(hdmi_ctrl, 0);
DEV_INFO("%s: sense cable DISCONNECTED: state switch to %d\n",
@@ -2467,6 +2471,9 @@ static void hdmi_tx_power_off_work(struct work_struct *work)
hdmi_hdcp_off(hdmi_ctrl->feature_data[HDMI_TX_FEAT_HDCP]);
}
+ if (hdmi_tx_enable_power(hdmi_ctrl, HDMI_TX_DDC_PM, false))
+ DEV_WARN("%s: Failed to disable ddc power\n", __func__);
+
if (!hdmi_tx_is_dvi_mode(hdmi_ctrl))
hdmi_tx_audio_off(hdmi_ctrl);