summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Chen <ryan_chen@aspeedtech.com>2021-01-08 16:12:38 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-01-27 11:05:41 +0100
commit317d6d0e50517b4585f7e5fbf493fc720d872d04 (patch)
tree497358f6fe84203b380144de21d929930098c74b
parent93782abb6d802c9ac12ffb3193daea4da7c4d6f8 (diff)
downloadlinux-317d6d0e50517b4585f7e5fbf493fc720d872d04.tar.gz
linux-317d6d0e50517b4585f7e5fbf493fc720d872d04.tar.bz2
linux-317d6d0e50517b4585f7e5fbf493fc720d872d04.zip
usb: gadget: aspeed: fix stop dma register setting.
commit 4e0dcf62ab4cf917d0cbe751b8bf229a065248d4 upstream. The vhub engine has two dma mode, one is descriptor list, another is single stage DMA. Each mode has different stop register setting. Descriptor list operation (bit2) : 0 disable reset, 1: enable reset Single mode operation (bit0) : 0 : disable, 1: enable Fixes: 7ecca2a4080c ("usb/gadget: Add driver for Aspeed SoC virtual hub") Cc: stable <stable@vger.kernel.org> Acked-by: Felipe Balbi <balbi@kernel.org> Acked-by: Joel Stanley <joel@jms.id.au> Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com> Link: https://lore.kernel.org/r/20210108081238.10199-2-ryan_chen@aspeedtech.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/usb/gadget/udc/aspeed-vhub/epn.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/usb/gadget/udc/aspeed-vhub/epn.c b/drivers/usb/gadget/udc/aspeed-vhub/epn.c
index 5939eb1e97f2..ae853cf36966 100644
--- a/drivers/usb/gadget/udc/aspeed-vhub/epn.c
+++ b/drivers/usb/gadget/udc/aspeed-vhub/epn.c
@@ -420,7 +420,10 @@ static void ast_vhub_stop_active_req(struct ast_vhub_ep *ep,
u32 state, reg, loops;
/* Stop DMA activity */
- writel(0, ep->epn.regs + AST_VHUB_EP_DMA_CTLSTAT);
+ if (ep->epn.desc_mode)
+ writel(VHUB_EP_DMA_CTRL_RESET, ep->epn.regs + AST_VHUB_EP_DMA_CTLSTAT);
+ else
+ writel(0, ep->epn.regs + AST_VHUB_EP_DMA_CTLSTAT);
/* Wait for it to complete */
for (loops = 0; loops < 1000; loops++) {