[media] si2165: set list of DVB-T registers together

Use si2165_write_reg_list() to do the DVB-T mode initialization altogether.

Signed-off-by: Matthias Schwarzott <zzam@gentoo.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
Matthias Schwarzott 2015-11-19 18:04:00 -02:00 committed by Mauro Carvalho Chehab
parent 542fb3c56b
commit 25e7375309
1 changed files with 26 additions and 47 deletions

View File

@ -803,6 +803,29 @@ static const struct si2165_reg_value_pair agc_rewrite[] = {
{ 0x0123, 0x70 }
};
static const struct si2165_reg_value_pair dvbt_regs[] = {
/* standard = DVB-T */
{ 0x00ec, 0x01 },
{ 0x08f8, 0x00 },
/* impulsive_noise_remover */
{ 0x031c, 0x01 },
{ 0x00cb, 0x00 },
/* agc2 */
{ 0x016e, 0x41 },
{ 0x016c, 0x0e },
{ 0x016d, 0x10 },
/* agc */
{ 0x015b, 0x03 },
{ 0x0150, 0x78 },
/* agc */
{ 0x01a0, 0x78 },
{ 0x01c8, 0x68 },
/* freq_sync_range */
REG16(0x030c, 0x0064),
/* gp_reg0 */
{ 0x0387, 0x00 }
};
static int si2165_set_frontend(struct dvb_frontend *fe)
{
int ret;
@ -825,18 +848,11 @@ static int si2165_set_frontend(struct dvb_frontend *fe)
bw10k = 800;
}
/* standard = DVB-T */
ret = si2165_writereg8(state, 0x00ec, 0x01);
if (ret < 0)
return ret;
ret = si2165_adjust_pll_divl(state, 12);
if (ret < 0)
return ret;
ret = si2165_set_if_freq_shift(state);
if (ret < 0)
return ret;
ret = si2165_writereg8(state, 0x08f8, 0x00);
if (ret < 0)
return ret;
/* bandwidth in 10KHz steps */
@ -846,48 +862,11 @@ static int si2165_set_frontend(struct dvb_frontend *fe)
ret = si2165_set_oversamp(state, dvb_rate);
if (ret < 0)
return ret;
/* impulsive_noise_remover */
ret = si2165_writereg8(state, 0x031c, 0x01);
if (ret < 0)
return ret;
ret = si2165_writereg8(state, 0x00cb, 0x00);
if (ret < 0)
return ret;
/* agc2 */
ret = si2165_writereg8(state, 0x016e, 0x41);
if (ret < 0)
return ret;
ret = si2165_writereg8(state, 0x016c, 0x0e);
if (ret < 0)
return ret;
ret = si2165_writereg8(state, 0x016d, 0x10);
if (ret < 0)
return ret;
/* agc */
ret = si2165_writereg8(state, 0x015b, 0x03);
if (ret < 0)
return ret;
ret = si2165_writereg8(state, 0x0150, 0x78);
if (ret < 0)
return ret;
/* agc */
ret = si2165_writereg8(state, 0x01a0, 0x78);
if (ret < 0)
return ret;
ret = si2165_writereg8(state, 0x01c8, 0x68);
if (ret < 0)
return ret;
/* freq_sync_range */
ret = si2165_writereg16(state, 0x030c, 0x0064);
if (ret < 0)
return ret;
/* gp_reg0 */
ret = si2165_readreg8(state, 0x0387, val);
if (ret < 0)
return ret;
ret = si2165_writereg8(state, 0x0387, 0x00);
ret = si2165_write_reg_list(state, dvbt_regs, ARRAY_SIZE(dvbt_regs));
if (ret < 0)
return ret;
/* dsp_addr_jump */
ret = si2165_writereg32(state, 0x0348, 0xf4000000);
if (ret < 0)