diff options
| author | Ajay Singh Parmar <aparmar@codeaurora.org> | 2013-10-24 12:33:59 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:22:51 -0700 |
| commit | 05c60b98b32f2d4961411f63c222ff0b147aae90 (patch) | |
| tree | 582b6c303c1729e7d02f73560e351300f7ab3805 | |
| parent | ebba5a27ae46dea1384ec1dee2afc69379516219 (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.c | 3 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_hdmi_tx.c | 11 |
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); |
