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 61 /* 62 * Matronix 63 */ 64 65 /* mx25l25635e. No 4B opcodes */ 66 static const uint8_t sfdp_mx25l25635e[] = { 67 0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x01, 0xff, 68 0x00, 0x00, 0x01, 0x09, 0x30, 0x00, 0x00, 0xff, 69 0xc2, 0x00, 0x01, 0x04, 0x60, 0x00, 0x00, 0xff, 70 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 71 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 72 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 73 0xe5, 0x20, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x0f, 74 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x04, 0xbb, 75 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 76 0xff, 0xff, 0x00, 0xff, 0x0c, 0x20, 0x0f, 0x52, 77 0x10, 0xd8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 78 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 79 0x00, 0x36, 0x00, 0x27, 0xf7, 0x4f, 0xff, 0xff, 80 0xd9, 0xc8, 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 }; 84 define_sfdp_read(mx25l25635e) 85 86 static const uint8_t sfdp_mx25l25635f[] = { 87 0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x01, 0xff, 88 0x00, 0x00, 0x01, 0x09, 0x30, 0x00, 0x00, 0xff, 89 0xc2, 0x00, 0x01, 0x04, 0x60, 0x00, 0x00, 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 0xe5, 0x20, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x0f, 94 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x04, 0xbb, 95 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 96 0xff, 0xff, 0x44, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 97 0x10, 0xd8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 98 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 99 0x00, 0x36, 0x00, 0x27, 0x9d, 0xf9, 0xc0, 0x64, 100 0x85, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 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 0xff, 0xff, 0xff, 0xff, 0xc2, 0xf5, 0x08, 0x0a, 105 0x08, 0x04, 0x03, 0x06, 0x00, 0x00, 0x07, 0x29, 106 0x17, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 107 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 108 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 109 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 110 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 111 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 112 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 113 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 114 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 131 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 132 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 133 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 134 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 135 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 136 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 137 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 138 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 139 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 140 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 141 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 142 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 147 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 148 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 149 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 150 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 151 }; 152 define_sfdp_read(mx25l25635f); 153 154 static const uint8_t sfdp_mx66l1g45g[] = { 155 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x02, 0xff, 156 0x00, 0x06, 0x01, 0x10, 0x30, 0x00, 0x00, 0xff, 157 0xc2, 0x00, 0x01, 0x04, 0x10, 0x01, 0x00, 0xff, 158 0x84, 0x00, 0x01, 0x02, 0xc0, 0x00, 0x00, 0xff, 159 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 160 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 161 0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x3f, 162 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x04, 0xbb, 163 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 164 0xff, 0xff, 0x44, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 165 0x10, 0xd8, 0x00, 0xff, 0xd6, 0x49, 0xc5, 0x00, 166 0x85, 0xdf, 0x04, 0xe3, 0x44, 0x03, 0x67, 0x38, 167 0x30, 0xb0, 0x30, 0xb0, 0xf7, 0xbd, 0xd5, 0x5c, 168 0x4a, 0x9e, 0x29, 0xff, 0xf0, 0x50, 0xf9, 0x85, 169 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 170 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 171 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 172 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 173 0xff, 0xff, 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, 0xff, 0xff, 0xff, 0xff, 178 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 179 0x7f, 0xef, 0xff, 0xff, 0x21, 0x5c, 0xdc, 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 0x00, 0x36, 0x00, 0x27, 0x9d, 0xf9, 0xc0, 0x64, 190 0x85, 0xcb, 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 0xc2, 0xf5, 0x08, 0x00, 0x0c, 0x04, 0x08, 0x08, 216 0x01, 0x00, 0x19, 0x0f, 0x01, 0x01, 0x06, 0xff, 217 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 218 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 219 }; 220 define_sfdp_read(mx66l1g45g); 221 222 /* 223 * Windbond 224 */ 225 226 static const uint8_t sfdp_w25q256[] = { 227 0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x00, 0xff, 228 0x00, 0x00, 0x01, 0x09, 0x80, 0x00, 0x00, 0xff, 229 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 230 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 231 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 232 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 233 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 234 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 235 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 236 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 237 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 238 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 239 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 240 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 241 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 242 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 243 0xe5, 0x20, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x0f, 244 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x42, 0xbb, 245 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 246 0xff, 0xff, 0x21, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 247 0x10, 0xd8, 0x00, 0x00, 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 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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 }; 260 define_sfdp_read(w25q256); 261 262 static const uint8_t sfdp_w25q512jv[] = { 263 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff, 264 0x00, 0x06, 0x01, 0x10, 0x80, 0x00, 0x00, 0xff, 265 0x84, 0x00, 0x01, 0x02, 0xd0, 0x00, 0x00, 0xff, 266 0x03, 0x00, 0x01, 0x02, 0xf0, 0x00, 0x00, 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 0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x1f, 280 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x42, 0xbb, 281 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 282 0xff, 0xff, 0x40, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 283 0x10, 0xd8, 0x00, 0x00, 0x36, 0x02, 0xa6, 0x00, 284 0x82, 0xea, 0x14, 0xe2, 0xe9, 0x63, 0x76, 0x33, 285 0x7a, 0x75, 0x7a, 0x75, 0xf7, 0xa2, 0xd5, 0x5c, 286 0x19, 0xf7, 0x4d, 0xff, 0xe9, 0x70, 0xf9, 0xa5, 287 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 288 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 289 0xff, 0x0a, 0xf0, 0xff, 0x21, 0xff, 0xdc, 0xff, 290 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 291 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 292 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 293 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 294 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 295 }; 296 define_sfdp_read(w25q512jv); 297 298 static const uint8_t sfdp_w25q01jvq[] = { 299 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff, 300 0x00, 0x06, 0x01, 0x10, 0x80, 0x00, 0x00, 0xff, 301 0x84, 0x00, 0x01, 0x02, 0xd0, 0x00, 0x00, 0xff, 302 0x03, 0x00, 0x01, 0x02, 0xf0, 0x00, 0x00, 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 0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x3f, 316 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x42, 0xbb, 317 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 318 0xff, 0xff, 0x40, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 319 0x10, 0xd8, 0x00, 0x00, 0x36, 0x02, 0xa6, 0x00, 320 0x82, 0xea, 0x14, 0xe2, 0xe9, 0x63, 0x76, 0x33, 321 0x7a, 0x75, 0x7a, 0x75, 0xf7, 0xa2, 0xd5, 0x5c, 322 0x19, 0xf7, 0x4d, 0xff, 0xe9, 0x70, 0xf9, 0xa5, 323 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 324 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 325 0xff, 0x0a, 0xf0, 0xff, 0x21, 0xff, 0xdc, 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 }; 332 define_sfdp_read(w25q01jvq); 333 334 /* 335 * Integrated Silicon Solution (ISSI) 336 */ 337 338 static const uint8_t sfdp_is25wp256[] = { 339 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff, 340 0x00, 0x06, 0x01, 0x10, 0x30, 0x00, 0x00, 0xff, 341 0x9d, 0x05, 0x01, 0x03, 0x80, 0x00, 0x00, 0x02, 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 0xe5, 0x20, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x0f, 346 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x80, 0xbb, 347 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 348 0xff, 0xff, 0x44, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 349 0x10, 0xd8, 0x00, 0xff, 0x23, 0x4a, 0xc9, 0x00, 350 0x82, 0xd8, 0x11, 0xce, 0xcc, 0xcd, 0x68, 0x46, 351 0x7a, 0x75, 0x7a, 0x75, 0xf7, 0xae, 0xd5, 0x5c, 352 0x4a, 0x42, 0x2c, 0xff, 0xf0, 0x30, 0xfa, 0xa9, 353 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 354 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 355 0x50, 0x19, 0x50, 0x16, 0x9f, 0xf9, 0xc0, 0x64, 356 0x8f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 357 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 358 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 359 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 360 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 361 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 362 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 369 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 370 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 371 }; 372 define_sfdp_read(is25wp256); 373