]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.c
Merge in some fix from R8 on USB Bus driver:
[mirror_edk2.git] / MdeModulePkg / Bus / Usb / UsbBusDxe / UsbHub.c
index cb54f037479ea80c5b91a9b32a5815dbcd12ae3a..8d747d06482e2be3f8a2b54b75cad7aea68ac504 100644 (file)
@@ -553,7 +553,7 @@ UsbOnHubInterrupt (
                       );\r
 \r
     if (EFI_ERROR (Status)) {\r
-      USB_ERROR (("UsbOnHubInterrupt: failed to remove async transfer - %r\n", Status));\r
+      DEBUG (( EFI_D_ERROR, "UsbOnHubInterrupt: failed to remove async transfer - %r\n", Status));\r
       return Status;\r
     }\r
 \r
@@ -568,7 +568,7 @@ UsbOnHubInterrupt (
                       );\r
 \r
     if (EFI_ERROR (Status)) {\r
-      USB_ERROR (("UsbOnHubInterrupt: failed to submit new async transfer - %r\n", Status));\r
+      DEBUG (( EFI_D_ERROR, "UsbOnHubInterrupt: failed to submit new async transfer - %r\n", Status));\r
     }\r
 \r
     return Status;\r
@@ -668,20 +668,20 @@ UsbHubInit (
   }\r
 \r
   if (Index == Setting->Desc.NumEndpoints) {\r
-    USB_ERROR (("UsbHubInit: no interrupt endpoint found for hub %d\n", HubDev->Address));\r
+    DEBUG (( EFI_D_ERROR, "UsbHubInit: no interrupt endpoint found for hub %d\n", HubDev->Address));\r
     return EFI_DEVICE_ERROR;\r
   }\r
 \r
   Status = UsbHubReadDesc (HubDev, &HubDesc);\r
 \r
   if (EFI_ERROR (Status)) {\r
-    USB_ERROR (("UsbHubInit: failed to read HUB descriptor %r\n", Status));\r
+    DEBUG (( EFI_D_ERROR, "UsbHubInit: failed to read HUB descriptor %r\n", Status));\r
     return Status;\r
   }\r
 \r
   HubIf->NumOfPort = HubDesc.NumPorts;\r
 \r
-  USB_DEBUG (("UsbHubInit: hub %d has %d ports\n", HubDev->Address,HubIf->NumOfPort));\r
+  DEBUG (( EFI_D_INFO, "UsbHubInit: hub %d has %d ports\n", HubDev->Address,HubIf->NumOfPort));\r
 \r
   //\r
   // Create an event to enumerate the hub's port. On\r
@@ -695,7 +695,7 @@ UsbHubInit (
                   );\r
 \r
   if (EFI_ERROR (Status)) {\r
-    USB_ERROR (("UsbHubInit: failed to create signal for hub %d - %r\n",\r
+    DEBUG (( EFI_D_ERROR, "UsbHubInit: failed to create signal for hub %d - %r\n",\r
                 HubDev->Address, Status));\r
 \r
     return Status;\r
@@ -720,7 +720,7 @@ UsbHubInit (
                     );\r
 \r
   if (EFI_ERROR (Status)) {\r
-    USB_ERROR (("UsbHubInit: failed to queue interrupt transfer for hub %d - %r\n",\r
+    DEBUG (( EFI_D_ERROR, "UsbHubInit: failed to queue interrupt transfer for hub %d - %r\n",\r
                 HubDev->Address, Status));\r
 \r
     gBS->CloseEvent (HubIf->HubNotify);\r
@@ -750,7 +750,7 @@ UsbHubInit (
   gBS->Stall (HubDesc.PwrOn2PwrGood * 2 * USB_STALL_1_MS);\r
   UsbHubAckHubStatus (HubIf->Device);\r
 \r
-  USB_DEBUG (("UsbHubInit: hub %d initialized\n", HubDev->Address));\r
+  DEBUG (( EFI_D_INFO, "UsbHubInit: hub %d initialized\n", HubDev->Address));\r
   return Status;\r
 }\r
 \r
@@ -979,7 +979,7 @@ UsbHubRelease (
   HubIf->HubEp      = NULL;\r
   HubIf->HubNotify  = NULL;\r
 \r
-  USB_DEBUG (("UsbHubRelease: hub device %d released\n", HubIf->Device->Address));\r
+  DEBUG (( EFI_D_INFO, "UsbHubRelease: hub device %d released\n", HubIf->Device->Address));\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -1011,7 +1011,7 @@ UsbRootHubInit (
     return Status;\r
   }\r
 \r
-  USB_DEBUG (("UsbRootHubInit: root hub %x - max speed %d, %d ports\n",\r
+  DEBUG (( EFI_D_INFO, "UsbRootHubInit: root hub %x - max speed %d, %d ports\n",\r
               HubIf, MaxSpeed, NumOfPort));\r
 \r
   HubIf->IsHub      = TRUE;\r
@@ -1036,6 +1036,12 @@ UsbRootHubInit (
     return Status;\r
   }\r
 \r
+  //\r
+  // It should signal the event immediately here, or device detection\r
+  // by bus enumeration might be delayed by the timer interval.\r
+  //\r
+  gBS->SignalEvent (HubIf->HubNotify);\r
+\r
   Status = gBS->SetTimer (\r
                   HubIf->HubNotify,\r
                   TimerPeriodic,\r
@@ -1216,7 +1222,7 @@ UsbRootHubResetPort (
   Status  = UsbHcSetRootHubPortFeature (Bus, Port, EfiUsbPortReset);\r
 \r
   if (EFI_ERROR (Status)) {\r
-    USB_ERROR (("UsbRootHubResetPort: failed to start reset on port %d\n", Port));\r
+    DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: failed to start reset on port %d\n", Port));\r
     return Status;\r
   }\r
 \r
@@ -1229,7 +1235,7 @@ UsbRootHubResetPort (
   Status = UsbHcClearRootHubPortFeature (Bus, Port, EfiUsbPortReset);\r
 \r
   if (EFI_ERROR (Status)) {\r
-    USB_ERROR (("UsbRootHubResetPort: failed to clear reset on port %d\n", Port));\r
+    DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: failed to clear reset on port %d\n", Port));\r
     return Status;\r
   }\r
 \r
@@ -1256,7 +1262,7 @@ UsbRootHubResetPort (
   }\r
 \r
   if (Index == USB_HUB_LOOP) {\r
-    USB_ERROR (("UsbRootHubResetPort: reset not finished in time on port %d\n", Port));\r
+    DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: reset not finished in time on port %d\n", Port));\r
     return EFI_TIMEOUT;\r
   }\r
 \r
@@ -1268,7 +1274,7 @@ UsbRootHubResetPort (
     // automatically enable the port, we need to enable it manually.\r
     //\r
     if (RootIf->MaxSpeed == EFI_USB_SPEED_HIGH) {\r
-      USB_ERROR (("UsbRootHubResetPort: release low/full speed device (%d) to UHCI\n", Port));\r
+      DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: release low/full speed device (%d) to UHCI\n", Port));\r
 \r
       UsbRootHubSetPortFeature (RootIf, Port, EfiUsbPortOwner);\r
       return EFI_NOT_FOUND;\r
@@ -1278,7 +1284,7 @@ UsbRootHubResetPort (
       Status = UsbRootHubSetPortFeature (RootIf, Port, EfiUsbPortEnable);\r
 \r
       if (EFI_ERROR (Status)) {\r
-        USB_ERROR (("UsbRootHubResetPort: failed to enable port %d for UHCI\n", Port));\r
+        DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: failed to enable port %d for UHCI\n", Port));\r
         return Status;\r
       }\r
 \r
@@ -1305,7 +1311,7 @@ UsbRootHubRelease (
   IN USB_INTERFACE        *HubIf\r
   )\r
 {\r
-  USB_DEBUG (("UsbRootHubRelease: root hub released for hub %x\n", HubIf));\r
+  DEBUG (( EFI_D_INFO, "UsbRootHubRelease: root hub released for hub %x\n", HubIf));\r
 \r
   gBS->SetTimer (HubIf->HubNotify, TimerCancel, USB_ROOTHUB_POLL_INTERVAL);\r
   gBS->CloseEvent (HubIf->HubNotify);\r