summaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/dvb-usb/dvb_usb_urb.c
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2012-05-28 21:34:15 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-08-04 07:56:23 -0300
commit3256cdef6ea09776e587b23240b74ead733fb11c (patch)
treee4ff98089c83a547d643d3215ad6c1bc7c8ab5bc /drivers/media/dvb/dvb-usb/dvb_usb_urb.c
parent39831f094fb703412c23a1178d28e1d8d1aa4d18 (diff)
[media] dvb_usb_v2: move (struct usb_data_stream) to one level up
Move stream from the frontend to adapter. There could be only one stream per adapter. One adapter can has multiple frontends but only one can stream at the time. Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/dvb-usb/dvb_usb_urb.c')
-rw-r--r--drivers/media/dvb/dvb-usb/dvb_usb_urb.c54
1 files changed, 25 insertions, 29 deletions
diff --git a/drivers/media/dvb/dvb-usb/dvb_usb_urb.c b/drivers/media/dvb/dvb-usb/dvb_usb_urb.c
index 903f77afb14..8200e0983f0 100644
--- a/drivers/media/dvb/dvb-usb/dvb_usb_urb.c
+++ b/drivers/media/dvb/dvb-usb/dvb_usb_urb.c
@@ -93,43 +93,39 @@ static void dvb_usb_data_complete_raw(struct usb_data_stream *stream,
int dvb_usb_adapter_stream_init(struct dvb_usb_adapter *adap)
{
- int i, ret = 0;
+ int ret;
struct usb_data_stream_properties stream_props;
- for (i = 0; i < adap->props.num_frontends; i++) {
- adap->fe_adap[i].stream.udev = adap->dev->udev;
- if (adap->props.fe[i].caps & DVB_USB_ADAP_RECEIVES_204_BYTE_TS)
- adap->fe_adap[i].stream.complete =
- dvb_usb_data_complete_204;
- else
- if (adap->props.fe[i].caps & DVB_USB_ADAP_RECEIVES_RAW_PAYLOAD)
- adap->fe_adap[i].stream.complete =
- dvb_usb_data_complete_raw;
- else
- adap->fe_adap[i].stream.complete = dvb_usb_data_complete;
- adap->fe_adap[i].stream.user_priv = adap;
-
- /* resolve USB stream configuration */
- if (adap->dev->props.get_usb_stream_config) {
- ret = adap->dev->props.get_usb_stream_config(NULL,
- &stream_props);
- if (ret < 0)
- break;
- } else {
- stream_props = adap->props.fe[i].stream;
- }
+ /*
+ * FIXME: We should config demux callback for each time streaming is
+ * started. Same for the USB data stream config.
+ */
+
+ adap->stream.udev = adap->dev->udev;
+ if (adap->props.fe[0].caps & DVB_USB_ADAP_RECEIVES_204_BYTE_TS)
+ adap->stream.complete = dvb_usb_data_complete_204;
+ else if (adap->props.fe[0].caps & DVB_USB_ADAP_RECEIVES_RAW_PAYLOAD)
+ adap->stream.complete = dvb_usb_data_complete_raw;
+ else
+ adap->stream.complete = dvb_usb_data_complete;
- ret = usb_urb_init(&adap->fe_adap[i].stream, &stream_props);
+ adap->stream.user_priv = adap;
+
+ /* resolve USB stream configuration */
+ if (adap->dev->props.get_usb_stream_config) {
+ ret = adap->dev->props.get_usb_stream_config(NULL,
+ &stream_props);
if (ret < 0)
- break;
+ return ret;
+ } else {
+ stream_props = adap->props.fe[0].stream;
}
- return ret;
+
+ return usb_urb_init(&adap->stream, &stream_props);
}
int dvb_usb_adapter_stream_exit(struct dvb_usb_adapter *adap)
{
- int i;
- for (i = 0; i < adap->props.num_frontends; i++)
- usb_urb_exit(&adap->fe_adap[i].stream);
+ usb_urb_exit(&adap->stream);
return 0;
}