hdmirx: add option for scdc enable [1/1]

PD#SWPL-13667

Problem:
some devices may forcely send signal above 3.4G
even if TV announce hdmi1.4 edid, such as apple
TV box, Samsung UBD-K8500 dvd; and for QD6508 box
of TCL, it will not send signal out if scdc NAK

Solution:
add a scdc force enable option to cover this
issue. by default, scdc is enabled or not
accroding to current edid version

Verify:
X301

Change-Id: Ibdacbd3bb1edbdcb99637252530d19510fbcfb1d
Signed-off-by: Hang Cheng <hang.cheng@amlogic.com>
This commit is contained in:
Hang Cheng
2019-09-05 15:57:11 +08:00
committed by Tao Zeng
parent 69cb9e0bb0
commit 407f7e4170
9 changed files with 26 additions and 2 deletions

View File

@@ -911,6 +911,8 @@
hpd_low_cec_off = <1>;
/* bit4: enable feature, bit3~0: port number */
disable_port = <0x0>;
/* 1: enable, 0: disable */
scdc_force_en = <0>;
/* MAP_ADDR_MODULE_CBUS */
/* MAP_ADDR_MODULE_HIU */
/* MAP_ADDR_MODULE_HDMIRX_CAPB3 */

View File

@@ -905,6 +905,8 @@
hpd_low_cec_off = <1>;
/* bit4: enable feature, bit3~0: port number */
disable_port = <0x0>;
/* 1: enable, 0: disable */
scdc_force_en = <0>;
/* MAP_ADDR_MODULE_CBUS */
/* MAP_ADDR_MODULE_HIU */
/* MAP_ADDR_MODULE_HDMIRX_CAPB3 */

View File

@@ -908,6 +908,8 @@
hpd_low_cec_off = <1>;
/* bit4: enable feature, bit3~0: port number */
disable_port = <0x0>;
/* 1: enable, 0: disable */
scdc_force_en = <0>;
/* MAP_ADDR_MODULE_CBUS */
/* MAP_ADDR_MODULE_HIU */
/* MAP_ADDR_MODULE_HDMIRX_CAPB3 */

View File

@@ -901,6 +901,8 @@
hpd_low_cec_off = <1>;
/* bit4: enable feature, bit3~0: port number */
disable_port = <0x0>;
/* 1: enable, 0: disable */
scdc_force_en = <0>;
/* MAP_ADDR_MODULE_CBUS */
/* MAP_ADDR_MODULE_HIU */
/* MAP_ADDR_MODULE_HDMIRX_CAPB3 */

View File

@@ -2439,6 +2439,15 @@ static int hdmirx_probe(struct platform_device *pdev)
rx.arc_port = 0x1;
rx_pr("not find arc_port, portB by default\n");
}
ret = of_property_read_u32(pdev->dev.of_node,
"scdc_force_en",
&scdc_force_en);
if (ret) {
/* enable scdc accroding to edid version */
scdc_force_en = 0;
rx_pr("not find scdc_force_en, disable by default\n");
}
ret = of_reserved_mem_device_init(&(pdev->dev));
if (ret != 0)
rx_pr("warning: no rev cmd mem\n");

View File

@@ -47,7 +47,7 @@
*
*
*/
#define RX_VER2 "ver.2019/08/22"
#define RX_VER2 "ver.2019/09/05"
/*print type*/
#define LOG_EN 0x01

View File

@@ -101,6 +101,8 @@ int pll_rst_max = 5;
/* cdr lock threshold */
int cdr_lock_level;
int clock_lock_th = 2;
int scdc_force_en;
/*------------------------variable define end------------------------------*/
static int check_regmap_flag(unsigned int addr)
@@ -1942,7 +1944,8 @@ void clk_init(void)
void hdmirx_20_init(void)
{
unsigned long data32;
unsigned long scdc_en = rx.edid_ver;
unsigned long scdc_en =
scdc_force_en ? 1 : rx.edid_ver;
data32 = 0;
data32 |= 1 << 12; /* [12] vid_data_checken */

View File

@@ -1117,6 +1117,7 @@ extern int cdr_lock_level;
extern int top_intr_maskn_value;
extern int hbr_force_8ch;
extern int clock_lock_th;
extern int scdc_force_en;
extern void rx_get_best_eq_setting(void);
extern void wr_reg_hhi(unsigned int offset, unsigned int val);
extern void wr_reg_hhi_bits(unsigned int offset, unsigned int mask,

View File

@@ -1732,6 +1732,8 @@ int rx_set_global_variable(const char *buf, int size)
return pr_var(en_take_dtd_space, index);
if (set_pr_var(tmpbuf, earc_cap_ds_update_hpd_en, value, &index, ret))
return pr_var(earc_cap_ds_update_hpd_en, index);
if (set_pr_var(tmpbuf, scdc_force_en, value, &index, ret))
return pr_var(scdc_force_en, index);
return 0;
}
@@ -1844,6 +1846,7 @@ void rx_get_global_variable(const char *buf)
pr_var(clock_lock_th, i++);
pr_var(en_take_dtd_space, i++);
pr_var(earc_cap_ds_update_hpd_en, i++);
pr_var(scdc_force_en, i++);
}
void skip_frame(unsigned int cnt)