SyterKit 0.4.0.x
SyterKit is a bare-metal framework
Loading...
Searching...
No Matches
Macros | Functions | Variables
sys-sdcard.c File Reference
#include <io.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <types.h>
#include <log.h>
#include <common.h>
#include "sys-sdcard.h"
Include dependency graph for sys-sdcard.c:

Macros

#define FALSE   0
 
#define TRUE   1
 
#define EXT_CSD_CMDQ_MODE_EN   15 /* R/W */
 
#define EXT_CSD_FLUSH_CACHE   32 /* W */
 
#define EXT_CSD_CACHE_CTRL   33 /* R/W */
 
#define EXT_CSD_POWER_OFF_NOTIFICATION   34 /* R/W */
 
#define EXT_CSD_PACKED_FAILURE_INDEX   35 /* RO */
 
#define EXT_CSD_PACKED_CMD_STATUS   36 /* RO */
 
#define EXT_CSD_EXP_EVENTS_STATUS   54 /* RO, 2 bytes */
 
#define EXT_CSD_EXP_EVENTS_CTRL   56 /* R/W, 2 bytes */
 
#define EXT_CSD_DATA_SECTOR_SIZE   61 /* R */
 
#define EXT_CSD_GP_SIZE_MULT   143 /* R/W */
 
#define EXT_CSD_PARTITION_SETTING_COMPLETED   155 /* R/W */
 
#define EXT_CSD_PARTITION_ATTRIBUTE   156 /* R/W */
 
#define EXT_CSD_PARTITION_SUPPORT   160 /* RO */
 
#define EXT_CSD_HPI_MGMT   161 /* R/W */
 
#define EXT_CSD_RST_N_FUNCTION   162 /* R/W */
 
#define EXT_CSD_BKOPS_EN   163 /* R/W */
 
#define EXT_CSD_BKOPS_START   164 /* W */
 
#define EXT_CSD_SANITIZE_START   165 /* W */
 
#define EXT_CSD_WR_REL_PARAM   166 /* RO */
 
#define EXT_CSD_RPMB_MULT   168 /* RO */
 
#define EXT_CSD_FW_CONFIG   169 /* R/W */
 
#define EXT_CSD_BOOT_WP   173 /* R/W */
 
#define EXT_CSD_ERASE_GROUP_DEF   175 /* R/W */
 
#define EXT_CSD_PART_CONFIG   179 /* R/W */
 
#define EXT_CSD_ERASED_MEM_CONT   181 /* RO */
 
#define EXT_CSD_BUS_WIDTH   183 /* R/W */
 
#define EXT_CSD_STROBE_SUPPORT   184 /* RO */
 
#define EXT_CSD_HS_TIMING   185 /* R/W */
 
#define EXT_CSD_POWER_CLASS   187 /* R/W */
 
#define EXT_CSD_REV   192 /* RO */
 
#define EXT_CSD_STRUCTURE   194 /* RO */
 
#define EXT_CSD_CARD_TYPE   196 /* RO */
 
#define EXT_CSD_DRIVER_STRENGTH   197 /* RO */
 
#define EXT_CSD_OUT_OF_INTERRUPT_TIME   198 /* RO */
 
#define EXT_CSD_PART_SWITCH_TIME   199 /* RO */
 
#define EXT_CSD_PWR_CL_52_195   200 /* RO */
 
#define EXT_CSD_PWR_CL_26_195   201 /* RO */
 
#define EXT_CSD_PWR_CL_52_360   202 /* RO */
 
#define EXT_CSD_PWR_CL_26_360   203 /* RO */
 
#define EXT_CSD_SEC_CNT   212 /* RO, 4 bytes */
 
#define EXT_CSD_S_A_TIMEOUT   217 /* RO */
 
#define EXT_CSD_REL_WR_SEC_C   222 /* RO */
 
#define EXT_CSD_HC_WP_GRP_SIZE   221 /* RO */
 
#define EXT_CSD_ERASE_TIMEOUT_MULT   223 /* RO */
 
#define EXT_CSD_HC_ERASE_GRP_SIZE   224 /* RO */
 
#define EXT_CSD_BOOT_MULT   226 /* RO */
 
#define EXT_CSD_SEC_TRIM_MULT   229 /* RO */
 
#define EXT_CSD_SEC_ERASE_MULT   230 /* RO */
 
#define EXT_CSD_SEC_FEATURE_SUPPORT   231 /* RO */
 
#define EXT_CSD_TRIM_MULT   232 /* RO */
 
#define EXT_CSD_PWR_CL_200_195   236 /* RO */
 
#define EXT_CSD_PWR_CL_200_360   237 /* RO */
 
#define EXT_CSD_PWR_CL_DDR_52_195   238 /* RO */
 
#define EXT_CSD_PWR_CL_DDR_52_360   239 /* RO */
 
#define EXT_CSD_BKOPS_STATUS   246 /* RO */
 
#define EXT_CSD_POWER_OFF_LONG_TIME   247 /* RO */
 
#define EXT_CSD_GENERIC_CMD6_TIME   248 /* RO */
 
#define EXT_CSD_CACHE_SIZE   249 /* RO, 4 bytes */
 
#define EXT_CSD_PWR_CL_DDR_200_360   253 /* RO */
 
#define EXT_CSD_FIRMWARE_VERSION   254 /* RO, 8 bytes */
 
#define EXT_CSD_PRE_EOL_INFO   267 /* RO */
 
#define EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_A   268 /* RO */
 
#define EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_B   269 /* RO */
 
#define EXT_CSD_CMDQ_DEPTH   307 /* RO */
 
#define EXT_CSD_CMDQ_SUPPORT   308 /* RO */
 
#define EXT_CSD_SUPPORTED_MODE   493 /* RO */
 
#define EXT_CSD_TAG_UNIT_SIZE   498 /* RO */
 
#define EXT_CSD_DATA_TAG_SUPPORT   499 /* RO */
 
#define EXT_CSD_MAX_PACKED_WRITES   500 /* RO */
 
#define EXT_CSD_MAX_PACKED_READS   501 /* RO */
 
#define EXT_CSD_BKOPS_SUPPORT   502 /* RO */
 
#define EXT_CSD_HPI_FEATURES   503 /* RO */
 
#define EXT_CSD_BUS_WIDTH_1   0 /* Card is in 1 bit mode */
 
#define EXT_CSD_BUS_WIDTH_4   1 /* Card is in 4 bit mode */
 
#define EXT_CSD_BUS_WIDTH_8   2 /* Card is in 8 bit mode */
 
#define EXT_CSD_DDR_BUS_WIDTH_4   5 /* Card is in 4 bit DDR mode */
 
#define EXT_CSD_DDR_BUS_WIDTH_8   6 /* Card is in 8 bit DDR mode */
 
#define EXT_CSD_CARD_TYPE_26   (1 << 0) /* Card can run at 26MHz */
 
#define EXT_CSD_CARD_TYPE_52   (1 << 1) /* Card can run at 52MHz */
 
#define EXT_CSD_CARD_TYPE_MASK   0x3F /* Mask out reserved bits */
 
#define EXT_CSD_CARD_TYPE_DDR_1_8V   (1 << 2) /* Card can run at 52MHz */
 
#define EXT_CSD_CARD_TYPE_DDR_1_2V   (1 << 3) /* Card can run at 52MHz */
 
#define EXT_CSD_CARD_TYPE_DDR_52   (EXT_CSD_CARD_TYPE_DDR_1_8V | EXT_CSD_CARD_TYPE_DDR_1_2V)
 
#define EXT_CSD_CARD_TYPE_SDR_1_8V   (1 << 4) /* Card can run at 200MHz */
 
#define EXT_CSD_CARD_TYPE_SDR_1_2V   (1 << 5) /* Card can run at 200MHz */
 
#define EXT_CSD_CMD_SET_NORMAL   (1 << 0)
 
#define EXT_CSD_CMD_SET_SECURE   (1 << 1)
 
#define EXT_CSD_CMD_SET_CPSECURE   (1 << 2)
 
#define EXT_CSD_PWR_CL_8BIT_MASK   0xF0 /* 8 bit PWR CLS */
 
#define EXT_CSD_PWR_CL_4BIT_MASK   0x0F /* 8 bit PWR CLS */
 
#define EXT_CSD_PWR_CL_8BIT_SHIFT   4
 
#define EXT_CSD_PWR_CL_4BIT_SHIFT   0
 
#define UNSTUFF_BITS(resp, start, size)
 

Functions

static uint32_t extract_mid (sdmmc_t *card)
 
static uint32_t extract_oid (sdmmc_t *card)
 
static uint32_t extract_prv (sdmmc_t *card)
 
static uint32_t extract_psn (sdmmc_t *card)
 
static uint32_t extract_month (sdmmc_t *card)
 
static uint32_t extract_year (sdmmc_t *card)
 
static bool go_idle_state (sdhci_t *hci)
 
static bool sd_send_if_cond (sdhci_t *hci, sdmmc_t *card)
 
static bool sd_send_op_cond (sdhci_t *hci, sdmmc_t *card)
 
static bool mmc_send_op_cond (sdhci_t *hci, sdmmc_t *card)
 
static int sdmmc_status (sdhci_t *hci, sdmmc_t *card)
 
static uint64_t sdmmc_read_blocks (sdhci_t *hci, sdmmc_t *card, uint8_t *buf, uint64_t start, uint64_t blkcnt)
 
static uint64_t sdmmc_write_blocks (sdhci_t *hci, sdmmc_t *card, uint8_t *buf, uint64_t start, uint64_t blkcnt)
 
static bool sdmmc_detect (sdhci_t *hci, sdmmc_t *card)
 
uint64_t sdmmc_blk_read (sdmmc_pdata_t *data, uint8_t *buf, uint64_t blkno, uint64_t blkcnt)
 Read data from the SDMMC card into the provided buffer.
 
uint64_t sdmmc_blk_write (sdmmc_pdata_t *data, uint8_t *buf, uint64_t blkno, uint64_t blkcnt)
 
int sdmmc_init (sdmmc_pdata_t *data, sdhci_t *hci)
 Initialize the SDMMC controller with the specified platform data and SDHCI driver.
 

Variables

sdmmc_pdata_t card0
 External declaration of the 'card0' SDMMC platform data structure.
 
static const unsigned tran_speed_unit []
 
static const unsigned char tran_speed_time []
 

Macro Definition Documentation

◆ EXT_CSD_BKOPS_EN

#define EXT_CSD_BKOPS_EN   163 /* R/W */

◆ EXT_CSD_BKOPS_START

#define EXT_CSD_BKOPS_START   164 /* W */

◆ EXT_CSD_BKOPS_STATUS

#define EXT_CSD_BKOPS_STATUS   246 /* RO */

◆ EXT_CSD_BKOPS_SUPPORT

#define EXT_CSD_BKOPS_SUPPORT   502 /* RO */

◆ EXT_CSD_BOOT_MULT

#define EXT_CSD_BOOT_MULT   226 /* RO */

◆ EXT_CSD_BOOT_WP

#define EXT_CSD_BOOT_WP   173 /* R/W */

◆ EXT_CSD_BUS_WIDTH

#define EXT_CSD_BUS_WIDTH   183 /* R/W */

◆ EXT_CSD_BUS_WIDTH_1

#define EXT_CSD_BUS_WIDTH_1   0 /* Card is in 1 bit mode */

◆ EXT_CSD_BUS_WIDTH_4

#define EXT_CSD_BUS_WIDTH_4   1 /* Card is in 4 bit mode */

◆ EXT_CSD_BUS_WIDTH_8

#define EXT_CSD_BUS_WIDTH_8   2 /* Card is in 8 bit mode */

◆ EXT_CSD_CACHE_CTRL

#define EXT_CSD_CACHE_CTRL   33 /* R/W */

◆ EXT_CSD_CACHE_SIZE

#define EXT_CSD_CACHE_SIZE   249 /* RO, 4 bytes */

◆ EXT_CSD_CARD_TYPE

#define EXT_CSD_CARD_TYPE   196 /* RO */

◆ EXT_CSD_CARD_TYPE_26

#define EXT_CSD_CARD_TYPE_26   (1 << 0) /* Card can run at 26MHz */

◆ EXT_CSD_CARD_TYPE_52

#define EXT_CSD_CARD_TYPE_52   (1 << 1) /* Card can run at 52MHz */

◆ EXT_CSD_CARD_TYPE_DDR_1_2V

#define EXT_CSD_CARD_TYPE_DDR_1_2V   (1 << 3) /* Card can run at 52MHz */

◆ EXT_CSD_CARD_TYPE_DDR_1_8V

#define EXT_CSD_CARD_TYPE_DDR_1_8V   (1 << 2) /* Card can run at 52MHz */

◆ EXT_CSD_CARD_TYPE_DDR_52

#define EXT_CSD_CARD_TYPE_DDR_52   (EXT_CSD_CARD_TYPE_DDR_1_8V | EXT_CSD_CARD_TYPE_DDR_1_2V)

◆ EXT_CSD_CARD_TYPE_MASK

#define EXT_CSD_CARD_TYPE_MASK   0x3F /* Mask out reserved bits */

◆ EXT_CSD_CARD_TYPE_SDR_1_2V

#define EXT_CSD_CARD_TYPE_SDR_1_2V   (1 << 5) /* Card can run at 200MHz */

◆ EXT_CSD_CARD_TYPE_SDR_1_8V

#define EXT_CSD_CARD_TYPE_SDR_1_8V   (1 << 4) /* Card can run at 200MHz */

◆ EXT_CSD_CMD_SET_CPSECURE

#define EXT_CSD_CMD_SET_CPSECURE   (1 << 2)

◆ EXT_CSD_CMD_SET_NORMAL

#define EXT_CSD_CMD_SET_NORMAL   (1 << 0)

◆ EXT_CSD_CMD_SET_SECURE

#define EXT_CSD_CMD_SET_SECURE   (1 << 1)

◆ EXT_CSD_CMDQ_DEPTH

#define EXT_CSD_CMDQ_DEPTH   307 /* RO */

◆ EXT_CSD_CMDQ_MODE_EN

#define EXT_CSD_CMDQ_MODE_EN   15 /* R/W */

◆ EXT_CSD_CMDQ_SUPPORT

#define EXT_CSD_CMDQ_SUPPORT   308 /* RO */

◆ EXT_CSD_DATA_SECTOR_SIZE

#define EXT_CSD_DATA_SECTOR_SIZE   61 /* R */

◆ EXT_CSD_DATA_TAG_SUPPORT

#define EXT_CSD_DATA_TAG_SUPPORT   499 /* RO */

◆ EXT_CSD_DDR_BUS_WIDTH_4

#define EXT_CSD_DDR_BUS_WIDTH_4   5 /* Card is in 4 bit DDR mode */

◆ EXT_CSD_DDR_BUS_WIDTH_8

#define EXT_CSD_DDR_BUS_WIDTH_8   6 /* Card is in 8 bit DDR mode */

◆ EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_A

#define EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_A   268 /* RO */

◆ EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_B

#define EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_B   269 /* RO */

◆ EXT_CSD_DRIVER_STRENGTH

#define EXT_CSD_DRIVER_STRENGTH   197 /* RO */

◆ EXT_CSD_ERASE_GROUP_DEF

#define EXT_CSD_ERASE_GROUP_DEF   175 /* R/W */

◆ EXT_CSD_ERASE_TIMEOUT_MULT

#define EXT_CSD_ERASE_TIMEOUT_MULT   223 /* RO */

◆ EXT_CSD_ERASED_MEM_CONT

#define EXT_CSD_ERASED_MEM_CONT   181 /* RO */

◆ EXT_CSD_EXP_EVENTS_CTRL

#define EXT_CSD_EXP_EVENTS_CTRL   56 /* R/W, 2 bytes */

◆ EXT_CSD_EXP_EVENTS_STATUS

#define EXT_CSD_EXP_EVENTS_STATUS   54 /* RO, 2 bytes */

◆ EXT_CSD_FIRMWARE_VERSION

#define EXT_CSD_FIRMWARE_VERSION   254 /* RO, 8 bytes */

◆ EXT_CSD_FLUSH_CACHE

#define EXT_CSD_FLUSH_CACHE   32 /* W */

◆ EXT_CSD_FW_CONFIG

#define EXT_CSD_FW_CONFIG   169 /* R/W */

◆ EXT_CSD_GENERIC_CMD6_TIME

#define EXT_CSD_GENERIC_CMD6_TIME   248 /* RO */

◆ EXT_CSD_GP_SIZE_MULT

#define EXT_CSD_GP_SIZE_MULT   143 /* R/W */

◆ EXT_CSD_HC_ERASE_GRP_SIZE

#define EXT_CSD_HC_ERASE_GRP_SIZE   224 /* RO */

◆ EXT_CSD_HC_WP_GRP_SIZE

#define EXT_CSD_HC_WP_GRP_SIZE   221 /* RO */

◆ EXT_CSD_HPI_FEATURES

#define EXT_CSD_HPI_FEATURES   503 /* RO */

◆ EXT_CSD_HPI_MGMT

#define EXT_CSD_HPI_MGMT   161 /* R/W */

◆ EXT_CSD_HS_TIMING

#define EXT_CSD_HS_TIMING   185 /* R/W */

◆ EXT_CSD_MAX_PACKED_READS

#define EXT_CSD_MAX_PACKED_READS   501 /* RO */

◆ EXT_CSD_MAX_PACKED_WRITES

#define EXT_CSD_MAX_PACKED_WRITES   500 /* RO */

◆ EXT_CSD_OUT_OF_INTERRUPT_TIME

#define EXT_CSD_OUT_OF_INTERRUPT_TIME   198 /* RO */

◆ EXT_CSD_PACKED_CMD_STATUS

#define EXT_CSD_PACKED_CMD_STATUS   36 /* RO */

◆ EXT_CSD_PACKED_FAILURE_INDEX

#define EXT_CSD_PACKED_FAILURE_INDEX   35 /* RO */

◆ EXT_CSD_PART_CONFIG

#define EXT_CSD_PART_CONFIG   179 /* R/W */

◆ EXT_CSD_PART_SWITCH_TIME

#define EXT_CSD_PART_SWITCH_TIME   199 /* RO */

◆ EXT_CSD_PARTITION_ATTRIBUTE

#define EXT_CSD_PARTITION_ATTRIBUTE   156 /* R/W */

◆ EXT_CSD_PARTITION_SETTING_COMPLETED

#define EXT_CSD_PARTITION_SETTING_COMPLETED   155 /* R/W */

◆ EXT_CSD_PARTITION_SUPPORT

#define EXT_CSD_PARTITION_SUPPORT   160 /* RO */

◆ EXT_CSD_POWER_CLASS

#define EXT_CSD_POWER_CLASS   187 /* R/W */

◆ EXT_CSD_POWER_OFF_LONG_TIME

#define EXT_CSD_POWER_OFF_LONG_TIME   247 /* RO */

◆ EXT_CSD_POWER_OFF_NOTIFICATION

#define EXT_CSD_POWER_OFF_NOTIFICATION   34 /* R/W */

◆ EXT_CSD_PRE_EOL_INFO

#define EXT_CSD_PRE_EOL_INFO   267 /* RO */

◆ EXT_CSD_PWR_CL_200_195

#define EXT_CSD_PWR_CL_200_195   236 /* RO */

◆ EXT_CSD_PWR_CL_200_360

#define EXT_CSD_PWR_CL_200_360   237 /* RO */

◆ EXT_CSD_PWR_CL_26_195

#define EXT_CSD_PWR_CL_26_195   201 /* RO */

◆ EXT_CSD_PWR_CL_26_360

#define EXT_CSD_PWR_CL_26_360   203 /* RO */

◆ EXT_CSD_PWR_CL_4BIT_MASK

#define EXT_CSD_PWR_CL_4BIT_MASK   0x0F /* 8 bit PWR CLS */

◆ EXT_CSD_PWR_CL_4BIT_SHIFT

#define EXT_CSD_PWR_CL_4BIT_SHIFT   0

◆ EXT_CSD_PWR_CL_52_195

#define EXT_CSD_PWR_CL_52_195   200 /* RO */

◆ EXT_CSD_PWR_CL_52_360

#define EXT_CSD_PWR_CL_52_360   202 /* RO */

◆ EXT_CSD_PWR_CL_8BIT_MASK

#define EXT_CSD_PWR_CL_8BIT_MASK   0xF0 /* 8 bit PWR CLS */

◆ EXT_CSD_PWR_CL_8BIT_SHIFT

#define EXT_CSD_PWR_CL_8BIT_SHIFT   4

◆ EXT_CSD_PWR_CL_DDR_200_360

#define EXT_CSD_PWR_CL_DDR_200_360   253 /* RO */

◆ EXT_CSD_PWR_CL_DDR_52_195

#define EXT_CSD_PWR_CL_DDR_52_195   238 /* RO */

◆ EXT_CSD_PWR_CL_DDR_52_360

#define EXT_CSD_PWR_CL_DDR_52_360   239 /* RO */

◆ EXT_CSD_REL_WR_SEC_C

#define EXT_CSD_REL_WR_SEC_C   222 /* RO */

◆ EXT_CSD_REV

#define EXT_CSD_REV   192 /* RO */

◆ EXT_CSD_RPMB_MULT

#define EXT_CSD_RPMB_MULT   168 /* RO */

◆ EXT_CSD_RST_N_FUNCTION

#define EXT_CSD_RST_N_FUNCTION   162 /* R/W */

◆ EXT_CSD_S_A_TIMEOUT

#define EXT_CSD_S_A_TIMEOUT   217 /* RO */

◆ EXT_CSD_SANITIZE_START

#define EXT_CSD_SANITIZE_START   165 /* W */

◆ EXT_CSD_SEC_CNT

#define EXT_CSD_SEC_CNT   212 /* RO, 4 bytes */

◆ EXT_CSD_SEC_ERASE_MULT

#define EXT_CSD_SEC_ERASE_MULT   230 /* RO */

◆ EXT_CSD_SEC_FEATURE_SUPPORT

#define EXT_CSD_SEC_FEATURE_SUPPORT   231 /* RO */

◆ EXT_CSD_SEC_TRIM_MULT

#define EXT_CSD_SEC_TRIM_MULT   229 /* RO */

◆ EXT_CSD_STROBE_SUPPORT

#define EXT_CSD_STROBE_SUPPORT   184 /* RO */

◆ EXT_CSD_STRUCTURE

#define EXT_CSD_STRUCTURE   194 /* RO */

◆ EXT_CSD_SUPPORTED_MODE

#define EXT_CSD_SUPPORTED_MODE   493 /* RO */

◆ EXT_CSD_TAG_UNIT_SIZE

#define EXT_CSD_TAG_UNIT_SIZE   498 /* RO */

◆ EXT_CSD_TRIM_MULT

#define EXT_CSD_TRIM_MULT   232 /* RO */

◆ EXT_CSD_WR_REL_PARAM

#define EXT_CSD_WR_REL_PARAM   166 /* RO */

◆ FALSE

#define FALSE   0

◆ TRUE

#define TRUE   1

◆ UNSTUFF_BITS

#define UNSTUFF_BITS (   resp,
  start,
  size 
)
Value:
({ \
const int __size = size; \
const uint32_t __mask = (__size < 32 ? 1 << __size : 0) - 1; \
const int __off = 3 - ((start) / 32); \
const int __shft = (start) &31; \
uint32_t __res; \
\
__res = resp[__off] >> __shft; \
if (__size + __shft > 32) \
__res |= resp[__off - 1] << ((32 - __shft) % 32); \
__res &__mask; \
})
u32_t uint32_t
Definition stdint.h:13

Function Documentation

◆ extract_mid()

static uint32_t extract_mid ( sdmmc_t card)
static

◆ extract_month()

static uint32_t extract_month ( sdmmc_t card)
static

◆ extract_oid()

static uint32_t extract_oid ( sdmmc_t card)
static

◆ extract_prv()

static uint32_t extract_prv ( sdmmc_t card)
static

◆ extract_psn()

static uint32_t extract_psn ( sdmmc_t card)
static

◆ extract_year()

static uint32_t extract_year ( sdmmc_t card)
static

◆ go_idle_state()

static bool go_idle_state ( sdhci_t hci)
static

◆ mmc_send_op_cond()

static bool mmc_send_op_cond ( sdhci_t hci,
sdmmc_t card 
)
static

◆ sd_send_if_cond()

static bool sd_send_if_cond ( sdhci_t hci,
sdmmc_t card 
)
static

◆ sd_send_op_cond()

static bool sd_send_op_cond ( sdhci_t hci,
sdmmc_t card 
)
static

◆ sdmmc_blk_read()

uint64_t sdmmc_blk_read ( sdmmc_pdata_t data,
uint8_t buf,
uint64_t  blkno,
uint64_t  blkcnt 
)

Read data from the SDMMC card into the provided buffer.

Parameters
dataPointer to the SDMMC platform data structure.
bufPointer to the destination buffer to store the read data.
blknoThe starting block number to read from.
blkcntThe number of blocks to read.
Returns
The total number of bytes read, or an error code if failed.

◆ sdmmc_blk_write()

uint64_t sdmmc_blk_write ( sdmmc_pdata_t data,
uint8_t buf,
uint64_t  blkno,
uint64_t  blkcnt 
)

◆ sdmmc_detect()

static bool sdmmc_detect ( sdhci_t hci,
sdmmc_t card 
)
static

◆ sdmmc_init()

int sdmmc_init ( sdmmc_pdata_t data,
sdhci_t hci 
)

Initialize the SDMMC controller with the specified platform data and SDHCI driver.

Parameters
dataPointer to the SDMMC platform data structure.
hciPointer to the SDHCI driver instance.
Returns
0 if successful, or an error code if failed.

◆ sdmmc_read_blocks()

static uint64_t sdmmc_read_blocks ( sdhci_t hci,
sdmmc_t card,
uint8_t buf,
uint64_t  start,
uint64_t  blkcnt 
)
static

◆ sdmmc_status()

static int sdmmc_status ( sdhci_t hci,
sdmmc_t card 
)
static

◆ sdmmc_write_blocks()

static uint64_t sdmmc_write_blocks ( sdhci_t hci,
sdmmc_t card,
uint8_t buf,
uint64_t  start,
uint64_t  blkcnt 
)
static

Variable Documentation

◆ card0

External declaration of the 'card0' SDMMC platform data structure.

◆ tran_speed_time

const unsigned char tran_speed_time[]
static
Initial value:
= {
0,
10,
12,
13,
15,
20,
25,
30,
35,
40,
45,
50,
55,
60,
70,
80,
}

◆ tran_speed_unit

const unsigned tran_speed_unit[]
static
Initial value:
= {
[0] = 10000,
[1] = 100000,
[2] = 1000000,
[3] = 10000000,
}