summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Chen <ryan_chen@aspeedtech.com>2021-01-08 11:12:38 +0300
committerYoo, Jae Hyun <jae.hyun.yoo@intel.com>2021-01-21 03:45:15 +0300
commit93d4923615630837c922448ca2737ce24c5f94c4 (patch)
treea0d07f7c6abe90105b79d7a31a8c9c2ae06ed7cb
parentb6f4b818b524ce1e819a5a5a13831627d8503692 (diff)
downloadlinux-93d4923615630837c922448ca2737ce24c5f94c4.tar.xz
usb: gadget: aspeed: fix stop dma register setting.
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 Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com> Acked-by: Joel Stanley <joel@jms.id.au> Change-Id: Ie4f4fa3e517580ba090d5fa3aef8729a5c8bb692
-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 0bd6b20435b8..02d8bfae58fb 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++) {