Hi, Sriram Dash writes: > From: Arnd Bergmann > > The dma ops for dwc3 devices are not set properly. So, use a > physical device sysdev, which will be inherited from parent, > to set the hardware / firmware parameters like dma. > > Signed-off-by: Arnd Bergmann > Signed-off-by: Sriram Dash > --- > Changes in v3: > - No update > > Changes in v2: > - integrate dwc3 driver changes together > > drivers/usb/dwc3/core.c | 28 +++++++++++++++------------- > drivers/usb/dwc3/core.h | 1 + > drivers/usb/dwc3/ep0.c | 8 ++++---- > drivers/usb/dwc3/gadget.c | 37 +++++++++++++++++++------------------ > drivers/usb/dwc3/host.c | 12 ++++-------- > 5 files changed, 43 insertions(+), 43 deletions(-) > > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c > index 7287a76..0af0dc0 100644 > --- a/drivers/usb/dwc3/core.c > +++ b/drivers/usb/dwc3/core.c > @@ -25,6 +25,7 @@ > #include > #include > #include > +#include I'd prefer to add a device property instead of checking for PCI bus type. > @@ -943,6 +944,13 @@ static int dwc3_probe(struct platform_device *pdev) > dwc = PTR_ALIGN(mem, DWC3_ALIGN_MASK + 1); > dwc->mem = mem; > dwc->dev = dev; > +#ifdef CONFIG_PCI > + /* TODO: or some other way of detecting this? */ > + if (dwc->dev->parent && dwc->dev->parent->bus == &pci_bus_type) > + dwc->sysdev = dwc->dev->parent; > + else > +#endif IOW: dwc->sysdev_is_parent = device_property_read_bool(dev, "linux,sysdev_is_parent"); [...] if (dwc->sysdev_is_parent) dwc->sysdev = dwc->dev->parent; else dwc->sysdev = dwc->dev; > @@ -112,9 +108,9 @@ int dwc3_host_init(struct dwc3 *dwc) > return 0; > err2: > phy_remove_lookup(dwc->usb2_generic_phy, "usb2-phy", > - dev_name(&xhci->dev)); > + dev_name(dwc->dev)); > phy_remove_lookup(dwc->usb3_generic_phy, "usb3-phy", > - dev_name(&xhci->dev)); > + dev_name(dwc->dev)); > err1: > platform_device_put(xhci); > return ret; > @@ -123,8 +119,8 @@ int dwc3_host_init(struct dwc3 *dwc) > void dwc3_host_exit(struct dwc3 *dwc) > { > phy_remove_lookup(dwc->usb2_generic_phy, "usb2-phy", > - dev_name(&dwc->xhci->dev)); > + dev_name(dwc->dev)); > phy_remove_lookup(dwc->usb3_generic_phy, "usb3-phy", > - dev_name(&dwc->xhci->dev)); > + dev_name(dwc->dev)); this looks unrelated to $subject. Care to explain? -- balbi