aboutsummaryrefslogtreecommitdiff
path: root/board/pm826/flash.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/pm826/flash.c')
-rw-r--r--board/pm826/flash.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/board/pm826/flash.c b/board/pm826/flash.c
index 770a46d..fee07cf 100644
--- a/board/pm826/flash.c
+++ b/board/pm826/flash.c
@@ -69,6 +69,11 @@ ulong flash_get_size (volatile unsigned long *baseaddr,
info->sector_count = 39;
info->size = 0x00800000; /* 4 * 2 MB = 8 MB */
break;
+ case INTEL_ID_28F640C3B:
+ info->flash_id = FLASH_28F640C3B;
+ info->sector_count = 135;
+ info->size = 0x02000000; /* 16 * 2 MB = 32 MB */
+ break;
default:
return (0); /* no or unknown flash */
}
@@ -79,10 +84,11 @@ ulong flash_get_size (volatile unsigned long *baseaddr,
volatile unsigned long *tmp = baseaddr;
/* set up sector start adress table (bottom sector type)
- * AND unlock the sectors (if our chip is 160C3)
+ * AND unlock the sectors (if our chip is 160C3 or 640C3)
*/
for (i = 0; i < info->sector_count; i++) {
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_28F160C3B) {
+ if (((info->flash_id & FLASH_TYPEMASK) == FLASH_28F160C3B) ||
+ ((info->flash_id & FLASH_TYPEMASK) == FLASH_28F640C3B)) {
tmp[0] = 0x00600060;
tmp[1] = 0x00600060;
tmp[0] = 0x00D000D0;
@@ -177,6 +183,9 @@ void flash_print_info (flash_info_t * info)
case FLASH_28F160F3B:
printf ("28F160F3B (16 M, bottom sector)\n");
break;
+ case FLASH_28F640C3B:
+ printf ("28F640C3B (64 M, bottom sector)\n");
+ break;
default:
printf ("Unknown Chip Type\n");
break;