From c7b3287d937e8bd5c0cf83f32a2742bc3c4875bc Mon Sep 17 00:00:00 2001 From: yicheng shen Date: Tue, 8 Jan 2019 06:02:09 -0500 Subject: [PATCH] hdmirx: close hdcp2.2 when shut down. [4/4] PD#SWPL-3828 Problem: hdcp22 access ddr when power shutdown Solution: need notify hdcp22 close when power shutdown Verify: Local Change-Id: Iffead6b2dfdd97e6e7ad16e856cb09b42e3783d1 Signed-off-by: yicheng shen --- drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_drv.c | 7 +++---- drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_drv.h | 2 +- drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.c | 12 ++++++------ drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.h | 4 ++-- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_drv.c b/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_drv.c index 26a211b..d58c11c 100644 --- a/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_drv.c +++ b/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_drv.c @@ -2450,11 +2450,10 @@ static int aml_hdcp22_pm_notify(struct notifier_block *nb, rx_pr("hdcp22 kill ok!\n"); else rx_pr("hdcp22 kill timeout!\n"); - hdcp22_kill_esm = 0; - hdcp22_suspend(); + hdcp_22_off(); } else if ((event == PM_POST_SUSPEND) && hdcp22_on) { rx_pr("PM_POST_SUSPEND\n"); - hdcp22_resume(); + hdcp_22_on(); } return NOTIFY_OK; } @@ -2505,7 +2504,7 @@ static void hdmirx_shutdown(struct platform_device *pdev) /* phy powerdown */ rx_phy_power_on(0); if (hdcp22_on) - hdcp22_clk_en(0); + hdcp_22_off(); rx_pr("[hdmirx]: shutdown success\n"); } diff --git a/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_drv.h b/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_drv.h index 1515c78..9ff28c9 100644 --- a/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_drv.h +++ b/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_drv.h @@ -41,7 +41,7 @@ * * */ -#define RX_VER1 "ver.2018/12/27" +#define RX_VER1 "ver.2019/01/08" /* * * diff --git a/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.c b/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.c index 1d0aafe..491b9ae 100644 --- a/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.c +++ b/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.c @@ -1714,9 +1714,9 @@ void hdmirx_hdcp22_hpd(bool value) } /* - * hdcp22_suspend - suspend flow of hdcp2.2 + * hdcp_22_off */ -void hdcp22_suspend(void) +void hdcp_22_off(void) { hdcp22_clk_en(0); /* note: can't pull down hpd before enter suspend */ @@ -1726,16 +1726,16 @@ void hdcp22_suspend(void) hdmirx_wr_dwc(DWC_HDCP22_CONTROL, 0x0); if (hdcp22_kill_esm == 0) - /* rx_pr("kill = 1\n"); */ hdmirx_hdcp22_esm_rst(); - /* msleep(20); */ + else + hdcp22_kill_esm = 0; rx_pr("hdcp22 off\n"); } /* - * hdcp22_resume - resume flow of hdcp2.2 + * hdcp_22_on */ -void hdcp22_resume(void) +void hdcp_22_on(void) { hdcp22_kill_esm = 0; /* switch_set_state(&rx.hpd_sdev, 0x0); */ diff --git a/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.h b/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.h index d406fa1..49cd59b 100644 --- a/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.h +++ b/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.h @@ -1170,8 +1170,8 @@ extern void hdcp22_clk_en(bool en); extern void hdmirx_hdcp22_esm_rst(void); extern unsigned int rx_sec_set_duk(bool repeater); extern void hdmirx_hdcp22_init(void); -extern void hdcp22_suspend(void); -extern void hdcp22_resume(void); +extern void hdcp_22_off(void); +extern void hdcp_22_on(void); extern void hdmirx_hdcp22_hpd(bool value); extern void esm_set_reset(bool reset); extern void esm_set_stable(bool stable); -- 2.7.4