|
@@ -463,10 +463,10 @@ static void hauppauge_hvr930c_init(struct em28xx *dev)
|
|
|
em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, 0x44);
|
|
|
msleep(10);
|
|
|
|
|
|
- dev->i2c_client.addr = 0x82 >> 1;
|
|
|
+ dev->i2c_client[dev->def_i2c_bus].addr = 0x82 >> 1;
|
|
|
|
|
|
for (i = 0; i < ARRAY_SIZE(regs); i++)
|
|
|
- i2c_master_send(&dev->i2c_client, regs[i].r, regs[i].len);
|
|
|
+ i2c_master_send(&dev->i2c_client[dev->def_i2c_bus], regs[i].r, regs[i].len);
|
|
|
em28xx_gpio_set(dev, hauppauge_hvr930c_end);
|
|
|
|
|
|
msleep(100);
|
|
@@ -520,10 +520,10 @@ static void terratec_h5_init(struct em28xx *dev)
|
|
|
em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, 0x45);
|
|
|
msleep(10);
|
|
|
|
|
|
- dev->i2c_client.addr = 0x82 >> 1;
|
|
|
+ dev->i2c_client[dev->def_i2c_bus].addr = 0x82 >> 1;
|
|
|
|
|
|
for (i = 0; i < ARRAY_SIZE(regs); i++)
|
|
|
- i2c_master_send(&dev->i2c_client, regs[i].r, regs[i].len);
|
|
|
+ i2c_master_send(&dev->i2c_client[dev->def_i2c_bus], regs[i].r, regs[i].len);
|
|
|
em28xx_gpio_set(dev, terratec_h5_end);
|
|
|
};
|
|
|
|
|
@@ -573,10 +573,10 @@ static void terratec_htc_stick_init(struct em28xx *dev)
|
|
|
em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, 0x44);
|
|
|
msleep(10);
|
|
|
|
|
|
- dev->i2c_client.addr = 0x82 >> 1;
|
|
|
+ dev->i2c_client[dev->def_i2c_bus].addr = 0x82 >> 1;
|
|
|
|
|
|
for (i = 0; i < ARRAY_SIZE(regs); i++)
|
|
|
- i2c_master_send(&dev->i2c_client, regs[i].r, regs[i].len);
|
|
|
+ i2c_master_send(&dev->i2c_client[dev->def_i2c_bus], regs[i].r, regs[i].len);
|
|
|
|
|
|
em28xx_gpio_set(dev, terratec_htc_stick_end);
|
|
|
};
|
|
@@ -631,10 +631,10 @@ static void terratec_htc_usb_xs_init(struct em28xx *dev)
|
|
|
em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, 0x44);
|
|
|
msleep(10);
|
|
|
|
|
|
- dev->i2c_client.addr = 0x82 >> 1;
|
|
|
+ dev->i2c_client[dev->def_i2c_bus].addr = 0x82 >> 1;
|
|
|
|
|
|
for (i = 0; i < ARRAY_SIZE(regs); i++)
|
|
|
- i2c_master_send(&dev->i2c_client, regs[i].r, regs[i].len);
|
|
|
+ i2c_master_send(&dev->i2c_client[dev->def_i2c_bus], regs[i].r, regs[i].len);
|
|
|
|
|
|
em28xx_gpio_set(dev, terratec_htc_usb_xs_end);
|
|
|
};
|
|
@@ -660,10 +660,10 @@ static void pctv_520e_init(struct em28xx *dev)
|
|
|
{{ 0x01, 0x00, 0x73, 0xaf }, 4},
|
|
|
};
|
|
|
|
|
|
- dev->i2c_client.addr = 0x82 >> 1; /* 0x41 */
|
|
|
+ dev->i2c_client[dev->def_i2c_bus].addr = 0x82 >> 1; /* 0x41 */
|
|
|
|
|
|
for (i = 0; i < ARRAY_SIZE(regs); i++)
|
|
|
- i2c_master_send(&dev->i2c_client, regs[i].r, regs[i].len);
|
|
|
+ i2c_master_send(&dev->i2c_client[dev->def_i2c_bus], regs[i].r, regs[i].len);
|
|
|
};
|
|
|
|
|
|
static int em28xx_pctv_290e_set_lna(struct dvb_frontend *fe)
|
|
@@ -777,7 +777,7 @@ static int em28xx_attach_xc3028(u8 addr, struct em28xx *dev)
|
|
|
struct xc2028_config cfg;
|
|
|
|
|
|
memset(&cfg, 0, sizeof(cfg));
|
|
|
- cfg.i2c_adap = &dev->i2c_adap;
|
|
|
+ cfg.i2c_adap = &dev->i2c_adap[dev->def_i2c_bus];
|
|
|
cfg.i2c_addr = addr;
|
|
|
|
|
|
if (!dev->dvb->fe[0]) {
|
|
@@ -960,7 +960,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
switch (dev->model) {
|
|
|
case EM2874_BOARD_LEADERSHIP_ISDBT:
|
|
|
dvb->fe[0] = dvb_attach(s921_attach,
|
|
|
- &sharp_isdbt, &dev->i2c_adap);
|
|
|
+ &sharp_isdbt, &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
|
|
|
if (!dvb->fe[0]) {
|
|
|
result = -EINVAL;
|
|
@@ -974,7 +974,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:
|
|
|
dvb->fe[0] = dvb_attach(lgdt330x_attach,
|
|
|
&em2880_lgdt3303_dev,
|
|
|
- &dev->i2c_adap);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
if (em28xx_attach_xc3028(0x61, dev) < 0) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
@@ -983,7 +983,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
case EM2880_BOARD_KWORLD_DVB_310U:
|
|
|
dvb->fe[0] = dvb_attach(zl10353_attach,
|
|
|
&em28xx_zl10353_with_xc3028,
|
|
|
- &dev->i2c_adap);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
if (em28xx_attach_xc3028(0x61, dev) < 0) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
@@ -994,7 +994,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
case EM2880_BOARD_EMPIRE_DUAL_TV:
|
|
|
dvb->fe[0] = dvb_attach(zl10353_attach,
|
|
|
&em28xx_zl10353_xc3028_no_i2c_gate,
|
|
|
- &dev->i2c_adap);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
if (em28xx_attach_xc3028(0x61, dev) < 0) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
@@ -1007,13 +1007,13 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
case EM2882_BOARD_KWORLD_VS_DVBT:
|
|
|
dvb->fe[0] = dvb_attach(zl10353_attach,
|
|
|
&em28xx_zl10353_xc3028_no_i2c_gate,
|
|
|
- &dev->i2c_adap);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
if (dvb->fe[0] == NULL) {
|
|
|
/* This board could have either a zl10353 or a mt352.
|
|
|
If the chip id isn't for zl10353, try mt352 */
|
|
|
dvb->fe[0] = dvb_attach(mt352_attach,
|
|
|
&terratec_xs_mt352_cfg,
|
|
|
- &dev->i2c_adap);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
}
|
|
|
|
|
|
if (em28xx_attach_xc3028(0x61, dev) < 0) {
|
|
@@ -1024,16 +1024,16 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
case EM2870_BOARD_KWORLD_355U:
|
|
|
dvb->fe[0] = dvb_attach(zl10353_attach,
|
|
|
&em28xx_zl10353_no_i2c_gate_dev,
|
|
|
- &dev->i2c_adap);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
if (dvb->fe[0] != NULL)
|
|
|
dvb_attach(qt1010_attach, dvb->fe[0],
|
|
|
- &dev->i2c_adap, &em28xx_qt1010_config);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus], &em28xx_qt1010_config);
|
|
|
break;
|
|
|
case EM2883_BOARD_KWORLD_HYBRID_330U:
|
|
|
case EM2882_BOARD_EVGA_INDTUBE:
|
|
|
dvb->fe[0] = dvb_attach(s5h1409_attach,
|
|
|
&em28xx_s5h1409_with_xc3028,
|
|
|
- &dev->i2c_adap);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
if (em28xx_attach_xc3028(0x61, dev) < 0) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
@@ -1042,10 +1042,10 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
case EM2882_BOARD_KWORLD_ATSC_315U:
|
|
|
dvb->fe[0] = dvb_attach(lgdt330x_attach,
|
|
|
&em2880_lgdt3303_dev,
|
|
|
- &dev->i2c_adap);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
if (dvb->fe[0] != NULL) {
|
|
|
if (!dvb_attach(simple_tuner_attach, dvb->fe[0],
|
|
|
- &dev->i2c_adap, 0x61, TUNER_THOMSON_DTT761X)) {
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus], 0x61, TUNER_THOMSON_DTT761X)) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
|
}
|
|
@@ -1054,7 +1054,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
|
|
|
case EM2882_BOARD_PINNACLE_HYBRID_PRO_330E:
|
|
|
dvb->fe[0] = dvb_attach(drxd_attach, &em28xx_drxd, NULL,
|
|
|
- &dev->i2c_adap, &dev->udev->dev);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus], &dev->udev->dev);
|
|
|
if (em28xx_attach_xc3028(0x61, dev) < 0) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
@@ -1064,10 +1064,10 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
/* Philips CU1216L NIM (Philips TDA10023 + Infineon TUA6034) */
|
|
|
dvb->fe[0] = dvb_attach(tda10023_attach,
|
|
|
&em28xx_tda10023_config,
|
|
|
- &dev->i2c_adap, 0x48);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus], 0x48);
|
|
|
if (dvb->fe[0]) {
|
|
|
if (!dvb_attach(simple_tuner_attach, dvb->fe[0],
|
|
|
- &dev->i2c_adap, 0x60, TUNER_PHILIPS_CU1216L)) {
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus], 0x60, TUNER_PHILIPS_CU1216L)) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
|
}
|
|
@@ -1076,10 +1076,10 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
case EM2870_BOARD_KWORLD_A340:
|
|
|
dvb->fe[0] = dvb_attach(lgdt3305_attach,
|
|
|
&em2870_lgdt3304_dev,
|
|
|
- &dev->i2c_adap);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
if (dvb->fe[0] != NULL)
|
|
|
dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
|
|
|
- &dev->i2c_adap, &kworld_a340_config);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus], &kworld_a340_config);
|
|
|
break;
|
|
|
case EM28174_BOARD_PCTV_290E:
|
|
|
/* set default GPIO0 for LNA, used if GPIOLIB is undefined */
|
|
@@ -1087,14 +1087,14 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
CXD2820R_GPIO_L;
|
|
|
dvb->fe[0] = dvb_attach(cxd2820r_attach,
|
|
|
&em28xx_cxd2820r_config,
|
|
|
- &dev->i2c_adap,
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus],
|
|
|
&dvb->lna_gpio);
|
|
|
if (dvb->fe[0]) {
|
|
|
/* FE 0 attach tuner */
|
|
|
if (!dvb_attach(tda18271_attach,
|
|
|
dvb->fe[0],
|
|
|
0x60,
|
|
|
- &dev->i2c_adap,
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus],
|
|
|
&em28xx_cxd2820r_tda18271_config)) {
|
|
|
|
|
|
dvb_frontend_detach(dvb->fe[0]);
|
|
@@ -1124,7 +1124,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
hauppauge_hvr930c_init(dev);
|
|
|
|
|
|
dvb->fe[0] = dvb_attach(drxk_attach,
|
|
|
- &hauppauge_930c_drxk, &dev->i2c_adap);
|
|
|
+ &hauppauge_930c_drxk, &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
if (!dvb->fe[0]) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
@@ -1142,7 +1142,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
|
|
|
if (dvb->fe[0]->ops.i2c_gate_ctrl)
|
|
|
dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 1);
|
|
|
- if (!dvb_attach(xc5000_attach, dvb->fe[0], &dev->i2c_adap,
|
|
|
+ if (!dvb_attach(xc5000_attach, dvb->fe[0], &dev->i2c_adap[dev->def_i2c_bus],
|
|
|
&cfg)) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
@@ -1155,7 +1155,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
case EM2884_BOARD_TERRATEC_H5:
|
|
|
terratec_h5_init(dev);
|
|
|
|
|
|
- dvb->fe[0] = dvb_attach(drxk_attach, &terratec_h5_drxk, &dev->i2c_adap);
|
|
|
+ dvb->fe[0] = dvb_attach(drxk_attach, &terratec_h5_drxk, &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
if (!dvb->fe[0]) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
@@ -1169,7 +1169,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
/* Attach tda18271 to DVB-C frontend */
|
|
|
if (dvb->fe[0]->ops.i2c_gate_ctrl)
|
|
|
dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 1);
|
|
|
- if (!dvb_attach(tda18271c2dd_attach, dvb->fe[0], &dev->i2c_adap, 0x60)) {
|
|
|
+ if (!dvb_attach(tda18271c2dd_attach, dvb->fe[0], &dev->i2c_adap[dev->def_i2c_bus], 0x60)) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
|
}
|
|
@@ -1180,17 +1180,17 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
case EM28174_BOARD_PCTV_460E:
|
|
|
/* attach demod */
|
|
|
dvb->fe[0] = dvb_attach(tda10071_attach,
|
|
|
- &em28xx_tda10071_config, &dev->i2c_adap);
|
|
|
+ &em28xx_tda10071_config, &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
|
|
|
/* attach SEC */
|
|
|
if (dvb->fe[0])
|
|
|
- dvb_attach(a8293_attach, dvb->fe[0], &dev->i2c_adap,
|
|
|
+ dvb_attach(a8293_attach, dvb->fe[0], &dev->i2c_adap[dev->def_i2c_bus],
|
|
|
&em28xx_a8293_config);
|
|
|
break;
|
|
|
case EM2874_BOARD_MAXMEDIA_UB425_TC:
|
|
|
/* attach demodulator */
|
|
|
dvb->fe[0] = dvb_attach(drxk_attach, &maxmedia_ub425_tc_drxk,
|
|
|
- &dev->i2c_adap);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
|
|
|
if (dvb->fe[0]) {
|
|
|
/* disable I2C-gate */
|
|
@@ -1198,7 +1198,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
|
|
|
/* attach tuner */
|
|
|
if (!dvb_attach(tda18271c2dd_attach, dvb->fe[0],
|
|
|
- &dev->i2c_adap, 0x60)) {
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus], 0x60)) {
|
|
|
dvb_frontend_detach(dvb->fe[0]);
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
@@ -1216,12 +1216,12 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
|
|
|
/* attach demodulator */
|
|
|
dvb->fe[0] = dvb_attach(drxk_attach, &pctv_520e_drxk,
|
|
|
- &dev->i2c_adap);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
|
|
|
if (dvb->fe[0]) {
|
|
|
/* attach tuner */
|
|
|
if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
|
|
|
- &dev->i2c_adap,
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus],
|
|
|
&em28xx_cxd2820r_tda18271_config)) {
|
|
|
dvb_frontend_detach(dvb->fe[0]);
|
|
|
result = -EINVAL;
|
|
@@ -1234,7 +1234,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
|
|
|
/* attach demodulator */
|
|
|
dvb->fe[0] = dvb_attach(drxk_attach, &terratec_htc_stick_drxk,
|
|
|
- &dev->i2c_adap);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
if (!dvb->fe[0]) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
@@ -1242,7 +1242,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
|
|
|
/* Attach the demodulator. */
|
|
|
if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
|
|
|
- &dev->i2c_adap,
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus],
|
|
|
&em28xx_cxd2820r_tda18271_config)) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
@@ -1253,7 +1253,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
|
|
|
/* attach demodulator */
|
|
|
dvb->fe[0] = dvb_attach(drxk_attach, &terratec_htc_stick_drxk,
|
|
|
- &dev->i2c_adap);
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus]);
|
|
|
if (!dvb->fe[0]) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|
|
@@ -1261,7 +1261,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
|
|
|
|
|
/* Attach the demodulator. */
|
|
|
if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
|
|
|
- &dev->i2c_adap,
|
|
|
+ &dev->i2c_adap[dev->def_i2c_bus],
|
|
|
&em28xx_cxd2820r_tda18271_config)) {
|
|
|
result = -EINVAL;
|
|
|
goto out_free;
|