]> git.ipfire.org Git - people/ms/u-boot.git/commit
usb: ci_udc: parse QTD before over-writing it
authorStephen Warren <swarren@nvidia.com>
Tue, 13 May 2014 16:51:54 +0000 (10:51 -0600)
committerMarek Vasut <marex@denx.de>
Wed, 14 May 2014 22:21:30 +0000 (00:21 +0200)
commit8630c1c7e395e946ca6f98e2500e86e14f2c56bb
tree636714494b1942d089684233d0991068b8026ef5
parenta4539a2aa7bde003d4318b1b2e21fd217cc2899f
usb: ci_udc: parse QTD before over-writing it

ci_udc only allocates a single QTD structure per EP. All data needs to be
extracted from the DTD prior to calling ci_ep_submit_next_request(), since
that fills the QTD with next transaction's parameters. Fix
handle_ep_complete() to extract the transaction (remaining) length before
kicking off the next transaction.

In practice, this only causes writes to UMS devices to fail for me. I may
have tested the final versions of my previous ci_udc patch only with
reads. More recently, I had patches applied locally that allocated a QTD
per USB request rather than per USB EP, although since that doesn't give
any performance benefit, I'm dropping those.

Fixes: 2813006fecda ("usb: ci_udc: allow multiple buffer allocs per ep")
Signed-off-by: Stephen Warren <swarren@nvidia.com>
drivers/usb/gadget/ci_udc.c