[media] si2165: Prepare si2165_set_frontend() for future DVB-C support
The current si2165_set_frontend() function actually works only for DVB-T. Split it into two functions, preparing the code to support DVB-C. Signed-off-by: Matthias Schwarzott <zzam@gentoo.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
Родитель
25e7375309
Коммит
3b0c9807b7
|
@ -760,7 +760,7 @@ static int si2165_set_oversamp(struct si2165_state *state, u32 dvb_rate)
|
||||||
do_div(oversamp, dvb_rate);
|
do_div(oversamp, dvb_rate);
|
||||||
reg_value = oversamp & 0x3fffffff;
|
reg_value = oversamp & 0x3fffffff;
|
||||||
|
|
||||||
/* oversamp, usbdump contained 0x03100000; */
|
dprintk("%s: Write oversamp=%#x\n", __func__, reg_value);
|
||||||
return si2165_writereg32(state, 0x00e4, reg_value);
|
return si2165_writereg32(state, 0x00e4, reg_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -795,14 +795,6 @@ static int si2165_set_if_freq_shift(struct si2165_state *state)
|
||||||
return si2165_writereg32(state, 0x00e8, reg_value);
|
return si2165_writereg32(state, 0x00e8, reg_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct si2165_reg_value_pair agc_rewrite[] = {
|
|
||||||
{ 0x012a, 0x46 },
|
|
||||||
{ 0x012c, 0x00 },
|
|
||||||
{ 0x012e, 0x0a },
|
|
||||||
{ 0x012f, 0xff },
|
|
||||||
{ 0x0123, 0x70 }
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct si2165_reg_value_pair dvbt_regs[] = {
|
static const struct si2165_reg_value_pair dvbt_regs[] = {
|
||||||
/* standard = DVB-T */
|
/* standard = DVB-T */
|
||||||
{ 0x00ec, 0x01 },
|
{ 0x00ec, 0x01 },
|
||||||
|
@ -826,12 +818,11 @@ static const struct si2165_reg_value_pair dvbt_regs[] = {
|
||||||
{ 0x0387, 0x00 }
|
{ 0x0387, 0x00 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static int si2165_set_frontend(struct dvb_frontend *fe)
|
static int si2165_set_frontend_dvbt(struct dvb_frontend *fe)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct dtv_frontend_properties *p = &fe->dtv_property_cache;
|
struct dtv_frontend_properties *p = &fe->dtv_property_cache;
|
||||||
struct si2165_state *state = fe->demodulator_priv;
|
struct si2165_state *state = fe->demodulator_priv;
|
||||||
u8 val[3];
|
|
||||||
u32 dvb_rate = 0;
|
u32 dvb_rate = 0;
|
||||||
u16 bw10k;
|
u16 bw10k;
|
||||||
|
|
||||||
|
@ -852,9 +843,6 @@ static int si2165_set_frontend(struct dvb_frontend *fe)
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = si2165_set_if_freq_shift(state);
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
/* bandwidth in 10KHz steps */
|
/* bandwidth in 10KHz steps */
|
||||||
ret = si2165_writereg16(state, 0x0308, bw10k);
|
ret = si2165_writereg16(state, 0x0308, bw10k);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
@ -867,6 +855,40 @@ static int si2165_set_frontend(struct dvb_frontend *fe)
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct si2165_reg_value_pair agc_rewrite[] = {
|
||||||
|
{ 0x012a, 0x46 },
|
||||||
|
{ 0x012c, 0x00 },
|
||||||
|
{ 0x012e, 0x0a },
|
||||||
|
{ 0x012f, 0xff },
|
||||||
|
{ 0x0123, 0x70 }
|
||||||
|
};
|
||||||
|
|
||||||
|
static int si2165_set_frontend(struct dvb_frontend *fe)
|
||||||
|
{
|
||||||
|
struct si2165_state *state = fe->demodulator_priv;
|
||||||
|
struct dtv_frontend_properties *p = &fe->dtv_property_cache;
|
||||||
|
u32 delsys = p->delivery_system;
|
||||||
|
int ret;
|
||||||
|
u8 val[3];
|
||||||
|
|
||||||
|
/* initial setting of if freq shift */
|
||||||
|
ret = si2165_set_if_freq_shift(state);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
switch (delsys) {
|
||||||
|
case SYS_DVBT:
|
||||||
|
ret = si2165_set_frontend_dvbt(fe);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
/* dsp_addr_jump */
|
/* dsp_addr_jump */
|
||||||
ret = si2165_writereg32(state, 0x0348, 0xf4000000);
|
ret = si2165_writereg32(state, 0x0348, 0xf4000000);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
@ -887,6 +909,7 @@ static int si2165_set_frontend(struct dvb_frontend *fe)
|
||||||
ret = si2165_writereg8(state, 0x0341, 0x00);
|
ret = si2165_writereg8(state, 0x0341, 0x00);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
/* reset all */
|
/* reset all */
|
||||||
ret = si2165_writereg8(state, 0x00c0, 0x00);
|
ret = si2165_writereg8(state, 0x00c0, 0x00);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче