@@ -85,6 +85,7 @@ struct flash_info {
85
85
* Use dedicated 4byte address op codes
86
86
* to support memory size above 128Mib.
87
87
*/
88
+ #define NO_CHIP_ERASE BIT(12) /* Chip does not support chip erase */
88
89
};
89
90
90
91
#define JEDEC_MFR (info ) ((info)->id[0])
@@ -960,6 +961,8 @@ static const struct flash_info spi_nor_ids[] = {
960
961
961
962
/* ESMT */
962
963
{ "f25l32pa" , INFO (0x8c2016 , 0 , 64 * 1024 , 64 , SECT_4K | SPI_NOR_HAS_LOCK ) },
964
+ { "f25l32qa" , INFO (0x8c4116 , 0 , 64 * 1024 , 64 , SECT_4K | SPI_NOR_HAS_LOCK ) },
965
+ { "f25l64qa" , INFO (0x8c4117 , 0 , 64 * 1024 , 128 , SECT_4K | SPI_NOR_HAS_LOCK ) },
963
966
964
967
/* Everspin */
965
968
{ "mr25h256" , CAT25_INFO ( 32 * 1024 , 1 , 256 , 2 , SPI_NOR_NO_ERASE | SPI_NOR_NO_FR ) },
@@ -1013,11 +1016,14 @@ static const struct flash_info spi_nor_ids[] = {
1013
1016
{ "mx25l3205d" , INFO (0xc22016 , 0 , 64 * 1024 , 64 , SECT_4K ) },
1014
1017
{ "mx25l3255e" , INFO (0xc29e16 , 0 , 64 * 1024 , 64 , SECT_4K ) },
1015
1018
{ "mx25l6405d" , INFO (0xc22017 , 0 , 64 * 1024 , 128 , SECT_4K ) },
1019
+ { "mx25u2033e" , INFO (0xc22532 , 0 , 64 * 1024 , 4 , SECT_4K ) },
1020
+ { "mx25u4035" , INFO (0xc22533 , 0 , 64 * 1024 , 8 , SECT_4K ) },
1021
+ { "mx25u8035" , INFO (0xc22534 , 0 , 64 * 1024 , 16 , SECT_4K ) },
1016
1022
{ "mx25u6435f" , INFO (0xc22537 , 0 , 64 * 1024 , 128 , SECT_4K ) },
1017
1023
{ "mx25l12805d" , INFO (0xc22018 , 0 , 64 * 1024 , 256 , 0 ) },
1018
1024
{ "mx25l12855e" , INFO (0xc22618 , 0 , 64 * 1024 , 256 , 0 ) },
1019
1025
{ "mx25l25635e" , INFO (0xc22019 , 0 , 64 * 1024 , 512 , 0 ) },
1020
- { "mx25u25635f" , INFO (0xc22539 , 0 , 64 * 1024 , 512 , SECT_4K ) },
1026
+ { "mx25u25635f" , INFO (0xc22539 , 0 , 64 * 1024 , 512 , SECT_4K | SPI_NOR_4B_OPCODES ) },
1021
1027
{ "mx25l25655e" , INFO (0xc22619 , 0 , 64 * 1024 , 512 , 0 ) },
1022
1028
{ "mx66l51235l" , INFO (0xc2201a , 0 , 64 * 1024 , 1024 , SPI_NOR_QUAD_READ ) },
1023
1029
{ "mx66l1g55g" , INFO (0xc2261b , 0 , 64 * 1024 , 2048 , SPI_NOR_QUAD_READ ) },
@@ -1031,10 +1037,11 @@ static const struct flash_info spi_nor_ids[] = {
1031
1037
{ "n25q128a11" , INFO (0x20bb18 , 0 , 64 * 1024 , 256 , SECT_4K | SPI_NOR_QUAD_READ ) },
1032
1038
{ "n25q128a13" , INFO (0x20ba18 , 0 , 64 * 1024 , 256 , SECT_4K | SPI_NOR_QUAD_READ ) },
1033
1039
{ "n25q256a" , INFO (0x20ba19 , 0 , 64 * 1024 , 512 , SECT_4K | SPI_NOR_QUAD_READ ) },
1040
+ { "n25q256ax1" , INFO (0x20bb19 , 0 , 64 * 1024 , 512 , SECT_4K | SPI_NOR_QUAD_READ ) },
1034
1041
{ "n25q512a" , INFO (0x20bb20 , 0 , 64 * 1024 , 1024 , SECT_4K | USE_FSR | SPI_NOR_QUAD_READ ) },
1035
1042
{ "n25q512ax3" , INFO (0x20ba20 , 0 , 64 * 1024 , 1024 , SECT_4K | USE_FSR | SPI_NOR_QUAD_READ ) },
1036
- { "n25q00" , INFO (0x20ba21 , 0 , 64 * 1024 , 2048 , SECT_4K | USE_FSR | SPI_NOR_QUAD_READ ) },
1037
- { "n25q00a" , INFO (0x20bb21 , 0 , 64 * 1024 , 2048 , SECT_4K | USE_FSR | SPI_NOR_QUAD_READ ) },
1043
+ { "n25q00" , INFO (0x20ba21 , 0 , 64 * 1024 , 2048 , SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | NO_CHIP_ERASE ) },
1044
+ { "n25q00a" , INFO (0x20bb21 , 0 , 64 * 1024 , 2048 , SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | NO_CHIP_ERASE ) },
1038
1045
1039
1046
/* PMC */
1040
1047
{ "pm25lv512" , INFO (0 , 0 , 32 * 1024 , 2 , SECT_4K_PMC ) },
@@ -1128,6 +1135,9 @@ static const struct flash_info spi_nor_ids[] = {
1128
1135
{ "w25x80" , INFO (0xef3014 , 0 , 64 * 1024 , 16 , SECT_4K ) },
1129
1136
{ "w25x16" , INFO (0xef3015 , 0 , 64 * 1024 , 32 , SECT_4K ) },
1130
1137
{ "w25x32" , INFO (0xef3016 , 0 , 64 * 1024 , 64 , SECT_4K ) },
1138
+ { "w25q20cl" , INFO (0xef4012 , 0 , 64 * 1024 , 4 , SECT_4K ) },
1139
+ { "w25q20bw" , INFO (0xef5012 , 0 , 64 * 1024 , 4 , SECT_4K ) },
1140
+ { "w25q20ew" , INFO (0xef6012 , 0 , 64 * 1024 , 4 , SECT_4K ) },
1131
1141
{ "w25q32" , INFO (0xef4016 , 0 , 64 * 1024 , 64 , SECT_4K ) },
1132
1142
{
1133
1143
"w25q32dw" , INFO (0xef6016 , 0 , 64 * 1024 , 64 ,
@@ -1629,6 +1639,8 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, enum read_mode mode)
1629
1639
nor -> flags |= SNOR_F_USE_FSR ;
1630
1640
if (info -> flags & SPI_NOR_HAS_TB )
1631
1641
nor -> flags |= SNOR_F_HAS_SR_TB ;
1642
+ if (info -> flags & NO_CHIP_ERASE )
1643
+ nor -> flags |= SNOR_F_NO_OP_CHIP_ERASE ;
1632
1644
1633
1645
#ifdef CONFIG_MTD_SPI_NOR_USE_4K_SECTORS
1634
1646
/* prefer "small sector" erase if possible */
0 commit comments