diff loadtools/flashid.c @ 523:9a478d33b3ca

fc-loadtool: added Samsung K5L33xx_A flash support for GTM900
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 09 Jun 2019 21:51:27 +0000
parents 0212edcec4d2
children 3886a8a40809
line wrap: on
line diff
--- a/loadtools/flashid.c	Thu Jun 06 06:56:32 2019 +0000
+++ b/loadtools/flashid.c	Sun Jun 09 21:51:27 2019 +0000
@@ -17,6 +17,7 @@
 extern struct flash_device flashdev_PL129J;
 extern struct flash_device flashdev_PL129N;
 extern struct flash_device flashdev_K5A32xx_T;
+extern struct flash_device flashdev_K5L33xx_A;
 
 extern int flash_global_config;
 extern struct flash_bank_info flash_bank_info[2];
@@ -114,6 +115,24 @@
 	return(-1);
 }
 
+static
+samsung_extended_id(bi)
+	struct flash_bank_info *bi;
+{
+	uint16_t ext1, ext2;
+
+	printf("Samsung extended ID device, reading extended ID\n");
+	if (do_r16(bi->base_addr + 0x1C, &ext1) < 0)
+		return(-1);
+	if (do_r16(bi->base_addr + 0x1E, &ext2) < 0)
+		return(-1);
+	printf("Extended ID: %04X %04X\n", ext1, ext2);
+	if (ext1 == 0x2503 && ext2 == 0x2501)
+		return try_device(bi, &flashdev_K5L33xx_A);
+	fprintf(stderr, "Error: unknown device ID\n");
+	return(-1);
+}
+
 static struct idmap {
 	uint16_t	manuf_id;
 	uint16_t	dev_id;
@@ -135,6 +154,7 @@
 	{0x0089, 0x88CD, try_device, &flashdev_28F640C3B},
 	/* Samsung flash */
 	{0x00EC, 0x22A0, try_device, &flashdev_K5A32xx_T},
+	{0x00EC, 0x257E, samsung_extended_id, 0},
 	/* table search terminator */
 	{0,      0,      0,          0}
 };