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.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-urb.c b/drivers/media/dvb/dvb-usb/dvb-usb-urb.c
index 0aed7fd60623..5cef12a07f72 100644
--- a/drivers/media/dvb/dvb-usb/dvb-usb-urb.c
+++ b/drivers/media/dvb/dvb-usb/dvb-usb-urb.c
@@ -71,9 +71,19 @@ static void dvb_usb_data_complete(struct usb_data_stream *stream, u8 *buffer, si
71 dvb_dmx_swfilter(&adap->demux, buffer, length); 71 dvb_dmx_swfilter(&adap->demux, buffer, length);
72} 72}
73 73
74static void dvb_usb_data_complete_204(struct usb_data_stream *stream, u8 *buffer, size_t length)
75{
76 struct dvb_usb_adapter *adap = stream->user_priv;
77 if (adap->feedcount > 0 && adap->state & DVB_USB_ADAP_STATE_DVB)
78 dvb_dmx_swfilter_204(&adap->demux, buffer, length);
79}
80
74int dvb_usb_adapter_stream_init(struct dvb_usb_adapter *adap) 81int dvb_usb_adapter_stream_init(struct dvb_usb_adapter *adap)
75{ 82{
76 adap->stream.udev = adap->dev->udev; 83 adap->stream.udev = adap->dev->udev;
84 if (adap->props.caps & DVB_USB_ADAP_RECEIVES_204_BYTE_TS)
85 adap->stream.complete = dvb_usb_data_complete_204;
86 else
77 adap->stream.complete = dvb_usb_data_complete; 87 adap->stream.complete = dvb_usb_data_complete;
78 adap->stream.user_priv = adap; 88 adap->stream.user_priv = adap;
79 return usb_urb_init(&adap->stream, &adap->props.stream); 89 return usb_urb_init(&adap->stream, &adap->props.stream);