HPM SDK
HPMicro Software Development Kit
hpm_sdmmc_emmc.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2024 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 #ifndef HPM_SDMMC_EMMC_H
8 #define HPM_SDMMC_EMMC_H
9 
10 #include "hpm_sdmmc_common.h"
11 #include "hpm_sdmmc_card.h"
12 #include "hpm_sdmmc_port.h"
13 
14 typedef enum {
20 
21 typedef union {
22  struct {
23  uint8_t cmd_set;
24  uint8_t value;
25  uint8_t index;
26  uint8_t access;
27  };
28  uint32_t argument;
30 
31 
32 #define EMMC_EXT_CSD_INDEX_CMD_SET (191)
33 #define EMMC_EXT_CSD_INDEX_POWER_CLASS (187)
34 #define EMMC_EXT_CSD_INDEX_HS_TIMING (185)
35 #define EMMC_EXT_CSD_INDEX_BUS_WDITH (183)
36 #define EMMC_EXT_CSD_INDEX_PARTITION_CONFIG (179)
37 #define EMMC_EXT_CSD_INDEX_BOOT_CONFIG_PROT (178)
38 #define EMMC_EXT_CSD_INDEX_BOOT_BUS_CONDITIONS (177)
39 #define EMMC_EXT_CSD_INDEX_ERASE_GROUP_DEF (175)
40 #define EMMC_EXT_CSD_INDEX_BOOT_WP (173)
41 #define EMMC_EXT_CSD_INDEX_USER_WP (171)
42 #define EMMC_EXT_CSD_INDEX_FW_CONFIG (169)
43 #define EMMC_EXT_CSD_INDEX_WR_REL_SET (167)
44 #define EMMC_EXT_CSD_INDEX_SANITIZE_START (165)
45 #define EMMC_EXT_CSD_INDEX_BKOPS_START (164)
46 #define EMMC_EXT_CSD_INDEX_BKOPS_EN (163)
47 #define EMMC_EXT_CSD_INDEX_RSTn_FUNCTION (162)
48 #define EMMC_EXT_CSD_INDEX_HPI_MGMT (161)
49 #define EMMC_EXT_CSD_INDEX_PARTITIONS_ATTRIBUTE (156)
50 #define EMMC_EXT_CSD_INDEX_PARTITION_SETTING_COMPLETED (155)
51 #define EMMC_EXT_CSD_INDEX_SEC_BAD_BLK_MGMNT (134)
52 #define EMMC_EXT_CSD_INDEX_PRODUCTION_STATE_AWARENESS (133)
53 #define EMMC_EXT_CSD_INDEX_PERIODIC_WAKEUP (131)
54 #define EMMC_EXT_CSD_INDEX_USE_NATIVE_SECTOR (62)
55 #define EMMC_EXT_CSD_INDEX_CLASS_6_CTRL (59)
56 
57 #define EMMC_EXT_CSD_INDEX_POWER_OFF_NOTIFICATION (34)
58 #define EMMC_EXT_CSD_INDEX_CACHE_CTRL (33)
59 #define EMMC_EXT_CSD_INDEX_FLUSH_CACHE (32)
60 #define EMMC_EXT_CSD_INDEX_BARRIER_CTRL (31)
61 #define EMMC_EXT_CSD_INDEX_MODE_CONFIG (30)
62 #define EMMC_EXT_CSD_INDEX_PRODUCT_STATE_AWARENESS_ENABLEMENT (17)
63 #define EMMC_EXT_CSD_INDEX_SECURE_REMOVAL_TYPE (16)
64 #define EMMC_EXT_CSD_INDEX_CMDQ_MODE_EN (15)
65 
66 typedef union {
67  struct {
68  uint32_t : 7;
69  uint32_t voltage_170_195: 1;
70  uint32_t voltage_200_260: 7;
71  uint32_t voltage_270_360: 9;
72  uint32_t : 5;
73  uint32_t access_mode: 2;
74  uint32_t powerup_status: 1;
75  };
76  uint32_t ocr_word;
77 } emmc_ocr_t;
78 
79 typedef union {
80  struct {
81  uint8_t reserved;
82  uint8_t mdt;
83  uint8_t psn[4];
84  uint8_t prv;
85  uint8_t pnm[6];
86  uint8_t oid;
87  struct {
88  uint8_t cbx: 2;
89  uint8_t bin: 6;
90  };
91  uint8_t mid;
92  };
93  uint32_t cid_words[4];
94 } emmc_cid_t;
95 
96 typedef union {
97  struct {
98  uint32_t: 5;
99  uint32_t app_cmd: 1;
100  uint32_t exception_event: 1;
101  uint32_t switch_error: 1;
102  uint32_t ready_for_data: 1;
103  uint32_t current_state: 4;
104  uint32_t erase_reset: 1;
105  uint32_t : 1;
106  uint32_t wp_erase_skip: 1;
107  uint32_t cid_or_csd_overwrite: 1;
108  uint32_t : 2;
109  uint32_t error: 1;
110  uint32_t cc_error: 1;
111  uint32_t device_ecc_failed: 1;
112  uint32_t illegal_command: 1;
113  uint32_t com_crc_err: 1;
114  uint32_t lock_unlock_failed: 1;
115  uint32_t device_is_locked: 1;
116  uint32_t wp_violation: 1;
117  uint32_t erase_param: 1;
118  uint32_t erase_seq_error: 1;
119  uint32_t block_len_error: 1;
120  uint32_t address_error: 1;
121  uint32_t out_of_range: 1;
122  };
123  uint32_t card_status;
125 
126 typedef enum {
136 
137 typedef enum {
147 
148 typedef enum vdd_current_min_def {
158 
159 typedef enum vdd_current_max_def {
169 
170 typedef enum {
176 
177 typedef struct {
178  uint8_t csd_structure;
179  uint8_t spec_version;
180  uint16_t nsac_cycles;
181  uint32_t taac_ns;
193  uint8_t file_format;
194 
201  uint8_t ecc_type;
202 
203 
204  uint32_t sector_size;
209  uint32_t max_freq;
211 
212 } emmc_csd_t;
213 
214 typedef union {
215  uint8_t device_type;
216  struct {
225  };
227 
228 #pragma pack(1)
229 
230 typedef struct {
231  /*
232  * Mode segment
233  */
234  uint8_t reserved0[15];
238  uint8_t max_pre_loading_data_size[4];
239  uint8_t pre_loading_data_size[4];
240  uint8_t ffu_status;
241  uint8_t reserved1[2];
243  uint8_t mode_config;
244  uint8_t barrier_control;
245  uint8_t flush_cache;
246  uint8_t cache_control;
250  uint8_t context_config[15];
251  uint8_t extended_partitions_attribute[2];
252  uint8_t exception_events_status[2];
253  uint8_t exception_events_control[2];
254  uint8_t dyncap_needed;
260  uint8_t vendor_specific_field[64];
261  uint8_t reserved02[2];
263  uint8_t periodic_wakeup;
264  uint8_t tcase_support;
267  uint8_t reserved03;
269  uint8_t enhanced_user_data_area_size[3];
270  uint8_t general_purpose_partition_size[4][3];
273  uint8_t max_enh_size_mult[3];
276  uint8_t hpi_management;
277  uint8_t bkops_en;
278  uint8_t bkops_start;
279  uint8_t sanitize_start;
282  uint8_t rpmb_size;
283  uint8_t fw_config;
284  uint8_t reserved04;
285  /* bit0 - US_PWR_WP_EN, bit2 - US_PERM_WP_EN, bit3 - US_PWR_WP_DIS, bit4 - US_PERM_WP_DIS
286  * bit6 - CD_PERM_WP_DIS, bit7 - PERM_PSWD_DIS
287  */
288  uint8_t user_wp;
289  uint8_t reserved05;
290  /* bit0 - B_PWR_WP_EN, bit1 - B_PWR_WP_SEC_SEL, bit2 - B_PERM_WP_EN, bit3 - B_PERM_WP_SEC_SEL
291  * bit4 - B_PERM_WP_DIS, bit6 - B_PWR_WP_DIS, bit7 - B_SEC_WP_SEL
292  *
293  */
294  uint8_t boot_wp;
295  uint8_t boot_wp_status;
296  uint8_t erase_group_def;
297  uint8_t reserved06;
298  /* bit[1:0] BOOT_BUS_WIDTH
299  * 0 - x1 SDR or x4 DDR in boot operation mode, 1 - X4 (SDR/DDR) bus width in boot operation mode
300  * 2 - x8 (SDR/DDR) bus width in boot operation mode
301  * bit2 RESET_BOOT_BUS_CONDITIONS
302  * 0 - Reset bus width to x1
303  * 1 - Retain BOOT_BUS_WIDTH and BOOT_MODE values after boot operation
304  * bit[4:3] BOOT_MODE
305  * 0 - SDR @ normal speed timing, 1 - SDR @ High Speed timing, 2 - DDR
306  *
307  */
309  /* bit0 - PWR_BOOT_CONFIG_PROT
310  * bit4 - PERM_BOOT_CONFIG_PROT
311  */
313  /* bit[2:0] PARTITION_ACCESS
314  * 0 - No access to boot partition, 1 - R/W boot partition 1, 2 - R/W boot partition 2
315  * 3 - R/W RPMB, 4 - Access to General Purpose partition 1, 5 - Access to General Purpose partition 2
316  * 6 - Access to General Purpose partition 3, 7 - Access to General partition 4
317  * bit[5:3] BOOT_PARTITION_ENABLE
318  * 0 - Device not boot enabled, 1 - Boot partition 1 enabled for boot, 2 - boot partition 2 enabled for boot
319  * 7 - User area enabled for boot
320  * bit[6] BOOT_ACK
321  */
323  uint8_t reserved07;
325  uint8_t reserved08;
326  /* bit[3:0] bus mode selection: 0-1bit data bus, 1 - 4bit data bus, 2 - 8bit data bus,
327  * 5- 4bit data bus @DDR mode, 6 - 8bit data bus @DDR mode
328  * bit7 Enhanced Strobe
329  */
330  uint8_t bus_width;
331  uint8_t strobe_support;
332  /* bit[3:0] timing interface: 0 - normal, 1 - high speed, 2 - HS200, 3 - HS400
333  * bit[7:4] selected driver strength
334  */
335  uint8_t hs_timing;
336  uint8_t reserved09;
337  uint8_t power_class;
338  uint8_t reserved10;
340  uint8_t reserved11;
341  uint8_t cmd_set;
342  /*
343  * Properties Segment
344  */
345  uint8_t ext_csd_rev;
346  uint8_t reserved12;
347  uint8_t csd_structure;
348  uint8_t reserved13;
349  /*
350  * bit0 - HS @ 26MHz, bit1 - HS @ 52MHz, bit2 - HS DDR @52MHz, 1.8V or 3V
351  * bit3 - HS DDR @ 52Mhz, 12.V, bit4 - HS200 SDR @200MHz, 1.8V, bit5 - HS200 SDR @200MHz, 1.2V
352  * bit6 - HS400 DDR @ 1.8V, bit7 - HS400 DDR @ 1.2V
353  */
354  uint8_t device_type;
355  uint8_t driver_strength;
358  uint8_t pwr_cl_52_195;
359  uint8_t pwr_cl_26_195;
360  uint8_t pwr_cl_52_360;
361  uint8_t pwr_cl_26_360;
362  uint8_t reserved14;
363  uint8_t min_perf_r_4_26;
367  uint8_t min_perf_r_8_52;
368  uint8_t min_perf_w_8_52;
369  uint8_t secure_wp_info;
370  uint32_t sector_count;
376  /* 512KB * high_capacity_erase_unit_size * high_capacity_write_protect_group_size */
378  uint8_t reliable_write_sector_count; /* !< [222] shall be set to 1 */
381  uint8_t access_size;
383  uint8_t reserved15;
384  uint8_t boot_info;
388  uint8_t trim_mult;
389  uint8_t reserved16;
392  uint8_t pwr_cl_200_130;
393  uint8_t pwr_cl_200_195;
399  uint8_t bkops_status;
402  uint32_t cache_size;
404  uint8_t firmware_version[8];
405  uint8_t device_version[2];
409  uint8_t pre_eol_info;
412  uint8_t vendor_proprietary_health_report[32];
414  uint8_t reserved17;
415  uint8_t cmdq_depth;
416  uint8_t cmdq_support;
417  uint8_t reserved18[177];
418  uint8_t barrier_support;
419  uint8_t ffu_arg[4];
421  uint8_t ffu_features;
422  uint8_t supported_modes;
424  uint8_t large_unit_size;
427  uint8_t tag_unit_size;
431  uint8_t bkops_support;
432  uint8_t hpi_features;
435  uint8_t reserved19[6];
438 
439 #pragma pack()
440 
441 typedef enum _emmc_partition {
447 
448 typedef enum _emmc_hs_timing {
455 
456 typedef enum {
474 
475 typedef enum {
493 
494 typedef union {
498 
499 typedef enum {
507 
508 typedef enum {
512 
513 typedef struct {
517  uint8_t reserved;
518 } boot_info_t;
519 
520 typedef struct {
526 
527 typedef enum {
533 
534 typedef enum {
544 
545 typedef enum {
548 
549 typedef struct {
559 
560 typedef struct {
564 
567 
571 
572  uint32_t gp_partition_size[4];
573 
574  uint32_t super_page_size;
578  uint32_t sector_count;
579  uint32_t sector_size;
580 
581  uint32_t large_unit_size;
585 
590  uint32_t trim_timeout_ms;
593 
602 
608 
609 typedef struct _sdmmc_emmc {
610  sdmmc_host_t *host;
611  uint16_t relative_addr;
612  emmc_cid_t cid;
613  emmc_ocr_t ocr;
614  emmc_csd_t csd;
615  emmc_ext_csd_t ext_csd;
616 
617  emmc_device_attribute_t device_attribute;
618 
619  sdmmc_operation_voltage_t operation_voltage;
620  emmc_card_status_t current_r1_status;
621  emmc_partition_t current_partition;
622  emmc_hs_timing_t current_hs_timing;
623  emmc_bus_mode_t current_bus_mode;
624  emmc_power_class_t current_power_class;
625  emmc_boot_setting_t boot_setting;
626  bool is_host_ready;
628 
629 typedef enum {
634 
635 typedef enum {
640 
641 typedef enum {
647 
648 typedef enum {
658 
659 typedef struct {
664 
665 #ifdef __cplusplus
666 extern "C" {
667 #endif
668 
675 
676 void emmc_deinit(emmc_card_t *card);
677 
684 
691 
698 
705 hpm_stat_t emmc_select_card(emmc_card_t *card, bool is_selected);
706 
714 
722 hpm_stat_t emmc_switch_function(emmc_card_t *card, emmc_switch_cmd_arg_t arg, uint32_t timeout_us);
723 
731 
739 
746 hpm_stat_t emmc_program_csd(emmc_card_t *card, const uint32_t *raw_csd);
747 
756 hpm_stat_t emmc_read_blocks(emmc_card_t *card, uint8_t *buffer, uint32_t start_block, uint32_t block_count);
757 
766 hpm_stat_t emmc_write_blocks(emmc_card_t *card, const uint8_t *buffer, uint32_t start_block, uint32_t block_count);
767 
776 hpm_stat_t emmc_erase_blocks(emmc_card_t *card, uint32_t start_block, uint32_t block_count, emmc_erase_option_t option);
777 
784 
791 
792 
793 #ifdef __cplusplus
794 }
795 #endif
796 
797 #endif /* HPM_SDMMC_EMMC_H */
uint32_t hpm_stat_t
Definition: hpm_common.h:123
sdmmc_operation_voltage_t
Definition: hpm_sdmmc_common.h:44
hpm_stat_t emmc_probe_device(emmc_card_t *card)
Probe eMMC device.
Definition: hpm_sdmmc_emmc.c:592
@ emmc_partition_boot_area_1
Definition: hpm_sdmmc_emmc.h:442
@ emmc_timing_hs200
Definition: hpm_sdmmc_emmc.h:451
hpm_stat_t emmc_exit_sleep_mode(emmc_card_t *card)
Switch eMMC device into standby mode.
Definition: hpm_sdmmc_emmc.c:1146
enum vdd_current_min_def vdd_current_min_t
struct _sdmmc_emmc emmc_card_t
emmc_idle_option_t
Definition: hpm_sdmmc_emmc.h:629
@ emmc_idle_option_go_pre_idle_state
Definition: hpm_sdmmc_emmc.h:631
@ emmc_idle_option_go_idle_state
Definition: hpm_sdmmc_emmc.h:630
@ emmc_idle_option_boot_initialization
Definition: hpm_sdmmc_emmc.h:632
@ emmc_partition_user_data
Definition: hpm_sdmmc_emmc.h:445
@ emmc_timing_high_speed_ddr
Definition: hpm_sdmmc_emmc.h:453
emmc_csd_file_format_t
Definition: hpm_sdmmc_emmc.h:170
@ emmc_csd_file_format_others_or_unknown
Definition: hpm_sdmmc_emmc.h:174
@ emmc_csd_file_format_dos_fat_with_boot_sector_only
Definition: hpm_sdmmc_emmc.h:172
@ emmc_csd_file_format_hard_disk_like_file_system_with_partition_table
Definition: hpm_sdmmc_emmc.h:171
@ emmc_csd_file_format_universal_file_format
Definition: hpm_sdmmc_emmc.h:173
emmc_boot_partition_mode_t
Definition: hpm_sdmmc_emmc.h:527
@ emmc_boot_partition_mode_boot_partition1
Definition: hpm_sdmmc_emmc.h:529
@ emmc_boot_partition_mode_not_enabled
Definition: hpm_sdmmc_emmc.h:528
@ emmc_boot_partition_mode_user_area
Definition: hpm_sdmmc_emmc.h:531
@ emmc_boot_partition_mode_boot_partition2
Definition: hpm_sdmmc_emmc.h:530
vdd_current_min_def
Definition: hpm_sdmmc_emmc.h:148
@ vdd_current_min_60ma
Definition: hpm_sdmmc_emmc.h:155
@ vdd_current_min_35ma
Definition: hpm_sdmmc_emmc.h:154
@ vdd_current_min_25ma
Definition: hpm_sdmmc_emmc.h:153
@ vdd_current_min_1ma
Definition: hpm_sdmmc_emmc.h:150
@ vdd_current_min_10ma
Definition: hpm_sdmmc_emmc.h:152
@ vdd_current_min_100ma
Definition: hpm_sdmmc_emmc.h:156
@ vdd_current_min_0_5ma
Definition: hpm_sdmmc_emmc.h:149
@ vdd_current_min_5ma
Definition: hpm_sdmmc_emmc.h:151
hpm_stat_t emmc_erase_blocks(emmc_card_t *card, uint32_t start_block, uint32_t block_count, emmc_erase_option_t option)
Erase eMMC Blocks.
Definition: hpm_sdmmc_emmc.c:955
@ emmc_timing_high_speed
Definition: hpm_sdmmc_emmc.h:450
emmc_bus_mode_t
Definition: hpm_sdmmc_emmc.h:499
@ emmc_bus_mode_x8_sdr
Definition: hpm_sdmmc_emmc.h:502
@ emmc_bus_mode_x8_ddr_ds
Definition: hpm_sdmmc_emmc.h:505
@ emmc_bus_mode_x4_ddr
Definition: hpm_sdmmc_emmc.h:503
@ emmc_bus_mode_x8_ddr
Definition: hpm_sdmmc_emmc.h:504
@ emmc_bus_mode_x1_sdr
Definition: hpm_sdmmc_emmc.h:500
@ emmc_bus_mode_x4_sdr
Definition: hpm_sdmmc_emmc.h:501
enum vdd_current_max_def vdd_current_max_t
enum _emmc_hs_timing emmc_hs_timing_t
hpm_stat_t emmc_configure_partition(emmc_card_t *card, emmc_config_partition_option_t option)
Configure eMMC Partition.
Definition: hpm_sdmmc_emmc.c:1065
emmc_erase_option_t
Definition: hpm_sdmmc_emmc.h:635
@ emmc_erase_option_discard
Definition: hpm_sdmmc_emmc.h:638
@ emmc_erase_option_erase
Definition: hpm_sdmmc_emmc.h:636
@ emmc_erase_option_trim
Definition: hpm_sdmmc_emmc.h:637
emmc_csd_vdd_current_max_t
Definition: hpm_sdmmc_emmc.h:137
@ emmc_csd_vdd_current_max_25ma
Definition: hpm_sdmmc_emmc.h:141
@ emmc_csd_vdd_current_max_200ma
Definition: hpm_sdmmc_emmc.h:145
@ emmc_csd_vdd_current_max_45ma
Definition: hpm_sdmmc_emmc.h:143
@ emmc_csd_vdd_current_max_1ma
Definition: hpm_sdmmc_emmc.h:138
@ emmc_csd_vdd_current_max_10ma
Definition: hpm_sdmmc_emmc.h:140
@ emmc_csd_vdd_current_max_35ma
Definition: hpm_sdmmc_emmc.h:142
@ emmc_csd_vdd_current_max_80ma
Definition: hpm_sdmmc_emmc.h:144
@ emmc_csd_vdd_current_max_5ma
Definition: hpm_sdmmc_emmc.h:139
emmc_power_class_3v6_t
Definition: hpm_sdmmc_emmc.h:456
@ emmc_power_3v6_max_rms_120ma_peak_220ma
Definition: hpm_sdmmc_emmc.h:458
@ emmc_power_3v6_max_rms_500ma_peak_600ma
Definition: hpm_sdmmc_emmc.h:468
@ emmc_power_3v6_max_rms_400ma_peak_500ma
Definition: hpm_sdmmc_emmc.h:466
@ emmc_power_3v6_max_rms_300ma_peak_400ma
Definition: hpm_sdmmc_emmc.h:464
@ emmc_power_3v6_max_rms_220ma_peak_320ma
Definition: hpm_sdmmc_emmc.h:462
@ emmc_power_3v6_max_rms_450ma_peak_550ma
Definition: hpm_sdmmc_emmc.h:467
@ emmc_power_3v6_max_rms_350ma_peak_450ma
Definition: hpm_sdmmc_emmc.h:465
@ emmc_power_3v6_max_rms_800ma_peak_900ma
Definition: hpm_sdmmc_emmc.h:471
@ emmc_power_3v6_max_rms_100ma_peak_200ma
Definition: hpm_sdmmc_emmc.h:457
@ emmc_power_3v6_max_rms_600ma_peak_700ma
Definition: hpm_sdmmc_emmc.h:469
@ emmc_power_3v6_max_rms_700ma_peak_800ma
Definition: hpm_sdmmc_emmc.h:470
@ emmc_power_3v6_max_rms_180ma_peak_280ma
Definition: hpm_sdmmc_emmc.h:460
@ emmc_power_3v6_max_rms_gt800ma_peak_gt900ma
Definition: hpm_sdmmc_emmc.h:472
@ emmc_power_3v6_max_rms_200ma_peak_300ma
Definition: hpm_sdmmc_emmc.h:461
@ emmc_power_3v6_max_rms_250ma_peak_350ma
Definition: hpm_sdmmc_emmc.h:463
@ emmc_power_3v6_max_rms_150ma_peak_250ma
Definition: hpm_sdmmc_emmc.h:459
hpm_stat_t emmc_program_csd(emmc_card_t *card, const uint32_t *raw_csd)
Program CSD register.
hpm_stat_t emmc_init(emmc_card_t *card)
Intialize eMMC device, include both host and the device.
Definition: hpm_sdmmc_emmc.c:560
emmc_boot_mode_t
Definition: hpm_sdmmc_emmc.h:545
@ emmc_boot_mode_sdr_high_speed_timing
Definition: hpm_sdmmc_emmc.h:546
@ emmc_boot_mode_ddr
Definition: hpm_sdmmc_emmc.h:546
@ emmc_boot_mode_sdr_legacy
Definition: hpm_sdmmc_emmc.h:546
emmc_boot_partition_enable_option_t
Definition: hpm_sdmmc_emmc.h:641
@ boot_partition_enable_option_user_area
Definition: hpm_sdmmc_emmc.h:645
@ boot_partition_enable_option_boot_partition1
Definition: hpm_sdmmc_emmc.h:643
@ boot_partition_enable_option_boot_partition2
Definition: hpm_sdmmc_emmc.h:644
@ boot_partition_enable_option_not_enabled
Definition: hpm_sdmmc_emmc.h:642
emmc_csd_vdd_current_min_t
Definition: hpm_sdmmc_emmc.h:126
@ emmc_csd_vdd_current_min_100ma
Definition: hpm_sdmmc_emmc.h:134
@ emmc_csd_vdd_current_min_5ma
Definition: hpm_sdmmc_emmc.h:129
@ emmc_csd_vdd_current_min_25ma
Definition: hpm_sdmmc_emmc.h:131
@ emmc_csd_vdd_current_min_1ma
Definition: hpm_sdmmc_emmc.h:128
@ emmc_csd_vdd_current_min_60ma
Definition: hpm_sdmmc_emmc.h:133
@ emmc_csd_vdd_current_min_10ma
Definition: hpm_sdmmc_emmc.h:130
@ emmc_csd_vdd_current_min_35ma
Definition: hpm_sdmmc_emmc.h:132
@ emmc_csd_vdd_current_min_0_5ma
Definition: hpm_sdmmc_emmc.h:127
@ emmc_partition_boot_area_2
Definition: hpm_sdmmc_emmc.h:443
void emmc_deinit(emmc_card_t *card)
Definition: hpm_sdmmc_emmc.c:587
hpm_stat_t emmc_enter_sleep_mode(emmc_card_t *card)
Switch eMMC device into sleep mode.
Definition: hpm_sdmmc_emmc.c:1124
vdd_current_max_def
Definition: hpm_sdmmc_emmc.h:159
@ vdd_current_max_25ma
Definition: hpm_sdmmc_emmc.h:163
@ vdd_current_max_35ma
Definition: hpm_sdmmc_emmc.h:164
@ vdd_current_max_200ma
Definition: hpm_sdmmc_emmc.h:167
@ vdd_current_max_80ma
Definition: hpm_sdmmc_emmc.h:166
@ vdd_current_max_5ma
Definition: hpm_sdmmc_emmc.h:161
@ vdd_current_max_1ma
Definition: hpm_sdmmc_emmc.h:160
@ vdd_current_max_45ma
Definition: hpm_sdmmc_emmc.h:165
@ vdd_current_max_10ma
Definition: hpm_sdmmc_emmc.h:162
hpm_stat_t emmc_write_blocks(emmc_card_t *card, const uint8_t *buffer, uint32_t start_block, uint32_t block_count)
Write eMMC blocks.
Definition: hpm_sdmmc_emmc.c:880
enum _emmc_partition emmc_partition_t
emmc_write_protection_mode_t
Definition: hpm_sdmmc_emmc.h:508
@ emmc_write_protection_mode_legacy
Definition: hpm_sdmmc_emmc.h:509
@ emmc_write_protection_mode_secure
Definition: hpm_sdmmc_emmc.h:510
hpm_stat_t emmc_go_idle(emmc_card_t *card, emmc_idle_option_t option)
Go to Idle mode.
@ emmc_timing_hs400
Definition: hpm_sdmmc_emmc.h:452
hpm_stat_t emmc_switch_function(emmc_card_t *card, emmc_switch_cmd_arg_t arg, uint32_t timeout_us)
Switch eMMC function.
Definition: hpm_sdmmc_emmc.c:1045
@ emmc_timing_legacy
Definition: hpm_sdmmc_emmc.h:449
hpm_stat_t emmc_send_cid(emmc_card_t *card)
Request eMMC device to send CID to Host.
Definition: hpm_sdmmc_emmc.c:400
hpm_stat_t emmc_read_blocks(emmc_card_t *card, uint8_t *buffer, uint32_t start_block, uint32_t block_count)
Read eMMC blocks.
Definition: hpm_sdmmc_emmc.c:824
emmc_partition_access_option_t
Definition: hpm_sdmmc_emmc.h:648
@ partition_access_option_access_to_gp_partition1
Definition: hpm_sdmmc_emmc.h:653
@ partition_access_option_read_write_boot_partition2
Definition: hpm_sdmmc_emmc.h:651
@ partition_access_option_read_write_boot_partition1
Definition: hpm_sdmmc_emmc.h:650
@ partition_access_option_access_to_gp_partition2
Definition: hpm_sdmmc_emmc.h:654
@ partition_access_option_access_to_gp_partition3
Definition: hpm_sdmmc_emmc.h:655
@ partition_access_option_access_to_gp_partition4
Definition: hpm_sdmmc_emmc.h:656
@ partition_access_option_read_write_rpmb
Definition: hpm_sdmmc_emmc.h:652
@ partition_access_option_no_access_to_boot_partition
Definition: hpm_sdmmc_emmc.h:649
hpm_stat_t emmc_enable_high_density_erase_group(emmc_card_t *card, bool enable)
Enable High Density Erase group.
emmc_power_class_1v95_t
Definition: hpm_sdmmc_emmc.h:475
@ emmc_power_1v95_max_rms_200ma_peak_300ma
Definition: hpm_sdmmc_emmc.h:485
@ emmc_power_1v95_max_rms_300ma_peak_400ma
Definition: hpm_sdmmc_emmc.h:487
@ emmc_power_1v95_max_rms_160ma_peak_260ma
Definition: hpm_sdmmc_emmc.h:483
@ emmc_power_1v95_max_rms_120ma_peak_220ma
Definition: hpm_sdmmc_emmc.h:481
@ emmc_power_1v95_max_rms_90ma_peak_180ma
Definition: hpm_sdmmc_emmc.h:479
@ emmc_power_1v95_max_rms_100ma_peak_200ma
Definition: hpm_sdmmc_emmc.h:480
@ emmc_power_1v95_max_rms_80ma_peak_160ma
Definition: hpm_sdmmc_emmc.h:478
@ emmc_power_1v95_max_rms_gt500ma_peak_gt600ma
Definition: hpm_sdmmc_emmc.h:491
@ emmc_power_1v95_max_rms_140ma_peak_240ma
Definition: hpm_sdmmc_emmc.h:482
@ emmc_power_1v95_max_rms_350ma_peak_450ma
Definition: hpm_sdmmc_emmc.h:488
@ emmc_power_1v95_max_rms_70ma_peak_140ma
Definition: hpm_sdmmc_emmc.h:477
@ emmc_power_1v95_max_rms_180ma_peak_280ma
Definition: hpm_sdmmc_emmc.h:484
@ emmc_power_1v95_max_rms_250ma_peak_350ma
Definition: hpm_sdmmc_emmc.h:486
@ emmc_power_1v95_max_rms_65ma_peak_130ma
Definition: hpm_sdmmc_emmc.h:476
@ emmc_power_1v95_max_rms_500ma_peak_600ma
Definition: hpm_sdmmc_emmc.h:490
@ emmc_power_1v95_max_rms_400ma_peak_500ma
Definition: hpm_sdmmc_emmc.h:489
emmc_partition_access_t
Definition: hpm_sdmmc_emmc.h:534
@ emmc_partition_access_read_or_write_boot_partition2
Definition: hpm_sdmmc_emmc.h:537
@ emmc_partition_access_access_to_gp_partition3
Definition: hpm_sdmmc_emmc.h:541
@ emmc_partition_access_access_to_gp_partition1
Definition: hpm_sdmmc_emmc.h:539
@ emmc_partition_access_access_to_gp_partition4
Definition: hpm_sdmmc_emmc.h:542
@ emmc_partition_access_access_to_gp_partition2
Definition: hpm_sdmmc_emmc.h:540
@ emmc_partition_access_boot_partition_disabled
Definition: hpm_sdmmc_emmc.h:535
@ emmc_partition_access_read_or_write_rpmb
Definition: hpm_sdmmc_emmc.h:538
@ emmc_partition_access_read_or_write_boot_partition1
Definition: hpm_sdmmc_emmc.h:536
@ emmc_partition_rpmb
Definition: hpm_sdmmc_emmc.h:444
emmc_switch_cmd_access_mode_t
Definition: hpm_sdmmc_emmc.h:14
@ emmc_switch_cmd_access_mode_write_byte
Definition: hpm_sdmmc_emmc.h:18
@ emmc_switch_cmd_access_mode_clear_bits
Definition: hpm_sdmmc_emmc.h:17
@ emmc_switch_cmd_access_mode_command_set
Definition: hpm_sdmmc_emmc.h:15
@ emmc_switch_cmd_access_mode_set_bits
Definition: hpm_sdmmc_emmc.h:16
hpm_stat_t emmc_select_card(emmc_card_t *card, bool is_selected)
Select eMMC device.
Definition: hpm_sdmmc_emmc.c:818
hpm_stat_t emmc_card_init(emmc_card_t *card)
Initialize eMMC device.
Definition: hpm_sdmmc_emmc.c:621
Definition: hpm_sdmmc_emmc.h:513
uint8_t reserved
Definition: hpm_sdmmc_emmc.h:517
bool is_alt_boot_mode_supported
Definition: hpm_sdmmc_emmc.h:514
bool is_ddr_boot_mode_supported
Definition: hpm_sdmmc_emmc.h:515
bool is_hs_boot_mode_supported
Definition: hpm_sdmmc_emmc.h:516
Definition: hpm_sdmmc_emmc.h:549
bool enable_boot_config_protection_until_next_power_cycle
Definition: hpm_sdmmc_emmc.h:551
bool reset_boot_bus_conditions
Definition: hpm_sdmmc_emmc.h:553
bool enable_boot_ack
Definition: hpm_sdmmc_emmc.h:550
emmc_boot_partition_mode_t emmc_boot_partition_mode
Definition: hpm_sdmmc_emmc.h:556
emmc_bus_mode_t boot_bus_mode
Definition: hpm_sdmmc_emmc.h:555
bool enable_boot_config_protection_permanently
Definition: hpm_sdmmc_emmc.h:552
emmc_boot_mode_t boot_mode
Definition: hpm_sdmmc_emmc.h:554
emmc_partition_access_t partition_access
Definition: hpm_sdmmc_emmc.h:557
Definition: hpm_sdmmc_emmc.h:659
bool enable_boot_ack
Definition: hpm_sdmmc_emmc.h:660
emmc_partition_access_t partition_access_option
Definition: hpm_sdmmc_emmc.h:662
emmc_boot_partition_enable_option_t boot_partition_enable_option
Definition: hpm_sdmmc_emmc.h:661
Definition: hpm_sdmmc_emmc.h:177
uint8_t file_format
Definition: hpm_sdmmc_emmc.h:193
emmc_csd_vdd_current_min_t write_current_vdd_min
Definition: hpm_sdmmc_emmc.h:199
emmc_csd_vdd_current_max_t write_current_vdd_max
Definition: hpm_sdmmc_emmc.h:200
emmc_csd_vdd_current_min_t read_current_vdd_min
Definition: hpm_sdmmc_emmc.h:197
uint32_t taac_ns
Definition: hpm_sdmmc_emmc.h:181
bool support_write_block_misalignment
Definition: hpm_sdmmc_emmc.h:183
uint32_t write_protect_group_size
Definition: hpm_sdmmc_emmc.h:208
uint32_t max_freq
Definition: hpm_sdmmc_emmc.h:209
bool is_predefined_file_format
Definition: hpm_sdmmc_emmc.h:189
uint8_t write_speed_factor
Definition: hpm_sdmmc_emmc.h:196
emmc_csd_vdd_current_max_t read_current_vdd_max
Definition: hpm_sdmmc_emmc.h:198
bool support_write_block_partial
Definition: hpm_sdmmc_emmc.h:188
uint64_t device_size_in_bytes
Definition: hpm_sdmmc_emmc.h:210
bool support_temporary_write_protect
Definition: hpm_sdmmc_emmc.h:192
uint32_t max_read_block_len
Definition: hpm_sdmmc_emmc.h:206
bool support_copy
Definition: hpm_sdmmc_emmc.h:190
bool support_permanent_write_protect
Definition: hpm_sdmmc_emmc.h:191
uint32_t erase_group_size
Definition: hpm_sdmmc_emmc.h:205
uint32_t max_write_block_len
Definition: hpm_sdmmc_emmc.h:207
uint8_t spec_version
Definition: hpm_sdmmc_emmc.h:179
uint32_t sector_size
Definition: hpm_sdmmc_emmc.h:204
bool is_dsr_implemented
Definition: hpm_sdmmc_emmc.h:185
uint8_t csd_structure
Definition: hpm_sdmmc_emmc.h:178
uint16_t card_command_class
Definition: hpm_sdmmc_emmc.h:195
uint16_t nsac_cycles
Definition: hpm_sdmmc_emmc.h:180
bool support_content_protect_app
Definition: hpm_sdmmc_emmc.h:186
uint8_t ecc_type
Definition: hpm_sdmmc_emmc.h:201
bool support_read_block_partial
Definition: hpm_sdmmc_emmc.h:182
bool is_write_protection_group_enabled
Definition: hpm_sdmmc_emmc.h:187
bool support_read_block_misalignment
Definition: hpm_sdmmc_emmc.h:184
Definition: hpm_sdmmc_emmc.h:560
uint32_t sleep_current_vcc_ua
Definition: hpm_sdmmc_emmc.h:600
uint32_t rpmb_partition_size
Definition: hpm_sdmmc_emmc.h:569
uint32_t erase_timeout_ms
Definition: hpm_sdmmc_emmc.h:594
uint32_t init_timeout_after_partition_ms
Definition: hpm_sdmmc_emmc.h:589
bool is_all_0xffs_for_erased_region
Definition: hpm_sdmmc_emmc.h:604
uint32_t write_protect_group_size
Definition: hpm_sdmmc_emmc.h:575
bool is_cmd_queue_mode_enabled
Definition: hpm_sdmmc_emmc.h:606
secure_feature_info_t secure_feature_info
Definition: hpm_sdmmc_emmc.h:566
emmc_device_type_t device_type
Definition: hpm_sdmmc_emmc.h:562
uint32_t sector_count
Definition: hpm_sdmmc_emmc.h:578
uint32_t boot_partition_size
Definition: hpm_sdmmc_emmc.h:568
uint32_t trim_timeout_ms
Definition: hpm_sdmmc_emmc.h:590
uint32_t sector_size
Definition: hpm_sdmmc_emmc.h:579
bool is_enhanced_strobe_supported
Definition: hpm_sdmmc_emmc.h:605
uint64_t optimal_trim_unit_size
Definition: hpm_sdmmc_emmc.h:584
uint32_t erase_group_size
Definition: hpm_sdmmc_emmc.h:576
bool use_high_capacity_erase_unit_size
Definition: hpm_sdmmc_emmc.h:603
uint32_t optimal_write_size
Definition: hpm_sdmmc_emmc.h:583
uint32_t operation_codes_timeout_us
Definition: hpm_sdmmc_emmc.h:586
uint32_t power_off_timeout_ms
Definition: hpm_sdmmc_emmc.h:588
uint32_t production_state_awareness_timeout_us
Definition: hpm_sdmmc_emmc.h:599
uint32_t switch_cmd_timeout_ms
Definition: hpm_sdmmc_emmc.h:587
bool is_secure_write_protection_supported
Definition: hpm_sdmmc_emmc.h:561
emmc_write_protection_mode_t write_protection_mode
Definition: hpm_sdmmc_emmc.h:563
uint64_t device_size_in_bytes
Definition: hpm_sdmmc_emmc.h:577
uint32_t max_enhanced_area_size
Definition: hpm_sdmmc_emmc.h:570
uint32_t secure_erase_timeout_ms
Definition: hpm_sdmmc_emmc.h:591
uint32_t secure_trim_timeout_ms
Definition: hpm_sdmmc_emmc.h:592
uint32_t partition_switch_timeout_ms
Definition: hpm_sdmmc_emmc.h:595
uint32_t sleep_current_vccq_ua
Definition: hpm_sdmmc_emmc.h:601
uint32_t sleep_notification_timeout_us
Definition: hpm_sdmmc_emmc.h:597
uint32_t large_unit_size
Definition: hpm_sdmmc_emmc.h:581
boot_info_t boot_info
Definition: hpm_sdmmc_emmc.h:565
uint32_t optimal_read_size
Definition: hpm_sdmmc_emmc.h:582
uint32_t sleep_awake_timeout_ns
Definition: hpm_sdmmc_emmc.h:598
uint32_t out_of_interrupt_timeout_ms
Definition: hpm_sdmmc_emmc.h:596
uint32_t super_page_size
Definition: hpm_sdmmc_emmc.h:574
Definition: hpm_sdmmc_emmc.h:230
uint8_t cmd_set
Definition: hpm_sdmmc_emmc.h:341
uint8_t production_state_awareness_timeout
Definition: hpm_sdmmc_emmc.h:373
uint8_t access_size
Definition: hpm_sdmmc_emmc.h:381
uint8_t pwr_cl_52_195
Definition: hpm_sdmmc_emmc.h:358
uint8_t csd_structure
Definition: hpm_sdmmc_emmc.h:347
uint8_t packed_command_status
Definition: hpm_sdmmc_emmc.h:249
uint8_t erase_group_def
Definition: hpm_sdmmc_emmc.h:296
uint8_t max_packed_writes
Definition: hpm_sdmmc_emmc.h:429
uint8_t erase_timeout_mult
Definition: hpm_sdmmc_emmc.h:379
uint8_t periodic_wakeup
Definition: hpm_sdmmc_emmc.h:263
uint8_t ming_perf_w_4_26
Definition: hpm_sdmmc_emmc.h:364
uint8_t power_off_notification
Definition: hpm_sdmmc_emmc.h:247
uint8_t device_lifetime_estimation_type_a
Definition: hpm_sdmmc_emmc.h:410
uint8_t high_capacity_erase_unit_size
Definition: hpm_sdmmc_emmc.h:380
uint8_t packed_command_failure_index
Definition: hpm_sdmmc_emmc.h:248
uint8_t reserved07
Definition: hpm_sdmmc_emmc.h:323
uint32_t enhanced_user_data_start_address
Definition: hpm_sdmmc_emmc.h:268
uint8_t driver_strength
Definition: hpm_sdmmc_emmc.h:355
uint8_t secure_trim_mult
Definition: hpm_sdmmc_emmc.h:385
uint8_t bkops_support
Definition: hpm_sdmmc_emmc.h:431
uint8_t mode_config
Definition: hpm_sdmmc_emmc.h:243
uint8_t secure_erase_mult
Definition: hpm_sdmmc_emmc.h:386
uint8_t sector_size_emulation
Definition: hpm_sdmmc_emmc.h:258
uint8_t power_class
Definition: hpm_sdmmc_emmc.h:337
uint8_t tcase_support
Definition: hpm_sdmmc_emmc.h:264
uint8_t reserved06
Definition: hpm_sdmmc_emmc.h:297
uint8_t ffu_features
Definition: hpm_sdmmc_emmc.h:421
uint8_t boot_config_prot
Definition: hpm_sdmmc_emmc.h:312
uint8_t device_type
Definition: hpm_sdmmc_emmc.h:354
uint8_t partitioning_setting
Definition: hpm_sdmmc_emmc.h:271
uint8_t boot_wp
Definition: hpm_sdmmc_emmc.h:294
uint8_t max_packed_reads
Definition: hpm_sdmmc_emmc.h:430
uint8_t bkops_status
Definition: hpm_sdmmc_emmc.h:399
uint8_t sleep_notification_timeout
Definition: hpm_sdmmc_emmc.h:371
uint8_t hpi_management
Definition: hpm_sdmmc_emmc.h:276
uint8_t partition_switch_timing
Definition: hpm_sdmmc_emmc.h:357
uint8_t optimal_trim_unit_size
Definition: hpm_sdmmc_emmc.h:406
uint8_t dyncap_needed
Definition: hpm_sdmmc_emmc.h:254
uint8_t trim_mult
Definition: hpm_sdmmc_emmc.h:388
uint8_t sleep_current_vccq
Definition: hpm_sdmmc_emmc.h:374
uint8_t erased_mem_content
Definition: hpm_sdmmc_emmc.h:324
uint32_t number_of_correctly_programmed_fw_sectors
Definition: hpm_sdmmc_emmc.h:413
uint8_t class6_commands_control
Definition: hpm_sdmmc_emmc.h:255
uint8_t boot_partition_size_mult
Definition: hpm_sdmmc_emmc.h:382
uint8_t cmdq_support
Definition: hpm_sdmmc_emmc.h:416
uint8_t pre_eol_info
Definition: hpm_sdmmc_emmc.h:409
uint8_t min_perf_ddr_w_8_52
Definition: hpm_sdmmc_emmc.h:391
uint8_t secure_removal_type
Definition: hpm_sdmmc_emmc.h:236
uint8_t reserved17
Definition: hpm_sdmmc_emmc.h:414
uint8_t bkops_start
Definition: hpm_sdmmc_emmc.h:278
uint8_t production_state_awareness
Definition: hpm_sdmmc_emmc.h:265
uint8_t secure_feature_support
Definition: hpm_sdmmc_emmc.h:387
uint8_t reserved03
Definition: hpm_sdmmc_emmc.h:267
uint8_t min_perf_r_4_26
Definition: hpm_sdmmc_emmc.h:363
uint8_t ffu_status
Definition: hpm_sdmmc_emmc.h:240
uint8_t reserved14
Definition: hpm_sdmmc_emmc.h:362
uint8_t boot_bus_conditions
Definition: hpm_sdmmc_emmc.h:308
uint8_t out_of_interrupt_timing
Definition: hpm_sdmmc_emmc.h:356
uint8_t data_tag_support
Definition: hpm_sdmmc_emmc.h:428
uint8_t boot_info
Definition: hpm_sdmmc_emmc.h:384
uint8_t supported_modes
Definition: hpm_sdmmc_emmc.h:422
uint8_t data_sector_size
Definition: hpm_sdmmc_emmc.h:257
uint8_t sleep_or_awake_timeout
Definition: hpm_sdmmc_emmc.h:372
uint8_t operation_code_timeout
Definition: hpm_sdmmc_emmc.h:420
uint8_t strobe_support
Definition: hpm_sdmmc_emmc.h:331
uint8_t cache_control
Definition: hpm_sdmmc_emmc.h:246
uint32_t cache_size
Definition: hpm_sdmmc_emmc.h:402
uint8_t cmdq_depth
Definition: hpm_sdmmc_emmc.h:415
uint8_t pwr_cl_ddr_52_360
Definition: hpm_sdmmc_emmc.h:395
uint8_t hpi_features
Definition: hpm_sdmmc_emmc.h:432
uint32_t number_of_correctly_programmed_sectors
Definition: hpm_sdmmc_emmc.h:398
uint8_t boot_wp_status
Definition: hpm_sdmmc_emmc.h:295
uint8_t program_cid_or_csd_in_ddr_mode_supported
Definition: hpm_sdmmc_emmc.h:262
uint8_t barrier_support
Definition: hpm_sdmmc_emmc.h:418
uint8_t native_sector_size
Definition: hpm_sdmmc_emmc.h:259
uint8_t cache_flush_policy
Definition: hpm_sdmmc_emmc.h:396
uint8_t secure_wp_info
Definition: hpm_sdmmc_emmc.h:369
uint8_t bus_width
Definition: hpm_sdmmc_emmc.h:330
uint8_t reliable_write_sector_count
Definition: hpm_sdmmc_emmc.h:378
uint8_t pwr_cl_26_195
Definition: hpm_sdmmc_emmc.h:359
uint8_t pwr_cl_26_360
Definition: hpm_sdmmc_emmc.h:361
uint8_t partitioning_attribute
Definition: hpm_sdmmc_emmc.h:272
uint8_t tag_unit_size
Definition: hpm_sdmmc_emmc.h:427
uint8_t write_reliability_setting
Definition: hpm_sdmmc_emmc.h:281
uint8_t tag_resource_size
Definition: hpm_sdmmc_emmc.h:426
uint8_t partitioning_support
Definition: hpm_sdmmc_emmc.h:274
uint8_t ext_csd_rev
Definition: hpm_sdmmc_emmc.h:345
uint8_t pwr_cl_200_130
Definition: hpm_sdmmc_emmc.h:392
uint8_t hs_timing
Definition: hpm_sdmmc_emmc.h:335
uint8_t sanitize_start
Definition: hpm_sdmmc_emmc.h:279
uint8_t high_capacity_write_protect_group_size
Definition: hpm_sdmmc_emmc.h:377
uint8_t supported_cmd_sets
Definition: hpm_sdmmc_emmc.h:433
uint8_t reserved15
Definition: hpm_sdmmc_emmc.h:383
uint8_t pwr_cl_ddr_52_195
Definition: hpm_sdmmc_emmc.h:394
uint8_t command_queue_mode_enable
Definition: hpm_sdmmc_emmc.h:235
uint8_t optimal_read_size
Definition: hpm_sdmmc_emmc.h:408
uint8_t power_off_long_timeout
Definition: hpm_sdmmc_emmc.h:400
uint8_t reserved05
Definition: hpm_sdmmc_emmc.h:289
uint8_t min_perf_r_8_26_4_52
Definition: hpm_sdmmc_emmc.h:365
uint8_t pwr_cl_ddr_200_360
Definition: hpm_sdmmc_emmc.h:403
uint8_t context_capabilities
Definition: hpm_sdmmc_emmc.h:425
uint8_t device_lifetime_estimation_type_b
Definition: hpm_sdmmc_emmc.h:411
uint8_t flush_cache
Definition: hpm_sdmmc_emmc.h:245
uint8_t pwr_cl_200_195
Definition: hpm_sdmmc_emmc.h:393
uint8_t min_perf_ddr_r_8_52
Definition: hpm_sdmmc_emmc.h:390
uint8_t sleep_current_vcc
Definition: hpm_sdmmc_emmc.h:375
uint8_t optimal_write_size
Definition: hpm_sdmmc_emmc.h:407
uint8_t reserved10
Definition: hpm_sdmmc_emmc.h:338
uint8_t init_timeout_after_partitioning
Definition: hpm_sdmmc_emmc.h:397
uint8_t extended_partitions_attribute_support
Definition: hpm_sdmmc_emmc.h:423
uint8_t partition_config
Definition: hpm_sdmmc_emmc.h:322
uint8_t reserved04
Definition: hpm_sdmmc_emmc.h:284
uint8_t generic_cmd6_timeout
Definition: hpm_sdmmc_emmc.h:401
uint8_t cmd_set_revision
Definition: hpm_sdmmc_emmc.h:339
uint8_t mode_operation_codes
Definition: hpm_sdmmc_emmc.h:242
uint8_t pwr_cl_52_360
Definition: hpm_sdmmc_emmc.h:360
uint8_t reserved11
Definition: hpm_sdmmc_emmc.h:340
uint8_t reserved13
Definition: hpm_sdmmc_emmc.h:348
uint8_t rpmb_size
Definition: hpm_sdmmc_emmc.h:282
uint8_t large_unit_size
Definition: hpm_sdmmc_emmc.h:424
uint8_t min_perf_w_8_52
Definition: hpm_sdmmc_emmc.h:368
uint8_t min_perf_w_8_26_4_52
Definition: hpm_sdmmc_emmc.h:366
uint8_t user_wp
Definition: hpm_sdmmc_emmc.h:288
uint8_t reserved09
Definition: hpm_sdmmc_emmc.h:336
uint8_t hw_reset_function
Definition: hpm_sdmmc_emmc.h:275
uint8_t extended_security_error
Definition: hpm_sdmmc_emmc.h:434
uint8_t bad_block_management_mode
Definition: hpm_sdmmc_emmc.h:266
uint8_t init_timeout_after_disabling_emulation
Definition: hpm_sdmmc_emmc.h:256
uint8_t product_state_awareness_enablement
Definition: hpm_sdmmc_emmc.h:237
uint8_t reserved08
Definition: hpm_sdmmc_emmc.h:325
uint8_t barrier_control
Definition: hpm_sdmmc_emmc.h:244
uint8_t fw_config
Definition: hpm_sdmmc_emmc.h:283
uint8_t reserved16
Definition: hpm_sdmmc_emmc.h:389
uint8_t write_reliability_parameter
Definition: hpm_sdmmc_emmc.h:280
uint8_t reserved12
Definition: hpm_sdmmc_emmc.h:346
uint32_t sector_count
Definition: hpm_sdmmc_emmc.h:370
uint8_t bkops_en
Definition: hpm_sdmmc_emmc.h:277
uint8_t min_perf_r_8_52
Definition: hpm_sdmmc_emmc.h:367
Definition: hpm_sdmmc_host.h:180
Definition: hpm_sdmmc_emmc.h:520
bool is_secure_insecure_trim_supported
Definition: hpm_sdmmc_emmc.h:523
bool is_secure_sanitize_supported
Definition: hpm_sdmmc_emmc.h:524
bool is_secure_bad_block_management_supported
Definition: hpm_sdmmc_emmc.h:522
bool is_secure_erase_supported
Definition: hpm_sdmmc_emmc.h:521
Definition: hpm_sdmmc_emmc.h:96
uint32_t app_cmd
Definition: hpm_sdmmc_emmc.h:99
uint32_t device_ecc_failed
Definition: hpm_sdmmc_emmc.h:111
uint32_t lock_unlock_failed
Definition: hpm_sdmmc_emmc.h:114
uint32_t com_crc_err
Definition: hpm_sdmmc_emmc.h:113
uint32_t erase_param
Definition: hpm_sdmmc_emmc.h:117
uint32_t erase_reset
Definition: hpm_sdmmc_emmc.h:104
uint32_t address_error
Definition: hpm_sdmmc_emmc.h:120
uint32_t block_len_error
Definition: hpm_sdmmc_emmc.h:119
uint32_t cc_error
Definition: hpm_sdmmc_emmc.h:110
uint32_t illegal_command
Definition: hpm_sdmmc_emmc.h:112
uint32_t wp_violation
Definition: hpm_sdmmc_emmc.h:116
uint32_t current_state
Definition: hpm_sdmmc_emmc.h:103
uint32_t error
Definition: hpm_sdmmc_emmc.h:109
uint32_t card_status
Definition: hpm_sdmmc_emmc.h:123
uint32_t device_is_locked
Definition: hpm_sdmmc_emmc.h:115
uint32_t out_of_range
Definition: hpm_sdmmc_emmc.h:121
uint32_t ready_for_data
Definition: hpm_sdmmc_emmc.h:102
uint32_t exception_event
Definition: hpm_sdmmc_emmc.h:100
uint32_t wp_erase_skip
Definition: hpm_sdmmc_emmc.h:106
uint32_t cid_or_csd_overwrite
Definition: hpm_sdmmc_emmc.h:107
uint32_t erase_seq_error
Definition: hpm_sdmmc_emmc.h:118
uint32_t switch_error
Definition: hpm_sdmmc_emmc.h:101
Definition: hpm_sdmmc_emmc.h:79
uint8_t oid
Definition: hpm_sdmmc_emmc.h:86
uint8_t mdt
Definition: hpm_sdmmc_emmc.h:82
uint8_t bin
Definition: hpm_sdmmc_emmc.h:89
uint8_t cbx
Definition: hpm_sdmmc_emmc.h:88
uint8_t prv
Definition: hpm_sdmmc_emmc.h:84
uint8_t mid
Definition: hpm_sdmmc_emmc.h:91
uint8_t reserved
Definition: hpm_sdmmc_emmc.h:81
Definition: hpm_sdmmc_emmc.h:214
uint8_t support_high_speed_ddr_at_52mhz_1v8_or_3v
Definition: hpm_sdmmc_emmc.h:219
uint8_t support_hs400_at_200mhz_1v2
Definition: hpm_sdmmc_emmc.h:224
uint8_t support_hs200_at_200mhz_1v8
Definition: hpm_sdmmc_emmc.h:221
uint8_t support_high_speed_sdr_at_52mhz
Definition: hpm_sdmmc_emmc.h:218
uint8_t support_hs400_at_200mhz_1v8
Definition: hpm_sdmmc_emmc.h:223
uint8_t device_type
Definition: hpm_sdmmc_emmc.h:215
uint8_t support_hs200_at_200mhz_1v2
Definition: hpm_sdmmc_emmc.h:222
uint8_t support_high_speed_sdr_at_26mhz
Definition: hpm_sdmmc_emmc.h:217
uint8_t support_high_speed_ddr_at_52mhz_1v2
Definition: hpm_sdmmc_emmc.h:220
Definition: hpm_sdmmc_emmc.h:66
uint32_t ocr_word
Definition: hpm_sdmmc_emmc.h:76
uint32_t voltage_270_360
Definition: hpm_sdmmc_emmc.h:71
uint32_t powerup_status
Definition: hpm_sdmmc_emmc.h:74
uint32_t voltage_200_260
Definition: hpm_sdmmc_emmc.h:70
uint32_t access_mode
Definition: hpm_sdmmc_emmc.h:73
uint32_t voltage_170_195
Definition: hpm_sdmmc_emmc.h:69
Definition: hpm_sdmmc_emmc.h:494
emmc_power_class_3v6_t power_class_3v6
Definition: hpm_sdmmc_emmc.h:495
emmc_power_class_1v95_t power_class_1v95
Definition: hpm_sdmmc_emmc.h:496
Definition: hpm_sdmmc_emmc.h:21
uint8_t cmd_set
Definition: hpm_sdmmc_emmc.h:23
uint32_t argument
Definition: hpm_sdmmc_emmc.h:28
uint8_t index
Definition: hpm_sdmmc_emmc.h:25
uint8_t access
Definition: hpm_sdmmc_emmc.h:26
uint8_t value
Definition: hpm_sdmmc_emmc.h:24