]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/UsbBusDxe: Timing tunning for better boot performance.
authorerictian <erictian@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 10 Oct 2012 02:46:06 +0000 (02:46 +0000)
committererictian <erictian@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 10 Oct 2012 02:46:06 +0000 (02:46 +0000)
Signed-off-by: Feng Tian <feng.tian@intel.com>
Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13809 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.h
MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.c
MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.h

index ad2f95261bbda3351f24306fbd939d5bd8a8a335..094aea21cd13263cc911387305e7d082f58b4d69 100644 (file)
@@ -60,10 +60,10 @@ typedef struct _USB_HUB_API    USB_HUB_API;
 \r
 //\r
 // Roothub and hub's polling interval, set by experience,\r
-// The unit of roothub is 100us, means 1s as interval, and\r
+// The unit of roothub is 100us, means 100ms as interval, and\r
 // the unit of hub is 1ms, means 64ms as interval.\r
 //\r
-#define USB_ROOTHUB_POLL_INTERVAL (1000 * 10000U)\r
+#define USB_ROOTHUB_POLL_INTERVAL (100 * 10000U)\r
 #define USB_HUB_POLL_INTERVAL     64\r
 \r
 //\r
@@ -75,13 +75,13 @@ typedef struct _USB_HUB_API    USB_HUB_API;
 //\r
 // Wait for port statue reg change, set by experience\r
 //\r
-#define USB_WAIT_PORT_STS_CHANGE_STALL (5 * USB_BUS_1_MILLISECOND)\r
+#define USB_WAIT_PORT_STS_CHANGE_STALL (100)\r
 \r
 //\r
 // Wait for set device address, refers to specification\r
 // [USB20-9.2.6.3, it says 2ms]\r
 //\r
-#define USB_SET_DEVICE_ADDRESS_STALL   (20 * USB_BUS_1_MILLISECOND)\r
+#define USB_SET_DEVICE_ADDRESS_STALL   (2 * USB_BUS_1_MILLISECOND)\r
 \r
 //\r
 // Wait for retry max packet size, set by experience\r
@@ -99,7 +99,7 @@ typedef struct _USB_HUB_API    USB_HUB_API;
 // [USB20-7.1.7.5, it says 10ms for hub and 50ms for\r
 // root hub]\r
 //\r
-#define USB_SET_PORT_RESET_STALL       (20 * USB_BUS_1_MILLISECOND)\r
+#define USB_SET_PORT_RESET_STALL       (10 * USB_BUS_1_MILLISECOND)\r
 #define USB_SET_ROOT_PORT_RESET_STALL  (50 * USB_BUS_1_MILLISECOND)\r
 \r
 //\r
index 78af917ca0400826b53352e4841a2165a76b1397..2d24bb4b8a23484a2f6fea429a28d727af4c5df6 100644 (file)
@@ -763,7 +763,12 @@ UsbHubInit (
       UsbHubCtrlSetPortFeature (HubIf->Device, Index, (EFI_USB_PORT_FEATURE) USB_HUB_PORT_POWER);\r
     }\r
 \r
-    gBS->Stall (HubDesc.PwrOn2PwrGood * USB_SET_PORT_POWER_STALL);\r
+    //\r
+    // Update for the usb hub has no power on delay requirement\r
+    //\r
+    if (HubDesc.PwrOn2PwrGood > 0) {\r
+      gBS->Stall (HubDesc.PwrOn2PwrGood * USB_SET_PORT_POWER_STALL);\r
+    }\r
     UsbHubAckHubStatus (HubIf->Device);\r
   }\r
 \r
index c7ee16db468c67ea1beec4900c65c173c2553d62..4e5fcd85e0af60204c2831a66a2f8f5eac48a63d 100644 (file)
@@ -97,9 +97,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 //\r
 // Host software return timeout if port status doesn't change \r
-// after 500ms(LOOP * STALL = 100 * 5ms), set by experience\r
+// after 500ms(LOOP * STALL = 5000 * 0.1ms), set by experience\r
 //\r
-#define USB_WAIT_PORT_STS_CHANGE_LOOP  100\r
+#define USB_WAIT_PORT_STS_CHANGE_LOOP  5000\r
 \r
 #pragma pack(1)\r
 //\r