blob: 738d9b28293805db5921946e2f9d0f93371bd31c [file] [log] [blame]
developerba28e032021-12-07 10:40:00 +08001From b4048b5efd1ac39f85d86dedbf54a9b614d17d64 Mon Sep 17 00:00:00 2001
developer9cd822e2021-06-24 09:16:06 +08002From: Zhanyong Wang <zhanyong.wang@mediatek.com>
3Date: Thu, 27 May 2021 11:44:17 +0800
developerba28e032021-12-07 10:40:00 +08004Subject: [PATCH 1/2] xHCI: MT7986 USB 2.0 USBIF compliance toolkit
developer9cd822e2021-06-24 09:16:06 +08005
6MT7986 USB 2.0 USBIF compliance toolkit
7
8Signed-off-by: Zhanyong Wang <zhanyong.wang@mediatek.com>
9---
10 drivers/usb/host/Kconfig | 9 +++++++++
developerba28e032021-12-07 10:40:00 +080011 drivers/usb/host/Makefile | 8 ++++++++
12 drivers/usb/host/xhci-mtk.c | 5 ++++-
13 drivers/usb/host/xhci-mtk.h | 7 +++++++
developer9cd822e2021-06-24 09:16:06 +080014 drivers/usb/host/xhci.c | 2 +-
15 drivers/usb/host/xhci.h | 1 +
developerba28e032021-12-07 10:40:00 +080016 6 files changed, 30 insertions(+), 2 deletions(-)
developer9cd822e2021-06-24 09:16:06 +080017
18diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
19index 79b2e79dddd0..12b1bf9aa043 100644
20--- a/drivers/usb/host/Kconfig
21+++ b/drivers/usb/host/Kconfig
22@@ -69,6 +69,15 @@ config USB_XHCI_MTK
23 found in MediaTek SoCs.
24 If unsure, say N.
25
26+config USB_XHCI_MTK_DEBUGFS
27+ tristate "xHCI DEBUGFS support for Mediatek MT65xx"
28+ depends on USB_XHCI_MTK && DEBUG_FS
29+ default y
30+ ---help---
31+ Say 'Y' to enable the debugfs support for the xHCI host controller
32+ found in Mediatek MT65xx SoCs.
33+ If don't need, say N.
34+
35 config USB_XHCI_MVEBU
36 tristate "xHCI support for Marvell Armada 375/38x/37xx"
37 select USB_XHCI_PLATFORM
38diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile
developerba28e032021-12-07 10:40:00 +080039index b191361257cc..704237831a58 100644
developer9cd822e2021-06-24 09:16:06 +080040--- a/drivers/usb/host/Makefile
41+++ b/drivers/usb/host/Makefile
developerba28e032021-12-07 10:40:00 +080042@@ -21,6 +21,14 @@ endif
developer9cd822e2021-06-24 09:16:06 +080043
44 ifneq ($(CONFIG_USB_XHCI_MTK), )
45 xhci-hcd-y += xhci-mtk-sch.o
developerba28e032021-12-07 10:40:00 +080046+ xhci-hcd-$(CONFIG_USB_XHCI_MTK_DEBUGFS) += xhci-mtk-test.o
47+ xhci-hcd-$(CONFIG_USB_XHCI_MTK_DEBUGFS) += xhci-mtk-unusual.o
48+ xhci-hcd-$(CONFIG_USB_XHCI_MTK_DEBUGFS) += xhci-mtk-intr-en.o
49+ xhci-hcd-$(CONFIG_USB_XHCI_MTK_DEBUGFS) += xhci-mtk-vrt-vref.o
50+ xhci-hcd-$(CONFIG_USB_XHCI_MTK_DEBUGFS) += xhci-mtk-term-vref.o
51+ xhci-hcd-$(CONFIG_USB_XHCI_MTK_DEBUGFS) += xhci-mtk-hstx-srctrl.o
52+ xhci-hcd-$(CONFIG_USB_XHCI_MTK_DEBUGFS) += xhci-mtk-discth.o
53+ xhci-hcd-$(CONFIG_USB_XHCI_MTK_DEBUGFS) += xhci-mtk-chgdt-en.o
developer9cd822e2021-06-24 09:16:06 +080054 endif
55
56 xhci-plat-hcd-y := xhci-plat.o
57diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c
developerba28e032021-12-07 10:40:00 +080058index 5c0eb35cd007..8bd4c95a5435 100644
developer9cd822e2021-06-24 09:16:06 +080059--- a/drivers/usb/host/xhci-mtk.c
60+++ b/drivers/usb/host/xhci-mtk.c
developerba28e032021-12-07 10:40:00 +080061@@ -18,9 +18,10 @@
62 #include <linux/pm_runtime.h>
63 #include <linux/regmap.h>
64 #include <linux/regulator/consumer.h>
65-
66+#include <linux/usb/of.h>
developer9cd822e2021-06-24 09:16:06 +080067 #include "xhci.h"
68 #include "xhci-mtk.h"
developer9cd822e2021-06-24 09:16:06 +080069+#include "xhci-mtk-test.h"
developer9cd822e2021-06-24 09:16:06 +080070
71 /* ip_pw_ctrl0 register */
72 #define CTRL0_IP_SW_RST BIT(0)
developerba28e032021-12-07 10:40:00 +080073@@ -570,6 +571,7 @@ static int xhci_mtk_probe(struct platform_device *pdev)
developer9cd822e2021-06-24 09:16:06 +080074 ret = usb_add_hcd(xhci->shared_hcd, irq, IRQF_SHARED);
75 if (ret)
76 goto dealloc_usb2_hcd;
developerba28e032021-12-07 10:40:00 +080077+ hqa_create_attr(dev);
developer9cd822e2021-06-24 09:16:06 +080078
79 return 0;
80
developerba28e032021-12-07 10:40:00 +080081@@ -604,6 +606,7 @@ static int xhci_mtk_remove(struct platform_device *dev)
82 struct usb_hcd *hcd = mtk->hcd;
83 struct xhci_hcd *xhci = hcd_to_xhci(hcd);
84 struct usb_hcd *shared_hcd = xhci->shared_hcd;
85+ hqa_remove_attr(&dev->dev);
developer9cd822e2021-06-24 09:16:06 +080086
developerba28e032021-12-07 10:40:00 +080087 pm_runtime_put_noidle(&dev->dev);
88 pm_runtime_disable(&dev->dev);
developer9cd822e2021-06-24 09:16:06 +080089diff --git a/drivers/usb/host/xhci-mtk.h b/drivers/usb/host/xhci-mtk.h
developerba28e032021-12-07 10:40:00 +080090index 985e7a19f6f6..1540c66799d7 100644
developer9cd822e2021-06-24 09:16:06 +080091--- a/drivers/usb/host/xhci-mtk.h
92+++ b/drivers/usb/host/xhci-mtk.h
developerba28e032021-12-07 10:40:00 +080093@@ -158,6 +158,13 @@ struct xhci_hcd_mtk {
developer9cd822e2021-06-24 09:16:06 +080094 struct regmap *uwk;
95 u32 uwk_reg_base;
96 u32 uwk_vers;
97+
98+#ifdef CONFIG_USB_XHCI_MTK_DEBUGFS
developerba28e032021-12-07 10:40:00 +080099+ int test_mode;
100+ size_t hqa_size;
101+ u32 hqa_pos;
102+ char *hqa_buf;
developer9cd822e2021-06-24 09:16:06 +0800103+#endif
104 };
105
106 static inline struct xhci_hcd_mtk *hcd_to_mtk(struct usb_hcd *hcd)
107diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
developerba28e032021-12-07 10:40:00 +0800108index 4bb850370bb6..710ccbe5a3b8 100644
developer9cd822e2021-06-24 09:16:06 +0800109--- a/drivers/usb/host/xhci.c
110+++ b/drivers/usb/host/xhci.c
111@@ -713,7 +713,7 @@ EXPORT_SYMBOL_GPL(xhci_run);
112 * Disable device contexts, disable IRQs, and quiesce the HC.
113 * Reset the HC, finish any completed transactions, and cleanup memory.
114 */
115-static void xhci_stop(struct usb_hcd *hcd)
116+void xhci_stop(struct usb_hcd *hcd)
117 {
118 u32 temp;
119 struct xhci_hcd *xhci = hcd_to_xhci(hcd);
120diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
developerba28e032021-12-07 10:40:00 +0800121index 02df309e4409..3af400068324 100644
developer9cd822e2021-06-24 09:16:06 +0800122--- a/drivers/usb/host/xhci.h
123+++ b/drivers/usb/host/xhci.h
developerba28e032021-12-07 10:40:00 +0800124@@ -2067,6 +2067,7 @@ int xhci_halt(struct xhci_hcd *xhci);
developer9cd822e2021-06-24 09:16:06 +0800125 int xhci_start(struct xhci_hcd *xhci);
126 int xhci_reset(struct xhci_hcd *xhci);
127 int xhci_run(struct usb_hcd *hcd);
128+void xhci_stop(struct usb_hcd *hcd);
129 int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks);
130 void xhci_shutdown(struct usb_hcd *hcd);
131 void xhci_init_driver(struct hc_driver *drv,
132--
1332.18.0
134