diff mbox

[U-Boot,v2] mtd, cfi: read AMD 3-byte (expanded) device ids on 16bit devices

Message ID 1302524179-11468-1-git-send-email-hs@denx.de
State Awaiting Upstream
Delegated to: Stefan Roese
Headers show

Commit Message

Heiko Schocher April 11, 2011, 12:16 p.m. UTC
tested on the a4m072 board with a S29GL512P flash.

flinfo without this patch
Bank # 1: CFI conformant flash (16 x 16)  Size: 32 MB in 256 Sectors
  AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x227E
  Erase timeout: 16384 ms, write timeout: 2 ms
  Buffer write timeout: 5 ms, buffer size: 32 bytes
[...]

flinfo with this patch
Bank # 1: CFI conformant flash (16 x 16)  Size: 32 MB in 256 Sectors
  AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x227E2301
  Erase timeout: 16384 ms, write timeout: 2 ms
  Buffer write timeout: 5 ms, buffer size: 32 bytes
[...]

Signed-off-by: Heiko Schocher <hs@denx.de>
---
changes for v2:
- added flinfo output in commit message

 drivers/mtd/cfi_flash.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

Comments

Stefan Roese April 21, 2011, 1:55 p.m. UTC | #1
On Monday 11 April 2011 14:16:19 Heiko Schocher wrote:
> tested on the a4m072 board with a S29GL512P flash.
> 
> flinfo without this patch
> Bank # 1: CFI conformant flash (16 x 16)  Size: 32 MB in 256 Sectors
>   AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x227E
>   Erase timeout: 16384 ms, write timeout: 2 ms
>   Buffer write timeout: 5 ms, buffer size: 32 bytes
> [...]
> 
> flinfo with this patch
> Bank # 1: CFI conformant flash (16 x 16)  Size: 32 MB in 256 Sectors
>   AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x227E2301
>   Erase timeout: 16384 ms, write timeout: 2 ms
>   Buffer write timeout: 5 ms, buffer size: 32 bytes
> [...]

Applied to u-boot-cfi-flash/master. Thanks.

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@denx.de
diff mbox

Patch

diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
index 5788328..7617e0e 100644
--- a/drivers/mtd/cfi_flash.c
+++ b/drivers/mtd/cfi_flash.c
@@ -1202,8 +1202,9 @@  void flash_print_info (flash_info_t * info)
 		info->manufacturer_id);
 	printf (info->chipwidth == FLASH_CFI_16BIT ? "%04X" : "%02X",
 		info->device_id);
-	if (info->device_id == 0x7E) {
-		printf("%04X", info->device_id2);
+	if ((info->device_id & 0xff) == 0x7E) {
+		printf(info->chipwidth == FLASH_CFI_16BIT ? "%04X" : "%02X",
+		info->device_id2);
 	}
 	printf ("\n  Erase timeout: %ld ms, write timeout: %ld ms\n",
 		info->erase_blk_tout,
@@ -1599,6 +1600,14 @@  static void cmdset_amd_read_jedec_ids(flash_info_t *info)
 	case FLASH_CFI_16BIT:
 		info->device_id = flash_read_word (info,
 						FLASH_OFFSET_DEVICE_ID);
+		if ((info->device_id & 0xff) == 0x7E) {
+			/* AMD 3-byte (expanded) device ids */
+			info->device_id2 = flash_read_uchar (info,
+						FLASH_OFFSET_DEVICE_ID2);
+			info->device_id2 <<= 8;
+			info->device_id2 |= flash_read_uchar (info,
+						FLASH_OFFSET_DEVICE_ID3);
+		}
 		break;
 	default:
 		break;