While creating the child devices, *of_platform_populate* sets only coherent_dma_mask but USBHCD sets *uses_dma* (determines whether the controller is DMA'able) based on dma_mask. So If we haven't explicitly set dma_mask, the HCD thinks the controller is not DMA'able and the controller will fail. So explicity set dma_mask for dwc3 after *of_platform_populate*. Signed-off-by: Kishon Vijay Abraham I <kishon@xxxxxx> --- drivers/usb/dwc3/dwc3-omap.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c index 35b9673..19c6e72 100644 --- a/drivers/usb/dwc3/dwc3-omap.c +++ b/drivers/usb/dwc3/dwc3-omap.c @@ -277,6 +277,14 @@ static void dwc3_omap_disable_irqs(struct dwc3_omap *omap) dwc3_omap_writel(omap->base, USBOTGSS_IRQENABLE_SET_0, 0x00); } +static u64 dwc3_omap_dma_mask = DMA_BIT_MASK(32); + +static int dwc3_omap_set_dmamask(struct device *dev, void *c) +{ + dev->dma_mask = &dwc3_omap_dma_mask; + return 0; +} + static int dwc3_omap_probe(struct platform_device *pdev) { struct device_node *node = pdev->dev.of_node; @@ -381,6 +389,8 @@ static int dwc3_omap_probe(struct platform_device *pdev) return ret; } + device_for_each_child(&pdev->dev, NULL, dwc3_omap_set_dmamask); + return 0; } -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html