]> pilppa.com Git - linux-2.6-omap-h63xx.git/commit
musb_hdrc: Cannot stall an endpoint 0 control transfer from a data stage cal lback...
authorDavid Brownell <david-b@pacbell.net>
Fri, 24 Aug 2007 05:36:07 +0000 (22:36 -0700)
committerTony Lindgren <tony@atomide.com>
Fri, 24 Aug 2007 05:36:07 +0000 (22:36 -0700)
commit5dd8c56c0bb1aaadbf6540de8350161c7a9f7034
tree911428459dc5038d624306bce0e88631a6519346
parent5523992fcff6787342ad8dd81f909b66462eb69b
musb_hdrc: Cannot stall an endpoint 0 control transfer from a data stage cal lback function

Gadget drivers are supposed to be able to cause EP0 protocol stalls by
issuing an appropriate request from the callback issued when the DATA
stage completes ... not only from the setup() callback or from some
thread that decides how to handle the request.

This fix is based on a patch from Geoffrey Tam <geoffrey@evertz.com>,
and addresses that by updating the endpoint state AFTER the callback
is issued, providing the correct IRQ-acking CSR to the halt() so it
can just mask in the SEND_STALL bit, and ensuring that only the CSR
is still written only once even on this new code path.

Also includes a few small cleanups:  avoid "this" variable name, and
pack device bitfields more efficiently (wasting less space).

Allegedly helps file_storage on Davinci.
drivers/usb/musb/musb_core.h
drivers/usb/musb/musb_gadget_ep0.c