aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/lh7a40x_udc.c
diff options
context:
space:
mode:
authorDavid Brownell <david-b@pacbell.net>2007-07-01 15:21:00 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2007-07-12 19:34:42 -0400
commitc67ab134ba9f83f9de86e58adfeaa14a9efa6e00 (patch)
treedf9022b4a38e955abbf254d71e00ac1fecce6420 /drivers/usb/gadget/lh7a40x_udc.c
parent9d8bab58b758cd5a96d368a8cc64111c9ab50407 (diff)
usb gadget stack: remove usb_ep_*_buffer(), part 2
This patch removes controller driver infrastructure which supported the now-removed usb_ep_{alloc,free}_buffer() calls. As can be seen, many of the implementations of this were broken to various degrees. Many didn't properly return dma-coherent mappings; those which did so were necessarily ugly because of bogosity in the underlying dma_free_coherent() calls ... which on many platforms can't be called from the same contexts (notably in_irq) from which their dma_alloc_coherent() sibling can be called. The main potential downside of removing this is that gadget drivers wouldn't have specific knowledge that the controller drivers have: endpoints that aren't dma-capable don't need any dma mappings at all. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/gadget/lh7a40x_udc.c')
-rw-r--r--drivers/usb/gadget/lh7a40x_udc.c27
1 files changed, 0 insertions, 27 deletions
diff --git a/drivers/usb/gadget/lh7a40x_udc.c b/drivers/usb/gadget/lh7a40x_udc.c
index a0a73c08a344..e78c2ddc1f88 100644
--- a/drivers/usb/gadget/lh7a40x_udc.c
+++ b/drivers/usb/gadget/lh7a40x_udc.c
@@ -75,10 +75,6 @@ static int lh7a40x_ep_enable(struct usb_ep *ep,
75static int lh7a40x_ep_disable(struct usb_ep *ep); 75static int lh7a40x_ep_disable(struct usb_ep *ep);
76static struct usb_request *lh7a40x_alloc_request(struct usb_ep *ep, gfp_t); 76static struct usb_request *lh7a40x_alloc_request(struct usb_ep *ep, gfp_t);
77static void lh7a40x_free_request(struct usb_ep *ep, struct usb_request *); 77static void lh7a40x_free_request(struct usb_ep *ep, struct usb_request *);
78static void *lh7a40x_alloc_buffer(struct usb_ep *ep, unsigned, dma_addr_t *,
79 gfp_t);
80static void lh7a40x_free_buffer(struct usb_ep *ep, void *, dma_addr_t,
81 unsigned);
82static int lh7a40x_queue(struct usb_ep *ep, struct usb_request *, gfp_t); 78static int lh7a40x_queue(struct usb_ep *ep, struct usb_request *, gfp_t);
83static int lh7a40x_dequeue(struct usb_ep *ep, struct usb_request *); 79static int lh7a40x_dequeue(struct usb_ep *ep, struct usb_request *);
84static int lh7a40x_set_halt(struct usb_ep *ep, int); 80static int lh7a40x_set_halt(struct usb_ep *ep, int);
@@ -104,9 +100,6 @@ static struct usb_ep_ops lh7a40x_ep_ops = {
104 .alloc_request = lh7a40x_alloc_request, 100 .alloc_request = lh7a40x_alloc_request,
105 .free_request = lh7a40x_free_request, 101 .free_request = lh7a40x_free_request,
106 102
107 .alloc_buffer = lh7a40x_alloc_buffer,
108 .free_buffer = lh7a40x_free_buffer,
109
110 .queue = lh7a40x_queue, 103 .queue = lh7a40x_queue,
111 .dequeue = lh7a40x_dequeue, 104 .dequeue = lh7a40x_dequeue,
112 105
@@ -1134,26 +1127,6 @@ static void lh7a40x_free_request(struct usb_ep *ep, struct usb_request *_req)
1134 kfree(req); 1127 kfree(req);
1135} 1128}
1136 1129
1137static void *lh7a40x_alloc_buffer(struct usb_ep *ep, unsigned bytes,
1138 dma_addr_t * dma, gfp_t gfp_flags)
1139{
1140 char *retval;
1141
1142 DEBUG("%s (%p, %d, %d)\n", __FUNCTION__, ep, bytes, gfp_flags);
1143
1144 retval = kmalloc(bytes, gfp_flags & ~(__GFP_DMA | __GFP_HIGHMEM));
1145 if (retval)
1146 *dma = virt_to_bus(retval);
1147 return retval;
1148}
1149
1150static void lh7a40x_free_buffer(struct usb_ep *ep, void *buf, dma_addr_t dma,
1151 unsigned bytes)
1152{
1153 DEBUG("%s, %p\n", __FUNCTION__, ep);
1154 kfree(buf);
1155}
1156
1157/** Queue one request 1130/** Queue one request
1158 * Kickstart transfer if needed 1131 * Kickstart transfer if needed
1159 * NOTE: Sets INDEX register 1132 * NOTE: Sets INDEX register