mirror of https://github.com/acidanthera/audk.git
Merge in some fix from R8 on USB Bus driver:
1) Signal event immediately after HUB UsbRootHubEnumeration event is installed 2) Move UsbHcReset and UsbHcSetState before mUsbRootHubApi.Init 3) Change USB_DEBUG and USB_ERROR to R9 DEBUG macro. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3680 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
6f5554bd58
commit
d2577026d3
|
@ -208,7 +208,7 @@ UsbCreateDesc (
|
||||||
|
|
||||||
if ((Len <= Offset) || (Len < Offset + DescLen) ||
|
if ((Len <= Offset) || (Len < Offset + DescLen) ||
|
||||||
(Head->Type != Type) || (Head->Len != DescLen)) {
|
(Head->Type != Type) || (Head->Len != DescLen)) {
|
||||||
USB_ERROR (("UsbCreateDesc: met mal-format descriptor\n"));
|
DEBUG (( EFI_D_ERROR, "UsbCreateDesc: met mal-format descriptor\n"));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,7 +254,7 @@ UsbParseInterfaceDesc (
|
||||||
Setting = UsbCreateDesc (DescBuf, Len, USB_DESC_TYPE_INTERFACE, &Used);
|
Setting = UsbCreateDesc (DescBuf, Len, USB_DESC_TYPE_INTERFACE, &Used);
|
||||||
|
|
||||||
if (Setting == NULL) {
|
if (Setting == NULL) {
|
||||||
USB_ERROR (("UsbParseInterfaceDesc: failed to create interface descriptor\n"));
|
DEBUG (( EFI_D_ERROR, "UsbParseInterfaceDesc: failed to create interface descriptor\n"));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -265,7 +265,7 @@ UsbParseInterfaceDesc (
|
||||||
//
|
//
|
||||||
NumEp = Setting->Desc.NumEndpoints;
|
NumEp = Setting->Desc.NumEndpoints;
|
||||||
|
|
||||||
USB_DEBUG (("UsbParseInterfaceDesc: interface %d(setting %d) has %d endpoints\n",
|
DEBUG (( EFI_D_INFO, "UsbParseInterfaceDesc: interface %d(setting %d) has %d endpoints\n",
|
||||||
Setting->Desc.InterfaceNumber, Setting->Desc.AlternateSetting, NumEp));
|
Setting->Desc.InterfaceNumber, Setting->Desc.AlternateSetting, NumEp));
|
||||||
|
|
||||||
if (NumEp == 0) {
|
if (NumEp == 0) {
|
||||||
|
@ -285,7 +285,7 @@ UsbParseInterfaceDesc (
|
||||||
Ep = UsbCreateDesc (DescBuf + Offset, Len - Offset, USB_DESC_TYPE_ENDPOINT, &Used);
|
Ep = UsbCreateDesc (DescBuf + Offset, Len - Offset, USB_DESC_TYPE_ENDPOINT, &Used);
|
||||||
|
|
||||||
if (Ep == NULL) {
|
if (Ep == NULL) {
|
||||||
USB_ERROR (("UsbParseInterfaceDesc: failed to create endpoint(index %d)\n", Index));
|
DEBUG (( EFI_D_ERROR, "UsbParseInterfaceDesc: failed to create endpoint(index %d)\n", Index));
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -345,7 +345,7 @@ UsbParseConfigDesc (
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
USB_DEBUG (("UsbParseConfigDesc: config %d has %d interfaces\n",
|
DEBUG (( EFI_D_INFO, "UsbParseConfigDesc: config %d has %d interfaces\n",
|
||||||
Config->Desc.ConfigurationValue, NumIf));
|
Config->Desc.ConfigurationValue, NumIf));
|
||||||
|
|
||||||
for (Index = 0; Index < NumIf; Index++) {
|
for (Index = 0; Index < NumIf; Index++) {
|
||||||
|
@ -373,11 +373,11 @@ UsbParseConfigDesc (
|
||||||
Setting = UsbParseInterfaceDesc (DescBuf, Len, &Consumed);
|
Setting = UsbParseInterfaceDesc (DescBuf, Len, &Consumed);
|
||||||
|
|
||||||
if ((Setting == NULL)) {
|
if ((Setting == NULL)) {
|
||||||
USB_ERROR (("UsbParseConfigDesc: failed to parse interface setting\n"));
|
DEBUG (( EFI_D_ERROR, "UsbParseConfigDesc: failed to parse interface setting\n"));
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
|
|
||||||
} else if (Setting->Desc.InterfaceNumber >= NumIf) {
|
} else if (Setting->Desc.InterfaceNumber >= NumIf) {
|
||||||
USB_ERROR (("UsbParseConfigDesc: mal-formated interface descriptor\n"));
|
DEBUG (( EFI_D_ERROR, "UsbParseConfigDesc: mal-formated interface descriptor\n"));
|
||||||
|
|
||||||
UsbFreeInterfaceDesc (Setting);
|
UsbFreeInterfaceDesc (Setting);
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
|
@ -747,13 +747,13 @@ UsbGetOneConfig (
|
||||||
Status = UsbCtrlGetDesc (UsbDev, USB_DESC_TYPE_CONFIG, Index, 0, &Desc, 8);
|
Status = UsbCtrlGetDesc (UsbDev, USB_DESC_TYPE_CONFIG, Index, 0, &Desc, 8);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbGetOneConfig: failed to get descript length(%d) %r\n",
|
DEBUG (( EFI_D_ERROR, "UsbGetOneConfig: failed to get descript length(%d) %r\n",
|
||||||
Status, Desc.TotalLength));
|
Status, Desc.TotalLength));
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
USB_DEBUG (("UsbGetOneConfig: total length is %d\n", Desc.TotalLength));
|
DEBUG (( EFI_D_INFO, "UsbGetOneConfig: total length is %d\n", Desc.TotalLength));
|
||||||
|
|
||||||
Buf = AllocateZeroPool (Desc.TotalLength);
|
Buf = AllocateZeroPool (Desc.TotalLength);
|
||||||
|
|
||||||
|
@ -764,7 +764,7 @@ UsbGetOneConfig (
|
||||||
Status = UsbCtrlGetDesc (UsbDev, USB_DESC_TYPE_CONFIG, Index, 0, Buf, Desc.TotalLength);
|
Status = UsbCtrlGetDesc (UsbDev, USB_DESC_TYPE_CONFIG, Index, 0, Buf, Desc.TotalLength);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbGetOneConfig: failed to get full descript %r\n", Status));
|
DEBUG (( EFI_D_ERROR, "UsbGetOneConfig: failed to get full descript %r\n", Status));
|
||||||
|
|
||||||
gBS->FreePool (Buf);
|
gBS->FreePool (Buf);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -805,7 +805,7 @@ UsbBuildDescTable (
|
||||||
Status = UsbGetDevDesc (UsbDev);
|
Status = UsbGetDevDesc (UsbDev);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbBuildDescTable: failed to get device descriptor - %r\n", Status));
|
DEBUG (( EFI_D_ERROR, "UsbBuildDescTable: failed to get device descriptor - %r\n", Status));
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -817,7 +817,7 @@ UsbBuildDescTable (
|
||||||
return EFI_OUT_OF_RESOURCES;
|
return EFI_OUT_OF_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
USB_DEBUG (("UsbBuildDescTable: device has %d configures\n", NumConfig));
|
DEBUG (( EFI_D_INFO, "UsbBuildDescTable: device has %d configures\n", NumConfig));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Read each configurations, then parse them
|
// Read each configurations, then parse them
|
||||||
|
@ -826,7 +826,7 @@ UsbBuildDescTable (
|
||||||
Config = UsbGetOneConfig (UsbDev, Index);
|
Config = UsbGetOneConfig (UsbDev, Index);
|
||||||
|
|
||||||
if (Config == NULL) {
|
if (Config == NULL) {
|
||||||
USB_ERROR (("UsbBuildDescTable: failed to get configure (index %d)\n", Index));
|
DEBUG (( EFI_D_ERROR, "UsbBuildDescTable: failed to get configure (index %d)\n", Index));
|
||||||
|
|
||||||
//
|
//
|
||||||
// If we can get the default descriptor, it is likely that the
|
// If we can get the default descriptor, it is likely that the
|
||||||
|
@ -844,7 +844,7 @@ UsbBuildDescTable (
|
||||||
gBS->FreePool (Config);
|
gBS->FreePool (Config);
|
||||||
|
|
||||||
if (ConfigDesc == NULL) {
|
if (ConfigDesc == NULL) {
|
||||||
USB_ERROR (("UsbBuildDescTable: failed to parse configure (index %d)\n", Index));
|
DEBUG (( EFI_D_ERROR, "UsbBuildDescTable: failed to parse configure (index %d)\n", Index));
|
||||||
|
|
||||||
//
|
//
|
||||||
// If we can get the default descriptor, it is likely that the
|
// If we can get the default descriptor, it is likely that the
|
||||||
|
@ -867,7 +867,7 @@ UsbBuildDescTable (
|
||||||
Status = UsbBuildLangTable (UsbDev);
|
Status = UsbBuildLangTable (UsbDev);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_DEBUG (("UsbBuildDescTable: get language ID table %r\n", Status));
|
DEBUG (( EFI_D_ERROR, "UsbBuildDescTable: get language ID table %r\n", Status));
|
||||||
}
|
}
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
|
|
|
@ -143,7 +143,7 @@ UsbCreateInterface (
|
||||||
UsbIf->DevicePath = AppendDevicePathNode (HubIf->DevicePath, &UsbNode.Header);
|
UsbIf->DevicePath = AppendDevicePathNode (HubIf->DevicePath, &UsbNode.Header);
|
||||||
|
|
||||||
if (UsbIf->DevicePath == NULL) {
|
if (UsbIf->DevicePath == NULL) {
|
||||||
USB_ERROR (("UsbCreateInterface: failed to create device path\n"));
|
DEBUG ((EFI_D_ERROR, "UsbCreateInterface: failed to create device path\n"));
|
||||||
|
|
||||||
Status = EFI_OUT_OF_RESOURCES;
|
Status = EFI_OUT_OF_RESOURCES;
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
|
@ -159,7 +159,7 @@ UsbCreateInterface (
|
||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbCreateInterface: failed to install UsbIo - %r\n", Status));
|
DEBUG ((EFI_D_ERROR, "UsbCreateInterface: failed to install UsbIo - %r\n", Status));
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,7 +178,7 @@ UsbCreateInterface (
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
USB_ERROR (("UsbCreateInterface: failed to open host for child - %r\n", Status));
|
DEBUG ((EFI_D_ERROR, "UsbCreateInterface: failed to open host for child - %r\n", Status));
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,7 +277,7 @@ UsbConnectDriver (
|
||||||
// connect drivers with this interface
|
// connect drivers with this interface
|
||||||
//
|
//
|
||||||
if (UsbIsHubInterface (UsbIf)) {
|
if (UsbIsHubInterface (UsbIf)) {
|
||||||
USB_DEBUG (("UsbConnectDriver: found a hub device\n"));
|
DEBUG ((EFI_D_INFO, "UsbConnectDriver: found a hub device\n"));
|
||||||
Status = mUsbHubApi.Init (UsbIf);
|
Status = mUsbHubApi.Init (UsbIf);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -289,14 +289,14 @@ UsbConnectDriver (
|
||||||
// or disconnect at CALLBACK.
|
// or disconnect at CALLBACK.
|
||||||
//
|
//
|
||||||
OldTpl = UsbGetCurrentTpl ();
|
OldTpl = UsbGetCurrentTpl ();
|
||||||
USB_DEBUG (("UsbConnectDriver: TPL before connect is %d\n", OldTpl));
|
DEBUG ((EFI_D_INFO, "UsbConnectDriver: TPL before connect is %d\n", OldTpl));
|
||||||
|
|
||||||
gBS->RestoreTPL (TPL_CALLBACK);
|
gBS->RestoreTPL (TPL_CALLBACK);
|
||||||
|
|
||||||
Status = gBS->ConnectController (UsbIf->Handle, NULL, NULL, TRUE);
|
Status = gBS->ConnectController (UsbIf->Handle, NULL, NULL, TRUE);
|
||||||
UsbIf->IsManaged = (BOOLEAN)!EFI_ERROR (Status);
|
UsbIf->IsManaged = (BOOLEAN)!EFI_ERROR (Status);
|
||||||
|
|
||||||
USB_DEBUG (("UsbConnectDriver: TPL after connect is %d\n", UsbGetCurrentTpl()));
|
DEBUG ((EFI_D_INFO, "UsbConnectDriver: TPL after connect is %d\n", UsbGetCurrentTpl()));
|
||||||
ASSERT (UsbGetCurrentTpl () == TPL_CALLBACK);
|
ASSERT (UsbGetCurrentTpl () == TPL_CALLBACK);
|
||||||
|
|
||||||
gBS->RaiseTPL (OldTpl);
|
gBS->RaiseTPL (OldTpl);
|
||||||
|
@ -347,7 +347,7 @@ UsbSelectSetting (
|
||||||
|
|
||||||
IfDesc->ActiveIndex = Index;
|
IfDesc->ActiveIndex = Index;
|
||||||
|
|
||||||
USB_DEBUG (("UsbSelectSetting: setting %d selected for interface %d\n",
|
DEBUG ((EFI_D_INFO, "UsbSelectSetting: setting %d selected for interface %d\n",
|
||||||
Alternate, Setting->Desc.InterfaceNumber));
|
Alternate, Setting->Desc.InterfaceNumber));
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -406,7 +406,7 @@ UsbSelectConfig (
|
||||||
|
|
||||||
Device->ActiveConfig = ConfigDesc;
|
Device->ActiveConfig = ConfigDesc;
|
||||||
|
|
||||||
USB_DEBUG (("UsbSelectConfig: config %d selected for device %d\n",
|
DEBUG ((EFI_D_INFO, "UsbSelectConfig: config %d selected for device %d\n",
|
||||||
ConfigValue, Device->Address));
|
ConfigValue, Device->Address));
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -439,7 +439,7 @@ UsbSelectConfig (
|
||||||
Status = UsbConnectDriver (UsbIf);
|
Status = UsbConnectDriver (UsbIf);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbSelectConfig: failed to connect driver %r, ignored\n", Status));
|
DEBUG ((EFI_D_ERROR, "UsbSelectConfig: failed to connect driver %r, ignored\n", Status));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -482,14 +482,14 @@ UsbDisconnectDriver (
|
||||||
// or disconnect at CALLBACK.
|
// or disconnect at CALLBACK.
|
||||||
//
|
//
|
||||||
OldTpl = UsbGetCurrentTpl ();
|
OldTpl = UsbGetCurrentTpl ();
|
||||||
USB_DEBUG (("UsbDisconnectDriver: old TPL is %d\n", OldTpl));
|
DEBUG ((EFI_D_INFO, "UsbDisconnectDriver: old TPL is %d\n", OldTpl));
|
||||||
|
|
||||||
gBS->RestoreTPL (TPL_CALLBACK);
|
gBS->RestoreTPL (TPL_CALLBACK);
|
||||||
|
|
||||||
gBS->DisconnectController (UsbIf->Handle, NULL, NULL);
|
gBS->DisconnectController (UsbIf->Handle, NULL, NULL);
|
||||||
UsbIf->IsManaged = FALSE;
|
UsbIf->IsManaged = FALSE;
|
||||||
|
|
||||||
USB_DEBUG (("UsbDisconnectDriver: TPL after disconnect is %d\n", UsbGetCurrentTpl()));
|
DEBUG (( EFI_D_INFO, "UsbDisconnectDriver: TPL after disconnect is %d\n", UsbGetCurrentTpl()));
|
||||||
ASSERT (UsbGetCurrentTpl () == TPL_CALLBACK);
|
ASSERT (UsbGetCurrentTpl () == TPL_CALLBACK);
|
||||||
|
|
||||||
gBS->RaiseTPL (OldTpl);
|
gBS->RaiseTPL (OldTpl);
|
||||||
|
@ -569,14 +569,14 @@ UsbRemoveDevice (
|
||||||
Status = UsbRemoveDevice (Child);
|
Status = UsbRemoveDevice (Child);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbRemoveDevice: failed to remove child, ignore error\n"));
|
DEBUG ((EFI_D_ERROR, "UsbRemoveDevice: failed to remove child, ignore error\n"));
|
||||||
Bus->Devices[Index] = NULL;
|
Bus->Devices[Index] = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UsbRemoveConfig (Device);
|
UsbRemoveConfig (Device);
|
||||||
|
|
||||||
USB_DEBUG (("UsbRemoveDevice: device %d removed\n", Device->Address));
|
DEBUG (( EFI_D_INFO, "UsbRemoveDevice: device %d removed\n", Device->Address));
|
||||||
|
|
||||||
Bus->Devices[Device->Address] = NULL;
|
Bus->Devices[Device->Address] = NULL;
|
||||||
UsbFreeDevice (Device);
|
UsbFreeDevice (Device);
|
||||||
|
@ -672,12 +672,12 @@ UsbEnumerateNewDev (
|
||||||
Status = HubApi->ResetPort (HubIf, Port);
|
Status = HubApi->ResetPort (HubIf, Port);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbEnumerateNewDev: failed to reset port %d - %r\n", Port, Status));
|
DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to reset port %d - %r\n", Port, Status));
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
USB_DEBUG (("UsbEnumerateNewDev: hub port %d is reset\n", Port));
|
DEBUG (( EFI_D_INFO, "UsbEnumerateNewDev: hub port %d is reset\n", Port));
|
||||||
|
|
||||||
Child = UsbCreateDevice (HubIf, Port);
|
Child = UsbCreateDevice (HubIf, Port);
|
||||||
|
|
||||||
|
@ -692,7 +692,7 @@ UsbEnumerateNewDev (
|
||||||
Status = HubApi->GetPortStatus (HubIf, Port, &PortState);
|
Status = HubApi->GetPortStatus (HubIf, Port, &PortState);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbEnumerateNewDev: failed to get speed of port %d\n", Port));
|
DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to get speed of port %d\n", Port));
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -706,7 +706,7 @@ UsbEnumerateNewDev (
|
||||||
Child->Speed = EFI_USB_SPEED_FULL;
|
Child->Speed = EFI_USB_SPEED_FULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
USB_DEBUG (("UsbEnumerateNewDev: device is of %d speed\n", Child->Speed));
|
DEBUG (( EFI_D_INFO, "UsbEnumerateNewDev: device is of %d speed\n", Child->Speed));
|
||||||
|
|
||||||
if (Child->Speed != EFI_USB_SPEED_HIGH) {
|
if (Child->Speed != EFI_USB_SPEED_HIGH) {
|
||||||
//
|
//
|
||||||
|
@ -723,7 +723,7 @@ UsbEnumerateNewDev (
|
||||||
Child->Translator = Parent->Translator;
|
Child->Translator = Parent->Translator;
|
||||||
}
|
}
|
||||||
|
|
||||||
USB_DEBUG (("UsbEnumerateNewDev: device uses translator (%d, %d)\n",
|
DEBUG (( EFI_D_INFO, "UsbEnumerateNewDev: device uses translator (%d, %d)\n",
|
||||||
Child->Translator.TranslatorHubAddress,
|
Child->Translator.TranslatorHubAddress,
|
||||||
Child->Translator.TranslatorPortNumber));
|
Child->Translator.TranslatorPortNumber));
|
||||||
}
|
}
|
||||||
|
@ -742,11 +742,11 @@ UsbEnumerateNewDev (
|
||||||
Status = UsbGetMaxPacketSize0 (Child);
|
Status = UsbGetMaxPacketSize0 (Child);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbEnumerateNewDev: failed to get max packet for EP 0 - %r\n", Status));
|
DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to get max packet for EP 0 - %r\n", Status));
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
USB_DEBUG (("UsbEnumerateNewDev: max packet size for EP 0 is %d\n", Child->MaxPacket0));
|
DEBUG (( EFI_D_INFO, "UsbEnumerateNewDev: max packet size for EP 0 is %d\n", Child->MaxPacket0));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Host assigns an address to the device. Device completes the
|
// Host assigns an address to the device. Device completes the
|
||||||
|
@ -760,7 +760,7 @@ UsbEnumerateNewDev (
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Address == USB_MAX_DEVICES) {
|
if (Address == USB_MAX_DEVICES) {
|
||||||
USB_ERROR (("UsbEnumerateNewDev: address pool is full for port %d\n", Port));
|
DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: address pool is full for port %d\n", Port));
|
||||||
|
|
||||||
Status = EFI_ACCESS_DENIED;
|
Status = EFI_ACCESS_DENIED;
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
|
@ -771,7 +771,7 @@ UsbEnumerateNewDev (
|
||||||
Child->Address = Address;
|
Child->Address = Address;
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbEnumerateNewDev: failed to set device address - %r\n", Status));
|
DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to set device address - %r\n", Status));
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -780,7 +780,7 @@ UsbEnumerateNewDev (
|
||||||
//
|
//
|
||||||
gBS->Stall (20 * USB_STALL_1_MS);
|
gBS->Stall (20 * USB_STALL_1_MS);
|
||||||
|
|
||||||
USB_DEBUG (("UsbEnumerateNewDev: device is now ADDRESSED at %d\n", Address));
|
DEBUG ((EFI_D_INFO, "UsbEnumerateNewDev: device is now ADDRESSED at %d\n", Address));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Host learns about the device¡¯s abilities by requesting device's
|
// Host learns about the device¡¯s abilities by requesting device's
|
||||||
|
@ -789,7 +789,7 @@ UsbEnumerateNewDev (
|
||||||
Status = UsbBuildDescTable (Child);
|
Status = UsbBuildDescTable (Child);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbEnumerateNewDev: failed to build descriptor table - %r\n", Status));
|
DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to build descriptor table - %r\n", Status));
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -801,11 +801,11 @@ UsbEnumerateNewDev (
|
||||||
Status = UsbSetConfig (Child, Config);
|
Status = UsbSetConfig (Child, Config);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbEnumerateNewDev: failed to set configure %d - %r\n", Config, Status));
|
DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to set configure %d - %r\n", Config, Status));
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
USB_DEBUG (("UsbEnumerateNewDev: device %d is now in CONFIGED state\n", Address));
|
DEBUG (( EFI_D_INFO, "UsbEnumerateNewDev: device %d is now in CONFIGED state\n", Address));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Host assigns and loads a device driver.
|
// Host assigns and loads a device driver.
|
||||||
|
@ -813,7 +813,7 @@ UsbEnumerateNewDev (
|
||||||
Status = UsbSelectConfig (Child, Config);
|
Status = UsbSelectConfig (Child, Config);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbEnumerateNewDev: failed to create interfaces - %r\n", Status));
|
DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to create interfaces - %r\n", Status));
|
||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -865,7 +865,7 @@ UsbEnumeratePort (
|
||||||
Status = HubApi->GetPortStatus (HubIf, Port, &PortState);
|
Status = HubApi->GetPortStatus (HubIf, Port, &PortState);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbEnumeratePort: failed to get state of port %d\n", Port));
|
DEBUG ((EFI_D_ERROR, "UsbEnumeratePort: failed to get state of port %d\n", Port));
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -873,7 +873,7 @@ UsbEnumeratePort (
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
USB_DEBUG (("UsbEnumeratePort: port %d state - %x, change - %x\n",
|
DEBUG (( EFI_D_INFO, "UsbEnumeratePort: port %d state - %x, change - %x\n",
|
||||||
Port, PortState.PortStatus, PortState.PortChangeStatus));
|
Port, PortState.PortStatus, PortState.PortChangeStatus));
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -890,7 +890,7 @@ UsbEnumeratePort (
|
||||||
// which probably is caused by short circuit. It has to wait system hardware
|
// which probably is caused by short circuit. It has to wait system hardware
|
||||||
// to perform recovery.
|
// to perform recovery.
|
||||||
//
|
//
|
||||||
USB_DEBUG (("UsbEnumeratePort: Critical Over Current\n", Port));
|
DEBUG (( EFI_D_ERROR, "UsbEnumeratePort: Critical Over Current\n", Port));
|
||||||
return EFI_DEVICE_ERROR;
|
return EFI_DEVICE_ERROR;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -899,7 +899,7 @@ UsbEnumeratePort (
|
||||||
// over current. As a result, all ports are nearly power-off, so
|
// over current. As a result, all ports are nearly power-off, so
|
||||||
// it's necessary to detach and enumerate all ports again.
|
// it's necessary to detach and enumerate all ports again.
|
||||||
//
|
//
|
||||||
USB_DEBUG (("UsbEnumeratePort: 2.0 device Recovery Over Current\n", Port));
|
DEBUG (( EFI_D_ERROR, "UsbEnumeratePort: 2.0 device Recovery Over Current\n", Port));
|
||||||
goto ON_ENUMERATE;
|
goto ON_ENUMERATE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -911,7 +911,7 @@ UsbEnumeratePort (
|
||||||
// on 2.0 roothub does. When over-current has influence on 1.1 device, the port
|
// on 2.0 roothub does. When over-current has influence on 1.1 device, the port
|
||||||
// would be disabled, so it's also necessary to detach and enumerate again.
|
// would be disabled, so it's also necessary to detach and enumerate again.
|
||||||
//
|
//
|
||||||
USB_DEBUG (("UsbEnumeratePort: 1.1 device Recovery Over Current\n", Port));
|
DEBUG (( EFI_D_ERROR, "UsbEnumeratePort: 1.1 device Recovery Over Current\n", Port));
|
||||||
goto ON_ENUMERATE;
|
goto ON_ENUMERATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -931,7 +931,7 @@ ON_ENUMERATE:
|
||||||
Child = UsbFindChild (HubIf, Port);
|
Child = UsbFindChild (HubIf, Port);
|
||||||
|
|
||||||
if (Child != NULL) {
|
if (Child != NULL) {
|
||||||
USB_DEBUG (("UsbEnumeratePort: device at port %d removed from system\n", Port));
|
DEBUG (( EFI_D_INFO, "UsbEnumeratePort: device at port %d removed from system\n", Port));
|
||||||
UsbRemoveDevice (Child);
|
UsbRemoveDevice (Child);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -939,11 +939,11 @@ ON_ENUMERATE:
|
||||||
//
|
//
|
||||||
// Now, new device connected, enumerate and configure the device
|
// Now, new device connected, enumerate and configure the device
|
||||||
//
|
//
|
||||||
USB_DEBUG (("UsbEnumeratePort: new device connected at port %d\n", Port));
|
DEBUG (( EFI_D_INFO, "UsbEnumeratePort: new device connected at port %d\n", Port));
|
||||||
Status = UsbEnumerateNewDev (HubIf, Port);
|
Status = UsbEnumerateNewDev (HubIf, Port);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
USB_DEBUG (("UsbEnumeratePort: device disconnected event on port %d\n", Port));
|
DEBUG (( EFI_D_INFO, "UsbEnumeratePort: device disconnected event on port %d\n", Port));
|
||||||
}
|
}
|
||||||
|
|
||||||
HubApi->ClearPortChange (HubIf, Port);
|
HubApi->ClearPortChange (HubIf, Port);
|
||||||
|
|
|
@ -553,7 +553,7 @@ UsbOnHubInterrupt (
|
||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbOnHubInterrupt: failed to remove async transfer - %r\n", Status));
|
DEBUG (( EFI_D_ERROR, "UsbOnHubInterrupt: failed to remove async transfer - %r\n", Status));
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -568,7 +568,7 @@ UsbOnHubInterrupt (
|
||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbOnHubInterrupt: failed to submit new async transfer - %r\n", Status));
|
DEBUG (( EFI_D_ERROR, "UsbOnHubInterrupt: failed to submit new async transfer - %r\n", Status));
|
||||||
}
|
}
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
@ -668,20 +668,20 @@ UsbHubInit (
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Index == Setting->Desc.NumEndpoints) {
|
if (Index == Setting->Desc.NumEndpoints) {
|
||||||
USB_ERROR (("UsbHubInit: no interrupt endpoint found for hub %d\n", HubDev->Address));
|
DEBUG (( EFI_D_ERROR, "UsbHubInit: no interrupt endpoint found for hub %d\n", HubDev->Address));
|
||||||
return EFI_DEVICE_ERROR;
|
return EFI_DEVICE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = UsbHubReadDesc (HubDev, &HubDesc);
|
Status = UsbHubReadDesc (HubDev, &HubDesc);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbHubInit: failed to read HUB descriptor %r\n", Status));
|
DEBUG (( EFI_D_ERROR, "UsbHubInit: failed to read HUB descriptor %r\n", Status));
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
HubIf->NumOfPort = HubDesc.NumPorts;
|
HubIf->NumOfPort = HubDesc.NumPorts;
|
||||||
|
|
||||||
USB_DEBUG (("UsbHubInit: hub %d has %d ports\n", HubDev->Address,HubIf->NumOfPort));
|
DEBUG (( EFI_D_INFO, "UsbHubInit: hub %d has %d ports\n", HubDev->Address,HubIf->NumOfPort));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Create an event to enumerate the hub's port. On
|
// Create an event to enumerate the hub's port. On
|
||||||
|
@ -695,7 +695,7 @@ UsbHubInit (
|
||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbHubInit: failed to create signal for hub %d - %r\n",
|
DEBUG (( EFI_D_ERROR, "UsbHubInit: failed to create signal for hub %d - %r\n",
|
||||||
HubDev->Address, Status));
|
HubDev->Address, Status));
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
@ -720,7 +720,7 @@ UsbHubInit (
|
||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbHubInit: failed to queue interrupt transfer for hub %d - %r\n",
|
DEBUG (( EFI_D_ERROR, "UsbHubInit: failed to queue interrupt transfer for hub %d - %r\n",
|
||||||
HubDev->Address, Status));
|
HubDev->Address, Status));
|
||||||
|
|
||||||
gBS->CloseEvent (HubIf->HubNotify);
|
gBS->CloseEvent (HubIf->HubNotify);
|
||||||
|
@ -750,7 +750,7 @@ UsbHubInit (
|
||||||
gBS->Stall (HubDesc.PwrOn2PwrGood * 2 * USB_STALL_1_MS);
|
gBS->Stall (HubDesc.PwrOn2PwrGood * 2 * USB_STALL_1_MS);
|
||||||
UsbHubAckHubStatus (HubIf->Device);
|
UsbHubAckHubStatus (HubIf->Device);
|
||||||
|
|
||||||
USB_DEBUG (("UsbHubInit: hub %d initialized\n", HubDev->Address));
|
DEBUG (( EFI_D_INFO, "UsbHubInit: hub %d initialized\n", HubDev->Address));
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -979,7 +979,7 @@ UsbHubRelease (
|
||||||
HubIf->HubEp = NULL;
|
HubIf->HubEp = NULL;
|
||||||
HubIf->HubNotify = NULL;
|
HubIf->HubNotify = NULL;
|
||||||
|
|
||||||
USB_DEBUG (("UsbHubRelease: hub device %d released\n", HubIf->Device->Address));
|
DEBUG (( EFI_D_INFO, "UsbHubRelease: hub device %d released\n", HubIf->Device->Address));
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1011,7 +1011,7 @@ UsbRootHubInit (
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
USB_DEBUG (("UsbRootHubInit: root hub %x - max speed %d, %d ports\n",
|
DEBUG (( EFI_D_INFO, "UsbRootHubInit: root hub %x - max speed %d, %d ports\n",
|
||||||
HubIf, MaxSpeed, NumOfPort));
|
HubIf, MaxSpeed, NumOfPort));
|
||||||
|
|
||||||
HubIf->IsHub = TRUE;
|
HubIf->IsHub = TRUE;
|
||||||
|
@ -1036,6 +1036,12 @@ UsbRootHubInit (
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// It should signal the event immediately here, or device detection
|
||||||
|
// by bus enumeration might be delayed by the timer interval.
|
||||||
|
//
|
||||||
|
gBS->SignalEvent (HubIf->HubNotify);
|
||||||
|
|
||||||
Status = gBS->SetTimer (
|
Status = gBS->SetTimer (
|
||||||
HubIf->HubNotify,
|
HubIf->HubNotify,
|
||||||
TimerPeriodic,
|
TimerPeriodic,
|
||||||
|
@ -1216,7 +1222,7 @@ UsbRootHubResetPort (
|
||||||
Status = UsbHcSetRootHubPortFeature (Bus, Port, EfiUsbPortReset);
|
Status = UsbHcSetRootHubPortFeature (Bus, Port, EfiUsbPortReset);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbRootHubResetPort: failed to start reset on port %d\n", Port));
|
DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: failed to start reset on port %d\n", Port));
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1229,7 +1235,7 @@ UsbRootHubResetPort (
|
||||||
Status = UsbHcClearRootHubPortFeature (Bus, Port, EfiUsbPortReset);
|
Status = UsbHcClearRootHubPortFeature (Bus, Port, EfiUsbPortReset);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbRootHubResetPort: failed to clear reset on port %d\n", Port));
|
DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: failed to clear reset on port %d\n", Port));
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1256,7 +1262,7 @@ UsbRootHubResetPort (
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Index == USB_HUB_LOOP) {
|
if (Index == USB_HUB_LOOP) {
|
||||||
USB_ERROR (("UsbRootHubResetPort: reset not finished in time on port %d\n", Port));
|
DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: reset not finished in time on port %d\n", Port));
|
||||||
return EFI_TIMEOUT;
|
return EFI_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1268,7 +1274,7 @@ UsbRootHubResetPort (
|
||||||
// automatically enable the port, we need to enable it manually.
|
// automatically enable the port, we need to enable it manually.
|
||||||
//
|
//
|
||||||
if (RootIf->MaxSpeed == EFI_USB_SPEED_HIGH) {
|
if (RootIf->MaxSpeed == EFI_USB_SPEED_HIGH) {
|
||||||
USB_ERROR (("UsbRootHubResetPort: release low/full speed device (%d) to UHCI\n", Port));
|
DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: release low/full speed device (%d) to UHCI\n", Port));
|
||||||
|
|
||||||
UsbRootHubSetPortFeature (RootIf, Port, EfiUsbPortOwner);
|
UsbRootHubSetPortFeature (RootIf, Port, EfiUsbPortOwner);
|
||||||
return EFI_NOT_FOUND;
|
return EFI_NOT_FOUND;
|
||||||
|
@ -1278,7 +1284,7 @@ UsbRootHubResetPort (
|
||||||
Status = UsbRootHubSetPortFeature (RootIf, Port, EfiUsbPortEnable);
|
Status = UsbRootHubSetPortFeature (RootIf, Port, EfiUsbPortEnable);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbRootHubResetPort: failed to enable port %d for UHCI\n", Port));
|
DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: failed to enable port %d for UHCI\n", Port));
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1305,7 +1311,7 @@ UsbRootHubRelease (
|
||||||
IN USB_INTERFACE *HubIf
|
IN USB_INTERFACE *HubIf
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
USB_DEBUG (("UsbRootHubRelease: root hub released for hub %x\n", HubIf));
|
DEBUG (( EFI_D_INFO, "UsbRootHubRelease: root hub released for hub %x\n", HubIf));
|
||||||
|
|
||||||
gBS->SetTimer (HubIf->HubNotify, TimerCancel, USB_ROOTHUB_POLL_INTERVAL);
|
gBS->SetTimer (HubIf->HubNotify, TimerCancel, USB_ROOTHUB_POLL_INTERVAL);
|
||||||
gBS->CloseEvent (HubIf->HubNotify);
|
gBS->CloseEvent (HubIf->HubNotify);
|
||||||
|
|
|
@ -711,59 +711,3 @@ UsbGetCurrentTpl (
|
||||||
return Tpl;
|
return Tpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef EFI_DEBUG
|
|
||||||
VOID
|
|
||||||
UsbDebug (
|
|
||||||
IN CHAR8 *Format,
|
|
||||||
...
|
|
||||||
)
|
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
USB's debug output function.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Format - The format parameters to the print
|
|
||||||
... - The variable length parameters after format
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
|
||||||
VA_LIST Marker;
|
|
||||||
|
|
||||||
VA_START (Marker, Format);
|
|
||||||
DebugVPrint (DEBUG_INFO, Format, Marker);
|
|
||||||
VA_END (Marker);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
USB's error output function.
|
|
||||||
|
|
||||||
@param Format The format parameters to the print
|
|
||||||
@param ... The variable length parameters after format
|
|
||||||
|
|
||||||
@return None
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
UsbError (
|
|
||||||
IN CHAR8 *Format,
|
|
||||||
...
|
|
||||||
)
|
|
||||||
{
|
|
||||||
VA_LIST Marker;
|
|
||||||
|
|
||||||
VA_START (Marker, Format);
|
|
||||||
DebugVPrint (DEBUG_ERROR, Format, Marker);
|
|
||||||
VA_END (Marker);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -194,16 +194,6 @@ UsbGetCurrentTpl (
|
||||||
VOID
|
VOID
|
||||||
);
|
);
|
||||||
|
|
||||||
//
|
|
||||||
// USB debug support routines
|
|
||||||
//
|
|
||||||
#ifdef EFI_DEBUG
|
|
||||||
#define USB_DEBUG(arg) UsbDebug arg
|
|
||||||
#define USB_ERROR(arg) UsbError arg
|
|
||||||
#else
|
|
||||||
#define USB_DEBUG(arg)
|
|
||||||
#define USB_ERROR(arg)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
UsbDebug (
|
UsbDebug (
|
||||||
|
|
|
@ -150,8 +150,7 @@ UsbIoControlTransfer (
|
||||||
|
|
||||||
goto ON_EXIT;
|
goto ON_EXIT;
|
||||||
}
|
}
|
||||||
|
DEBUG ((EFI_D_INFO, "UsbIoControlTransfer: configure changed!!! Do NOT use old UsbIo!!!\n"));
|
||||||
USB_DEBUG (("UsbIoControlTransfer: configure changed!!! Do NOT use old UsbIo!!!\n"));
|
|
||||||
|
|
||||||
if (Dev->ActiveConfig != NULL) {
|
if (Dev->ActiveConfig != NULL) {
|
||||||
UsbRemoveConfig (Dev);
|
UsbRemoveConfig (Dev);
|
||||||
|
@ -827,7 +826,7 @@ UsbIoPortReset (
|
||||||
Status = HubIf->HubApi->ResetPort (HubIf, Dev->ParentPort);
|
Status = HubIf->HubApi->ResetPort (HubIf, Dev->ParentPort);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbIoPortReset: failed to reset hub port %d@hub %d, %r \n",
|
DEBUG (( EFI_D_ERROR, "UsbIoPortReset: failed to reset hub port %d@hub %d, %r \n",
|
||||||
Dev->ParentPort, Dev->ParentAddr, Status));
|
Dev->ParentPort, Dev->ParentAddr, Status));
|
||||||
|
|
||||||
goto ON_EXIT;
|
goto ON_EXIT;
|
||||||
|
@ -843,7 +842,7 @@ UsbIoPortReset (
|
||||||
Status = UsbSetAddress (Dev, Address);
|
Status = UsbSetAddress (Dev, Address);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbIoPortReset: failed to set address for device %d - %r\n",
|
DEBUG (( EFI_D_ERROR, "UsbIoPortReset: failed to set address for device %d - %r\n",
|
||||||
Address, Status));
|
Address, Status));
|
||||||
|
|
||||||
goto ON_EXIT;
|
goto ON_EXIT;
|
||||||
|
@ -859,7 +858,7 @@ UsbIoPortReset (
|
||||||
Status = UsbSetConfig (Dev, Dev->ActiveConfig->Desc.ConfigurationValue);
|
Status = UsbSetConfig (Dev, Dev->ActiveConfig->Desc.ConfigurationValue);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbIoPortReset: failed to set configure for device %d - %r\n",
|
DEBUG (( EFI_D_ERROR, "UsbIoPortReset: failed to set configure for device %d - %r\n",
|
||||||
Address, Status));
|
Address, Status));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1105,7 +1104,7 @@ UsbBusControllerDriverStart (
|
||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbBusStart: Failed to open device path %r\n", Status));
|
DEBUG (( EFI_D_ERROR, "UsbBusStart: Failed to open device path %r\n", Status));
|
||||||
|
|
||||||
gBS->FreePool (UsbBus);
|
gBS->FreePool (UsbBus);
|
||||||
return Status;
|
return Status;
|
||||||
|
@ -1138,7 +1137,7 @@ UsbBusControllerDriverStart (
|
||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status) && EFI_ERROR (Status2)) {
|
if (EFI_ERROR (Status) && EFI_ERROR (Status2)) {
|
||||||
USB_ERROR (("UsbBusStart: Failed to open USB_HC/USB2_HC %r\n", Status));
|
DEBUG (( EFI_D_ERROR, "UsbBusStart: Failed to open USB_HC/USB2_HC %r\n", Status));
|
||||||
|
|
||||||
Status = EFI_DEVICE_ERROR;
|
Status = EFI_DEVICE_ERROR;
|
||||||
goto CLOSE_HC;
|
goto CLOSE_HC;
|
||||||
|
@ -1169,10 +1168,14 @@ UsbBusControllerDriverStart (
|
||||||
RootIf->Device = RootHub;
|
RootIf->Device = RootHub;
|
||||||
RootIf->DevicePath = UsbBus->DevicePath;
|
RootIf->DevicePath = UsbBus->DevicePath;
|
||||||
|
|
||||||
|
|
||||||
|
UsbHcReset (UsbBus, EFI_USB_HC_RESET_GLOBAL);
|
||||||
|
UsbHcSetState (UsbBus, EfiUsbHcStateOperational);
|
||||||
|
|
||||||
Status = mUsbRootHubApi.Init (RootIf);
|
Status = mUsbRootHubApi.Init (RootIf);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbBusStart: Failed to init root hub %r\n", Status));
|
DEBUG (( EFI_D_ERROR, "UsbBusStart: Failed to init root hub %r\n", Status));
|
||||||
goto FREE_ROOTHUB;
|
goto FREE_ROOTHUB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1189,16 +1192,14 @@ UsbBusControllerDriverStart (
|
||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
USB_ERROR (("UsbBusStart: Failed to install bus protocol %r\n", Status));
|
DEBUG (( EFI_D_ERROR, "UsbBusStart: Failed to install bus protocol %r\n", Status));
|
||||||
|
|
||||||
mUsbRootHubApi.Release (RootIf);
|
mUsbRootHubApi.Release (RootIf);
|
||||||
goto FREE_ROOTHUB;
|
goto FREE_ROOTHUB;
|
||||||
}
|
}
|
||||||
|
|
||||||
UsbHcReset (UsbBus, EFI_USB_HC_RESET_GLOBAL);
|
|
||||||
UsbHcSetState (UsbBus, EfiUsbHcStateOperational);
|
|
||||||
|
|
||||||
USB_DEBUG (("UsbBusStart: usb bus started on %x, root hub %x\n", Controller, RootIf));
|
DEBUG (( EFI_D_INFO, "UsbBusStart: usb bus started on %x, root hub %x\n", Controller, RootIf));
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
|
|
||||||
FREE_ROOTHUB:
|
FREE_ROOTHUB:
|
||||||
|
@ -1233,7 +1234,7 @@ CLOSE_HC:
|
||||||
|
|
||||||
gBS->FreePool (UsbBus);
|
gBS->FreePool (UsbBus);
|
||||||
|
|
||||||
USB_ERROR (("UsbBusStart: Failed to start bus driver %r\n", Status));
|
DEBUG (( EFI_D_ERROR, "UsbBusStart: Failed to start bus driver %r\n", Status));
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1306,7 +1307,7 @@ UsbBusControllerDriverStop (
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
USB_DEBUG (("UsbBusStop: usb bus stopped on %x\n", Controller));
|
DEBUG (( EFI_D_INFO, "UsbBusStop: usb bus stopped on %x\n", Controller));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Locate USB_BUS for the current host controller
|
// Locate USB_BUS for the current host controller
|
||||||
|
|
Loading…
Reference in New Issue