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