// to the UEFI protocol's port state (change).\r
//\r
USB_PORT_STATE_MAP mUsbPortStateMap[] = {\r
- {XHC_PORTSC_CCS, USB_PORT_STAT_CONNECTION},\r
- {XHC_PORTSC_PED, USB_PORT_STAT_ENABLE},\r
- {XHC_PORTSC_OCA, USB_PORT_STAT_OVERCURRENT},\r
- {XHC_PORTSC_PP, USB_PORT_STAT_POWER},\r
- {XHC_PORTSC_RESET, USB_PORT_STAT_RESET}\r
+ { XHC_PORTSC_CCS, USB_PORT_STAT_CONNECTION },\r
+ { XHC_PORTSC_PED, USB_PORT_STAT_ENABLE },\r
+ { XHC_PORTSC_OCA, USB_PORT_STAT_OVERCURRENT },\r
+ { XHC_PORTSC_PP, USB_PORT_STAT_POWER },\r
+ { XHC_PORTSC_RESET, USB_PORT_STAT_RESET }\r
};\r
\r
USB_PORT_STATE_MAP mUsbPortChangeMap[] = {\r
- {XHC_PORTSC_CSC, USB_PORT_STAT_C_CONNECTION},\r
- {XHC_PORTSC_PEC, USB_PORT_STAT_C_ENABLE},\r
- {XHC_PORTSC_OCC, USB_PORT_STAT_C_OVERCURRENT},\r
- {XHC_PORTSC_PRC, USB_PORT_STAT_C_RESET}\r
+ { XHC_PORTSC_CSC, USB_PORT_STAT_C_CONNECTION },\r
+ { XHC_PORTSC_PEC, USB_PORT_STAT_C_ENABLE },\r
+ { XHC_PORTSC_OCC, USB_PORT_STAT_C_OVERCURRENT },\r
+ { XHC_PORTSC_PRC, USB_PORT_STAT_C_RESET }\r
};\r
\r
-USB_CLEAR_PORT_MAP mUsbClearPortChangeMap[] = {\r
- {XHC_PORTSC_CSC, EfiUsbPortConnectChange},\r
- {XHC_PORTSC_PEC, EfiUsbPortEnableChange},\r
- {XHC_PORTSC_OCC, EfiUsbPortOverCurrentChange},\r
- {XHC_PORTSC_PRC, EfiUsbPortResetChange}\r
+USB_CLEAR_PORT_MAP mUsbClearPortChangeMap[] = {\r
+ { XHC_PORTSC_CSC, EfiUsbPortConnectChange },\r
+ { XHC_PORTSC_PEC, EfiUsbPortEnableChange },\r
+ { XHC_PORTSC_OCC, EfiUsbPortOverCurrentChange },\r
+ { XHC_PORTSC_PRC, EfiUsbPortResetChange }\r
};\r
\r
USB_PORT_STATE_MAP mUsbHubPortStateMap[] = {\r
- {XHC_HUB_PORTSC_CCS, USB_PORT_STAT_CONNECTION},\r
- {XHC_HUB_PORTSC_PED, USB_PORT_STAT_ENABLE},\r
- {XHC_HUB_PORTSC_OCA, USB_PORT_STAT_OVERCURRENT},\r
- {XHC_HUB_PORTSC_PP, USB_PORT_STAT_POWER},\r
- {XHC_HUB_PORTSC_RESET, USB_PORT_STAT_RESET}\r
+ { XHC_HUB_PORTSC_CCS, USB_PORT_STAT_CONNECTION },\r
+ { XHC_HUB_PORTSC_PED, USB_PORT_STAT_ENABLE },\r
+ { XHC_HUB_PORTSC_OCA, USB_PORT_STAT_OVERCURRENT },\r
+ { XHC_HUB_PORTSC_PP, USB_PORT_STAT_POWER },\r
+ { XHC_HUB_PORTSC_RESET, USB_PORT_STAT_RESET }\r
};\r
\r
USB_PORT_STATE_MAP mUsbHubPortChangeMap[] = {\r
- {XHC_HUB_PORTSC_CSC, USB_PORT_STAT_C_CONNECTION},\r
- {XHC_HUB_PORTSC_PEC, USB_PORT_STAT_C_ENABLE},\r
- {XHC_HUB_PORTSC_OCC, USB_PORT_STAT_C_OVERCURRENT},\r
- {XHC_HUB_PORTSC_PRC, USB_PORT_STAT_C_RESET}\r
+ { XHC_HUB_PORTSC_CSC, USB_PORT_STAT_C_CONNECTION },\r
+ { XHC_HUB_PORTSC_PEC, USB_PORT_STAT_C_ENABLE },\r
+ { XHC_HUB_PORTSC_OCC, USB_PORT_STAT_C_OVERCURRENT },\r
+ { XHC_HUB_PORTSC_PRC, USB_PORT_STAT_C_RESET }\r
};\r
\r
-USB_CLEAR_PORT_MAP mUsbHubClearPortChangeMap[] = {\r
- {XHC_HUB_PORTSC_CSC, EfiUsbPortConnectChange},\r
- {XHC_HUB_PORTSC_PEC, EfiUsbPortEnableChange},\r
- {XHC_HUB_PORTSC_OCC, EfiUsbPortOverCurrentChange},\r
- {XHC_HUB_PORTSC_PRC, EfiUsbPortResetChange},\r
- {XHC_HUB_PORTSC_BHRC, Usb3PortBHPortResetChange}\r
+USB_CLEAR_PORT_MAP mUsbHubClearPortChangeMap[] = {\r
+ { XHC_HUB_PORTSC_CSC, EfiUsbPortConnectChange },\r
+ { XHC_HUB_PORTSC_PEC, EfiUsbPortEnableChange },\r
+ { XHC_HUB_PORTSC_OCC, EfiUsbPortOverCurrentChange },\r
+ { XHC_HUB_PORTSC_PRC, EfiUsbPortResetChange },\r
+ { XHC_HUB_PORTSC_BHRC, Usb3PortBHPortResetChange }\r
};\r
\r
/**\r
**/\r
UINT32\r
XhcPeiReadOpReg (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Offset\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Offset\r
)\r
{\r
- UINT32 Data;\r
+ UINT32 Data;\r
\r
ASSERT (Xhc->CapLength != 0);\r
\r
**/\r
VOID\r
XhcPeiWriteOpReg (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Offset,\r
- IN UINT32 Data\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Offset,\r
+ IN UINT32 Data\r
)\r
{\r
ASSERT (Xhc->CapLength != 0);\r
**/\r
VOID\r
XhcPeiSetOpRegBit (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Offset,\r
- IN UINT32 Bit\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Offset,\r
+ IN UINT32 Bit\r
)\r
{\r
- UINT32 Data;\r
+ UINT32 Data;\r
\r
Data = XhcPeiReadOpReg (Xhc, Offset);\r
Data |= Bit;\r
**/\r
VOID\r
XhcPeiClearOpRegBit (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Offset,\r
- IN UINT32 Bit\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Offset,\r
+ IN UINT32 Bit\r
)\r
{\r
- UINT32 Data;\r
+ UINT32 Data;\r
\r
Data = XhcPeiReadOpReg (Xhc, Offset);\r
Data &= ~Bit;\r
**/\r
EFI_STATUS\r
XhcPeiWaitOpRegBit (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Offset,\r
- IN UINT32 Bit,\r
- IN BOOLEAN WaitToSet,\r
- IN UINT32 Timeout\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Offset,\r
+ IN UINT32 Bit,\r
+ IN BOOLEAN WaitToSet,\r
+ IN UINT32 Timeout\r
)\r
{\r
- UINT64 Index;\r
+ UINT64 Index;\r
\r
for (Index = 0; Index < Timeout * XHC_1_MILLISECOND; Index++) {\r
if (XHC_REG_BIT_IS_SET (Xhc, Offset, Bit) == WaitToSet) {\r
**/\r
UINT32\r
XhcPeiReadCapRegister (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Offset\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Offset\r
)\r
{\r
- UINT32 Data;\r
+ UINT32 Data;\r
\r
Data = MmioRead32 (Xhc->UsbHostControllerBaseAddress + Offset);\r
\r
return Data;\r
}\r
\r
-\r
-\r
/**\r
Write the data to the XHCI door bell register.\r
\r
**/\r
VOID\r
XhcPeiWriteDoorBellReg (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Offset,\r
- IN UINT32 Data\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Offset,\r
+ IN UINT32 Data\r
)\r
{\r
ASSERT (Xhc->DBOff != 0);\r
**/\r
UINT32\r
XhcPeiReadRuntimeReg (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Offset\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Offset\r
)\r
{\r
- UINT32 Data;\r
+ UINT32 Data;\r
\r
ASSERT (Xhc->RTSOff != 0);\r
\r
**/\r
VOID\r
XhcPeiWriteRuntimeReg (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Offset,\r
- IN UINT32 Data\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Offset,\r
+ IN UINT32 Data\r
)\r
{\r
ASSERT (Xhc->RTSOff != 0);\r
**/\r
VOID\r
XhcPeiSetRuntimeRegBit (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Offset,\r
- IN UINT32 Bit\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Offset,\r
+ IN UINT32 Bit\r
)\r
{\r
- UINT32 Data;\r
+ UINT32 Data;\r
\r
Data = XhcPeiReadRuntimeReg (Xhc, Offset);\r
Data |= Bit;\r
**/\r
VOID\r
XhcPeiClearRuntimeRegBit (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Offset,\r
- IN UINT32 Bit\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Offset,\r
+ IN UINT32 Bit\r
)\r
{\r
- UINT32 Data;\r
+ UINT32 Data;\r
\r
Data = XhcPeiReadRuntimeReg (Xhc, Offset);\r
Data &= ~Bit;\r
**/\r
BOOLEAN\r
XhcPeiIsHalt (\r
- IN PEI_XHC_DEV *Xhc\r
+ IN PEI_XHC_DEV *Xhc\r
)\r
{\r
return XHC_REG_BIT_IS_SET (Xhc, XHC_USBSTS_OFFSET, XHC_USBSTS_HALT);\r
**/\r
BOOLEAN\r
XhcPeiIsSysError (\r
- IN PEI_XHC_DEV *Xhc\r
+ IN PEI_XHC_DEV *Xhc\r
)\r
{\r
return XHC_REG_BIT_IS_SET (Xhc, XHC_USBSTS_OFFSET, XHC_USBSTS_HSE);\r
**/\r
EFI_STATUS\r
XhcPeiResetHC (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Timeout\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Timeout\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// Host can only be reset when it is halt. If not so, halt it\r
**/\r
EFI_STATUS\r
XhcPeiHaltHC (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Timeout\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Timeout\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
XhcPeiClearOpRegBit (Xhc, XHC_USBCMD_OFFSET, XHC_USBCMD_RUN);\r
Status = XhcPeiWaitOpRegBit (Xhc, XHC_USBSTS_OFFSET, XHC_USBSTS_HALT, TRUE, Timeout);\r
**/\r
EFI_STATUS\r
XhcPeiRunHC (\r
- IN PEI_XHC_DEV *Xhc,\r
- IN UINT32 Timeout\r
+ IN PEI_XHC_DEV *Xhc,\r
+ IN UINT32 Timeout\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
XhcPeiSetOpRegBit (Xhc, XHC_USBCMD_OFFSET, XHC_USBCMD_RUN);\r
Status = XhcPeiWaitOpRegBit (Xhc, XHC_USBSTS_OFFSET, XHC_USBSTS_HALT, FALSE, Timeout);\r
EFI_STATUS\r
EFIAPI\r
XhcPeiControlTransfer (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB2_HOST_CONTROLLER_PPI *This,\r
- IN UINT8 DeviceAddress,\r
- IN UINT8 DeviceSpeed,\r
- IN UINTN MaximumPacketLength,\r
- IN EFI_USB_DEVICE_REQUEST *Request,\r
- IN EFI_USB_DATA_DIRECTION TransferDirection,\r
- IN OUT VOID *Data,\r
- IN OUT UINTN *DataLength,\r
- IN UINTN TimeOut,\r
- IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
- OUT UINT32 *TransferResult\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB2_HOST_CONTROLLER_PPI *This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 DeviceSpeed,\r
+ IN UINTN MaximumPacketLength,\r
+ IN EFI_USB_DEVICE_REQUEST *Request,\r
+ IN EFI_USB_DATA_DIRECTION TransferDirection,\r
+ IN OUT VOID *Data,\r
+ IN OUT UINTN *DataLength,\r
+ IN UINTN TimeOut,\r
+ IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
+ OUT UINT32 *TransferResult\r
)\r
{\r
- PEI_XHC_DEV *Xhc;\r
- URB *Urb;\r
- UINT8 Endpoint;\r
- UINT8 Index;\r
- UINT8 DescriptorType;\r
- UINT8 SlotId;\r
- UINT8 TTT;\r
- UINT8 MTT;\r
- UINT32 MaxPacket0;\r
- EFI_USB_HUB_DESCRIPTOR *HubDesc;\r
- EFI_STATUS Status;\r
- EFI_STATUS RecoveryStatus;\r
- UINTN MapSize;\r
- EFI_USB_PORT_STATUS PortStatus;\r
- UINT32 State;\r
- EFI_USB_DEVICE_REQUEST ClearPortRequest;\r
- UINTN Len;\r
+ PEI_XHC_DEV *Xhc;\r
+ URB *Urb;\r
+ UINT8 Endpoint;\r
+ UINT8 Index;\r
+ UINT8 DescriptorType;\r
+ UINT8 SlotId;\r
+ UINT8 TTT;\r
+ UINT8 MTT;\r
+ UINT32 MaxPacket0;\r
+ EFI_USB_HUB_DESCRIPTOR *HubDesc;\r
+ EFI_STATUS Status;\r
+ EFI_STATUS RecoveryStatus;\r
+ UINTN MapSize;\r
+ EFI_USB_PORT_STATUS PortStatus;\r
+ UINT32 State;\r
+ EFI_USB_DEVICE_REQUEST ClearPortRequest;\r
+ UINTN Len;\r
\r
//\r
// Validate parameters\r
\r
if ((TransferDirection != EfiUsbDataIn) &&\r
(TransferDirection != EfiUsbDataOut) &&\r
- (TransferDirection != EfiUsbNoData)) {\r
+ (TransferDirection != EfiUsbNoData))\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
if ((TransferDirection == EfiUsbNoData) &&\r
- ((Data != NULL) || (*DataLength != 0))) {\r
+ ((Data != NULL) || (*DataLength != 0)))\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
if ((TransferDirection != EfiUsbNoData) &&\r
- ((Data == NULL) || (*DataLength == 0))) {\r
+ ((Data == NULL) || (*DataLength == 0)))\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
if ((MaximumPacketLength != 8) && (MaximumPacketLength != 16) &&\r
(MaximumPacketLength != 32) && (MaximumPacketLength != 64) &&\r
(MaximumPacketLength != 512)\r
- ) {\r
+ )\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- Xhc = PEI_RECOVERY_USB_XHC_DEV_FROM_THIS (This);\r
+ Xhc = PEI_RECOVERY_USB_XHC_DEV_FROM_THIS (This);\r
\r
Status = EFI_DEVICE_ERROR;\r
*TransferResult = EFI_USB_ERR_SYSTEM;\r
// According to XHCI 1.0 spec, the Set_Address request is replaced by XHCI's Address_Device cmd.\r
//\r
if ((Request->Request == USB_REQ_SET_ADDRESS) &&\r
- (Request->RequestType == USB_REQUEST_TYPE (EfiUsbNoData, USB_REQ_TYPE_STANDARD, USB_TARGET_DEVICE))) {\r
+ (Request->RequestType == USB_REQUEST_TYPE (EfiUsbNoData, USB_REQ_TYPE_STANDARD, USB_TARGET_DEVICE)))\r
+ {\r
//\r
// Reset the BusDevAddr field of all disabled entries in UsbDevContext array firstly.\r
// This way is used to clean the history to avoid using wrong device address afterwards.\r
for (Index = 0; Index < 255; Index++) {\r
if (!Xhc->UsbDevContext[Index + 1].Enabled &&\r
(Xhc->UsbDevContext[Index + 1].SlotId == 0) &&\r
- (Xhc->UsbDevContext[Index + 1].BusDevAddr == (UINT8) Request->Value)) {\r
+ (Xhc->UsbDevContext[Index + 1].BusDevAddr == (UINT8)Request->Value))\r
+ {\r
Xhc->UsbDevContext[Index + 1].BusDevAddr = 0;\r
}\r
}\r
if (Xhc->UsbDevContext[SlotId].XhciDevAddr == 0) {\r
goto ON_EXIT;\r
}\r
+\r
//\r
// The actual device address has been assigned by XHCI during initializing the device slot.\r
// So we just need establish the mapping relationship between the device address requested from UsbBus\r
// and the actual device address assigned by XHCI. The following invocations through EFI_USB2_HC_PROTOCOL interface\r
// can find out the actual device address by it.\r
//\r
- Xhc->UsbDevContext[SlotId].BusDevAddr = (UINT8) Request->Value;\r
- Status = EFI_SUCCESS;\r
+ Xhc->UsbDevContext[SlotId].BusDevAddr = (UINT8)Request->Value;\r
+ Status = EFI_SUCCESS;\r
goto ON_EXIT;\r
}\r
\r
// endpoint is bidirectional. XhcPeiCreateUrb expects this\r
// combination of Ep addr and its direction.\r
//\r
- Endpoint = (UINT8) (0 | ((TransferDirection == EfiUsbDataIn) ? 0x80 : 0));\r
- Urb = XhcPeiCreateUrb (\r
- Xhc,\r
- DeviceAddress,\r
- Endpoint,\r
- DeviceSpeed,\r
- MaximumPacketLength,\r
- XHC_CTRL_TRANSFER,\r
- Request,\r
- Data,\r
- *DataLength,\r
- NULL,\r
- NULL\r
- );\r
+ Endpoint = (UINT8)(0 | ((TransferDirection == EfiUsbDataIn) ? 0x80 : 0));\r
+ Urb = XhcPeiCreateUrb (\r
+ Xhc,\r
+ DeviceAddress,\r
+ Endpoint,\r
+ DeviceSpeed,\r
+ MaximumPacketLength,\r
+ XHC_CTRL_TRANSFER,\r
+ Request,\r
+ Data,\r
+ *DataLength,\r
+ NULL,\r
+ NULL\r
+ );\r
\r
if (Urb == NULL) {\r
DEBUG ((DEBUG_ERROR, "XhcPeiControlTransfer: failed to create URB"));\r
//\r
// The transfer timed out. Abort the transfer by dequeueing of the TD.\r
//\r
- RecoveryStatus = XhcPeiDequeueTrbFromEndpoint(Xhc, Urb);\r
- if (EFI_ERROR(RecoveryStatus)) {\r
- DEBUG((DEBUG_ERROR, "XhcPeiControlTransfer: XhcPeiDequeueTrbFromEndpoint failed\n"));\r
+ RecoveryStatus = XhcPeiDequeueTrbFromEndpoint (Xhc, Urb);\r
+ if (EFI_ERROR (RecoveryStatus)) {\r
+ DEBUG ((DEBUG_ERROR, "XhcPeiControlTransfer: XhcPeiDequeueTrbFromEndpoint failed\n"));\r
}\r
+\r
XhcPeiFreeUrb (Xhc, Urb);\r
goto ON_EXIT;\r
} else {\r
if (*TransferResult == EFI_USB_NOERROR) {\r
Status = EFI_SUCCESS;\r
} else if ((*TransferResult == EFI_USB_ERR_STALL) || (*TransferResult == EFI_USB_ERR_BABBLE)) {\r
- RecoveryStatus = XhcPeiRecoverHaltedEndpoint(Xhc, Urb);\r
+ RecoveryStatus = XhcPeiRecoverHaltedEndpoint (Xhc, Urb);\r
if (EFI_ERROR (RecoveryStatus)) {\r
DEBUG ((DEBUG_ERROR, "XhcPeiControlTransfer: XhcPeiRecoverHaltedEndpoint failed\n"));\r
}\r
+\r
Status = EFI_DEVICE_ERROR;\r
XhcPeiFreeUrb (Xhc, Urb);\r
goto ON_EXIT;\r
goto ON_EXIT;\r
}\r
}\r
+\r
//\r
// Unmap data before consume.\r
//\r
//\r
if ((Request->Request == USB_REQ_GET_DESCRIPTOR) &&\r
((Request->RequestType == USB_REQUEST_TYPE (EfiUsbDataIn, USB_REQ_TYPE_STANDARD, USB_TARGET_DEVICE)) ||\r
- ((Request->RequestType == USB_REQUEST_TYPE (EfiUsbDataIn, USB_REQ_TYPE_CLASS, USB_TARGET_DEVICE))))) {\r
- DescriptorType = (UINT8) (Request->Value >> 8);\r
+ ((Request->RequestType == USB_REQUEST_TYPE (EfiUsbDataIn, USB_REQ_TYPE_CLASS, USB_TARGET_DEVICE)))))\r
+ {\r
+ DescriptorType = (UINT8)(Request->Value >> 8);\r
if ((DescriptorType == USB_DESC_TYPE_DEVICE) && ((*DataLength == sizeof (EFI_USB_DEVICE_DESCRIPTOR)) || ((DeviceSpeed == EFI_USB_SPEED_FULL) && (*DataLength == 8)))) {\r
ASSERT (Data != NULL);\r
//\r
} else {\r
MaxPacket0 = Xhc->UsbDevContext[SlotId].DevDesc.MaxPacketSize0;\r
}\r
+\r
Xhc->UsbDevContext[SlotId].ConfDesc = AllocateZeroPool (Xhc->UsbDevContext[SlotId].DevDesc.NumConfigurations * sizeof (EFI_USB_CONFIG_DESCRIPTOR *));\r
if (Xhc->UsbDevContext[SlotId].ConfDesc == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ON_EXIT;\r
}\r
+\r
if (Xhc->HcCParams.Data.Csz == 0) {\r
Status = XhcPeiEvaluateContext (Xhc, SlotId, MaxPacket0);\r
} else {\r
}\r
} else if (DescriptorType == USB_DESC_TYPE_CONFIG) {\r
ASSERT (Data != NULL);\r
- if (*DataLength == ((UINT16 *) Data)[1]) {\r
+ if (*DataLength == ((UINT16 *)Data)[1]) {\r
//\r
// Get configuration value from request, store the configuration descriptor for Configure_Endpoint cmd.\r
//\r
- Index = (UINT8) Request->Value;\r
+ Index = (UINT8)Request->Value;\r
ASSERT (Index < Xhc->UsbDevContext[SlotId].DevDesc.NumConfigurations);\r
Xhc->UsbDevContext[SlotId].ConfDesc[Index] = AllocateZeroPool (*DataLength);\r
if (Xhc->UsbDevContext[SlotId].ConfDesc[Index] == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ON_EXIT;\r
}\r
+\r
CopyMem (Xhc->UsbDevContext[SlotId].ConfDesc[Index], Data, *DataLength);\r
}\r
} else if (((DescriptorType == USB_DESC_TYPE_HUB) ||\r
- (DescriptorType == USB_DESC_TYPE_HUB_SUPER_SPEED)) && (*DataLength > 2)) {\r
+ (DescriptorType == USB_DESC_TYPE_HUB_SUPER_SPEED)) && (*DataLength > 2))\r
+ {\r
ASSERT (Data != NULL);\r
- HubDesc = (EFI_USB_HUB_DESCRIPTOR *) Data;\r
+ HubDesc = (EFI_USB_HUB_DESCRIPTOR *)Data;\r
ASSERT (HubDesc->NumPorts <= 15);\r
//\r
// The bit 5,6 of HubCharacter field of Hub Descriptor is TTT.\r
//\r
- TTT = (UINT8) ((HubDesc->HubCharacter & (BIT5 | BIT6)) >> 5);\r
+ TTT = (UINT8)((HubDesc->HubCharacter & (BIT5 | BIT6)) >> 5);\r
if (Xhc->UsbDevContext[SlotId].DevDesc.DeviceProtocol == 2) {\r
//\r
// Don't support multi-TT feature for super speed hub now.\r
}\r
}\r
} else if ((Request->Request == USB_REQ_SET_CONFIG) &&\r
- (Request->RequestType == USB_REQUEST_TYPE (EfiUsbNoData, USB_REQ_TYPE_STANDARD, USB_TARGET_DEVICE))) {\r
+ (Request->RequestType == USB_REQUEST_TYPE (EfiUsbNoData, USB_REQ_TYPE_STANDARD, USB_TARGET_DEVICE)))\r
+ {\r
//\r
// Hook Set_Config request from UsbBus as we need configure device endpoint.\r
//\r
} else {\r
Status = XhcPeiSetConfigCmd64 (Xhc, SlotId, DeviceSpeed, Xhc->UsbDevContext[SlotId].ConfDesc[Index]);\r
}\r
+\r
break;\r
}\r
}\r
} else if ((Request->Request == USB_REQ_GET_STATUS) &&\r
- (Request->RequestType == USB_REQUEST_TYPE (EfiUsbDataIn, USB_REQ_TYPE_CLASS, USB_TARGET_OTHER))) {\r
+ (Request->RequestType == USB_REQUEST_TYPE (EfiUsbDataIn, USB_REQ_TYPE_CLASS, USB_TARGET_OTHER)))\r
+ {\r
ASSERT (Data != NULL);\r
//\r
// Hook Get_Status request from UsbBus to keep track of the port status change.\r
//\r
- State = *(UINT32 *) Data;\r
+ State = *(UINT32 *)Data;\r
PortStatus.PortStatus = 0;\r
PortStatus.PortChangeStatus = 0;\r
\r
MapSize = sizeof (mUsbHubPortStateMap) / sizeof (USB_PORT_STATE_MAP);\r
for (Index = 0; Index < MapSize; Index++) {\r
if (XHC_BIT_IS_SET (State, mUsbHubPortStateMap[Index].HwState)) {\r
- PortStatus.PortStatus = (UINT16) (PortStatus.PortStatus | mUsbHubPortStateMap[Index].UefiState);\r
+ PortStatus.PortStatus = (UINT16)(PortStatus.PortStatus | mUsbHubPortStateMap[Index].UefiState);\r
}\r
}\r
\r
MapSize = sizeof (mUsbHubPortChangeMap) / sizeof (USB_PORT_STATE_MAP);\r
for (Index = 0; Index < MapSize; Index++) {\r
if (XHC_BIT_IS_SET (State, mUsbHubPortChangeMap[Index].HwState)) {\r
- PortStatus.PortChangeStatus = (UINT16) (PortStatus.PortChangeStatus | mUsbHubPortChangeMap[Index].UefiState);\r
+ PortStatus.PortChangeStatus = (UINT16)(PortStatus.PortChangeStatus | mUsbHubPortChangeMap[Index].UefiState);\r
}\r
}\r
\r
for (Index = 0; Index < MapSize; Index++) {\r
if (XHC_BIT_IS_SET (State, mUsbHubClearPortChangeMap[Index].HwState)) {\r
ZeroMem (&ClearPortRequest, sizeof (EFI_USB_DEVICE_REQUEST));\r
- ClearPortRequest.RequestType = USB_REQUEST_TYPE (EfiUsbNoData, USB_REQ_TYPE_CLASS, USB_TARGET_OTHER);\r
- ClearPortRequest.Request = (UINT8) USB_REQ_CLEAR_FEATURE;\r
- ClearPortRequest.Value = mUsbHubClearPortChangeMap[Index].Selector;\r
- ClearPortRequest.Index = Request->Index;\r
- ClearPortRequest.Length = 0;\r
+ ClearPortRequest.RequestType = USB_REQUEST_TYPE (EfiUsbNoData, USB_REQ_TYPE_CLASS, USB_TARGET_OTHER);\r
+ ClearPortRequest.Request = (UINT8)USB_REQ_CLEAR_FEATURE;\r
+ ClearPortRequest.Value = mUsbHubClearPortChangeMap[Index].Selector;\r
+ ClearPortRequest.Index = Request->Index;\r
+ ClearPortRequest.Length = 0;\r
\r
XhcPeiControlTransfer (\r
PeiServices,\r
\r
XhcPeiPollPortStatusChange (Xhc, Xhc->UsbDevContext[SlotId].RouteString, (UINT8)Request->Index, &PortStatus);\r
\r
- *(UINT32 *) Data = *(UINT32 *) &PortStatus;\r
+ *(UINT32 *)Data = *(UINT32 *)&PortStatus;\r
}\r
\r
ON_EXIT:\r
EFI_STATUS\r
EFIAPI\r
XhcPeiBulkTransfer (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB2_HOST_CONTROLLER_PPI *This,\r
- IN UINT8 DeviceAddress,\r
- IN UINT8 EndPointAddress,\r
- IN UINT8 DeviceSpeed,\r
- IN UINTN MaximumPacketLength,\r
- IN OUT VOID *Data[EFI_USB_MAX_BULK_BUFFER_NUM],\r
- IN OUT UINTN *DataLength,\r
- IN OUT UINT8 *DataToggle,\r
- IN UINTN TimeOut,\r
- IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
- OUT UINT32 *TransferResult\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB2_HOST_CONTROLLER_PPI *This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 EndPointAddress,\r
+ IN UINT8 DeviceSpeed,\r
+ IN UINTN MaximumPacketLength,\r
+ IN OUT VOID *Data[EFI_USB_MAX_BULK_BUFFER_NUM],\r
+ IN OUT UINTN *DataLength,\r
+ IN OUT UINT8 *DataToggle,\r
+ IN UINTN TimeOut,\r
+ IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
+ OUT UINT32 *TransferResult\r
)\r
{\r
- PEI_XHC_DEV *Xhc;\r
- URB *Urb;\r
- UINT8 SlotId;\r
- EFI_STATUS Status;\r
- EFI_STATUS RecoveryStatus;\r
+ PEI_XHC_DEV *Xhc;\r
+ URB *Urb;\r
+ UINT8 SlotId;\r
+ EFI_STATUS Status;\r
+ EFI_STATUS RecoveryStatus;\r
\r
//\r
// Validate the parameters\r
//\r
if ((DataLength == NULL) || (*DataLength == 0) ||\r
- (Data == NULL) || (Data[0] == NULL) || (TransferResult == NULL)) {\r
+ (Data == NULL) || (Data[0] == NULL) || (TransferResult == NULL))\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
if ((DeviceSpeed == EFI_USB_SPEED_LOW) ||\r
((DeviceSpeed == EFI_USB_SPEED_FULL) && (MaximumPacketLength > 64)) ||\r
((DeviceSpeed == EFI_USB_SPEED_HIGH) && (MaximumPacketLength > 512)) ||\r
- ((DeviceSpeed == EFI_USB_SPEED_SUPER) && (MaximumPacketLength > 1024))) {\r
+ ((DeviceSpeed == EFI_USB_SPEED_SUPER) && (MaximumPacketLength > 1024)))\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- Xhc = PEI_RECOVERY_USB_XHC_DEV_FROM_THIS (This);\r
+ Xhc = PEI_RECOVERY_USB_XHC_DEV_FROM_THIS (This);\r
\r
*TransferResult = EFI_USB_ERR_SYSTEM;\r
Status = EFI_DEVICE_ERROR;\r
//\r
// The transfer timed out. Abort the transfer by dequeueing of the TD.\r
//\r
- RecoveryStatus = XhcPeiDequeueTrbFromEndpoint(Xhc, Urb);\r
- if (EFI_ERROR(RecoveryStatus)) {\r
- DEBUG((DEBUG_ERROR, "XhcPeiBulkTransfer: XhcPeiDequeueTrbFromEndpoint failed\n"));\r
+ RecoveryStatus = XhcPeiDequeueTrbFromEndpoint (Xhc, Urb);\r
+ if (EFI_ERROR (RecoveryStatus)) {\r
+ DEBUG ((DEBUG_ERROR, "XhcPeiBulkTransfer: XhcPeiDequeueTrbFromEndpoint failed\n"));\r
}\r
} else {\r
if (*TransferResult == EFI_USB_NOERROR) {\r
Status = EFI_SUCCESS;\r
} else if ((*TransferResult == EFI_USB_ERR_STALL) || (*TransferResult == EFI_USB_ERR_BABBLE)) {\r
- RecoveryStatus = XhcPeiRecoverHaltedEndpoint(Xhc, Urb);\r
+ RecoveryStatus = XhcPeiRecoverHaltedEndpoint (Xhc, Urb);\r
if (EFI_ERROR (RecoveryStatus)) {\r
DEBUG ((DEBUG_ERROR, "XhcPeiBulkTransfer: XhcPeiRecoverHaltedEndpoint failed\n"));\r
}\r
+\r
Status = EFI_DEVICE_ERROR;\r
}\r
}\r
EFI_STATUS\r
EFIAPI\r
XhcPeiGetRootHubPortNumber (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB2_HOST_CONTROLLER_PPI *This,\r
- OUT UINT8 *PortNumber\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB2_HOST_CONTROLLER_PPI *This,\r
+ OUT UINT8 *PortNumber\r
)\r
{\r
- PEI_XHC_DEV *XhcDev;\r
+ PEI_XHC_DEV *XhcDev;\r
+\r
XhcDev = PEI_RECOVERY_USB_XHC_DEV_FROM_THIS (This);\r
\r
if (PortNumber == NULL) {\r
EFI_STATUS\r
EFIAPI\r
XhcPeiClearRootHubPortFeature (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB2_HOST_CONTROLLER_PPI *This,\r
- IN UINT8 PortNumber,\r
- IN EFI_USB_PORT_FEATURE PortFeature\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB2_HOST_CONTROLLER_PPI *This,\r
+ IN UINT8 PortNumber,\r
+ IN EFI_USB_PORT_FEATURE PortFeature\r
)\r
{\r
- PEI_XHC_DEV *Xhc;\r
- UINT32 Offset;\r
- UINT32 State;\r
- EFI_STATUS Status;\r
+ PEI_XHC_DEV *Xhc;\r
+ UINT32 Offset;\r
+ UINT32 State;\r
+ EFI_STATUS Status;\r
\r
- Xhc = PEI_RECOVERY_USB_XHC_DEV_FROM_THIS (This);\r
+ Xhc = PEI_RECOVERY_USB_XHC_DEV_FROM_THIS (This);\r
Status = EFI_SUCCESS;\r
\r
if (PortNumber >= Xhc->HcSParams1.Data.MaxPorts) {\r
goto ON_EXIT;\r
}\r
\r
- Offset = (UINT32) (XHC_PORTSC_OFFSET + (0x10 * PortNumber));\r
- State = XhcPeiReadOpReg (Xhc, Offset);\r
+ Offset = (UINT32)(XHC_PORTSC_OFFSET + (0x10 * PortNumber));\r
+ State = XhcPeiReadOpReg (Xhc, Offset);\r
DEBUG ((DEBUG_INFO, "XhcPeiClearRootHubPortFeature: Port: %x State: %x\n", PortNumber, State));\r
\r
//\r
// Mask off the port status change bits, these bits are\r
// write clean bits\r
//\r
- State &= ~ (BIT1 | BIT17 | BIT18 | BIT19 | BIT20 | BIT21 | BIT22 | BIT23);\r
+ State &= ~(BIT1 | BIT17 | BIT18 | BIT19 | BIT20 | BIT21 | BIT22 | BIT23);\r
\r
switch (PortFeature) {\r
case EfiUsbPortEnable:\r
State &= ~XHC_PORTSC_PP;\r
XhcPeiWriteOpReg (Xhc, Offset, State);\r
}\r
+\r
break;\r
\r
case EfiUsbPortOwner:\r
EFI_STATUS\r
EFIAPI\r
XhcPeiSetRootHubPortFeature (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB2_HOST_CONTROLLER_PPI *This,\r
- IN UINT8 PortNumber,\r
- IN EFI_USB_PORT_FEATURE PortFeature\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB2_HOST_CONTROLLER_PPI *This,\r
+ IN UINT8 PortNumber,\r
+ IN EFI_USB_PORT_FEATURE PortFeature\r
)\r
{\r
- PEI_XHC_DEV *Xhc;\r
- UINT32 Offset;\r
- UINT32 State;\r
- EFI_STATUS Status;\r
+ PEI_XHC_DEV *Xhc;\r
+ UINT32 Offset;\r
+ UINT32 State;\r
+ EFI_STATUS Status;\r
\r
- Xhc = PEI_RECOVERY_USB_XHC_DEV_FROM_THIS (This);\r
+ Xhc = PEI_RECOVERY_USB_XHC_DEV_FROM_THIS (This);\r
Status = EFI_SUCCESS;\r
\r
if (PortNumber >= Xhc->HcSParams1.Data.MaxPorts) {\r
goto ON_EXIT;\r
}\r
\r
- Offset = (UINT32) (XHC_PORTSC_OFFSET + (0x10 * PortNumber));\r
- State = XhcPeiReadOpReg (Xhc, Offset);\r
+ Offset = (UINT32)(XHC_PORTSC_OFFSET + (0x10 * PortNumber));\r
+ State = XhcPeiReadOpReg (Xhc, Offset);\r
DEBUG ((DEBUG_INFO, "XhcPeiSetRootHubPortFeature: Port: %x State: %x\n", PortNumber, State));\r
\r
//\r
// Mask off the port status change bits, these bits are\r
// write clean bits\r
//\r
- State &= ~ (BIT1 | BIT17 | BIT18 | BIT19 | BIT20 | BIT21 | BIT22 | BIT23);\r
+ State &= ~(BIT1 | BIT17 | BIT18 | BIT19 | BIT20 | BIT21 | BIT22 | BIT23);\r
\r
switch (PortFeature) {\r
case EfiUsbPortEnable:\r
State |= XHC_PORTSC_LWS;\r
XhcPeiWriteOpReg (Xhc, Offset, State);\r
State &= ~XHC_PORTSC_PLS;\r
- State |= (3 << 5) ;\r
+ State |= (3 << 5);\r
XhcPeiWriteOpReg (Xhc, Offset, State);\r
break;\r
\r
//\r
State |= XHC_PORTSC_RESET;\r
XhcPeiWriteOpReg (Xhc, Offset, State);\r
- XhcPeiWaitOpRegBit(Xhc, Offset, XHC_PORTSC_PRC, TRUE, XHC_GENERIC_TIMEOUT);\r
+ XhcPeiWaitOpRegBit (Xhc, Offset, XHC_PORTSC_PRC, TRUE, XHC_GENERIC_TIMEOUT);\r
break;\r
\r
case EfiUsbPortPower:\r
State |= XHC_PORTSC_PP;\r
XhcPeiWriteOpReg (Xhc, Offset, State);\r
}\r
+\r
break;\r
\r
case EfiUsbPortOwner:\r
EFI_STATUS\r
EFIAPI\r
XhcPeiGetRootHubPortStatus (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB2_HOST_CONTROLLER_PPI *This,\r
- IN UINT8 PortNumber,\r
- OUT EFI_USB_PORT_STATUS *PortStatus\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB2_HOST_CONTROLLER_PPI *This,\r
+ IN UINT8 PortNumber,\r
+ OUT EFI_USB_PORT_STATUS *PortStatus\r
)\r
{\r
- PEI_XHC_DEV *Xhc;\r
- UINT32 Offset;\r
- UINT32 State;\r
- UINTN Index;\r
- UINTN MapSize;\r
- USB_DEV_ROUTE ParentRouteChart;\r
+ PEI_XHC_DEV *Xhc;\r
+ UINT32 Offset;\r
+ UINT32 State;\r
+ UINTN Index;\r
+ UINTN MapSize;\r
+ USB_DEV_ROUTE ParentRouteChart;\r
\r
if (PortStatus == NULL) {\r
return EFI_INVALID_PARAMETER;\r
//\r
// Clear port status.\r
//\r
- PortStatus->PortStatus = 0;\r
- PortStatus->PortChangeStatus = 0;\r
+ PortStatus->PortStatus = 0;\r
+ PortStatus->PortChangeStatus = 0;\r
\r
- Offset = (UINT32) (XHC_PORTSC_OFFSET + (0x10 * PortNumber));\r
- State = XhcPeiReadOpReg (Xhc, Offset);\r
+ Offset = (UINT32)(XHC_PORTSC_OFFSET + (0x10 * PortNumber));\r
+ State = XhcPeiReadOpReg (Xhc, Offset);\r
DEBUG ((DEBUG_INFO, "XhcPeiGetRootHubPortStatus: Port: %x State: %x\n", PortNumber, State));\r
\r
//\r
\r
for (Index = 0; Index < MapSize; Index++) {\r
if (XHC_BIT_IS_SET (State, mUsbPortStateMap[Index].HwState)) {\r
- PortStatus->PortStatus = (UINT16) (PortStatus->PortStatus | mUsbPortStateMap[Index].UefiState);\r
+ PortStatus->PortStatus = (UINT16)(PortStatus->PortStatus | mUsbPortStateMap[Index].UefiState);\r
}\r
}\r
+\r
//\r
// Bit5~8 reflects its current link state.\r
//\r
\r
for (Index = 0; Index < MapSize; Index++) {\r
if (XHC_BIT_IS_SET (State, mUsbPortChangeMap[Index].HwState)) {\r
- PortStatus->PortChangeStatus = (UINT16) (PortStatus->PortChangeStatus | mUsbPortChangeMap[Index].UefiState);\r
+ PortStatus->PortChangeStatus = (UINT16)(PortStatus->PortChangeStatus | mUsbPortChangeMap[Index].UefiState);\r
}\r
}\r
\r
IN VOID *Ppi\r
)\r
{\r
- PEI_XHC_DEV *Xhc;\r
+ PEI_XHC_DEV *Xhc;\r
\r
- Xhc = PEI_RECOVERY_USB_XHC_DEV_FROM_THIS_NOTIFY(NotifyDescriptor);\r
+ Xhc = PEI_RECOVERY_USB_XHC_DEV_FROM_THIS_NOTIFY (NotifyDescriptor);\r
\r
XhcPeiHaltHC (Xhc, XHC_GENERIC_TIMEOUT);\r
\r
EFI_STATUS\r
EFIAPI\r
XhcPeimEntry (\r
- IN EFI_PEI_FILE_HANDLE FileHandle,\r
- IN CONST EFI_PEI_SERVICES **PeiServices\r
+ IN EFI_PEI_FILE_HANDLE FileHandle,\r
+ IN CONST EFI_PEI_SERVICES **PeiServices\r
)\r
{\r
- PEI_USB_CONTROLLER_PPI *UsbControllerPpi;\r
- EFI_STATUS Status;\r
- UINT8 Index;\r
- UINTN ControllerType;\r
- UINTN BaseAddress;\r
- UINTN MemPages;\r
- PEI_XHC_DEV *XhcDev;\r
- EFI_PHYSICAL_ADDRESS TempPtr;\r
- UINT32 PageSize;\r
+ PEI_USB_CONTROLLER_PPI *UsbControllerPpi;\r
+ EFI_STATUS Status;\r
+ UINT8 Index;\r
+ UINTN ControllerType;\r
+ UINTN BaseAddress;\r
+ UINTN MemPages;\r
+ PEI_XHC_DEV *XhcDev;\r
+ EFI_PHYSICAL_ADDRESS TempPtr;\r
+ UINT32 PageSize;\r
\r
//\r
// Shadow this PEIM to run from memory.\r
&gPeiUsbControllerPpiGuid,\r
0,\r
NULL,\r
- (VOID **) &UsbControllerPpi\r
+ (VOID **)&UsbControllerPpi\r
);\r
if (EFI_ERROR (Status)) {\r
return EFI_UNSUPPORTED;\r
Index = 0;\r
while (TRUE) {\r
Status = UsbControllerPpi->GetUsbController (\r
- (EFI_PEI_SERVICES **) PeiServices,\r
+ (EFI_PEI_SERVICES **)PeiServices,\r
UsbControllerPpi,\r
Index,\r
&ControllerType,\r
}\r
\r
MemPages = EFI_SIZE_TO_PAGES (sizeof (PEI_XHC_DEV));\r
- Status = PeiServicesAllocatePages (\r
- EfiBootServicesData,\r
- MemPages,\r
- &TempPtr\r
- );\r
+ Status = PeiServicesAllocatePages (\r
+ EfiBootServicesData,\r
+ MemPages,\r
+ &TempPtr\r
+ );\r
if (EFI_ERROR (Status)) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
- ZeroMem ((VOID *) (UINTN) TempPtr, EFI_PAGES_TO_SIZE (MemPages));\r
- XhcDev = (PEI_XHC_DEV *) ((UINTN) TempPtr);\r
-\r
- XhcDev->Signature = USB_XHC_DEV_SIGNATURE;\r
- XhcDev->UsbHostControllerBaseAddress = (UINT32) BaseAddress;\r
- XhcDev->CapLength = (UINT8) (XhcPeiReadCapRegister (XhcDev, XHC_CAPLENGTH_OFFSET) & 0x0FF);\r
- XhcDev->HcSParams1.Dword = XhcPeiReadCapRegister (XhcDev, XHC_HCSPARAMS1_OFFSET);\r
- XhcDev->HcSParams2.Dword = XhcPeiReadCapRegister (XhcDev, XHC_HCSPARAMS2_OFFSET);\r
- XhcDev->HcCParams.Dword = XhcPeiReadCapRegister (XhcDev, XHC_HCCPARAMS_OFFSET);\r
- XhcDev->DBOff = XhcPeiReadCapRegister (XhcDev, XHC_DBOFF_OFFSET);\r
- XhcDev->RTSOff = XhcPeiReadCapRegister (XhcDev, XHC_RTSOFF_OFFSET);\r
+\r
+ ZeroMem ((VOID *)(UINTN)TempPtr, EFI_PAGES_TO_SIZE (MemPages));\r
+ XhcDev = (PEI_XHC_DEV *)((UINTN)TempPtr);\r
+\r
+ XhcDev->Signature = USB_XHC_DEV_SIGNATURE;\r
+ XhcDev->UsbHostControllerBaseAddress = (UINT32)BaseAddress;\r
+ XhcDev->CapLength = (UINT8)(XhcPeiReadCapRegister (XhcDev, XHC_CAPLENGTH_OFFSET) & 0x0FF);\r
+ XhcDev->HcSParams1.Dword = XhcPeiReadCapRegister (XhcDev, XHC_HCSPARAMS1_OFFSET);\r
+ XhcDev->HcSParams2.Dword = XhcPeiReadCapRegister (XhcDev, XHC_HCSPARAMS2_OFFSET);\r
+ XhcDev->HcCParams.Dword = XhcPeiReadCapRegister (XhcDev, XHC_HCCPARAMS_OFFSET);\r
+ XhcDev->DBOff = XhcPeiReadCapRegister (XhcDev, XHC_DBOFF_OFFSET);\r
+ XhcDev->RTSOff = XhcPeiReadCapRegister (XhcDev, XHC_RTSOFF_OFFSET);\r
\r
//\r
// This PageSize field defines the page size supported by the xHC implementation.\r
//\r
MicroSecondDelay (XHC_ROOT_PORT_STATE_STABLE);\r
\r
- XhcDev->Usb2HostControllerPpi.ControlTransfer = XhcPeiControlTransfer;\r
- XhcDev->Usb2HostControllerPpi.BulkTransfer = XhcPeiBulkTransfer;\r
- XhcDev->Usb2HostControllerPpi.GetRootHubPortNumber = XhcPeiGetRootHubPortNumber;\r
- XhcDev->Usb2HostControllerPpi.GetRootHubPortStatus = XhcPeiGetRootHubPortStatus;\r
- XhcDev->Usb2HostControllerPpi.SetRootHubPortFeature = XhcPeiSetRootHubPortFeature;\r
- XhcDev->Usb2HostControllerPpi.ClearRootHubPortFeature = XhcPeiClearRootHubPortFeature;\r
+ XhcDev->Usb2HostControllerPpi.ControlTransfer = XhcPeiControlTransfer;\r
+ XhcDev->Usb2HostControllerPpi.BulkTransfer = XhcPeiBulkTransfer;\r
+ XhcDev->Usb2HostControllerPpi.GetRootHubPortNumber = XhcPeiGetRootHubPortNumber;\r
+ XhcDev->Usb2HostControllerPpi.GetRootHubPortStatus = XhcPeiGetRootHubPortStatus;\r
+ XhcDev->Usb2HostControllerPpi.SetRootHubPortFeature = XhcPeiSetRootHubPortFeature;\r
+ XhcDev->Usb2HostControllerPpi.ClearRootHubPortFeature = XhcPeiClearRootHubPortFeature;\r
\r
XhcDev->PpiDescriptor.Flags = (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST);\r
- XhcDev->PpiDescriptor.Guid = &gPeiUsb2HostControllerPpiGuid;\r
- XhcDev->PpiDescriptor.Ppi = &XhcDev->Usb2HostControllerPpi;\r
+ XhcDev->PpiDescriptor.Guid = &gPeiUsb2HostControllerPpiGuid;\r
+ XhcDev->PpiDescriptor.Ppi = &XhcDev->Usb2HostControllerPpi;\r
\r
- XhcDev->EndOfPeiNotifyList.Flags = (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST);\r
- XhcDev->EndOfPeiNotifyList.Guid = &gEfiEndOfPeiSignalPpiGuid;\r
+ XhcDev->EndOfPeiNotifyList.Flags = (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST);\r
+ XhcDev->EndOfPeiNotifyList.Guid = &gEfiEndOfPeiSignalPpiGuid;\r
XhcDev->EndOfPeiNotifyList.Notify = XhcEndOfPei;\r
\r
PeiServicesInstallPpi (&XhcDev->PpiDescriptor);\r