summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux/drivers/media/dvb/dvb-usb/dtt200u.c1
-rw-r--r--linux/drivers/media/dvb/dvb-usb/dvb-usb-urb.c3
-rw-r--r--linux/drivers/media/dvb/dvb-usb/dvb-usb.h2
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 {