mirror of https://gitee.com/openkylin/linux.git
V4L/DVB (9417): DVB_ATTACH for STB0899, STB6100, TDA8261
Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
e0ee77acb1
commit
ae9902da96
|
@ -97,6 +97,21 @@ struct stb0899_config {
|
||||||
int (*tuner_set_rfsiggain)(struct dvb_frontend *fe, u32 rf_gain);
|
int (*tuner_set_rfsiggain)(struct dvb_frontend *fe, u32 rf_gain);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct dvb_frontend *stb0899_attach(struct stb0899_config *config, struct i2c_adapter *i2c);
|
#if defined(CONFIG_DVB_STB0899) || (defined(CONFIG_DVB_STB0899_MODULE) && defined(MODULE))
|
||||||
|
|
||||||
|
extern struct dvb_frontend *stb0899_attach(struct stb0899_config *config,
|
||||||
|
struct i2c_adapter *i2c);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
static inline struct dvb_frontend *stb0899_attach(struct stb0899_config *config,
|
||||||
|
struct i2c_adapter *i2c)
|
||||||
|
{
|
||||||
|
printk(KERN_WARNING "%s: Driver disabled by Kconfig\n", __func__);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //CONFIG_DVB_STB0899
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -94,8 +94,22 @@ struct stb6100_state {
|
||||||
u32 reference;
|
u32 reference;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dvb_frontend *stb6100_attach(struct dvb_frontend *fe,
|
#if defined(CONFIG_DVB_STB6100) || (defined(CONFIG_DVB_STB6100_MODULE) && defined(MODULE))
|
||||||
|
|
||||||
|
extern struct dvb_frontend *stb6100_attach(struct dvb_frontend *fe,
|
||||||
struct stb6100_config *config,
|
struct stb6100_config *config,
|
||||||
struct i2c_adapter *i2c);
|
struct i2c_adapter *i2c);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
static inline struct dvb_frontend *stb6100_attach(struct dvb_frontend *fe,
|
||||||
|
struct stb6100_config *config,
|
||||||
|
struct i2c_adapter *i2c)
|
||||||
|
{
|
||||||
|
printk(KERN_WARNING "%s: Driver disabled by Kconfig\n", __func__);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //CONFIG_DVB_STB6100
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -15,8 +15,22 @@ struct tda8261_config {
|
||||||
enum tda8261_step step_size;
|
enum tda8261_step step_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(CONFIG_DVB_TDA8261) || (defined(CONFIG_DVB_TDA8261_MODULE) && defined(MODULE))
|
||||||
|
|
||||||
extern struct dvb_frontend *tda8261_attach(struct dvb_frontend *fe,
|
extern struct dvb_frontend *tda8261_attach(struct dvb_frontend *fe,
|
||||||
const struct tda8261_config *config,
|
const struct tda8261_config *config,
|
||||||
struct i2c_adapter *i2c);
|
struct i2c_adapter *i2c);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
static inline struct dvb_frontend *tda8261_attach(struct dvb_frontend *fe,
|
||||||
|
const struct tda8261_config *config,
|
||||||
|
struct i2c_adapter *i2c)
|
||||||
|
{
|
||||||
|
printk(KERN_WARNING "%s: Driver disabled by Kconfig\n", __func__);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //CONFIG_DVB_TDA8261
|
||||||
|
|
||||||
#endif// __TDA8261_H
|
#endif// __TDA8261_H
|
||||||
|
|
|
@ -1603,8 +1603,8 @@ static void frontend_init(struct budget_av *budget_av)
|
||||||
case SUBID_DVBS2_KNC1:
|
case SUBID_DVBS2_KNC1:
|
||||||
case SUBID_DVBS2_KNC1_OEM:
|
case SUBID_DVBS2_KNC1_OEM:
|
||||||
budget_av->reinitialise_demod = 1;
|
budget_av->reinitialise_demod = 1;
|
||||||
if ((fe = stb0899_attach(&knc1_dvbs2_config, &budget_av->budget.i2c_adap)))
|
if ((fe = dvb_attach(stb0899_attach, &knc1_dvbs2_config, &budget_av->budget.i2c_adap)))
|
||||||
tda8261_attach(fe, &sd1878c_config, &budget_av->budget.i2c_adap);
|
dvb_attach(tda8261_attach, fe, &sd1878c_config, &budget_av->budget.i2c_adap);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case SUBID_DVBS_CINERGY1200:
|
case SUBID_DVBS_CINERGY1200:
|
||||||
|
|
|
@ -1768,20 +1768,17 @@ static void frontend_init(struct budget_ci *budget_ci)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1019: // TT S2-3200 PCI
|
case 0x1019: // TT S2-3200 PCI
|
||||||
budget_ci->budget.dvb_frontend = stb0899_attach(&tt3200_config, &budget_ci->budget.i2c_adap);
|
budget_ci->budget.dvb_frontend = dvb_attach(stb0899_attach, &tt3200_config, &budget_ci->budget.i2c_adap);
|
||||||
if (budget_ci->budget.dvb_frontend) {
|
if (budget_ci->budget.dvb_frontend) {
|
||||||
if (stb6100_attach(budget_ci->budget.dvb_frontend, &tt3200_stb6100_config, &budget_ci->budget.i2c_adap)) {
|
if (dvb_attach(stb6100_attach, budget_ci->budget.dvb_frontend, &tt3200_stb6100_config, &budget_ci->budget.i2c_adap)) {
|
||||||
if (!lnbp21_attach(budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, 0, 0)) {
|
if (!dvb_attach(lnbp21_attach, budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, 0, 0)) {
|
||||||
printk("%s: No LNBP21 found!\n", __FUNCTION__);
|
printk("%s: No LNBP21 found!\n", __FUNCTION__);
|
||||||
if (budget_ci->budget.dvb_frontend->ops.tuner_ops.release)
|
dvb_frontend_detach(budget_ci->budget.dvb_frontend);
|
||||||
budget_ci->budget.dvb_frontend->ops.tuner_ops.release(budget_ci->budget.dvb_frontend);
|
|
||||||
if (budget_ci->budget.dvb_frontend->ops.release)
|
|
||||||
budget_ci->budget.dvb_frontend->ops.release(budget_ci->budget.dvb_frontend);
|
|
||||||
budget_ci->budget.dvb_frontend = NULL;
|
budget_ci->budget.dvb_frontend = NULL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (budget_ci->budget.dvb_frontend->ops.release)
|
dvb_frontend_detach(budget_ci->budget.dvb_frontend);
|
||||||
budget_ci->budget.dvb_frontend->ops.release(budget_ci->budget.dvb_frontend);
|
budget_ci->budget.dvb_frontend = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue