[U-Boot] [PATCH] usb: fix usb_stor_read/write on DM
Marek Vasut
marex at denx.de
Thu Jul 13 13:38:32 UTC 2017
On 07/13/2017 03:35 PM, Masahiro Yamada wrote:
> Prior to DM, we could not enable different types of USB controllers
> at the same time. DM was supposed to loosen the limitation. We can
> compile drivers, but not working.
>
> For example, if EHCI is enabled, xHCI fails as follows:
>
> => usb read 82000000 0 2000
>
> USB read: device 0 block # 0, count 8192 ... WARN halted endpoint, queueing URB anyway.
> Unexpected XHCI event TRB, skipping... (3fb54010 00000001 13000000 01008401)
> BUG: failure at drivers/usb/host/xhci-ring.c:489/abort_td()!
> BUG!
> ### ERROR ### Please RESET the board ###
>
> The cause of the error seems #ifdef CONFIG_USB_EHCI_HCD in
> common/usb_storage.c
>
> To fix the problem, align USB_MAX_XFER_BLK to the lowest common
> denominator if CONFIG_DM is defined.
Meh, this is a workaround and a pretty bad one. This should be a
per-controller or even per-storage-device(?) knob. Opinions ?
> Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
> ---
>
> common/usb_storage.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/common/usb_storage.c b/common/usb_storage.c
> index df0b05730879..fa0cf68c3353 100644
> --- a/common/usb_storage.c
> +++ b/common/usb_storage.c
> @@ -100,7 +100,7 @@ struct us_data {
> trans_cmnd transport; /* transport routine */
> };
>
> -#ifdef CONFIG_USB_EHCI_HCD
> +#if !defined(CONFIG_DM_USB) && defined(CONFIG_USB_EHCI_HCD)
> /*
> * The U-Boot EHCI driver can handle any transfer length as long as there is
> * enough free heap space left, but the SCSI READ(10) and WRITE(10) commands are
>
--
Best regards,
Marek Vasut
More information about the U-Boot
mailing list