aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/adm5120/files/drivers
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2008-01-17 20:35:38 +0000
committerGabor Juhos <juhosg@openwrt.org>2008-01-17 20:35:38 +0000
commit6700252dd1fc29d11dc2a8ed31562ffb7ad50a33 (patch)
tree79d48524d93291b14de3af8dd4491ec894071a93 /target/linux/adm5120/files/drivers
parent1ceb95ed59a9f409a02f88dd7ada339f1d4aa806 (diff)
downloadupstream-6700252dd1fc29d11dc2a8ed31562ffb7ad50a33.tar.gz
upstream-6700252dd1fc29d11dc2a8ed31562ffb7ad50a33.tar.bz2
upstream-6700252dd1fc29d11dc2a8ed31562ffb7ad50a33.zip
USB driver: fix a bug in isochronous transfers
SVN-Revision: 10219
Diffstat (limited to 'target/linux/adm5120/files/drivers')
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c2
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-q.c5
2 files changed, 5 insertions, 2 deletions
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c b/target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c
index c75b87af45..725583cc83 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c
+++ b/target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c
@@ -45,7 +45,7 @@
#include "../core/hcd.h"
#include "../core/hub.h"
-#define DRIVER_VERSION "0.16.0"
+#define DRIVER_VERSION "0.16.1"
#define DRIVER_AUTHOR "Gabor Juhos <juhosg at openwrt.org>"
#define DRIVER_DESC "ADMtek USB 1.1 Host Controller Driver"
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120-q.c b/target/linux/adm5120/files/drivers/usb/host/adm5120-q.c
index 9d33bc31b8..52bd1e4e82 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120-q.c
+++ b/target/linux/adm5120/files/drivers/usb/host/adm5120-q.c
@@ -546,7 +546,10 @@ static void td_submit_urb(struct admhcd *ahcd, struct urb *urb)
* we could often reduce the number of TDs here.
*/
case PIPE_ISOCHRONOUS:
- info = TD_SCC_NOTACCESSED;
+ info = is_out
+ ? TD_T_CARRY | TD_SCC_NOTACCESSED | TD_DP_OUT
+ : TD_T_CARRY | TD_SCC_NOTACCESSED | TD_DP_IN;
+
for (cnt = 0; cnt < urb->number_of_packets; cnt++) {
int frame = urb->start_frame;