]> git.baikalelectronics.ru Git - kernel.git/commit
usb: cdns3: gadget: toggle cycle bit before reset endpoint
authorPeter Chen <peter.chen@nxp.com>
Wed, 19 Feb 2020 14:14:55 +0000 (22:14 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Mar 2020 09:56:26 +0000 (10:56 +0100)
commitff575997b1e24c137860a47b84e71770f6a0953a
treed2be485867856c22d5b7e46225d77e45a588548a
parentae13d28da0131d192c231867f5e2d671ac7203ef
usb: cdns3: gadget: toggle cycle bit before reset endpoint

If there are TRBs pending during reset endpoint operation, the
DMA will advance after reset operation, but it isn't expected,
since the data is not yet available (For OUT, the data is not
yet available). After the data is ready, there won't be any
interrupt since the EP_TRADDR already points to next TRB entry
and doorbell is not set.

To fix it, it toggles cycle bit before reset operation, and restores
it after reset, it could avoid unexpected DMA advance due to
cycle bit is for software during the endpoint reset operation.

Fixes: 890954bdc8d0 ("usb: cdns3: Add Cadence USB3 DRD Driver")
Signed-off-by: Peter Chen <peter.chen@nxp.com>
Cc: stable <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20200219141455.23257-3-peter.chen@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/cdns3/gadget.c