* [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
* 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
* [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
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).