Skip to content

Commit b757230

Browse files
committed
[sfud] 同步上游
1 parent 448843f commit b757230

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

components/drivers/spi/sfud/inc/sfud_flash_def.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ typedef struct {
9191
#define SFUD_MF_ID_GIGADEVICE 0xC8
9292
#define SFUD_MF_ID_ISSI 0xD5
9393
#define SFUD_MF_ID_WINBOND 0xEF
94-
#define SFUD_MF_ID_NM 0x52
94+
#define SFUD_MF_ID_NOR_MEM 0x52
9595

9696
/* SFUD supported manufacturer information table */
9797
#define SFUD_MF_TABLE \
@@ -112,7 +112,7 @@ typedef struct {
112112
{"ISSI", SFUD_MF_ID_ISSI}, \
113113
{"Winbond", SFUD_MF_ID_WINBOND}, \
114114
{"Macronix", SFUD_MF_ID_MACRONIX}, \
115-
{"NOR-MEM", SFUD_MF_ID_NM}, \
115+
{"NOR-MEM", SFUD_MF_ID_NOR_MEM}, \
116116
}
117117

118118
#ifdef SFUD_USING_FLASH_INFO_TABLE
@@ -125,24 +125,29 @@ typedef struct {
125125
{ \
126126
{"AT45DB161E", SFUD_MF_ID_ATMEL, 0x26, 0x00, 2L*1024L*1024L, SFUD_WM_BYTE|SFUD_WM_DUAL_BUFFER, 512, 0x81}, \
127127
{"W25Q40BV", SFUD_MF_ID_WINBOND, 0x40, 0x13, 512L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
128+
{"W25X40CL", SFUD_MF_ID_WINBOND, 0x30, 0x13, 512L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
129+
{"W25X16AV", SFUD_MF_ID_WINBOND, 0x30, 0x15, 2L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
128130
{"W25Q16BV", SFUD_MF_ID_WINBOND, 0x40, 0x15, 2L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
131+
{"W25Q32BV", SFUD_MF_ID_WINBOND, 0x40, 0x16, 4L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
129132
{"W25Q64CV", SFUD_MF_ID_WINBOND, 0x40, 0x17, 8L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
130133
{"W25Q64DW", SFUD_MF_ID_WINBOND, 0x60, 0x17, 8L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
131134
{"W25Q128BV", SFUD_MF_ID_WINBOND, 0x40, 0x18, 16L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
132135
{"W25Q256FV", SFUD_MF_ID_WINBOND, 0x40, 0x19, 32L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
136+
{"SST25VF080B", SFUD_MF_ID_SST, 0x25, 0x8E, 1L*1024L*1024L, SFUD_WM_BYTE|SFUD_WM_AAI, 4096, 0x20}, \
133137
{"SST25VF016B", SFUD_MF_ID_SST, 0x25, 0x41, 2L*1024L*1024L, SFUD_WM_BYTE|SFUD_WM_AAI, 4096, 0x20}, \
134138
{"M25P32", SFUD_MF_ID_MICRON, 0x20, 0x16, 4L*1024L*1024L, SFUD_WM_PAGE_256B, 64L*1024L, 0xD8}, \
135139
{"M25P80", SFUD_MF_ID_MICRON, 0x20, 0x14, 1L*1024L*1024L, SFUD_WM_PAGE_256B, 64L*1024L, 0xD8}, \
136140
{"M25P40", SFUD_MF_ID_MICRON, 0x20, 0x13, 512L*1024L, SFUD_WM_PAGE_256B, 64L*1024L, 0xD8}, \
137141
{"EN25Q32B", SFUD_MF_ID_EON, 0x30, 0x16, 4L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
138142
{"GD25Q64B", SFUD_MF_ID_GIGADEVICE, 0x40, 0x17, 8L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
139143
{"GD25Q16B", SFUD_MF_ID_GIGADEVICE, 0x40, 0x15, 2L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
144+
{"GD25Q32C", SFUD_MF_ID_GIGADEVICE, 0x40, 0x16, 4L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
140145
{"S25FL216K", SFUD_MF_ID_CYPRESS, 0x40, 0x15, 2L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
141146
{"S25FL032P", SFUD_MF_ID_CYPRESS, 0x02, 0x15, 4L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
142147
{"A25L080", SFUD_MF_ID_AMIC, 0x30, 0x14, 1L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
143148
{"F25L004", SFUD_MF_ID_ESMT, 0x20, 0x13, 512L*1024L, SFUD_WM_BYTE|SFUD_WM_AAI, 4096, 0x20}, \
144149
{"PCT25VF016B", SFUD_MF_ID_SST, 0x25, 0x41, 2L*1024L*1024L, SFUD_WM_BYTE|SFUD_WM_AAI, 4096, 0x20}, \
145-
{"NM25Q128EVB", SFUD_MF_ID_NM, 0x21, 0x18, 16L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
150+
{"NM25Q128EVB", SFUD_MF_ID_NOR_MEM, 0x21, 0x18, 16L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
146151
}
147152
#endif /* SFUD_USING_FLASH_INFO_TABLE */
148153

@@ -182,7 +187,7 @@ typedef struct {
182187
/* GD25Q64B */ \
183188
{SFUD_MF_ID_GIGADEVICE, 0x40, 0x17, NORMAL_SPI_READ|DUAL_OUTPUT}, \
184189
/* NM25Q128EVB */ \
185-
{SFUD_MF_ID_NM, 0x21, 0x18, NORMAL_SPI_READ|DUAL_OUTPUT|DUAL_IO|QUAD_OUTPUT|QUAD_IO}, \
190+
{SFUD_MF_ID_NOR_MEM, 0x21, 0x18, NORMAL_SPI_READ|DUAL_OUTPUT|DUAL_IO|QUAD_OUTPUT|QUAD_IO}, \
186191
}
187192
#endif /* SFUD_USING_QSPI */
188193

components/drivers/spi/sfud/src/sfud.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -348,14 +348,18 @@ static sfud_err hardware_init(sfud_flash *flash) {
348348
return result;
349349
}
350350

351-
/* I found when the flash write mode is supported AAI mode. The flash all blocks is protected,
352-
* so need change the flash status to unprotected before write and erase operate. */
351+
/* The flash all blocks is protected,so need change the flash status to unprotected before write and erase operate. */
353352
if (flash->chip.write_mode & SFUD_WM_AAI) {
354353
result = sfud_write_status(flash, true, 0x00);
355-
if (result != SFUD_SUCCESS) {
356-
return result;
354+
} else {
355+
/* MX25L3206E */
356+
if ((0xC2 == flash->chip.mf_id) && (0x20 == flash->chip.type_id) && (0x16 == flash->chip.capacity_id)) {
357+
result = sfud_write_status(flash, false, 0x00);
357358
}
358359
}
360+
if (result != SFUD_SUCCESS) {
361+
return result;
362+
}
359363

360364
/* if the flash is large than 16MB (256Mb) then enter in 4-Byte addressing mode */
361365
if (flash->chip.capacity > (1L << 24)) {

0 commit comments

Comments
 (0)