diff options
Diffstat (limited to 'drivers/media/dvb/dvb-usb/dvb-usb-urb.c')
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb-usb-urb.c | 10 |
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 | ||
74 | static 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 | |||
74 | int dvb_usb_adapter_stream_init(struct dvb_usb_adapter *adap) | 81 | int 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); |