11#ifndef ZEPHYR_SUBSYS_SD_SPEC_H_
12#define ZEPHYR_SUBSYS_SD_SPEC_H_
122#define SD_R1_CURRENT_STATE(x) (((x) & SD_R1_CUR_STATE) >> 9U)
174#define SD_SPI_CMD_SIZE 6
175#define SD_SPI_CMD_BODY_SIZE (SD_SPI_CMD_SIZE - 1)
177#define SD_SPI_CRC16_SIZE 2
180#define SD_SPI_START 0x80
181#define SD_SPI_TX 0x40
182#define SD_SPI_CMD 0x3F
185#define SD_SPI_TOKEN_SINGLE 0xFE
186#define SD_SPI_TOKEN_MULTI_WRITE 0xFC
187#define SD_SPI_TOKEN_STOP_TRAN 0xFD
190#define SD_SPI_RESPONSE_ACCEPTED 0x05
191#define SD_SPI_RESPONSE_CRC_ERR 0x0B
192#define SD_SPI_RESPONSE_WRITE_ERR 0x0C
195#define SD_IF_COND_VHS_MASK (0x0F << 8)
196#define SD_IF_COND_VHS_3V3 BIT(8)
197#define SD_IF_COND_CHECK 0xAA
281#define SDIO_OCR_IO_NUMBER_SHIFT (28U)
283#define SDIO_IO_OCR_MASK (0xFFFFFFU)
474#define SD_PRODUCT_NAME_BYTES (5U)
624#define SDMMC_DEFAULT_BLOCK_SIZE (512U)
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition: util_macro.h:44
sd_opcode
SD specification command opcodes.
Definition: sd_spec.h:27
@ SD_SEND_IF_COND
Definition: sd_spec.h:34
@ SD_SEND_RELATIVE_ADDR
Definition: sd_spec.h:30
@ SD_SWITCH
Definition: sd_spec.h:32
@ SD_ERASE_BLOCK_OPERATION
Definition: sd_spec.h:50
@ SD_GO_INACTIVE_STATE
Definition: sd_spec.h:40
@ SD_ERASE_BLOCK_END
Definition: sd_spec.h:49
@ SD_SET_BLOCK_COUNT
Definition: sd_spec.h:45
@ SD_SEND_CID
Definition: sd_spec.h:36
@ SD_READ_SINGLE_BLOCK
Definition: sd_spec.h:42
@ SD_WRITE_MULTIPLE_BLOCK
Definition: sd_spec.h:47
@ SD_GO_IDLE_STATE
Definition: sd_spec.h:28
@ SD_SPI_READ_OCR
Definition: sd_spec.h:52
@ SD_READ_MULTIPLE_BLOCK
Definition: sd_spec.h:43
@ SD_STOP_TRANSMISSION
Definition: sd_spec.h:38
@ SD_ERASE_BLOCK_START
Definition: sd_spec.h:48
@ SD_SPI_CRC_ON_OFF
Definition: sd_spec.h:53
@ SD_SET_BLOCK_SIZE
Definition: sd_spec.h:41
@ SD_VOL_SWITCH
Definition: sd_spec.h:37
@ SD_SEND_STATUS
Definition: sd_spec.h:39
@ SD_SEND_CSD
Definition: sd_spec.h:35
@ SD_WRITE_SINGLE_BLOCK
Definition: sd_spec.h:46
@ SD_APP_CMD
Definition: sd_spec.h:51
@ SD_SEND_TUNING_BLOCK
Definition: sd_spec.h:44
@ SDIO_SEND_OP_COND
Definition: sd_spec.h:31
@ SD_SELECT_CARD
Definition: sd_spec.h:33
@ SD_ALL_SEND_CID
Definition: sd_spec.h:29
sd_app_cmd
SD application command opcodes.
Definition: sd_spec.h:62
@ SD_APP_SEND_NUM_WRITTEN_BLK
Definition: sd_spec.h:65
@ SD_APP_SEND_OP_COND
Definition: sd_spec.h:67
@ SD_APP_SEND_SCR
Definition: sd_spec.h:69
@ SD_APP_SEND_STATUS
Definition: sd_spec.h:64
@ SD_APP_CLEAR_CARD_DETECT
Definition: sd_spec.h:68
@ SD_APP_SET_BUS_WIDTH
Definition: sd_spec.h:63
@ SD_APP_SET_WRITE_BLK_ERASE_CNT
Definition: sd_spec.h:66
sd_rsp_type
SD response types.
Definition: sd_spec.h:205
@ SD_SPI_RSP_TYPE_R5
Definition: sd_spec.h:223
@ SD_SPI_RSP_TYPE_R1b
Definition: sd_spec.h:219
@ SD_SPI_RSP_TYPE_R1
Definition: sd_spec.h:218
@ SD_RSP_TYPE_R4
Definition: sd_spec.h:212
@ SD_RSP_TYPE_R6
Definition: sd_spec.h:215
@ SD_SPI_RSP_TYPE_R4
Definition: sd_spec.h:222
@ SD_RSP_TYPE_R5b
Definition: sd_spec.h:214
@ SD_SPI_RSP_TYPE_R7
Definition: sd_spec.h:224
@ SD_SPI_RSP_TYPE_R3
Definition: sd_spec.h:221
@ SD_SPI_RSP_TYPE_R2
Definition: sd_spec.h:220
@ SD_RSP_TYPE_R5
Definition: sd_spec.h:213
@ SD_RSP_TYPE_R1
Definition: sd_spec.h:208
@ SD_RSP_TYPE_R2
Definition: sd_spec.h:210
@ SD_RSP_TYPE_R7
Definition: sd_spec.h:216
@ SD_RSP_TYPE_NONE
Definition: sd_spec.h:207
@ SD_RSP_TYPE_R1b
Definition: sd_spec.h:209
@ SD_RSP_TYPE_R3
Definition: sd_spec.h:211
hs_max_data_rate
Definition: sd_spec.h:347
@ HS_MAX_DTR
Definition: sd_spec.h:348
sd_current_limit
SD current support bitfield.
Definition: sd_spec.h:420
@ SD_MAX_CURRENT_200MA
Definition: sd_spec.h:421
@ SD_MAX_CURRENT_800MA
Definition: sd_spec.h:427
@ SD_MAX_CURRENT_400MA
Definition: sd_spec.h:423
@ SD_MAX_CURRENT_600MA
Definition: sd_spec.h:425
sdio_ocr_flag
SDIO OCR bit flags.
Definition: sd_spec.h:291
@ SDIO_OCR_VDD31_32FLAG
Definition: sd_spec.h:307
@ SDIO_OCR_VDD28_29FLAG
Definition: sd_spec.h:304
@ SDIO_OCR_IO_NUMBER
Definition: sd_spec.h:293
@ SDIO_OCR_VDD27_28FLAG
Definition: sd_spec.h:303
@ SDIO_OCR_VDD29_30FLAG
Definition: sd_spec.h:305
@ SDIO_OCR_VDD34_35FLAG
Definition: sd_spec.h:310
@ SDIO_OCR_180_VOL_FLAG
Definition: sd_spec.h:295
@ SDIO_OCR_VDD30_31FLAG
Definition: sd_spec.h:306
@ SDIO_OCR_VDD26_27FLAG
Definition: sd_spec.h:302
@ SDIO_OCR_VDD22_23FLAG
Definition: sd_spec.h:298
@ SDIO_OCR_VDD24_25FLAG
Definition: sd_spec.h:300
@ SDIO_OCR_VDD33_34FLAG
Definition: sd_spec.h:309
@ SDIO_OCR_VDD23_24FLAG
Definition: sd_spec.h:299
@ SDIO_OCR_VDD20_21FLAG
Definition: sd_spec.h:296
@ SDIO_OCR_VDD25_26FLAG
Definition: sd_spec.h:301
@ SDIO_OCR_VDD32_33FLAG
Definition: sd_spec.h:308
@ SDIO_OCR_VDD21_22FLAG
Definition: sd_spec.h:297
@ SDIO_OCR_IO_READY_FLAG
Definition: sd_spec.h:292
@ SDIO_OCR_MEM_PRESENT_FLAG
Definition: sd_spec.h:294
@ SDIO_OCR_VDD35_36FLAG
Definition: sd_spec.h:311
sd_driver_type
SD driver types.
Definition: sd_spec.h:436
@ SD_DRIVER_TYPE_C
Definition: sd_spec.h:439
@ SD_DRIVER_TYPE_B
Definition: sd_spec.h:437
@ SD_DRIVER_TYPE_D
Definition: sd_spec.h:440
@ SD_DRIVER_TYPE_A
Definition: sd_spec.h:438
sd_scr_flag
SD card configuration register.
Definition: sd_spec.h:600
@ SD_SCR_SPEC3
Definition: sd_spec.h:603
@ SD_SCR_DATA_STATUS_AFTER_ERASE
Definition: sd_spec.h:601
sd_current_setting
SD current setting values.
Definition: sd_spec.h:408
@ SD_SET_CURRENT_200MA
Definition: sd_spec.h:409
@ SD_SET_CURRENT_600MA
Definition: sd_spec.h:411
@ SD_SET_CURRENT_400MA
Definition: sd_spec.h:410
@ SD_SET_CURRENT_800MA
Definition: sd_spec.h:412
sd_driver_strength
SD switch drive type selection.
Definition: sd_spec.h:448
@ SD_DRV_STRENGTH_TYPEB
Definition: sd_spec.h:449
@ SD_DRV_STRENGTH_TYPEC
Definition: sd_spec.h:453
@ SD_DRV_STRENGTH_TYPED
Definition: sd_spec.h:455
@ SD_DRV_STRENGTH_TYPEA
Definition: sd_spec.h:451
sd_bus_speed
SD bus speed support bit flags.
Definition: sd_spec.h:357
@ UHS_DDR50_BUS_SPEED
Definition: sd_spec.h:363
@ UHS_SDR12_BUS_SPEED
Definition: sd_spec.h:358
@ UHS_SDR50_BUS_SPEED
Definition: sd_spec.h:361
@ HIGH_SPEED_BUS_SPEED
Definition: sd_spec.h:359
@ UHS_SDR25_BUS_SPEED
Definition: sd_spec.h:360
@ UHS_SDR104_BUS_SPEED
Definition: sd_spec.h:362
sd_switch_arg
SD switch arguments.
Definition: sd_spec.h:322
@ SD_SWITCH_SET
Definition: sd_spec.h:325
@ SD_SWITCH_CHECK
Definition: sd_spec.h:323
sd_ocr_flag
SD OCR bit flags.
Definition: sd_spec.h:250
@ SD_OCR_VDD32_33FLAG
Definition: sd_spec.h:271
@ SD_OCR_CARD_CAP_FLAG
Definition: sd_spec.h:255
@ SD_OCR_SWITCH_18_ACCEPT_FLAG
Definition: sd_spec.h:259
@ SD_OCR_PWR_BUSY_FLAG
Definition: sd_spec.h:251
@ SD_OCR_VDD29_30FLAG
Definition: sd_spec.h:265
@ SD_OCR_SWITCH_18_REQ_FLAG
Definition: sd_spec.h:257
@ SD_OCR_VDD28_29FLAG
Definition: sd_spec.h:263
@ SD_OCR_VDD35_36FLAG
Definition: sd_spec.h:277
@ SD_OCR_VDD31_32FLAG
Definition: sd_spec.h:269
@ SD_OCR_VDD30_31FLAG
Definition: sd_spec.h:267
@ SD_OCR_VDD33_34FLAG
Definition: sd_spec.h:273
@ SD_OCR_VDD27_28FLAG
Definition: sd_spec.h:261
@ SD_OCR_HOST_CAP_FLAG
Definition: sd_spec.h:253
@ SD_OCR_VDD34_35FLAG
Definition: sd_spec.h:275
#define SD_PRODUCT_NAME_BYTES
Definition: sd_spec.h:474
sdhc_clock_speed
SD host controller clock speed.
Definition: sd_spec.h:390
@ MMC_CLOCK_HS200
Definition: sd_spec.h:399
@ SDMMC_CLOCK_400KHZ
Definition: sd_spec.h:391
@ SD_CLOCK_50MHZ
Definition: sd_spec.h:393
@ MMC_CLOCK_52MHZ
Definition: sd_spec.h:397
@ MMC_CLOCK_DDR52
Definition: sd_spec.h:398
@ SD_CLOCK_100MHZ
Definition: sd_spec.h:394
@ MMC_CLOCK_HS400
Definition: sd_spec.h:400
@ SD_CLOCK_208MHZ
Definition: sd_spec.h:395
@ SD_CLOCK_25MHZ
Definition: sd_spec.h:392
@ MMC_CLOCK_26MHZ
Definition: sd_spec.h:396
sd_group_num
SD switch group numbers.
Definition: sd_spec.h:335
@ SD_GRP_TIMING_MODE
Definition: sd_spec.h:336
@ SD_GRP_DRIVER_STRENGTH_MODE
Definition: sd_spec.h:340
@ SD_GRP_CMD_SYS_MODE
Definition: sd_spec.h:338
@ SD_GRP_CURRENT_LIMIT_MODE
Definition: sd_spec.h:342
sd_csd_flag
SD card specific data flags.
Definition: sd_spec.h:546
@ SD_CSD_ERASE_BLK_EN_FLAG
Definition: sd_spec.h:555
@ SD_CSD_DSR_IMPLEMENTED_FLAG
Definition: sd_spec.h:553
@ SD_CSD_WRITE_BLK_MISALIGN_FLAG
Definition: sd_spec.h:549
@ SD_CSD_FILE_FMT_GRP_FLAG
Definition: sd_spec.h:561
@ SD_CSD_PERMANENT_WRITE_PROTECT_FLAG
Definition: sd_spec.h:565
@ SD_CSD_COPY_FLAG
Definition: sd_spec.h:563
@ SD_CSD_TMP_WRITE_PROTECT_FLAG
Definition: sd_spec.h:567
@ SD_CSD_WRITE_BLK_PARTIAL_FLAG
Definition: sd_spec.h:559
@ SD_CSD_READ_BLK_PARTIAL_FLAG
Definition: sd_spec.h:547
@ SD_CSD_READ_BLK_MISALIGN_FLAG
Definition: sd_spec.h:551
@ SD_CSD_WRITE_PROTECT_GRP_EN_FLAG
Definition: sd_spec.h:557
sd_r1_current_state
SD current state values.
Definition: sd_spec.h:129
@ SDMMC_R1_IDLE
Definition: sd_spec.h:130
@ SDMMC_R1_READY
Definition: sd_spec.h:131
@ SDMMC_R1_IDENTIFY
Definition: sd_spec.h:132
@ SDMMC_R1_RECIVE_DATA
Definition: sd_spec.h:136
@ SDMMC_R1_TRANSFER
Definition: sd_spec.h:134
@ SDMMC_R1_SEND_DATA
Definition: sd_spec.h:135
@ SDMMC_R1_DISCONNECT
Definition: sd_spec.h:138
@ SDMMC_R1_STANDBY
Definition: sd_spec.h:133
@ SDMMC_R1_PROGRAM
Definition: sd_spec.h:137
sd_spi_r2_status
SPI SD mode R2 response status flags.
Definition: sd_spec.h:162
@ SDHC_SPI_R2_UNLOCK_FAIL
Definition: sd_spec.h:164
@ SDHC_SPI_R2_ERASE_PARAM
Definition: sd_spec.h:169
@ SDHC_SPI_R2_CARD_LOCKED
Definition: sd_spec.h:163
@ SDHC_SPI_R2_WP_VIOLATION
Definition: sd_spec.h:168
@ SDHC_SPI_R2_ECC_FAIL
Definition: sd_spec.h:167
@ SDHC_SPI_R2_CC_ERR
Definition: sd_spec.h:166
@ SDHC_SPI_R2_OUT_OF_RANGE
Definition: sd_spec.h:170
@ SDHC_SPI_R2_ERR
Definition: sd_spec.h:165
sd_spi_r1_error_flag
SPI SD mode R1 response status flags.
Definition: sd_spec.h:146
@ SD_SPI_R1ILLEGAL_CMD_ERR
Definition: sd_spec.h:151
@ SD_SPI_R1ERASE_RESET
Definition: sd_spec.h:152
@ SD_SPI_R1IDLE_STATE
Definition: sd_spec.h:153
@ SD_SPI_R1ERASE_SEQ_ERR
Definition: sd_spec.h:149
@ SD_SPI_R1PARAMETER_ERR
Definition: sd_spec.h:147
@ SD_SPI_R1CMD_CRC_ERR
Definition: sd_spec.h:150
@ SD_SPI_R1ADDRESS_ERR
Definition: sd_spec.h:148
sd_spec_version
SD specification version.
Definition: sd_spec.h:612
@ SD_SPEC_VER2_0
Definition: sd_spec.h:617
@ SD_SPEC_VER1_0
Definition: sd_spec.h:613
@ SD_SPEC_VER3_0
Definition: sd_spec.h:619
@ SD_SPEC_VER1_1
Definition: sd_spec.h:615
sd_r1_status
Native SD mode R1 response status flags.
Definition: sd_spec.h:77
@ SD_R1_CARD_LOCKED
Definition: sd_spec.h:97
@ SD_R1_CUR_STATE
Definition: sd_spec.h:85
@ SD_R1_CSD_OVERWRITE
Definition: sd_spec.h:89
@ SD_R1_ERASE_SKIP
Definition: sd_spec.h:88
@ SD_R1_ADDR_ERR
Definition: sd_spec.h:102
@ SD_R1_WP_VIOLATION
Definition: sd_spec.h:98
@ SD_R1_ERASE_RESET
Definition: sd_spec.h:86
@ SD_R1_ERASE_PARAM
Definition: sd_spec.h:99
@ SD_R1_ECC_DISABLED
Definition: sd_spec.h:87
@ SD_R1_UNLOCK_FAIL
Definition: sd_spec.h:96
@ SD_R1_ILLEGAL_CMD
Definition: sd_spec.h:94
@ SD_R1_APP_CMD
Definition: sd_spec.h:81
@ SD_R1_ERASE_SEQ_ERR
Definition: sd_spec.h:100
@ SD_R1_AUTH_ERR
Definition: sd_spec.h:79
@ SD_R1_CC_ERR
Definition: sd_spec.h:92
@ SD_R1_ERR_FLAGS
Definition: sd_spec.h:104
@ SD_R1_FX_EVENT
Definition: sd_spec.h:82
@ SD_R1ERR_NONE
Definition: sd_spec.h:119
@ SD_R1_BLOCK_LEN_ERR
Definition: sd_spec.h:101
@ SD_R1_CRC_ERR
Definition: sd_spec.h:95
@ SD_R1_ERR
Definition: sd_spec.h:91
@ SD_R1_OUT_OF_RANGE
Definition: sd_spec.h:103
@ SD_R1_RDY_DATA
Definition: sd_spec.h:84
@ SD_R1_ECC_FAIL
Definition: sd_spec.h:93
sd_timing_mode
SD timing mode function selection values.
Definition: sd_spec.h:372
@ SD_TIMING_SDR25
Definition: sd_spec.h:375
@ SD_TIMING_SDR50
Definition: sd_spec.h:377
@ SD_TIMING_DDR50
Definition: sd_spec.h:381
@ SD_TIMING_SDR104
Definition: sd_spec.h:379
@ SD_TIMING_SDR12
Definition: sd_spec.h:373
sd_support_flag
SD support flags.
Definition: sd_spec.h:232
@ SD_SPEED_CLASS_CONTROL_FLAG
Definition: sd_spec.h:240
@ SD_SDXC_FLAG
Definition: sd_spec.h:236
@ SD_HIGH_CAPACITY_FLAG
Definition: sd_spec.h:233
@ SD_4BITS_WIDTH
Definition: sd_spec.h:234
@ SD_3000MV_FLAG
Definition: sd_spec.h:238
@ SD_1800MV_FLAG
Definition: sd_spec.h:237
@ SD_CMD23_FLAG
Definition: sd_spec.h:239
@ SD_SDHC_FLAG
Definition: sd_spec.h:235
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
SD card identification register.
Definition: sd_spec.h:481
uint16_t application
Definition: sd_spec.h:484
uint8_t name[(5U)]
Definition: sd_spec.h:486
uint16_t date
Definition: sd_spec.h:492
uint8_t manufacturer
Definition: sd_spec.h:482
uint8_t version
Definition: sd_spec.h:488
uint32_t ser_num
Definition: sd_spec.h:490
SD card specific data register.
Definition: sd_spec.h:501
uint8_t write_prtect_size
Definition: sd_spec.h:531
uint8_t read_blk_len
Definition: sd_spec.h:512
uint8_t write_current_min
Definition: sd_spec.h:522
uint8_t csd_structure
Definition: sd_spec.h:502
uint8_t write_current_max
Definition: sd_spec.h:524
uint8_t read_time1
Definition: sd_spec.h:504
uint16_t cmd_class
Definition: sd_spec.h:510
uint8_t read_time2
Definition: sd_spec.h:506
uint8_t write_speed_factor
Definition: sd_spec.h:533
uint8_t dev_size_mul
Definition: sd_spec.h:526
uint8_t read_current_min
Definition: sd_spec.h:518
uint8_t erase_size
Definition: sd_spec.h:529
uint8_t read_current_max
Definition: sd_spec.h:520
uint32_t device_size
Definition: sd_spec.h:516
uint8_t write_blk_len
Definition: sd_spec.h:535
uint16_t flags
Definition: sd_spec.h:514
uint8_t xfer_rate
Definition: sd_spec.h:508
uint8_t file_fmt
Definition: sd_spec.h:537
SD card configuration register.
Definition: sd_spec.h:576
uint8_t sd_ext_sec
Definition: sd_spec.h:587
uint8_t scr_structure
Definition: sd_spec.h:577
uint8_t sd_width
Definition: sd_spec.h:585
uint8_t cmd_support
Definition: sd_spec.h:589
uint8_t sd_sec
Definition: sd_spec.h:583
uint32_t rsvd
Definition: sd_spec.h:591
uint16_t flags
Definition: sd_spec.h:581
uint8_t sd_spec
Definition: sd_spec.h:579
SD switch capabilities.
Definition: sd_spec.h:465
enum sd_bus_speed bus_speed
Definition: sd_spec.h:468
enum sd_current_limit sd_current_limit
Definition: sd_spec.h:470
enum sd_driver_type sd_drv_type
Definition: sd_spec.h:469
enum hs_max_data_rate hs_max_dtr
Definition: sd_spec.h:466
enum sdhc_clock_speed uhs_max_dtr
Definition: sd_spec.h:467