hdmirx: add rx phy tdr enable control [1/1]

PD#SWPL-13433

Problem:
Need to add a option in dts to select tdr on or off;

Solution:
add a option in dts to select tdr on or off;

Verify:
tl1

Change-Id: Ibf5688fcf50672677369452f7dd6e702094eac5e
Signed-off-by: yicheng shen <yicheng.shen@amlogic.com>
This commit is contained in:
yicheng shen
2019-11-18 15:02:52 +08:00
committed by Luke Go
parent 4663947b42
commit 462ca5f34d
28 changed files with 81 additions and 14874 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -401,7 +401,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <0>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x10>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -627,7 +627,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <0>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x10>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -879,7 +879,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <1>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x11>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -874,7 +874,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <1>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x11>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -559,7 +559,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <0>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x10>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -814,7 +814,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <1>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x11>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -786,7 +786,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <1>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x11>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -815,7 +815,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <1>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x11>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -787,7 +787,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <1>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x11>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -995,7 +995,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <1>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x11>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -875,7 +875,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <1>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x11>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -869,7 +869,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <1>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x11>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -559,7 +559,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <0>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x10>;
interrupts = <0 41 1>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -809,7 +809,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <1>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x11>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -785,7 +785,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <1>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x11>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -786,7 +786,10 @@
pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
&hdmirx_c_mux>;
repeat = <0>;
term_lvl = <1>;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
term_lvl = <0x11>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_HDMIRX_MODET_COMP>,
<&clkc CLKID_HDMIRX_CFG_COMP>,

View File

@@ -2454,7 +2454,8 @@ static int hdmirx_probe(struct platform_device *pdev)
rx_emp_resource_allocate(&(pdev->dev));
aml_phy_get_trim_val();
hdmirx_hw_probe();
term_cal_en = (!is_ft_trim_done());
if ((rx.chip_id >= CHIP_ID_TL1) && phy_tdr_en)
term_cal_en = (!is_ft_trim_done());
hdmirx_init_params();
hdmirx_switch_pinmux(&(pdev->dev));
#ifdef CONFIG_AMLOGIC_LEGACY_EARLY_SUSPEND

View File

@@ -109,7 +109,11 @@ int scdc_force_en = 1;
bool hdcp_hpd_ctrl_en;
int eq_dbg_lvl;
u32 phy_trim_val;
/* bit 4: tdr enable bit
* bit [3:0]: tdr level control
*/
int phy_term_lel;
bool phy_tdr_en;
/*------------------------variable define end------------------------------*/
@@ -3675,13 +3679,20 @@ void aml_phy_init_1(void)
bool is_ft_trim_done(void)
{
return phy_trim_val & 0x1;
int ret = phy_trim_val & 0x1;
rx_pr("ft trim=%d\n", ret);
return ret;
}
void aml_phy_get_trim_val(void)
{
u32 data32;
if (rx.chip_id < CHIP_ID_TL1)
return;
phy_tdr_en = (phy_term_lel >> 4) & 0x1;
phy_term_lel = phy_term_lel & 0xf;
phy_trim_val = rd_reg_hhi(HHI_HDMIRX_PHY_MISC_CNTL1);
data32 = (phy_trim_val >> 12) & 0x3ff;
data32 = (~((~data32) << phy_term_lel) | (1 << phy_term_lel));
@@ -3716,14 +3727,12 @@ void aml_phy_init(void)
udelay(2);
data32 = phy_misci[idx][1];
if (idx < phy_frq_band_5) {
if ((idx < phy_frq_band_5) && phy_tdr_en) {
if (term_cal_en) {
data32 = (((data32 & (~(0x3ff << 12))) |
(term_cal_val << 12)) | (1 << 22));
rx_pr("man term mode\n");
} else {
data32 = phy_trim_val;
rx_pr("ft trim mode\n");
}
}
wr_reg_hhi(HHI_HDMIRX_PHY_MISC_CNTL1, data32);

View File

@@ -1124,6 +1124,7 @@ extern int scdc_force_en;
extern bool hdcp_hpd_ctrl_en;
extern int eq_dbg_lvl;
extern int phy_term_lel;
extern bool phy_tdr_en;
extern void rx_get_best_eq_setting(void);
extern void wr_reg_hhi(unsigned int offset, unsigned int val);

View File

@@ -2931,6 +2931,7 @@ int hdmirx_debug(const char *buf, int size)
rx_pr("Hdmirx version0: %s\n", RX_VER0);
rx_pr("Hdmirx version1: %s\n", RX_VER1);
rx_pr("Hdmirx version2: %s\n", RX_VER2);
rx_pr("Hdmirx version2: %s\n", "ver.2019/11/18");
rx_pr("------------------\n");
} else if (strncmp(input[0], "port0", 5) == 0) {
hdmirx_open_port(TVIN_PORT_HDMI0);