Commit 23ba635d authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab Committed by Mauro Carvalho Chehab

media: lgdt330x: convert it to the new I2C binding way

Convert the driver to allow its usage with the new I2C
binding way.

Please notice that this patch doesn't convert the
callers to bind to it using the new way.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent ff093612
...@@ -495,7 +495,6 @@ static int airstar_atsc2_attach(struct flexcop_device *fc, ...@@ -495,7 +495,6 @@ static int airstar_atsc2_attach(struct flexcop_device *fc,
/* AirStar ATSC 3rd generation */ /* AirStar ATSC 3rd generation */
#if FE_SUPPORTED(LGDT330X) #if FE_SUPPORTED(LGDT330X)
static struct lgdt330x_config air2pc_atsc_hd5000_config = { static struct lgdt330x_config air2pc_atsc_hd5000_config = {
.demod_address = 0x59,
.demod_chip = LGDT3303, .demod_chip = LGDT3303,
.serial_mpeg = 0x04, .serial_mpeg = 0x04,
.clock_polarity_flip = 1, .clock_polarity_flip = 1,
...@@ -504,7 +503,8 @@ static struct lgdt330x_config air2pc_atsc_hd5000_config = { ...@@ -504,7 +503,8 @@ static struct lgdt330x_config air2pc_atsc_hd5000_config = {
static int airstar_atsc3_attach(struct flexcop_device *fc, static int airstar_atsc3_attach(struct flexcop_device *fc,
struct i2c_adapter *i2c) struct i2c_adapter *i2c)
{ {
fc->fe = dvb_attach(lgdt330x_attach, &air2pc_atsc_hd5000_config, i2c); fc->fe = dvb_attach(lgdt330x_attach, &air2pc_atsc_hd5000_config,
0x59, i2c);
if (!fc->fe) if (!fc->fe)
return 0; return 0;
......
This diff is collapsed.
...@@ -29,7 +29,6 @@ typedef enum lg_chip_t { ...@@ -29,7 +29,6 @@ typedef enum lg_chip_t {
/** /**
* struct lgdt330x_config - contains lgdt330x configuration * struct lgdt330x_config - contains lgdt330x configuration
* *
* @demod_address: The demodulator's i2c address
* @demod_chip: LG demodulator chip LGDT3302 or LGDT3303 * @demod_chip: LG demodulator chip LGDT3302 or LGDT3303
* @serial_mpeg: MPEG hardware interface - 0:parallel 1:serial * @serial_mpeg: MPEG hardware interface - 0:parallel 1:serial
* @pll_rf_set: Callback function to set PLL interface * @pll_rf_set: Callback function to set PLL interface
...@@ -38,23 +37,30 @@ typedef enum lg_chip_t { ...@@ -38,23 +37,30 @@ typedef enum lg_chip_t {
* Flip the polarity of the mpeg data transfer clock using alternate * Flip the polarity of the mpeg data transfer clock using alternate
* init data. * init data.
* This option applies ONLY to LGDT3303 - 0:disabled (default) 1:enabled * This option applies ONLY to LGDT3303 - 0:disabled (default) 1:enabled
* @get_dvb_frontend:
* returns the frontend associated with this I2C client.
* Filled by the driver.
*/ */
struct lgdt330x_config struct lgdt330x_config
{ {
u8 demod_address;
lg_chip_type demod_chip; lg_chip_type demod_chip;
int serial_mpeg; int serial_mpeg;
int (*pll_rf_set) (struct dvb_frontend* fe, int index); int (*pll_rf_set) (struct dvb_frontend* fe, int index);
int (*set_ts_params)(struct dvb_frontend* fe, int is_punctured); int (*set_ts_params)(struct dvb_frontend* fe, int is_punctured);
int clock_polarity_flip; int clock_polarity_flip;
struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
}; };
#if IS_REACHABLE(CONFIG_DVB_LGDT330X) #if IS_REACHABLE(CONFIG_DVB_LGDT330X)
extern struct dvb_frontend* lgdt330x_attach(const struct lgdt330x_config* config, struct dvb_frontend *lgdt330x_attach(const struct lgdt330x_config *config,
struct i2c_adapter* i2c); u8 demod_address,
struct i2c_adapter *i2c);
#else #else
static inline struct dvb_frontend* lgdt330x_attach(const struct lgdt330x_config* config, static
struct i2c_adapter* i2c) struct dvb_frontend *lgdt330x_attach(const struct lgdt330x_config *config,
u8 demod_address,
struct i2c_adapter *i2c)
{ {
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
return NULL; return NULL;
......
...@@ -575,7 +575,6 @@ static struct mt352_config digitv_alps_tded4_config = { ...@@ -575,7 +575,6 @@ static struct mt352_config digitv_alps_tded4_config = {
}; };
static struct lgdt330x_config tdvs_tua6034_config = { static struct lgdt330x_config tdvs_tua6034_config = {
.demod_address = 0x0e,
.demod_chip = LGDT3303, .demod_chip = LGDT3303,
.serial_mpeg = 0x40, /* TPSERIAL for 3303 in TOP_CONTROL */ .serial_mpeg = 0x40, /* TPSERIAL for 3303 in TOP_CONTROL */
}; };
...@@ -614,7 +613,8 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type) ...@@ -614,7 +613,8 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
case BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE: case BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE:
lgdt330x_reset(card); lgdt330x_reset(card);
card->fe = dvb_attach(lgdt330x_attach, &tdvs_tua6034_config, card->i2c_adapter); card->fe = dvb_attach(lgdt330x_attach, &tdvs_tua6034_config,
0x0e, card->i2c_adapter);
if (card->fe != NULL) { if (card->fe != NULL) {
dvb_attach(simple_tuner_attach, card->fe, dvb_attach(simple_tuner_attach, card->fe,
card->i2c_adapter, 0x61, card->i2c_adapter, 0x61,
......
...@@ -252,7 +252,6 @@ static struct mt2131_config hauppauge_generic_tunerconfig = { ...@@ -252,7 +252,6 @@ static struct mt2131_config hauppauge_generic_tunerconfig = {
}; };
static struct lgdt330x_config fusionhdtv_5_express = { static struct lgdt330x_config fusionhdtv_5_express = {
.demod_address = 0x0e,
.demod_chip = LGDT3303, .demod_chip = LGDT3303,
.serial_mpeg = 0x40, .serial_mpeg = 0x40,
}; };
...@@ -1322,6 +1321,7 @@ static int dvb_register(struct cx23885_tsport *port) ...@@ -1322,6 +1321,7 @@ static int dvb_register(struct cx23885_tsport *port)
i2c_bus = &dev->i2c_bus[0]; i2c_bus = &dev->i2c_bus[0];
fe0->dvb.frontend = dvb_attach(lgdt330x_attach, fe0->dvb.frontend = dvb_attach(lgdt330x_attach,
&fusionhdtv_5_express, &fusionhdtv_5_express,
0x0e,
&i2c_bus->i2c_adap); &i2c_bus->i2c_adap);
if (fe0->dvb.frontend == NULL) if (fe0->dvb.frontend == NULL)
break; break;
......
...@@ -411,21 +411,18 @@ static int lgdt330x_set_ts_param(struct dvb_frontend *fe, int is_punctured) ...@@ -411,21 +411,18 @@ static int lgdt330x_set_ts_param(struct dvb_frontend *fe, int is_punctured)
} }
static struct lgdt330x_config fusionhdtv_3_gold = { static struct lgdt330x_config fusionhdtv_3_gold = {
.demod_address = 0x0e,
.demod_chip = LGDT3302, .demod_chip = LGDT3302,
.serial_mpeg = 0x04, /* TPSERIAL for 3302 in TOP_CONTROL */ .serial_mpeg = 0x04, /* TPSERIAL for 3302 in TOP_CONTROL */
.set_ts_params = lgdt330x_set_ts_param, .set_ts_params = lgdt330x_set_ts_param,
}; };
static const struct lgdt330x_config fusionhdtv_5_gold = { static const struct lgdt330x_config fusionhdtv_5_gold = {
.demod_address = 0x0e,
.demod_chip = LGDT3303, .demod_chip = LGDT3303,
.serial_mpeg = 0x40, /* TPSERIAL for 3303 in TOP_CONTROL */ .serial_mpeg = 0x40, /* TPSERIAL for 3303 in TOP_CONTROL */
.set_ts_params = lgdt330x_set_ts_param, .set_ts_params = lgdt330x_set_ts_param,
}; };
static const struct lgdt330x_config pchdtv_hd5500 = { static const struct lgdt330x_config pchdtv_hd5500 = {
.demod_address = 0x59,
.demod_chip = LGDT3303, .demod_chip = LGDT3303,
.serial_mpeg = 0x40, /* TPSERIAL for 3303 in TOP_CONTROL */ .serial_mpeg = 0x40, /* TPSERIAL for 3303 in TOP_CONTROL */
.set_ts_params = lgdt330x_set_ts_param, .set_ts_params = lgdt330x_set_ts_param,
...@@ -1237,6 +1234,7 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -1237,6 +1234,7 @@ static int dvb_register(struct cx8802_dev *dev)
fusionhdtv_3_gold.pll_rf_set = lgdt330x_pll_rf_set; fusionhdtv_3_gold.pll_rf_set = lgdt330x_pll_rf_set;
fe0->dvb.frontend = dvb_attach(lgdt330x_attach, fe0->dvb.frontend = dvb_attach(lgdt330x_attach,
&fusionhdtv_3_gold, &fusionhdtv_3_gold,
0x0e,
&core->i2c_adap); &core->i2c_adap);
if (fe0->dvb.frontend) { if (fe0->dvb.frontend) {
if (!dvb_attach(simple_tuner_attach, fe0->dvb.frontend, if (!dvb_attach(simple_tuner_attach, fe0->dvb.frontend,
...@@ -1255,6 +1253,7 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -1255,6 +1253,7 @@ static int dvb_register(struct cx8802_dev *dev)
mdelay(200); mdelay(200);
fe0->dvb.frontend = dvb_attach(lgdt330x_attach, fe0->dvb.frontend = dvb_attach(lgdt330x_attach,
&fusionhdtv_3_gold, &fusionhdtv_3_gold,
0x0e,
&core->i2c_adap); &core->i2c_adap);
if (fe0->dvb.frontend) { if (fe0->dvb.frontend) {
if (!dvb_attach(simple_tuner_attach, fe0->dvb.frontend, if (!dvb_attach(simple_tuner_attach, fe0->dvb.frontend,
...@@ -1273,6 +1272,7 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -1273,6 +1272,7 @@ static int dvb_register(struct cx8802_dev *dev)
mdelay(200); mdelay(200);
fe0->dvb.frontend = dvb_attach(lgdt330x_attach, fe0->dvb.frontend = dvb_attach(lgdt330x_attach,
&fusionhdtv_5_gold, &fusionhdtv_5_gold,
0x0e,
&core->i2c_adap); &core->i2c_adap);
if (fe0->dvb.frontend) { if (fe0->dvb.frontend) {
if (!dvb_attach(simple_tuner_attach, fe0->dvb.frontend, if (!dvb_attach(simple_tuner_attach, fe0->dvb.frontend,
...@@ -1294,6 +1294,7 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -1294,6 +1294,7 @@ static int dvb_register(struct cx8802_dev *dev)
mdelay(200); mdelay(200);
fe0->dvb.frontend = dvb_attach(lgdt330x_attach, fe0->dvb.frontend = dvb_attach(lgdt330x_attach,
&pchdtv_hd5500, &pchdtv_hd5500,
0x59,
&core->i2c_adap); &core->i2c_adap);
if (fe0->dvb.frontend) { if (fe0->dvb.frontend) {
if (!dvb_attach(simple_tuner_attach, fe0->dvb.frontend, if (!dvb_attach(simple_tuner_attach, fe0->dvb.frontend,
......
...@@ -721,7 +721,6 @@ static int cineS2_probe(struct ngene_channel *chan) ...@@ -721,7 +721,6 @@ static int cineS2_probe(struct ngene_channel *chan)
static struct lgdt330x_config aver_m780 = { static struct lgdt330x_config aver_m780 = {
.demod_address = 0xb2 >> 1,
.demod_chip = LGDT3303, .demod_chip = LGDT3303,
.serial_mpeg = 0x00, /* PARALLEL */ .serial_mpeg = 0x00, /* PARALLEL */
.clock_polarity_flip = 1, .clock_polarity_flip = 1,
...@@ -738,7 +737,8 @@ static int demod_attach_lg330x(struct ngene_channel *chan) ...@@ -738,7 +737,8 @@ static int demod_attach_lg330x(struct ngene_channel *chan)
{ {
struct device *pdev = &chan->dev->pci_dev->dev; struct device *pdev = &chan->dev->pci_dev->dev;
chan->fe = dvb_attach(lgdt330x_attach, &aver_m780, &chan->i2c_adapter); chan->fe = dvb_attach(lgdt330x_attach, &aver_m780,
0xb2 >> 1, &chan->i2c_adapter);
if (chan->fe == NULL) { if (chan->fe == NULL) {
dev_err(pdev, "No LGDT330x found!\n"); dev_err(pdev, "No LGDT330x found!\n");
return -ENODEV; return -ENODEV;
......
...@@ -540,12 +540,10 @@ static struct cx22702_config cxusb_cx22702_config = { ...@@ -540,12 +540,10 @@ static struct cx22702_config cxusb_cx22702_config = {
}; };
static struct lgdt330x_config cxusb_lgdt3303_config = { static struct lgdt330x_config cxusb_lgdt3303_config = {
.demod_address = 0x0e,
.demod_chip = LGDT3303, .demod_chip = LGDT3303,
}; };
static struct lgdt330x_config cxusb_aver_lgdt3303_config = { static struct lgdt330x_config cxusb_aver_lgdt3303_config = {
.demod_address = 0x0e,
.demod_chip = LGDT3303, .demod_chip = LGDT3303,
.clock_polarity_flip = 2, .clock_polarity_flip = 2,
}; };
...@@ -763,6 +761,7 @@ static int cxusb_lgdt3303_frontend_attach(struct dvb_usb_adapter *adap) ...@@ -763,6 +761,7 @@ static int cxusb_lgdt3303_frontend_attach(struct dvb_usb_adapter *adap)
adap->fe_adap[0].fe = dvb_attach(lgdt330x_attach, adap->fe_adap[0].fe = dvb_attach(lgdt330x_attach,
&cxusb_lgdt3303_config, &cxusb_lgdt3303_config,
0x0e,
&adap->dev->i2c_adap); &adap->dev->i2c_adap);
if ((adap->fe_adap[0].fe) != NULL) if ((adap->fe_adap[0].fe) != NULL)
return 0; return 0;
...@@ -772,7 +771,9 @@ static int cxusb_lgdt3303_frontend_attach(struct dvb_usb_adapter *adap) ...@@ -772,7 +771,9 @@ static int cxusb_lgdt3303_frontend_attach(struct dvb_usb_adapter *adap)
static int cxusb_aver_lgdt3303_frontend_attach(struct dvb_usb_adapter *adap) static int cxusb_aver_lgdt3303_frontend_attach(struct dvb_usb_adapter *adap)
{ {
adap->fe_adap[0].fe = dvb_attach(lgdt330x_attach, &cxusb_aver_lgdt3303_config, adap->fe_adap[0].fe = dvb_attach(lgdt330x_attach,
&cxusb_aver_lgdt3303_config,
0x0e,
&adap->dev->i2c_adap); &adap->dev->i2c_adap);
if (adap->fe_adap[0].fe != NULL) if (adap->fe_adap[0].fe != NULL)
return 0; return 0;
......
...@@ -300,7 +300,6 @@ static int em28xx_dvb_bus_ctrl(struct dvb_frontend *fe, int acquire) ...@@ -300,7 +300,6 @@ static int em28xx_dvb_bus_ctrl(struct dvb_frontend *fe, int acquire)
/* ------------------------------------------------------------------ */ /* ------------------------------------------------------------------ */
static struct lgdt330x_config em2880_lgdt3303_dev = { static struct lgdt330x_config em2880_lgdt3303_dev = {
.demod_address = 0x0e,
.demod_chip = LGDT3303, .demod_chip = LGDT3303,
}; };
...@@ -1472,6 +1471,7 @@ static int em28xx_dvb_init(struct em28xx *dev) ...@@ -1472,6 +1471,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600: case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:
dvb->fe[0] = dvb_attach(lgdt330x_attach, dvb->fe[0] = dvb_attach(lgdt330x_attach,
&em2880_lgdt3303_dev, &em2880_lgdt3303_dev,
0x0e,
&dev->i2c_adap[dev->def_i2c_bus]); &dev->i2c_adap[dev->def_i2c_bus]);
if (em28xx_attach_xc3028(0x61, dev) < 0) { if (em28xx_attach_xc3028(0x61, dev) < 0) {
result = -EINVAL; result = -EINVAL;
...@@ -1552,6 +1552,7 @@ static int em28xx_dvb_init(struct em28xx *dev) ...@@ -1552,6 +1552,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
case EM2882_BOARD_KWORLD_ATSC_315U: case EM2882_BOARD_KWORLD_ATSC_315U:
dvb->fe[0] = dvb_attach(lgdt330x_attach, dvb->fe[0] = dvb_attach(lgdt330x_attach,
&em2880_lgdt3303_dev, &em2880_lgdt3303_dev,
0x0e,
&dev->i2c_adap[dev->def_i2c_bus]); &dev->i2c_adap[dev->def_i2c_bus]);
if (dvb->fe[0]) { if (dvb->fe[0]) {
if (!dvb_attach(simple_tuner_attach, dvb->fe[0], if (!dvb_attach(simple_tuner_attach, dvb->fe[0],
......
...@@ -182,7 +182,6 @@ static const struct pvr2_device_desc pvr2_device_av400 = { ...@@ -182,7 +182,6 @@ static const struct pvr2_device_desc pvr2_device_av400 = {
#ifdef CONFIG_VIDEO_PVRUSB2_DVB #ifdef CONFIG_VIDEO_PVRUSB2_DVB
static struct lgdt330x_config pvr2_lgdt3303_config = { static struct lgdt330x_config pvr2_lgdt3303_config = {
.demod_address = 0x0e,
.demod_chip = LGDT3303, .demod_chip = LGDT3303,
.clock_polarity_flip = 1, .clock_polarity_flip = 1,
}; };
...@@ -190,6 +189,7 @@ static struct lgdt330x_config pvr2_lgdt3303_config = { ...@@ -190,6 +189,7 @@ static struct lgdt330x_config pvr2_lgdt3303_config = {
static int pvr2_lgdt3303_attach(struct pvr2_dvb_adapter *adap) static int pvr2_lgdt3303_attach(struct pvr2_dvb_adapter *adap)
{ {
adap->fe = dvb_attach(lgdt330x_attach, &pvr2_lgdt3303_config, adap->fe = dvb_attach(lgdt330x_attach, &pvr2_lgdt3303_config,
0x0e,
&adap->channel.hdw->i2c_adap); &adap->channel.hdw->i2c_adap);
if (adap->fe) if (adap->fe)
return 0; return 0;
...@@ -243,13 +243,13 @@ static const struct pvr2_device_desc pvr2_device_onair_creator = { ...@@ -243,13 +243,13 @@ static const struct pvr2_device_desc pvr2_device_onair_creator = {
#ifdef CONFIG_VIDEO_PVRUSB2_DVB #ifdef CONFIG_VIDEO_PVRUSB2_DVB
static struct lgdt330x_config pvr2_lgdt3302_config = { static struct lgdt330x_config pvr2_lgdt3302_config = {
.demod_address = 0x0e,
.demod_chip = LGDT3302, .demod_chip = LGDT3302,
}; };
static int pvr2_lgdt3302_attach(struct pvr2_dvb_adapter *adap) static int pvr2_lgdt3302_attach(struct pvr2_dvb_adapter *adap)
{ {
adap->fe = dvb_attach(lgdt330x_attach, &pvr2_lgdt3302_config, adap->fe = dvb_attach(lgdt330x_attach, &pvr2_lgdt3302_config,
0x0e,
&adap->channel.hdw->i2c_adap); &adap->channel.hdw->i2c_adap);
if (adap->fe) if (adap->fe)
return 0; return 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