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_mt35xu02g[] = { 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, 0x7f, 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(mt35xu02g); 96 97 /* 98 * Matronix 99 */ 100 101 /* mx25l25635e. No 4B opcodes */ 102 static const uint8_t sfdp_mx25l25635e[] = { 103 0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x01, 0xff, 104 0x00, 0x00, 0x01, 0x09, 0x30, 0x00, 0x00, 0xff, 105 0xc2, 0x00, 0x01, 0x04, 0x60, 0x00, 0x00, 0xff, 106 0xff, 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 0xe5, 0x20, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x0f, 110 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x04, 0xbb, 111 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 112 0xff, 0xff, 0x00, 0xff, 0x0c, 0x20, 0x0f, 0x52, 113 0x10, 0xd8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 114 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 115 0x00, 0x36, 0x00, 0x27, 0xf7, 0x4f, 0xff, 0xff, 116 0xd9, 0xc8, 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 }; 120 define_sfdp_read(mx25l25635e) 121 122 static const uint8_t sfdp_mx25l25635f[] = { 123 0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x01, 0xff, 124 0x00, 0x00, 0x01, 0x09, 0x30, 0x00, 0x00, 0xff, 125 0xc2, 0x00, 0x01, 0x04, 0x60, 0x00, 0x00, 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 0xe5, 0x20, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x0f, 130 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x04, 0xbb, 131 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 132 0xff, 0xff, 0x44, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 133 0x10, 0xd8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 134 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 135 0x00, 0x36, 0x00, 0x27, 0x9d, 0xf9, 0xc0, 0x64, 136 0x85, 0xcb, 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, 0xc2, 0xf5, 0x08, 0x0a, 141 0x08, 0x04, 0x03, 0x06, 0x00, 0x00, 0x07, 0x29, 142 0x17, 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 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 152 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 153 0xff, 0xff, 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 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 157 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 158 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 159 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 160 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 161 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 162 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 167 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 168 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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 0xff, 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 }; 188 define_sfdp_read(mx25l25635f); 189 190 static const uint8_t sfdp_mx66l1g45g[] = { 191 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x02, 0xff, 192 0x00, 0x06, 0x01, 0x10, 0x30, 0x00, 0x00, 0xff, 193 0xc2, 0x00, 0x01, 0x04, 0x10, 0x01, 0x00, 0xff, 194 0x84, 0x00, 0x01, 0x02, 0xc0, 0x00, 0x00, 0xff, 195 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 196 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 197 0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x3f, 198 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x04, 0xbb, 199 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 200 0xff, 0xff, 0x44, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 201 0x10, 0xd8, 0x00, 0xff, 0xd6, 0x49, 0xc5, 0x00, 202 0x85, 0xdf, 0x04, 0xe3, 0x44, 0x03, 0x67, 0x38, 203 0x30, 0xb0, 0x30, 0xb0, 0xf7, 0xbd, 0xd5, 0x5c, 204 0x4a, 0x9e, 0x29, 0xff, 0xf0, 0x50, 0xf9, 0x85, 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 0x7f, 0xef, 0xff, 0xff, 0x21, 0x5c, 0xdc, 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 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 225 0x00, 0x36, 0x00, 0x27, 0x9d, 0xf9, 0xc0, 0x64, 226 0x85, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 227 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 228 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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 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 0xc2, 0xf5, 0x08, 0x00, 0x0c, 0x04, 0x08, 0x08, 252 0x01, 0x00, 0x19, 0x0f, 0x01, 0x01, 0x06, 0xff, 253 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 254 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 255 }; 256 define_sfdp_read(mx66l1g45g); 257 258 /* 259 * Windbond 260 */ 261 262 static const uint8_t sfdp_w25q256[] = { 263 0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x00, 0xff, 264 0x00, 0x00, 0x01, 0x09, 0x80, 0x00, 0x00, 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 0xe5, 0x20, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x0f, 280 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x42, 0xbb, 281 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 282 0xff, 0xff, 0x21, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 283 0x10, 0xd8, 0x00, 0x00, 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 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 289 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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(w25q256); 297 298 static const uint8_t sfdp_w25q512jv[] = { 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, 0x1f, 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(w25q512jv); 333 334 static const uint8_t sfdp_w25q01jvq[] = { 335 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff, 336 0x00, 0x06, 0x01, 0x10, 0x80, 0x00, 0x00, 0xff, 337 0x84, 0x00, 0x01, 0x02, 0xd0, 0x00, 0x00, 0xff, 338 0x03, 0x00, 0x01, 0x02, 0xf0, 0x00, 0x00, 0xff, 339 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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 0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x3f, 352 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x42, 0xbb, 353 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 354 0xff, 0xff, 0x40, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 355 0x10, 0xd8, 0x00, 0x00, 0x36, 0x02, 0xa6, 0x00, 356 0x82, 0xea, 0x14, 0xe2, 0xe9, 0x63, 0x76, 0x33, 357 0x7a, 0x75, 0x7a, 0x75, 0xf7, 0xa2, 0xd5, 0x5c, 358 0x19, 0xf7, 0x4d, 0xff, 0xe9, 0x70, 0xf9, 0xa5, 359 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 360 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 361 0xff, 0x0a, 0xf0, 0xff, 0x21, 0xff, 0xdc, 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 }; 368 define_sfdp_read(w25q01jvq); 369 370 /* 371 * Integrated Silicon Solution (ISSI) 372 */ 373 374 static const uint8_t sfdp_is25wp256[] = { 375 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff, 376 0x00, 0x06, 0x01, 0x10, 0x30, 0x00, 0x00, 0xff, 377 0x9d, 0x05, 0x01, 0x03, 0x80, 0x00, 0x00, 0x02, 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 0xe5, 0x20, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x0f, 382 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x80, 0xbb, 383 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 384 0xff, 0xff, 0x44, 0xeb, 0x0c, 0x20, 0x0f, 0x52, 385 0x10, 0xd8, 0x00, 0xff, 0x23, 0x4a, 0xc9, 0x00, 386 0x82, 0xd8, 0x11, 0xce, 0xcc, 0xcd, 0x68, 0x46, 387 0x7a, 0x75, 0x7a, 0x75, 0xf7, 0xae, 0xd5, 0x5c, 388 0x4a, 0x42, 0x2c, 0xff, 0xf0, 0x30, 0xfa, 0xa9, 389 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 390 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 391 0x50, 0x19, 0x50, 0x16, 0x9f, 0xf9, 0xc0, 0x64, 392 0x8f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 393 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 394 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 395 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 396 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 397 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 398 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 405 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 406 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 407 }; 408 define_sfdp_read(is25wp256); 409