2 EDKII_UFS_HC_PLATFORM_PROTOCOL definition.
4 Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
9 #ifndef __EDKII_UFS_HC_PLATFORM_PROTOCOL_H__
10 #define __EDKII_UFS_HC_PLATFORM_PROTOCOL_H__
12 #include <Protocol/UfsHostController.h>
14 #define EDKII_UFS_HC_PLATFORM_PROTOCOL_VERSION 2
16 extern EFI_GUID gEdkiiUfsHcPlatformProtocolGuid
;
18 typedef struct _EDKII_UFS_HC_PLATFORM_PROTOCOL EDKII_UFS_HC_PLATFORM_PROTOCOL
;
20 typedef struct _EDKII_UFS_HC_DRIVER_INTERFACE EDKII_UFS_HC_DRIVER_INTERFACE
;
32 @param[in] This Pointer to driver interface produced by the UFS controller.
33 @param[in, out] UicCommand Descriptor of the command that will be executed.
35 @retval EFI_SUCCESS Command executed successfully.
36 @retval EFI_INVALID_PARAMETER This or UicCommand is NULL.
37 @retval Others Command failed to execute.
41 (EFIAPI
*EDKII_UFS_EXEC_UIC_COMMAND
)(
42 IN EDKII_UFS_HC_DRIVER_INTERFACE
*This
,
43 IN OUT EDKII_UIC_COMMAND
*UicCommand
46 struct _EDKII_UFS_HC_DRIVER_INTERFACE
{
48 /// Protocol to accesss host controller MMIO and PCI registers.
50 EDKII_UFS_HOST_CONTROLLER_PROTOCOL
*UfsHcProtocol
;
52 /// Function implementing UIC command execution.
54 EDKII_UFS_EXEC_UIC_COMMAND UfsExecUicCommand
;
63 Allows platform protocol to override host controller information
65 @param[in] ControllerHandle Handle of the UFS controller.
66 @param[in, out] HcInfo Pointer EDKII_UFS_HC_INFO associated with host controller.
68 @retval EFI_SUCCESS Function completed successfully.
69 @retval EFI_INVALID_PARAMETER HcInfo is NULL.
70 @retval Others Function failed to complete.
74 (EFIAPI
*EDKII_UFS_HC_PLATFORM_OVERRIDE_HC_INFO
)(
75 IN EFI_HANDLE ControllerHandle
,
76 IN OUT EDKII_UFS_HC_INFO
*HcInfo
82 EdkiiUfsHcPreLinkStartup
,
83 EdkiiUfsHcPostLinkStartup
84 } EDKII_UFS_HC_PLATFORM_CALLBACK_PHASE
;
87 EdkiiUfsCardRefClkFreq19p2Mhz
,
88 EdkiiUfsCardRefClkFreq26Mhz
,
89 EdkiiUfsCardRefClkFreq38p4Mhz
,
90 EdkiiUfsCardRefClkFreqObsolete
91 } EDKII_UFS_CARD_REF_CLK_FREQ_ATTRIBUTE
;
94 Callback function for platform driver.
96 @param[in] ControllerHandle Handle of the UFS controller.
97 @param[in] CallbackPhase Specifies when the platform protocol is called
98 @param[in, out] CallbackData Data specific to the callback phase.
99 For PreHce and PostHce - EDKII_UFS_HC_DRIVER_INTERFACE.
100 For PreLinkStartup and PostLinkStartup - EDKII_UFS_HC_DRIVER_INTERFACE.
102 @retval EFI_SUCCESS Override function completed successfully.
103 @retval EFI_INVALID_PARAMETER CallbackPhase is invalid or CallbackData is NULL when phase expects valid data.
104 @retval Others Function failed to complete.
108 (EFIAPI
*EDKII_UFS_HC_PLATFORM_CALLBACK
)(
109 IN EFI_HANDLE ControllerHandle
,
110 IN EDKII_UFS_HC_PLATFORM_CALLBACK_PHASE CallbackPhase
,
111 IN OUT VOID
*CallbackData
114 struct _EDKII_UFS_HC_PLATFORM_PROTOCOL
{
116 /// Version of the protocol.
120 /// Allows platform driver to override host controller information.
122 EDKII_UFS_HC_PLATFORM_OVERRIDE_HC_INFO OverrideHcInfo
;
124 /// Allows platform driver to implement platform specific flows
125 /// for host controller.
127 EDKII_UFS_HC_PLATFORM_CALLBACK Callback
;
129 /// Reference Clock Frequency Ufs Card Attribute that need to be set in this Ufs Host Environment.
131 EDKII_UFS_CARD_REF_CLK_FREQ_ATTRIBUTE RefClkFreq
;