summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorHemant Kumar <hemantk@codeaurora.org>2016-04-14 13:04:01 -0700
committerJeevan Shriram <jshriram@codeaurora.org>2016-04-22 15:04:18 -0700
commit99e000989b409c6183ec8f012c019c5c499aab8a (patch)
treeeffbfac998d0c2b52385268beb8b411822ca3de0 /drivers
parent599b6b32a0681200ad943c13eeee98f0f1829ff4 (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.c8
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);