Subversion Repositories freemyipod

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
629 theseven 1
//
2
//
3
//    Copyright 2010 TheSeven
4
//
5
//
6
//    This file is part of emCORE.
7
//
8
//    emCORE is free software: you can redistribute it and/or
9
//    modify it under the terms of the GNU General Public License as
10
//    published by the Free Software Foundation, either version 2 of the
11
//    License, or (at your option) any later version.
12
//
13
//    emCORE is distributed in the hope that it will be useful,
14
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
//    See the GNU General Public License for more details.
17
//
18
//    You should have received a copy of the GNU General Public License along
19
//    with emCORE.  If not, see <http://www.gnu.org/licenses/>.
20
//
21
//
22
 
23
 
637 theseven 24
#ifndef __CONSTANTS_MMC_H__
25
#define __CONSTANTS_MMC_H__
629 theseven 26
 
27
 
28
#include "global.h"
29
 
30
 
31
#define MMC_CMD_GO_IDLE_STATE 0
32
#define MMC_CMD_SEND_OP_COND 1
33
#define MMC_CMD_ALL_SEND_CID 2
34
#define MMC_CMD_SET_RELATIVE_ADDR 3
35
#define MMC_CMD_SET_DSR 4
36
#define MMC_CMD_SLEEP_AWAKE 5
37
#define MMC_CMD_SWITCH 6
38
#define MMC_CMD_SELECT_CARD 7
39
#define MMC_CMD_SEND_EXT_CSD 8
40
#define MMC_CMD_SEND_CSD 9
41
#define MMC_CMD_SEND_CID 10
42
#define MMC_CMD_READ_DAT_UNTIL_STOP 11
43
#define MMC_CMD_STOP_TRANSMISSION 12
44
#define MMC_CMD_SEND_STATUS 13
45
#define MMC_CMD_BUSTEST_R 14
46
#define MMC_CMD_GO_INAVTIVE_STATE 15
47
#define MMC_CMD_SET_BLOCKLEN 16
48
#define MMC_CMD_READ_SINGLE_BLOCK 17
49
#define MMC_CMD_READ_MULTIPLE_BLOCK 18
50
#define MMC_CMD_BUSTEST_W 19
51
#define MMC_CMD_WRITE_DAT_UNTIL_STOP 20
52
#define MMC_CMD_SET_BLOCK_COUNT 23
53
#define MMC_CMD_WRITE_BLOCK 24
54
#define MMC_CMD_WRITE_MULTIPLE_BLOCK 25
55
#define MMC_CMD_PROGRAM_CID 26
56
#define MMC_CMD_PROGRAM_CSD 27
57
#define MMC_CMD_SET_WRITE_PROT 28
58
#define MMC_CMD_CLR_WRITE_PROT 29
59
#define MMC_CMD_SEND_WRITE_PROT 30
60
#define MMC_CMD_ERASE_GROUP_START 35
61
#define MMC_CMD_ERASE_GROUP_END 36
62
#define MMC_CMD_ERASE 38
63
#define MMC_CMD_FAST_IO 39
64
#define MMC_CMD_GO_IRQ_STATE 40
65
#define MMC_CMD_LOCK_UNLOCK 42
66
#define MMC_CMD_APP_CMD 55
67
#define MMC_CMD_GEN_CMD 56
68
#define MMC_CMD_CEATA_RW_MULTIPLE_REG 60
69
#define MMC_CMD_CEATA_RW_MULTIPLE_BLOCK 61
70
 
71
#define MMC_CMD_SEND_OP_COND_OCR_MASK BITRANGE(0, 31)
72
#define MMC_CMD_SEND_OP_COND_OCR_SHIFT 0
73
#define MMC_CMD_SEND_OP_COND_OCR(x) (x)
74
 
75
#define MMC_CMD_SET_RELATIVE_ADDR_RCA_MASK BITRANGE(16, 31)
76
#define MMC_CMD_SET_RELATIVE_ADDR_RCA_SHIFT 16
77
#define MMC_CMD_SET_RELATIVE_ADDR_RCA(x) ((x) << 16)
78
 
79
#define MMC_CMD_SET_DSR_DSR_MASK BITRANGE(16, 31)
80
#define MMC_CMD_SET_DSR_DSR_SHIFT 16
81
#define MMC_CMD_SET_DSR_DSR(x) ((x) << 16)
82
 
83
#define MMC_CMD_SLEEP_AWAKE_SLEEP_AWAKE_MASK BIT(15)
84
#define MMC_CMD_SLEEP_AWAKE_SLEEP_AWAKE_AWAKE 0
85
#define MMC_CMD_SLEEP_AWAKE_SLEEP_AWAKE_SLEEP BIT(15)
86
#define MMC_CMD_SLEEP_AWAKE_RCA_MASK BITRANGE(16, 31)
87
#define MMC_CMD_SLEEP_AWAKE_RCA_SHIFT 16
88
#define MMC_CMD_SLEEP_AWAKE_RCA(x) ((x) << 16)
89
 
90
#define MMC_CMD_SWITCH_ACCESS_MASK BITRANGE(24, 25);
91
#define MMC_CMD_SWITCH_ACCESS_CMDSET 0
92
#define MMC_CMD_SWITCH_ACCESS_SET_BITS BIT(24)
93
#define MMC_CMD_SWITCH_ACCESS_CLEAR_BITS BIT(25)
94
#define MMC_CMD_SWITCH_ACCESS_WRITE_BYTE (BIT(24) | BIT(25))
95
#define MMC_CMD_SWTICH_INDEX_MASK BITRANGE(16, 23);
96
#define MMC_CMD_SWITCH_INDEX_SHIFT 16
97
#define MMC_CMD_SWITCH_INDEX(x) ((x) << 16)
98
#define MMC_CMD_SWTICH_VALUE_MASK BITRANGE(8, 15);
99
#define MMC_CMD_SWITCH_VALUE_SHIFT 8
100
#define MMC_CMD_SWITCH_VALUE(x) ((x) << 8)
101
#define MMC_CMD_SWTICH_CMDSET_MASK BITRANGE(0, 2);
102
#define MMC_CMD_SWITCH_CMDSET_STANDARD_MMC 0
103
 
104
#define MMC_CMD_SELECT_CARD_RCA_MASK BITRANGE(16, 31)
105
#define MMC_CMD_SELECT_CARD_RCA_SHIFT 16
106
#define MMC_CMD_SELECT_CARD_RCA(x) ((x) << 16)
107
 
108
#define MMC_CMD_SEND_CSD_RCA_MASK BITRANGE(16, 31)
109
#define MMC_CMD_SEND_CSD_RCA_SHIFT 16
110
#define MMC_CMD_SEND_CSD_RCA(x) ((x) << 16)
111
 
112
#define MMC_CMD_SEND_CID_RCA_MASK BITRANGE(16, 31)
113
#define MMC_CMD_SEND_CID_RCA_SHIFT 16
114
#define MMC_CMD_SEND_CID_RCA(x) ((x) << 16)
115
 
116
#define MMC_CMD_READ_DAT_UNTIL_STOP_ADDRESS_MASK BITRANGE(0, 31)
117
#define MMC_CMD_READ_DAT_UNTIL_STOP_ADDRESS_SHIFT 0
118
#define MMC_CMD_READ_DAT_UNTIL_STOP_ADDRESS(x) (x)
119
 
120
#define MMC_CMD_SEND_STATUS_RCA_MASK BITRANGE(16, 31)
121
#define MMC_CMD_SEND_STATUS_RCA_SHIFT 16
122
#define MMC_CMD_SEND_STATUS_RCA(x) ((x) << 16)
123
 
124
#define MMC_CMD_GO_INACTIVE_STATE_RCA_MASK BITRANGE(16, 31)
125
#define MMC_CMD_GO_INACTIVE_STATE_RCA_SHIFT 16
126
#define MMC_CMD_GO_INACTIVE_STATE_RCA(x) ((x) << 16)
127
 
128
#define MMC_CMD_SET_BLOCKLEN_LENGTH_MASK BITRANGE(0, 31)
129
#define MMC_CMD_SET_BLOCKLEN_LENGTH_SHIFT 0
130
#define MMC_CMD_SET_BLOCKLEN_LENGTH(x) (x)
131
 
132
#define MMC_CMD_READ_SINGLE_BLOCK_ADDRESS_MASK BITRANGE(0, 31)
133
#define MMC_CMD_READ_SINGLE_BLOCK_ADDRESS_SHIFT 0
134
#define MMC_CMD_READ_SINGLE_BLOCK_ADDRESS(x) (x)
135
 
136
#define MMC_CMD_READ_MULTIPLE_BLOCK_ADDRESS_MASK BITRANGE(0, 31)
137
#define MMC_CMD_READ_MULTIPLE_BLOCK_ADDRESS_SHIFT 0
138
#define MMC_CMD_READ_MULTIPLE_BLOCK_ADDRESS(x) (x)
139
 
140
#define MMC_CMD_WRITE_DAT_UNTIL_STOP_ADDRESS_MASK BITRANGE(0, 31)
141
#define MMC_CMD_WRITE_DAT_UNTIL_STOP_ADDRESS_SHIFT 0
142
#define MMC_CMD_WRITE_DAT_UNTIL_STOP_ADDRESS(x) (x)
143
 
144
#define MMC_CMD_SET_BLOCK_COUNT_RELIABLE BIT(31)
145
#define MMC_CMD_SET_BLOCK_COUNT_COUNT_MASK BITRANGE(0, 15)
146
#define MMC_CMD_SET_BLOCK_COUNT_COUNT_SHIFT 0
147
#define MMC_CMD_SET_BLOCK_COUNT_COUNT(x) (x)
148
 
149
#define MMC_CMD_WRITE_BLOCK_ADDRESS_MASK BITRANGE(0, 31)
150
#define MMC_CMD_WRITE_BLOCK_ADDRESS_SHIFT 0
151
#define MMC_CMD_WRITE_BLOCK_ADDRESS(x) (x)
152
 
153
#define MMC_CMD_WRITE_MULTIPLE_BLOCK_ADDRESS_MASK BITRANGE(0, 31)
154
#define MMC_CMD_WRITE_MULTIPLE_BLOCK_ADDRESS_SHIFT 0
155
#define MMC_CMD_WRITE_MULTIPLE_BLOCK_ADDRESS(x) (x)
156
 
157
#define MMC_CMD_SET_WRITE_PROT_ADDRESS_MASK BITRANGE(0, 31)
158
#define MMC_CMD_SET_WRITE_PROT_ADDRESS_SHIFT 0
159
#define MMC_CMD_SET_WRITE_PROT_ADDRESS(x) (x)
160
 
161
#define MMC_CMD_CLR_WRITE_PROT_ADDRESS_MASK BITRANGE(0, 31)
162
#define MMC_CMD_CLR_WRITE_PROT_ADDRESS_SHIFT 0
163
#define MMC_CMD_CLR_WRITE_PROT_ADDRESS(x) (x)
164
 
165
#define MMC_CMD_SEND_WRITE_PROT_ADDRESS_MASK BITRANGE(0, 31)
166
#define MMC_CMD_SEND_WRITE_PROT_ADDRESS_SHIFT 0
167
#define MMC_CMD_SEND_WRITE_PROT_ADDRESS(x) (x)
168
 
169
#define MMC_CMD_ERASE_GROUP_START_ADDRESS_MASK BITRANGE(0, 31)
170
#define MMC_CMD_ERASE_GROUP_START_ADDRESS_SHIFT 0
171
#define MMC_CMD_ERASE_GROUP_START_ADDRESS(x) (x)
172
 
173
#define MMC_CMD_ERASE_GROUP_END_ADDRESS_MASK BITRANGE(0, 31)
174
#define MMC_CMD_ERASE_GROUP_END_ADDRESS_SHIFT 0
175
#define MMC_CMD_ERASE_GROUP_END_ADDRESS(x) (x)
176
 
177
#define MMC_CMD_FAST_IO_RCA_MASK BITRANGE(16, 31)
178
#define MMC_CMD_FAST_IO_RCA_SHIFT 16
179
#define MMC_CMD_FAST_IO_RCA(x) ((x) << 16)
180
#define MMC_CMD_FAST_IO_DIRECTION_MASK BIT(15)
181
#define MMC_CMD_FAST_IO_DIRECTION_READ 0
182
#define MMC_CMD_FAST_IO_DIRECTION_WRITE BIT(15)
183
#define MMC_CMD_FAST_IO_ADDRESS_MASK BITRANGE(8, 14)
184
#define MMC_CMD_FAST_IO_ADDRESS_SHIFT 8
185
#define MMC_CMD_FAST_IO_ADDRESS(x) ((x) << 8)
186
#define MMC_CMD_FAST_IO_DATA_MASK BITRANGE(0, 7)
187
#define MMC_CMD_FAST_IO_DATA_SHIFT 0
188
#define MMC_CMD_FAST_IO_DATA(x) (x)
189
 
190
#define MMC_CMD_APP_CMD_RCA_MASK BITRANGE(16, 31)
191
#define MMC_CMD_APP_CMD_RCA_SHIFT 16
192
#define MMC_CMD_APP_CMD_RCA(x) ((x) << 16)
193
 
194
#define MMC_CMD_GEN_CMD_DIRECTION_MASK BIT(0)
195
#define MMC_CMD_GEN_CMD_DIRECTION_READ 0
196
#define MMC_CMD_GEN_CMD_DIRECTION_WRITE BIT(0)
197
 
198
#define MMC_CMD_CEATA_RW_MULTIPLE_REG_DIRECTION_MASK BIT(31)
199
#define MMC_CMD_CEATA_RW_MULTIPLE_REG_DIRECTION_READ 0
200
#define MMC_CMD_CEATA_RW_MULTIPLE_REG_DIRECTION_WRITE BIT(31)
201
#define MMC_CMD_CEATA_RW_MULTIPLE_REG_ADDRESS_MASK BITRANGE(16, 23)
202
#define MMC_CMD_CEATA_RW_MULTIPLE_REG_ADDRESS_SHIFT 16
203
#define MMC_CMD_CEATA_RW_MULTIPLE_REG_ADDRESS(x) ((x) << 16)
204
#define MMC_CMD_CEATA_RW_MULTIPLE_REG_COUNT_MASK BITRANGE(0, 7)
205
#define MMC_CMD_CEATA_RW_MULTIPLE_REG_COUNT_SHIFT 0
206
#define MMC_CMD_CEATA_RW_MULTIPLE_REG_COUNT(x) (x)
207
 
208
#define MMC_CMD_CEATA_RW_MULTIPLE_BLOCK_DIRECTION_MASK BIT(31)
209
#define MMC_CMD_CEATA_RW_MULTIPLE_BLOCK_DIRECTION_READ 0
210
#define MMC_CMD_CEATA_RW_MULTIPLE_BLOCK_DIRECTION_WRITE BIT(31)
211
#define MMC_CMD_CEATA_RW_MULTIPLE_BLOCK_COUNT_MASK BITRANGE(0, 15)
212
#define MMC_CMD_CEATA_RW_MULTIPLE_BLOCK_COUNT_SHIFT 0
213
#define MMC_CMD_CEATA_RW_MULTIPLE_BLOCK_COUNT(x) (x)
214
 
215
#define MMC_CMD_SWITCH_FIELD_ERASE_GROUP_DEF 175
216
#define MMC_CMD_SWITCH_FIELD_BOOT_BUS_WIDTH 177
217
#define MMC_CMD_SWITCH_FIELD_BOOT_CONFIG 179
218
#define MMC_CMD_SWITCH_FIELD_ERASED_MEM_CONT 181
219
#define MMC_CMD_SWITCH_FIELD_BUS_WIDTH 183
220
#define MMC_CMD_SWITCH_FIELD_HS_TIMING 185
221
#define MMC_CMD_SWITCH_FIELD_POWER_CLASS 187
222
#define MMC_CMD_SWITCH_FIELD_CMD_SET_REV 189
223
#define MMC_CMD_SWITCH_FIELD_CMD_SET 191
224
#define MMC_CMD_SWITCH_FIELD_EXT_CSD_REV 192
225
#define MMC_CMD_SWITCH_FIELD_CSD_STRUCTURE 194
226
#define MMC_CMD_SWITCH_FIELD_CARD_TYPE 196
227
#define MMC_CMD_SWITCH_FIELD_PWR_CL_52_195 200
228
#define MMC_CMD_SWITCH_FIELD_PWR_CL_26_195 201
229
#define MMC_CMD_SWITCH_FIELD_PWR_CL_52_360 202
230
#define MMC_CMD_SWITCH_FIELD_PWR_CL_26_360 203
231
#define MMC_CMD_SWITCH_FIELD_MIN_PERF_R_4_26 205
232
#define MMC_CMD_SWITCH_FIELD_MIN_PERF_W_4_26 206
233
#define MMC_CMD_SWITCH_FIELD_MIN_PERF_R_8_26_4_52 207
234
#define MMC_CMD_SWITCH_FIELD_MIN_PERF_W_8_26_4_52 208
235
#define MMC_CMD_SWITCH_FIELD_MIN_PERF_R_8_52 209
236
#define MMC_CMD_SWITCH_FIELD_MIN_PERF_W_8_52 210
237
#define MMC_CMD_SWITCH_FIELD_SEC_COUNT_0 212
238
#define MMC_CMD_SWITCH_FIELD_SEC_COUNT_1 213
239
#define MMC_CMD_SWITCH_FIELD_SEC_COUNT_2 214
240
#define MMC_CMD_SWITCH_FIELD_SEC_COUNT_3 215
241
#define MMC_CMD_SWITCH_FIELD_S_A_TIMEOUT 217
242
#define MMC_CMD_SWITCH_FIELD_S_C_VCCQ 219
243
#define MMC_CMD_SWITCH_FIELD_S_C_VCC 220
244
#define MMC_CMD_SWITCH_FIELD_HC_WP_GRP_SIZE 221
245
#define MMC_CMD_SWITCH_FIELD_REL_WR_SEC_C 222
246
#define MMC_CMD_SWITCH_FIELD_ERASE_TIMEOUT_MULT 223
247
#define MMC_CMD_SWITCH_FIELD_HC_ERASE_GRP_SIZE 224
248
#define MMC_CMD_SWITCH_FIELD_ACC_SIZE 225
249
#define MMC_CMD_SWITCH_FIELD_BOOT_SIZE_MULTI 226
250
#define MMC_CMD_SWITCH_FIELD_S_CMD_SET 504
251
 
252
#define MMC_CMD_SWITCH_FIELD_BUS_WIDTH_1BIT 0
253
#define MMC_CMD_SWITCH_FIELD_BUS_WIDTH_4BIT 1
254
#define MMC_CMD_SWITCH_FIELD_BUS_WIDTH_8BIT 2
255
 
256
#define MMC_CMD_SWITCH_FIELD_HS_TIMING_LOW_SPEED 0
257
#define MMC_CMD_SWITCH_FIELD_HS_TIMING_HIGH_SPEED 1
258
 
259
#define MMC_STATUS_APP_CMD BIT(5)
260
#define MMC_STATUS_SWITCH_ERROR BIT(7)
261
#define MMC_STATUS_READY_FOR_DATA BIT(8)
262
#define MMC_STATUS_CURRENT_STATE_MASK BITRANGE(9, 12)
263
#define MMC_STATUS_CURRENT_STATE_IDLE 0
264
#define MMC_STATUS_CURRENT_STATE_READY BIT(9)
265
#define MMC_STATUS_CURRENT_STATE_IDENT BIT(10)
266
#define MMC_STATUS_CURRENT_STATE_STBY (BIT(9) | BIT(10))
267
#define MMC_STATUS_CURRENT_STATE_TRAN BIT(11)
268
#define MMC_STATUS_CURRENT_STATE_DATA (BIT(9) | BIT(11))
269
#define MMC_STATUS_CURRENT_STATE_RCV (BIT(10) | BIT(11))
270
#define MMC_STATUS_CURRENT_STATE_PRG (BIT(9) | BIT(10) | BIT(11))
271
#define MMC_STATUS_CURRENT_STATE_DIS BIT(12)
272
#define MMC_STATUS_CURRENT_STATE_BTST (BIT(9) | BIT(12))
273
#define MMC_STATUS_CURRENT_STATE_SLP (BIT(10) | BIT(12))
274
#define MMC_STATUS_ERASE_RESET BIT(13)
275
#define MMC_STATUS_WP_ERASE_SKIP BIT(15)
276
#define MMC_STATUS_CID_CSD_OVERWRITE BIT(16)
277
#define MMC_STATUS_OVERRUN BIT(17)
278
#define MMC_STATUS_UNDERRUN BIT(18)
279
#define MMC_STATUS_ERROR BIT(19)
280
#define MMC_STATUS_CC_ERROR BIT(20)
281
#define MMC_STATUS_CARD_ECC_FAILED BIT(21)
282
#define MMC_STATUS_ILLEGAL_COMMAND BIT(22)
283
#define MMC_STATUS_COM_CRC_ERROR BIT(23)
284
#define MMC_STATUS_LOCK_UNLOCK_FAILED BIT(24)
285
#define MMC_STATUS_CARD_IS_LOCKED BIT(25)
286
#define MMC_STATUS_WP_VIOLATION BIT(26)
287
#define MMC_STATUS_ERASE_PARAM BIT(27)
288
#define MMC_STATUS_ERASE_SEQ_ERROR BIT(28)
289
#define MMC_STATUS_BLOCK_LEN_ERROR BIT(29)
290
#define MMC_STATUS_ADDRESS_MISALIGN BIT(30)
291
#define MMC_STATUS_ADDRESS_OUT_OF_RANGE BIT(31)
292
 
293
#define MMC_OCR_170_195 BIT(7)
294
#define MMC_OCR_200_260 BITRANGE(8, 14)
295
#define MMC_OCR_270_360 BITRANGE(15, 23)
296
#define MMC_OCR_ACCESS_MODE_MASK BITRANGE(29, 30)
297
#define MMC_OCR_ACCESS_MODE_BYTE 0
298
#define MMC_OCR_ACCESS_MODE_SECTOR BIT(30)
299
#define MMC_OCR_POWER_UP_DONE BIT(31)
300
 
301
 
302
#endif