From 26fc6ff81dfc8be4e011fe1633d41c8a2e4bbe69 Mon Sep 17 00:00:00 2001 From: Lei Yang Date: Thu, 17 Jan 2019 19:59:32 +0800 Subject: [PATCH] hdmirx: Chromecast box force to OESS mode [1/1] PD#SWPL-4325 Problem: it took long time to show image when connect with Google Chromecast box Solution: 1. add specific dev detection by cec osd name & vendor ID 2. chromecast box force OESS Verify: verify by marconi Change-Id: I56d247da1d1b1e28b60bb439f5173cb6fbecfdf9 Signed-off-by: Lei Yang hdmirx: Chromecast box force to OESS mode [1/1] (Partial) PD#SWPL-4325 Problem: it took long time to show image when connect with Google Chromecast box Solution: 1. add specific dev detection by cec osd name & vendor ID 2. chromecast box force OESS Verify: verify by marconi Change-Id: I56d247da1d1b1e28b60bb439f5173cb6fbecfdf9 Signed-off-by: Lei Yang --- drivers/amlogic/cec/hdmi_ao_cec.h | 3 ++- drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_drv.h | 4 ++-- drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.c | 5 ++--- drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.h | 1 + .../amlogic/media/vin/tvin/hdmirx/hdmi_rx_wrapper.c | 11 +++++++++++ 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/drivers/amlogic/cec/hdmi_ao_cec.h b/drivers/amlogic/cec/hdmi_ao_cec.h index 43989ed6d678..123b404e9319 100644 --- a/drivers/amlogic/cec/hdmi_ao_cec.h +++ b/drivers/amlogic/cec/hdmi_ao_cec.h @@ -534,7 +534,8 @@ extern uint32_t hdmirx_rd_dwc(uint16_t addr); extern void hdmirx_wr_dwc(uint16_t addr, uint32_t data); extern unsigned int rd_reg_hhi(unsigned int offset); extern void wr_reg_hhi(unsigned int offset, unsigned int val); - +extern int cec_set_dev_info(uint8_t dev_idx); +int __attribute__((weak))cec_set_dev_info(uint8_t dev_idx); #else static inline unsigned long hdmirx_rd_top(unsigned long addr) { 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 168eb526a8f0..aa5fdfe5276f 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.2019/01/08" +#define RX_VER1 "ver.2019/01/28" /* * * @@ -476,7 +476,7 @@ extern struct reg_map reg_maps[MAP_ADDR_MODULE_NUM]; extern bool downstream_repeat_support; extern void rx_tasklet_handler(unsigned long arg); extern void skip_frame(unsigned int cnt); - +extern int cec_set_dev_info(uint8_t dev_idx); /* reg */ 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 505514238346..11b98f2416de 100644 --- a/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.c +++ b/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.c @@ -64,9 +64,8 @@ static DEFINE_SPINLOCK(reg_rw_lock); static bool phy_fast_switching; static bool phy_fsm_enhancement = true; /*unsigned int last_clk_rate;*/ - static uint32_t modet_clk = 24000; - +int hdcp_enc_mode; /* top_irq_en bit[16:13] hdcp_sts */ int top_intr_maskn_value = 1; bool hdcp_enable = 1; @@ -1425,7 +1424,7 @@ static int DWC_init(void) /* 1: force OESS */ /* 2: force EESS */ /* 3: auto mode,check CTL[3:0]=d9/d8 during WOO */ - data32 |= (0 << 2); + data32 |= (hdcp_enc_mode << 2); data32 |= (0 << 0); hdmirx_wr_dwc(DWC_HDMI_MODE_RECOVER, data32); 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 0761b45ccdd5..e7b7b68d0440 100644 --- a/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.h +++ b/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_hw.h @@ -1091,6 +1091,7 @@ extern unsigned int hdmirx_addr_port; extern unsigned int hdmirx_data_port; extern unsigned int hdmirx_ctrl_port; extern int acr_mode; +extern int hdcp_enc_mode; extern int force_clk_rate; extern int auto_aclk_mute; extern int aud_avmute_en; diff --git a/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_wrapper.c b/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_wrapper.c index 5b1d90f47fe0..b2368a91ebcf 100644 --- a/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_wrapper.c +++ b/drivers/amlogic/media/vin/tvin/hdmirx/hdmi_rx_wrapper.c @@ -236,6 +236,17 @@ void rx_hpd_to_esm_handle(struct work_struct *work) rx_pr("esm_hpd-1\n"); } +int cec_set_dev_info(uint8_t dev_idx) +{ + cec_dev_info |= 1 << dev_idx; + + if (dev_idx == 1) + hdcp_enc_mode = 1; + + return 0; +} +EXPORT_SYMBOL(cec_set_dev_info); + /* *func: irq tasklet *param: flag: