usb: ci_udc: pre-allocate ep0 req
authorStephen Warren <swarren@nvidia.com>
Thu, 29 May 2014 20:53:02 +0000 (14:53 -0600)
committerMarek Vasut <marex@denx.de>
Sun, 1 Jun 2014 17:22:40 +0000 (19:22 +0200)
commita2d8f929857b7bc50528114c29e48a99cbcee1f1
tree73efb517d9edb37c45ee59aff6e81326038158b4
parent054731b09e1944cdb130b755ac0f6c188920e98a
usb: ci_udc: pre-allocate ep0 req

Allocate ep0's USB request object when the UDC driver is probed. This
solves a couple of issues in the current code:

a) A request object always exists for ep0. Prior to this patch, if setup
transactions arrived in an unexpected order, handle_setup() would need
to reply to a setup transaction before any ep0 usb_req was created.

This issue was introduced in commit 2813006fecda "usb: ci_udc: allow
multiple buffer allocs per ep."

b) handle_ep_complete no longer /has/ to queue the ep0 request again
after every single request completion. This is currently required, since
handle_setup() assumes it can find some request object in ep0's request
queue. This patch doesn't actually stop handle_ep_complete() from always
requeueing the request, but the next patch will.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
drivers/usb/gadget/ci_udc.c
drivers/usb/gadget/ci_udc.h