aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/dvb-usb/dvb-usb-urb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/dvb/dvb-usb/dvb-usb-urb.c')
-rw-r--r--drivers/media/dvb/dvb-usb/dvb-usb-urb.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-urb.c b/drivers/media/dvb/dvb-usb/dvb-usb-urb.c
index bb46ba6a3573..53a5c30b51b2 100644
--- a/drivers/media/dvb/dvb-usb/dvb-usb-urb.c
+++ b/drivers/media/dvb/dvb-usb/dvb-usb-urb.c
@@ -82,16 +82,28 @@ static void dvb_usb_data_complete_204(struct usb_data_stream *stream, u8 *buffer
82 82
83int dvb_usb_adapter_stream_init(struct dvb_usb_adapter *adap) 83int dvb_usb_adapter_stream_init(struct dvb_usb_adapter *adap)
84{ 84{
85 adap->stream.udev = adap->dev->udev; 85 int i, ret = 0;
86 if (adap->props.caps & DVB_USB_ADAP_RECEIVES_204_BYTE_TS) 86 for (i = 0; i < adap->props.num_frontends; i++) {
87 adap->stream.complete = dvb_usb_data_complete_204; 87
88 else 88 adap->fe_adap[i].stream.udev = adap->dev->udev;
89 adap->stream.complete = dvb_usb_data_complete; 89 if (adap->props.fe[i].caps & DVB_USB_ADAP_RECEIVES_204_BYTE_TS)
90 adap->stream.user_priv = adap; 90 adap->fe_adap[i].stream.complete =
91 return usb_urb_init(&adap->stream, &adap->props.stream); 91 dvb_usb_data_complete_204;
92 else
93 adap->fe_adap[i].stream.complete = dvb_usb_data_complete;
94 adap->fe_adap[i].stream.user_priv = adap;
95 ret = usb_urb_init(&adap->fe_adap[i].stream,
96 &adap->props.fe[i].stream);
97 if (ret < 0)
98 break;
99 }
100 return ret;
92} 101}
93 102
94int dvb_usb_adapter_stream_exit(struct dvb_usb_adapter *adap) 103int dvb_usb_adapter_stream_exit(struct dvb_usb_adapter *adap)
95{ 104{
96 return usb_urb_exit(&adap->stream); 105 int i;
106 for (i = 0; i < adap->props.num_frontends; i++)
107 usb_urb_exit(&adap->fe_adap[i].stream);
108 return 0;
97} 109}