Fix vhub engine stop dma register setting.
Subsystems (2)
Ryan Chen
reviewercover Fix vhub engine stop dma register setting.
This patch fixes vhub engine stop dma should have different register setting.
Ryan Chen (1):
usb: gadget: aspeed: fix stop dma register setting.
drivers/usb/gadget/udc/aspeed-vhub/epn.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
Signature · 1 line
2.17.1
Ryan Chen
reviewerPATCH 1/1 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
--- drivers/usb/gadget/udc/aspeed-vhub/epn.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/usb/gadget/udc/aspeed-vhub/epn.c +4 -1
@@ -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++) {
Signature · 1 line
2.17.1
Re: [PATCH 1/1] usb: gadget: aspeed: fix stop dma register setting.
Hi,
Quoted 6 lines · Ryan Chen
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 <[email protected]>
I don't have HW, but FWIW:
Signature · 1 line
balbi
Re: [PATCH 1/1] usb: gadget: aspeed: fix stop dma register setting.
In reply to Ryan ChenQuoted 16 lines · Ryan Chen
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 <[email protected]>--- drivers/usb/gadget/udc/aspeed-vhub/epn.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)drivers/usb/gadget/udc/aspeed-vhub/epn.c +0
-0
drivers/usb/gadget/udc/aspeed-vhub/epn.c static void ast_vhub_stop_active_req(struct ast_vhub_ep *ep, · line 426
Quoted 8 lines
drivers/usb/gadget/udc/aspeed-vhub/epn.c +4
-1@@ -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 );
This looks correct, as whenever the driver re-enables DMA it uses ep->epn.dma_conf for the value of this register. So we're not losing any configuration by setting it to 0.
I've cc'd Ben for his ack too.
Cheers,
Joel
Quoted 6 lines
drivers/usb/gadget/udc/aspeed-vhub/epn.c +0
-1/* Wait for it to complete */ for (loops =0 ; loops <1000 ; loops++) { --2.17.1