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@xxxxxxxxxxx> > Signed-off-by: Roger Quadros <rogerq@xxxxxx> > Signed-off-by: Pawel Laszczak <pawell@xxxxxxxxxxx> > 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@xxxxxxx> -- Thanks, Peter Chen