diff options
author | Felipe Balbi <balbi@ti.com> | 2011-02-16 12:40:05 +0200 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2011-02-17 21:11:46 +0200 |
commit | ad1adb89a0d9410345d573b6995a1fa9f9b7c74a (patch) | |
tree | b07349993d6eec5dff875f5517b0c79667906a8b /drivers/usb/musb/musb_gadget.h | |
parent | 63eed2b52494e35aaf38ac2db537d6ea0a55b0da (diff) |
usb: musb: gadget: do not poke with gadget's list_head
struct usb_request's list_head is supposed to be
used only by gadget drivers, but musb is abusing
that. Give struct musb_request its own list_head
and prevent musb from poking into other driver's
business.
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/musb/musb_gadget.h')
-rw-r--r-- | drivers/usb/musb/musb_gadget.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/usb/musb/musb_gadget.h b/drivers/usb/musb/musb_gadget.h index a55354fbccf..66b7c5e0fb4 100644 --- a/drivers/usb/musb/musb_gadget.h +++ b/drivers/usb/musb/musb_gadget.h @@ -35,6 +35,8 @@ #ifndef __MUSB_GADGET_H #define __MUSB_GADGET_H +#include <linux/list.h> + enum buffer_map_state { UN_MAPPED = 0, PRE_MAPPED, @@ -43,6 +45,7 @@ enum buffer_map_state { struct musb_request { struct usb_request request; + struct list_head list; struct musb_ep *ep; struct musb *musb; u8 tx; /* endpoint direction */ @@ -94,13 +97,13 @@ static inline struct musb_ep *to_musb_ep(struct usb_ep *ep) return ep ? container_of(ep, struct musb_ep, end_point) : NULL; } -static inline struct usb_request *next_request(struct musb_ep *ep) +static inline struct musb_request *next_request(struct musb_ep *ep) { struct list_head *queue = &ep->req_list; if (list_empty(queue)) return NULL; - return container_of(queue->next, struct usb_request, list); + return container_of(queue->next, struct musb_request, list); } extern void musb_g_tx(struct musb *musb, u8 epnum); |