[U-Boot] [PATCH] Lower USB_MAX_XFER_BLK to 32767 for trimslice

Marek Vasut marex at denx.de
Sat May 28 14:02:47 CEST 2016


On 05/28/2016 10:06 AM, Nicolas Chauvet wrote:
> I'm experiencing an issue when loading a generic distro initramfs
> on trimslice-pro (with ssd using usb-ehci) with the default value of
> 65535 for USB_MAX_XFER_BLK
>  EHCI timed out on TD - token=0x80008d80
> 
> As adviced by Marek on IRC, using a lower value for
> USB_MAX_XFER_BLK allows to load the file
> 
> Tested values on tegra20-trimslice:
> 4095 ok
> 32767 ok
> 32768 timeout
> 36864 timeout
> 40960 timeout
> 49150 timeout
> 
> v2:

This should go below diffstat, so it's not part of the commit message

> - Allow to override if undefined when using CONFIG_USB_EHCI
> - Only change the value for trimslice

This will annoy trimslice users then ;-)

> - Update description

Going back to my comment about V1:

If you could add some quirk table into u-boot instead and lower this
number only for those buggy devices, that'd be much better.

> Signed-off-by: Nicolas Chauvet <kwizart at gmail.com>
> ---
>  common/usb_storage.c        | 2 ++
>  include/configs/trimslice.h | 2 ++
>  2 files changed, 4 insertions(+)
> 
> diff --git a/common/usb_storage.c b/common/usb_storage.c
> index 7e6e52d..aea0477 100644
> --- a/common/usb_storage.c
> +++ b/common/usb_storage.c
> @@ -106,7 +106,9 @@ struct us_data {
>   * enough free heap space left, but the SCSI READ(10) and WRITE(10) commands are
>   * limited to 65535 blocks.
>   */
> +#ifndef USB_MAX_XFER_BLK	 /* Allows a quirk for broken devices */
>  #define USB_MAX_XFER_BLK	65535
> +#endif

This has multiple problems:
a) This override is added only for EHCI while it is generic and would
   work for all USB revisions
b) Any such override should be added to Kconfig instead
c) Tweaking this value will negatively impact multiple devices only to
   fix problems on a small amount of crappy devices (see above)

>  #else
>  #define USB_MAX_XFER_BLK	20
>  #endif
> diff --git a/include/configs/trimslice.h b/include/configs/trimslice.h
> index b761640..3a2fe87 100644
> --- a/include/configs/trimslice.h
> +++ b/include/configs/trimslice.h
> @@ -43,6 +43,8 @@
>  #define CONFIG_USB_EHCI
>  #define CONFIG_USB_EHCI_TEGRA
>  #define CONFIG_USB_STORAGE
> +/* Quirk for broken usb-ehci on trimslice */
> +#define USB_MAX_XFER_BLK 32767
>  
>  /* USB networking support */
>  #define CONFIG_USB_HOST_ETHER
> 


-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list