2 Protocol to describe overrides required to support non-standard SDHCI
5 Copyright (c) 2017 - 2018, Linaro, Ltd. All rights reserved.<BR>
7 This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 #ifndef __SD_MMC_OVERRIDE_H__
18 #define __SD_MMC_OVERRIDE_H__
20 #include <Protocol/SdMmcPassThru.h>
22 #define EDKII_SD_MMC_OVERRIDE_PROTOCOL_GUID \
23 { 0xeaf9e3c1, 0xc9cd, 0x46db, { 0xa5, 0xe5, 0x5a, 0x12, 0x4c, 0x83, 0x23, 0x23 } }
25 #define EDKII_SD_MMC_OVERRIDE_PROTOCOL_VERSION 0x1
27 typedef struct _EDKII_SD_MMC_OVERRIDE EDKII_SD_MMC_OVERRIDE
;
48 EdkiiSdMmcInitHostPre
,
49 EdkiiSdMmcInitHostPost
,
50 EdkiiSdMmcUhsSignaling
,
51 } EDKII_SD_MMC_PHASE_TYPE
;
55 Override function for SDHCI capability bits
57 @param[in] ControllerHandle The EFI_HANDLE of the controller.
58 @param[in] Slot The 0 based slot index.
59 @param[in,out] SdMmcHcSlotCapability The SDHCI capability structure.
61 @retval EFI_SUCCESS The override function completed successfully.
62 @retval EFI_NOT_FOUND The specified controller or slot does not exist.
63 @retval EFI_INVALID_PARAMETER SdMmcHcSlotCapability is NULL
68 (EFIAPI
* EDKII_SD_MMC_CAPABILITY
) (
69 IN EFI_HANDLE ControllerHandle
,
71 IN OUT VOID
*SdMmcHcSlotCapability
76 Override function for SDHCI controller operations
78 @param[in] ControllerHandle The EFI_HANDLE of the controller.
79 @param[in] Slot The 0 based slot index.
80 @param[in] PhaseType The type of operation and whether the
81 hook is invoked right before (pre) or
83 @param[in,out] PhaseData The pointer to a phase-specific data.
85 @retval EFI_SUCCESS The override function completed successfully.
86 @retval EFI_NOT_FOUND The specified controller or slot does not exist.
87 @retval EFI_INVALID_PARAMETER PhaseType is invalid
92 (EFIAPI
* EDKII_SD_MMC_NOTIFY_PHASE
) (
93 IN EFI_HANDLE ControllerHandle
,
95 IN EDKII_SD_MMC_PHASE_TYPE PhaseType
,
96 IN OUT VOID
*PhaseData
99 struct _EDKII_SD_MMC_OVERRIDE
{
101 // Protocol version of this implementation
105 // Callback to override SD/MMC host controller capability bits
107 EDKII_SD_MMC_CAPABILITY Capability
;
109 // Callback to invoke SD/MMC override hooks
111 EDKII_SD_MMC_NOTIFY_PHASE NotifyPhase
;
114 extern EFI_GUID gEdkiiSdMmcOverrideProtocolGuid
;