Provides some data structure definitions used by the SD/MMC host controller driver.\r
\r
Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.\r
-Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2015 - 2020, Intel Corporation. All rights reserved.<BR>\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
} EFI_SD_MMC_SLOT_TYPE;\r
\r
typedef struct {\r
- BOOLEAN Enable;\r
- EFI_SD_MMC_SLOT_TYPE SlotType;\r
- BOOLEAN MediaPresent;\r
- BOOLEAN Initialized;\r
- SD_MMC_CARD_TYPE CardType;\r
+ BOOLEAN Enable;\r
+ EFI_SD_MMC_SLOT_TYPE SlotType;\r
+ BOOLEAN MediaPresent;\r
+ BOOLEAN Initialized;\r
+ SD_MMC_CARD_TYPE CardType;\r
+ UINT64 CurrentFreq;\r
+ EDKII_SD_MMC_OPERATING_PARAMETERS OperatingParameters;\r
} SD_MMC_HC_SLOT;\r
\r
typedef struct {\r
UINT32 BaseClkFreq[SD_MMC_HC_MAX_SLOT];\r
} SD_MMC_HC_PRIVATE_DATA;\r
\r
+typedef struct {\r
+ SD_MMC_BUS_MODE BusTiming;\r
+ UINT8 BusWidth;\r
+ UINT32 ClockFreq;\r
+ EDKII_SD_MMC_DRIVER_STRENGTH DriverStrength;\r
+} SD_MMC_BUS_SETTINGS;\r
+\r
#define SD_MMC_HC_TRB_SIG SIGNATURE_32 ('T', 'R', 'B', 'T')\r
\r
+#define SD_MMC_TRB_RETRIES 5\r
+\r
//\r
// TRB (Transfer Request Block) contains information for the cmd request.\r
//\r
\r
EFI_EVENT Event;\r
BOOLEAN Started;\r
+ BOOLEAN CommandComplete;\r
UINT64 Timeout;\r
+ UINT32 Retries;\r
+\r
+ BOOLEAN PioModeTransferCompleted;\r
+ UINT32 PioBlockIndex;\r
\r
SD_MMC_HC_ADMA_32_DESC_LINE *Adma32Desc;\r
SD_MMC_HC_ADMA_64_V3_DESC_LINE *Adma64V3Desc;\r
IN UINT8 Slot\r
);\r
\r
+/**\r
+ SD/MMC card clock supply.\r
+\r
+ Refer to SD Host Controller Simplified spec 3.0 Section 3.2.1 for details.\r
+\r
+ @param[in] Private A pointer to the SD_MMC_HC_PRIVATE_DATA instance.\r
+ @param[in] Slot The slot number of the SD card to send the command to.\r
+ @param[in] BusTiming BusTiming at which the frequency change is done.\r
+ @param[in] FirstTimeSetup Flag to indicate whether the clock is being setup for the first time.\r
+ @param[in] ClockFreq The max clock frequency to be set. The unit is KHz.\r
+\r
+ @retval EFI_SUCCESS The clock is supplied successfully.\r
+ @retval Others The clock isn't supplied successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+SdMmcHcClockSupply (\r
+ IN SD_MMC_HC_PRIVATE_DATA *Private,\r
+ IN UINT8 Slot,\r
+ IN SD_MMC_BUS_MODE BusTiming,\r
+ IN BOOLEAN FirstTimeSetup,\r
+ IN UINT64 ClockFreq\r
+ );\r
+\r
/**\r
Software reset the specified SD/MMC host controller.\r
\r