xref: /openbmc/qemu/hw/block/m25p80_sfdp.c (revision d2dfe0b5)
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