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