\r
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions\r
-of the BSD License which accompanies this distribution. The\r
-full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
**/\r
EFI_STATUS\r
PeiHubGetPortStatus (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB_IO_PPI *UsbIoPpi,\r
- IN UINT8 Port,\r
- OUT UINT32 *PortStatus\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB_IO_PPI *UsbIoPpi,\r
+ IN UINT8 Port,\r
+ OUT UINT32 *PortStatus\r
)\r
{\r
EFI_USB_DEVICE_REQUEST DeviceRequest;\r
DeviceRequest.RequestType = USB_HUB_GET_PORT_STATUS_REQ_TYPE;\r
DeviceRequest.Request = USB_HUB_GET_PORT_STATUS;\r
DeviceRequest.Index = Port;\r
- DeviceRequest.Length = (UINT16) sizeof (UINT32);\r
-\r
+ DeviceRequest.Length = (UINT16)sizeof (UINT32);\r
\r
return UsbIoPpi->UsbControlTransfer (\r
PeiServices,\r
PortStatus,\r
sizeof (UINT32)\r
);\r
-\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
PeiHubSetPortFeature (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB_IO_PPI *UsbIoPpi,\r
- IN UINT8 Port,\r
- IN UINT8 Value\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB_IO_PPI *UsbIoPpi,\r
+ IN UINT8 Port,\r
+ IN UINT8 Value\r
)\r
{\r
- EFI_USB_DEVICE_REQUEST DeviceRequest;\r
+ EFI_USB_DEVICE_REQUEST DeviceRequest;\r
\r
ZeroMem (&DeviceRequest, sizeof (EFI_USB_DEVICE_REQUEST));\r
\r
**/\r
EFI_STATUS\r
PeiHubClearPortFeature (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB_IO_PPI *UsbIoPpi,\r
- IN UINT8 Port,\r
- IN UINT8 Value\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB_IO_PPI *UsbIoPpi,\r
+ IN UINT8 Port,\r
+ IN UINT8 Value\r
)\r
{\r
- EFI_USB_DEVICE_REQUEST DeviceRequest;\r
+ EFI_USB_DEVICE_REQUEST DeviceRequest;\r
\r
ZeroMem (&DeviceRequest, sizeof (EFI_USB_DEVICE_REQUEST));\r
\r
**/\r
EFI_STATUS\r
PeiHubGetHubStatus (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB_IO_PPI *UsbIoPpi,\r
- OUT UINT32 *HubStatus\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB_IO_PPI *UsbIoPpi,\r
+ OUT UINT32 *HubStatus\r
)\r
{\r
EFI_USB_DEVICE_REQUEST DeviceRequest;\r
//\r
DeviceRequest.RequestType = USB_HUB_GET_HUB_STATUS_REQ_TYPE;\r
DeviceRequest.Request = USB_HUB_GET_HUB_STATUS;\r
- DeviceRequest.Length = (UINT16) sizeof (UINT32);\r
+ DeviceRequest.Length = (UINT16)sizeof (UINT32);\r
\r
return UsbIoPpi->UsbControlTransfer (\r
PeiServices,\r
}\r
\r
/**\r
- Set specified feature to a given hub.\r
+ Clear specified feature on a given hub.\r
\r
@param PeiServices General-purpose services that are available to every PEIM.\r
@param UsbIoPpi Indicates the PEI_USB_IO_PPI instance.\r
- @param Value New feature value.\r
+ @param Value Feature value that will be cleared from the hub port.\r
\r
- @retval EFI_SUCCESS Port feature is set successfully.\r
- @retval EFI_DEVICE_ERROR Cannot set the port feature due to a hardware error.\r
+ @retval EFI_SUCCESS Hub feature is cleared successfully.\r
+ @retval EFI_DEVICE_ERROR Cannot clear the hub feature due to a hardware error.\r
@retval Others Other failure occurs.\r
\r
**/\r
EFI_STATUS\r
-PeiHubSetHubFeature (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB_IO_PPI *UsbIoPpi,\r
- IN UINT8 Value\r
+PeiHubClearHubFeature (\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB_IO_PPI *UsbIoPpi,\r
+ IN UINT8 Value\r
)\r
{\r
- EFI_USB_DEVICE_REQUEST DeviceRequest;\r
+ EFI_USB_DEVICE_REQUEST DeviceRequest;\r
\r
ZeroMem (&DeviceRequest, sizeof (EFI_USB_DEVICE_REQUEST));\r
\r
//\r
// Fill Device request packet\r
//\r
- DeviceRequest.RequestType = USB_HUB_SET_HUB_FEATURE_REQ_TYPE;\r
- DeviceRequest.Request = USB_HUB_SET_HUB_FEATURE;\r
+ DeviceRequest.RequestType = USB_HUB_CLEAR_FEATURE_REQ_TYPE;\r
+ DeviceRequest.Request = USB_HUB_CLEAR_FEATURE;\r
DeviceRequest.Value = Value;\r
\r
return UsbIoPpi->UsbControlTransfer (\r
);\r
}\r
\r
-/**\r
- Clear specified feature on a given hub.\r
-\r
- @param PeiServices General-purpose services that are available to every PEIM.\r
- @param UsbIoPpi Indicates the PEI_USB_IO_PPI instance.\r
- @param Value Feature value that will be cleared from the hub port.\r
-\r
- @retval EFI_SUCCESS Hub feature is cleared successfully.\r
- @retval EFI_DEVICE_ERROR Cannot clear the hub feature due to a hardware error.\r
- @retval Others Other failure occurs.\r
-\r
-**/\r
-EFI_STATUS\r
-PeiHubClearHubFeature (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB_IO_PPI *UsbIoPpi,\r
- IN UINT8 Value\r
- )\r
-{\r
- EFI_USB_DEVICE_REQUEST DeviceRequest;\r
-\r
- ZeroMem (&DeviceRequest, sizeof (EFI_USB_DEVICE_REQUEST));\r
-\r
- //\r
- // Fill Device request packet\r
- //\r
- DeviceRequest.RequestType = USB_HUB_CLEAR_FEATURE_REQ_TYPE;\r
- DeviceRequest.Request = USB_HUB_CLEAR_FEATURE;\r
- DeviceRequest.Value = Value;\r
-\r
- return UsbIoPpi->UsbControlTransfer (\r
- PeiServices,\r
- UsbIoPpi,\r
- &DeviceRequest,\r
- EfiUsbNoData,\r
- PcdGet32 (PcdUsbTransferTimeoutValue),\r
- NULL,\r
- 0\r
- );\r
-}\r
-\r
/**\r
Get a given (SuperSpeed) hub descriptor.\r
\r
**/\r
EFI_STATUS\r
PeiGetHubDescriptor (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB_DEVICE *PeiUsbDevice,\r
- IN PEI_USB_IO_PPI *UsbIoPpi,\r
- IN UINTN DescriptorSize,\r
- OUT EFI_USB_HUB_DESCRIPTOR *HubDescriptor\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB_DEVICE *PeiUsbDevice,\r
+ IN PEI_USB_IO_PPI *UsbIoPpi,\r
+ IN UINTN DescriptorSize,\r
+ OUT EFI_USB_HUB_DESCRIPTOR *HubDescriptor\r
)\r
{\r
- EFI_USB_DEVICE_REQUEST DevReq;\r
- UINT8 DescType;\r
+ EFI_USB_DEVICE_REQUEST DevReq;\r
+ UINT8 DescType;\r
\r
ZeroMem (&DevReq, sizeof (EFI_USB_DEVICE_REQUEST));\r
\r
//\r
DevReq.RequestType = USB_RT_HUB | 0x80;\r
DevReq.Request = USB_HUB_GET_DESCRIPTOR;\r
- DevReq.Value = (UINT16) (DescType << 8);\r
- DevReq.Length = (UINT16) DescriptorSize;\r
-\r
- return UsbIoPpi->UsbControlTransfer (\r
- PeiServices,\r
- UsbIoPpi,\r
- &DevReq,\r
- EfiUsbDataIn,\r
- PcdGet32 (PcdUsbTransferTimeoutValue),\r
- HubDescriptor,\r
- (UINT16)DescriptorSize\r
- );\r
+ DevReq.Value = (UINT16)(DescType << 8);\r
+ DevReq.Length = (UINT16)DescriptorSize;\r
+\r
+ return UsbIoPpi->UsbControlTransfer (\r
+ PeiServices,\r
+ UsbIoPpi,\r
+ &DevReq,\r
+ EfiUsbDataIn,\r
+ PcdGet32 (PcdUsbTransferTimeoutValue),\r
+ HubDescriptor,\r
+ (UINT16)DescriptorSize\r
+ );\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
PeiUsbHubReadDesc (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB_DEVICE *PeiUsbDevice,\r
- IN PEI_USB_IO_PPI *UsbIoPpi,\r
- OUT EFI_USB_HUB_DESCRIPTOR *HubDescriptor\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB_DEVICE *PeiUsbDevice,\r
+ IN PEI_USB_IO_PPI *UsbIoPpi,\r
+ OUT EFI_USB_HUB_DESCRIPTOR *HubDescriptor\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// First get the hub descriptor length\r
**/\r
EFI_STATUS\r
PeiUsbHubCtrlSetHubDepth (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB_DEVICE *PeiUsbDevice,\r
- IN PEI_USB_IO_PPI *UsbIoPpi\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB_DEVICE *PeiUsbDevice,\r
+ IN PEI_USB_IO_PPI *UsbIoPpi\r
)\r
{\r
- EFI_USB_DEVICE_REQUEST DevReq;\r
+ EFI_USB_DEVICE_REQUEST DevReq;\r
+\r
ZeroMem (&DevReq, sizeof (EFI_USB_DEVICE_REQUEST));\r
\r
//\r
DevReq.Value = PeiUsbDevice->Tier;\r
DevReq.Length = 0;\r
\r
- return UsbIoPpi->UsbControlTransfer (\r
- PeiServices,\r
- UsbIoPpi,\r
- &DevReq,\r
- EfiUsbNoData,\r
- PcdGet32 (PcdUsbTransferTimeoutValue),\r
- NULL,\r
- 0\r
- );\r
+ return UsbIoPpi->UsbControlTransfer (\r
+ PeiServices,\r
+ UsbIoPpi,\r
+ &DevReq,\r
+ EfiUsbNoData,\r
+ PcdGet32 (PcdUsbTransferTimeoutValue),\r
+ NULL,\r
+ 0\r
+ );\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
PeiDoHubConfig (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB_DEVICE *PeiUsbDevice\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB_DEVICE *PeiUsbDevice\r
)\r
{\r
UINT8 HubDescBuffer[256];\r
// The length field of descriptor is UINT8 type, so the buffer\r
// with 256 bytes is enough to hold the descriptor data.\r
//\r
- HubDescriptor = (EFI_USB_HUB_DESCRIPTOR *) HubDescBuffer;\r
+ HubDescriptor = (EFI_USB_HUB_DESCRIPTOR *)HubDescBuffer;\r
\r
//\r
// Get the hub descriptor\r
//\r
Status = PeiUsbHubReadDesc (\r
- PeiServices,\r
- PeiUsbDevice,\r
- UsbIoPpi,\r
- HubDescriptor\r
- );\r
+ PeiServices,\r
+ PeiUsbDevice,\r
+ UsbIoPpi,\r
+ HubDescriptor\r
+ );\r
if (EFI_ERROR (Status)) {\r
return EFI_DEVICE_ERROR;\r
}\r
PeiUsbDevice->DownStreamPortNo = HubDescriptor->NbrPorts;\r
\r
if (PeiUsbDevice->DeviceSpeed == EFI_USB_SPEED_SUPER) {\r
- DEBUG ((EFI_D_INFO, "PeiDoHubConfig: Set Hub Depth as 0x%x\n", PeiUsbDevice->Tier));\r
+ DEBUG ((DEBUG_INFO, "PeiDoHubConfig: Set Hub Depth as 0x%x\n", PeiUsbDevice->Tier));\r
PeiUsbHubCtrlSetHubDepth (\r
PeiServices,\r
PeiUsbDevice,\r
//\r
for (Index = 0; Index < PeiUsbDevice->DownStreamPortNo; Index++) {\r
Status = PeiHubSetPortFeature (\r
- PeiServices,\r
- UsbIoPpi,\r
- (UINT8) (Index + 1),\r
- EfiUsbPortPower\r
- );\r
+ PeiServices,\r
+ UsbIoPpi,\r
+ (UINT8)(Index + 1),\r
+ EfiUsbPortPower\r
+ );\r
if (EFI_ERROR (Status)) {\r
- DEBUG (( EFI_D_ERROR, "PeiDoHubConfig: PeiHubSetPortFeature EfiUsbPortPower failed %x\n", Index));\r
+ DEBUG ((DEBUG_ERROR, "PeiDoHubConfig: PeiHubSetPortFeature EfiUsbPortPower failed %x\n", Index));\r
continue;\r
}\r
}\r
\r
- DEBUG (( EFI_D_INFO, "PeiDoHubConfig: HubDescriptor.PwrOn2PwrGood: 0x%x\n", HubDescriptor->PwrOn2PwrGood));\r
+ DEBUG ((DEBUG_INFO, "PeiDoHubConfig: HubDescriptor.PwrOn2PwrGood: 0x%x\n", HubDescriptor->PwrOn2PwrGood));\r
if (HubDescriptor->PwrOn2PwrGood > 0) {\r
MicroSecondDelay (HubDescriptor->PwrOn2PwrGood * USB_SET_PORT_POWER_STALL);\r
}\r
// Clear Hub Status Change\r
//\r
Status = PeiHubGetHubStatus (\r
- PeiServices,\r
- UsbIoPpi,\r
- (UINT32 *) &HubStatus\r
- );\r
+ PeiServices,\r
+ UsbIoPpi,\r
+ (UINT32 *)&HubStatus\r
+ );\r
if (EFI_ERROR (Status)) {\r
return EFI_DEVICE_ERROR;\r
} else {\r
C_HUB_LOCAL_POWER\r
);\r
}\r
+\r
//\r
// Hub change overcurrent happens\r
//\r
**/\r
VOID\r
PeiResetHubPort (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN PEI_USB_IO_PPI *UsbIoPpi,\r
- IN UINT8 PortNum\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN PEI_USB_IO_PPI *UsbIoPpi,\r
+ IN UINT8 PortNum\r
)\r
{\r
- EFI_STATUS Status;\r
- UINTN Index;\r
- EFI_USB_PORT_STATUS HubPortStatus;\r
+ EFI_STATUS Status;\r
+ UINTN Index;\r
+ EFI_USB_PORT_STATUS HubPortStatus;\r
\r
MicroSecondDelay (100 * 1000);\r
\r
PeiServices,\r
UsbIoPpi,\r
PortNum,\r
- (UINT32 *) &HubPortStatus\r
+ (UINT32 *)&HubPortStatus\r
);\r
\r
if (EFI_ERROR (Status)) {\r
}\r
\r
if (Index == USB_WAIT_PORT_STS_CHANGE_LOOP) {\r
- DEBUG ((EFI_D_ERROR, "PeiResetHubPort: reset not finished in time on port %d\n", PortNum));\r
+ DEBUG ((DEBUG_ERROR, "PeiResetHubPort: reset not finished in time on port %d\n", PortNum));\r
return;\r
}\r
\r