changeset 553:3886a8a40809

fc-loadtool: added support for old Am29DL640G flash chip
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 21 Dec 2019 10:48:24 +0000
parents 6e8edc321460
children c44f3bf0e4d5
files loadtools/flashid.c loadtools/fldevs.c
diffstat 2 files changed, 50 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/loadtools/flashid.c	Sun Nov 17 22:40:36 2019 +0000
+++ b/loadtools/flashid.c	Sat Dec 21 10:48:24 2019 +0000
@@ -14,6 +14,7 @@
 extern struct flash_device flashdev_28F640C3B;
 extern struct flash_device flashdev_28F640W30T;
 extern struct flash_device flashdev_28F640W30B;
+extern struct flash_device flashdev_Am29DL640G;
 extern struct flash_device flashdev_PL129J;
 extern struct flash_device flashdev_PL129N;
 extern struct flash_device flashdev_K5A32xx_T;
@@ -111,6 +112,8 @@
 	printf("Extended ID: %04X %04X\n", ext1, ext2);
 	if (ext1 == 0x2221 && ext2 == 0x2200)
 		return spansion_pl129j_or_n(bi);
+	if (ext1 == 0x2202 && ext2 == 0x2201)
+		return try_device(bi, &flashdev_Am29DL640G);
 	fprintf(stderr, "Error: unknown device ID\n");
 	return(-1);
 }
--- a/loadtools/fldevs.c	Sun Nov 17 22:40:36 2019 +0000
+++ b/loadtools/fldevs.c	Sat Dec 21 10:48:24 2019 +0000
@@ -52,6 +52,13 @@
 	.total_sectors	= 135,
 };
 
+static struct flash_geom geom_8M_bothends = {
+	.total_size	= 0x800000,
+	.nregions	= 3,
+	.regions	= {0x2000, 8, 0x10000, 126, 0x2000, 8},
+	.total_sectors	= 142,
+};
+
 static struct flash_geom geom_8M_topboot_big = {
 	.total_size	= 0x800000,
 	.nregions	= 2,
@@ -192,6 +199,46 @@
 	.cmdset			= &flash_cmdset_intel_w30,
 };
 
+/* classic AMD flash chips */
+
+static struct cfi_check Am29DL640G_cfi[] = {
+	{0x10, 'Q'},
+	{0x11, 'R'},
+	{0x12, 'Y'},
+	{0x13, 0x02},
+	{0x14, 0x00},
+	{0x15, 0x40},
+	{0x16, 0x00},
+	{0x27, 0x17},
+	{0x2C, 0x03},
+	{0x2D, 0x07},
+	{0x2E, 0x00},
+	{0x2F, 0x20},
+	{0x30, 0x00},
+	{0x31, 0x7D},
+	{0x32, 0x00},
+	{0x33, 0x00},
+	{0x34, 0x01},
+	{0x35, 0x07},
+	{0x36, 0x00},
+	{0x37, 0x20},
+	{0x38, 0x00},
+	{0x40, 'P'},
+	{0x41, 'R'},
+	{0x42, 'I'},
+	{0x43, '1'},
+	{0x44, '3'},
+	{-1,   0}
+};
+
+struct flash_device flashdev_Am29DL640G = {
+	.name			= "Am29DL640G",
+	.cfi_table		= Am29DL640G_cfi,
+	.required_global_config	= FLASH_GLOBAL_CFG_SINGLE_8M,
+	.bank_geom		= {&geom_8M_bothends, 0},
+	.cmdset			= &flash_cmdset_amd,
+};
+
 /* Spansion S71PL-J and S71PL-N flash */
 
 static struct cfi_check spansion_PL129J_cfi[] = {