Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae9902da authored by Manu Abraham's avatar Manu Abraham Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (9417): DVB_ATTACH for STB0899, STB6100, TDA8261

parent e0ee77ac
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -97,6 +97,21 @@ struct stb0899_config {
	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
+17 −3
Original line number Diff line number Diff line
@@ -94,8 +94,22 @@ struct stb6100_state {
	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 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
+14 −0
Original line number Diff line number Diff line
@@ -15,8 +15,22 @@ struct tda8261_config {
	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,
					   const struct tda8261_config *config,
					   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
+2 −2
Original line number Diff line number Diff line
@@ -1603,8 +1603,8 @@ static void frontend_init(struct budget_av *budget_av)
	case SUBID_DVBS2_KNC1:
	case SUBID_DVBS2_KNC1_OEM:
		budget_av->reinitialise_demod = 1;
		if ((fe = stb0899_attach(&knc1_dvbs2_config, &budget_av->budget.i2c_adap)))
			tda8261_attach(fe, &sd1878c_config, &budget_av->budget.i2c_adap);
		if ((fe = dvb_attach(stb0899_attach, &knc1_dvbs2_config, &budget_av->budget.i2c_adap)))
			dvb_attach(tda8261_attach, fe, &sd1878c_config, &budget_av->budget.i2c_adap);

		break;
	case SUBID_DVBS_CINERGY1200:
+6 −9
Original line number Diff line number Diff line
@@ -1768,20 +1768,17 @@ static void frontend_init(struct budget_ci *budget_ci)
		break;

	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 (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(stb6100_attach, budget_ci->budget.dvb_frontend, &tt3200_stb6100_config, &budget_ci->budget.i2c_adap)) {
				if (!dvb_attach(lnbp21_attach, budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, 0, 0)) {
					printk("%s: No LNBP21 found!\n", __FUNCTION__);
					if (budget_ci->budget.dvb_frontend->ops.tuner_ops.release)
						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);
					dvb_frontend_detach(budget_ci->budget.dvb_frontend);
					budget_ci->budget.dvb_frontend = NULL;
				}
			} else {
				if (budget_ci->budget.dvb_frontend->ops.release)
					budget_ci->budget.dvb_frontend->ops.release(budget_ci->budget.dvb_frontend);
					dvb_frontend_detach(budget_ci->budget.dvb_frontend);
					budget_ci->budget.dvb_frontend = NULL;
			}
		}
		break;