9#ifndef SDRV_MMC_SDHCI_H_
10#define SDRV_MMC_SDHCI_H_
15#ifndef CONFIG_ARCH_CACHE_LINE
16#define CONFIG_ARCH_CACHE_LINE 32
22#define MMC_CLK_400KHZ 400000
23#define MMC_CLK_25MHZ 25000000
24#define MMC_CLK_50MHZ 50000000
25#define MMC_CLK_100MHZ 100000000
26#define MMC_CLK_200MHZ 200000000
27#define MMC_CLK_400MHZ 400000000
32#define CMD0_GO_IDLE_STATE 0
33#define CMD1_SEND_OP_COND 1
34#define CMD2_ALL_SEND_CID 2
35#define CMD3_SEND_RELATIVE_ADDR 3
37#define CMD5_SLEEP_AWAKE 5
38#define CMD6_SWITCH_FUNC 6
39#define CMD7_SELECT_DESELECT_CARD 7
40#define CMD8_SEND_EXT_CSD 8
41#define CMD9_SEND_CSD 9
42#define CMD10_SEND_CID 10
43#define CMD12_STOP_TRANSMISSION 12
44#define CMD13_SEND_STATUS 13
45#define CMD15_GO_INACTIVE_STATUS 15
46#define CMD16_SET_BLOCKLEN 16
47#define CMD17_READ_SINGLE_BLOCK 17
48#define CMD18_READ_MULTIPLE_BLOCK 18
49#define CMD21_SEND_TUNING_BLOCK 21
50#define CMD23_SET_BLOCK_COUNT 23
51#define CMD24_WRITE_SINGLE_BLOCK 24
52#define CMD25_WRITE_MULTIPLE_BLOCK 25
53#define CMD28_SET_WRITE_PROTECT 28
54#define CMD29_CLEAR_WRITE_PROTECT 29
55#define CMD31_SEND_WRITE_PROT_TYPE 31
56#define CMD32_ERASE_WR_BLK_START 32
57#define CMD33_ERASE_WR_BLK_END 33
58#define CMD35_ERASE_GROUP_START 35
59#define CMD36_ERASE_GROUP_END 36
61#define CMD52_SDIO_STOP_TRANSMISSION 52
63#define MMC_CMD_READ(cmd) \
64 ((cmd->cmd_index == CMD17_READ_SINGLE_BLOCK) || (cmd->cmd_index == CMD18_READ_MULTIPLE_BLOCK))
65#define MMC_CMD_WRITE(cmd) \
66 ((cmd->cmd_index == CMD24_WRITE_SINGLE_BLOCK) || (cmd->cmd_index == CMD25_WRITE_MULTIPLE_BLOCK))
71#define MMC_TYPE_STD_SD 0
72#define MMC_TYPE_SDHC 1
73#define MMC_TYPE_SDIO 2
74#define MMC_TYPE_MMCHC 3
75#define MMC_TYPE_STD_MMC 4
80#define MMC_OCR_17_19 (1U << 7)
81#define MMC_OCR_27_36 (0x1FF << 15)
82#define MMC_OCR_SEC_MODE (2U << 29)
83#define MMC_OCR_BUSY (1U << 31)
88#define MMC_CARD_STATUS(x) ((x >> 9) & 0x0F)
89#define MMC_TRAN_STATE 4
90#define MMC_PROG_STATE 7
91#define MMC_SWITCH_FUNC_ERR_FLAG (1 << 7)
92#define MMC_STATUS_INACTIVE 0
93#define MMC_STATUS_ACTIVE 1
94#define MMC_READY_FOR_DATA (1 << 8)
99#define MMC_POWER_OFF_NOTIFICATION 34
100#define MMC_EXT_CSD_RST_N_FUNC 162
101#define MMC_EXT_MMC_BUS_WIDTH 183
102#define MMC_EXT_MMC_HS_TIMING 185
103#define MMC_EXT_CSD_REV 192
104#define MMC_DEVICE_TYPE 196
105#define MMC_EXT_MMC_DRV_STRENGTH 197
106#define MMC_EXT_HC_WP_GRP_SIZE 221
107#define MMC_SEC_COUNT4 215
108#define MMC_SEC_COUNT3 214
109#define MMC_SEC_COUNT2 213
110#define MMC_SEC_COUNT1 212
111#define MMC_PART_CONFIG 179
112#define MMC_ERASE_GRP_DEF 175
113#define MMC_USR_WP 171
114#define MMC_ERASE_TIMEOUT_MULT 223
115#define MMC_HC_ERASE_GRP_SIZE 224
116#define MMC_PARTITION_CONFIG 179
121#define MMC_HS_TIMING 0x1
122#define MMC_HS200_TIMING 0x2
123#define MMC_HS400_TIMING 0x3
124#define MMC_ACCESS_WRITE 0x3
125#define MMC_SET_BIT 0x1
126#define MMC_HS_DDR_MODE (BIT(2) | BIT(3))
127#define MMC_HS_HS200_MODE (BIT(4) | BIT(5))
128#define MMC_HS_HS400_MODE (BIT(6) | BIT(7))
129#define MMC_SEC_COUNT4_SHIFT 24
130#define MMC_SEC_COUNT3_SHIFT 16
131#define MMC_SEC_COUNT2_SHIFT 8
132#define MMC_HC_ERASE_MULT (512 * 1024)
133#define RST_N_FUNC_ENABLE BIT(0)
135#define MMC_NO_POWER_NOTIFICATION 0x0
136#define MMC_POWER_ON 0x1
137#define MMC_POWER_OFF_SHORT 0x2
138#define MMC_POWER_OFF_LONG 0x3
139#define MMC_SLEEP_NOTIFICATION 0x4
144#define BOOT_PART_MIN_SIZE (128u * 1024u)
145#define BOOT_SIZE_MULT 226
150#define RPMB_PART_MIN_SIZE (128u * 1024u)
151#define RPMB_SIZE_MULT 168
152#define REL_WR_SEC_C 222
153#define PARTITION_ACCESS_MASK 0x7
154#define MAX_RPMB_CMDS 0x3
159#define MMC_MAX_COMMAND_RETRY 1000
160#define MMC_MAX_CARD_STAT_RETRY 10000
161#define MMC_RD_BLOCK_LEN 512
162#define MMC_WR_BLOCK_LEN 512
163#define MMC_R1_WP_ERASE_SKIP BIT(15)
164#define MMC_US_PERM_WP_DIS BIT(4)
165#define MMC_US_PWR_WP_DIS BIT(3)
166#define MMC_US_PERM_WP_EN BIT(2)
167#define MMC_US_PWR_WP_EN BIT(0)
168#define MMC_BLOCK_COUNT_MASK 0x0000ffff
173#define MMC_R1_BLOCK_LEN_ERR (1U << 29)
174#define MMC_R1_ADDR_ERR (1U << 30)
175#define MMC_R1_GENERIC_ERR (1U << 19)
176#define MMC_R1_CC_ERROR (1U << 20)
177#define MMC_R1_WP_VIOLATION (1U << 26)
178#define MMC_R1_ADDR_OUT_OF_RANGE (1U << 31)
184#define MMC_CARD_RCA_BIT 16
189#define MMC_BLK_SZ 512
190#define MMC_CARD_SLEEP (1 << 15)
195#define MMC_ADDR_OUT_OF_RANGE(resp) ((resp >> 31) & 0x01)
200#define MMC_SD_HC_VOLT_SUPPLIED 0x000001AA
201#define MMC_SD_OCR 0x00FF8000
202#define MMC_SD_S18R 0x1000000
203#define MMC_SD_HC_HCS 0x40000000
204#define MMC_SD_UHS_HCS 0x40000000
205#define MMC_SD_DEV_READY 0x80000000
206#define MMC_CARD_TYPE_UHS 0x2
207#define MMC_CARD_TYPE_SDHC 0x1
208#define MMC_CARD_TYPE_STD_SD 0x0
209#define SD_CARD_RCA 0x0
210#define MMC_SD_SWITCH_HS 0x80FFFFF1
212#define SD_CMD8_MAX_RETRY 0x3
213#define SD_ACMD41_MAX_RETRY 100
218#define SD_SCR_BUS_WIDTH 16
219#define SD_SCR_SD_SPEC 24
220#define SD_SCR_SD_SPEC3 15
221#define SD_SCR_SD_STAT_AFTER_ERASE 23
222#define SD_SCR_BUS_WIDTH_MASK 0xf0000
223#define SD_SCR_SD_SPEC_MASK 0x0f000000
224#define SD_SCR_SD_SPEC3_MASK 0x8000
225#define SD_SCR_STAT_AFTER_ERASE_MASK 0x800000
226#define SD_SCR_CMD23_SUPPORT BIT(1)
227#define SD_SCR_WIDTH_4BIT BIT(2)
233#define MMC_SD_AU_SIZE_BIT 428
234#define MMC_SD_AU_SIZE_LEN 4
235#define MMC_SD_ERASE_SIZE_BIT 408
236#define MMC_SD_ERASE_SIZE_LEN 16
237#define MMC_SD_ERASE_TOUT_BIT 402
238#define MMC_SD_ERASE_TOUT_LEN 6
239#define MMC_SD_ERASE_OFFSET_BIT 400
240#define MMC_SD_ERASE_OFFSET_LEN 2
245#define CMD8_SEND_IF_COND 8
246#define CMD11_SWITCH_VOLTAGE 11
247#define ACMD6_SET_BUS_WIDTH 6
248#define ACMD13_SEND_SD_STATUS 13
249#define ACMD41_SEND_OP_COND 41
250#define ACMD51_READ_CARD_SCR 51
251#define CMD55_APP_CMD 55
253#define EXT_CSD_BUF_SIZE ROUNDUP(512, CONFIG_ARCH_CACHE_LINE)
259#define MMC_SAVE_TIMING(host, TIMING) host->timing = TIMING
262#define UNPACK_BITS(array, start, len, size_of) \
264 uint32_t indx = (start) / (size_of); \
265 uint32_t offset = (start) % (size_of); \
266 uint32_t mask = (((len) < (size_of)) ? 1ULL << (len) : 0) - 1; \
267 uint32_t unpck = array[indx] >> offset; \
268 uint32_t indx2 = ((start) + (len)-1) / (size_of); \
270 unpck |= array[indx2] << ((size_of)-offset); \
274#define swap_endian32(x) \
275 ((uint32_t)((((uint32_t)(x) & (uint32_t)0x000000ffUL) << 24) | \
276 (((uint32_t)(x) & (uint32_t)0x0000ff00UL) << 8) | \
277 (((uint32_t)(x) & (uint32_t)0x00ff0000UL) >> 8) | \
278 (((uint32_t)(x) & (uint32_t)0xff000000UL) >> 24)))
280#define MMC_CARD_SDIO(card) \
281 (card->type == MMC_TYPE_SDIO)
283#define MMC_CARD_SD(card) \
284 ((card->type == MMC_CARD_TYPE_SDHC) || (card->type == MMC_CARD_TYPE_STD_SD)|| (card->type == MMC_CARD_TYPE_UHS))
286#define MMC_CARD_MMC(card) \
287 ((card->type == MMC_TYPE_STD_MMC) || (card->type == MMC_TYPE_MMCHC))
508 uint32_t num_blocks);
523 uint32_t num_blocks);
552 uint32_t num_blocks, uint32_t type);
567 uint32_t num_blocks, uint32_t type);
581 uint32_t num_blocks, uint32_t type);
606 uint64_t len, uint8_t set_clr);
@ SDRV_STATUS_GROUP_MMC
Definition: sdrv_common.h:60
int32_t status_t
Type used for all status and error return values.
Definition: sdrv_common.h:82
#define SDRV_ERROR_STATUS(group, code)
Construct a status code value from a group and code number. All the error statuses are negetive numbe...
Definition: sdrv_common.h:17
struct mmc_device * sdrv_mmc_alloc_dev(void)
alloc the mmc device memory.
@ SDRV_STATUS_MMC_DAT_ERR
Definition: sdrv_mmc_sdhci.h:453
@ SDRV_STATUS_MMC_CMD_RSP_ERR
Definition: sdrv_mmc_sdhci.h:460
@ SDRV_STATUS_MMC_CARD_STATUS_ERR
Definition: sdrv_mmc_sdhci.h:458
@ SDRV_STATUS_MMC_MISC_ERR
Definition: sdrv_mmc_sdhci.h:454
@ SDRV_STATUS_MMC_SWITCH_FUNC_ERR
Definition: sdrv_mmc_sdhci.h:459
@ SDRV_STATUS_MMC_DAT_ABORT
Definition: sdrv_mmc_sdhci.h:456
@ SDRV_STATUS_MMC_DEV_TYPE_ERR
Definition: sdrv_mmc_sdhci.h:461
@ SDRV_STATUS_MMC_CMD_ABORT
Definition: sdrv_mmc_sdhci.h:455
@ SDRV_STATUS_MMC_TUNING_FAIL
Definition: sdrv_mmc_sdhci.h:457
@ SDRV_STATUS_MMC_CMD_ERR
Definition: sdrv_mmc_sdhci.h:452
mmc_opt
mmc read write erase operation
Definition: sdrv_mmc_sdhci.h:394
@ MMC_OPT_ERASE
Definition: sdrv_mmc_sdhci.h:397
@ MMC_OPT_WRITE
Definition: sdrv_mmc_sdhci.h:396
@ MMC_OPT_READ
Definition: sdrv_mmc_sdhci.h:395
@ MMC_OPT_MAX
Definition: sdrv_mmc_sdhci.h:398
uint32_t sdrv_mmc_get_erase_group_size(struct mmc_device *dev)
mmc get erase group size
#define CONFIG_ARCH_CACHE_LINE
Definition: sdrv_mmc_sdhci.h:16
status_t sdrv_mmc_sdhci_erase(struct mmc_device *dev, uint32_t blk_addr, uint64_t len)
mmc sdhci erase
status_t sdrv_mmc_platform_init(struct mmc_device *dev, void *priv_data)
Initialize the mmc platform driver.
void(* mmc_notification)(enum mmc_opt type, enum mmc_opt_result result)
mmc event handle callback function.
Definition: sdrv_mmc_sdhci.h:412
status_t sdrv_mmc_sdhci_switch_part(struct mmc_device *dev, uint32_t type)
switch the partition
status_t sdrv_mmc_set_clr_power_on_wp_user(struct mmc_device *dev, uint32_t addr, uint64_t len, uint8_t set_clr)
mmc set/clear wp on user area
uint32_t sdrv_mmc_get_block_size(struct mmc_device *dev)
mmc Get card block size
status_t sdrv_mmc_sdhci_rpmb_send(struct mmc_device *dev, struct mmc_command *cmd)
sdhci rpmb send
status_t sdrv_mmc_power_off_notification(struct mmc_device *dev, uint32_t pon_type)
mmc power off notification
bool sdrv_mmc_set_drv_type(struct sdhci_host *host, struct mmc_card *card, uint8_t drv_type)
change the driver type of the card
status_t sdrv_mmc_sdhci_erase_part(struct mmc_device *dev, uint32_t blk_addr, uint32_t num_blocks, uint32_t type)
mmc sdhci Erase part
status_t sdrv_mmc_sdhci_cancel(struct mmc_device *dev)
cancel the previous operation read/write/erase
status_t sdrv_mmc_sdhci_read_part(struct mmc_device *dev, void *dest, uint32_t blk_addr, uint32_t num_blocks, uint32_t type)
mmc sdhci read part
status_t sdrv_mmc_sdhci_write_part(struct mmc_device *dev, void *src, uint32_t blk_addr, uint32_t num_blocks, uint32_t type)
mmc sdhci Write part
status_t sdrv_mmc_get_wp_status(struct mmc_device *dev, uint32_t addr, uint8_t *wp_status)
mmc get wp status
status_t sdrv_mmc_send_tuning(struct mmc_device *dev, uint32_t opcode, uint32_t bus_width)
mmc send tuning
status_t sdrv_mmc_sdhci_read(struct mmc_device *dev, void *dest, uint32_t blk_addr, uint32_t num_blocks)
mmc sdhci read
part_access_type
mmc partition
Definition: sdrv_mmc_sdhci.h:437
@ PART_ACCESS_DEFAULT
Definition: sdrv_mmc_sdhci.h:438
@ PART_ACCESS_GP4
Definition: sdrv_mmc_sdhci.h:445
@ PART_ACCESS_RPMB
Definition: sdrv_mmc_sdhci.h:441
@ PART_ACCESS_GP3
Definition: sdrv_mmc_sdhci.h:444
@ PART_ACCESS_BOOT2
Definition: sdrv_mmc_sdhci.h:440
@ PART_ACCESS_GP2
Definition: sdrv_mmc_sdhci.h:443
@ PART_ACCESS_BOOT1
Definition: sdrv_mmc_sdhci.h:439
@ PART_ACCESS_GP1
Definition: sdrv_mmc_sdhci.h:442
uint64_t sdrv_mmc_get_size(struct mmc_device *dev, uint32_t type)
sdhci rpmb send
mmc_opt_result
mmc operation return result
Definition: sdrv_mmc_sdhci.h:402
@ MMC_OPT_FAILED
Definition: sdrv_mmc_sdhci.h:404
@ MMC_OPT_INVALID
Definition: sdrv_mmc_sdhci.h:407
@ MMC_OPT_INCONSISTENT
Definition: sdrv_mmc_sdhci.h:406
@ MMC_OPT_PENDING
Definition: sdrv_mmc_sdhci.h:405
@ MMC_OPT_COMPLETE
Definition: sdrv_mmc_sdhci.h:403
@ MMC_OPT_RESULET_MAX
Definition: sdrv_mmc_sdhci.h:408
status_t sdrv_mmc_sdhci_write(struct mmc_device *dev, void *src, uint32_t blk_addr, uint32_t num_blocks)
mmc sdhci write
#define EXT_CSD_BUF_SIZE
Definition: sdrv_mmc_sdhci.h:253
status_t sdrv_mmc_sdrv_sdhci_init(struct mmc_device *dev)
initialize the mmc card
uint32_t sdrv_mmc_get_data_after_erase(struct mmc_device *dev)
mmc Get card data after erase
void sdrv_mmc_put_card_to_sleep(struct mmc_device *dev)
put the mmc card to sleep
SemiDrive SDHCI driver header file.
mmc card register
Definition: sdrv_mmc_sdhci.h:350
uint32_t raw_scr[2]
Definition: sdrv_mmc_sdhci.h:364
uint32_t boot_size
Definition: sdrv_mmc_sdhci.h:365
uint8_t * ext_csd
Definition: sdrv_mmc_sdhci.h:359
uint64_t capacity
Definition: sdrv_mmc_sdhci.h:355
uint32_t raw_csd[4]
Definition: sdrv_mmc_sdhci.h:363
uint32_t rpmb_size
Definition: sdrv_mmc_sdhci.h:366
struct mmc_cid cid
Definition: sdrv_mmc_sdhci.h:368
uint32_t block_size
Definition: sdrv_mmc_sdhci.h:353
struct mmc_sd_ssr ssr
Definition: sdrv_mmc_sdhci.h:371
uint32_t rel_wr_count
Definition: sdrv_mmc_sdhci.h:367
struct mmc_csd csd
Definition: sdrv_mmc_sdhci.h:369
uint32_t type
Definition: sdrv_mmc_sdhci.h:356
uint32_t ocr
Definition: sdrv_mmc_sdhci.h:352
uint32_t status
Definition: sdrv_mmc_sdhci.h:357
struct mmc_sd_scr scr
Definition: sdrv_mmc_sdhci.h:370
uint32_t rca
Definition: sdrv_mmc_sdhci.h:351
uint32_t wp_grp_size
Definition: sdrv_mmc_sdhci.h:354
CID Register.
Definition: sdrv_mmc_sdhci.h:322
uint32_t month
Definition: sdrv_mmc_sdhci.h:328
uint8_t pnm[7]
Definition: sdrv_mmc_sdhci.h:325
uint32_t prv
Definition: sdrv_mmc_sdhci.h:326
uint32_t year
Definition: sdrv_mmc_sdhci.h:329
uint32_t psn
Definition: sdrv_mmc_sdhci.h:327
uint32_t mid
Definition: sdrv_mmc_sdhci.h:323
uint32_t oid
Definition: sdrv_mmc_sdhci.h:324
mmc command structure as per the spec
Definition: sdrv_sdhci.h:84
mmc device config data
Definition: sdrv_mmc_sdhci.h:375
uint32_t irq
Definition: sdrv_mmc_sdhci.h:378
uint8_t hw_reset_support
Definition: sdrv_mmc_sdhci.h:386
uint16_t bus_width
Definition: sdrv_mmc_sdhci.h:379
uint8_t ddr50_support
Definition: sdrv_mmc_sdhci.h:382
addr_t sdhc_base
Definition: sdrv_mmc_sdhci.h:377
uint8_t hs200_support
Definition: sdrv_mmc_sdhci.h:383
void * scr_signal
Definition: sdrv_mmc_sdhci.h:390
uint32_t voltage
Definition: sdrv_mmc_sdhci.h:381
uint8_t use_io_switch
Definition: sdrv_mmc_sdhci.h:385
void * clk
Definition: sdrv_mmc_sdhci.h:388
uint32_t max_clk_rate
Definition: sdrv_mmc_sdhci.h:380
uint8_t hs400_support
Definition: sdrv_mmc_sdhci.h:384
void * scr_ctrl
Definition: sdrv_mmc_sdhci.h:389
uint8_t slot
Definition: sdrv_mmc_sdhci.h:376
uint8_t uhs_support
Definition: sdrv_mmc_sdhci.h:387
CSD Register, not all the fields have been defined here.
Definition: sdrv_mmc_sdhci.h:290
uint32_t taac_clks
Definition: sdrv_mmc_sdhci.h:302
uint32_t erase_grp_size
Definition: sdrv_mmc_sdhci.h:304
uint32_t perm_wp
Definition: sdrv_mmc_sdhci.h:309
uint32_t erase_grp_mult
Definition: sdrv_mmc_sdhci.h:305
uint32_t read_blk_partial
Definition: sdrv_mmc_sdhci.h:316
uint32_t card_cmd_class
Definition: sdrv_mmc_sdhci.h:293
uint32_t cmmc_structure
Definition: sdrv_mmc_sdhci.h:291
uint32_t read_blk_len
Definition: sdrv_mmc_sdhci.h:295
uint32_t nsac_clk_cycle
Definition: sdrv_mmc_sdhci.h:300
uint32_t sector_size
Definition: sdrv_mmc_sdhci.h:297
uint32_t temp_wp
Definition: sdrv_mmc_sdhci.h:311
uint32_t tran_speed
Definition: sdrv_mmc_sdhci.h:303
uint32_t erase_blk_len
Definition: sdrv_mmc_sdhci.h:312
uint32_t write_blk_len
Definition: sdrv_mmc_sdhci.h:294
uint32_t write_blk_partial
Definition: sdrv_mmc_sdhci.h:318
uint32_t wp_grp_enable
Definition: sdrv_mmc_sdhci.h:308
uint32_t write_blk_misalign
Definition: sdrv_mmc_sdhci.h:314
uint32_t r2w_factor
Definition: sdrv_mmc_sdhci.h:296
uint32_t read_blk_misalign
Definition: sdrv_mmc_sdhci.h:313
uint32_t c_size_mult
Definition: sdrv_mmc_sdhci.h:298
uint32_t c_size
Definition: sdrv_mmc_sdhci.h:299
uint32_t taac_ns
Definition: sdrv_mmc_sdhci.h:301
uint32_t spec_vers
Definition: sdrv_mmc_sdhci.h:292
uint32_t wp_grp_size
Definition: sdrv_mmc_sdhci.h:306
mmc device structure
Definition: sdrv_mmc_sdhci.h:416
uint32_t erase_grp_size
Definition: sdrv_mmc_sdhci.h:420
struct mmc_card card
Definition: sdrv_mmc_sdhci.h:418
struct sdhci_host host
Definition: sdrv_mmc_sdhci.h:417
bool async_mode
Definition: sdrv_mmc_sdhci.h:427
enum mmc_opt opt_type
Definition: sdrv_mmc_sdhci.h:428
struct mmc_config_data config
Definition: sdrv_mmc_sdhci.h:419
mmc_notification event_handle
Definition: sdrv_mmc_sdhci.h:430
enum mmc_opt_result opt_result
Definition: sdrv_mmc_sdhci.h:429
uint32_t part_curr
Definition: sdrv_mmc_sdhci.h:433
SCR register for SD card.
Definition: sdrv_mmc_sdhci.h:333
uint32_t sd_spec
Definition: sdrv_mmc_sdhci.h:335
uint32_t data_stat_after_erase
Definition: sdrv_mmc_sdhci.h:338
uint32_t bus_widths
Definition: sdrv_mmc_sdhci.h:334
uint32_t cmd23_support
Definition: sdrv_mmc_sdhci.h:337
uint32_t sd3_spec
Definition: sdrv_mmc_sdhci.h:336
SD Status Register.
Definition: sdrv_mmc_sdhci.h:342
uint32_t erase_timeout
Definition: sdrv_mmc_sdhci.h:345
uint32_t num_aus
Definition: sdrv_mmc_sdhci.h:344
uint32_t erase_offset
Definition: sdrv_mmc_sdhci.h:346
uint32_t au_size
Definition: sdrv_mmc_sdhci.h:343
sdhci host structure, holding information about host controller parameters
Definition: sdrv_sdhci.h:103