summaryrefslogtreecommitdiff
authorZongdong Jiao <zongdong.jiao@amlogic.com>2019-02-26 07:13:13 (GMT)
committer Zongdong Jiao <zongdong.jiao@amlogic.com>2019-02-26 07:13:13 (GMT)
commit1fe1291254cd5385523f7932df04f89026d124a9 (patch)
tree393d5f35b39b6acdf0542ee3955d72b808fdc62d
parentd9262852f097da232a7d0e49a69102a228a78bde (diff)
downloadcommon-1fe1291254cd5385523f7932df04f89026d124a9.zip
common-1fe1291254cd5385523f7932df04f89026d124a9.tar.gz
common-1fe1291254cd5385523f7932df04f89026d124a9.tar.bz2
hdmitx: optimize the hdcp22 init step [1/1]
PD#OTT-1558 Problem: TV freezes its screen when Tx switches output mode Solution: Optimize the hdcp22 init step Verify: TBD Change-Id: I0f423099761dc52e2df1da1f4c494ed9f17a4b0a Signed-off-by: Zongdong Jiao <zongdong.jiao@amlogic.com>
Diffstat
-rw-r--r--drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c
index 6cf1cef..089e278 100644
--- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c
+++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c
@@ -3437,11 +3437,11 @@ static int hdmitx_cntl_ddc(struct hdmitx_dev *hdev, unsigned int cmd,
hdmitx_ddc_hw_op(DDC_MUX_DDC);
hdmitx_set_reg_bits(HDMITX_DWC_MC_CLKDIS, 1, 6, 1);
udelay(5);
- hdmitx_set_reg_bits(HDMITX_DWC_HDCP22REG_CTRL, 3, 1, 2);
hdmitx_set_reg_bits(HDMITX_TOP_SW_RESET, 1, 5, 1);
udelay(10);
hdmitx_set_reg_bits(HDMITX_TOP_SW_RESET, 0, 5, 1);
udelay(10);
+ hdmitx_set_reg_bits(HDMITX_DWC_HDCP22REG_CTRL, 3, 1, 2);
hdmitx_wr_reg(HDMITX_DWC_HDCP22REG_MASK, 0);
hdmitx_wr_reg(HDMITX_DWC_HDCP22REG_MUTE, 0);
set_pkf_duk_nonce();
@@ -3468,8 +3468,13 @@ static int hdmitx_cntl_ddc(struct hdmitx_dev *hdev, unsigned int cmd,
hdmitx_hdcp_opr(5);
/* wait for start hdcp22app */
}
- if (argv == HDCP22_OFF)
+ if (argv == HDCP22_OFF) {
hdmitx_hdcp_opr(6);
+ hdmitx_set_reg_bits(HDMITX_TOP_SW_RESET, 1, 5, 1);
+ udelay(10);
+ hdmitx_set_reg_bits(HDMITX_TOP_SW_RESET, 0, 5, 1);
+ udelay(10);
+ }
break;
case DDC_HDCP_GET_BKSV:
tmp_char = (unsigned char *) argv;