From: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
To: Felipe Balbi <balbi@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Thinh.Nguyen@synopsys.com, linux-usb@vger.kernel.org,
Mathias Nyman <mathias.nyman@intel.com>
Cc: John Youn <John.Youn@synopsys.com>
Subject: [PATCH v2 5/7] usb: xhci: Rename Compliance mode timer quirk
Date: Fri, 09 Apr 2021 17:47:14 -0700 [thread overview]
Message-ID: <11cd7b9c481ca0be1a3a33a8c94443fd49a59b22.1618014279.git.Thinh.Nguyen@synopsys.com> (raw)
In-Reply-To: <cover.1618014279.git.Thinh.Nguyen@synopsys.com>
In preparation for a workaround that needs to poll for the port status,
rename the timer for XHCI_COMP_MODE_QUIRK to be more generic as it can
be used for the new workaround. No funtional change here.
Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
---
Changes in v2:
- None
drivers/usb/host/xhci-hub.c | 2 +-
drivers/usb/host/xhci.c | 41 +++++++++++++++++--------------------
drivers/usb/host/xhci.h | 8 ++++----
3 files changed, 24 insertions(+), 27 deletions(-)
diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
index e9b18fc17617..8bfafbd680ab 100644
--- a/drivers/usb/host/xhci-hub.c
+++ b/drivers/usb/host/xhci-hub.c
@@ -893,7 +893,7 @@ static void xhci_del_comp_mod_timer(struct xhci_hcd *xhci, u32 status,
if ((xhci->port_status_u0 != all_ports_seen_u0) && port_in_u0) {
xhci->port_status_u0 |= 1 << wIndex;
if (xhci->port_status_u0 == all_ports_seen_u0) {
- del_timer_sync(&xhci->comp_mode_recovery_timer);
+ del_timer_sync(&xhci->port_check_timer);
xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
"All USB3 ports have entered U0 already!");
xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index e1136a6b9372..e1b3d1063f6b 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -475,7 +475,7 @@ static inline void xhci_msix_sync_irqs(struct xhci_hcd *xhci)
#endif
-static void compliance_mode_recovery(struct timer_list *t)
+static void port_check(struct timer_list *t)
{
struct xhci_hcd *xhci;
struct usb_hcd *hcd;
@@ -483,7 +483,7 @@ static void compliance_mode_recovery(struct timer_list *t)
u32 temp;
int i;
- xhci = from_timer(xhci, t, comp_mode_recovery_timer);
+ xhci = from_timer(xhci, t, port_check_timer);
rhub = &xhci->usb3_rhub;
for (i = 0; i < rhub->num_ports; i++) {
@@ -508,8 +508,8 @@ static void compliance_mode_recovery(struct timer_list *t)
}
if (xhci->port_status_u0 != ((1 << rhub->num_ports) - 1))
- mod_timer(&xhci->comp_mode_recovery_timer,
- jiffies + msecs_to_jiffies(COMP_MODE_RCVRY_MSECS));
+ mod_timer(&xhci->port_check_timer,
+ jiffies + msecs_to_jiffies(PORT_CHECK_MSECS));
}
/*
@@ -522,15 +522,14 @@ static void compliance_mode_recovery(struct timer_list *t)
* status event is generated when entering compliance mode (per xhci spec),
* this quirk is needed on systems that have the failing hardware installed.
*/
-static void compliance_mode_recovery_timer_init(struct xhci_hcd *xhci)
+static void port_check_timer_init(struct xhci_hcd *xhci)
{
xhci->port_status_u0 = 0;
- timer_setup(&xhci->comp_mode_recovery_timer, compliance_mode_recovery,
- 0);
- xhci->comp_mode_recovery_timer.expires = jiffies +
- msecs_to_jiffies(COMP_MODE_RCVRY_MSECS);
+ timer_setup(&xhci->port_check_timer, port_check, 0);
+ xhci->port_check_timer.expires = jiffies +
+ msecs_to_jiffies(PORT_CHECK_MSECS);
- add_timer(&xhci->comp_mode_recovery_timer);
+ add_timer(&xhci->port_check_timer);
xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
"Compliance mode recovery timer initialized");
}
@@ -596,7 +595,7 @@ static int xhci_init(struct usb_hcd *hcd)
/* Initializing Compliance Mode Recovery Data If Needed */
if (xhci_compliance_mode_recovery_timer_quirk_check()) {
xhci->quirks |= XHCI_COMP_MODE_QUIRK;
- compliance_mode_recovery_timer_init(xhci);
+ port_check_timer_init(xhci);
}
return retval;
@@ -739,10 +738,9 @@ static void xhci_stop(struct usb_hcd *hcd)
/* Deleting Compliance Mode Recovery Timer */
if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) &&
(!(xhci_all_ports_seen_u0(xhci)))) {
- del_timer_sync(&xhci->comp_mode_recovery_timer);
+ del_timer_sync(&xhci->port_check_timer);
xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
- "%s: compliance mode recovery timer deleted",
- __func__);
+ "%s: port check timer deleted", __func__);
}
if (xhci->quirks & XHCI_AMD_PLL_FIX)
@@ -1057,15 +1055,14 @@ int xhci_suspend(struct xhci_hcd *xhci, bool do_wakeup)
spin_unlock_irq(&xhci->lock);
/*
- * Deleting Compliance Mode Recovery Timer because the xHCI Host
+ * Deleting Port Check Timer because the xHCI Host
* is about to be suspended.
*/
if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) &&
(!(xhci_all_ports_seen_u0(xhci)))) {
- del_timer_sync(&xhci->comp_mode_recovery_timer);
+ del_timer_sync(&xhci->port_check_timer);
xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
- "%s: compliance mode recovery timer deleted",
- __func__);
+ "%s: port check timer deleted", __func__);
}
/* step 5: remove core well power */
@@ -1150,9 +1147,9 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) &&
!(xhci_all_ports_seen_u0(xhci))) {
- del_timer_sync(&xhci->comp_mode_recovery_timer);
+ del_timer_sync(&xhci->port_check_timer);
xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
- "Compliance Mode Recovery Timer deleted!");
+ "Port Check Timer deleted!");
}
/* Let the USB core know _both_ roothubs lost power. */
@@ -1245,13 +1242,13 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
}
}
/*
- * If system is subject to the Quirk, Compliance Mode Timer needs to
+ * If system is subject to the Quirk, Port Check Timer needs to
* be re-initialized Always after a system resume. Ports are subject
* to suffer the Compliance Mode issue again. It doesn't matter if
* ports have entered previously to U0 before system's suspension.
*/
if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) && !comp_timer_running)
- compliance_mode_recovery_timer_init(xhci);
+ port_check_timer_init(xhci);
if (xhci->quirks & XHCI_ASMEDIA_MODIFY_FLOWCONTROL)
usb_asmedia_modifyflowcontrol(to_pci_dev(hcd->self.controller));
diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
index 27d2c1176dd1..b52b7dcb5bb9 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1862,12 +1862,12 @@ struct xhci_hcd {
/* cached extended protocol port capabilities */
struct xhci_port_cap *port_caps;
unsigned int num_port_caps;
- /* Compliance Mode Recovery Data */
- struct timer_list comp_mode_recovery_timer;
+ /* For quirks that require to poll for port status */
+ struct timer_list port_check_timer;
u32 port_status_u0;
u16 test_mode;
-/* Compliance Mode Timer Triggered every 2 seconds */
-#define COMP_MODE_RCVRY_MSECS 2000
+/* Port polling frequency */
+#define PORT_CHECK_MSECS 2000
/* Track max eSS interval for XHCI_ISOC_BLOCKED_DISCONNECT */
unsigned int max_ess_interval;
--
2.28.0
next prev parent reply other threads:[~2021-04-10 0:47 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-09 1:41 [PATCH 0/6] usb: Set quirks for xhci/dwc3 host mode Thinh Nguyen
2021-04-09 1:41 ` [PATCH 1/6] usb: xhci: Move quirks definitions to common usb header Thinh Nguyen
2021-04-09 6:50 ` Greg Kroah-Hartman
2021-04-09 8:01 ` Thinh Nguyen
2021-04-09 16:26 ` kernel test robot
2021-04-09 19:54 ` kernel test robot
2021-04-09 1:42 ` [PATCH 2/6] usb: xhci: Check for blocked disconnection Thinh Nguyen
2021-04-09 1:42 ` [PATCH 3/6] usb: xhci: Workaround undercalculated BW for fullspeed BI Thinh Nguyen
2021-04-09 1:42 ` [PATCH 4/6] usb: xhci: Rename Compliance mode timer quirk Thinh Nguyen
2021-04-09 1:42 ` [PATCH 5/6] usb: xhci: Workaround lost disconnect port status Thinh Nguyen
2021-04-09 1:42 ` [PATCH 6/6] usb: dwc3: host: Set quirks base on version Thinh Nguyen
2021-04-09 6:53 ` Greg Kroah-Hartman
2021-04-09 8:01 ` Thinh Nguyen
2021-04-09 13:22 ` Greg Kroah-Hartman
2021-04-10 0:44 ` Thinh Nguyen
2021-04-10 0:46 ` [PATCH v2 0/7] usb: Set quirks for xhci/dwc3 host mode Thinh Nguyen
2021-04-10 0:46 ` [PATCH v2 1/7] usb: xhci: Move quirks definitions to common usb header Thinh Nguyen
2021-04-10 0:46 ` [PATCH v2 2/7] usb: xhci: Move xhci-plat header " Thinh Nguyen
2021-04-10 0:47 ` [PATCH v2 3/7] usb: xhci: Check for blocked disconnection Thinh Nguyen
2021-04-27 13:08 ` Mathias Nyman
2021-04-27 22:30 ` Thinh Nguyen
2021-04-28 13:32 ` Mathias Nyman
2021-04-29 0:54 ` Thinh Nguyen
2021-04-10 0:47 ` [PATCH v2 4/7] usb: xhci: Workaround undercalculated BW for fullspeed BI Thinh Nguyen
2021-04-28 11:57 ` Mathias Nyman
2021-04-10 0:47 ` Thinh Nguyen [this message]
2021-04-10 0:47 ` [PATCH v2 6/7] usb: xhci: Workaround lost disconnect port status Thinh Nguyen
2021-04-28 13:48 ` Mathias Nyman
2021-04-29 1:00 ` Thinh Nguyen
2021-04-10 0:47 ` [PATCH v2 7/7] usb: dwc3: host: Set quirks base on version Thinh Nguyen
2021-04-19 21:07 ` [PATCH v2 0/7] usb: Set quirks for xhci/dwc3 host mode Thinh Nguyen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=11cd7b9c481ca0be1a3a33a8c94443fd49a59b22.1618014279.git.Thinh.Nguyen@synopsys.com \
--to=thinh.nguyen@synopsys.com \
--cc=John.Youn@synopsys.com \
--cc=balbi@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-usb@vger.kernel.org \
--cc=mathias.nyman@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).