]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Include/Protocol/UfsHostControllerPlatform.h
MdeModulePkg: Add definition of the EDKII_UFS_HC_PLATFORM_PROTOCOL
[mirror_edk2.git] / MdeModulePkg / Include / Protocol / UfsHostControllerPlatform.h
CommitLineData
1bfd58c2
AM
1/** @file\r
2 EDKII_UFS_HC_PLATFORM_PROTOCOL definition.\r
3\r
4Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>\r
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
14#define EDKII_UFS_HC_PLATFORM_PROTOCOL_VERSION 1\r
15\r
16extern EFI_GUID gEdkiiUfsHcPlatformProtocolGuid;\r
17\r
18typedef struct _EDKII_UFS_HC_PLATFORM_PROTOCOL EDKII_UFS_HC_PLATFORM_PROTOCOL;\r
19\r
20typedef struct _EDKII_UFS_HC_DRIVER_INTERFACE EDKII_UFS_HC_DRIVER_INTERFACE;\r
21\r
22typedef struct {\r
23 UINT32 Opcode;\r
24 UINT32 Arg1;\r
25 UINT32 Arg2;\r
26 UINT32 Arg3;\r
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
41(EFIAPI *EDKII_UFS_EXEC_UIC_COMMAND) (\r
42 IN EDKII_UFS_HC_DRIVER_INTERFACE *This,\r
43 IN OUT EDKII_UIC_COMMAND *UicCommand\r
44);\r
45\r
46struct _EDKII_UFS_HC_DRIVER_INTERFACE {\r
47 ///\r
48 /// Protocol to accesss host controller MMIO and PCI registers.\r
49 ///\r
50 EDKII_UFS_HOST_CONTROLLER_PROTOCOL *UfsHcProtocol;\r
51 ///\r
52 /// Function implementing UIC command execution.\r
53 ///\r
54 EDKII_UFS_EXEC_UIC_COMMAND UfsExecUicCommand;\r
55};\r
56\r
57typedef struct {\r
58 UINT32 Capabilities;\r
59 UINT32 Version;\r
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
74(EFIAPI *EDKII_UFS_HC_PLATFORM_OVERRIDE_HC_INFO) (\r
75 IN EFI_HANDLE ControllerHandle,\r
76 IN OUT EDKII_UFS_HC_INFO *HcInfo\r
77);\r
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
86/**\r
87 Callback function for platform driver.\r
88\r
89 @param[in] ControllerHandle Handle of the UFS controller.\r
90 @param[in] CallbackPhase Specifies when the platform protocol is called\r
91 @param[in, out] CallbackData Data specific to the callback phase.\r
92 For PreHce and PostHce - EDKII_UFS_HC_DRIVER_INTERFACE.\r
93 For PreLinkStartup and PostLinkStartup - EDKII_UFS_HC_DRIVER_INTERFACE.\r
94\r
95 @retval EFI_SUCCESS Override function completed successfully.\r
96 @retval EFI_INVALID_PARAMETER CallbackPhase is invalid or CallbackData is NULL when phase expects valid data.\r
97 @retval Others Function failed to complete.\r
98**/\r
99typedef\r
100EFI_STATUS\r
101(EFIAPI *EDKII_UFS_HC_PLATFORM_CALLBACK) (\r
102 IN EFI_HANDLE ControllerHandle,\r
103 IN EDKII_UFS_HC_PLATFORM_CALLBACK_PHASE CallbackPhase,\r
104 IN OUT VOID *CallbackData\r
105);\r
106\r
107struct _EDKII_UFS_HC_PLATFORM_PROTOCOL {\r
108 ///\r
109 /// Version of the protocol.\r
110 ///\r
111 UINT32 Version;\r
112 ///\r
113 /// Allows platform driver to override host controller information.\r
114 ///\r
115 EDKII_UFS_HC_PLATFORM_OVERRIDE_HC_INFO OverrideHcInfo;\r
116 ///\r
117 /// Allows platform driver to implement platform specific flows\r
118 /// for host controller.\r
119 ///\r
120 EDKII_UFS_HC_PLATFORM_CALLBACK Callback;\r
121};\r
122\r
123#endif\r
124\r