mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
atv_demod: switch channel with the script, the ATV shows no signal [1/1]
PD#SWPL-791 Problem: Switch channel with the script lasts 14 hours, the ATV shows no signal. Solution: To avoid conflict, don't need to check the CLK and PLL states in atv demod write and read function. Verify: verified by p321 Change-Id: I033c54f14541ed540dfce1b9c4e21d2b5a8b9487 Signed-off-by: nengwen.chen <nengwen.chen@amlogic.com>
This commit is contained in:
committed by
Jianxin Pan
parent
7937762427
commit
7ef827f5a8
@@ -29,6 +29,7 @@
|
||||
|
||||
int amlatvdemod_reg_read(unsigned int reg, unsigned int *val)
|
||||
{
|
||||
#if 0 /* Don't need to check the CLK and PLL states, it's done in init */
|
||||
int ret = 0;
|
||||
|
||||
if (is_meson_txlx_cpu() || is_meson_txhd_cpu()) {
|
||||
@@ -41,13 +42,16 @@ int amlatvdemod_reg_read(unsigned int reg, unsigned int *val)
|
||||
/* pr_dbg("%s atv demod pll not init\n", __func__); */
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
*val = readl(amlatvdemod_devp->demod_reg_base + reg);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int amlatvdemod_reg_write(unsigned int reg, unsigned int val)
|
||||
{
|
||||
#if 0 /* Don't need to check the CLK and PLL states, it's done in init */
|
||||
int ret = 0;
|
||||
|
||||
if (is_meson_txlx_cpu() || is_meson_txhd_cpu()) {
|
||||
@@ -60,8 +64,10 @@ int amlatvdemod_reg_write(unsigned int reg, unsigned int val)
|
||||
/* pr_dbg("%s atv demod pll not init\n", __func__); */
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
writel(val, (amlatvdemod_devp->demod_reg_base + reg));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ int atv_demod_enter_mode(struct dvb_frontend *fe)
|
||||
}
|
||||
}
|
||||
|
||||
adc_set_pll_cntl(1, ADC_EN_ATV_DEMOD, NULL);
|
||||
err_code = adc_set_pll_cntl(1, ADC_EN_ATV_DEMOD, NULL);
|
||||
vdac_enable(1, 1);
|
||||
usleep_range(2000, 2100);
|
||||
atvdemod_clk_init();
|
||||
@@ -124,9 +124,10 @@ int atv_demod_enter_mode(struct dvb_frontend *fe)
|
||||
aud_demod_clk_gate(1);
|
||||
/* atvauddemod_init(); */
|
||||
}
|
||||
|
||||
if (err_code) {
|
||||
pr_dbg("[amlatvdemod..]%s init atvdemod error.\n", __func__);
|
||||
return err_code;
|
||||
pr_dbg("%s: init atvdemod error %d.\n", __func__, err_code);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* aml_afc_timer_enable(fe); */
|
||||
@@ -339,8 +340,8 @@ static int atv_demod_set_config(struct dvb_frontend *fe, void *priv_cfg)
|
||||
if (priv->state != ATVDEMOD_STATE_WORK) {
|
||||
if (fe->ops.tuner_ops.set_config)
|
||||
fe->ops.tuner_ops.set_config(fe, NULL);
|
||||
atv_demod_enter_mode(fe);
|
||||
priv->state = ATVDEMOD_STATE_WORK;
|
||||
if (!atv_demod_enter_mode(fe))
|
||||
priv->state = ATVDEMOD_STATE_WORK;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -354,8 +355,8 @@ static int atv_demod_set_config(struct dvb_frontend *fe, void *priv_cfg)
|
||||
|
||||
case AML_ATVDEMOD_RESUME:
|
||||
if (priv->state == ATVDEMOD_STATE_SLEEP) {
|
||||
atv_demod_enter_mode(fe);
|
||||
priv->state = ATVDEMOD_STATE_WORK;
|
||||
if (!atv_demod_enter_mode(fe))
|
||||
priv->state = ATVDEMOD_STATE_WORK;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -1746,12 +1746,9 @@ int atvdemod_init(void)
|
||||
pr_err("%s do atv_dmd_soft_reset ...\n", __func__);
|
||||
/*4.software reset*/
|
||||
atv_dmd_soft_reset();
|
||||
atv_dmd_soft_reset();
|
||||
atv_dmd_soft_reset();
|
||||
atv_dmd_soft_reset();
|
||||
|
||||
/* ?????
|
||||
* while (!all_lock) {
|
||||
/* check the PLL, line lock status, don't need to check. */
|
||||
/* while (!all_lock) {
|
||||
* data32 = atv_dmd_rd_long(APB_BLOCK_ADDR_VDAGC,0x13<<2);
|
||||
* if ((data32 & 0x1c) == 0x0) {
|
||||
* all_lock = 1;
|
||||
|
||||
@@ -810,8 +810,10 @@ int tvafe_adc_get_pll_flag(void)
|
||||
{
|
||||
unsigned int ret = 0;
|
||||
|
||||
if (!mutex_trylock(&pll_mutex))
|
||||
if (!mutex_trylock(&pll_mutex)) {
|
||||
tvafe_pr_info("%s trylock pll_mutex fail.\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
ret = adc_pll_chg;
|
||||
mutex_unlock(&pll_mutex);
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user