]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Include/Protocol/UfsHostControllerPlatform.h
MdeModulePkg: Add bRefClkFreq card attribute programming support
[mirror_edk2.git] / MdeModulePkg / Include / Protocol / UfsHostControllerPlatform.h
CommitLineData
1bfd58c2
AM
1/** @file\r
2 EDKII_UFS_HC_PLATFORM_PROTOCOL definition.\r
3\r
f06941cc 4Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>\r
1bfd58c2
AM
5SPDX-License-Identifier: BSD-2-Clause-Patent\r
6\r
7**/\r
8\r
9#ifndef __EDKII_UFS_HC_PLATFORM_PROTOCOL_H__\r
10#define __EDKII_UFS_HC_PLATFORM_PROTOCOL_H__\r
11\r
12#include <Protocol/UfsHostController.h>\r
13\r
f06941cc 14#define EDKII_UFS_HC_PLATFORM_PROTOCOL_VERSION 2\r
1bfd58c2
AM
15\r
16extern EFI_GUID gEdkiiUfsHcPlatformProtocolGuid;\r
17\r
1436aea4 18typedef struct _EDKII_UFS_HC_PLATFORM_PROTOCOL EDKII_UFS_HC_PLATFORM_PROTOCOL;\r
1bfd58c2 19\r
1436aea4 20typedef struct _EDKII_UFS_HC_DRIVER_INTERFACE EDKII_UFS_HC_DRIVER_INTERFACE;\r
1bfd58c2
AM
21\r
22typedef struct {\r
1436aea4
MK
23 UINT32 Opcode;\r
24 UINT32 Arg1;\r
25 UINT32 Arg2;\r
26 UINT32 Arg3;\r
1bfd58c2
AM
27} EDKII_UIC_COMMAND;\r
28\r
29/**\r
30 Execute UIC command\r
31\r
32 @param[in] This Pointer to driver interface produced by the UFS controller.\r
33 @param[in, out] UicCommand Descriptor of the command that will be executed.\r
34\r
35 @retval EFI_SUCCESS Command executed successfully.\r
36 @retval EFI_INVALID_PARAMETER This or UicCommand is NULL.\r
37 @retval Others Command failed to execute.\r
38**/\r
39typedef\r
40EFI_STATUS\r
1436aea4 41(EFIAPI *EDKII_UFS_EXEC_UIC_COMMAND)(\r
1bfd58c2
AM
42 IN EDKII_UFS_HC_DRIVER_INTERFACE *This,\r
43 IN OUT EDKII_UIC_COMMAND *UicCommand\r
1436aea4 44 );\r
1bfd58c2
AM
45\r
46struct _EDKII_UFS_HC_DRIVER_INTERFACE {\r
47 ///\r
48 /// Protocol to accesss host controller MMIO and PCI registers.\r
49 ///\r
1436aea4 50 EDKII_UFS_HOST_CONTROLLER_PROTOCOL *UfsHcProtocol;\r
1bfd58c2
AM
51 ///\r
52 /// Function implementing UIC command execution.\r
53 ///\r
1436aea4 54 EDKII_UFS_EXEC_UIC_COMMAND UfsExecUicCommand;\r
1bfd58c2
AM
55};\r
56\r
57typedef struct {\r
1436aea4
MK
58 UINT32 Capabilities;\r
59 UINT32 Version;\r
1bfd58c2
AM
60} EDKII_UFS_HC_INFO;\r
61\r
62/**\r
63 Allows platform protocol to override host controller information\r
64\r
65 @param[in] ControllerHandle Handle of the UFS controller.\r
66 @param[in, out] HcInfo Pointer EDKII_UFS_HC_INFO associated with host controller.\r
67\r
68 @retval EFI_SUCCESS Function completed successfully.\r
69 @retval EFI_INVALID_PARAMETER HcInfo is NULL.\r
70 @retval Others Function failed to complete.\r
71**/\r
72typedef\r
73EFI_STATUS\r
1436aea4 74(EFIAPI *EDKII_UFS_HC_PLATFORM_OVERRIDE_HC_INFO)(\r
1bfd58c2
AM
75 IN EFI_HANDLE ControllerHandle,\r
76 IN OUT EDKII_UFS_HC_INFO *HcInfo\r
1436aea4 77 );\r
1bfd58c2
AM
78\r
79typedef enum {\r
80 EdkiiUfsHcPreHce,\r
81 EdkiiUfsHcPostHce,\r
82 EdkiiUfsHcPreLinkStartup,\r
83 EdkiiUfsHcPostLinkStartup\r
84} EDKII_UFS_HC_PLATFORM_CALLBACK_PHASE;\r
85\r
f06941cc
BPCR
86typedef enum {\r
87 EdkiiUfsCardRefClkFreq19p2Mhz,\r
88 EdkiiUfsCardRefClkFreq26Mhz,\r
89 EdkiiUfsCardRefClkFreq38p4Mhz,\r
90 EdkiiUfsCardRefClkFreqObsolete\r
91} EDKII_UFS_CARD_REF_CLK_FREQ_ATTRIBUTE;\r
92\r
1bfd58c2
AM
93/**\r
94 Callback function for platform driver.\r
95\r
96 @param[in] ControllerHandle Handle of the UFS controller.\r
97 @param[in] CallbackPhase Specifies when the platform protocol is called\r
98 @param[in, out] CallbackData Data specific to the callback phase.\r
99 For PreHce and PostHce - EDKII_UFS_HC_DRIVER_INTERFACE.\r
100 For PreLinkStartup and PostLinkStartup - EDKII_UFS_HC_DRIVER_INTERFACE.\r
101\r
102 @retval EFI_SUCCESS Override function completed successfully.\r
103 @retval EFI_INVALID_PARAMETER CallbackPhase is invalid or CallbackData is NULL when phase expects valid data.\r
104 @retval Others Function failed to complete.\r
105**/\r
106typedef\r
107EFI_STATUS\r
1436aea4 108(EFIAPI *EDKII_UFS_HC_PLATFORM_CALLBACK)(\r
1bfd58c2
AM
109 IN EFI_HANDLE ControllerHandle,\r
110 IN EDKII_UFS_HC_PLATFORM_CALLBACK_PHASE CallbackPhase,\r
111 IN OUT VOID *CallbackData\r
1436aea4 112 );\r
1bfd58c2
AM
113\r
114struct _EDKII_UFS_HC_PLATFORM_PROTOCOL {\r
115 ///\r
116 /// Version of the protocol.\r
117 ///\r
1436aea4 118 UINT32 Version;\r
1bfd58c2
AM
119 ///\r
120 /// Allows platform driver to override host controller information.\r
121 ///\r
1436aea4 122 EDKII_UFS_HC_PLATFORM_OVERRIDE_HC_INFO OverrideHcInfo;\r
1bfd58c2
AM
123 ///\r
124 /// Allows platform driver to implement platform specific flows\r
125 /// for host controller.\r
126 ///\r
1436aea4 127 EDKII_UFS_HC_PLATFORM_CALLBACK Callback;\r
f06941cc
BPCR
128 ///\r
129 /// Reference Clock Frequency Ufs Card Attribute that need to be set in this Ufs Host Environment.\r
130 ///\r
131 EDKII_UFS_CARD_REF_CLK_FREQ_ATTRIBUTE RefClkFreq;\r
1bfd58c2
AM
132};\r
133\r
134#endif\r