Messages in this thread | | | From | Peter Chen <> | Subject | Re: [PATCH] usb: cdns3: Fix for incorrect DMA mask. | Date | Tue, 8 Oct 2019 08:03:39 +0000 |
| |
On 19-10-07 13:03:23, Pawel Laszczak wrote: > This patch restores the correct DMA mask after switching back to device > mode. > The issue occurred because Device part of controller use 32 bits DMA and > Host side use 64 bits DMA. During loading XHCI driver the DMA mask > used by driver is overwritten by XHCI driver so it must be restored > to 32 bits. > > Reported-by: Pawel Laszczak <pawell@cadence.com> > Signed-off-by: Roger Quadros <rogerq@ti.com> > Signed-off-by: Pawel Laszczak <pawell@cadence.com> > Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver") > --- > drivers/usb/cdns3/gadget.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/usb/cdns3/gadget.c b/drivers/usb/cdns3/gadget.c > index 157536753b8c..2ca280f4c054 100644 > --- a/drivers/usb/cdns3/gadget.c > +++ b/drivers/usb/cdns3/gadget.c > @@ -2663,6 +2663,13 @@ static int __cdns3_gadget_init(struct cdns3 *cdns) > { > int ret = 0; > > + /* Ensure 32-bit DMA Mask in case we switched back from Host mode */ > + ret = dma_set_mask_and_coherent(cdns->dev, DMA_BIT_MASK(32)); > + if (ret) { > + dev_err(cdns->dev, "Failed to set dma mask: %d\n", ret); > + return ret; > + } > + > cdns3_drd_switch_gadget(cdns, 1); > pm_runtime_get_sync(cdns->dev); >
Reviewed-by: Peter Chen <peter.chen@nxp.com>
--
Thanks, Peter Chen
| |