summaryrefslogtreecommitdiff
path: root/recipes-bsp/u-boot-mainline/files/0003-usb-limit-USB_MAX_XFER_BLK-to-256.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-bsp/u-boot-mainline/files/0003-usb-limit-USB_MAX_XFER_BLK-to-256.patch')
-rw-r--r--recipes-bsp/u-boot-mainline/files/0003-usb-limit-USB_MAX_XFER_BLK-to-256.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/recipes-bsp/u-boot-mainline/files/0003-usb-limit-USB_MAX_XFER_BLK-to-256.patch b/recipes-bsp/u-boot-mainline/files/0003-usb-limit-USB_MAX_XFER_BLK-to-256.patch
new file mode 100644
index 0000000..58526af
--- /dev/null
+++ b/recipes-bsp/u-boot-mainline/files/0003-usb-limit-USB_MAX_XFER_BLK-to-256.patch
@@ -0,0 +1,67 @@
+From 70e00d1f20c331a1da991abc7b36f0f6a20751dc Mon Sep 17 00:00:00 2001
+From: Peng Fan <peng.fan@nxp.com>
+Date: Mon, 6 Jun 2016 13:53:43 +0800
+Subject: [PATCH 03/19] usb: limit USB_MAX_XFER_BLK to 256
+
+For Some USB mass storage devices, such as:
+"
+ - Kingston DataTraveler 2.0 001D7D06CF09B04199C7B3EA
+ - Class: (from Interface) Mass Storage
+ - PacketSize: 64 Configurations: 1
+ - Vendor: 0x0930 Product 0x6545 Version 1.16
+"
+When `usb read 0x80000000 0 0x2000`, we met
+"EHCI timed out on TD - token=0x80008d80".
+
+The devices does not support scsi VPD page, we are not able
+to get the maximum transfer length for READ(10)/WRITE(10).
+
+So we limit this to 256 blocks as READ(6).
+
+Signed-off-by: Peng Fan <peng.fan@nxp.com>
+Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
+(cherry picked from commit df0052575b2bc9d66ae73584768e1a457ed5d914)
+
+Series-to: u-boot@lists.denx.de
+
+Series-prefix: RFC
+
+Series-version: 3
+
+Series-changes: 2
+- Fixed spelling in comment as suggested by Igor.
+
+Series-changes: 3
+- Drop the reference to the NXP internal MLK-xxx tracking number as
+ suggested by Peng.
+
+Commit-notes:
+This comes from NXP's downstream and has proven to tremendously improve
+the situation with those odd USB mass storage aka memory sticks. This is
+why I post it here asking whether or not this may be something
+benefiting more people. Any feedback and suggestions are welcome.
+END
+---
+ common/usb_storage.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/common/usb_storage.c b/common/usb_storage.c
+index 8c889bb1a6..4e284645f5 100644
+--- a/common/usb_storage.c
++++ b/common/usb_storage.c
+@@ -949,7 +949,11 @@ static void usb_stor_set_max_xfer_blk(struct usb_device *udev,
+ * there is enough free heap space left, but the SCSI READ(10) and
+ * WRITE(10) commands are limited to 65535 blocks.
+ */
+- blk = USHRT_MAX;
++ /*
++ * Some USB mass storage devices have issues, limiting this to 256
++ * fixes this.
++ */
++ blk = 256;
+ #else
+ blk = 20;
+ #endif
+--
+2.14.5
+