* [PATCH v1 0/2] usb:dwc3: Enable USB DWC3 support for 64-bit system
@ 2016-01-14 5:08 Thang Q. Nguyen
2016-01-14 5:08 ` [PATCH v1 1/2] usb:dwc3: Enable " Thang Q. Nguyen
2016-01-14 5:08 ` [PATCH v1 2/2] usb:dwc3: pass arch data to xhci-hcd child Thang Q. Nguyen
0 siblings, 2 replies; 7+ messages in thread
From: Thang Q. Nguyen @ 2016-01-14 5:08 UTC (permalink / raw)
To: Felipe Balbi, Greg Kroah-Hartman, linux-usb, linux-omap,
linux-kernel, linux-arm
Cc: Thang Nguyen, Phong Vo, Loc Ho, patches
When CONFIG_DMA_CMA is not set, the coherent mask is not set.
These patches enable the USB DWC3 driver to set the coherent mask
correctly by first set coherent DMA mask to 64-bit. If this
failed, attempt again with 32-bit.
In addition, pass the archdata to the xhci-hcd child so that
xhci-hcd can configure DMA operations correctly.
Thang Q. Nguyen (2):
usb:dwc3: Enable support for 64-bit system
usb:dwc3: pass arch data to xhci-hcd child
drivers/usb/dwc3/core.c | 15 +++++++++++++++
drivers/usb/dwc3/host.c | 1 +
2 files changed, 16 insertions(+)
--
2.2.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v1 1/2] usb:dwc3: Enable support for 64-bit system
2016-01-14 5:08 [PATCH v1 0/2] usb:dwc3: Enable USB DWC3 support for 64-bit system Thang Q. Nguyen
@ 2016-01-14 5:08 ` Thang Q. Nguyen
2016-01-14 15:47 ` Felipe Balbi
2016-01-14 5:08 ` [PATCH v1 2/2] usb:dwc3: pass arch data to xhci-hcd child Thang Q. Nguyen
1 sibling, 1 reply; 7+ messages in thread
From: Thang Q. Nguyen @ 2016-01-14 5:08 UTC (permalink / raw)
To: Felipe Balbi, Greg Kroah-Hartman, linux-usb, linux-omap,
linux-kernel, linux-arm
Cc: Thang Nguyen, Phong Vo, Loc Ho, patches
Add 64-bit DMA operation support to the USB DWC3 driver.
First attempt to set the coherent DMA mask for 64-bit DMA.
If that failed, attempt again with 32-bit DMA.
Signed-off-by: Thang Q. Nguyen <tqnguyen@apm.com>
---
drivers/usb/dwc3/core.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 22b47973..9818d6b 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -829,6 +829,21 @@ static int dwc3_probe(struct platform_device *pdev)
dwc->mem = mem;
dwc->dev = dev;
+ /* Try to set 64-bit DMA first */
+ if (WARN_ON(!pdev->dev.dma_mask))
+ /* Platform did not initialize dma_mask */
+ ret = dma_coerce_mask_and_coherent(&pdev->dev,
+ DMA_BIT_MASK(64));
+ else
+ ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
+
+ /* If seting 64-bit DMA mask fails, fall back to 32-bit DMA mask */
+ if (ret) {
+ ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
+ if (ret)
+ return ret;
+ }
+
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
if (!res) {
dev_err(dev, "missing IRQ\n");
--
2.2.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v1 2/2] usb:dwc3: pass arch data to xhci-hcd child
2016-01-14 5:08 [PATCH v1 0/2] usb:dwc3: Enable USB DWC3 support for 64-bit system Thang Q. Nguyen
2016-01-14 5:08 ` [PATCH v1 1/2] usb:dwc3: Enable " Thang Q. Nguyen
@ 2016-01-14 5:08 ` Thang Q. Nguyen
1 sibling, 0 replies; 7+ messages in thread
From: Thang Q. Nguyen @ 2016-01-14 5:08 UTC (permalink / raw)
To: Felipe Balbi, Greg Kroah-Hartman, linux-usb, linux-omap,
linux-kernel, linux-arm
Cc: Thang Nguyen, Phong Vo, Loc Ho, patches
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.
Signed-off-by: Thang Q. Nguyen <tqnguyen@apm.com>
---
drivers/usb/dwc3/host.c | 1 +
1 file changed, 1 insertion(+)
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;
--
2.2.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v1 1/2] usb:dwc3: Enable support for 64-bit system
2016-01-14 5:08 ` [PATCH v1 1/2] usb:dwc3: Enable " Thang Q. Nguyen
@ 2016-01-14 15:47 ` Felipe Balbi
2016-01-15 3:50 ` Thang Q. Nguyen
0 siblings, 1 reply; 7+ messages in thread
From: Felipe Balbi @ 2016-01-14 15:47 UTC (permalink / raw)
To: Thang Q. Nguyen, Felipe Balbi, Greg Kroah-Hartman, linux-usb,
linux-omap, linux-kernel, linux-arm
Cc: Thang Nguyen, Phong Vo, Loc Ho, patches
[-- Attachment #1: Type: text/plain, Size: 1591 bytes --]
Hi,
"Thang Q. Nguyen" <tqnguyen@apm.com> writes:
> Add 64-bit DMA operation support to the USB DWC3 driver.
> First attempt to set the coherent DMA mask for 64-bit DMA.
> If that failed, attempt again with 32-bit DMA.
>
> Signed-off-by: Thang Q. Nguyen <tqnguyen@apm.com>
> ---
> drivers/usb/dwc3/core.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index 22b47973..9818d6b 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -829,6 +829,21 @@ static int dwc3_probe(struct platform_device *pdev)
> dwc->mem = mem;
> dwc->dev = dev;
>
> + /* Try to set 64-bit DMA first */
> + if (WARN_ON(!pdev->dev.dma_mask))
why the WARN_ON() ?
> + /* Platform did not initialize dma_mask */
> + ret = dma_coerce_mask_and_coherent(&pdev->dev,
> + DMA_BIT_MASK(64));
> + else
> + ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
> +
> + /* If seting 64-bit DMA mask fails, fall back to 32-bit DMA mask */
> + if (ret) {
this will try 32-bit if 32-bit fails too.
> + ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
> + if (ret)
> + return ret;
> + }
> +
> res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> if (!res) {
> dev_err(dev, "missing IRQ\n");
> --
> 2.2.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
balbi
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1 1/2] usb:dwc3: Enable support for 64-bit system
2016-01-14 15:47 ` Felipe Balbi
@ 2016-01-15 3:50 ` Thang Q. Nguyen
2016-01-16 3:28 ` Felipe Balbi
0 siblings, 1 reply; 7+ messages in thread
From: Thang Q. Nguyen @ 2016-01-15 3:50 UTC (permalink / raw)
To: Felipe Balbi
Cc: Felipe Balbi, Greg Kroah-Hartman, linux-usb, linux-omap,
linux-kernel, linux-arm, Phong Vo, Loc Ho, patches
Hi Balbi,
On Thu, Jan 14, 2016 at 10:47 PM, Felipe Balbi <balbi@kernel.org> wrote:
>
>
> Hi,
>
> "Thang Q. Nguyen" <tqnguyen@apm.com> writes:
> > Add 64-bit DMA operation support to the USB DWC3 driver.
> > First attempt to set the coherent DMA mask for 64-bit DMA.
> > If that failed, attempt again with 32-bit DMA.
> >
> > Signed-off-by: Thang Q. Nguyen <tqnguyen@apm.com>
> > ---
> > drivers/usb/dwc3/core.c | 15 +++++++++++++++
> > 1 file changed, 15 insertions(+)
> >
> > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> > index 22b47973..9818d6b 100644
> > --- a/drivers/usb/dwc3/core.c
> > +++ b/drivers/usb/dwc3/core.c
> > @@ -829,6 +829,21 @@ static int dwc3_probe(struct platform_device *pdev)
> > dwc->mem = mem;
> > dwc->dev = dev;
> >
> > + /* Try to set 64-bit DMA first */
> > + if (WARN_ON(!pdev->dev.dma_mask))
>
> why the WARN_ON() ?
In my opinion, pdev->dev.dma_mask is expected to be set correctly. And
the issue happen just in case of DT boot and CONFIG_DMA_CMA=n, the
pdev->dev.dma_mask value is not set. So, I set WARN_ON there to notify
that we expect pdev->dev.dma_mask set but not.
>
> > + /* Platform did not initialize dma_mask */
> > + ret = dma_coerce_mask_and_coherent(&pdev->dev,
> > + DMA_BIT_MASK(64));
> > + else
> > + ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
> > +
> > + /* If seting 64-bit DMA mask fails, fall back to 32-bit DMA mask */
> > + if (ret) {
>
> this will try 32-bit if 32-bit fails too.
There are 2 cases for dma_mask: 32-bit and 64-bit. In case the system
is 64-bit, the setting of 64-bit will return 0. Otherwise, setting
32-bit dma_mask should work.
This change is similar to commit
0ebbe398f68be0d9bbd41dcfb57319e697756b37 on
drivers/usb/host/xhci-plat.c.
>
> > + ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
> > + if (ret)
> > + return ret;
> > + }
> > +
> > res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> > if (!res) {
> > dev_err(dev, "missing IRQ\n");
> > --
> > 2.2.0
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
>
> --
> balbi
--
Thang Q. Nguyen | Staff SW Eng.
C: +849.7684.7606 | O: +848.3770.0640
F: +848.3770.0641 | tqnguyen@apm.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1 1/2] usb:dwc3: Enable support for 64-bit system
2016-01-15 3:50 ` Thang Q. Nguyen
@ 2016-01-16 3:28 ` Felipe Balbi
2016-01-16 4:00 ` Thang Q. Nguyen
0 siblings, 1 reply; 7+ messages in thread
From: Felipe Balbi @ 2016-01-16 3:28 UTC (permalink / raw)
To: Thang Q. Nguyen
Cc: Felipe Balbi, Greg Kroah-Hartman, linux-usb, linux-omap,
linux-kernel, linux-arm, Phong Vo, Loc Ho, patches
[-- Attachment #1: Type: text/plain, Size: 1496 bytes --]
Hi,
"Thang Q. Nguyen" <tqnguyen@apm.com> writes:
> Hi Balbi,
>
> On Thu, Jan 14, 2016 at 10:47 PM, Felipe Balbi <balbi@kernel.org> wrote:
>>
>>
>> Hi,
>>
>> "Thang Q. Nguyen" <tqnguyen@apm.com> writes:
>> > Add 64-bit DMA operation support to the USB DWC3 driver.
>> > First attempt to set the coherent DMA mask for 64-bit DMA.
>> > If that failed, attempt again with 32-bit DMA.
>> >
>> > Signed-off-by: Thang Q. Nguyen <tqnguyen@apm.com>
>> > ---
>> > drivers/usb/dwc3/core.c | 15 +++++++++++++++
>> > 1 file changed, 15 insertions(+)
>> >
>> > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
>> > index 22b47973..9818d6b 100644
>> > --- a/drivers/usb/dwc3/core.c
>> > +++ b/drivers/usb/dwc3/core.c
>> > @@ -829,6 +829,21 @@ static int dwc3_probe(struct platform_device *pdev)
>> > dwc->mem = mem;
>> > dwc->dev = dev;
>> >
>> > + /* Try to set 64-bit DMA first */
>> > + if (WARN_ON(!pdev->dev.dma_mask))
>>
>> why the WARN_ON() ?
>
> In my opinion, pdev->dev.dma_mask is expected to be set correctly. And
sure is, but a WARN_ON() will print out a stack dump, which looks
scary. Besides, if it's not set you're already fixing the problem.
> the issue happen just in case of DT boot and CONFIG_DMA_CMA=n, the
> pdev->dev.dma_mask value is not set. So, I set WARN_ON there to notify
why isn't it set ?
> that we expect pdev->dev.dma_mask set but not.
why don't you fix that case, instead ?
--
balbi
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1 1/2] usb:dwc3: Enable support for 64-bit system
2016-01-16 3:28 ` Felipe Balbi
@ 2016-01-16 4:00 ` Thang Q. Nguyen
0 siblings, 0 replies; 7+ messages in thread
From: Thang Q. Nguyen @ 2016-01-16 4:00 UTC (permalink / raw)
To: Felipe Balbi
Cc: Felipe Balbi, Greg Kroah-Hartman, linux-usb, linux-omap,
linux-kernel, linux-arm, Phong Vo, Loc Ho, patches
Hi Balbi,
Thanks for your review and feedback.
I will remove WARN_ON() as in your feedback. I will wait some days to
see if any more comments before sending out an updated patch.
Thanks,
Thang Q. Nguyen
On Sat, Jan 16, 2016 at 10:28 AM, Felipe Balbi <balbi@kernel.org> wrote:
>
> Hi,
>
> "Thang Q. Nguyen" <tqnguyen@apm.com> writes:
>> Hi Balbi,
>>
>> On Thu, Jan 14, 2016 at 10:47 PM, Felipe Balbi <balbi@kernel.org> wrote:
>>>
>>>
>>> Hi,
>>>
>>> "Thang Q. Nguyen" <tqnguyen@apm.com> writes:
>>> > Add 64-bit DMA operation support to the USB DWC3 driver.
>>> > First attempt to set the coherent DMA mask for 64-bit DMA.
>>> > If that failed, attempt again with 32-bit DMA.
>>> >
>>> > Signed-off-by: Thang Q. Nguyen <tqnguyen@apm.com>
>>> > ---
>>> > drivers/usb/dwc3/core.c | 15 +++++++++++++++
>>> > 1 file changed, 15 insertions(+)
>>> >
>>> > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
>>> > index 22b47973..9818d6b 100644
>>> > --- a/drivers/usb/dwc3/core.c
>>> > +++ b/drivers/usb/dwc3/core.c
>>> > @@ -829,6 +829,21 @@ static int dwc3_probe(struct platform_device *pdev)
>>> > dwc->mem = mem;
>>> > dwc->dev = dev;
>>> >
>>> > + /* Try to set 64-bit DMA first */
>>> > + if (WARN_ON(!pdev->dev.dma_mask))
>>>
>>> why the WARN_ON() ?
>>
>> In my opinion, pdev->dev.dma_mask is expected to be set correctly. And
>
> sure is, but a WARN_ON() will print out a stack dump, which looks
> scary. Besides, if it's not set you're already fixing the problem.
>
>> the issue happen just in case of DT boot and CONFIG_DMA_CMA=n, the
>> pdev->dev.dma_mask value is not set. So, I set WARN_ON there to notify
>
> why isn't it set ?
>
>> that we expect pdev->dev.dma_mask set but not.
>
> why don't you fix that case, instead ?
>
> --
> balbi
--
Thang Q. Nguyen | Staff SW Eng.
C: +849.7684.7606 | O: +848.3770.0640
F: +848.3770.0641 | tqnguyen@apm.com
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-01-16 4:00 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-14 5:08 [PATCH v1 0/2] usb:dwc3: Enable USB DWC3 support for 64-bit system Thang Q. Nguyen
2016-01-14 5:08 ` [PATCH v1 1/2] usb:dwc3: Enable " Thang Q. Nguyen
2016-01-14 15:47 ` Felipe Balbi
2016-01-15 3:50 ` Thang Q. Nguyen
2016-01-16 3:28 ` Felipe Balbi
2016-01-16 4:00 ` Thang Q. Nguyen
2016-01-14 5:08 ` [PATCH v1 2/2] usb:dwc3: pass arch data to xhci-hcd child Thang Q. Nguyen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).