diff options
Diffstat (limited to 'include/linux/mmc/mmc.h')
-rw-r--r-- | include/linux/mmc/mmc.h | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h index dd11ae51fb68..ac26a685cca8 100644 --- a/include/linux/mmc/mmc.h +++ b/include/linux/mmc/mmc.h | |||
@@ -40,7 +40,9 @@ | |||
40 | #define MMC_READ_DAT_UNTIL_STOP 11 /* adtc [31:0] dadr R1 */ | 40 | #define MMC_READ_DAT_UNTIL_STOP 11 /* adtc [31:0] dadr R1 */ |
41 | #define MMC_STOP_TRANSMISSION 12 /* ac R1b */ | 41 | #define MMC_STOP_TRANSMISSION 12 /* ac R1b */ |
42 | #define MMC_SEND_STATUS 13 /* ac [31:16] RCA R1 */ | 42 | #define MMC_SEND_STATUS 13 /* ac [31:16] RCA R1 */ |
43 | #define MMC_BUS_TEST_R 14 /* adtc R1 */ | ||
43 | #define MMC_GO_INACTIVE_STATE 15 /* ac [31:16] RCA */ | 44 | #define MMC_GO_INACTIVE_STATE 15 /* ac [31:16] RCA */ |
45 | #define MMC_BUS_TEST_W 19 /* adtc R1 */ | ||
44 | #define MMC_SPI_READ_OCR 58 /* spi spi_R3 */ | 46 | #define MMC_SPI_READ_OCR 58 /* spi spi_R3 */ |
45 | #define MMC_SPI_CRC_ON_OFF 59 /* spi [0:0] flag spi_R1 */ | 47 | #define MMC_SPI_CRC_ON_OFF 59 /* spi [0:0] flag spi_R1 */ |
46 | 48 | ||
@@ -48,6 +50,7 @@ | |||
48 | #define MMC_SET_BLOCKLEN 16 /* ac [31:0] block len R1 */ | 50 | #define MMC_SET_BLOCKLEN 16 /* ac [31:0] block len R1 */ |
49 | #define MMC_READ_SINGLE_BLOCK 17 /* adtc [31:0] data addr R1 */ | 51 | #define MMC_READ_SINGLE_BLOCK 17 /* adtc [31:0] data addr R1 */ |
50 | #define MMC_READ_MULTIPLE_BLOCK 18 /* adtc [31:0] data addr R1 */ | 52 | #define MMC_READ_MULTIPLE_BLOCK 18 /* adtc [31:0] data addr R1 */ |
53 | #define MMC_SEND_TUNING_BLOCK 19 /* adtc R1 */ | ||
51 | 54 | ||
52 | /* class 3 */ | 55 | /* class 3 */ |
53 | #define MMC_WRITE_DAT_UNTIL_STOP 20 /* adtc [31:0] data addr R1 */ | 56 | #define MMC_WRITE_DAT_UNTIL_STOP 20 /* adtc [31:0] data addr R1 */ |
@@ -80,6 +83,12 @@ | |||
80 | #define MMC_APP_CMD 55 /* ac [31:16] RCA R1 */ | 83 | #define MMC_APP_CMD 55 /* ac [31:16] RCA R1 */ |
81 | #define MMC_GEN_CMD 56 /* adtc [0] RD/WR R1 */ | 84 | #define MMC_GEN_CMD 56 /* adtc [0] RD/WR R1 */ |
82 | 85 | ||
86 | static inline bool mmc_op_multi(u32 opcode) | ||
87 | { | ||
88 | return opcode == MMC_WRITE_MULTIPLE_BLOCK || | ||
89 | opcode == MMC_READ_MULTIPLE_BLOCK; | ||
90 | } | ||
91 | |||
83 | /* | 92 | /* |
84 | * MMC_SWITCH argument format: | 93 | * MMC_SWITCH argument format: |
85 | * | 94 | * |
@@ -251,17 +260,25 @@ struct _mmc_csd { | |||
251 | * EXT_CSD fields | 260 | * EXT_CSD fields |
252 | */ | 261 | */ |
253 | 262 | ||
263 | #define EXT_CSD_PARTITION_ATTRIBUTE 156 /* R/W */ | ||
264 | #define EXT_CSD_PARTITION_SUPPORT 160 /* RO */ | ||
265 | #define EXT_CSD_WR_REL_PARAM 166 /* RO */ | ||
254 | #define EXT_CSD_ERASE_GROUP_DEF 175 /* R/W */ | 266 | #define EXT_CSD_ERASE_GROUP_DEF 175 /* R/W */ |
267 | #define EXT_CSD_PART_CONFIG 179 /* R/W */ | ||
255 | #define EXT_CSD_ERASED_MEM_CONT 181 /* RO */ | 268 | #define EXT_CSD_ERASED_MEM_CONT 181 /* RO */ |
256 | #define EXT_CSD_BUS_WIDTH 183 /* R/W */ | 269 | #define EXT_CSD_BUS_WIDTH 183 /* R/W */ |
257 | #define EXT_CSD_HS_TIMING 185 /* R/W */ | 270 | #define EXT_CSD_HS_TIMING 185 /* R/W */ |
258 | #define EXT_CSD_REV 192 /* RO */ | 271 | #define EXT_CSD_REV 192 /* RO */ |
259 | #define EXT_CSD_STRUCTURE 194 /* RO */ | 272 | #define EXT_CSD_STRUCTURE 194 /* RO */ |
260 | #define EXT_CSD_CARD_TYPE 196 /* RO */ | 273 | #define EXT_CSD_CARD_TYPE 196 /* RO */ |
274 | #define EXT_CSD_PART_SWITCH_TIME 199 /* RO */ | ||
261 | #define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ | 275 | #define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ |
262 | #define EXT_CSD_S_A_TIMEOUT 217 /* RO */ | 276 | #define EXT_CSD_S_A_TIMEOUT 217 /* RO */ |
277 | #define EXT_CSD_REL_WR_SEC_C 222 /* RO */ | ||
278 | #define EXT_CSD_HC_WP_GRP_SIZE 221 /* RO */ | ||
263 | #define EXT_CSD_ERASE_TIMEOUT_MULT 223 /* RO */ | 279 | #define EXT_CSD_ERASE_TIMEOUT_MULT 223 /* RO */ |
264 | #define EXT_CSD_HC_ERASE_GRP_SIZE 224 /* RO */ | 280 | #define EXT_CSD_HC_ERASE_GRP_SIZE 224 /* RO */ |
281 | #define EXT_CSD_BOOT_MULT 226 /* RO */ | ||
265 | #define EXT_CSD_SEC_TRIM_MULT 229 /* RO */ | 282 | #define EXT_CSD_SEC_TRIM_MULT 229 /* RO */ |
266 | #define EXT_CSD_SEC_ERASE_MULT 230 /* RO */ | 283 | #define EXT_CSD_SEC_ERASE_MULT 230 /* RO */ |
267 | #define EXT_CSD_SEC_FEATURE_SUPPORT 231 /* RO */ | 284 | #define EXT_CSD_SEC_FEATURE_SUPPORT 231 /* RO */ |
@@ -271,17 +288,31 @@ struct _mmc_csd { | |||
271 | * EXT_CSD field definitions | 288 | * EXT_CSD field definitions |
272 | */ | 289 | */ |
273 | 290 | ||
291 | #define EXT_CSD_WR_REL_PARAM_EN (1<<2) | ||
292 | |||
293 | #define EXT_CSD_PART_CONFIG_ACC_MASK (0x7) | ||
294 | #define EXT_CSD_PART_CONFIG_ACC_BOOT0 (0x1) | ||
295 | #define EXT_CSD_PART_CONFIG_ACC_BOOT1 (0x2) | ||
296 | |||
274 | #define EXT_CSD_CMD_SET_NORMAL (1<<0) | 297 | #define EXT_CSD_CMD_SET_NORMAL (1<<0) |
275 | #define EXT_CSD_CMD_SET_SECURE (1<<1) | 298 | #define EXT_CSD_CMD_SET_SECURE (1<<1) |
276 | #define EXT_CSD_CMD_SET_CPSECURE (1<<2) | 299 | #define EXT_CSD_CMD_SET_CPSECURE (1<<2) |
277 | 300 | ||
278 | #define EXT_CSD_CARD_TYPE_26 (1<<0) /* Card can run at 26MHz */ | 301 | #define EXT_CSD_CARD_TYPE_26 (1<<0) /* Card can run at 26MHz */ |
279 | #define EXT_CSD_CARD_TYPE_52 (1<<1) /* Card can run at 52MHz */ | 302 | #define EXT_CSD_CARD_TYPE_52 (1<<1) /* Card can run at 52MHz */ |
280 | #define EXT_CSD_CARD_TYPE_MASK 0x3 /* Mask out reserved and DDR bits */ | 303 | #define EXT_CSD_CARD_TYPE_MASK 0xF /* Mask out reserved bits */ |
304 | #define EXT_CSD_CARD_TYPE_DDR_1_8V (1<<2) /* Card can run at 52MHz */ | ||
305 | /* DDR mode @1.8V or 3V I/O */ | ||
306 | #define EXT_CSD_CARD_TYPE_DDR_1_2V (1<<3) /* Card can run at 52MHz */ | ||
307 | /* DDR mode @1.2V I/O */ | ||
308 | #define EXT_CSD_CARD_TYPE_DDR_52 (EXT_CSD_CARD_TYPE_DDR_1_8V \ | ||
309 | | EXT_CSD_CARD_TYPE_DDR_1_2V) | ||
281 | 310 | ||
282 | #define EXT_CSD_BUS_WIDTH_1 0 /* Card is in 1 bit mode */ | 311 | #define EXT_CSD_BUS_WIDTH_1 0 /* Card is in 1 bit mode */ |
283 | #define EXT_CSD_BUS_WIDTH_4 1 /* Card is in 4 bit mode */ | 312 | #define EXT_CSD_BUS_WIDTH_4 1 /* Card is in 4 bit mode */ |
284 | #define EXT_CSD_BUS_WIDTH_8 2 /* Card is in 8 bit mode */ | 313 | #define EXT_CSD_BUS_WIDTH_8 2 /* Card is in 8 bit mode */ |
314 | #define EXT_CSD_DDR_BUS_WIDTH_4 5 /* Card is in 4 bit DDR mode */ | ||
315 | #define EXT_CSD_DDR_BUS_WIDTH_8 6 /* Card is in 8 bit DDR mode */ | ||
285 | 316 | ||
286 | #define EXT_CSD_SEC_ER_EN BIT(0) | 317 | #define EXT_CSD_SEC_ER_EN BIT(0) |
287 | #define EXT_CSD_SEC_BD_BLK_EN BIT(2) | 318 | #define EXT_CSD_SEC_BD_BLK_EN BIT(2) |