Message ID | 1457594332-7490-3-git-send-email-tqnguyen@apm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
"Thang Q. Nguyen" <tqnguyen@apm.com> writes: > [ text/plain ] > From: "Thang Q. Nguyen" <tqnguyen@apm.com> > > The xhci-hcd child node needs to inherit archdata attribute to use > dma_ops functions and attributes. This patch enables the USB DWC3 > driver to pass archdata attributes to its xhci-hcd child node. > > Changes from v2: > - None > > Changes from v1: > - None changes should be between tearline and diffstat.
On 03/30/2016 04:10 PM, Felipe Balbi wrote: > "Thang Q. Nguyen" <tqnguyen@apm.com> writes: > >> [ text/plain ] >> From: "Thang Q. Nguyen" <tqnguyen@apm.com> >> >> The xhci-hcd child node needs to inherit archdata attribute to use >> dma_ops functions and attributes. This patch enables the USB DWC3 >> driver to pass archdata attributes to its xhci-hcd child node. >> >> Changes from v2: >> - None >> >> Changes from v1: >> - None > > changes should be between tearline and diffstat. > uh. This become a real problem :(, especially with LPAE enabled. DMA properties need to be inherited not only here, but also in usb_add_gadget_udc_release(). And probably in other places where devices are created manually - the worst case : device is created manually but doesn't belong to any bus. And DMA configuration must include dma_pfn_offset also! And how about iommu staff? FYI. Solution used for PCI c49b8fc of/pci: Add of_pci_dma_configure() to update DMA configuration Rejected: introduce dma_init_dev_from_parent() or smth. like this http://permalink.gmane.org/gmane.linux.ports.arm.kernel/378317 https://lkml.org/lkml/2014/11/4/519
Grygorii Strashko <grygorii.strashko@ti.com> writes: > [ text/plain ] > On 03/30/2016 04:10 PM, Felipe Balbi wrote: >> "Thang Q. Nguyen" <tqnguyen@apm.com> writes: >> >>> [ text/plain ] >>> From: "Thang Q. Nguyen" <tqnguyen@apm.com> >>> >>> The xhci-hcd child node needs to inherit archdata attribute to use >>> dma_ops functions and attributes. This patch enables the USB DWC3 >>> driver to pass archdata attributes to its xhci-hcd child node. >>> >>> Changes from v2: >>> - None >>> >>> Changes from v1: >>> - None >> >> changes should be between tearline and diffstat. >> > > uh. This become a real problem :(, especially with LPAE enabled. > DMA properties need to be inherited not only here, but also in > usb_add_gadget_udc_release(). And probably in other places > where devices are created manually - the worst case : device is created > manually but doesn't belong to any bus. > > And DMA configuration must include dma_pfn_offset also! > And how about iommu staff? > > FYI. Solution used for PCI > c49b8fc of/pci: Add of_pci_dma_configure() to update DMA configuration > > Rejected: introduce dma_init_dev_from_parent() or smth. like this > http://permalink.gmane.org/gmane.linux.ports.arm.kernel/378317 I like this very much. Meanwhile, we need something (although, $subject is not very good).
Thanks Grygorii for information. I checked but do not see dma_init_dev_from_parent is used in linux-next repository. Can you give me more information for what branch I can checkout to use it for USB DWC3? Thanks, Thang -- -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
"Thang Q. Nguyen" <tqnguyen@apm.com> writes: > [ text/plain ] > Thanks Grygorii for information. > I checked but do not see dma_init_dev_from_parent is used in > linux-next repository. Can you give me more information for what > branch I can checkout to use it for USB DWC3? dma_init_dev_from_parent() is still a proposal ;-)
diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c index c679f63..661fbae 100644 --- a/drivers/usb/dwc3/host.c +++ b/drivers/usb/dwc3/host.c @@ -37,6 +37,7 @@ int dwc3_host_init(struct dwc3 *dwc) xhci->dev.parent = dwc->dev; xhci->dev.dma_mask = dwc->dev->dma_mask; xhci->dev.dma_parms = dwc->dev->dma_parms; + xhci->dev.archdata = dwc->dev->archdata; dwc->xhci = xhci;