aboutsummaryrefslogtreecommitdiff
path: root/drivers/media/dvb/dvb-usb/anysee.c
diff options
context:
space:
mode:
authorMichael Krufky <mkrufky@kernellabs.com>2011-09-06 09:31:57 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-09-06 14:21:42 -0300
commit77eed219fed5a913f59329cc846420fdeab0150f (patch)
treeabcbcb0a970fb7b81efb11e229151adce78e166b /drivers/media/dvb/dvb-usb/anysee.c
parent4c66c9205c0788e18eb09d482461aa2f551ee046 (diff)
[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: Michael Krufky <mkrufky@kernellabs.com> Reviewed-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/dvb-usb/anysee.c')
-rw-r--r--drivers/media/dvb/dvb-usb/anysee.c70
1 files changed, 43 insertions, 27 deletions
diff --git a/drivers/media/dvb/dvb-usb/anysee.c b/drivers/media/dvb/dvb-usb/anysee.c
index d4d2420155b4..5f2278b73ee9 100644
--- a/drivers/media/dvb/dvb-usb/anysee.c
+++ b/drivers/media/dvb/dvb-usb/anysee.c
@@ -575,7 +575,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
};
/* detect hardware only once */
- if (adap->fe[0] == NULL) {
+ if (adap->fe_adap[0].fe == NULL) {
/* Check which hardware we have.
* 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 */
- if (adap->fe[0])
+ if (adap->fe_adap[0].fe)
state->fe_id++;
switch (state->hw) {
@@ -606,13 +606,13 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
break;
/* 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);
- if (adap->fe[0])
+ if (adap->fe_adap[0].fe)
break;
/* 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);
break;
@@ -633,7 +633,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
goto error;
/* 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);
break;
@@ -649,7 +649,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
goto error;
/* 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);
break;
@@ -665,7 +665,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
goto error;
/* 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);
break;
@@ -707,13 +707,13 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
/* attach demod */
if (tmp == 0xc7) {
/* TDA18212 config */
- adap->fe[state->fe_id] = dvb_attach(
+ adap->fe_adap[state->fe_id].fe = dvb_attach(
tda10023_attach,
&anysee_tda10023_tda18212_config,
&adap->dev->i2c_adap, 0x48);
} else {
/* PLL config */
- adap->fe[state->fe_id] = dvb_attach(
+ adap->fe_adap[state->fe_id].fe = dvb_attach(
tda10023_attach,
&anysee_tda10023_config,
&adap->dev->i2c_adap, 0x48);
@@ -734,13 +734,13 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
/* attach demod */
if (tmp == 0xc7) {
/* TDA18212 config */
- adap->fe[state->fe_id] = dvb_attach(
+ adap->fe_adap[state->fe_id].fe = dvb_attach(
zl10353_attach,
&anysee_zl10353_tda18212_config2,
&adap->dev->i2c_adap);
} else {
/* PLL config */
- adap->fe[state->fe_id] = dvb_attach(
+ adap->fe_adap[state->fe_id].fe = dvb_attach(
zl10353_attach,
&anysee_zl10353_config,
&adap->dev->i2c_adap);
@@ -772,7 +772,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
goto error;
/* 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,
&adap->dev->i2c_adap, 0x48);
} else {
@@ -789,7 +789,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
goto error;
/* 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,
&adap->dev->i2c_adap);
}
@@ -814,13 +814,13 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
goto error;
/* 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);
break;
}
- if (!adap->fe[0]) {
+ if (!adap->fe_adap[0].fe) {
/* we have no frontend :-( */
ret = -ENODEV;
err("Unsupported Anysee version. " \
@@ -842,7 +842,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
/* E30 */
/* 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);
break;
@@ -850,7 +850,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
/* E30 Plus */
/* 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);
break;
@@ -858,7 +858,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
/* E30 C Plus */
/* 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);
break;
@@ -866,7 +866,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
/* E30 S2 Plus */
/* 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);
break;
@@ -883,7 +883,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
goto error;
/* 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);
if (fe)
break;
@@ -894,7 +894,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
goto error;
/* 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,
DVB_PLL_SAMSUNG_DTOS403IH102A);
@@ -910,7 +910,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
goto error;
/* 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);
break;
@@ -920,12 +920,12 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
/* E7 PS2 */
/* 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);
if (fe) {
/* 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);
}
@@ -1027,8 +1027,9 @@ static struct dvb_usb_device_properties anysee_properties = {
.num_adapters = 1,
.adapter = {
{
- .num_frontends = 2,
- .frontend_ctrl = anysee_frontend_ctrl,
+ .num_frontends = 2,
+ .frontend_ctrl = anysee_frontend_ctrl,
+ .fe = {{
.streaming_ctrl = anysee_streaming_ctrl,
.frontend_attach = anysee_frontend_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),
+ }
+ }
+ },
+ }},
}
},