Re: [PATCH] drivers: usb: dwc3 : Configure DMA properties and ops from DT

From: Felipe Balbi
Date: Fri May 27 2016 - 09:35:05 EST


Leo Li <pku.leo@xxxxxxxxx> writes:
>> Leo Li <pku.leo@xxxxxxxxx> writes:
>>>>> On certain platforms (e.g. ARM64) the dma_ops needs to be explicitly set
>>>>> to be able to do DMA allocations, so use the of_dma_configure() helper
>>>>> to populate the dma properties and assign an appropriate dma_ops.
>>>>> Signed-off-by: Rajesh Bhagat <rajesh.bhagat@xxxxxxx>
>>>>> Reviewed-by: Yang-Leo Li <>
>>>> Cool, nxp is also using dwc3 :-) C'mon Rajesh, send us a glue layer :)
>>>>> diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
>>>>> index c679f63..4d5b783 100644
>>>>> --- a/drivers/usb/dwc3/host.c
>>>>> +++ b/drivers/usb/dwc3/host.c
>>>>> @@ -17,6 +17,7 @@
>>>>> #include <linux/platform_device.h>
>>>>> #include <linux/usb/xhci_pdriver.h>
>>>>> +#include <linux/of_device.h>
>>>>> #include "core.h"
>>>>> @@ -32,6 +33,9 @@ int dwc3_host_init(struct dwc3 *dwc)
>>>>> return -ENOMEM;
>>>>> }
>>>>> + if (IS_ENABLED(CONFIG_OF) && dwc->dev->of_node)
>>>>> + of_dma_configure(&xhci->dev, dwc->dev->of_node);
>>>> okay, so we have a long discussion about this going on. You can catch up
>>>> with it starting here:
>>>> At least for now, this patch will be applied. We need to have a better
>>>> solution for this, one that helps not only DT platforms.
>>> Balbi,
>>> Has the patch from Grygorii been applied? I don't see it in the
>>> mainline tree yet. Without fix, the dwc3 driver will fail for all
>>> ARM64 SoCs.
>> right, it's still broken. But we don't want something that fixes only
>> OF, right? dwc3 is also broken for PCI when IOMMU is enabled. It breaks
>> for the same reasons.
>> We really need a way to inherit DMA bits from parent device here.
> I agree with your proposal, but the original discussion seems to be on
> halt right now. If it need more time to get to an agreement on proper
> fix, probably it's better to have a temporary fix right now to make
> the driver working again.

if it temporarily solves all users, sure. But if temporarily solves the
problem for just a subset of the users, then that subset will stop
thinking about the solution while the other subset is left alone
thinking about it.

Sorry, but I prefer to get this sorted out for everybody, rather than
for one subset of users.


Attachment: signature.asc
Description: PGP signature