2 ## This file is part of the sigrok project.
4 ## Copyright (C) 2015 Uwe Hermann <uwe@hermann-uwe.de>
6 ## This program is free software; you can redistribute it and/or modify
7 ## it under the terms of the GNU General Public License as published by
8 ## the Free Software Foundation; either version 2 of the License, or
9 ## (at your option) any later version.
11 ## This program is distributed in the hope that it will be useful,
12 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 ## GNU General Public License for more details.
16 ## You should have received a copy of the GNU General Public License
17 ## along with this program; if not, write to the Free Software
18 ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21 # Normal commands (CMD)
22 # Unlisted items are 'Reserved' as per SD spec. The 'Unknown' items don't
23 # seem to be mentioned in the spec, but aren't marked as reserved either.
28 3: 'SEND_RELATIVE_ADDR',
30 5: 'IO_SEND_OP_COND', # SDIO-only
31 6: 'SWITCH_FUNC', # New since spec 1.10
32 7: 'SELECT/DESELECT_CARD',
37 12: 'STOP_TRANSMISSION',
40 15: 'GO_INACTIVE_STATE',
42 17: 'READ_SINGLE_BLOCK',
43 18: 'READ_MULTIPLE_BLOCK',
44 19: 'SEND_TUNING_BLOCK',
45 20: 'SPEED_CLASS_CONTROL',
47 23: 'SET_BLOCK_COUNT',
49 25: 'WRITE_MULTIPLE_BLOCK',
50 26: 'Reserved for manufacturer',
54 30: 'SEND_WRITE_PROT',
56 32: 'ERASE_WR_BLK_START',
57 33: 'ERASE_WR_BLK_END',
58 34: 'Reserved for CMD6', # New since spec 1.10
59 35: 'Reserved for CMD6', # New since spec 1.10
60 36: 'Reserved for CMD6', # New since spec 1.10
61 37: 'Reserved for CMD6', # New since spec 1.10
64 40: 'Reserved for security specification',
68 50: 'Reserved for CMD6', # New since spec 1.10
70 52: 'IO_RW_DIRECT', # SDIO-only
71 53: 'IO_RW_EXTENDED', # SDIO-only
75 57: 'Reserved for CMD6', # New since spec 1.10
77 60: 'Reserved for manufacturer',
78 61: 'Reserved for manufacturer',
79 62: 'Reserved for manufacturer',
80 63: 'Reserved for manufacturer',
83 # Application-specific commands (ACMD)
84 # Unlisted items are 'Reserved' as per SD spec. The 'Unknown' items don't
85 # seem to be mentioned in the spec, but aren't marked as reserved either.
91 14: 'Reserved for Security Application',
92 15: 'Reserved for Security Application',
93 16: 'Reserved for Security Application',
95 18: 'Reserved for SD security applications',
97 22: 'SEND_NUM_WR_BLOCKS',
98 23: 'SET_WR_BLK_ERASE_COUNT',
100 25: 'Reserved for SD security applications',
101 26: 'Reserved for SD security applications',
102 27: 'Reserved for security specification',
103 28: 'Reserved for security specification',
105 30: 'Reserved for security specification',
106 31: 'Reserved for security specification',
107 32: 'Reserved for security specification',
108 33: 'Reserved for security specification',
109 34: 'Reserved for security specification',
110 35: 'Reserved for security specification',
112 38: 'Reserved for SD security applications',
114 41: 'SD_SEND_OP_COND',
115 42: 'SET_CLR_CARD_DETECT',
116 43: 'Reserved for SD security applications',
117 44: 'Reserved for SD security applications',
118 45: 'Reserved for SD security applications',
119 46: 'Reserved for SD security applications',
120 47: 'Reserved for SD security applications',
121 48: 'Reserved for SD security applications',
122 49: 'Reserved for SD security applications',
125 52: 'Reserved for security specification',
126 53: 'Reserved for security specification',
127 54: 'Reserved for security specification',
128 55: 'Non-existant', # Doesn't exist (equivalent to CMD55)
129 56: 'Reserved for security specification',
130 57: 'Reserved for security specification',
131 58: 'Reserved for security specification',
132 59: 'Reserved for security specification',
139 accepted_voltages = {
141 0b0010: 'reserved for low voltage range',
144 # All other values: "not defined".
148 0: 'Reserved for manufacturer test mode',
149 1: 'Reserved for manufacturer test mode',
150 2: 'Reserved for application specific commands',
152 4: 'Reserved for SDIO card',
157 9: 'CURRENT_STATE', # CURRENT_STATE is a 4-bit value (decimal: 0..15).
162 14: 'CARD_ECC_DISABLED',
165 17: 'Reserved for DEFERRED_RESPONSE', # See eSD addendum
169 21: 'CARD_ECC_FAILED',
170 22: 'ILLEGAL_COMMAND',
172 24: 'LOCK_UNLOCK_FAILED',
173 25: 'CARD_IS_LOCKED',
176 28: 'ERASE_SEQ_ERROR',
177 29: 'BLOCK_LEN_ERROR',
183 # 311:0: Reserved for manufacturer