+ // \r
+ // Following as the above cases, it's safety to remove and create again.\r
+ //\r
+ Child = UsbFindChild (HubIf, Port);\r
+ \r
+ if (Child != NULL) {\r
+ DEBUG (( EFI_D_INFO, "UsbEnumeratePort: device at port %d removed from root hub %p\n", Port, HubIf));\r
+ UsbRemoveDevice (Child);\r
+ }\r
+ \r
+ if (USB_BIT_IS_SET (PortState.PortStatus, USB_PORT_STAT_CONNECTION)) {\r
+ //\r
+ // Now, new device connected, enumerate and configure the device \r
+ //\r
+ DEBUG (( EFI_D_INFO, "UsbEnumeratePort: new device connected at port %d\n", Port));\r
+ Status = UsbEnumerateNewDev (HubIf, Port);\r
+ \r
+ } else {\r
+ DEBUG (( EFI_D_INFO, "UsbEnumeratePort: device disconnected event on port %d\n", Port));\r
+ }\r
+ \r