Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1355165 > unrolled thread
| Started by | "Thang Q. Nguyen" <tqnguyen@apm.com> |
|---|---|
| First post | 2016-03-10 15:40 +0100 |
| Last post | 2016-03-10 15:40 +0100 |
| Articles | 2 — 1 participant |
Back to article view | Back to linux.kernel
[PATCH v3 0/2] usb:dwc3: Enable USB DWC3 support for 64-bit system "Thang Q. Nguyen" <tqnguyen@apm.com> - 2016-03-10 15:40 +0100
[PATCH v3 1/2] usb:dwc3: Enable support for 64-bit system "Thang Q. Nguyen" <tqnguyen@apm.com> - 2016-03-10 15:40 +0100
| From | "Thang Q. Nguyen" <tqnguyen@apm.com> |
|---|---|
| Date | 2016-03-10 15:40 +0100 |
| Subject | [PATCH v3 0/2] usb:dwc3: Enable USB DWC3 support for 64-bit system |
| Message-ID | <rb9US-8dN-15@gated-at.bofh.it> |
From: "Thang Q. Nguyen" <tqnguyen@apm.com> When CONFIG_DMA_CMA is not set, the coherent mask is not set. These patches enable the USB DWC3 driver to set the coherent mask correctly by first set coherent DMA mask to 64-bit. If this failed, attempt again with 32-bit. In addition, pass the archdata to the xhci-hcd child so that xhci-hcd can configure DMA operations correctly. Thang Q. Nguyen (2): usb:dwc3: Enable support for 64-bit system usb:dwc3: pass arch data to xhci-hcd child drivers/usb/dwc3/core.c | 15 +++++++++++++++ drivers/usb/dwc3/host.c | 1 + 2 files changed, 16 insertions(+) -- 2.2.0
[toc] | [next] | [standalone]
| From | "Thang Q. Nguyen" <tqnguyen@apm.com> |
|---|---|
| Date | 2016-03-10 15:40 +0100 |
| Subject | [PATCH v3 1/2] usb:dwc3: Enable support for 64-bit system |
| Message-ID | <rb9UT-8dN-31@gated-at.bofh.it> |
| In reply to | #1355165 |
From: "Thang Q. Nguyen" <tqnguyen@apm.com>
Add 64-bit DMA operation support to the USB DWC3 driver.
First attempt to set the coherent DMA mask for 64-bit DMA.
If that failed, attempt again with 32-bit DMA.
Changes from v2:
- None.
Changes from v1:
- Remove WARN_ON if dma_mask is NULL
Signed-off-by: Thang Q. Nguyen <tqnguyen@apm.com>
---
drivers/usb/dwc3/core.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index de5e01f..2479c24 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -831,6 +831,21 @@ static int dwc3_probe(struct platform_device *pdev)
dwc->mem = mem;
dwc->dev = dev;
+ /* Try to set 64-bit DMA first */
+ if (!pdev->dev.dma_mask)
+ /* Platform did not initialize dma_mask */
+ ret = dma_coerce_mask_and_coherent(&pdev->dev,
+ DMA_BIT_MASK(64));
+ else
+ ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
+
+ /* If seting 64-bit DMA mask fails, fall back to 32-bit DMA mask */
+ if (ret) {
+ ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
+ if (ret)
+ return ret;
+ }
+
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
if (!res) {
dev_err(dev, "missing IRQ\n");
--
2.2.0
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web