diff options
Diffstat (limited to 'drivers/usb/gadget/goku_udc.c')
-rw-r--r-- | drivers/usb/gadget/goku_udc.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/usb/gadget/goku_udc.c b/drivers/usb/gadget/goku_udc.c index 5af70fcce139..e1dfd32dc805 100644 --- a/drivers/usb/gadget/goku_udc.c +++ b/drivers/usb/gadget/goku_udc.c | |||
@@ -235,6 +235,7 @@ static void ep_reset(struct goku_udc_regs __iomem *regs, struct goku_ep *ep) | |||
235 | 235 | ||
236 | ep->ep.maxpacket = MAX_FIFO_SIZE; | 236 | ep->ep.maxpacket = MAX_FIFO_SIZE; |
237 | ep->desc = NULL; | 237 | ep->desc = NULL; |
238 | ep->ep.desc = NULL; | ||
238 | ep->stopped = 1; | 239 | ep->stopped = 1; |
239 | ep->irqs = 0; | 240 | ep->irqs = 0; |
240 | ep->dma = 0; | 241 | ep->dma = 0; |
@@ -310,12 +311,9 @@ done(struct goku_ep *ep, struct goku_request *req, int status) | |||
310 | status = req->req.status; | 311 | status = req->req.status; |
311 | 312 | ||
312 | dev = ep->dev; | 313 | dev = ep->dev; |
313 | if (req->mapped) { | 314 | |
314 | pci_unmap_single(dev->pdev, req->req.dma, req->req.length, | 315 | if (ep->dma) |
315 | ep->is_in ? PCI_DMA_TODEVICE : PCI_DMA_FROMDEVICE); | 316 | usb_gadget_unmap_request(&dev->gadget, &req->req, ep->is_in); |
316 | req->req.dma = DMA_ADDR_INVALID; | ||
317 | req->mapped = 0; | ||
318 | } | ||
319 | 317 | ||
320 | #ifndef USB_TRACE | 318 | #ifndef USB_TRACE |
321 | if (status && status != -ESHUTDOWN) | 319 | if (status && status != -ESHUTDOWN) |
@@ -736,10 +734,11 @@ goku_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t gfp_flags) | |||
736 | return -EBUSY; | 734 | return -EBUSY; |
737 | 735 | ||
738 | /* set up dma mapping in case the caller didn't */ | 736 | /* set up dma mapping in case the caller didn't */ |
739 | if (ep->dma && _req->dma == DMA_ADDR_INVALID) { | 737 | if (ep->dma) { |
740 | _req->dma = pci_map_single(dev->pdev, _req->buf, _req->length, | 738 | status = usb_gadget_map_request(&dev->gadget, &req->req, |
741 | ep->is_in ? PCI_DMA_TODEVICE : PCI_DMA_FROMDEVICE); | 739 | ep->is_in); |
742 | req->mapped = 1; | 740 | if (status) |
741 | return status; | ||
743 | } | 742 | } |
744 | 743 | ||
745 | #ifdef USB_TRACE | 744 | #ifdef USB_TRACE |