xhci: re-initialize the HC during resume if HCE was set
Subsystems (3)
PATCH v5 1/1 xhci: re-initialize the HC during resume if HCE was set
When HCE(Host Controller Error) is set, it means an internal error condition has been detected. Software needs to re-initialize the HC, so add this check in xhci resume.
---
v2: Follow Sergey Shtylyov <[email protected]>'s comment.
v3: Add [email protected] for stable release.
v4: Refine the commit message.
v5: Add a debug log. Follow Mathias Nyman <[email protected]>'s comment.
drivers/usb/host/xhci.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/usb/host/xhci.c +4 -2
@@ -1146,8 +1146,10 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) temp =readl (&xhci->op_regs->status); } -/* If restore operation fails, re-initialize the HC during resume */ -if ((temp &STS_SRE ) || hibernated) { +/* If restore operation fails or HC error is detected, re-initialize the HC during resume */ +if ((temp & (STS_SRE |STS_HCE )) || hibernated) { +xhci_warn (xhci,"re-initialize HC during resume, USBSTS:%s\n" , +xhci_decode_usbsts (str, temp));if ((xhci->quirks &XHCI_COMP_MODE_QUIRK ) && !(xhci_all_ports_seen_u0 (xhci))) {
Signature · 1 line
2.34.1.703.g22d0c6ccf7-goog
Quoted 23 lines · Puma Hsu
When HCE(Host Controller Error) is set, it means an internal error condition has been detected. Software needs to re-initialize the HC, so add this check in xhci resume.
Signed-off-by Puma Hsu <[email protected]>---
v2: Follow Sergey Shtylyov <[email protected]>'s comment.
v3: Add [email protected] for stable release.
v4: Refine the commit message.
v5: Add a debug log. Follow Mathias Nyman <[email protected]>'s comment.drivers/usb/host/xhci.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)drivers/usb/host/xhci.c +0
-0@@ -1146,8 +1146,10 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) temp =readl (&xhci->op_regs->status); }
drivers/usb/host/xhci.c int xhci_resume(struct xhci_hcd *xhci, bool hibernated) · line 1155
Quoted 10 lines
drivers/usb/host/xhci.c +4
-2-/* If restore operation fails, re-initialize the HC during resume */ -if ((temp &STS_SRE ) || hibernated) { +/* If restore operation fails or HC error is detected, re-initialize the HC during resume */ +if ((temp & (STS_SRE |STS_HCE )) || hibernated) { +xhci_warn (xhci,"re-initialize HC during resume, USBSTS:%s\n" , +xhci_decode_usbsts (str, temp));if ((xhci->quirks &XHCI_COMP_MODE_QUIRK ) && !(xhci_all_ports_seen_u0 (xhci))) {
Tried to compile, something is missing in this patch:
drivers/usb/host/xhci.c:1152:25: error: ‘str’ undeclared (first use in this function); did you mean ‘qstr’?
-Mathias
Quoted 32 lines · Mathias Nyman
Quoted 30 lines · Puma Hsu
When HCE(Host Controller Error) is set, it means an internal error condition has been detected. Software needs to re-initialize the HC, so add this check in xhci resume.
Signed-off-by Puma Hsu <[email protected]>---
v2: Follow Sergey Shtylyov <[email protected]>'s comment.
v3: Add [email protected] for stable release.
v4: Refine the commit message.
v5: Add a debug log. Follow Mathias Nyman <[email protected]>'s comment.drivers/usb/host/xhci.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)drivers/usb/host/xhci.c +4
-2@@ -1146,8 +1146,10 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) temp =readl (&xhci->op_regs->status); } -/* If restore operation fails, re-initialize the HC during resume */ -if ((temp &STS_SRE ) || hibernated) { +/* If restore operation fails or HC error is detected, re-initialize the HC during resume */ +if ((temp & (STS_SRE |STS_HCE )) || hibernated) { +xhci_warn (xhci,"re-initialize HC during resume, USBSTS:%s\n" , +xhci_decode_usbsts (str, temp));
Quoted 7 lines
drivers/usb/host/xhci.c int xhci_resume(struct xhci_hcd *xhci, bool hibernated) · line 1155
Quoted 3 lines
drivers/usb/host/xhci.c +0
-0if ((xhci->quirks &XHCI_COMP_MODE_QUIRK ) && !(xhci_all_ports_seen_u0 (xhci))) {Tried to compile, something is missing in this patch:
drivers/usb/host/xhci.c:1152:25: error: ‘str’ undeclared (first use in this function); did you mean ‘qstr’?
Sorry for missing the declaration, I will fix it.
Quoted 1 line
-Mathias