diff options
author | Hemant Kumar <hemantk@codeaurora.org> | 2016-04-14 13:04:01 -0700 |
---|---|---|
committer | Jeevan Shriram <jshriram@codeaurora.org> | 2016-04-22 15:04:18 -0700 |
commit | 99e000989b409c6183ec8f012c019c5c499aab8a (patch) | |
tree | effbfac998d0c2b52385268beb8b411822ca3de0 /drivers | |
parent | 599b6b32a0681200ad943c13eeee98f0f1829ff4 (diff) |
usb: gadget: f_gsi: Allocate dma memory using gadget device's parent device
Use "gadget->dev.parent" instead of "&gadget->dev" in the first argument
of dma_zalloc_coherent() because the parent has a udc controller's device
pointer. Otherwise, iommu functions are not called in ARM environment and
allocation is failing.
CRs-Fixed: 1003784
Change-Id: I2ea75b533f857189856840e437a96891eea5699c
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/usb/gadget/function/f_gsi.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/usb/gadget/function/f_gsi.c b/drivers/usb/gadget/function/f_gsi.c index 5a4aeca225d8..5ff80dc7d12d 100644 --- a/drivers/usb/gadget/function/f_gsi.c +++ b/drivers/usb/gadget/function/f_gsi.c @@ -2143,7 +2143,7 @@ skip_string_id_alloc: dev_dbg(&cdev->gadget->dev, "%zu %zu\n", gsi->d_port.in_request.buf_len, gsi->d_port.in_request.num_bufs); gsi->d_port.in_request.buf_base_addr = - dma_zalloc_coherent(&cdev->gadget->dev, len, + dma_zalloc_coherent(cdev->gadget->dev.parent, len, &gsi->d_port.in_request.dma, GFP_KERNEL); if (!gsi->d_port.in_request.buf_base_addr) { dev_err(&cdev->gadget->dev, @@ -2162,7 +2162,7 @@ skip_string_id_alloc: gsi->d_port.out_request.buf_len, gsi->d_port.out_request.num_bufs); gsi->d_port.out_request.buf_base_addr = - dma_zalloc_coherent(&cdev->gadget->dev, len, + dma_zalloc_coherent(cdev->gadget->dev.parent, len, &gsi->d_port.out_request.dma, GFP_KERNEL); if (!gsi->d_port.out_request.buf_base_addr) { dev_err(&cdev->gadget->dev, @@ -2241,11 +2241,11 @@ fail: if (gsi->d_port.in_ep && gsi->d_port.in_ep->desc) gsi->d_port.in_ep->driver_data = NULL; if (len && gsi->d_port.in_request.buf_base_addr) - dma_free_coherent(&cdev->gadget->dev, len, + dma_free_coherent(cdev->gadget->dev.parent, len, gsi->d_port.in_request.buf_base_addr, gsi->d_port.in_request.dma); if (len && gsi->d_port.out_request.buf_base_addr) - dma_free_coherent(&cdev->gadget->dev, len, + dma_free_coherent(cdev->gadget->dev.parent, len, gsi->d_port.out_request.buf_base_addr, gsi->d_port.out_request.dma); log_event_err("%s: bind failed for %s", __func__, f->name); |