On Monday 29 December 2014 01:52:04 Sneeker Yeh wrote: > > > +static int dwc3_mb86s70_remove_child(struct device *dev, void *unused) > > > +{ > > > + struct platform_device *pdev = to_platform_device(dev); > > > + > > > + of_device_unregister(pdev); > > > + > > > + return 0; > > > +} > > > + > > > +static u64 dwc3_mb86s70_dma_mask = DMA_BIT_MASK(32); > > > > why ? Use dma_coerce_mask_and_coherent(). > > > > okay. Actually that is still wrong: we use dma_coerce_mask_and_coherent() to annotate drivers that have traditionally been forcing their own dma mask by some other means and that need to be changed to something proper (after finding out why they did it in the first place). Since this is about a child device, the correct interface is to use platform_device_register_full(). Note that this will still only work on machines that have no dma offset, iommu, swiotlb, special coherency requirements, or ones that need a platform specific dma_map_ops. To make any of those work, the driver would need to be changed to pass the correct device pointer into any dma-mapping interfaces, so the settings can get set by the platform code. We will need to do that for arm64 I assume. Arnd -- 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