]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Include/Protocol/SdMmcOverride.h
MdeModulePkg/SdMmcPciHcDxe: Add an optional parameter in NotifyPhase
[mirror_edk2.git] / MdeModulePkg / Include / Protocol / SdMmcOverride.h
CommitLineData
c7be0dd5
AB
1/** @file\r
2 Protocol to describe overrides required to support non-standard SDHCI\r
3 implementations\r
4\r
5 Copyright (c) 2017 - 2018, Linaro, Ltd. All rights reserved.<BR>\r
6\r
7 This program and the accompanying materials\r
8 are licensed and made available under the terms and conditions of the BSD License\r
9 which accompanies this distribution. The full text of the license may be found at\r
10 http://opensource.org/licenses/bsd-license.php\r
11\r
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14\r
15**/\r
16\r
17#ifndef __SD_MMC_OVERRIDE_H__\r
18#define __SD_MMC_OVERRIDE_H__\r
19\r
20#include <Protocol/SdMmcPassThru.h>\r
21\r
22#define EDKII_SD_MMC_OVERRIDE_PROTOCOL_GUID \\r
23 { 0xeaf9e3c1, 0xc9cd, 0x46db, { 0xa5, 0xe5, 0x5a, 0x12, 0x4c, 0x83, 0x23, 0x23 } }\r
24\r
25#define EDKII_SD_MMC_OVERRIDE_PROTOCOL_VERSION 0x1\r
26\r
27typedef struct _EDKII_SD_MMC_OVERRIDE EDKII_SD_MMC_OVERRIDE;\r
28\r
29typedef enum {\r
30 EdkiiSdMmcResetPre,\r
31 EdkiiSdMmcResetPost,\r
32 EdkiiSdMmcInitHostPre,\r
33 EdkiiSdMmcInitHostPost,\r
34} EDKII_SD_MMC_PHASE_TYPE;\r
35\r
36/**\r
37\r
38 Override function for SDHCI capability bits\r
39\r
40 @param[in] ControllerHandle The EFI_HANDLE of the controller.\r
41 @param[in] Slot The 0 based slot index.\r
42 @param[in,out] SdMmcHcSlotCapability The SDHCI capability structure.\r
43\r
44 @retval EFI_SUCCESS The override function completed successfully.\r
45 @retval EFI_NOT_FOUND The specified controller or slot does not exist.\r
46 @retval EFI_INVALID_PARAMETER SdMmcHcSlotCapability is NULL\r
47\r
48**/\r
49typedef\r
50EFI_STATUS\r
51(EFIAPI * EDKII_SD_MMC_CAPABILITY) (\r
52 IN EFI_HANDLE ControllerHandle,\r
53 IN UINT8 Slot,\r
54 IN OUT VOID *SdMmcHcSlotCapability\r
55 );\r
56\r
57/**\r
58\r
59 Override function for SDHCI controller operations\r
60\r
61 @param[in] ControllerHandle The EFI_HANDLE of the controller.\r
62 @param[in] Slot The 0 based slot index.\r
63 @param[in] PhaseType The type of operation and whether the\r
64 hook is invoked right before (pre) or\r
65 right after (post)\r
49c99534 66 @param[in,out] PhaseData The pointer to a phase-specific data.\r
c7be0dd5
AB
67\r
68 @retval EFI_SUCCESS The override function completed successfully.\r
69 @retval EFI_NOT_FOUND The specified controller or slot does not exist.\r
70 @retval EFI_INVALID_PARAMETER PhaseType is invalid\r
71\r
72**/\r
73typedef\r
74EFI_STATUS\r
75(EFIAPI * EDKII_SD_MMC_NOTIFY_PHASE) (\r
76 IN EFI_HANDLE ControllerHandle,\r
77 IN UINT8 Slot,\r
49c99534
MW
78 IN EDKII_SD_MMC_PHASE_TYPE PhaseType,\r
79 IN OUT VOID *PhaseData\r
c7be0dd5
AB
80 );\r
81\r
82struct _EDKII_SD_MMC_OVERRIDE {\r
83 //\r
84 // Protocol version of this implementation\r
85 //\r
86 UINTN Version;\r
87 //\r
88 // Callback to override SD/MMC host controller capability bits\r
89 //\r
90 EDKII_SD_MMC_CAPABILITY Capability;\r
91 //\r
92 // Callback to invoke SD/MMC override hooks\r
93 //\r
94 EDKII_SD_MMC_NOTIFY_PHASE NotifyPhase;\r
95};\r
96\r
97extern EFI_GUID gEdkiiSdMmcOverrideProtocolGuid;\r
98\r
99#endif\r