Dear Stefan Herbrechtsmeier,

> The commit 5dd95cf93dfffa1d19a1928990852aac9f55b9d9 'usb_storage:
> Fix EHCI "out of buffer pointers" with CD-ROM' introduce a bug in
> usb_storage as it wrongly assumes that every transfer can use 4k
> per qt_buffer. This is wrong if the start address of the data
> is not 4k aligned and leads to 'EHCI timed out on TD' messages
> because of 'out of buffer pointers' in ehci_td_buffer function.
> 
> Cc: Marek Vasut <ma...@denx.de>
> Signed-off-by: Stefan Herbrechtsmeier <ste...@herbrechtsmeier.net>

Ok, first I have to admit I broke my promise to look into this ASAP, sorry 
about 
it :-(

Just curious, but shouldn't it be ((4096 * 5) / dev_desc->blk_sz) - 1 ?

> ---
>  common/usb_storage.c |    6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/common/usb_storage.c b/common/usb_storage.c
> index faad237..612a553 100644
> --- a/common/usb_storage.c
> +++ b/common/usb_storage.c
> @@ -1416,10 +1416,10 @@ int usb_stor_get_info(struct usb_device *dev,
> struct us_data *ss, USB_STOR_PRINTF("partype: %d\n", dev_desc->part_type);
> 
>       /*
> -      * The U-Boot EHCI driver cannot handle more than 4096 * 5 bytes in a
> -      * transfer without running itself out of qt_buffers.
> +      * The U-Boot EHCI driver cannot handle more than 4096 * 4 bytes in a
> +      * unaligned transfer without running itself out of qt_buffers.
>        */
> -     ss->max_xfer_blk = (4096 * 5) / dev_desc->blksz;
> +     ss->max_xfer_blk = (4096 * 4) / dev_desc->blksz;
> 
>       init_part(dev_desc);

Best regards,
Marek Vasut
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to