/** @file Copyright (c) 2017, Linaro. All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #ifndef __PLATFORM_DW_MMC_H__ #define __PLATFORM_DW_MMC_H__ typedef enum { RemovableSlot, EmbeddedSlot, SharedBusSlot, UnknownSlot } EFI_SD_MMC_SLOT_TYPE; typedef enum { UnknownCardType, SdCardType, SdioCardType, MmcCardType, EmmcCardType } SD_MMC_CARD_TYPE; typedef struct { UINT32 DefaultSpeed:1; // bit 0 UINT32 HighSpeed:1; // bit 1 UINT32 Sdr12:1; // bit 2 UINT32 Sdr25:1; // bit 3 UINT32 Sdr50:1; // bit 4 UINT32 Sdr104:1; // bit 5 UINT32 Ddr50:1; // bit 6 UINT32 SysBus64:1; // bit 7 UINT32 BusWidth:4; // bit 11:8 UINT32 SlotType:2; // bit 13:12 UINT32 CardType:3; // bit 16:14 UINT32 Voltage18:1; // bit 17 UINT32 Voltage30:1; // bit 18 UINT32 Voltage33:1; // bit 19 UINT32 BaseClkFreq; EFI_HANDLE Controller; } DW_MMC_HC_SLOT_CAP; // // Protocol interface structure // typedef struct _PLATFORM_DW_MMC_PROTOCOL PLATFORM_DW_MMC_PROTOCOL; typedef EFI_STATUS (EFIAPI *PLATFORM_DW_MMC_GET_CAPABILITY) ( IN EFI_HANDLE Controller, IN UINT8 Slot, OUT DW_MMC_HC_SLOT_CAP *Capability ); typedef BOOLEAN (EFIAPI *PLATFORM_DW_MMC_CARD_DETECT) ( IN EFI_HANDLE Controller, IN UINT8 Slot ); struct _PLATFORM_DW_MMC_PROTOCOL { PLATFORM_DW_MMC_GET_CAPABILITY GetCapability; PLATFORM_DW_MMC_CARD_DETECT CardDetect; }; extern EFI_GUID gPlatformDwMmcProtocolGuid; #endif /* __PLATFORM_DW_MMC_H__ */