linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).