\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
//\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
// [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
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
\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