From d784fdb05900ada3686d5778783e1fb328e9fb66 Mon Sep 17 00:00:00 2001
From: Stefano Babic <sbabic@denx.de>
Date: Tue, 12 Dec 2006 00:22:42 +0100
Subject: [PATCH] Fix cfi failure with Spansion Flash (Spansion Flash Devices
 have a different offset to go into CFI mode)

---
 drivers/cfi_flash.c | 3 ++-
 include/flash.h     | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/cfi_flash.c b/drivers/cfi_flash.c
index 9b10220fc7..68a2c71bb9 100644
--- a/drivers/cfi_flash.c
+++ b/drivers/cfi_flash.c
@@ -1149,6 +1149,7 @@ static int flash_detect_cfi (flash_info_t * info)
 			    && flash_isequal (info, 0, FLASH_OFFSET_CFI_RESP + 1, 'R')
 			    && flash_isequal (info, 0, FLASH_OFFSET_CFI_RESP + 2, 'Y')) {
 				info->interface = flash_read_ushort (info, 0, FLASH_OFFSET_INTERFACE);
+				info->cfi_offset=flash_offset_cfi[cfi_offset];
 				debug ("device interface is %d\n",
 				       info->interface);
 				debug ("found port %d chip %d ",
@@ -1193,7 +1194,7 @@ ulong flash_get_size (ulong base, int banknum)
 		info->vendor = flash_read_ushort (info, 0,
 					FLASH_OFFSET_PRIMARY_VENDOR);
 		flash_read_jedec_ids (info);
-		flash_write_cmd (info, 0, FLASH_OFFSET_CFI, FLASH_CMD_CFI);
+		flash_write_cmd (info, 0, info->cfi_offset, FLASH_CMD_CFI);
 		num_erase_regions = flash_read_uchar (info,
 					FLASH_OFFSET_NUM_ERASE_REGIONS);
 		info->ext_addr = flash_read_ushort (info, 0,
diff --git a/include/flash.h b/include/flash.h
index 9c57cbc427..8b7e824cca 100644
--- a/include/flash.h
+++ b/include/flash.h
@@ -51,6 +51,7 @@ typedef struct {
 	ushort	device_id2;		/* extended device id			*/
 	ushort	ext_addr;		/* extended query table address		*/
 	ushort	cfi_version;		/* cfi version				*/
+	ushort	cfi_offset;		/* offset for cfi query 		*/
 #endif
 } flash_info_t;
 
-- 
2.39.5