- {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
- {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
-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
- {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
- {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
-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
for (Index = 0; Index < Timeout * XHC_1_MILLISECOND; Index++) {\r
if (XHC_REG_BIT_IS_SET (Xhc, Offset, Bit) == WaitToSet) {\r
\r
for (Index = 0; Index < Timeout * XHC_1_MILLISECOND; Index++) {\r
if (XHC_REG_BIT_IS_SET (Xhc, Offset, Bit) == WaitToSet) {\r
\r
XhcPeiClearOpRegBit (Xhc, XHC_USBCMD_OFFSET, XHC_USBCMD_RUN);\r
Status = XhcPeiWaitOpRegBit (Xhc, XHC_USBSTS_OFFSET, XHC_USBSTS_HALT, TRUE, Timeout);\r
\r
XhcPeiClearOpRegBit (Xhc, XHC_USBCMD_OFFSET, XHC_USBCMD_RUN);\r
Status = XhcPeiWaitOpRegBit (Xhc, XHC_USBSTS_OFFSET, XHC_USBSTS_HALT, TRUE, Timeout);\r
\r
XhcPeiSetOpRegBit (Xhc, XHC_USBCMD_OFFSET, XHC_USBCMD_RUN);\r
Status = XhcPeiWaitOpRegBit (Xhc, XHC_USBSTS_OFFSET, XHC_USBSTS_HALT, FALSE, Timeout);\r
\r
XhcPeiSetOpRegBit (Xhc, XHC_USBCMD_OFFSET, XHC_USBCMD_RUN);\r
Status = XhcPeiWaitOpRegBit (Xhc, XHC_USBSTS_OFFSET, XHC_USBSTS_HALT, FALSE, Timeout);\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
- 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
return EFI_INVALID_PARAMETER;\r
}\r
\r
if ((MaximumPacketLength != 8) && (MaximumPacketLength != 16) &&\r
(MaximumPacketLength != 32) && (MaximumPacketLength != 64) &&\r
(MaximumPacketLength != 512)\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
if ((MaximumPacketLength != 8) && (MaximumPacketLength != 16) &&\r
(MaximumPacketLength != 32) && (MaximumPacketLength != 64) &&\r
(MaximumPacketLength != 512)\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
// 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
//\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
for (Index = 0; Index < 255; Index++) {\r
if (!Xhc->UsbDevContext[Index + 1].Enabled &&\r
(Xhc->UsbDevContext[Index + 1].SlotId == 0) &&\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
//\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
// endpoint is bidirectional. XhcPeiCreateUrb expects this\r
// combination of Ep addr and its direction.\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
- 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
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
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
if (EFI_ERROR (RecoveryStatus)) {\r
DEBUG ((DEBUG_ERROR, "XhcPeiControlTransfer: XhcPeiRecoverHaltedEndpoint failed\n"));\r
}\r
if (EFI_ERROR (RecoveryStatus)) {\r
DEBUG ((DEBUG_ERROR, "XhcPeiControlTransfer: XhcPeiRecoverHaltedEndpoint failed\n"));\r
}\r
Status = EFI_DEVICE_ERROR;\r
XhcPeiFreeUrb (Xhc, Urb);\r
goto ON_EXIT;\r
Status = EFI_DEVICE_ERROR;\r
XhcPeiFreeUrb (Xhc, Urb);\r
goto ON_EXIT;\r
//\r
if ((Request->Request == USB_REQ_GET_DESCRIPTOR) &&\r
((Request->RequestType == USB_REQUEST_TYPE (EfiUsbDataIn, USB_REQ_TYPE_STANDARD, USB_TARGET_DEVICE)) ||\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
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
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
if (Xhc->HcCParams.Data.Csz == 0) {\r
Status = XhcPeiEvaluateContext (Xhc, SlotId, MaxPacket0);\r
} else {\r
if (Xhc->HcCParams.Data.Csz == 0) {\r
Status = XhcPeiEvaluateContext (Xhc, SlotId, MaxPacket0);\r
} else {\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
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
CopyMem (Xhc->UsbDevContext[SlotId].ConfDesc[Index], Data, *DataLength);\r
}\r
} else if (((DescriptorType == USB_DESC_TYPE_HUB) ||\r
CopyMem (Xhc->UsbDevContext[SlotId].ConfDesc[Index], Data, *DataLength);\r
}\r
} else if (((DescriptorType == USB_DESC_TYPE_HUB) ||\r
ASSERT (HubDesc->NumPorts <= 15);\r
//\r
// The bit 5,6 of HubCharacter field of Hub Descriptor is TTT.\r
//\r
ASSERT (HubDesc->NumPorts <= 15);\r
//\r
// The bit 5,6 of HubCharacter field of Hub Descriptor is TTT.\r
//\r
if (Xhc->UsbDevContext[SlotId].DevDesc.DeviceProtocol == 2) {\r
//\r
// Don't support multi-TT feature for super speed hub now.\r
if (Xhc->UsbDevContext[SlotId].DevDesc.DeviceProtocol == 2) {\r
//\r
// Don't support multi-TT feature for super speed hub now.\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
} else {\r
Status = XhcPeiSetConfigCmd64 (Xhc, SlotId, DeviceSpeed, Xhc->UsbDevContext[SlotId].ConfDesc[Index]);\r
}\r
} else {\r
Status = XhcPeiSetConfigCmd64 (Xhc, SlotId, DeviceSpeed, Xhc->UsbDevContext[SlotId].ConfDesc[Index]);\r
}\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
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
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
}\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
}\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
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
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
XhcPeiPollPortStatusChange (Xhc, Xhc->UsbDevContext[SlotId].RouteString, (UINT8)Request->Index, &PortStatus);\r
\r
\r
XhcPeiPollPortStatusChange (Xhc, Xhc->UsbDevContext[SlotId].RouteString, (UINT8)Request->Index, &PortStatus);\r
\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
if ((DeviceSpeed == EFI_USB_SPEED_LOW) ||\r
((DeviceSpeed == EFI_USB_SPEED_FULL) && (MaximumPacketLength > 64)) ||\r
((DeviceSpeed == EFI_USB_SPEED_HIGH) && (MaximumPacketLength > 512)) ||\r
if ((DeviceSpeed == EFI_USB_SPEED_LOW) ||\r
((DeviceSpeed == EFI_USB_SPEED_FULL) && (MaximumPacketLength > 64)) ||\r
((DeviceSpeed == EFI_USB_SPEED_HIGH) && (MaximumPacketLength > 512)) ||\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
}\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
if (EFI_ERROR (RecoveryStatus)) {\r
DEBUG ((DEBUG_ERROR, "XhcPeiBulkTransfer: XhcPeiRecoverHaltedEndpoint failed\n"));\r
}\r
if (EFI_ERROR (RecoveryStatus)) {\r
DEBUG ((DEBUG_ERROR, "XhcPeiBulkTransfer: XhcPeiRecoverHaltedEndpoint failed\n"));\r
}\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
- 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
- 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
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 &= ~XHC_PORTSC_PP;\r
XhcPeiWriteOpReg (Xhc, Offset, State);\r
}\r
State &= ~XHC_PORTSC_PP;\r
XhcPeiWriteOpReg (Xhc, Offset, State);\r
}\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
- 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
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 |= XHC_PORTSC_LWS;\r
XhcPeiWriteOpReg (Xhc, Offset, State);\r
State &= ~XHC_PORTSC_PLS;\r
State |= XHC_PORTSC_LWS;\r
XhcPeiWriteOpReg (Xhc, Offset, State);\r
State &= ~XHC_PORTSC_PLS;\r
//\r
State |= XHC_PORTSC_RESET;\r
XhcPeiWriteOpReg (Xhc, Offset, State);\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
State |= XHC_PORTSC_PP;\r
XhcPeiWriteOpReg (Xhc, Offset, State);\r
}\r
State |= XHC_PORTSC_PP;\r
XhcPeiWriteOpReg (Xhc, Offset, State);\r
}\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
- 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
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
\r
for (Index = 0; Index < MapSize; Index++) {\r
if (XHC_BIT_IS_SET (State, mUsbPortStateMap[Index].HwState)) {\r
\r
for (Index = 0; Index < MapSize; Index++) {\r
if (XHC_BIT_IS_SET (State, mUsbPortChangeMap[Index].HwState)) {\r
\r
for (Index = 0; Index < MapSize; Index++) {\r
if (XHC_BIT_IS_SET (State, mUsbPortChangeMap[Index].HwState)) {\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
- 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
- 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
- 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
- XhcDev->PpiDescriptor.Guid = &gPeiUsb2HostControllerPpiGuid;\r
- XhcDev->PpiDescriptor.Ppi = &XhcDev->Usb2HostControllerPpi;\r
+ XhcDev->PpiDescriptor.Guid = &gPeiUsb2HostControllerPpiGuid;\r
+ XhcDev->PpiDescriptor.Ppi = &XhcDev->Usb2HostControllerPpi;\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