Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

usb: cdns3: fix issue with rearming ISO OUT endpoint

ISO OUT endpoint is enabled during queuing first usb request
in transfer ring and disabled when TRBERR is reported by controller.
After TRBERR and before next transfer added to TR driver must again
reenable endpoint but does not.
To solve this issue during processing TRBERR event driver must
set the flag EP_UPDATE_EP_TRBADDR in priv_ep->flags field.

Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver")
cc: <stable@vger.kernel.org>
Acked-by: Peter Chen <peter.chen@kernel.org>
Signed-off-by: Pawel Laszczak <pawell@cadence.com>
Link: https://lore.kernel.org/r/20220825062137.5766-1-pawell@cadence.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Pawel Laszczak and committed by
Greg Kroah-Hartman
b46a6b09 d5dcc336

+1
+1
drivers/usb/cdns3/cdns3-gadget.c
··· 1691 1691 ep_cfg &= ~EP_CFG_ENABLE; 1692 1692 writel(ep_cfg, &priv_dev->regs->ep_cfg); 1693 1693 priv_ep->flags &= ~EP_QUIRK_ISO_OUT_EN; 1694 + priv_ep->flags |= EP_UPDATE_EP_TRBADDR; 1694 1695 } 1695 1696 cdns3_transfer_completed(priv_dev, priv_ep); 1696 1697 } else if (!(priv_ep->flags & EP_STALLED) &&