UINTN Index;\r
EFI_STATUS Status;\r
\r
+ Status = UsbHubGetPortStatus (HubIf, Port, &PortState);\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ } else if (USB_BIT_IS_SET (PortState.PortChangeStatus, USB_PORT_STAT_C_RESET)) {\r
+ DEBUG (( EFI_D_INFO, "UsbHubResetPort: skip reset on hub %p port %d\n", HubIf, Port));\r
+ return EFI_SUCCESS;\r
+ }\r
+\r
Status = UsbHubSetPortFeature (HubIf, Port, (EFI_USB_PORT_FEATURE) USB_HUB_PORT_RESET);\r
\r
if (EFI_ERROR (Status)) {\r
// should be handled in the EHCI driver.\r
//\r
Bus = RootIf->Device->Bus;\r
+\r
+ Status = UsbHcGetRootHubPortStatus (Bus, Port, &PortState);\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ } else if (USB_BIT_IS_SET (PortState.PortChangeStatus, USB_PORT_STAT_C_RESET)) {\r
+ DEBUG (( EFI_D_INFO, "UsbRootHubResetPort: skip reset on root port %d\n", Port));\r
+ return EFI_SUCCESS;\r
+ }\r
+\r
Status = UsbHcSetRootHubPortFeature (Bus, Port, EfiUsbPortReset);\r
\r
if (EFI_ERROR (Status)) {\r