usb_storage: Fix EHCI "out of buffer pointers" with CD-ROM
authorKyle Moffett <Kyle.D.Moffett@boeing.com>
Wed, 21 Dec 2011 07:08:12 +0000 (07:08 +0000)
committerWolfgang Denk <wd@denx.de>
Thu, 5 Jan 2012 19:10:38 +0000 (20:10 +0100)
commit5dd95cf93dfffa1d19a1928990852aac9f55b9d9
tree0c9b07b340e7ac07ea2eb0d151744bd4d05fef4c
parent46236b1407946aaed319551357703d487f82572e
usb_storage: Fix EHCI "out of buffer pointers" with CD-ROM

When performing large bulk reads from a CD or DVD using the U-Boot
usb_storage driver, it generates requests of up to 20 blocks at a time.

With a standard 512-byte block size, that is 10240 bytes and within the
limit of U-Boot's EHCI driver (maximum 5 pages at 4k per page).

Unfortunately CD-ROM media has a 2048-byte blocksize, resulting in a
maximum transfer size of 40960 bytes, which does not fit.

Since the EHCI specification is impossibly obtuse and far beyond my
comprehension, I chose to dynamically compute the limit based on the
blocksize.

Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
common/usb_storage.c