xref: /openbmc/qemu/hw/block/m25p80_sfdp.c (revision 3e7808de)
15eb24fbdSCédric Le Goater /*
25eb24fbdSCédric Le Goater  * M25P80 Serial Flash Discoverable Parameter (SFDP)
35eb24fbdSCédric Le Goater  *
45eb24fbdSCédric Le Goater  * Copyright (c) 2020, IBM Corporation.
55eb24fbdSCédric Le Goater  *
65eb24fbdSCédric Le Goater  * This code is licensed under the GPL version 2 or later. See the
75eb24fbdSCédric Le Goater  * COPYING file in the top-level directory.
85eb24fbdSCédric Le Goater  */
95eb24fbdSCédric Le Goater 
105eb24fbdSCédric Le Goater #include "qemu/osdep.h"
115eb24fbdSCédric Le Goater #include "qemu/host-utils.h"
125eb24fbdSCédric Le Goater #include "m25p80_sfdp.h"
135eb24fbdSCédric Le Goater 
145eb24fbdSCédric Le Goater #define define_sfdp_read(model)                                       \
155eb24fbdSCédric Le Goater     uint8_t m25p80_sfdp_##model(uint32_t addr)                        \
165eb24fbdSCédric Le Goater     {                                                                 \
175eb24fbdSCédric Le Goater         assert(is_power_of_2(sizeof(sfdp_##model)));                  \
185eb24fbdSCédric Le Goater         return sfdp_##model[addr & (sizeof(sfdp_##model) - 1)];       \
195eb24fbdSCédric Le Goater     }
205eb24fbdSCédric Le Goater 
215eb24fbdSCédric Le Goater /*
225eb24fbdSCédric Le Goater  * Micron
235eb24fbdSCédric Le Goater  */
245eb24fbdSCédric Le Goater static const uint8_t sfdp_n25q256a[] = {
255eb24fbdSCédric Le Goater     0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x00, 0xff,
265eb24fbdSCédric Le Goater     0x00, 0x00, 0x01, 0x09, 0x30, 0x00, 0x00, 0xff,
275eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
285eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
295eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
305eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
315eb24fbdSCédric Le Goater     0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x0f,
325eb24fbdSCédric Le Goater     0x29, 0xeb, 0x27, 0x6b, 0x08, 0x3b, 0x27, 0xbb,
335eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x27, 0xbb,
345eb24fbdSCédric Le Goater     0xff, 0xff, 0x29, 0xeb, 0x0c, 0x20, 0x10, 0xd8,
355eb24fbdSCédric Le Goater     0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
365eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
375eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
385eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
395eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
405eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
415eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
425eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
435eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
445eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
455eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
465eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
475eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
485eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
495eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
505eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
515eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
525eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
535eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
545eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
555eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
565eb24fbdSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
575eb24fbdSCédric Le Goater };
585eb24fbdSCédric Le Goater define_sfdp_read(n25q256a);
59dc907a66SCédric Le Goater 
60dc907a66SCédric Le Goater 
61dc907a66SCédric Le Goater /*
62dc907a66SCédric Le Goater  * Matronix
63dc907a66SCédric Le Goater  */
64dc907a66SCédric Le Goater 
65dc907a66SCédric Le Goater /* mx25l25635e. No 4B opcodes */
66dc907a66SCédric Le Goater static const uint8_t sfdp_mx25l25635e[] = {
67dc907a66SCédric Le Goater     0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x01, 0xff,
68dc907a66SCédric Le Goater     0x00, 0x00, 0x01, 0x09, 0x30, 0x00, 0x00, 0xff,
69dc907a66SCédric Le Goater     0xc2, 0x00, 0x01, 0x04, 0x60, 0x00, 0x00, 0xff,
70dc907a66SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
71dc907a66SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
72dc907a66SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
73dc907a66SCédric Le Goater     0xe5, 0x20, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x0f,
74dc907a66SCédric Le Goater     0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x04, 0xbb,
75dc907a66SCédric Le Goater     0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff,
76dc907a66SCédric Le Goater     0xff, 0xff, 0x00, 0xff, 0x0c, 0x20, 0x0f, 0x52,
77dc907a66SCédric Le Goater     0x10, 0xd8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
78dc907a66SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
79dc907a66SCédric Le Goater     0x00, 0x36, 0x00, 0x27, 0xf7, 0x4f, 0xff, 0xff,
80dc907a66SCédric Le Goater     0xd9, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
81dc907a66SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
82dc907a66SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
83dc907a66SCédric Le Goater };
84dc907a66SCédric Le Goater define_sfdp_read(mx25l25635e)
8551f4613dSCédric Le Goater 
8651f4613dSCédric Le Goater static const uint8_t sfdp_mx25l25635f[] = {
8751f4613dSCédric Le Goater     0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x01, 0xff,
8851f4613dSCédric Le Goater     0x00, 0x00, 0x01, 0x09, 0x30, 0x00, 0x00, 0xff,
8951f4613dSCédric Le Goater     0xc2, 0x00, 0x01, 0x04, 0x60, 0x00, 0x00, 0xff,
9051f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
9151f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
9251f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
9351f4613dSCédric Le Goater     0xe5, 0x20, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x0f,
9451f4613dSCédric Le Goater     0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x04, 0xbb,
9551f4613dSCédric Le Goater     0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff,
9651f4613dSCédric Le Goater     0xff, 0xff, 0x44, 0xeb, 0x0c, 0x20, 0x0f, 0x52,
9751f4613dSCédric Le Goater     0x10, 0xd8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
9851f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
9951f4613dSCédric Le Goater     0x00, 0x36, 0x00, 0x27, 0x9d, 0xf9, 0xc0, 0x64,
10051f4613dSCédric Le Goater     0x85, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
10151f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
10251f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
10351f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
10451f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xc2, 0xf5, 0x08, 0x0a,
10551f4613dSCédric Le Goater     0x08, 0x04, 0x03, 0x06, 0x00, 0x00, 0x07, 0x29,
10651f4613dSCédric Le Goater     0x17, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
10751f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
10851f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
10951f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11051f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11151f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11251f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11351f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11451f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11551f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11651f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11751f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11851f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11951f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
12051f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
12151f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
12251f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
12351f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
12451f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
12551f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
12651f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
12751f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
12851f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
12951f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
13051f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
13151f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
13251f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
13351f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
13451f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
13551f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
13651f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
13751f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
13851f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
13951f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14051f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14151f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14251f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14351f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14451f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14551f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14651f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14751f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14851f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14951f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
15051f4613dSCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
15151f4613dSCédric Le Goater };
15251f4613dSCédric Le Goater define_sfdp_read(mx25l25635f);
15352514908SCédric Le Goater 
15452514908SCédric Le Goater static const uint8_t sfdp_mx66l1g45g[] = {
15552514908SCédric Le Goater     0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x02, 0xff,
15652514908SCédric Le Goater     0x00, 0x06, 0x01, 0x10, 0x30, 0x00, 0x00, 0xff,
15752514908SCédric Le Goater     0xc2, 0x00, 0x01, 0x04, 0x10, 0x01, 0x00, 0xff,
15852514908SCédric Le Goater     0x84, 0x00, 0x01, 0x02, 0xc0, 0x00, 0x00, 0xff,
15952514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
16052514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
16152514908SCédric Le Goater     0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x3f,
16252514908SCédric Le Goater     0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x04, 0xbb,
16352514908SCédric Le Goater     0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff,
16452514908SCédric Le Goater     0xff, 0xff, 0x44, 0xeb, 0x0c, 0x20, 0x0f, 0x52,
16552514908SCédric Le Goater     0x10, 0xd8, 0x00, 0xff, 0xd6, 0x49, 0xc5, 0x00,
16652514908SCédric Le Goater     0x85, 0xdf, 0x04, 0xe3, 0x44, 0x03, 0x67, 0x38,
16752514908SCédric Le Goater     0x30, 0xb0, 0x30, 0xb0, 0xf7, 0xbd, 0xd5, 0x5c,
16852514908SCédric Le Goater     0x4a, 0x9e, 0x29, 0xff, 0xf0, 0x50, 0xf9, 0x85,
16952514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
17052514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
17152514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
17252514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
17352514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
17452514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
17552514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
17652514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
17752514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
17852514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
17952514908SCédric Le Goater     0x7f, 0xef, 0xff, 0xff, 0x21, 0x5c, 0xdc, 0xff,
18052514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18152514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18252514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18352514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18452514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18552514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18652514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18752514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18852514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18952514908SCédric Le Goater     0x00, 0x36, 0x00, 0x27, 0x9d, 0xf9, 0xc0, 0x64,
19052514908SCédric Le Goater     0x85, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
19152514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
19252514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
19352514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
19452514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
19552514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
19652514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
19752514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
19852514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
19952514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
20052514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
20152514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
20252514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
20352514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
20452514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
20552514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
20652514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
20752514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
20852514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
20952514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
21052514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
21152514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
21252514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
21352514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
21452514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
21552514908SCédric Le Goater     0xc2, 0xf5, 0x08, 0x00, 0x0c, 0x04, 0x08, 0x08,
21652514908SCédric Le Goater     0x01, 0x00, 0x19, 0x0f, 0x01, 0x01, 0x06, 0xff,
21752514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
21852514908SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
21952514908SCédric Le Goater };
22052514908SCédric Le Goater define_sfdp_read(mx66l1g45g);
221e9041884SCédric Le Goater 
222e9041884SCédric Le Goater /*
223e9041884SCédric Le Goater  * Windbond
224e9041884SCédric Le Goater  */
225e9041884SCédric Le Goater 
226e9041884SCédric Le Goater static const uint8_t sfdp_w25q256[] = {
227e9041884SCédric Le Goater     0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x00, 0xff,
228e9041884SCédric Le Goater     0x00, 0x00, 0x01, 0x09, 0x80, 0x00, 0x00, 0xff,
229e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
230e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
231e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
232e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
233e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
234e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
235e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
236e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
237e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
238e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
239e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
240e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
241e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
242e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
243e9041884SCédric Le Goater     0xe5, 0x20, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x0f,
244e9041884SCédric Le Goater     0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x42, 0xbb,
245e9041884SCédric Le Goater     0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
246e9041884SCédric Le Goater     0xff, 0xff, 0x21, 0xeb, 0x0c, 0x20, 0x0f, 0x52,
247e9041884SCédric Le Goater     0x10, 0xd8, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
248e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
249e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
250e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
251e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
252e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
253e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
254e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
255e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
256e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
257e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
258e9041884SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
259e9041884SCédric Le Goater };
260e9041884SCédric Le Goater define_sfdp_read(w25q256);
2618e57da58SCédric Le Goater 
2628e57da58SCédric Le Goater static const uint8_t sfdp_w25q512jv[] = {
2638e57da58SCédric Le Goater     0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff,
2648e57da58SCédric Le Goater     0x00, 0x06, 0x01, 0x10, 0x80, 0x00, 0x00, 0xff,
2658e57da58SCédric Le Goater     0x84, 0x00, 0x01, 0x02, 0xd0, 0x00, 0x00, 0xff,
2668e57da58SCédric Le Goater     0x03, 0x00, 0x01, 0x02, 0xf0, 0x00, 0x00, 0xff,
2678e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2688e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2698e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2708e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2718e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2728e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2738e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2748e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2758e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2768e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2778e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2788e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2798e57da58SCédric Le Goater     0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x1f,
2808e57da58SCédric Le Goater     0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x42, 0xbb,
2818e57da58SCédric Le Goater     0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
2828e57da58SCédric Le Goater     0xff, 0xff, 0x40, 0xeb, 0x0c, 0x20, 0x0f, 0x52,
2838e57da58SCédric Le Goater     0x10, 0xd8, 0x00, 0x00, 0x36, 0x02, 0xa6, 0x00,
2848e57da58SCédric Le Goater     0x82, 0xea, 0x14, 0xe2, 0xe9, 0x63, 0x76, 0x33,
2858e57da58SCédric Le Goater     0x7a, 0x75, 0x7a, 0x75, 0xf7, 0xa2, 0xd5, 0x5c,
2868e57da58SCédric Le Goater     0x19, 0xf7, 0x4d, 0xff, 0xe9, 0x70, 0xf9, 0xa5,
2878e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2888e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2898e57da58SCédric Le Goater     0xff, 0x0a, 0xf0, 0xff, 0x21, 0xff, 0xdc, 0xff,
2908e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2918e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2928e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2938e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2948e57da58SCédric Le Goater     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2958e57da58SCédric Le Goater };
2968e57da58SCédric Le Goater define_sfdp_read(w25q512jv);
297a34b0d53SPatrick Williams 
298a34b0d53SPatrick Williams static const uint8_t sfdp_w25q01jvq[] = {
299a34b0d53SPatrick Williams     0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff,
300a34b0d53SPatrick Williams     0x00, 0x06, 0x01, 0x10, 0x80, 0x00, 0x00, 0xff,
301a34b0d53SPatrick Williams     0x84, 0x00, 0x01, 0x02, 0xd0, 0x00, 0x00, 0xff,
302a34b0d53SPatrick Williams     0x03, 0x00, 0x01, 0x02, 0xf0, 0x00, 0x00, 0xff,
303a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
304a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
305a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
306a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
307a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
308a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
309a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
310a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
311a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
312a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
313a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
314a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
315a34b0d53SPatrick Williams     0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x3f,
316a34b0d53SPatrick Williams     0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x42, 0xbb,
317a34b0d53SPatrick Williams     0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
318a34b0d53SPatrick Williams     0xff, 0xff, 0x40, 0xeb, 0x0c, 0x20, 0x0f, 0x52,
319a34b0d53SPatrick Williams     0x10, 0xd8, 0x00, 0x00, 0x36, 0x02, 0xa6, 0x00,
320a34b0d53SPatrick Williams     0x82, 0xea, 0x14, 0xe2, 0xe9, 0x63, 0x76, 0x33,
321a34b0d53SPatrick Williams     0x7a, 0x75, 0x7a, 0x75, 0xf7, 0xa2, 0xd5, 0x5c,
322a34b0d53SPatrick Williams     0x19, 0xf7, 0x4d, 0xff, 0xe9, 0x70, 0xf9, 0xa5,
323a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
324a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
325a34b0d53SPatrick Williams     0xff, 0x0a, 0xf0, 0xff, 0x21, 0xff, 0xdc, 0xff,
326a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
327a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
328a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
329a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
330a34b0d53SPatrick Williams     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
331a34b0d53SPatrick Williams };
332a34b0d53SPatrick Williams define_sfdp_read(w25q01jvq);
333*3e7808deSGuenter Roeck 
334*3e7808deSGuenter Roeck /*
335*3e7808deSGuenter Roeck  * Integrated Silicon Solution (ISSI)
336*3e7808deSGuenter Roeck  */
337*3e7808deSGuenter Roeck 
338*3e7808deSGuenter Roeck static const uint8_t sfdp_is25wp256[] = {
339*3e7808deSGuenter Roeck     0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff,
340*3e7808deSGuenter Roeck     0x00, 0x06, 0x01, 0x10, 0x30, 0x00, 0x00, 0xff,
341*3e7808deSGuenter Roeck     0x9d, 0x05, 0x01, 0x03, 0x80, 0x00, 0x00, 0x02,
342*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
343*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
344*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
345*3e7808deSGuenter Roeck     0xe5, 0x20, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x0f,
346*3e7808deSGuenter Roeck     0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x80, 0xbb,
347*3e7808deSGuenter Roeck     0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff,
348*3e7808deSGuenter Roeck     0xff, 0xff, 0x44, 0xeb, 0x0c, 0x20, 0x0f, 0x52,
349*3e7808deSGuenter Roeck     0x10, 0xd8, 0x00, 0xff, 0x23, 0x4a, 0xc9, 0x00,
350*3e7808deSGuenter Roeck     0x82, 0xd8, 0x11, 0xce, 0xcc, 0xcd, 0x68, 0x46,
351*3e7808deSGuenter Roeck     0x7a, 0x75, 0x7a, 0x75, 0xf7, 0xae, 0xd5, 0x5c,
352*3e7808deSGuenter Roeck     0x4a, 0x42, 0x2c, 0xff, 0xf0, 0x30, 0xfa, 0xa9,
353*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
354*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
355*3e7808deSGuenter Roeck     0x50, 0x19, 0x50, 0x16, 0x9f, 0xf9, 0xc0, 0x64,
356*3e7808deSGuenter Roeck     0x8f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
357*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
358*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
359*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
360*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
361*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
362*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
363*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
364*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
365*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
366*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
367*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
368*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
369*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
370*3e7808deSGuenter Roeck     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
371*3e7808deSGuenter Roeck };
372*3e7808deSGuenter Roeck define_sfdp_read(is25wp256);
373