mirror of https://gitee.com/openkylin/linux.git
V4L/DVB (4938): Cx88: Convert lgdt3302 tuning function to use dvb_pll_attach
There was a still a pre-dvb-pll set_params function for the lgdt3302 in the cx88-dvb driver. This patch removes that function and uses dvb_pll_attach() for the cards that were using it (Dvico FusionHDTV 3 GOLD {Q,T}). This way the set_params function from dvb-pll is used. dvb_attach() is in turn used on dvb_pll_attach(), eliminating some static dependencies on dvb-pll. There are still a couple static dependencies on dvb-pll remaining. Signed-off-by: Trent Piepho <xyzzy@speakeasy.org> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
a1ed551cdb
commit
1c5ee876d6
|
@ -360,38 +360,6 @@ static struct or51132_config pchdtv_hd3000 = {
|
|||
.set_ts_params = or51132_set_ts_param,
|
||||
};
|
||||
|
||||
static int lgdt3302_tuner_set_params(struct dvb_frontend* fe,
|
||||
struct dvb_frontend_parameters* params)
|
||||
{
|
||||
/* FIXME make this routine use the tuner-simple code.
|
||||
* It could probably be shared with a number of ATSC
|
||||
* frontends. Many share the same tuner with analog TV. */
|
||||
|
||||
struct cx8802_dev *dev= fe->dvb->priv;
|
||||
struct cx88_core *core = dev->core;
|
||||
u8 buf[4];
|
||||
struct i2c_msg msg =
|
||||
{ .addr = dev->core->pll_addr, .flags = 0, .buf = buf, .len = 4 };
|
||||
int err;
|
||||
|
||||
dvb_pll_configure(core->pll_desc, buf, params->frequency, 0);
|
||||
dprintk(1, "%s: tuner at 0x%02x bytes: 0x%02x 0x%02x 0x%02x 0x%02x\n",
|
||||
__FUNCTION__, msg.addr, buf[0],buf[1],buf[2],buf[3]);
|
||||
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 1);
|
||||
if ((err = i2c_transfer(&core->i2c_adap, &msg, 1)) != 1) {
|
||||
printk(KERN_WARNING "cx88-dvb: %s error "
|
||||
"(addr %02x <- %02x, err = %i)\n",
|
||||
__FUNCTION__, buf[0], buf[1], err);
|
||||
if (err < 0)
|
||||
return err;
|
||||
else
|
||||
return -EREMOTEIO;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int lgdt330x_pll_rf_set(struct dvb_frontend* fe, int index)
|
||||
{
|
||||
struct cx8802_dev *dev= fe->dvb->priv;
|
||||
|
@ -669,7 +637,8 @@ static int dvb_register(struct cx8802_dev *dev)
|
|||
&fusionhdtv_3_gold,
|
||||
&dev->core->i2c_adap);
|
||||
if (dev->dvb.frontend != NULL) {
|
||||
dev->dvb.frontend->ops.tuner_ops.set_params = lgdt3302_tuner_set_params;
|
||||
dvb_attach(dvb_pll_attach, dev->dvb.frontend, dev->core->pll_addr,
|
||||
&dev->core->i2c_adap, dev->core->pll_desc);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -689,7 +658,8 @@ static int dvb_register(struct cx8802_dev *dev)
|
|||
&fusionhdtv_3_gold,
|
||||
&dev->core->i2c_adap);
|
||||
if (dev->dvb.frontend != NULL) {
|
||||
dev->dvb.frontend->ops.tuner_ops.set_params = lgdt3302_tuner_set_params;
|
||||
dvb_attach(dvb_pll_attach, dev->dvb.frontend, dev->core->pll_addr,
|
||||
&dev->core->i2c_adap, dev->core->pll_desc);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue