diff options
-rw-r--r-- | linux/drivers/media/dvb/dvb-usb/dtt200u.c | 1 | ||||
-rw-r--r-- | linux/drivers/media/dvb/dvb-usb/dvb-usb-urb.c | 3 | ||||
-rw-r--r-- | linux/drivers/media/dvb/dvb-usb/dvb-usb.h | 2 |
3 files changed, 6 insertions, 0 deletions
diff --git a/linux/drivers/media/dvb/dvb-usb/dtt200u.c b/linux/drivers/media/dvb/dvb-usb/dtt200u.c index d57ad0499..3b5785380 100644 --- a/linux/drivers/media/dvb/dvb-usb/dtt200u.c +++ b/linux/drivers/media/dvb/dvb-usb/dtt200u.c @@ -122,6 +122,7 @@ static struct dvb_usb_properties dtt200u_properties = { .init_rc = dtt200u_rc_init, .generic_bulk_ctrl_endpoint = 0x01, + .rw_delay_ms = 50, /* parameter for the MPEG2-data transfer */ .urb = { diff --git a/linux/drivers/media/dvb/dvb-usb/dvb-usb-urb.c b/linux/drivers/media/dvb/dvb-usb/dvb-usb-urb.c index 80b3ff91f..e5bff4157 100644 --- a/linux/drivers/media/dvb/dvb-usb/dvb-usb-urb.c +++ b/linux/drivers/media/dvb/dvb-usb/dvb-usb-urb.c @@ -39,6 +39,9 @@ int dvb_usb_generic_rw(struct dvb_usb_device *d, u8 *wbuf, u16 wlen, u8 *rbuf, /* an answer is expected, and no error before */ if (!ret && rbuf && rlen) { + if (d->props.rw_delay_ms) + msleep(d->props.rw_delay_ms); + ret = usb_bulk_msg(d->udev,usb_rcvbulkpipe(d->udev, d->props.generic_bulk_ctrl_endpoint),rbuf,rlen,&actlen, 2*HZ); diff --git a/linux/drivers/media/dvb/dvb-usb/dvb-usb.h b/linux/drivers/media/dvb/dvb-usb/dvb-usb.h index 8fdafd2b3..89cc0c5a0 100644 --- a/linux/drivers/media/dvb/dvb-usb/dvb-usb.h +++ b/linux/drivers/media/dvb/dvb-usb/dvb-usb.h @@ -100,6 +100,8 @@ struct dvb_usb_properties { /* endpoint for generic bulk read/write operations (used by many drivers for controlling the device) */ int generic_bulk_ctrl_endpoint; +/* delay between the two transfers of a read operation */ + int rw_delay_ms; /* MPEG2 TS transfer description */ struct { |