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

Commit 77eed219 authored by Michael Krufky's avatar Michael Krufky Committed by Mauro Carvalho Chehab
Browse files

[media] dvb-usb: refactor MFE code for individual streaming config per frontend



refactor MFE code to allow for individual streaming configuration
for each frontend

Signed-off-by: default avatarMichael Krufky <mkrufky@kernellabs.com>
Reviewed-by: default avatarAntti Palosaari <crope@iki.fi>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 4c66c920
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -127,6 +127,8 @@ static struct dvb_usb_device_properties a800_properties = {
	.num_adapters = 1,
	.num_adapters = 1,
	.adapter = {
	.adapter = {
		{
		{
		.num_frontends = 1,
		.fe = {{
			.caps = DVB_USB_ADAP_HAS_PID_FILTER | DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,
			.caps = DVB_USB_ADAP_HAS_PID_FILTER | DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,
			.pid_filter_count = 32,
			.pid_filter_count = 32,
			.streaming_ctrl   = dibusb2_0_streaming_ctrl,
			.streaming_ctrl   = dibusb2_0_streaming_ctrl,
@@ -147,7 +149,7 @@ static struct dvb_usb_device_properties a800_properties = {
					}
					}
				}
				}
			},
			},

		}},
			.size_of_priv     = sizeof(struct dibusb_state),
			.size_of_priv     = sizeof(struct dibusb_state),
		},
		},
	},
	},
+4 −1
Original line number Original line Diff line number Diff line
@@ -815,7 +815,7 @@ static int af9005_frontend_attach(struct dvb_usb_adapter *adap)
			debug_dump(buf, 8, printk);
			debug_dump(buf, 8, printk);
		}
		}
	}
	}
	adap->fe[0] = af9005_fe_attach(adap->dev);
	adap->fe_adap[0].fe = af9005_fe_attach(adap->dev);
	return 0;
	return 0;
}
}


@@ -999,6 +999,8 @@ static struct dvb_usb_device_properties af9005_properties = {
	.num_adapters = 1,
	.num_adapters = 1,
	.adapter = {
	.adapter = {
		    {
		    {
		    .num_frontends = 1,
		    .fe = {{
		     .caps =
		     .caps =
		     DVB_USB_ADAP_HAS_PID_FILTER |
		     DVB_USB_ADAP_HAS_PID_FILTER |
		     DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,
		     DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,
@@ -1018,6 +1020,7 @@ static struct dvb_usb_device_properties af9005_properties = {
					       }
					       }
				      }
				      }
				},
				},
		     }},
		     }
		     }
		    },
		    },
	.power_ctrl = af9005_power_ctrl,
	.power_ctrl = af9005_power_ctrl,
+31 −13
Original line number Original line Diff line number Diff line
@@ -861,13 +861,13 @@ static int af9015_read_config(struct usb_device *udev)
	for (i = 0; i < af9015_properties_count; i++) {
	for (i = 0; i < af9015_properties_count; i++) {
		/* USB1.1 set smaller buffersize and disable 2nd adapter */
		/* USB1.1 set smaller buffersize and disable 2nd adapter */
		if (udev->speed == USB_SPEED_FULL) {
		if (udev->speed == USB_SPEED_FULL) {
			af9015_properties[i].adapter[0].stream.u.bulk.buffersize
			af9015_properties[i].adapter[0].fe[0].stream.u.bulk.buffersize
				= TS_USB11_FRAME_SIZE;
				= TS_USB11_FRAME_SIZE;
			/* disable 2nd adapter because we don't have
			/* disable 2nd adapter because we don't have
			   PID-filters */
			   PID-filters */
			af9015_config.dual_mode = 0;
			af9015_config.dual_mode = 0;
		} else {
		} else {
			af9015_properties[i].adapter[0].stream.u.bulk.buffersize
			af9015_properties[i].adapter[0].fe[0].stream.u.bulk.buffersize
				= TS_USB20_FRAME_SIZE;
				= TS_USB20_FRAME_SIZE;
		}
		}
	}
	}
@@ -1113,10 +1113,10 @@ static int af9015_af9013_frontend_attach(struct dvb_usb_adapter *adap)
	}
	}


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


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


static struct mt2060_config af9015_mt2060_config = {
static struct mt2060_config af9015_mt2060_config = {
@@ -1190,49 +1190,49 @@ static int af9015_tuner_attach(struct dvb_usb_adapter *adap)
	switch (af9015_af9013_config[adap->id].tuner) {
	switch (af9015_af9013_config[adap->id].tuner) {
	case AF9013_TUNER_MT2060:
	case AF9013_TUNER_MT2060:
	case AF9013_TUNER_MT2060_2:
	case AF9013_TUNER_MT2060_2:
		ret = dvb_attach(mt2060_attach, adap->fe[0], &adap->dev->i2c_adap,
		ret = dvb_attach(mt2060_attach, adap->fe_adap[0].fe, &adap->dev->i2c_adap,
			&af9015_mt2060_config,
			&af9015_mt2060_config,
			af9015_config.mt2060_if1[adap->id])
			af9015_config.mt2060_if1[adap->id])
			== NULL ? -ENODEV : 0;
			== NULL ? -ENODEV : 0;
		break;
		break;
	case AF9013_TUNER_QT1010:
	case AF9013_TUNER_QT1010:
	case AF9013_TUNER_QT1010A:
	case AF9013_TUNER_QT1010A:
		ret = dvb_attach(qt1010_attach, adap->fe[0], &adap->dev->i2c_adap,
		ret = dvb_attach(qt1010_attach, adap->fe_adap[0].fe, &adap->dev->i2c_adap,
			&af9015_qt1010_config) == NULL ? -ENODEV : 0;
			&af9015_qt1010_config) == NULL ? -ENODEV : 0;
		break;
		break;
	case AF9013_TUNER_TDA18271:
	case AF9013_TUNER_TDA18271:
		ret = dvb_attach(tda18271_attach, adap->fe[0], 0xc0,
		ret = dvb_attach(tda18271_attach, adap->fe_adap[0].fe, 0xc0,
			&adap->dev->i2c_adap,
			&adap->dev->i2c_adap,
			&af9015_tda18271_config) == NULL ? -ENODEV : 0;
			&af9015_tda18271_config) == NULL ? -ENODEV : 0;
		break;
		break;
	case AF9013_TUNER_TDA18218:
	case AF9013_TUNER_TDA18218:
		ret = dvb_attach(tda18218_attach, adap->fe[0],
		ret = dvb_attach(tda18218_attach, adap->fe_adap[0].fe,
			&adap->dev->i2c_adap,
			&adap->dev->i2c_adap,
			&af9015_tda18218_config) == NULL ? -ENODEV : 0;
			&af9015_tda18218_config) == NULL ? -ENODEV : 0;
		break;
		break;
	case AF9013_TUNER_MXL5003D:
	case AF9013_TUNER_MXL5003D:
		ret = dvb_attach(mxl5005s_attach, adap->fe[0],
		ret = dvb_attach(mxl5005s_attach, adap->fe_adap[0].fe,
			&adap->dev->i2c_adap,
			&adap->dev->i2c_adap,
			&af9015_mxl5003_config) == NULL ? -ENODEV : 0;
			&af9015_mxl5003_config) == NULL ? -ENODEV : 0;
		break;
		break;
	case AF9013_TUNER_MXL5005D:
	case AF9013_TUNER_MXL5005D:
	case AF9013_TUNER_MXL5005R:
	case AF9013_TUNER_MXL5005R:
		ret = dvb_attach(mxl5005s_attach, adap->fe[0],
		ret = dvb_attach(mxl5005s_attach, adap->fe_adap[0].fe,
			&adap->dev->i2c_adap,
			&adap->dev->i2c_adap,
			&af9015_mxl5005_config) == NULL ? -ENODEV : 0;
			&af9015_mxl5005_config) == NULL ? -ENODEV : 0;
		break;
		break;
	case AF9013_TUNER_ENV77H11D5:
	case AF9013_TUNER_ENV77H11D5:
		ret = dvb_attach(dvb_pll_attach, adap->fe[0], 0xc0,
		ret = dvb_attach(dvb_pll_attach, adap->fe_adap[0].fe, 0xc0,
			&adap->dev->i2c_adap,
			&adap->dev->i2c_adap,
			DVB_PLL_TDA665X) == NULL ? -ENODEV : 0;
			DVB_PLL_TDA665X) == NULL ? -ENODEV : 0;
		break;
		break;
	case AF9013_TUNER_MC44S803:
	case AF9013_TUNER_MC44S803:
		ret = dvb_attach(mc44s803_attach, adap->fe[0],
		ret = dvb_attach(mc44s803_attach, adap->fe_adap[0].fe,
			&adap->dev->i2c_adap,
			&adap->dev->i2c_adap,
			&af9015_mc44s803_config) == NULL ? -ENODEV : 0;
			&af9015_mc44s803_config) == NULL ? -ENODEV : 0;
		break;
		break;
	case AF9013_TUNER_MXL5007T:
	case AF9013_TUNER_MXL5007T:
		ret = dvb_attach(mxl5007t_attach, adap->fe[0],
		ret = dvb_attach(mxl5007t_attach, adap->fe_adap[0].fe,
			&adap->dev->i2c_adap,
			&adap->dev->i2c_adap,
			0xc0, &af9015_mxl5007t_config) == NULL ? -ENODEV : 0;
			0xc0, &af9015_mxl5007t_config) == NULL ? -ENODEV : 0;
		break;
		break;
@@ -1306,6 +1306,8 @@ static struct dvb_usb_device_properties af9015_properties[] = {
		.num_adapters = 2,
		.num_adapters = 2,
		.adapter = {
		.adapter = {
			{
			{
			.num_frontends = 1,
			.fe = {{
				.caps = DVB_USB_ADAP_HAS_PID_FILTER |
				.caps = DVB_USB_ADAP_HAS_PID_FILTER |
				DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,
				DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,


@@ -1321,8 +1323,11 @@ static struct dvb_usb_device_properties af9015_properties[] = {
					.count = 6,
					.count = 6,
					.endpoint = 0x84,
					.endpoint = 0x84,
				},
				},
			}},
			},
			},
			{
			{
			.num_frontends = 1,
			.fe = {{
				.frontend_attach =
				.frontend_attach =
					af9015_af9013_frontend_attach,
					af9015_af9013_frontend_attach,
				.tuner_attach    = af9015_tuner_attach,
				.tuner_attach    = af9015_tuner_attach,
@@ -1337,6 +1342,7 @@ static struct dvb_usb_device_properties af9015_properties[] = {
						}
						}
					}
					}
				},
				},
			}},
			}
			}
		},
		},


@@ -1434,6 +1440,8 @@ static struct dvb_usb_device_properties af9015_properties[] = {
		.num_adapters = 2,
		.num_adapters = 2,
		.adapter = {
		.adapter = {
			{
			{
			.num_frontends = 1,
			.fe = {{
				.caps = DVB_USB_ADAP_HAS_PID_FILTER |
				.caps = DVB_USB_ADAP_HAS_PID_FILTER |
				DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,
				DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,


@@ -1449,8 +1457,11 @@ static struct dvb_usb_device_properties af9015_properties[] = {
					.count = 6,
					.count = 6,
					.endpoint = 0x84,
					.endpoint = 0x84,
				},
				},
			}},
			},
			},
			{
			{
			.num_frontends = 1,
			.fe = {{
				.frontend_attach =
				.frontend_attach =
					af9015_af9013_frontend_attach,
					af9015_af9013_frontend_attach,
				.tuner_attach    = af9015_tuner_attach,
				.tuner_attach    = af9015_tuner_attach,
@@ -1465,6 +1476,7 @@ static struct dvb_usb_device_properties af9015_properties[] = {
						}
						}
					}
					}
				},
				},
			}},
			}
			}
		},
		},


@@ -1551,6 +1563,8 @@ static struct dvb_usb_device_properties af9015_properties[] = {
		.num_adapters = 2,
		.num_adapters = 2,
		.adapter = {
		.adapter = {
			{
			{
			.num_frontends = 1,
			.fe = {{
				.caps = DVB_USB_ADAP_HAS_PID_FILTER |
				.caps = DVB_USB_ADAP_HAS_PID_FILTER |
				DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,
				DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,


@@ -1566,8 +1580,11 @@ static struct dvb_usb_device_properties af9015_properties[] = {
					.count = 6,
					.count = 6,
					.endpoint = 0x84,
					.endpoint = 0x84,
				},
				},
			}},
			},
			},
			{
			{
			.num_frontends = 1,
			.fe = {{
				.frontend_attach =
				.frontend_attach =
					af9015_af9013_frontend_attach,
					af9015_af9013_frontend_attach,
				.tuner_attach    = af9015_tuner_attach,
				.tuner_attach    = af9015_tuner_attach,
@@ -1582,6 +1599,7 @@ static struct dvb_usb_device_properties af9015_properties[] = {
						}
						}
					}
					}
				},
				},
			}},
			}
			}
		},
		},


+43 −27
Original line number Original line Diff line number Diff line
@@ -575,7 +575,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
	};
	};


	/* detect hardware only once */
	/* detect hardware only once */
	if (adap->fe[0] == NULL) {
	if (adap->fe_adap[0].fe == NULL) {
		/* Check which hardware we have.
		/* Check which hardware we have.
		 * We must do this call two times to get reliable values (hw bug).
		 * We must do this call two times to get reliable values (hw bug).
		 */
		 */
@@ -595,7 +595,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
	}
	}


	/* set current frondend ID for devices having two frondends */
	/* set current frondend ID for devices having two frondends */
	if (adap->fe[0])
	if (adap->fe_adap[0].fe)
		state->fe_id++;
		state->fe_id++;


	switch (state->hw) {
	switch (state->hw) {
@@ -606,13 +606,13 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
			break;
			break;


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


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


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


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


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


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


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


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


		break;
		break;
@@ -707,13 +707,13 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
			/* attach demod */
			/* attach demod */
			if (tmp == 0xc7) {
			if (tmp == 0xc7) {
				/* TDA18212 config */
				/* TDA18212 config */
				adap->fe[state->fe_id] = dvb_attach(
				adap->fe_adap[state->fe_id].fe = dvb_attach(
					tda10023_attach,
					tda10023_attach,
					&anysee_tda10023_tda18212_config,
					&anysee_tda10023_tda18212_config,
					&adap->dev->i2c_adap, 0x48);
					&adap->dev->i2c_adap, 0x48);
			} else {
			} else {
				/* PLL config */
				/* PLL config */
				adap->fe[state->fe_id] = dvb_attach(
				adap->fe_adap[state->fe_id].fe = dvb_attach(
					tda10023_attach,
					tda10023_attach,
					&anysee_tda10023_config,
					&anysee_tda10023_config,
					&adap->dev->i2c_adap, 0x48);
					&adap->dev->i2c_adap, 0x48);
@@ -734,13 +734,13 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
			/* attach demod */
			/* attach demod */
			if (tmp == 0xc7) {
			if (tmp == 0xc7) {
				/* TDA18212 config */
				/* TDA18212 config */
				adap->fe[state->fe_id] = dvb_attach(
				adap->fe_adap[state->fe_id].fe = dvb_attach(
					zl10353_attach,
					zl10353_attach,
					&anysee_zl10353_tda18212_config2,
					&anysee_zl10353_tda18212_config2,
					&adap->dev->i2c_adap);
					&adap->dev->i2c_adap);
			} else {
			} else {
				/* PLL config */
				/* PLL config */
				adap->fe[state->fe_id] = dvb_attach(
				adap->fe_adap[state->fe_id].fe = dvb_attach(
					zl10353_attach,
					zl10353_attach,
					&anysee_zl10353_config,
					&anysee_zl10353_config,
					&adap->dev->i2c_adap);
					&adap->dev->i2c_adap);
@@ -772,7 +772,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
				goto error;
				goto error;


			/* attach demod */
			/* attach demod */
			adap->fe[state->fe_id] = dvb_attach(tda10023_attach,
			adap->fe_adap[state->fe_id].fe = dvb_attach(tda10023_attach,
				&anysee_tda10023_tda18212_config,
				&anysee_tda10023_tda18212_config,
				&adap->dev->i2c_adap, 0x48);
				&adap->dev->i2c_adap, 0x48);
		} else {
		} else {
@@ -789,7 +789,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
				goto error;
				goto error;


			/* attach demod */
			/* attach demod */
			adap->fe[state->fe_id] = dvb_attach(zl10353_attach,
			adap->fe_adap[state->fe_id].fe = dvb_attach(zl10353_attach,
				&anysee_zl10353_tda18212_config,
				&anysee_zl10353_tda18212_config,
				&adap->dev->i2c_adap);
				&adap->dev->i2c_adap);
		}
		}
@@ -814,13 +814,13 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
			goto error;
			goto error;


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


		break;
		break;
	}
	}


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


@@ -1029,6 +1029,7 @@ static struct dvb_usb_device_properties anysee_properties = {
		{
		{
		.num_frontends    = 2,
		.num_frontends    = 2,
		.frontend_ctrl    = anysee_frontend_ctrl,
		.frontend_ctrl    = anysee_frontend_ctrl,
		.fe = {{
			.streaming_ctrl   = anysee_streaming_ctrl,
			.streaming_ctrl   = anysee_streaming_ctrl,
			.frontend_attach  = anysee_frontend_attach,
			.frontend_attach  = anysee_frontend_attach,
			.tuner_attach     = anysee_tuner_attach,
			.tuner_attach     = anysee_tuner_attach,
@@ -1042,6 +1043,21 @@ static struct dvb_usb_device_properties anysee_properties = {
					}
					}
				}
				}
			},
			},
		}, {
			.streaming_ctrl   = anysee_streaming_ctrl,
			.frontend_attach  = anysee_frontend_attach,
			.tuner_attach     = anysee_tuner_attach,
			.stream = {
				.type = USB_BULK,
				.count = 8,
				.endpoint = 0x82,
				.u = {
					.bulk = {
						.buffersize = (16*512),
					}
				}
			},
		}},
		}
		}
	},
	},


+6 −3
Original line number Original line 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)
static int au6610_zl10353_frontend_attach(struct dvb_usb_adapter *adap)
{
{
	adap->fe[0] = dvb_attach(zl10353_attach, &au6610_zl10353_config,
	adap->fe_adap[0].fe = dvb_attach(zl10353_attach, &au6610_zl10353_config,
		&adap->dev->i2c_adap);
		&adap->dev->i2c_adap);
	if (adap->fe[0] == NULL)
	if (adap->fe_adap[0].fe == NULL)
		return -ENODEV;
		return -ENODEV;


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


@@ -204,6 +204,8 @@ static struct dvb_usb_device_properties au6610_properties = {
	.num_adapters = 1,
	.num_adapters = 1,
	.adapter = {
	.adapter = {
		{
		{
		.num_frontends = 1,
		.fe = {{
			.frontend_attach  = au6610_zl10353_frontend_attach,
			.frontend_attach  = au6610_zl10353_frontend_attach,
			.tuner_attach     = au6610_qt1010_tuner_attach,
			.tuner_attach     = au6610_qt1010_tuner_attach,


@@ -219,6 +221,7 @@ static struct dvb_usb_device_properties au6610_properties = {
					}
					}
				}
				}
			},
			},
		}},
		}
		}
	},
	},


Loading