Add support for flash chips with ID in bank other than 0
PATCH 1/2 Add support for flash chips with ID in bank other than 0
According to JEDEC "Standard Manufacturer's Identification Code"
(http://www.jedec.org/download/search/jep106W.pdf)
several first banks of NOR flash can contain 0x7f instead of actual ID. This patch adds support for reading manufacturer ID from banks other than 0.
Signed-off-by Mike Rapoport <[email protected]>
--- drivers/mtd/chips/jedec_probe.c | 19 ++++++++++++++++--- 1 files changed, 16 insertions(+), 3 deletions(-)
drivers/mtd/chips/jedec_probe.c +16 -3
@@ -37,6 +37,7 @@#define MANUFACTURER_ST 0x0020#define MANUFACTURER_TOSHIBA 0x0098#define MANUFACTURER_WINBOND 0x00da +#define CONTINUATION_CODE 0x007f/* AMD */
@@ -1728,9 +1729,21 @@ static inline u32 jedec_read_mfr(struct map_info *map, uint32_t 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 · 6 lines
1.5.3.7 -- Sincerely yours, Mike.