USB_HUB_TARGET_PORT,\r
USB_HUB_REQ_CLEAR_FEATURE,\r
Feature,\r
- Port + 1,\r
+ (UINT16) (Port + 1),\r
NULL,\r
0\r
);\r
//\r
// Check USB2.0 spec page 424 for wValue's encoding\r
//\r
- Value = (EpNum & 0x0F) | (DevAddr << 4) |\r
- ((EpType & 0x03) << 11) | ((EpNum & 0x80) << 15);\r
+ Value = (UINT16) ((EpNum & 0x0F) | (DevAddr << 4) |\r
+ ((EpType & 0x03) << 11) | ((EpNum & 0x80) << 15));\r
\r
Status = UsbCtrlRequest (\r
HubDev,\r
USB_HUB_TARGET_PORT,\r
USB_HUB_REQ_CLEAR_TT,\r
Value,\r
- Port + 1,\r
+ (UINT16) (Port + 1),\r
NULL,\r
0\r
);\r
USB_HUB_TARGET_PORT,\r
USB_HUB_REQ_GET_STATUS,\r
0,\r
- Port + 1,\r
+ (UINT16) (Port + 1),\r
State,\r
4\r
);\r
@retval Others Failed to reset the port\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
UsbHubCtrlResetTT (\r
IN USB_DEVICE *HubDev,\r
USB_HUB_TARGET_HUB,\r
USB_HUB_REQ_RESET_TT,\r
0,\r
- Port + 1,\r
+ (UINT16) (Port + 1),\r
NULL,\r
0\r
);\r
@retval Others Failed to set the feature\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
UsbHubCtrlSetHubFeature (\r
IN USB_DEVICE *HubDev,\r
USB_HUB_TARGET_PORT,\r
USB_HUB_REQ_SET_FEATURE,\r
Feature,\r
- Port + 1,\r
+ (UINT16) (Port + 1),\r
NULL,\r
0\r
);\r
);\r
\r
if (EFI_ERROR (Status)) {\r
- USB_ERROR (("UsbOnHubInterrupt: failed to remove async transfer - %r\n", Status));\r
+ DEBUG (( EFI_D_ERROR, "UsbOnHubInterrupt: failed to remove async transfer - %r\n", Status));\r
return Status;\r
}\r
\r
);\r
\r
if (EFI_ERROR (Status)) {\r
- USB_ERROR (("UsbOnHubInterrupt: failed to submit new async transfer - %r\n", Status));\r
+ DEBUG (( EFI_D_ERROR, "UsbOnHubInterrupt: failed to submit new async transfer - %r\n", Status));\r
}\r
\r
return Status;\r
#define USB_HUB_MAP_SIZE 5\r
\r
USB_CHANGE_FEATURE_MAP mHubFeatureMap[USB_HUB_MAP_SIZE] = {\r
- {USB_PORT_STAT_C_CONNECTION, USB_HUB_C_PORT_CONNECT},\r
- {USB_PORT_STAT_C_ENABLE, USB_HUB_C_PORT_ENABLE},\r
- {USB_PORT_STAT_C_SUSPEND, USB_HUB_C_PORT_SUSPEND},\r
- {USB_PORT_STAT_C_OVERCURRENT, USB_HUB_C_PORT_OVER_CURRENT},\r
- {USB_PORT_STAT_C_RESET, USB_HUB_C_PORT_RESET},\r
+ {USB_PORT_STAT_C_CONNECTION, EfiUsbPortConnectChange},\r
+ {USB_PORT_STAT_C_ENABLE, EfiUsbPortEnableChange},\r
+ {USB_PORT_STAT_C_SUSPEND, EfiUsbPortSuspendChange},\r
+ {USB_PORT_STAT_C_OVERCURRENT, EfiUsbPortOverCurrentChange},\r
+ {USB_PORT_STAT_C_RESET, EfiUsbPortResetChange},\r
};\r
\r
#define USB_ROOT_HUB_MAP_SIZE 5\r
}\r
\r
if (Index == Setting->Desc.NumEndpoints) {\r
- USB_ERROR (("UsbHubInit: no interrupt endpoint found for hub %d\n", HubDev->Address));\r
+ DEBUG (( EFI_D_ERROR, "UsbHubInit: no interrupt endpoint found for hub %d\n", HubDev->Address));\r
return EFI_DEVICE_ERROR;\r
}\r
\r
Status = UsbHubReadDesc (HubDev, &HubDesc);\r
\r
if (EFI_ERROR (Status)) {\r
- USB_ERROR (("UsbHubInit: failed to read HUB descriptor %r\n", Status));\r
+ DEBUG (( EFI_D_ERROR, "UsbHubInit: failed to read HUB descriptor %r\n", Status));\r
return Status;\r
}\r
\r
HubIf->NumOfPort = HubDesc.NumPorts;\r
\r
- USB_DEBUG (("UsbHubInit: hub %d has %d ports\n", HubDev->Address,HubIf->NumOfPort));\r
+ DEBUG (( EFI_D_INFO, "UsbHubInit: hub %d has %d ports\n", HubDev->Address,HubIf->NumOfPort));\r
\r
//\r
// Create an event to enumerate the hub's port. On\r
);\r
\r
if (EFI_ERROR (Status)) {\r
- USB_ERROR (("UsbHubInit: failed to create signal for hub %d - %r\n",\r
+ DEBUG (( EFI_D_ERROR, "UsbHubInit: failed to create signal for hub %d - %r\n",\r
HubDev->Address, Status));\r
\r
return Status;\r
);\r
\r
if (EFI_ERROR (Status)) {\r
- USB_ERROR (("UsbHubInit: failed to queue interrupt transfer for hub %d - %r\n",\r
+ DEBUG (( EFI_D_ERROR, "UsbHubInit: failed to queue interrupt transfer for hub %d - %r\n",\r
HubDev->Address, Status));\r
\r
gBS->CloseEvent (HubIf->HubNotify);\r
// for both gang/individual powered hubs.\r
//\r
for (Index = 0; Index < HubDesc.NumPorts; Index++) {\r
- UsbHubCtrlSetPortFeature (HubIf->Device, Index, USB_HUB_PORT_POWER);\r
+ UsbHubCtrlSetPortFeature (HubIf->Device, Index, (EFI_USB_PORT_FEATURE) USB_HUB_PORT_POWER);\r
}\r
\r
- gBS->Stall (HubDesc.PwrOn2PwrGood * 2 * USB_STALL_1_MS);\r
+ gBS->Stall (HubDesc.PwrOn2PwrGood * USB_SET_PORT_POWER_STALL);\r
UsbHubAckHubStatus (HubIf->Device);\r
\r
- USB_DEBUG (("UsbHubInit: hub %d initialized\n", HubDev->Address));\r
+ DEBUG (( EFI_D_INFO, "UsbHubInit: hub %d initialized\n", HubDev->Address));\r
return Status;\r
}\r
\r
Map = &mHubFeatureMap[Index];\r
\r
if (USB_BIT_IS_SET (PortState.PortChangeStatus, Map->ChangedBit)) {\r
- UsbHubCtrlClearPortFeature (HubIf->Device, Port, Map->Feature);\r
+ UsbHubCtrlClearPortFeature (HubIf->Device, Port, (UINT16) Map->Feature);\r
}\r
}\r
}\r
{\r
EFI_STATUS Status;\r
\r
- Status = UsbHubCtrlSetPortFeature (HubIf->Device, Port, Feature);\r
+ Status = UsbHubCtrlSetPortFeature (HubIf->Device, Port, (UINT8) Feature);\r
\r
return Status;\r
}\r
{\r
EFI_STATUS Status;\r
\r
- Status = UsbHubCtrlClearPortFeature (HubIf->Device, Port, Feature);\r
+ Status = UsbHubCtrlClearPortFeature (HubIf->Device, Port, (UINT8) Feature);\r
\r
return Status;\r
}\r
UINTN Index;\r
EFI_STATUS Status;\r
\r
- Status = UsbHubSetPortFeature (HubIf, Port, USB_HUB_PORT_RESET);\r
+ Status = UsbHubSetPortFeature (HubIf, Port, (EFI_USB_PORT_FEATURE) USB_HUB_PORT_RESET);\r
\r
if (EFI_ERROR (Status)) {\r
return Status;\r
// Drive the reset signal for at least 10ms. Check USB 2.0 Spec\r
// section 7.1.7.5 for timing requirements.\r
//\r
- gBS->Stall (20 * USB_STALL_1_MS);\r
+ gBS->Stall (USB_SET_PORT_RESET_STALL);\r
\r
//\r
// USB hub will clear RESET bit if reset is actually finished.\r
//\r
ZeroMem (&PortState, sizeof (EFI_USB_PORT_STATUS));\r
\r
- for (Index = 0; Index < 20; Index++) {\r
+ for (Index = 0; Index < USB_WAIT_PORT_STS_CHANGE_LOOP; Index++) {\r
Status = UsbHubGetPortStatus (HubIf, Port, &PortState);\r
\r
if (!EFI_ERROR (Status) &&\r
return EFI_SUCCESS;\r
}\r
\r
- gBS->Stall (5 * USB_STALL_1_MS);\r
+ gBS->Stall (USB_WAIT_PORT_STS_CHANGE_STALL);\r
}\r
\r
return EFI_TIMEOUT;\r
HubIf->HubEp = NULL;\r
HubIf->HubNotify = NULL;\r
\r
- USB_DEBUG (("UsbHubRelease: hub device %d released\n", HubIf->Device->Address));\r
+ DEBUG (( EFI_D_INFO, "UsbHubRelease: hub device %d released\n", HubIf->Device->Address));\r
return EFI_SUCCESS;\r
}\r
\r
return Status;\r
}\r
\r
- USB_DEBUG (("UsbRootHubInit: root hub %x - max speed %d, %d ports\n",\r
+ DEBUG (( EFI_D_INFO, "UsbRootHubInit: root hub %x - max speed %d, %d ports\n",\r
HubIf, MaxSpeed, NumOfPort));\r
\r
HubIf->IsHub = TRUE;\r
return Status;\r
}\r
\r
+ //\r
+ // It should signal the event immediately here, or device detection\r
+ // by bus enumeration might be delayed by the timer interval.\r
+ //\r
+ gBS->SignalEvent (HubIf->HubNotify);\r
+\r
Status = gBS->SetTimer (\r
HubIf->HubNotify,\r
TimerPeriodic,\r
Map = &mRootHubFeatureMap[Index];\r
\r
if (USB_BIT_IS_SET (PortState.PortChangeStatus, Map->ChangedBit)) {\r
- UsbHcClearRootHubPortFeature (HubIf->Device->Bus, Port, Map->Feature);\r
+ UsbHcClearRootHubPortFeature (HubIf->Device->Bus, Port, (EFI_USB_PORT_FEATURE) Map->Feature);\r
}\r
}\r
}\r
Status = UsbHcSetRootHubPortFeature (Bus, Port, EfiUsbPortReset);\r
\r
if (EFI_ERROR (Status)) {\r
- USB_ERROR (("UsbRootHubResetPort: failed to start reset on port %d\n", Port));\r
+ DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: failed to start reset on port %d\n", Port));\r
return Status;\r
}\r
\r
// Drive the reset signal for at least 50ms. Check USB 2.0 Spec\r
// section 7.1.7.5 for timing requirements.\r
//\r
- gBS->Stall (50 * USB_STALL_1_MS);\r
+ gBS->Stall (USB_SET_ROOT_PORT_RESET_STALL);\r
\r
Status = UsbHcClearRootHubPortFeature (Bus, Port, EfiUsbPortReset);\r
\r
if (EFI_ERROR (Status)) {\r
- USB_ERROR (("UsbRootHubResetPort: failed to clear reset on port %d\n", Port));\r
+ DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: failed to clear reset on port %d\n", Port));\r
return Status;\r
}\r
\r
- gBS->Stall (USB_STALL_1_MS);\r
+ gBS->Stall (USB_CLR_ROOT_PORT_RESET_STALL);\r
\r
//\r
// USB host controller won't clear the RESET bit until\r
//\r
ZeroMem (&PortState, sizeof (EFI_USB_PORT_STATUS));\r
\r
- for (Index = 0; Index < USB_HUB_LOOP; Index++) {\r
+ for (Index = 0; Index < USB_WAIT_PORT_STS_CHANGE_LOOP; Index++) {\r
Status = UsbHcGetRootHubPortStatus (Bus, Port, &PortState);\r
\r
if (EFI_ERROR (Status)) {\r
break;\r
}\r
\r
- gBS->Stall (10 * USB_STALL_1_MS);\r
+ gBS->Stall (USB_WAIT_PORT_STS_CHANGE_STALL);\r
}\r
\r
- if (Index == USB_HUB_LOOP) {\r
- USB_ERROR (("UsbRootHubResetPort: reset not finished in time on port %d\n", Port));\r
+ if (Index == USB_WAIT_PORT_STS_CHANGE_LOOP) {\r
+ DEBUG ((EFI_D_ERROR, "UsbRootHubResetPort: reset not finished in time on port %d\n", Port));\r
return EFI_TIMEOUT;\r
}\r
\r
// automatically enable the port, we need to enable it manually.\r
//\r
if (RootIf->MaxSpeed == EFI_USB_SPEED_HIGH) {\r
- USB_ERROR (("UsbRootHubResetPort: release low/full speed device (%d) to UHCI\n", Port));\r
+ DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: release low/full speed device (%d) to UHCI\n", Port));\r
\r
UsbRootHubSetPortFeature (RootIf, Port, EfiUsbPortOwner);\r
return EFI_NOT_FOUND;\r
Status = UsbRootHubSetPortFeature (RootIf, Port, EfiUsbPortEnable);\r
\r
if (EFI_ERROR (Status)) {\r
- USB_ERROR (("UsbRootHubResetPort: failed to enable port %d for UHCI\n", Port));\r
+ DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: failed to enable port %d for UHCI\n", Port));\r
return Status;\r
}\r
\r
- gBS->Stall (20 * USB_STALL_1_MS);\r
+ gBS->Stall (USB_SET_ROOT_PORT_ENABLE_STALL);\r
}\r
}\r
\r
IN USB_INTERFACE *HubIf\r
)\r
{\r
- USB_DEBUG (("UsbRootHubRelease: root hub released for hub %x\n", HubIf));\r
+ DEBUG (( EFI_D_INFO, "UsbRootHubRelease: root hub released for hub %x\n", HubIf));\r
\r
gBS->SetTimer (HubIf->HubNotify, TimerCancel, USB_ROOTHUB_POLL_INTERVAL);\r
gBS->CloseEvent (HubIf->HubNotify);\r