18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Header for MultiMediaCard (MMC) 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright 2002 Hewlett-Packard Company 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Use consistent with the GNU GPL is permitted, 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * provided that this copyright notice is 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * preserved in its entirety in all copies and derived works. 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * HEWLETT-PACKARD COMPANY MAKES NO WARRANTIES, EXPRESSED OR IMPLIED, 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * AS TO THE USEFULNESS OR CORRECTNESS OF THIS CODE OR ITS 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * FITNESS FOR ANY PARTICULAR PURPOSE. 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Many thanks to Alessandro Rubini and Jonathan Corbet! 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Based strongly on code by: 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Author: Yong-iL Joh <tolkien@mizi.com> 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Date : $Date: 2002/06/18 12:37:30 $ 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Author: Andrew Christian 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 15 May 2002 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef MMC_MMC_H 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_MMC_H 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Standard MMC commands (4.1) type argument response */ 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* class 1 */ 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_GO_IDLE_STATE 0 /* bc */ 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SEND_OP_COND 1 /* bcr [31:0] OCR R3 */ 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_ALL_SEND_CID 2 /* bcr R2 */ 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SET_RELATIVE_ADDR 3 /* ac [31:16] RCA R1 */ 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SET_DSR 4 /* bc [31:16] RCA */ 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SWITCH 6 /* ac [31:0] See below R1b */ 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SELECT_CARD 7 /* ac [31:16] RCA R1 */ 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SEND_EXT_CSD 8 /* adtc R1 */ 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SEND_CSD 9 /* ac [31:16] RCA R2 */ 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SEND_CID 10 /* ac [31:16] RCA R2 */ 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_READ_DAT_UNTIL_STOP 11 /* adtc [31:0] dadr R1 */ 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_STOP_TRANSMISSION 12 /* ac R1b */ 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SEND_STATUS 13 /* ac [31:16] RCA R1 */ 438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_GO_INACTIVE_STATE 15 /* ac [31:16] RCA */ 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* class 2 */ 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SET_BLOCKLEN 16 /* ac [31:0] block len R1 */ 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_READ_SINGLE_BLOCK 17 /* adtc [31:0] data addr R1 */ 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_READ_MULTIPLE_BLOCK 18 /* adtc [31:0] data addr R1 */ 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* class 3 */ 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_WRITE_DAT_UNTIL_STOP 20 /* adtc [31:0] data addr R1 */ 528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* class 4 */ 548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SET_BLOCK_COUNT 23 /* adtc [31:0] data addr R1 */ 558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_WRITE_BLOCK 24 /* adtc [31:0] data addr R1 */ 568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_WRITE_MULTIPLE_BLOCK 25 /* adtc R1 */ 578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_PROGRAM_CID 26 /* adtc R1 */ 588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_PROGRAM_CSD 27 /* adtc R1 */ 598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* class 6 */ 618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SET_WRITE_PROT 28 /* ac [31:0] data addr R1b */ 628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_CLR_WRITE_PROT 29 /* ac [31:0] data addr R1b */ 638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SEND_WRITE_PROT 30 /* adtc [31:0] wpdata addr R1 */ 648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* class 5 */ 668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_ERASE_GROUP_START 35 /* ac [31:0] data addr R1 */ 678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_ERASE_GROUP_END 36 /* ac [31:0] data addr R1 */ 688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_ERASE 38 /* ac R1b */ 698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* class 9 */ 718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_FAST_IO 39 /* ac <Complex> R4 */ 728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_GO_IRQ_STATE 40 /* bcr R5 */ 738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* class 7 */ 758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_LOCK_UNLOCK 42 /* adtc R1b */ 768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* class 8 */ 788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_APP_CMD 55 /* ac [31:16] RCA R1 */ 798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_GEN_CMD 56 /* adtc [0] RD/WR R1 */ 808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * MMC_SWITCH argument format: 838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * [31:26] Always 0 858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * [25:24] Access Mode 868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * [23:16] Location of target Byte in EXT_CSD 878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * [15:08] Value Byte 888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * [07:03] Always 0 898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * [02:00] Command Set 908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project MMC status in R1 948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project Type 958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project e : error bit 968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project s : status bit 978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project r : detected and set for the actual command response 988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project x : detected and set during command execution. the host must poll 998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project the card by sending status command in order to read these bits. 1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project Clear condition 1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project a : according to the card state 1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project b : always related to the previous command. Reception of 1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project a valid command will clear it (with a delay of one command) 1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project c : clear by read 1058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_OUT_OF_RANGE (1 << 31) /* er, c */ 1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_ADDRESS_ERROR (1 << 30) /* erx, c */ 1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_BLOCK_LEN_ERROR (1 << 29) /* er, c */ 1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_ERASE_SEQ_ERROR (1 << 28) /* er, c */ 1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_ERASE_PARAM (1 << 27) /* ex, c */ 1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_WP_VIOLATION (1 << 26) /* erx, c */ 1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_CARD_IS_LOCKED (1 << 25) /* sx, a */ 1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_LOCK_UNLOCK_FAILED (1 << 24) /* erx, c */ 1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_COM_CRC_ERROR (1 << 23) /* er, b */ 1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_ILLEGAL_COMMAND (1 << 22) /* er, b */ 1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_CARD_ECC_FAILED (1 << 21) /* ex, c */ 1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_CC_ERROR (1 << 20) /* erx, c */ 1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_ERROR (1 << 19) /* erx, c */ 1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_UNDERRUN (1 << 18) /* ex, c */ 1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_OVERRUN (1 << 17) /* ex, c */ 1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_CID_CSD_OVERWRITE (1 << 16) /* erx, c, CID/CSD overwrite */ 1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_WP_ERASE_SKIP (1 << 15) /* sx, c */ 1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_CARD_ECC_DISABLED (1 << 14) /* sx, a */ 1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_ERASE_RESET (1 << 13) /* sr, c */ 1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_STATUS(x) (x & 0xFFFFE000) 1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_CURRENT_STATE(x) ((x & 0x00001E00) >> 9) /* sx, b (4 bits) */ 1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_READY_FOR_DATA (1 << 8) /* sx, a */ 1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define R1_APP_CMD (1 << 5) /* sr, c */ 1308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * OCR bits are mostly in host.h 1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_CARD_BUSY 0x80000000 /* Card Power up status bit */ 1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Card Command Classes (CCC) 1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CCC_BASIC (1<<0) /* (0) Basic protocol functions */ 1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* (CMD0,1,2,3,4,7,9,10,12,13,15) */ 1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CCC_STREAM_READ (1<<1) /* (1) Stream read commands */ 1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* (CMD11) */ 1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CCC_BLOCK_READ (1<<2) /* (2) Block read commands */ 1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* (CMD16,17,18) */ 1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CCC_STREAM_WRITE (1<<3) /* (3) Stream write commands */ 1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* (CMD20) */ 1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CCC_BLOCK_WRITE (1<<4) /* (4) Block write commands */ 1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* (CMD16,24,25,26,27) */ 1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CCC_ERASE (1<<5) /* (5) Ability to erase blocks */ 1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* (CMD32,33,34,35,36,37,38,39) */ 1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CCC_WRITE_PROT (1<<6) /* (6) Able to write protect blocks */ 1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* (CMD28,29,30) */ 1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CCC_LOCK_CARD (1<<7) /* (7) Able to lock down card */ 1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* (CMD16,CMD42) */ 1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CCC_APP_SPEC (1<<8) /* (8) Application specific */ 1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* (CMD55,56,57,ACMD*) */ 1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CCC_IO_MODE (1<<9) /* (9) I/O mode */ 1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* (CMD5,39,40,52,53) */ 1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CCC_SWITCH (1<<10) /* (10) High speed switch */ 1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* (CMD6,34,35,36,37,50) */ 1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* (11) Reserved */ 1638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* (CMD?) */ 1648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 1668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * CSD field definitions 1678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CSD_STRUCT_VER_1_0 0 /* Valid for system specification 1.0 - 1.2 */ 1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CSD_STRUCT_VER_1_1 1 /* Valid for system specification 1.4 - 2.2 */ 1718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CSD_STRUCT_VER_1_2 2 /* Valid for system specification 3.1 - 3.2 - 3.31 - 4.0 - 4.1 */ 1728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CSD_STRUCT_EXT_CSD 3 /* Version is coded in CSD_STRUCTURE in EXT_CSD */ 1738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CSD_SPEC_VER_0 0 /* Implements system specification 1.0 - 1.2 */ 1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CSD_SPEC_VER_1 1 /* Implements system specification 1.4 */ 1768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CSD_SPEC_VER_2 2 /* Implements system specification 2.0 - 2.2 */ 1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CSD_SPEC_VER_3 3 /* Implements system specification 3.1 - 3.2 - 3.31 */ 1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CSD_SPEC_VER_4 4 /* Implements system specification 4.0 - 4.1 */ 1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 1818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * EXT_CSD fields 1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXT_CSD_BUS_WIDTH 183 /* R/W */ 1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXT_CSD_HS_TIMING 185 /* R/W */ 1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXT_CSD_CARD_TYPE 196 /* RO */ 1878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ 1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * EXT_CSD field definitions 1918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXT_CSD_CMD_SET_NORMAL (1<<0) 1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXT_CSD_CMD_SET_SECURE (1<<1) 1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXT_CSD_CMD_SET_CPSECURE (1<<2) 1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXT_CSD_CARD_TYPE_26 (1<<0) /* Card can run at 26MHz */ 1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXT_CSD_CARD_TYPE_52 (1<<1) /* Card can run at 52MHz */ 1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXT_CSD_BUS_WIDTH_1 0 /* Card is in 1 bit mode */ 2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXT_CSD_BUS_WIDTH_4 1 /* Card is in 4 bit mode */ 2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXT_CSD_BUS_WIDTH_8 2 /* Card is in 8 bit mode */ 2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * MMC_SWITCH access modes 2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SWITCH_MODE_CMD_SET 0x00 /* Change the command set */ 2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SWITCH_MODE_SET_BITS 0x01 /* Set bits which are 1 in value */ 2108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SWITCH_MODE_CLEAR_BITS 0x02 /* Clear bits which are 1 in value */ 2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMC_SWITCH_MODE_WRITE_BYTE 0x03 /* Set target to value */ 2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* MMC_MMC_PROTOCOL_H */ 2148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 215