/** Enumerate all the changed hub ports. @param Event The event that is triggered. @param Context The context to the event. **/ VOID EFIAPI UsbRootHubEnumeration ( IN EFI_EVENT Event, IN VOID *Context ) { USB_INTERFACE *RootHub; UINT8 Index; USB_DEVICE *Child; RootHub = (USB_INTERFACE *) Context; if (!RootHub) { return; } DBG("USB event happen, NumOfPort=%d\n", RootHub->NumOfPort); for (Index = 0; Index < RootHub->NumOfPort; Index++) { Child = UsbFindChild (RootHub, Index); if ((Child != NULL) && (Child->DisconnectFail == TRUE)) { // DEBUG (( EFI_D_INFO, "UsbEnumeratePort: The device disconnect fails at port %d from root hub %p, try again\n", Index, RootHub)); DBG("UsbEnumeratePort: The device disconnect fails at port %d from root hub %p, try again\n", Index, RootHub); UsbRemoveDevice (Child); DBG("device removed\n"); } UsbEnumeratePort (RootHub, Index); } }
VOID EFIAPI UsbRootHubEnumeration ( IN EFI_EVENT Event, IN VOID *Context ) /*++ Routine Description: Enumerate all the changed hub ports Arguments: Event - The event that is triggered Context - The context to the event Returns: None --*/ { USB_INTERFACE *RootHub; UINT8 Index; RootHub = (USB_INTERFACE *) Context; for (Index = 0; Index < RootHub->NumOfPort; Index++) { UsbEnumeratePort (RootHub, Index); } }
VOID EFIAPI UsbHubEnumeration ( IN EFI_EVENT Event, IN VOID *Context ) /*++ Routine Description: Enumerate all the changed hub ports Arguments: Event - The event that is triggered Context - The context to the event Returns: None --*/ { USB_INTERFACE *HubIf; UINT8 Byte; UINT8 Bit; UINT8 Index; ASSERT (Context); HubIf = (USB_INTERFACE *) Context; if (HubIf->ChangeMap == NULL) { return ; } // // HUB starts its port index with 1. // Byte = 0; Bit = 1; for (Index = 0; Index < HubIf->NumOfPort; Index++) { if (USB_BIT_IS_SET (HubIf->ChangeMap[Byte], USB_BIT (Bit))) { UsbEnumeratePort (HubIf, Index); } USB_NEXT_BIT (Byte, Bit); } UsbHubAckHubStatus (HubIf->Device); gBS->FreePool (HubIf->ChangeMap); HubIf->ChangeMap = NULL; return ; }
/** Enumerate all the changed hub ports. @param Event The event that is triggered. @param Context The context to the event. **/ VOID EFIAPI UsbHubEnumeration ( IN EFI_EVENT Event, IN VOID *Context ) { USB_INTERFACE *HubIf; UINT8 Byte; UINT8 Bit; UINT8 Index; USB_DEVICE *Child; // ASSERT (Context != NULL); if (!Context) { return; } HubIf = (USB_INTERFACE *) Context; for (Index = 0; Index < HubIf->NumOfPort; Index++) { Child = UsbFindChild (HubIf, Index); if ((Child != NULL) && (Child->DisconnectFail == TRUE)) { // DEBUG (( EFI_D_INFO, "UsbEnumeratePort: The device disconnect fails at port %d from hub %p, try again\n", Index, HubIf)); DBG("UsbEnumeratePort: The device disconnect fails at port %d from hub %p, try again\n", Index, HubIf); UsbRemoveDevice (Child); } } if (HubIf->ChangeMap == NULL) { return ; } // // HUB starts its port index with 1. // Byte = 0; Bit = 1; DBG("Enumerate %d ports\n", HubIf->NumOfPort); for (Index = 0; Index < HubIf->NumOfPort; Index++) { if (USB_BIT_IS_SET (HubIf->ChangeMap[Byte], USB_BIT (Bit))) { UsbEnumeratePort (HubIf, Index); DBG("Port %d enumerated\n", Index); } USB_NEXT_BIT (Byte, Bit); } UsbHubAckHubStatus (HubIf->Device); gBS->FreePool (HubIf->ChangeMap); HubIf->ChangeMap = NULL; return ; }
/** Enumerate all the changed hub ports. @param Event The event that is triggered. @param Context The context to the event. **/ VOID EFIAPI UsbRootHubEnumeration ( IN EFI_EVENT Event, IN VOID *Context ) { USB_INTERFACE *RootHub; UINT8 Index; RootHub = (USB_INTERFACE *) Context; for (Index = 0; Index < RootHub->NumOfPort; Index++) { UsbEnumeratePort (RootHub, Index); } }
/** Enumerate all the changed hub ports. @param Event The event that is triggered. @param Context The context to the event. **/ VOID EFIAPI UsbHubEnumeration ( IN EFI_EVENT Event, IN VOID *Context ) { USB_INTERFACE *HubIf; UINT8 Byte; UINT8 Bit; UINT8 Index; ASSERT (Context != NULL); HubIf = (USB_INTERFACE *) Context; if (HubIf->ChangeMap == NULL) { return ; } // // HUB starts its port index with 1. // Byte = 0; Bit = 1; for (Index = 0; Index < HubIf->NumOfPort; Index++) { if (USB_BIT_IS_SET (HubIf->ChangeMap[Byte], USB_BIT (Bit))) { UsbEnumeratePort (HubIf, Index); } USB_NEXT_BIT (Byte, Bit); } UsbHubAckHubStatus (HubIf->Device); gBS->FreePool (HubIf->ChangeMap); HubIf->ChangeMap = NULL; return ; }