1 /* 2 * M25P80 Serial Flash Discoverable Parameter (SFDP) 3 * 4 * Copyright (c) 2020, IBM Corporation. 5 * 6 * This code is licensed under the GPL version 2 or later. See the 7 * COPYING file in the top-level directory. 8 */ 9 10 #include "qemu/osdep.h" 11 #include "qemu/host-utils.h" 12 #include "m25p80_sfdp.h" 13 14 #define define_sfdp_read(model) \ 15 uint8_t m25p80_sfdp_##model(uint32_t addr) \ 16 { \ 17 assert(is_power_of_2(sizeof(sfdp_##model))); \ 18 return sfdp_##model[addr & (sizeof(sfdp_##model) - 1)]; \ 19 } 20 21 /* 22 * Micron 23 */ 24 static const uint8_t sfdp_n25q256a[] = { 25 0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x00, 0xff, 26 0x00, 0x00, 0x01, 0x09, 0x30, 0x00, 0x00, 0xff, 27 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 31 0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x0f, 32 0x29, 0xeb, 0x27, 0x6b, 0x08, 0x3b, 0x27, 0xbb, 33 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x27, 0xbb, 34 0xff, 0xff, 0x29, 0xeb, 0x0c, 0x20, 0x10, 0xd8, 35 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 36 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 38 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 39 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 40 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 41 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 42 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 43 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 44 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 45 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 46 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 47 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 48 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 49 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 50 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 51 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 52 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 53 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 54 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 55 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 56 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 57 }; 58 define_sfdp_read(n25q256a); 59 60 static const uint8_t sfdp_mt35xu01g[] = { 61 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff, 62 0x00, 0x06, 0x01, 0x10, 0x30, 0x00, 0x00, 0xff, 63 0x84, 0x00, 0x01, 0x02, 0x80, 0x00, 0x00, 0xff, 64 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 65 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 66 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 67 0xe5, 0x20, 0x8a, 0xff, 0xff, 0xff, 0xff, 0x3f, 68 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 69 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 70 0xff, 0xff, 0x00, 0x00, 0x0c, 0x20, 0x11, 0xd8, 71 0x0f, 0x52, 0x00, 0x00, 0x24, 0x5a, 0x99, 0x00, 72 0x8b, 0x8e, 0x03, 0xe1, 0xac, 0x01, 0x27, 0x38, 73 0x7a, 0x75, 0x7a, 0x75, 0xfb, 0xbd, 0xd5, 0x5c, 74 0x00, 0x00, 0x70, 0xff, 0x81, 0xb0, 0x38, 0x36, 75 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 76 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 77 0x43, 0x0e, 0xff, 0xff, 0x21, 0xdc, 0x5c, 0xff, 78 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 79 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 80 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 81 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 82 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 83 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 84 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 85 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 86 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 87 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 88 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 89 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 90 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 91 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 92 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 93 }; 94 95 define_sfdp_read(mt35xu01g); 96 97 static const uint8_t sfdp_mt35xu02g[] = { 98 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff, 99 0x00, 0x06, 0x01, 0x10, 0x30, 0x00, 0x00, 0xff, 100 0x84, 0x00, 0x01, 0x02, 0x80, 0x00, 0x00, 0xff, 101 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 102 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 103 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 104 0xe5, 0x20, 0x8a, 0xff, 0xff, 0xff, 0xff, 0x7f, 105 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 106 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 107 0xff, 0xff, 0x00, 0x00, 0x0c, 0x20, 0x11, 0xd8, 108 0x0f, 0x52, 0x00, 0x00, 0x24, 0x5a, 0x99, 0x00, 109 0x8b, 0x8e, 0x03, 0xe1, 0xac, 0x01, 0x27, 0x38, 110 0x7a, 0x75, 0x7a, 0x75, 0xfb, 0xbd, 0xd5, 0x5c, 111 0x00, 0x00, 0x70, 0xff, 0x81, 0xb0, 0x38, 0x36, 112 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 113 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 114 0x43, 0x0e, 0xff, 0xff, 0x21, 0xdc, 0x5c, 0xff, 115 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 116 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 117 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 118 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 119 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 120 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 121 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 122 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 123 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 124 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 125 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 126 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 127 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 128 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 129 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 130 }; 131 132 define_sfdp_read(mt35xu02g); 133 134 /* 135 * Matronix 136 */ 137 138 /* mx25l25635e. No 4B opcodes */ 139 static const uint8_t sfdp_mx25l25635e[] = { 140 0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x01, 0xff, 141 0x00, 0x00, 0x01, 0x09, 0x30, 0x00, 0x00, 0xff, 142 0xc2, 0x00, 0x01, 0x04, 0x60, 0x00, 0x00, 0xff, 143 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 144 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 145 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 146 0xe5, 0x20, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x0f, 147 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x04, 0xbb, 148 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 149 0xff, 0xff, 0x00, 0xff, 0x0c, 0x20, 0x0f, 0x52, 150 0x10, 0xd8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 151 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 152 0x00, 0x36, 0x00, 0x27, 0xf7, 0x4f, 0xff, 0xff, 153 0xd9, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 154 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 155 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 156 }; 157 define_sfdp_read(mx25l25635e) 158 159 static const uint8_t sfdp_mx25l25635f[] = { 160 0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x01, 0xff, 161 0x00, 0x00, 0x01, 0x09, 0x30, 0x00, 0x00, 0xff, 162 0xc2, 0x00, 0x01, 0x04, 0x60, 0x00, 0x00, 0xff, 163 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 164 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 165 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 166 0xe5, 0x20, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x0f, 167 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x04, 0xbb, 168 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 169 0xff, 0xff, 0x44, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 170 0x10, 0xd8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 171 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 172 0x00, 0x36, 0x00, 0x27, 0x9d, 0xf9, 0xc0, 0x64, 173 0x85, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 174 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 175 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 176 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 177 0xff, 0xff, 0xff, 0xff, 0xc2, 0xf5, 0x08, 0x0a, 178 0x08, 0x04, 0x03, 0x06, 0x00, 0x00, 0x07, 0x29, 179 0x17, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 180 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 181 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 182 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 183 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 184 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 185 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 186 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 187 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 188 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 189 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 190 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 191 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 192 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 193 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 194 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 195 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 196 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 197 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 198 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 199 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 200 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 201 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 202 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 203 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 204 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 205 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 206 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 207 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 208 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 209 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 210 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 211 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 212 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 213 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 214 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 215 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 216 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 217 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 218 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 219 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 220 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 221 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 222 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 223 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 224 }; 225 define_sfdp_read(mx25l25635f); 226 227 static const uint8_t sfdp_mx66l1g45g[] = { 228 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x02, 0xff, 229 0x00, 0x06, 0x01, 0x10, 0x30, 0x00, 0x00, 0xff, 230 0xc2, 0x00, 0x01, 0x04, 0x10, 0x01, 0x00, 0xff, 231 0x84, 0x00, 0x01, 0x02, 0xc0, 0x00, 0x00, 0xff, 232 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 233 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 234 0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x3f, 235 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x04, 0xbb, 236 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 237 0xff, 0xff, 0x44, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 238 0x10, 0xd8, 0x00, 0xff, 0xd6, 0x49, 0xc5, 0x00, 239 0x85, 0xdf, 0x04, 0xe3, 0x44, 0x03, 0x67, 0x38, 240 0x30, 0xb0, 0x30, 0xb0, 0xf7, 0xbd, 0xd5, 0x5c, 241 0x4a, 0x9e, 0x29, 0xff, 0xf0, 0x50, 0xf9, 0x85, 242 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 243 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 244 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 245 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 246 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 247 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 248 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 249 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 250 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 251 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 252 0x7f, 0xef, 0xff, 0xff, 0x21, 0x5c, 0xdc, 0xff, 253 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 254 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 255 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 256 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 257 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 258 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 259 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 260 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 261 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 262 0x00, 0x36, 0x00, 0x27, 0x9d, 0xf9, 0xc0, 0x64, 263 0x85, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 264 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 265 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 266 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 267 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 268 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 269 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 270 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 271 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 272 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 273 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 274 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 275 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 276 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 277 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 278 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 279 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 280 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 281 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 282 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 283 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 284 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 285 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 286 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 287 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 288 0xc2, 0xf5, 0x08, 0x00, 0x0c, 0x04, 0x08, 0x08, 289 0x01, 0x00, 0x19, 0x0f, 0x01, 0x01, 0x06, 0xff, 290 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 291 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 292 }; 293 define_sfdp_read(mx66l1g45g); 294 295 /* 296 * Windbond 297 */ 298 299 static const uint8_t sfdp_w25q256[] = { 300 0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x00, 0xff, 301 0x00, 0x00, 0x01, 0x09, 0x80, 0x00, 0x00, 0xff, 302 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 303 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 304 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 305 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 306 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 307 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 308 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 309 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 310 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 311 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 312 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 313 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 314 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 315 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 316 0xe5, 0x20, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x0f, 317 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x42, 0xbb, 318 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 319 0xff, 0xff, 0x21, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 320 0x10, 0xd8, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 321 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 322 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 323 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 324 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 325 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 326 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 327 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 328 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 329 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 330 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 331 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 332 }; 333 define_sfdp_read(w25q256); 334 335 static const uint8_t sfdp_w25q512jv[] = { 336 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff, 337 0x00, 0x06, 0x01, 0x10, 0x80, 0x00, 0x00, 0xff, 338 0x84, 0x00, 0x01, 0x02, 0xd0, 0x00, 0x00, 0xff, 339 0x03, 0x00, 0x01, 0x02, 0xf0, 0x00, 0x00, 0xff, 340 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 341 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 342 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 343 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 344 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 345 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 346 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 347 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 348 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 349 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 350 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 351 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 352 0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x1f, 353 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x42, 0xbb, 354 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 355 0xff, 0xff, 0x40, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 356 0x10, 0xd8, 0x00, 0x00, 0x36, 0x02, 0xa6, 0x00, 357 0x82, 0xea, 0x14, 0xe2, 0xe9, 0x63, 0x76, 0x33, 358 0x7a, 0x75, 0x7a, 0x75, 0xf7, 0xa2, 0xd5, 0x5c, 359 0x19, 0xf7, 0x4d, 0xff, 0xe9, 0x70, 0xf9, 0xa5, 360 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 361 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 362 0xff, 0x0a, 0xf0, 0xff, 0x21, 0xff, 0xdc, 0xff, 363 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 364 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 365 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 366 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 367 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 368 }; 369 define_sfdp_read(w25q512jv); 370 371 static const uint8_t sfdp_w25q01jvq[] = { 372 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff, 373 0x00, 0x06, 0x01, 0x10, 0x80, 0x00, 0x00, 0xff, 374 0x84, 0x00, 0x01, 0x02, 0xd0, 0x00, 0x00, 0xff, 375 0x03, 0x00, 0x01, 0x02, 0xf0, 0x00, 0x00, 0xff, 376 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 377 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 378 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 379 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 380 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 381 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 382 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 383 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 384 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 385 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 386 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 387 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 388 0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x3f, 389 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x42, 0xbb, 390 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 391 0xff, 0xff, 0x40, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 392 0x10, 0xd8, 0x00, 0x00, 0x36, 0x02, 0xa6, 0x00, 393 0x82, 0xea, 0x14, 0xe2, 0xe9, 0x63, 0x76, 0x33, 394 0x7a, 0x75, 0x7a, 0x75, 0xf7, 0xa2, 0xd5, 0x5c, 395 0x19, 0xf7, 0x4d, 0xff, 0xe9, 0x70, 0xf9, 0xa5, 396 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 397 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 398 0xff, 0x0a, 0xf0, 0xff, 0x21, 0xff, 0xdc, 0xff, 399 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 400 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 401 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 402 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 403 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 404 }; 405 define_sfdp_read(w25q01jvq); 406 407 /* 408 * Integrated Silicon Solution (ISSI) 409 */ 410 411 static const uint8_t sfdp_is25wp256[] = { 412 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff, 413 0x00, 0x06, 0x01, 0x10, 0x30, 0x00, 0x00, 0xff, 414 0x9d, 0x05, 0x01, 0x03, 0x80, 0x00, 0x00, 0x02, 415 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 416 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 417 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 418 0xe5, 0x20, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x0f, 419 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x80, 0xbb, 420 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 421 0xff, 0xff, 0x44, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 422 0x10, 0xd8, 0x00, 0xff, 0x23, 0x4a, 0xc9, 0x00, 423 0x82, 0xd8, 0x11, 0xce, 0xcc, 0xcd, 0x68, 0x46, 424 0x7a, 0x75, 0x7a, 0x75, 0xf7, 0xae, 0xd5, 0x5c, 425 0x4a, 0x42, 0x2c, 0xff, 0xf0, 0x30, 0xfa, 0xa9, 426 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 427 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 428 0x50, 0x19, 0x50, 0x16, 0x9f, 0xf9, 0xc0, 0x64, 429 0x8f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 430 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 431 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 432 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 433 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 434 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 435 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 436 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 437 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 438 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 439 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 440 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 441 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 442 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 443 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 444 }; 445 define_sfdp_read(is25wp256); 446