Add EON EN29SL800 NOR flash support
PATCH 1/1 Add EON EN29SL800 NOR flash support
This patch adds support for Eon Silicon Solution EN29SL800 NOR flashes
Signed-off-by Mike Rapoport <[email protected]>
--- drivers/mtd/chips/jedec_probe.c | 58 ++++++++++++++++++++++++++++++++++++--- 1 files changed, 54 insertions(+), 4 deletions(-)
drivers/mtd/chips/jedec_probe.c +54 -4
@@ -37,7 +37,7 @@#define MANUFACTURER_ST 0x0020#define MANUFACTURER_TOSHIBA 0x0098#define MANUFACTURER_WINBOND 0x00da - +#define CONTINUATION_CODE 0x007f/* AMD */ #define AM29DL800BB 0x22C8
@@ -67,6 +67,10 @@#define AT49BV32X 0x00C8#define AT49BV32XT 0x00C9 +/* Eon */ +#define EN29SL800BB 0x226B +#define EN29SL800BT 0x22EA +/* Fujitsu */ #define MBM29F040C 0x00A4#define MBM29F800BA 0x2258
@@ -633,6 +637,40 @@ static const struct amd_flash_info jedec_table[] = { ERASEINFO(0x02000,8) } }, { + .mfr_id = 0x1c, + .dev_id = EN29SL800BT, + .name = "Eon EN29SL800BT", + .uaddr = { + [0] = MTD_UADDR_0x0555_0x02AA, /* x8 */ + [1 ] = MTD_UADDR_0x0555_0x02AA,/* x16 */ + }, + .DevSize = SIZE_1MiB, + .CmdSet = P_ID_AMD_STD, + .NumEraseRegions= 4, + .regions = { +ERASEINFO (0x10000 ,15 ), +ERASEINFO (0x08000 ,1 ), +ERASEINFO (0x02000 ,2 ), + ERASEINFO(0x04000, 1), + } + }, { + .mfr_id =0x1c , + .dev_id = EN29SL800BB, + .name = "Eon EN29SL800BB", + .uaddr = { + [0] = MTD_UADDR_0x0555_0x02AA, /* x8 */ + [1 ] = MTD_UADDR_0x0555_0x02AA,/* x16 */ + }, + .DevSize = SIZE_1MiB, + .CmdSet = P_ID_AMD_STD, + .NumEraseRegions= 4, + .regions = { +ERASEINFO (0x04000 ,1 ), +ERASEINFO (0x02000 ,2 ), +ERASEINFO (0x08000 ,1 ), + ERASEINFO(0x10000, 15), + } + }, { .mfr_id =MANUFACTURER_FUJITSU , .dev_id = MBM29F040C, .name = "Fujitsu MBM29F040C",
@@ -1804,9 +1842,21 @@ static inline u32 jedec_read_mfr(struct map_info *map, __u32 base, {map_word result;unsigned long mask; -u32 ofs =cfi_build_cmd_addr (0 ,cfi_interleave (cfi), cfi->device_type); - mask = (1 << (cfi->device_type *8 )) -1 ; - result =map_read (map, base + ofs); +int bank =0 ; + +/* According to JEDEC "Standard Manufacturer's Identification Code" +* (http://www.jedec.org/download/search/jep106W.pdf) +* several first banks can contain 0x7f instead of actual ID +*/ +do { +u32 ofs =cfi_build_cmd_addr (0 + (bank <<8 ), +cfi_interleave (cfi), + cfi->device_type); + mask = (1 << (cfi->device_type *8 )) -1 ; + result =map_read (map, base + ofs); + bank++; + }while ((result.x[0 ] & mask) ==CONTINUATION_CODE ); +return result.x[0 ] & mask; }
Signature · 1 line
1.5.1.6