3 Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved
5 This program and the accompanying materials are licensed and made available under
6 the terms and conditions of the BSD License that accompanies this distribution.
7 The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php.
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
24 Header file for Industry SD Card 2.0 spec.
35 #define CHECK_PATTERN 0xAA
45 #define SWITCH_FUNC CMD6
46 #define SEND_IF_COND CMD8
49 #define SET_BUS_WIDTH ACMD6
50 #define SD_STATUS ACMD13
51 #define SET_WR_BLK_ERASE_COUNT ACMD23
52 #define SD_SEND_OP_COND ACMD41
53 #define SET_CLR_CARD_DETECT ACMD42
54 #define SEND_SCR ACMD51
58 #define SD_BUS_WIDTH_1 0
59 #define SD_BUS_WIDTH_4 2
63 #define FREQUENCY_SD_PP (25 * 1000 * 1000)
64 #define FREQUENCY_SD_PP_HIGH (50 * 1000 * 1000)
72 #define VOLTAGE_27_36 0x1
75 UINT8 NotUsed
: 1; // 1 [0:0]
76 UINT8 CRC
: 7; // CRC [7:1]
77 UINT8 ECC
: 2; // ECC code [9:8]
78 UINT8 FILE_FORMAT
: 2; // File format [11:10]
79 UINT8 TMP_WRITE_PROTECT
: 1; // Temporary write protection [12:12]
80 UINT8 PERM_WRITE_PROTECT
: 1; // Permanent write protection [13:13]
81 UINT8 COPY
: 1; // Copy flag (OTP) [14:14]
82 UINT8 FILE_FORMAT_GRP
: 1; // File format group [15:15]
83 UINT16 Reserved0
: 5; // 0 [20:16]
84 UINT16 WRITE_BL_PARTIAL
: 1; // Partial blocks for write allowed [21:21]
85 UINT16 WRITE_BL_LEN
: 4; // Max. write data block length [25:22]
86 UINT16 R2W_FACTOR
: 3; // Write speed factor [28:26]
87 UINT16 DEFAULT_ECC
: 2; // Manufacturer default ECC [30:29]
88 UINT16 WP_GRP_ENABLE
: 1; // Write protect group enable [31:31]
89 UINT16 WP_GRP_SIZE
: 7; // Write protect group size [38:32]
90 UINT16 SECTOR_SIZE
: 7; // Erase sector size [45:39]
91 UINT16 ERASE_BLK_EN
: 1; // Erase single block enable [46:46]
92 UINT16 Reserved1
: 1; // 0 [47:47]
94 UINT32 C_SIZE
: 22; // Device size [69:48]
95 UINT32 Reserved2
: 6; // 0 [75:70]
96 UINT32 DSR_IMP
: 1; // DSR implemented [76:76]
97 UINT32 READ_BLK_MISALIGN
: 1; // Read block misalignment [77:77]
98 UINT32 WRITE_BLK_MISALIGN
: 1; // Write block misalignment [78:78]
99 UINT32 READ_BL_PARTIAL
: 1; // Partial blocks for read allowed [79:79]
101 UINT16 READ_BL_LEN
: 4; // Max. read data block length [83:80]
102 UINT16 CCC
: 12; // Card command classes [95:84]
103 UINT8 TRAN_SPEED
; // Max. bus clock frequency [103:96]
104 UINT8 NSAC
; // Data read access-time 2 in CLK cycles (NSAC*100) [111:104]
105 UINT8 TAAC
; // Data read access-time 1 [119:112]
106 UINT8 Reserved3
: 6; // 0 [125:120]
107 UINT8 CSD_STRUCTURE
: 2; // CSD structure [127:126]
112 UINT32 Reserved1
: 16;
113 UINT32 SD_BUS_WIDTH
: 4;
114 UINT32 SD_SECURITY
: 3;
115 UINT32 DATA_STAT_AFTER_ERASE
: 1;
117 UINT32 SCR_STRUCT
: 4;
123 UINT8 ERASE_OFFSET
: 2;
124 UINT8 ERASE_TIMEOUT
: 6;
128 UINT8 PERFORMANCE_MOVE
;
130 UINT32 SIZE_OF_PROTECTED_AREA
;
131 UINT32 SD_CARD_TYPE
: 16;
132 UINT32 Reserved2
: 13;
133 UINT32 SECURED_MODE
: 1;
134 UINT32 DAT_BUS_WIDTH
: 2;
141 UINT16 Group1BusyStatus
;
142 UINT16 Group2BusyStatus
;
143 UINT16 Group3BusyStatus
;
144 UINT16 Group4BusyStatus
;
145 UINT16 Group5BusyStatus
;
146 UINT16 Group6BusyStatus
;
147 UINT8 DataStructureVersion
;
151 UINT16 Group1Function
;
152 UINT16 Group2Function
;
153 UINT16 Group3Function
;
154 UINT16 Group4Function
;
155 UINT16 Group5Function
;
156 UINT16 Group6Function
;