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