aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorMian Yousaf Kaukab <yousaf.kaukab@intel.com>2015-05-16 16:33:32 -0400
committerFelipe Balbi <balbi@ti.com>2015-05-26 11:39:56 -0400
commit3fc0a7c3d3539a4e57b249d1fb5b2ab80c075174 (patch)
treed19ac9d8afa7bf34d875db8901a02cb64a4e7f41 /drivers/usb
parente6ac4bb0590d6482f48a86a10884a9f2eb66c111 (diff)
usb: gadget: net2280: unconditionally reset dma in usb_reset
If ep->dma is set, abort_dma() takes care of dma clean-up. If ep->dma is not set, unconditionally reset dma channel. Tested-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> Signed-off-by: Mian Yousaf Kaukab <yousaf.kaukab@intel.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/gadget/udc/net2280.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/usb/gadget/udc/net2280.c b/drivers/usb/gadget/udc/net2280.c
index a91da3640ded..07e0dba3be07 100644
--- a/drivers/usb/gadget/udc/net2280.c
+++ b/drivers/usb/gadget/udc/net2280.c
@@ -1979,9 +1979,15 @@ static void usb_reset_338x(struct net2280 *dev)
1979 /* clear old dma and irq state */ 1979 /* clear old dma and irq state */
1980 for (tmp = 0; tmp < 4; tmp++) { 1980 for (tmp = 0; tmp < 4; tmp++) {
1981 struct net2280_ep *ep = &dev->ep[tmp + 1]; 1981 struct net2280_ep *ep = &dev->ep[tmp + 1];
1982 struct net2280_dma_regs __iomem *dma;
1982 1983
1983 if (ep->dma) 1984 if (ep->dma) {
1984 abort_dma(ep); 1985 abort_dma(ep);
1986 } else {
1987 dma = &dev->dma[tmp];
1988 writel(BIT(DMA_ABORT), &dma->dmastat);
1989 writel(0, &dma->dmactl);
1990 }
1985 } 1991 }
1986 1992
1987 writel(~0, &dev->regs->irqstat0), writel(~0, &dev->regs->irqstat1); 1993 writel(~0, &dev->regs->irqstat0), writel(~0, &dev->regs->irqstat1);