hrev53854 adds 1 changeset to branch 'master'
old head: 0e280da525d18b9ca2da5e36f16b6b29993a6d75
new head: f62329b34d55358d86bbd79660561fd42008f643
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=f62329b34d55+%5E0e280da525d1
----------------------------------------------------------------------------
f62329b34d55: USB: Explore ports when something is connected without a status
change.
It seems that many controllers do not report status changes following
the hand-off from the BIOS, so we were never probing those ports
and reporting the devices attached to them.
The BSDs do something similar (although it seems to only do this
on the first explore, not always.)
This fixes booting off of USB3 ports from most Intel controllers,
as well as a variety of others with similar behavior.
Fixes #15000.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev53854
Commit: f62329b34d55358d86bbd79660561fd42008f643
URL: https://git.haiku-os.org/haiku/commit/?id=f62329b34d55
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Sat Feb 8 21:32:38 2020 UTC
Ticket: https://dev.haiku-os.org/ticket/15000
----------------------------------------------------------------------------
1 file changed, 3 insertions(+), 1 deletion(-)
src/add-ons/kernel/bus_managers/usb/Hub.cpp | 4 +++-
----------------------------------------------------------------------------
diff --git a/src/add-ons/kernel/bus_managers/usb/Hub.cpp
b/src/add-ons/kernel/bus_managers/usb/Hub.cpp
index 5703b20055..01b6702ec0 100644
--- a/src/add-ons/kernel/bus_managers/usb/Hub.cpp
+++ b/src/add-ons/kernel/bus_managers/usb/Hub.cpp
@@ -212,7 +212,9 @@ Hub::Explore(change_item **changeList)
}
#endif
- if (fPortStatus[i].change & PORT_STATUS_CONNECTION) {
+ if ((fPortStatus[i].change & PORT_STATUS_CONNECTION)
+ || ((fPortStatus[i].status &
PORT_STATUS_CONNECTION)
+ && fChildren[i] == NULL)) {
// clear status change
DefaultPipe()->SendRequest(USB_REQTYPE_CLASS |
USB_REQTYPE_OTHER_OUT,
USB_REQUEST_CLEAR_FEATURE, C_PORT_CONNECTION, i
+ 1,