summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWolfgang Denk <wd@pollux.denx.de>2005-10-05 00:03:55 +0200
committerWolfgang Denk <wd@pollux.denx.de>2005-10-05 00:03:55 +0200
commit45237bc00b29bd88e8456367d7b006ab80f95ee9 (patch)
treef127f2df727562a7c617fd5e6b9edadf67a7f9f2
parent7d314992a82cea41bb5de596421100ddce9d9c17 (diff)
downloadu-boot-imx-45237bc00b29bd88e8456367d7b006ab80f95ee9.zip
u-boot-imx-45237bc00b29bd88e8456367d7b006ab80f95ee9.tar.gz
u-boot-imx-45237bc00b29bd88e8456367d7b006ab80f95ee9.tar.bz2
Add support for S29GL064M-R3 flash chip on xsengine board
Patch by Kurt Stremerch, 18 Apr 2005
-rw-r--r--CHANGELOG3
-rw-r--r--board/xsengine/flash.c33
-rw-r--r--include/flash.h2
3 files changed, 14 insertions, 24 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 2b44601..3303bb7 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@
Changes for U-Boot 1.1.4:
======================================================================
+* Add support for S29GL064M-R3 flash chip on xsengine board
+ Patch by Kurt Stremerch, 18 Apr 2005
+
* E500 update: repoint IVPR to RAM when code is relocated
Patch by Kylo Ginsberg, 13 Apr 2005
diff --git a/board/xsengine/flash.c b/board/xsengine/flash.c
index 3f93700..2b9afc7 100644
--- a/board/xsengine/flash.c
+++ b/board/xsengine/flash.c
@@ -101,13 +101,9 @@ void flash_print_info (flash_info_t *info)
}
switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AMLV128U: printf ("AM29LV128ML (128Mbit, uniform sector size)\n");
- break;
- case FLASH_AMLV320U: printf ("AM29LV320ML (32Mbit, uniform sector size)\n");
- break;
case FLASH_AMLV640U: printf ("AM29LV640ML (64Mbit, uniform sector size)\n");
break;
- case FLASH_AMLV320B: printf ("AM29LV320MB (32Mbit, bottom boot sect)\n");
+ case FLASH_S29GL064M: printf ("S29GL064M (64Mbit, top boot sector size)\n");
break;
default: printf ("Unknown Chip Type\n");
break;
@@ -174,17 +170,6 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
debug ("Mirror Bit flash: addr[14] = %08lX addr[15] = %08lX\n",
addr[14], addr[15]);
switch(addr[14]) {
- case AMD_ID_LV128U_2:
- if (addr[15] != AMD_ID_LV128U_3) {
- debug ("Chip: AMLV128U -> unknown\n");
- info->flash_id = FLASH_UNKNOWN;
- } else {
- debug ("Chip: AMLV128U\n");
- info->flash_id += FLASH_AMLV128U;
- info->sector_count = 256;
- info->size = 0x02000000;
- }
- break; /* => 32 MB */
case AMD_ID_LV640U_2:
if (addr[15] != AMD_ID_LV640U_3) {
debug ("Chip: AMLV640U -> unknown\n");
@@ -196,17 +181,17 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
info->size = 0x01000000;
}
break; /* => 16 MB */
- case AMD_ID_LV320B_2:
- if (addr[15] != AMD_ID_LV320B_3) {
- debug ("Chip: AMLV320B -> unknown\n");
+ case AMD_ID_GL064MT_2:
+ if (addr[15] != AMD_ID_GL064MT_3) {
+ debug ("Chip: S29GL064M-R3 -> unknown\n");
info->flash_id = FLASH_UNKNOWN;
} else {
- debug ("Chip: AMLV320B\n");
- info->flash_id += FLASH_AMLV320B;
- info->sector_count = 71;
- info->size = 0x00800000;
+ debug ("Chip: S29GL064M-R3\n");
+ info->flash_id += FLASH_S29GL064M;
+ info->sector_count = 128;
+ info->size = 0x01000000;
}
- break; /* => 8 MB */
+ break; /* => 16 MB */
default:
debug ("Chip: *** unknown ***\n");
info->flash_id = FLASH_UNKNOWN;
diff --git a/include/flash.h b/include/flash.h
index beab260..6381cfc 100644
--- a/include/flash.h
+++ b/include/flash.h
@@ -206,6 +206,8 @@ extern void flash_read_factory_serial(flash_info_t * info, void * buffer, int of
#define AMD_ID_LV256U_3 0x22012201 /* 3rd ID word for AM29LV256M at 0x3c */
#define AMD_ID_GL064M_2 0x22132213 /* 2nd ID word for S29GL064M-R6 */
#define AMD_ID_GL064M_3 0x22012201 /* 3rd ID word for S29GL064M-R6 */
+#define AMD_ID_GL064MT_2 0x22102210 /* 2nd ID word for S29GL064M-R3 (top boot sector) */
+#define AMD_ID_GL064MT_3 0x22012201 /* 3rd ID word for S29GL064M-R3 (top boot sector) */
#define AMD_ID_LV320B_2 0x221A221A /* 2d ID word for AM29LV320MB at 0x38 */
#define AMD_ID_LV320B_3 0x22002200 /* 3d ID word for AM29LV320MB at 0x3c */