[media] em28xx: convert tda18212 tuner to I2C client
Used tda18212 tuner is implemented as a I2C driver. Use em28xx tuner I2C client for tda18212 driver. Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
f80f2ae213
commit
ac7a24fb75
1 changed files with 26 additions and 6 deletions
|
@ -373,7 +373,6 @@ static struct tda18271_config kworld_ub435q_v2_config = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct tda18212_config kworld_ub435q_v3_config = {
|
static struct tda18212_config kworld_ub435q_v3_config = {
|
||||||
.i2c_address = 0x60,
|
|
||||||
.if_atsc_vsb = 3600,
|
.if_atsc_vsb = 3600,
|
||||||
.if_atsc_qam = 3600,
|
.if_atsc_qam = 3600,
|
||||||
};
|
};
|
||||||
|
@ -1437,6 +1436,15 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EM2874_BOARD_KWORLD_UB435Q_V3:
|
case EM2874_BOARD_KWORLD_UB435Q_V3:
|
||||||
|
{
|
||||||
|
struct i2c_client *client;
|
||||||
|
struct i2c_adapter *adapter = &dev->i2c_adap[dev->def_i2c_bus];
|
||||||
|
struct i2c_board_info board_info = {
|
||||||
|
.type = "tda18212",
|
||||||
|
.addr = 0x60,
|
||||||
|
.platform_data = &kworld_ub435q_v3_config,
|
||||||
|
};
|
||||||
|
|
||||||
dvb->fe[0] = dvb_attach(lgdt3305_attach,
|
dvb->fe[0] = dvb_attach(lgdt3305_attach,
|
||||||
&em2874_lgdt3305_nogate_dev,
|
&em2874_lgdt3305_nogate_dev,
|
||||||
&dev->i2c_adap[dev->def_i2c_bus]);
|
&dev->i2c_adap[dev->def_i2c_bus]);
|
||||||
|
@ -1445,14 +1453,26 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
||||||
goto out_free;
|
goto out_free;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Attach the demodulator. */
|
/* attach tuner */
|
||||||
if (!dvb_attach(tda18212_attach, dvb->fe[0],
|
kworld_ub435q_v3_config.fe = dvb->fe[0];
|
||||||
&dev->i2c_adap[dev->def_i2c_bus],
|
request_module("tda18212");
|
||||||
&kworld_ub435q_v3_config)) {
|
client = i2c_new_device(adapter, &board_info);
|
||||||
result = -EINVAL;
|
if (client == NULL || client->dev.driver == NULL) {
|
||||||
|
dvb_frontend_detach(dvb->fe[0]);
|
||||||
|
result = -ENODEV;
|
||||||
goto out_free;
|
goto out_free;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!try_module_get(client->dev.driver->owner)) {
|
||||||
|
i2c_unregister_device(client);
|
||||||
|
dvb_frontend_detach(dvb->fe[0]);
|
||||||
|
result = -ENODEV;
|
||||||
|
goto out_free;
|
||||||
|
}
|
||||||
|
|
||||||
|
dvb->i2c_client_tuner = client;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case EM2874_BOARD_PCTV_HD_MINI_80E:
|
case EM2874_BOARD_PCTV_HD_MINI_80E:
|
||||||
dvb->fe[0] = dvb_attach(drx39xxj_attach, &dev->i2c_adap[dev->def_i2c_bus]);
|
dvb->fe[0] = dvb_attach(drx39xxj_attach, &dev->i2c_adap[dev->def_i2c_bus]);
|
||||||
if (dvb->fe[0] != NULL) {
|
if (dvb->fe[0] != NULL) {
|
||||||
|
|
Loading…
Reference in a new issue