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

Commit bfd4500c authored by Antti Palosaari's avatar Antti Palosaari Committed by Mauro Carvalho Chehab
Browse files

[media] dvb-usb: prepare for multi-frontend support (MFE)



Change adapter FE pointer as array of FE pointers.

Signed-off-by: default avatarAntti Palosaari <crope@iki.fi>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 6d514774
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -815,7 +815,7 @@ static int af9005_frontend_attach(struct dvb_usb_adapter *adap)
			debug_dump(buf, 8, printk);
		}
	}
	adap->fe = af9005_fe_attach(adap->dev);
	adap->fe[0] = af9005_fe_attach(adap->dev);
	return 0;
}

+11 −11
Original line number Diff line number Diff line
@@ -1111,10 +1111,10 @@ static int af9015_af9013_frontend_attach(struct dvb_usb_adapter *adap)
	}

	/* attach demodulator */
	adap->fe = dvb_attach(af9013_attach, &af9015_af9013_config[adap->id],
	adap->fe[0] = dvb_attach(af9013_attach, &af9015_af9013_config[adap->id],
		&adap->dev->i2c_adap);

	return adap->fe == NULL ? -ENODEV : 0;
	return adap->fe[0] == NULL ? -ENODEV : 0;
}

static struct mt2060_config af9015_mt2060_config = {
@@ -1188,49 +1188,49 @@ static int af9015_tuner_attach(struct dvb_usb_adapter *adap)
	switch (af9015_af9013_config[adap->id].tuner) {
	case AF9013_TUNER_MT2060:
	case AF9013_TUNER_MT2060_2:
		ret = dvb_attach(mt2060_attach, adap->fe, &adap->dev->i2c_adap,
		ret = dvb_attach(mt2060_attach, adap->fe[0], &adap->dev->i2c_adap,
			&af9015_mt2060_config,
			af9015_config.mt2060_if1[adap->id])
			== NULL ? -ENODEV : 0;
		break;
	case AF9013_TUNER_QT1010:
	case AF9013_TUNER_QT1010A:
		ret = dvb_attach(qt1010_attach, adap->fe, &adap->dev->i2c_adap,
		ret = dvb_attach(qt1010_attach, adap->fe[0], &adap->dev->i2c_adap,
			&af9015_qt1010_config) == NULL ? -ENODEV : 0;
		break;
	case AF9013_TUNER_TDA18271:
		ret = dvb_attach(tda18271_attach, adap->fe, 0xc0,
		ret = dvb_attach(tda18271_attach, adap->fe[0], 0xc0,
			&adap->dev->i2c_adap,
			&af9015_tda18271_config) == NULL ? -ENODEV : 0;
		break;
	case AF9013_TUNER_TDA18218:
		ret = dvb_attach(tda18218_attach, adap->fe,
		ret = dvb_attach(tda18218_attach, adap->fe[0],
			&adap->dev->i2c_adap,
			&af9015_tda18218_config) == NULL ? -ENODEV : 0;
		break;
	case AF9013_TUNER_MXL5003D:
		ret = dvb_attach(mxl5005s_attach, adap->fe,
		ret = dvb_attach(mxl5005s_attach, adap->fe[0],
			&adap->dev->i2c_adap,
			&af9015_mxl5003_config) == NULL ? -ENODEV : 0;
		break;
	case AF9013_TUNER_MXL5005D:
	case AF9013_TUNER_MXL5005R:
		ret = dvb_attach(mxl5005s_attach, adap->fe,
		ret = dvb_attach(mxl5005s_attach, adap->fe[0],
			&adap->dev->i2c_adap,
			&af9015_mxl5005_config) == NULL ? -ENODEV : 0;
		break;
	case AF9013_TUNER_ENV77H11D5:
		ret = dvb_attach(dvb_pll_attach, adap->fe, 0xc0,
		ret = dvb_attach(dvb_pll_attach, adap->fe[0], 0xc0,
			&adap->dev->i2c_adap,
			DVB_PLL_TDA665X) == NULL ? -ENODEV : 0;
		break;
	case AF9013_TUNER_MC44S803:
		ret = dvb_attach(mc44s803_attach, adap->fe,
		ret = dvb_attach(mc44s803_attach, adap->fe[0],
			&adap->dev->i2c_adap,
			&af9015_mc44s803_config) == NULL ? -ENODEV : 0;
		break;
	case AF9013_TUNER_MXL5007T:
		ret = dvb_attach(mxl5007t_attach, adap->fe,
		ret = dvb_attach(mxl5007t_attach, adap->fe[0],
			&adap->dev->i2c_adap,
			0xc0, &af9015_mxl5007t_config) == NULL ? -ENODEV : 0;
		break;
+23 −23
Original line number Diff line number Diff line
@@ -488,13 +488,13 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
		/* E30 */

		/* attach demod */
		adap->fe = dvb_attach(mt352_attach, &anysee_mt352_config,
		adap->fe[0] = dvb_attach(mt352_attach, &anysee_mt352_config,
			&adap->dev->i2c_adap);
		if (adap->fe)
		if (adap->fe[0])
			break;

		/* attach demod */
		adap->fe = dvb_attach(zl10353_attach, &anysee_zl10353_config,
		adap->fe[0] = dvb_attach(zl10353_attach, &anysee_zl10353_config,
			&adap->dev->i2c_adap);

		break;
@@ -512,7 +512,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
			goto error;

		/* attach demod */
		adap->fe = dvb_attach(zl10353_attach, &anysee_zl10353_config,
		adap->fe[0] = dvb_attach(zl10353_attach, &anysee_zl10353_config,
			&adap->dev->i2c_adap);

		break;
@@ -525,7 +525,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
			goto error;

		/* attach demod */
		adap->fe = dvb_attach(tda10023_attach, &anysee_tda10023_config,
		adap->fe[0] = dvb_attach(tda10023_attach, &anysee_tda10023_config,
			&adap->dev->i2c_adap, 0x48);

		break;
@@ -538,7 +538,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
			goto error;

		/* attach demod */
		adap->fe = dvb_attach(cx24116_attach, &anysee_cx24116_config,
		adap->fe[0] = dvb_attach(cx24116_attach, &anysee_cx24116_config,
			&adap->dev->i2c_adap);

		break;
@@ -580,12 +580,12 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
			/* attach demod */
			if (tmp == 0xc7) {
				/* TDA18212 config */
				adap->fe = dvb_attach(zl10353_attach,
				adap->fe[0] = dvb_attach(zl10353_attach,
					&anysee_zl10353_tda18212_config2,
					&adap->dev->i2c_adap);
			} else {
				/* PLL config */
				adap->fe = dvb_attach(zl10353_attach,
				adap->fe[0] = dvb_attach(zl10353_attach,
					&anysee_zl10353_config,
					&adap->dev->i2c_adap);
			}
@@ -605,12 +605,12 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
			/* attach demod */
			if (tmp == 0xc7) {
				/* TDA18212 config */
				adap->fe = dvb_attach(tda10023_attach,
				adap->fe[0] = dvb_attach(tda10023_attach,
					&anysee_tda10023_tda18212_config,
					&adap->dev->i2c_adap, 0x48);
			} else {
				/* PLL config */
				adap->fe = dvb_attach(tda10023_attach,
				adap->fe[0] = dvb_attach(tda10023_attach,
					&anysee_tda10023_config,
					&adap->dev->i2c_adap, 0x48);
			}
@@ -647,7 +647,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
				goto error;

			/* attach demod */
			adap->fe = dvb_attach(zl10353_attach,
			adap->fe[0] = dvb_attach(zl10353_attach,
				&anysee_zl10353_tda18212_config,
				&adap->dev->i2c_adap);
		} else {
@@ -670,7 +670,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
				goto error;

			/* attach demod */
			adap->fe = dvb_attach(tda10023_attach,
			adap->fe[0] = dvb_attach(tda10023_attach,
				&anysee_tda10023_tda18212_config,
				&adap->dev->i2c_adap, 0x48);
		}
@@ -692,13 +692,13 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
			goto error;

		/* attach demod */
		adap->fe = dvb_attach(stv0900_attach, &anysee_stv0900_config,
		adap->fe[0] = dvb_attach(stv0900_attach, &anysee_stv0900_config,
			&adap->dev->i2c_adap, 0);

		break;
	}

	if (!adap->fe) {
	if (!adap->fe[0]) {
		/* we have no frontend :-( */
		ret = -ENODEV;
		err("Unsupported Anysee version. " \
@@ -720,7 +720,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
		/* E30 */

		/* attach tuner */
		fe = dvb_attach(dvb_pll_attach, adap->fe, (0xc2 >> 1),
		fe = dvb_attach(dvb_pll_attach, adap->fe[0], (0xc2 >> 1),
			NULL, DVB_PLL_THOMSON_DTT7579);

		break;
@@ -728,7 +728,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
		/* E30 Plus */

		/* attach tuner */
		fe = dvb_attach(dvb_pll_attach, adap->fe, (0xc2 >> 1),
		fe = dvb_attach(dvb_pll_attach, adap->fe[0], (0xc2 >> 1),
			&adap->dev->i2c_adap, DVB_PLL_THOMSON_DTT7579);

		break;
@@ -736,7 +736,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
		/* E30 C Plus */

		/* attach tuner */
		fe = dvb_attach(dvb_pll_attach, adap->fe, (0xc0 >> 1),
		fe = dvb_attach(dvb_pll_attach, adap->fe[0], (0xc0 >> 1),
			&adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A);

		break;
@@ -744,7 +744,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
		/* E30 S2 Plus */

		/* attach LNB controller */
		fe = dvb_attach(isl6423_attach, adap->fe, &adap->dev->i2c_adap,
		fe = dvb_attach(isl6423_attach, adap->fe[0], &adap->dev->i2c_adap,
			&anysee_isl6423_config);

		break;
@@ -775,7 +775,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
			goto error;

		/* attach tuner */
		fe = dvb_attach(tda18212_attach, adap->fe, &adap->dev->i2c_adap,
		fe = dvb_attach(tda18212_attach, adap->fe[0], &adap->dev->i2c_adap,
			&anysee_tda18212_config);
		if (fe)
			break;
@@ -786,7 +786,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
			goto error;

		/* attach tuner */
		fe = dvb_attach(dvb_pll_attach, adap->fe, (0xc0 >> 1),
		fe = dvb_attach(dvb_pll_attach, adap->fe[0], (0xc0 >> 1),
			&adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A);

		break;
@@ -801,7 +801,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
			goto error;

		/* attach tuner */
		fe = dvb_attach(tda18212_attach, adap->fe, &adap->dev->i2c_adap,
		fe = dvb_attach(tda18212_attach, adap->fe[0], &adap->dev->i2c_adap,
			&anysee_tda18212_config);

		break;
@@ -811,12 +811,12 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
		/* E7 PS2 */

		/* attach tuner */
		fe = dvb_attach(stv6110_attach, adap->fe,
		fe = dvb_attach(stv6110_attach, adap->fe[0],
			&anysee_stv6110_config, &adap->dev->i2c_adap);

		if (fe) {
			/* attach LNB controller */
			fe = dvb_attach(isl6423_attach, adap->fe,
			fe = dvb_attach(isl6423_attach, adap->fe[0],
				&adap->dev->i2c_adap, &anysee_isl6423_config);
		}

+3 −3
Original line number Diff line number Diff line
@@ -140,9 +140,9 @@ static struct zl10353_config au6610_zl10353_config = {

static int au6610_zl10353_frontend_attach(struct dvb_usb_adapter *adap)
{
	adap->fe = dvb_attach(zl10353_attach, &au6610_zl10353_config,
	adap->fe[0] = dvb_attach(zl10353_attach, &au6610_zl10353_config,
		&adap->dev->i2c_adap);
	if (adap->fe == NULL)
	if (adap->fe[0] == NULL)
		return -ENODEV;

	return 0;
@@ -155,7 +155,7 @@ static struct qt1010_config au6610_qt1010_config = {
static int au6610_qt1010_tuner_attach(struct dvb_usb_adapter *adap)
{
	return dvb_attach(qt1010_attach,
			  adap->fe, &adap->dev->i2c_adap,
			  adap->fe[0], &adap->dev->i2c_adap,
			  &au6610_qt1010_config) == NULL ? -ENODEV : 0;
}

+5 −5
Original line number Diff line number Diff line
@@ -910,16 +910,16 @@ static int az6027_frontend_attach(struct dvb_usb_adapter *adap)
	az6027_frontend_reset(adap);

	deb_info("adap = %p, dev = %p\n", adap, adap->dev);
	adap->fe = stb0899_attach(&az6027_stb0899_config, &adap->dev->i2c_adap);
	adap->fe[0] = stb0899_attach(&az6027_stb0899_config, &adap->dev->i2c_adap);

	if (adap->fe) {
	if (adap->fe[0]) {
		deb_info("found STB0899 DVB-S/DVB-S2 frontend @0x%02x", az6027_stb0899_config.demod_address);
		if (stb6100_attach(adap->fe, &az6027_stb6100_config, &adap->dev->i2c_adap)) {
		if (stb6100_attach(adap->fe[0], &az6027_stb6100_config, &adap->dev->i2c_adap)) {
			deb_info("found STB6100 DVB-S/DVB-S2 frontend @0x%02x", az6027_stb6100_config.tuner_address);
			adap->fe->ops.set_voltage = az6027_set_voltage;
			adap->fe[0]->ops.set_voltage = az6027_set_voltage;
			az6027_ci_init(adap);
		} else {
			adap->fe = NULL;
			adap->fe[0] = NULL;
		}
	} else
		warn("no front-end attached\n");
Loading