For xhci-hcd platform device, all the DMA parameters are not configured properly, notably dma ops for dwc3 devices.
The idea here is that you pass in the parent of_node along with the child device pointer, so it would behave exactly like the parent already does. The difference is that it also handles all the other attributes besides the mask. Arnd Bergmann (6): usb: separate out sysdev pointer from usb_bus usb: chipidea: use bus->sysdev for DMA configuration usb: ehci: fsl: use bus->sysdev for DMA configuration usb: xhci: use bus->sysdev for DMA configuration usb: dwc3: use bus->sysdev for DMA configuration usb: dwc3: Do not set dma coherent mask drivers/usb/chipidea/core.c | 3 --- drivers/usb/chipidea/host.c | 3 ++- drivers/usb/chipidea/udc.c | 10 +++++---- drivers/usb/core/buffer.c | 12 +++++------ drivers/usb/core/hcd.c | 48 +++++++++++++++++++++++++----------------- drivers/usb/core/usb.c | 18 ++++++++-------- drivers/usb/dwc3/core.c | 27 ++++++++++++------------ drivers/usb/dwc3/core.h | 3 +++ drivers/usb/dwc3/dwc3-exynos.c | 10 --------- drivers/usb/dwc3/dwc3-pci.c | 11 ++++++++++ drivers/usb/dwc3/dwc3-st.c | 1 - drivers/usb/dwc3/ep0.c | 8 +++---- drivers/usb/dwc3/gadget.c | 37 ++++++++++++++++---------------- drivers/usb/dwc3/host.c | 16 ++++++-------- drivers/usb/host/ehci-fsl.c | 4 ++-- drivers/usb/host/xhci-mem.c | 12 +++++------ drivers/usb/host/xhci-plat.c | 33 +++++++++++++++++++++++------ drivers/usb/host/xhci.c | 15 +++++++++---- include/linux/usb.h | 1 + include/linux/usb/hcd.h | 3 +++ 20 files changed, 158 insertions(+), 117 deletions(-) -- 2.1.0