patch "xhci: prevent bus suspend if a roothub port detected a over-current" added to usb-linus
Subsystems (3)
This is a note to let you know that I've just added the patch titled
xhci: prevent bus suspend if a roothub port detected a over-current
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From e9fb08d617bfae5471d902112667d0eeb9dee3c4 Mon Sep 17 00:00:00 2001
From: Mathias Nyman <[email protected]>
Date: Tue, 21 Apr 2020 17:08:21 +0300
Subject: xhci: prevent bus suspend if a roothub port detected a over-current
condition
Suspending the bus and host controller while a port is in a over-current condition may halt the host.
Also keep the roothub running if over-current is active.
--- drivers/usb/host/xhci-hub.c | 9 +++++++++ 1 file changed, 9 insertions(+)
drivers/usb/host/xhci-hub.c +9 -0
@@ -1571,6 +1571,8 @@ int xhci_hub_status_data(struct usb_hcd *hcd, char *buf) }if ((temp &PORT_RC )) reset_change = true; +if (temp &PORT_OC ) + status =1 ; }if (!status && !reset_change) {xhci_dbg (xhci,"%s: stopping port polling.\n" , __func__);
@@ -1636,6 +1638,13 @@ int xhci_bus_suspend(struct usb_hcd *hcd) port_index); goto retry; } +/* bail out if port detected a over-current condition */ +if (t1 &PORT_OC ) { + bus_state->bus_suspended =0 ; +spin_unlock_irqrestore (&xhci->lock, flags); +xhci_dbg (xhci,"Bus suspend bailout, port over-current detected\n" ); +return -EBUSY ; + }/* suspend ports in U0, or bail out for new connect changes */ if ((t1 &PORT_PE ) && (t1 &PORT_PLS_MASK ) ==XDEV_U0 ) {if ((t1 &PORT_CSC ) && wake_enabled) {
Signature · 1 line
2.26.2