[haiku-commits] haiku: hrev53854 - src/add-ons/kernel/bus_managers/usb

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 8 Feb 2020 16:33:27 -0500 (EST)

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,


Other related posts:

  • » [haiku-commits] haiku: hrev53854 - src/add-ons/kernel/bus_managers/usb - waddlesplash