/** @file EDKII_UFS_HC_PLATFORM_PPI definition. Copyright (c) 2024, American Megatrends International LLC. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _EDKII_PEI_UFS_HC_PLATFORM_PPI_H_ #define _EDKII_PEI_UFS_HC_PLATFORM_PPI_H_ #define EDKII_UFS_HC_PLATFORM_PPI_VERSION 1 extern EFI_GUID gEdkiiUfsHcPlatformPpiGuid; /// /// Forward declaration for the UFS_HOST_CONTROLLER_PPI. /// typedef struct _EDKII_UFS_HC_PLATFORM_PPI EDKII_UFS_HC_PLATFORM_PPI; typedef struct { UINT32 Capabilities; UINT32 Version; } EDKII_UFS_HC_INFO; /** Allows platform PPI to override host controller information @param[in] ControllerHandle Handle of the UFS controller. @param[in, out] HcInfo Pointer EDKII_UFS_HC_INFO associated with host controller. @retval EFI_SUCCESS Function completed successfully. @retval EFI_INVALID_PARAMETER HcInfo is NULL. @retval Others Function failed to complete. **/ typedef EFI_STATUS (EFIAPI *EDKII_UFS_HC_PLATFORM_OVERRIDE_HC_INFO)( IN EFI_HANDLE ControllerHandle, IN OUT EDKII_UFS_HC_INFO *HcInfo ); typedef enum { EdkiiUfsHcPreHce, EdkiiUfsHcPostHce, EdkiiUfsHcPreLinkStartup, EdkiiUfsHcPostLinkStartup } EDKII_UFS_HC_PLATFORM_CALLBACK_PHASE; typedef enum { EdkiiUfsCardRefClkFreq19p2Mhz, EdkiiUfsCardRefClkFreq26Mhz, EdkiiUfsCardRefClkFreq38p4Mhz, EdkiiUfsCardRefClkFreqObsolete } EDKII_UFS_CARD_REF_CLK_FREQ_ATTRIBUTE; /** Callback function for platform driver. @param[in] UfsHcBaseddr The pointer to UfsHcBase address. @param[in] CallbackPhase Specifies when the platform ppi is called @retval EFI_SUCCESS Override function completed successfully. @retval EFI_INVALID_PARAMETER CallbackPhase is invalid or CallbackData is NULL when phase expects valid data. @retval Others Function failed to complete. **/ typedef EFI_STATUS (EFIAPI *EDKII_UFS_HC_PLATFORM_PEI_CALLBACK)( IN UINTN *UfsHcBaseAddr, IN EDKII_UFS_HC_PLATFORM_CALLBACK_PHASE CallbackPhase ); /// /// This PPI contains a set of services to interact with the UFS host controller. /// struct _EDKII_UFS_HC_PLATFORM_PPI { /// /// Version of the PPI. /// UINT32 Version; /// /// Allows platform driver to override host controller information. /// EDKII_UFS_HC_PLATFORM_OVERRIDE_HC_INFO OverrideHcInfo; /// /// Allows platform driver to implement platform specific flows /// for host controller. /// EDKII_UFS_HC_PLATFORM_PEI_CALLBACK Callback; /// /// Reference Clock Frequency Ufs Card Attribute that need to be set in this Ufs Host Environment. /// EDKII_UFS_CARD_REF_CLK_FREQ_ATTRIBUTE RefClkFreq; }; #endif