On 11/02/2016 12:38 AM, Sriram Dash wrote: > From: Arnd Bergmann <arnd@xxxxxxxx> > > 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. > > sysdev will represent the physical device, as seen from firmware > or bus.Splitting the usb_bus->controller field into the > Linux-internal device (used for the sysfs hierarchy, for printks > and for power management) and a new pointer (used for DMA, > DT enumeration and phy lookup) probably covers all that we really > need. > > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > Signed-off-by: Sriram Dash <sriram.dash@xxxxxxx> > Cc: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> > Cc: Grygorii Strashko <grygorii.strashko@xxxxxx> > Cc: Sinjan Kumar <sinjank@xxxxxxxxxxxxxx> > Cc: David Fisher <david.fisher1@xxxxxxxxxxxx> > Cc: Catalin Marinas <catalin.marinas@xxxxxxx> > Cc: "Thang Q. Nguyen" <tqnguyen@xxxxxxx> > Cc: Yoshihiro Shimoda <yoshihiro.shimoda.uh@xxxxxxxxxxx> > Cc: Stephen Boyd <sboyd@xxxxxxxxxxxxxx> > Cc: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> > Cc: Ming Lei <tom.leiming@xxxxxxxxx> > Cc: Jon Masters <jcm@xxxxxxxxxx> > Cc: Dann Frazier <dann.frazier@xxxxxxxxxxxxx> > Cc: Peter Chen <peter.chen@xxxxxxx> > Cc: Leo Li <pku.leo@xxxxxxxxx> > --- > Changes in v2: > - Split the patch wrt driver > > drivers/usb/core/buffer.c | 12 ++++++------ > drivers/usb/core/hcd.c | 48 ++++++++++++++++++++++++++++------------------- > drivers/usb/core/usb.c | 18 +++++++++--------- > include/linux/usb.h | 1 + > include/linux/usb/hcd.h | 3 +++ > 5 files changed, 48 insertions(+), 34 deletions(-) > > diff --git a/drivers/usb/core/buffer.c b/drivers/usb/core/buffer.c > index 98e39f9..1e41ef7 100644 > --- a/drivers/usb/core/buffer.c > +++ b/drivers/usb/core/buffer.c > @@ -63,7 +63,7 @@ int hcd_buffer_create(struct usb_hcd *hcd) > int i, size; > > if (!IS_ENABLED(CONFIG_HAS_DMA) || > - (!hcd->self.controller->dma_mask && > + (!hcd->self.sysdev->dma_mask && I think code shouldn't access DMA props directly, so may be is_device_dma_capable() is right API to use here (and other places). > !(hcd->driver->flags & HCD_LOCAL_MEM))) > return 0; > > @@ -72,7 +72,7 @@ int hcd_buffer_create(struct usb_hcd *hcd) > if (!size) > continue; > snprintf(name, sizeof(name), "buffer-%d", size); > - hcd->pool[i] = dma_pool_create(name, hcd->self.controller, > + hcd->pool[i] = dma_pool_create(name, hcd->self.sysdev, > size, size, 0); > if (!hcd->pool[i]) { > hcd_buffer_destroy(hcd); > @@ -127,7 +127,7 @@ void *hcd_buffer_alloc( > -- regards, -grygorii -- 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