|
@@ -656,6 +656,31 @@ static int dwc3_probe(struct platform_device *pdev)
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
|
|
|
+ dwc->xhci_resources[0].start = res->start;
|
|
|
+ dwc->xhci_resources[0].end = dwc->xhci_resources[0].start +
|
|
|
+ DWC3_XHCI_REGS_END;
|
|
|
+ dwc->xhci_resources[0].flags = res->flags;
|
|
|
+ dwc->xhci_resources[0].name = res->name;
|
|
|
+
|
|
|
+ res->start += DWC3_GLOBALS_REGS_START;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Request memory region but exclude xHCI regs,
|
|
|
+ * since it will be requested by the xhci-plat driver.
|
|
|
+ */
|
|
|
+ regs = devm_ioremap_resource(dev, res);
|
|
|
+ if (IS_ERR(regs))
|
|
|
+ return PTR_ERR(regs);
|
|
|
+
|
|
|
+ dwc->regs = regs;
|
|
|
+ dwc->regs_size = resource_size(res);
|
|
|
+ /*
|
|
|
+ * restore res->start back to its original value so that,
|
|
|
+ * in case the probe is deferred, we don't end up getting error in
|
|
|
+ * request the memory region the next time probe is called.
|
|
|
+ */
|
|
|
+ res->start -= DWC3_GLOBALS_REGS_START;
|
|
|
+
|
|
|
if (node) {
|
|
|
dwc->maximum_speed = of_usb_get_maximum_speed(node);
|
|
|
|
|
@@ -676,28 +701,9 @@ static int dwc3_probe(struct platform_device *pdev)
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
|
|
|
- dwc->xhci_resources[0].start = res->start;
|
|
|
- dwc->xhci_resources[0].end = dwc->xhci_resources[0].start +
|
|
|
- DWC3_XHCI_REGS_END;
|
|
|
- dwc->xhci_resources[0].flags = res->flags;
|
|
|
- dwc->xhci_resources[0].name = res->name;
|
|
|
-
|
|
|
- res->start += DWC3_GLOBALS_REGS_START;
|
|
|
-
|
|
|
- /*
|
|
|
- * Request memory region but exclude xHCI regs,
|
|
|
- * since it will be requested by the xhci-plat driver.
|
|
|
- */
|
|
|
- regs = devm_ioremap_resource(dev, res);
|
|
|
- if (IS_ERR(regs))
|
|
|
- return PTR_ERR(regs);
|
|
|
-
|
|
|
spin_lock_init(&dwc->lock);
|
|
|
platform_set_drvdata(pdev, dwc);
|
|
|
|
|
|
- dwc->regs = regs;
|
|
|
- dwc->regs_size = resource_size(res);
|
|
|
-
|
|
|
dev->dma_mask = dev->parent->dma_mask;
|
|
|
dev->dma_parms = dev->parent->dma_parms;
|
|
|
dma_set_coherent_mask(dev, dev->parent->coherent_dma_mask);
|