struct semaphore pll_mutex;
bool dont_attach_fe1;
int lna_gpio;
- struct i2c_client *i2c_client_demod;
+ struct i2c_client *i2c_client_demod[2];
struct i2c_client *i2c_client_tuner;
struct i2c_client *i2c_client_sec;
};
};
em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, 0x46);
/* sleeping ISDB-T */
- dev->dvb->i2c_client_demod->addr = 0x14;
+ dev->dvb->i2c_client_demod[0]->addr = 0x14;
for (i = 0; i < ARRAY_SIZE(regs1); i++)
- i2c_master_send(dev->dvb->i2c_client_demod,
+ i2c_master_send(dev->dvb->i2c_client_demod[0],
regs1[i].r, regs1[i].len);
/* sleeping ISDB-S */
- dev->dvb->i2c_client_demod->addr = 0x15;
+ dev->dvb->i2c_client_demod[0]->addr = 0x15;
for (i = 0; i < ARRAY_SIZE(regs2); i++)
- i2c_master_send(dev->dvb->i2c_client_demod, regs2[i].r,
+ i2c_master_send(dev->dvb->i2c_client_demod[0], regs2[i].r,
regs2[i].len);
for (i = 0; i < ARRAY_SIZE(gpio); i++) {
em28xx_write_reg_bits(dev, gpio[i].reg, gpio[i].val,
tda10071_pdata.pll_multiplier = 20;
tda10071_pdata.tuner_i2c_addr = 0x14;
- dvb->i2c_client_demod = dvb_module_probe("tda10071", "tda10071_cx24118",
+ dvb->i2c_client_demod[0] = dvb_module_probe("tda10071", "tda10071_cx24118",
&dev->i2c_adap[dev->def_i2c_bus],
0x55, &tda10071_pdata);
- if (!dvb->i2c_client_demod)
+ if (!dvb->i2c_client_demod[0])
return -ENODEV;
- dvb->fe[0] = tda10071_pdata.get_dvb_frontend(dvb->i2c_client_demod);
+ dvb->fe[0] = tda10071_pdata.get_dvb_frontend(dvb->i2c_client_demod[0]);
/* attach SEC */
a8293_pdata.dvb_frontend = dvb->fe[0];
&dev->i2c_adap[dev->def_i2c_bus],
0x08, &a8293_pdata);
if (!dvb->i2c_client_sec) {
- dvb_module_release(dvb->i2c_client_demod);
+ dvb_module_release(dvb->i2c_client_demod[0]);
return -ENODEV;
}
m88ds3103_pdata.ts_clk_pol = 1;
m88ds3103_pdata.agc = 0x99;
- dvb->i2c_client_demod = dvb_module_probe("m88ds3103", NULL,
+ dvb->i2c_client_demod[0] = dvb_module_probe("m88ds3103", NULL,
&dev->i2c_adap[dev->def_i2c_bus],
0x68, &m88ds3103_pdata);
- if (!dvb->i2c_client_demod)
+ if (!dvb->i2c_client_demod[0])
return -ENODEV;
- dvb->fe[0] = m88ds3103_pdata.get_dvb_frontend(dvb->i2c_client_demod);
- i2c_adapter = m88ds3103_pdata.get_i2c_adapter(dvb->i2c_client_demod);
+ dvb->fe[0] = m88ds3103_pdata.get_dvb_frontend(dvb->i2c_client_demod[0]);
+ i2c_adapter = m88ds3103_pdata.get_i2c_adapter(dvb->i2c_client_demod[0]);
/* attach tuner */
ts2020_config.fe = dvb->fe[0];
i2c_adapter,
0x60, &ts2020_config);
if (!dvb->i2c_client_tuner) {
- dvb_module_release(dvb->i2c_client_demod);
+ dvb_module_release(dvb->i2c_client_demod[0]);
return -ENODEV;
}
0x08, &a8293_pdata);
if (!dvb->i2c_client_sec) {
dvb_module_release(dvb->i2c_client_tuner);
- dvb_module_release(dvb->i2c_client_demod);
+ dvb_module_release(dvb->i2c_client_demod[0]);
return -ENODEV;
}
m88ds3103_pdata.agc = 0x99;
m88ds3103_pdata.agc_inv = 0;
m88ds3103_pdata.spec_inv = 0;
- dvb->i2c_client_demod = dvb_module_probe("m88ds3103", "m88ds3103b",
+ dvb->i2c_client_demod[0] = dvb_module_probe("m88ds3103", "m88ds3103b",
&dev->i2c_adap[dev->def_i2c_bus],
0x6a, &m88ds3103_pdata);
- if (!dvb->i2c_client_demod)
+ if (!dvb->i2c_client_demod[0])
return -ENODEV;
- dvb->fe[0] = m88ds3103_pdata.get_dvb_frontend(dvb->i2c_client_demod);
- i2c_adapter = m88ds3103_pdata.get_i2c_adapter(dvb->i2c_client_demod);
+ dvb->fe[0] = m88ds3103_pdata.get_dvb_frontend(dvb->i2c_client_demod[0]);
+ i2c_adapter = m88ds3103_pdata.get_i2c_adapter(dvb->i2c_client_demod[0]);
/* attach tuner */
ts2020_config.fe = dvb->fe[0];
i2c_adapter,
0x60, &ts2020_config);
if (!dvb->i2c_client_tuner) {
- dvb_module_release(dvb->i2c_client_demod);
+ dvb_module_release(dvb->i2c_client_demod[0]);
return -ENODEV;
}
0x08, &a8293_pdata);
if (!dvb->i2c_client_sec) {
dvb_module_release(dvb->i2c_client_tuner);
- dvb_module_release(dvb->i2c_client_demod);
+ dvb_module_release(dvb->i2c_client_demod[0]);
return -ENODEV;
}
si2168_config.ts_mode = SI2168_TS_PARALLEL;
si2168_config.spectral_inversion = true;
- dvb->i2c_client_demod = dvb_module_probe("si2168", NULL,
+ dvb->i2c_client_demod[0] = dvb_module_probe("si2168", NULL,
&dev->i2c_adap[dev->def_i2c_bus],
0x64, &si2168_config);
- if (!dvb->i2c_client_demod)
+ if (!dvb->i2c_client_demod[0])
return -ENODEV;
/* attach tuner */
adapter,
0x60, &si2157_config);
if (!dvb->i2c_client_tuner) {
- dvb_module_release(dvb->i2c_client_demod);
+ dvb_module_release(dvb->i2c_client_demod[0]);
return -ENODEV;
}
dvb->fe[0]->ops.set_lna = em28xx_pctv_292e_set_lna;
si2168_config.fe = &dvb->fe[0];
si2168_config.ts_mode = SI2168_TS_PARALLEL;
- dvb->i2c_client_demod = dvb_module_probe("si2168", NULL,
+ dvb->i2c_client_demod[0] = dvb_module_probe("si2168", NULL,
&dev->i2c_adap[dev->def_i2c_bus],
0x64, &si2168_config);
- if (!dvb->i2c_client_demod)
+ if (!dvb->i2c_client_demod[0])
return -ENODEV;
/* attach tuner */
adapter,
0x60, &si2157_config);
if (!dvb->i2c_client_tuner) {
- dvb_module_release(dvb->i2c_client_demod);
+ dvb_module_release(dvb->i2c_client_demod[0]);
return -ENODEV;
}
struct qm1d1c0042_config qm1d1c0042_config = {};
/* attach demod */
- dvb->i2c_client_demod = dvb_module_probe("tc90522", "tc90522sat",
+ dvb->i2c_client_demod[0] = dvb_module_probe("tc90522", "tc90522sat",
&dev->i2c_adap[dev->def_i2c_bus],
0x15, &tc90522_config);
- if (!dvb->i2c_client_demod)
+ if (!dvb->i2c_client_demod[0])
return -ENODEV;
/* attach tuner */
tc90522_config.tuner_i2c,
0x61, &qm1d1c0042_config);
if (!dvb->i2c_client_tuner) {
- dvb_module_release(dvb->i2c_client_demod);
+ dvb_module_release(dvb->i2c_client_demod[0]);
return -ENODEV;
}
si2168_config.spectral_inversion = true;
addr = (dev->ts == PRIMARY_TS) ? 0x64 : 0x67;
- dvb->i2c_client_demod = dvb_module_probe("si2168", NULL,
+ dvb->i2c_client_demod[0] = dvb_module_probe("si2168", NULL,
&dev->i2c_adap[dev->def_i2c_bus],
addr, &si2168_config);
- if (!dvb->i2c_client_demod)
+ if (!dvb->i2c_client_demod[0])
return -ENODEV;
/* attach tuner */
adapter,
addr, &si2157_config);
if (!dvb->i2c_client_tuner) {
- dvb_module_release(dvb->i2c_client_demod);
+ dvb_module_release(dvb->i2c_client_demod[0]);
return -ENODEV;
}
lgdt3306a_config.i2c_adapter = &adapter;
addr = (dev->ts == PRIMARY_TS) ? 0x59 : 0x0e;
- dvb->i2c_client_demod = dvb_module_probe("lgdt3306a", NULL,
+ dvb->i2c_client_demod[0] = dvb_module_probe("lgdt3306a", NULL,
&dev->i2c_adap[dev->def_i2c_bus],
addr, &lgdt3306a_config);
- if (!dvb->i2c_client_demod)
+ if (!dvb->i2c_client_demod[0])
return -ENODEV;
/* attach tuner */
adapter,
addr, &si2157_config);
if (!dvb->i2c_client_tuner) {
- dvb_module_release(dvb->i2c_client_demod);
+ dvb_module_release(dvb->i2c_client_demod[0]);
return -ENODEV;
}
mxl692_config.fe = &dvb->fe[0];
addr = (dev->ts == PRIMARY_TS) ? 0x60 : 0x63;
- dvb->i2c_client_demod = dvb_module_probe("mxl692", NULL,
+ dvb->i2c_client_demod[0] = dvb_module_probe("mxl692", NULL,
&dev->i2c_adap[dev->def_i2c_bus],
addr, &mxl692_config);
- if (!dvb->i2c_client_demod)
+ if (!dvb->i2c_client_demod[0])
return -ENODEV;
return 0;
dev->dvb = dvb;
dvb->fe[0] = NULL;
dvb->fe[1] = NULL;
+ dvb->i2c_client_demod[0] = NULL;
+ dvb->i2c_client_demod[1] = NULL;
/* pre-allocate DVB usb transfer buffers */
if (dev->dvb_xfer_bulk) {
/* release I2C module bindings */
dvb_module_release(dvb->i2c_client_sec);
dvb_module_release(dvb->i2c_client_tuner);
- dvb_module_release(dvb->i2c_client_demod);
+ dvb_module_release(dvb->i2c_client_demod[1]);
+ dvb_module_release(dvb->i2c_client_demod[0]);
kfree(dvb);
dev->dvb = NULL;