Skip to contentSkip to conversation

Add some second source legacy flash chips 256x8

PATCH New Niklaus Giger 3 participants 3 messages Jul 21, 2009 – Aug 27, 2009 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Add some second source legacy flash chips 256x8

---

We tested some boot flashes as possible second source.
As some had ids above 0x7f, we had to implement JEDEC JEP106Z in cfi_flash.c. I now that I just missed the merge window, but the patches are not urgent and I was away for a three week

 drivers/mtd/cfi_flash.c   |   16 +++++++++--
 drivers/mtd/jedec_flash.c |   67 +++++++++++++++++++++++++++++++++++++++++++++
 include/flash.h           |   10 ++++++-
 3 files changed, 89 insertions(+), 4 deletions(-)
drivers/mtd/cfi_flash.c +13 -3
index 81ac5d3..4cd0116 100644
@@ -106,6 +106,8 @@
 #define ATM_CMD_SOFTLOCK_START		0x80
 #define ATM_CMD_LOCK_SECT		0x40
 
+#define FLASH_CONTINUATION_CODE         0x7F
+
 #define FLASH_OFFSET_MANUFACTURER_ID	0x00
 #define FLASH_OFFSET_DEVICE_ID		0x01
 #define FLASH_OFFSET_DEVICE_ID2		0x0E
@@ -1541,13 +1543,21 @@ static int cmdset_intel_init(flash_info_t *info, struct cfi_qry *qry)
 
 static void cmdset_amd_read_jedec_ids(flash_info_t *info)
 {
-	flash_write_cmd(info, 0, 0, AMD_CMD_RESET);
+	ushort bankId = 0;
+	uchar  manuId;
+
+        flash_write_cmd(info, 0, 0, AMD_CMD_RESET);
 	flash_unlock_seq(info, 0);
 	flash_write_cmd(info, 0, info->addr_unlock1, FLASH_CMD_READ_ID);
 	udelay(1000); /* some flash are slow to respond */
 
-	info->manufacturer_id = flash_read_uchar (info,
-					FLASH_OFFSET_MANUFACTURER_ID);
+	manuId = flash_read_uchar (info, FLASH_OFFSET_MANUFACTURER_ID);
+	/* JEDEC JEP106Z specifies ID codes up to bank 7 */
+	while(manuId == FLASH_CONTINUATION_CODE && bankId < 0x800) {
+		bankId += 0x100;
+		manuId = flash_read_uchar (info, bankId | FLASH_OFFSET_MANUFACTURER_ID);
+	}
+	info->manufacturer_id = manuId;
 
 	switch (info->chipwidth){
 	case FLASH_CFI_8BIT:
drivers/mtd/jedec_flash.c +67 -0

79 lines not on this page · raw message

include/flash.h +9 -1
index b016162..8feca1b 100644
@@ -46,7 +46,7 @@ typedef struct {
 	ushort	cmd_reset;		/* vendor specific reset command	*/
 	ushort	interface;		/* used for x8/x16 adjustments		*/
 	ushort	legacy_unlock;		/* support Intel legacy (un)locking	*/
-	uchar	manufacturer_id;	/* manufacturer id			*/
+	ushort	manufacturer_id;	/* manufacturer id			*/
 	ushort	device_id;		/* device id				*/
 	ushort	device_id2;		/* extended device id			*/
 	ushort	ext_addr;		/* extended query table address		*/
@@ -154,6 +154,7 @@ extern flash_info_t *flash_get_info(ulong base);
  * Device IDs
  */
 
+/* Manufacturers inside bank 0 have ids like 0x00xx00xx */
 #define AMD_MANUFACT	0x00010001	/* AMD	   manuf. ID in D23..D16, D7..D0 */
 #define FUJ_MANUFACT	0x00040004	/* FUJITSU manuf. ID in D23..D16, D7..D0 */
 #define ATM_MANUFACT	0x001F001F	/* ATMEL */
@@ -166,6 +167,13 @@ extern flash_info_t *flash_get_info(ulong base);
 #define TOSH_MANUFACT	0x00980098	/* TOSHIBA manuf. ID in D23..D16, D7..D0 */
 #define MT2_MANUFACT	0x002C002C	/* alternate MICRON manufacturer ID*/
 #define EXCEL_MANUFACT	0x004A004A	/* Excel Semiconductor			*/
+#define AMIC_MANUFACT	0x00370037	/* AMIC    manuf. ID in D23..D16, D7..D0 */
+#define WINB_MANUFACT	0x00DA00DA	/* Winbond manuf. ID in D23..D16, D7..D0 */
+
+/* Manufacturers inside bank 1 have ids like 0x01xx01xx */
+#define EON_MANUFACT	0x011C011C	/* EON     manuf. ID in D23..D16, D7..D0 */
+
+/* Manufacturers inside bank 2 have ids like 0x02xx02xx */
 
 					/* Micron Technologies (INTEL compat.)	*/
 #define MT_ID_28F400_T	0x44704470	/* 28F400B3 ID ( 4 M, top boot sector)	*/

--
1.6.3.3

#1 lore raw

PATCH 1/1 Add some second source legacy flash chips 256x8

Dear Stefan,

Quoted 8 lines · In message <[email protected]>…

---

We tested some boot flashes as possible second source.
As some had ids above 0x7f, we had to implement JEDEC JEP106Z in cfi_flash.c. I now that I just missed the merge window, but the patches are not urgent and I was away for a three week

Quoted 4 lines
 drivers/mtd/cfi_flash.c   |   16 +++++++++--
 drivers/mtd/jedec_flash.c |   67 +++++++++++++++++++++++++++++++++++++++++++++
 include/flash.h           |   10 ++++++-
 3 files changed, 89 insertions(+), 4 deletions(-)

Any chance to pick this up for "next"?

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Ever try. Ever fail. No matter. Try again. Fail again.  Fail  better.
                                                        -- S. Beckett
#2 lore raw

PATCH 1/1 Add some second source legacy flash chips 256x8

Hi Wolfgang,

Quoted 5 lines · On Wednesday 26 August 2009 22:10:42 Wolfgang Denk wrote:
Quoted 5 lines

We tested some boot flashes as possible second source.
As some had ids above 0x7f, we had to implement JEDEC JEP106Z in cfi_flash.c. I now that I just missed the merge window, but the patches are not urgent and I was away for a three week

Quoted 7 lines
Quoted 5 lines
 drivers/mtd/cfi_flash.c   |   16 +++++++++--
 drivers/mtd/jedec_flash.c |   67
+++++++++++++++++++++++++++++++++++++++++++++ include/flash.h           |
  10 ++++++-
 3 files changed, 89 insertions(+), 4 deletions(-)

Any chance to pick this up for "next"?

This patch was superseded by this one:

Support up to 7 banks for ids as specified in JEDEC JEP106Z

which you pulled into next just last night.

Cheers,
Stefan

--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: office at denx.de