2021-10-10 18:25:09 +02:00
// SPDX-License-Identifier: Apache-2.0
/*
* Copyright ( C ) 2021 Gwenhael Goavec - Merou < gwenhael . goavec - merou @ trabucayre . com >
*/
# ifndef SRC_SPIFLASHDB_HPP_
# define SRC_SPIFLASHDB_HPP_
# include <stdint.h>
# include <map>
# include <string>
2021-10-19 06:55:30 +02:00
typedef enum {
2024-08-25 09:32:13 +02:00
STATR = 0 , /* status register */
FUNCR = 1 , /* function register */
CONFR = 2 , /* configuration register */
NVCONFR = 3 , /* Nonvolatile configuration register */
NONER = 99 , /* "none" register */
2021-10-19 06:55:30 +02:00
} tb_loc_t ;
2021-10-10 18:25:09 +02:00
typedef struct {
std : : string manufacturer ; /**< manufacturer name */
std : : string model ; /**< chip name */
uint32_t nr_sector ; /**< number of sectors */
bool sector_erase ; /**< 64KB erase support */
/* missing 32KB erase */
bool subsector_erase ; /**< 4KB erase support */
bool has_extended ;
bool tb_otp ; /**< TOP/BOTTOM One Time Programming */
uint8_t tb_offset ; /**< TOP/BOTTOM bit offset */
2021-10-19 06:55:30 +02:00
tb_loc_t tb_register ; /**< TOP/BOTTOM location (register) */
2021-10-10 18:25:09 +02:00
uint8_t bp_len ; /**< BPx length */
uint8_t bp_offset [ 4 ] ; /**< BP[0:3] bit offset */
2024-08-25 09:32:13 +02:00
tb_loc_t quad_register ; /**< TOP/BOTTOM bit offset */
uint16_t quad_mask ; /** Quad Enable bit offset */
2021-10-10 18:25:09 +02:00
} flash_t ;
static std : : map < uint32_t , flash_t > flash_list = {
2021-12-22 18:59:52 +01:00
{ 0x010216 , {
. manufacturer = " spansion " ,
. model = " S25FL064P / EPCS64 " ,
. nr_sector = 128 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = true ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = CONFR ,
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2022-02-21 08:27:33 +01:00
{ 0x010219 , {
2024-08-23 07:20:53 +02:00
/* https://www.mouser.fr/datasheet/2/196/Infineon_S25FL128SS25FL256S_128_Mb__16_MB_256_Mb__-3363490.pdf */
2022-02-21 08:27:33 +01:00
. manufacturer = " spansion " ,
. model = " S25FL256S " ,
. nr_sector = 512 ,
. sector_erase = true ,
. subsector_erase = false ,
. has_extended = true ,
. tb_otp = true ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = CONFR ,
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
. quad_register = CONFR ,
. quad_mask = ( 1 < < 1 ) ,
} } ,
2022-05-14 10:16:08 +02:00
{ 0x010220 , {
. manufacturer = " spansion " ,
. model = " S25FL512S " ,
. nr_sector = 1024 ,
. sector_erase = true ,
. subsector_erase = false ,
. has_extended = true ,
. tb_otp = true ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = CONFR ,
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2021-12-22 18:59:52 +01:00
{ 0x012018 , {
. manufacturer = " spansion " ,
. model = " S25FL128S " ,
. nr_sector = 256 ,
. sector_erase = true ,
. subsector_erase = false ,
. has_extended = true ,
2022-02-21 08:27:33 +01:00
. tb_otp = true ,
2021-12-22 18:59:52 +01:00
. tb_offset = ( 1 < < 5 ) ,
. tb_register = CONFR ,
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
2024-09-22 08:53:26 +02:00
. quad_register = CONFR ,
. quad_mask = ( 1 < < 1 ) ,
2024-08-25 09:32:13 +02:00
} } ,
2024-02-26 15:56:03 +01:00
{ 0x016018 , {
2024-08-25 09:31:13 +02:00
/* https://www.infineon.com/dgdl/Infineon-S25FL128L_S25FL256L_128_Mb_16_MB_256_Mb_32_MB_FL-L_flash_SPI_multi-I_O_3-DataSheet-v13_00-EN.pdf?fileId=8ac78c8c7d0d8da4017d0ed40e335224 */
2024-02-26 15:56:03 +01:00
. manufacturer = " spansion " ,
. model = " S25FL128L " ,
. nr_sector = 256 ,
. sector_erase = true ,
. subsector_erase = false ,
. has_extended = true ,
. tb_otp = false ,
. tb_offset = ( 1 < < 6 ) ,
. tb_register = STATR ,
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 5 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2022-02-19 04:52:26 +01:00
{ 0x016019 , {
. manufacturer = " spansion " ,
. model = " S25FL256L " ,
. nr_sector = 512 ,
. sector_erase = true ,
. subsector_erase = false ,
. has_extended = true ,
. tb_otp = false ,
. tb_offset = ( 1 < < 6 ) ,
. tb_register = STATR ,
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 5 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0x202014 , {
/* https://pdf1.alldatasheet.com/datasheet-pdf/download/22807/STMICROELECTRONICS/M25P80.html */
2024-08-03 09:22:02 +02:00
. manufacturer = " ST " ,
. model = " M25P80 " ,
. nr_sector = 16 ,
. sector_erase = true ,
. subsector_erase = false ,
. has_extended = false ,
. tb_otp = true ,
. tb_offset = 0 , // unused
. tb_register = STATR ,
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0x202015 , {
/* https://datasheet.octopart.com/M25P16-VME6G-STMicroelectronics-datasheet-7623188.pdf */
2023-03-05 13:14:01 +01:00
. manufacturer = " ST " ,
. model = " M25P16 " ,
. nr_sector = 32 ,
. sector_erase = true ,
. subsector_erase = false ,
. has_extended = false ,
. tb_otp = true ,
. tb_offset = 0 , // unused
. tb_register = STATR ,
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0x202016 , {
/* https://pdf1.alldatasheet.com/datasheet-pdf/download/104949/STMICROELECTRONICS/M25P32.html */
2024-03-28 22:12:29 +01:00
. manufacturer = " ST " ,
. model = " M25P32 " ,
. nr_sector = 64 ,
. sector_erase = true ,
. subsector_erase = false ,
. has_extended = false ,
. tb_otp = true ,
. tb_offset = 0 , // unused
. tb_register = STATR ,
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0x20ba16 , {
/* https://www.digikey.co.uk/htmldatasheets/production/1283198/0/0/1/N25Q032A-32Mb-1-8V.pdf */
2021-12-22 18:58:51 +01:00
. manufacturer = " micron " ,
. model = " N25Q32 " ,
. nr_sector = 64 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = true ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = STATR ,
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
. quad_register = NVCONFR ,
. quad_mask = ( 1 < < 3 ) ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0x20ba17 , {
2022-05-10 19:07:56 +02:00
. manufacturer = " micron " ,
. model = " N25Q64 " ,
. nr_sector = 128 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = true ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = STATR ,
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 6 ) } ,
. quad_register = NVCONFR ,
. quad_mask = ( 1 < < 3 ) ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0x20ba18 , {
/* https://media-www.micron.com/-/media/client/global/documents/products/data-sheet/nor-flash/serial-nor/n25q/n25q_128mb_3v_65nm.pdf */
2023-10-20 07:52:49 +02:00
. manufacturer = " micron " ,
2024-08-23 07:20:53 +02:00
. model = " N25Q128_3V " ,
2023-10-20 07:52:49 +02:00
. nr_sector = 256 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = true ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = STATR ,
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 6 ) } ,
. quad_register = NVCONFR ,
. quad_mask = ( 1 < < 3 ) ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0x20ba19 , {
2024-08-25 09:31:13 +02:00
/* https://datasheet.octopart.com/N25Q256A13E1241F-Micron-datasheet-11552757.pdf */
2021-10-10 18:25:09 +02:00
. manufacturer = " micron " ,
2024-08-23 07:20:53 +02:00
. model = " N25Q256 " ,
. nr_sector = 512 ,
2021-10-10 18:25:09 +02:00
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = true ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
2021-10-19 06:55:30 +02:00
. tb_register = STATR ,
2021-10-10 18:25:09 +02:00
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 6 ) } ,
. quad_register = NVCONFR ,
. quad_mask = ( 1 < < 3 ) ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0x20bb18 , {
/* https://www.micron.com/-/media/client/global/documents/products/data-sheet/nor-flash/serial-nor/n25q/n25q_128mb_1_8v_65nm.pdf */
/* MT25QU128ABA has the same JEDEC-standard signature: https://media-www.micron.com/-/media/client/global/documents/products/data-sheet/nor-flash/serial-nor/mt25q/die-rev-a/mt25q_qlhs_u_128_aba_0.pdf */
/* Differences: https://media-www.micron.com/-/media/client/global/documents/products/technical-note/nor-flash/tn2501_migrating_n25q_to_mt25ql.pdf */
2021-10-10 18:25:09 +02:00
. manufacturer = " micron " ,
2024-08-23 07:20:53 +02:00
. model = " MT25/N25Q128_1_8V " ,
. nr_sector = 256 ,
2021-10-10 18:25:09 +02:00
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = true ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
2021-10-19 06:55:30 +02:00
. tb_register = STATR ,
2023-01-21 13:47:51 +01:00
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 6 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0x20bb19 , {
2023-03-23 12:50:16 +01:00
. manufacturer = " micron " ,
. model = " N25Q256A " ,
. nr_sector = 512 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = true ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = STATR ,
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 6 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0x20bb21 , {
2023-01-21 13:47:51 +01:00
. manufacturer = " micron " ,
2023-02-20 08:41:48 +01:00
. model = " MT25QU01G " ,
2023-01-21 13:47:51 +01:00
. nr_sector = 2048 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = true ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = STATR ,
2023-02-20 08:41:48 +01:00
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 6 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0x20bb22 , {
2023-02-20 08:41:48 +01:00
. manufacturer = " micron " ,
. model = " MT25QU02G " ,
. nr_sector = 4096 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = true ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = STATR ,
2021-10-10 18:25:09 +02:00
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 6 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2021-10-10 18:25:09 +02:00
{ 0x9d6016 , {
. manufacturer = " ISSI " ,
. model = " IS25LP032 " ,
. nr_sector = 64 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = true ,
2021-12-22 18:57:34 +01:00
. tb_offset = ( 1 < < 1 ) ,
2021-10-19 06:55:30 +02:00
. tb_register = FUNCR ,
2021-10-10 18:25:09 +02:00
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 5 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2021-10-10 18:25:09 +02:00
{ 0x9d6017 , {
. manufacturer = " ISSI " ,
. model = " IS25LP064 " ,
. nr_sector = 128 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = true ,
2021-12-22 18:57:34 +01:00
. tb_offset = ( 1 < < 1 ) ,
2021-10-19 06:55:30 +02:00
. tb_register = FUNCR ,
2021-10-10 18:25:09 +02:00
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 5 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2021-10-14 20:55:42 +02:00
{ 0x9d6018 , {
. manufacturer = " ISSI " ,
. model = " IS25LP128 " ,
. nr_sector = 256 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = true ,
2021-12-22 18:57:34 +01:00
. tb_offset = ( 1 < < 1 ) ,
2021-10-19 06:55:30 +02:00
. tb_register = FUNCR ,
2021-10-14 20:55:42 +02:00
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 5 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-06-03 11:27:51 +02:00
{ 0x9d6019 , {
2024-08-23 07:20:53 +02:00
/* https://www.issi.com/WW/pdf/IS25LP(WP)256D.pdf */
2024-06-03 11:27:51 +02:00
. manufacturer = " ISSI " ,
. model = " IS25LP256 " ,
. nr_sector = 512 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = true ,
. tb_offset = ( 1 < < 1 ) ,
. tb_register = FUNCR ,
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 5 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0xba6015 , {
. manufacturer = " Zetta " ,
. model = " ZD25WQ16CSIGT " ,
. nr_sector = 32 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = STATR ,
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0xbf258d , {
. manufacturer = " microchip " ,
. model = " SST25VF040B " ,
. nr_sector = 8 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = false ,
. tb_offset = 0 , // unused
. tb_register = NONER ,
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 5 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0xbf2642 , {
. manufacturer = " microchip " ,
. model = " SST26VF032B " ,
. nr_sector = 64 ,
. sector_erase = false ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = false ,
. tb_offset = 0 , // unused
. tb_register = NONER ,
. bp_len = 0 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { 0 , 0 , 0 , 0 } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0xbf2643 , {
. manufacturer = " microchip " ,
. model = " SST26VF064B " ,
. nr_sector = 128 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = false ,
. tb_offset = 0 , // unused
. tb_register = NONER ,
. bp_len = 0 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { 0 , 0 , 0 , 0 } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-02-01 19:48:21 +01:00
{ 0xc22016 , {
2024-08-23 07:20:53 +02:00
/* https://www.macronix.com/Lists/Datasheet/Attachments/8933/MX25L3233F,%203V,%2032Mb,%20v1.7.pdf */
2024-02-01 19:48:21 +01:00
. manufacturer = " Macronix " ,
. model = " MX25L3233F " ,
. nr_sector = 256 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = true ,
. tb_offset = ( 1 < < 3 ) ,
. tb_register = CONFR ,
. bp_len = 5 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 5 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2023-03-05 16:02:22 +01:00
{ 0xc22018 , {
2024-08-23 07:20:53 +02:00
/* https://www.macronix.com/Lists/Datasheet/Attachments/8934/MX25L12833F,%203V,%20128Mb,%20v1.0.pdf */
2023-03-05 16:02:22 +01:00
. manufacturer = " Macronix " ,
. model = " MX25L12833 " ,
. nr_sector = 256 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = true ,
. tb_offset = ( 1 < < 3 ) ,
. tb_register = CONFR ,
. bp_len = 5 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 5 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-08-23 07:20:53 +02:00
{ 0xc2201a , {
/* https://www.macronix.com/Lists/Datasheet/Attachments/8745/MX25L51245G,%203V,%20512Mb,%20v1.7.pdf */
2023-10-18 16:02:45 +02:00
. manufacturer = " Macronix " ,
. model = " MX25L51245G " ,
. nr_sector = 1024 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = true ,
. tb_offset = ( 1 < < 3 ) ,
. tb_register = CONFR ,
. bp_len = 5 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 5 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-03-15 00:44:17 +01:00
{ 0xc22817 , {
2024-08-23 07:20:53 +02:00
/* https://www.macronix.com/Lists/Datasheet/Attachments/8868/MX25R6435F,%20Wide%20Range,%2064Mb,%20v1.6.pdf */
2024-03-15 00:44:17 +01:00
. manufacturer = " Macronix " ,
. model = " MX25R6435F " ,
. nr_sector = 128 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = true ,
. tb_offset = ( 1 < < 3 ) ,
. tb_register = CONFR ,
. bp_len = 4 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , ( 1 < < 5 ) } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2023-04-03 23:26:03 +02:00
{ 0xef4014 , {
2024-08-23 07:20:53 +02:00
/* https://cdn-shop.adafruit.com/datasheets/W25Q80BV.pdf */
2023-04-03 23:26:03 +02:00
. manufacturer = " Winbond " ,
. model = " W25Q80BV " ,
. nr_sector = 16 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = STATR ,
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2021-12-22 18:58:07 +01:00
{ 0xef4015 , {
. manufacturer = " Winbond " ,
. model = " W25Q16 " ,
. nr_sector = 32 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = STATR ,
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2021-12-22 18:58:07 +01:00
{ 0xef4016 , {
. manufacturer = " Winbond " ,
. model = " W25Q32 " ,
. nr_sector = 64 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = STATR ,
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2021-12-22 18:58:07 +01:00
{ 0xef4017 , {
. manufacturer = " Winbond " ,
. model = " W25Q64 " ,
. nr_sector = 128 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
. tb_register = STATR ,
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2021-10-10 18:25:09 +02:00
{ 0xef4018 , {
2021-10-14 20:52:46 +02:00
. manufacturer = " Winbond " ,
2021-10-10 18:25:09 +02:00
. model = " W25Q128 " ,
. nr_sector = 256 ,
. sector_erase = true ,
. subsector_erase = true ,
. has_extended = false ,
. tb_otp = false ,
. tb_offset = ( 1 < < 5 ) ,
2021-10-19 06:55:30 +02:00
. tb_register = STATR ,
2021-10-10 18:25:09 +02:00
. bp_len = 3 ,
2024-08-25 09:32:13 +02:00
. bp_offset = { ( 1 < < 2 ) , ( 1 < < 3 ) , ( 1 < < 4 ) , 0 } ,
. quad_register = NONER ,
. quad_mask = 0 ,
} } ,
2024-03-28 13:20:08 +01:00
2021-10-10 18:25:09 +02:00
} ;
# endif // SRC_SPIFLASHDB_HPP_