devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] usb: xhci: fix interrupt transfer error happened on MTK platforms
@ 2018-09-07  5:51 Chunfeng Yun
  2018-09-07  6:31 ` [SPAM][PATCH] " Sean Wang
  0 siblings, 1 reply; 3+ messages in thread
From: Chunfeng Yun @ 2018-09-07  5:51 UTC (permalink / raw)
  To: Mathias Nyman
  Cc: Greg Kroah-Hartman, Felipe Balbi, Matthias Brugger, Chunfeng Yun,
	linux-usb, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek

The MTK xHCI controller use some reserved bytes in endpoint context for
bandwidth scheduling, so need keep them in xhci_endpoint_copy();

The issue is introduced by:
commit f5249461b504 ("xhci: Clear the host side toggle manually when
endpoint is soft reset")
It resets endpoints and will drop bandwidth scheduling parameters used
by interrupt or isochronous endpoints on MTK xHCI controller.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
 drivers/usb/host/xhci-mem.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
index ef350c3..b1f27aa 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
@@ -1613,6 +1613,10 @@ void xhci_endpoint_copy(struct xhci_hcd *xhci,
 	in_ep_ctx->ep_info2 = out_ep_ctx->ep_info2;
 	in_ep_ctx->deq = out_ep_ctx->deq;
 	in_ep_ctx->tx_info = out_ep_ctx->tx_info;
+	if (xhci->quirks & XHCI_MTK_HOST) {
+		in_ep_ctx->reserved[0] = out_ep_ctx->reserved[0];
+		in_ep_ctx->reserved[1] = out_ep_ctx->reserved[1];
+	}
 }
 
 /* Copy output xhci_slot_ctx to the input xhci_slot_ctx.
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-09-07  7:21 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-09-07  5:51 [PATCH] usb: xhci: fix interrupt transfer error happened on MTK platforms Chunfeng Yun
2018-09-07  6:31 ` [SPAM][PATCH] " Sean Wang
2018-09-07  7:21   ` Chunfeng Yun

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).