mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-17 00:12:55 -04:00
usb: xhci: relocate Restore/Controller error check
A Restore Error or Host Controller Error indicates that the host controller failed to resume after suspend. In such cases, the xhci driver is fully re-initialized, similar to a post-hibernation scenario. The existing error check is only relevant when 'power_lost' is false. If 'power_lost' is true, a Restore or Controller error has no effect: no warning is printed and the 'power_lost' state remains unchanged. Move the entire error check into the if '!power_lost' condition to make this dependency explicit and simplify the resume logic. Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> Signed-off-by: Niklas Neronin <niklas.neronin@linux.intel.com> Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> Link: https://patch.msgid.link/20260402131342.2628648-6-mathias.nyman@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
5ef760cf1c
commit
ab915ec99c
@@ -1140,16 +1140,13 @@ int xhci_resume(struct xhci_hcd *xhci, bool power_lost, bool is_auto_resume)
|
||||
spin_unlock_irq(&xhci->lock);
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
}
|
||||
|
||||
temp = readl(&xhci->op_regs->status);
|
||||
|
||||
/* re-initialize the HC on Restore Error, or Host Controller Error */
|
||||
if ((temp & (STS_SRE | STS_HCE)) &&
|
||||
!(xhci->xhc_state & XHCI_STATE_REMOVING)) {
|
||||
if (!power_lost)
|
||||
/* re-initialize the HC on Restore Error, or Host Controller Error */
|
||||
temp = readl(&xhci->op_regs->status);
|
||||
if ((temp & (STS_SRE | STS_HCE)) && !(xhci->xhc_state & XHCI_STATE_REMOVING)) {
|
||||
xhci_warn(xhci, "xHC error in resume, USBSTS 0x%x, Reinit\n", temp);
|
||||
power_lost = true;
|
||||
power_lost = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (power_lost) {
|
||||
|
||||
Reference in New Issue
Block a user