2 Protocol to describe overrides required to support non-standard SDHCI
5 Copyright (c) 2017 - 2018, Linaro, Ltd. All rights reserved.<BR>
7 SPDX-License-Identifier: BSD-2-Clause-Patent
11 #ifndef __SD_MMC_OVERRIDE_H__
12 #define __SD_MMC_OVERRIDE_H__
14 #include <Protocol/SdMmcPassThru.h>
16 #define EDKII_SD_MMC_OVERRIDE_PROTOCOL_GUID \
17 { 0xeaf9e3c1, 0xc9cd, 0x46db, { 0xa5, 0xe5, 0x5a, 0x12, 0x4c, 0x83, 0x23, 0x23 } }
19 #define EDKII_SD_MMC_OVERRIDE_PROTOCOL_VERSION 0x2
21 typedef struct _EDKII_SD_MMC_OVERRIDE EDKII_SD_MMC_OVERRIDE
;
42 EdkiiSdMmcInitHostPre
,
43 EdkiiSdMmcInitHostPost
,
44 EdkiiSdMmcUhsSignaling
,
45 EdkiiSdMmcSwitchClockFreqPost
,
46 } EDKII_SD_MMC_PHASE_TYPE
;
50 Override function for SDHCI capability bits
52 @param[in] ControllerHandle The EFI_HANDLE of the controller.
53 @param[in] Slot The 0 based slot index.
54 @param[in,out] SdMmcHcSlotCapability The SDHCI capability structure.
55 @param[in,out] BaseClkFreq The base clock frequency value that
56 optionally can be updated.
58 @retval EFI_SUCCESS The override function completed successfully.
59 @retval EFI_NOT_FOUND The specified controller or slot does not exist.
60 @retval EFI_INVALID_PARAMETER SdMmcHcSlotCapability is NULL
65 (EFIAPI
* EDKII_SD_MMC_CAPABILITY
) (
66 IN EFI_HANDLE ControllerHandle
,
68 IN OUT VOID
*SdMmcHcSlotCapability
,
69 IN OUT UINT32
*BaseClkFreq
74 Override function for SDHCI controller operations
76 @param[in] ControllerHandle The EFI_HANDLE of the controller.
77 @param[in] Slot The 0 based slot index.
78 @param[in] PhaseType The type of operation and whether the
79 hook is invoked right before (pre) or
81 @param[in,out] PhaseData The pointer to a phase-specific data.
83 @retval EFI_SUCCESS The override function completed successfully.
84 @retval EFI_NOT_FOUND The specified controller or slot does not exist.
85 @retval EFI_INVALID_PARAMETER PhaseType is invalid
90 (EFIAPI
* EDKII_SD_MMC_NOTIFY_PHASE
) (
91 IN EFI_HANDLE ControllerHandle
,
93 IN EDKII_SD_MMC_PHASE_TYPE PhaseType
,
94 IN OUT VOID
*PhaseData
97 struct _EDKII_SD_MMC_OVERRIDE
{
99 // Protocol version of this implementation
103 // Callback to override SD/MMC host controller capability bits
105 EDKII_SD_MMC_CAPABILITY Capability
;
107 // Callback to invoke SD/MMC override hooks
109 EDKII_SD_MMC_NOTIFY_PHASE NotifyPhase
;
112 extern EFI_GUID gEdkiiSdMmcOverrideProtocolGuid
;