blob: 936c75caceb236c2f527d9356cd39cb50cb2743b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
/*
* SD/MMC cards common
*
* Copyright (c) 2018 Philippe Mathieu-Daudé <f4bug@amsat.org>
*
* This work is licensed under the terms of the GNU GPL, version 2 or later.
* See the COPYING file in the top-level directory.
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef SDMMC_INTERNAL_H
#define SDMMC_INTERNAL_H
/*
* EXT_CSD Modes segment
*
* Define the configuration the Device is working in.
* These modes can be changed by the host by means of the SWITCH command.
*/
#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_CLASS_6_CTRL 59
#define EXT_CSD_INI_TIMEOUT_EMU 60
#define EXT_CSD_DATA_SECTOR_SIZE 61 /* R */
#define EXT_CSD_USE_NATIVE_SECTOR 62
#define EXT_CSD_NATIVE_SECTOR_SIZE 63
#define EXT_CSD_VENDOR_SPECIFIC_FIELD 64 /* 64 bytes */
#define EXT_CSD_PROGRAM_CID_CSD_DDR_SUPPORT 130
#define EXT_CSD_PERIODIC_WAKEUP 131
#define EXT_CSD_TCASE_SUPPORT 132
#define EXT_CSD_SEC_BAD_BLK_MGMNT 134
#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_MAX_ENH_SIZE_MULT 157 /* RO, 3 bytes */
#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_WR_REL_SET 167
#define EXT_CSD_RPMB_MULT 168 /* RO */
#define EXT_CSD_FW_CONFIG 169 /* R/W */
#define EXT_CSD_USER_WP 171
#define EXT_CSD_BOOT_WP 173 /* R/W */
#define EXT_CSD_BOOT_WP_STATUS 174
#define EXT_CSD_ERASE_GROUP_DEF 175 /* R/W */
#define EXT_CSD_BOOT_BUS_CONDITIONS 177
#define EXT_CSD_BOOT_CONFIG_PROT 178
#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_CMD_SET_REV 189
#define EXT_CSD_CMD_SET 191
/*
* EXT_CSD Properties segment
*
* Define the Device capabilities, cannot be modified by the host.
*/
#define EXT_CSD_REV 192
#define EXT_CSD_STRUCTURE 194
#define EXT_CSD_CARD_TYPE 196
#define EXT_CSD_DRIVER_STRENGTH 197
#define EXT_CSD_OUT_OF_INTERRUPT_TIME 198
#define EXT_CSD_PART_SWITCH_TIME 199
#define EXT_CSD_PWR_CL_52_195 200
#define EXT_CSD_PWR_CL_26_195 201
#define EXT_CSD_PWR_CL_52_360 202
#define EXT_CSD_PWR_CL_26_360 203
#define EXT_CSD_SEC_CNT 212 /* 4 bytes */
#define EXT_CSD_S_A_TIMEOUT 217
#define EXT_CSD_S_C_VCCQ 219
#define EXT_CSD_S_C_VCC 220
#define EXT_CSD_REL_WR_SEC_C 222
#define EXT_CSD_HC_WP_GRP_SIZE 221
#define EXT_CSD_ERASE_TIMEOUT_MULT 223
#define EXT_CSD_HC_ERASE_GRP_SIZE 224
#define EXT_CSD_ACC_SIZE 225
#define EXT_CSD_BOOT_MULT 226
#define EXT_CSD_BOOT_INFO 228
#define EXT_CSD_SEC_FEATURE_SUPPORT 231
#define EXT_CSD_TRIM_MULT 232
#define EXT_CSD_INI_TIMEOUT_PA 241
#define EXT_CSD_BKOPS_STATUS 246
#define EXT_CSD_POWER_OFF_LONG_TIME 247
#define EXT_CSD_GENERIC_CMD6_TIME 248
#define EXT_CSD_CACHE_SIZE 249 /* 4 bytes */
#define EXT_CSD_EXT_SUPPORT 494
#define EXT_CSD_LARGE_UNIT_SIZE_M1 495
#define EXT_CSD_CONTEXT_CAPABILITIES 496
#define EXT_CSD_TAG_RES_SIZE 497
#define EXT_CSD_TAG_UNIT_SIZE 498
#define EXT_CSD_DATA_TAG_SUPPORT 499
#define EXT_CSD_MAX_PACKED_WRITES 500
#define EXT_CSD_MAX_PACKED_READS 501
#define EXT_CSD_BKOPS_SUPPORT 502
#define EXT_CSD_HPI_FEATURES 503
#define EXT_CSD_S_CMD_SET 504
#define EXT_CSD_WR_REL_PARAM_EN (1 << 2)
#define EXT_CSD_WR_REL_PARAM_EN_RPMB_REL_WR (1 << 4)
#define EXT_CSD_PART_CONFIG_ACC_MASK (0x7)
#define EXT_CSD_PART_CONFIG_ACC_DEFAULT (0x0)
#define EXT_CSD_PART_CONFIG_ACC_BOOT0 (0x1)
#define EXT_CSD_PART_CONFIG_EN_MASK (0x7 << 3)
#define EXT_CSD_PART_CONFIG_EN_BOOT0 (0x1 << 3)
#define EXT_CSD_PART_CONFIG_EN_USER (0x7 << 3)
#define SDMMC_CMD_MAX 64
/**
* sd_cmd_name:
* @cmd: A SD "normal" command, up to SDMMC_CMD_MAX.
*
* Returns a human-readable name describing the command.
* The return value is always a static string which does not need
* to be freed after use.
*
* Returns: The command name of @cmd or "UNKNOWN_CMD".
*/
const char *sd_cmd_name(uint8_t cmd);
/**
* sd_acmd_name:
* @cmd: A SD "Application-Specific" command, up to SDMMC_CMD_MAX.
*
* Returns a human-readable name describing the application command.
* The return value is always a static string which does not need
* to be freed after use.
*
* Returns: The application command name of @cmd or "UNKNOWN_ACMD".
*/
const char *sd_acmd_name(uint8_t cmd);
#endif
|