aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/adm5120/patches-2.6.24/911-usb_centralize_eremoteio_handling.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/adm5120/patches-2.6.24/911-usb_centralize_eremoteio_handling.patch')
-rw-r--r--target/linux/adm5120/patches-2.6.24/911-usb_centralize_eremoteio_handling.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/target/linux/adm5120/patches-2.6.24/911-usb_centralize_eremoteio_handling.patch b/target/linux/adm5120/patches-2.6.24/911-usb_centralize_eremoteio_handling.patch
new file mode 100644
index 0000000000..b4e0fb089f
--- /dev/null
+++ b/target/linux/adm5120/patches-2.6.24/911-usb_centralize_eremoteio_handling.patch
@@ -0,0 +1,30 @@
+Index: linux-2.6.24/drivers/usb/host/adm5120-q.c
+===================================================================
+--- linux-2.6.24.orig/drivers/usb/host/adm5120-q.c
++++ linux-2.6.24/drivers/usb/host/adm5120-q.c
+@@ -28,25 +28,10 @@ __releases(ahcd->lock)
+ __acquires(ahcd->lock)
+ {
+ urb_priv_free(ahcd, urb->hcpriv);
+- urb->hcpriv = NULL;
+
+ spin_lock(&urb->lock);
+ if (likely(urb->status == -EINPROGRESS))
+ urb->status = 0;
+-
+- /* report short control reads right even though the data TD always
+- * has TD_R set. (much simpler, but creates the 1-td limit.)
+- */
+- if (unlikely(urb->transfer_flags & URB_SHORT_NOT_OK)
+- && unlikely(usb_pipecontrol(urb->pipe))
+- && urb->actual_length < urb->transfer_buffer_length
+- && usb_pipein(urb->pipe)
+- && urb->status == 0) {
+- urb->status = -EREMOTEIO;
+-#ifdef ADMHC_VERBOSE_DEBUG
+- urb_print(ahcd, urb, "SHORT", usb_pipeout(urb->pipe));
+-#endif
+- }
+ spin_unlock(&urb->lock);
+
+ switch (usb_pipetype(urb->pipe)) {