Commit 25e73753 authored by Matthias Schwarzott's avatar Matthias Schwarzott Committed by Mauro Carvalho Chehab

[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: default avatarMatthias Schwarzott <zzam@gentoo.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 542fb3c5
...@@ -803,6 +803,29 @@ static const struct si2165_reg_value_pair agc_rewrite[] = { ...@@ -803,6 +803,29 @@ static const struct si2165_reg_value_pair agc_rewrite[] = {
{ 0x0123, 0x70 } { 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) static int si2165_set_frontend(struct dvb_frontend *fe)
{ {
int ret; int ret;
...@@ -825,18 +848,11 @@ static int si2165_set_frontend(struct dvb_frontend *fe) ...@@ -825,18 +848,11 @@ static int si2165_set_frontend(struct dvb_frontend *fe)
bw10k = 800; bw10k = 800;
} }
/* standard = DVB-T */
ret = si2165_writereg8(state, 0x00ec, 0x01);
if (ret < 0)
return ret;
ret = si2165_adjust_pll_divl(state, 12); ret = si2165_adjust_pll_divl(state, 12);
if (ret < 0) if (ret < 0)
return ret; return ret;
ret = si2165_set_if_freq_shift(state); ret = si2165_set_if_freq_shift(state);
if (ret < 0)
return ret;
ret = si2165_writereg8(state, 0x08f8, 0x00);
if (ret < 0) if (ret < 0)
return ret; return ret;
/* bandwidth in 10KHz steps */ /* bandwidth in 10KHz steps */
...@@ -846,48 +862,11 @@ static int si2165_set_frontend(struct dvb_frontend *fe) ...@@ -846,48 +862,11 @@ static int si2165_set_frontend(struct dvb_frontend *fe)
ret = si2165_set_oversamp(state, dvb_rate); ret = si2165_set_oversamp(state, dvb_rate);
if (ret < 0) if (ret < 0)
return ret; return ret;
/* impulsive_noise_remover */
ret = si2165_writereg8(state, 0x031c, 0x01); ret = si2165_write_reg_list(state, dvbt_regs, ARRAY_SIZE(dvbt_regs));
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);
if (ret < 0) if (ret < 0)
return ret; return ret;
/* dsp_addr_jump */ /* dsp_addr_jump */
ret = si2165_writereg32(state, 0x0348, 0xf4000000); ret = si2165_writereg32(state, 0x0348, 0xf4000000);
if (ret < 0) if (ret < 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment