Device ID collision in amd_flash.c

Jonas Holmberg
2005-02-02T11:07:21Z

The (obsolete) AMD NOR-flash driver has an "probe-table-entry" for
AM29BDS643D that happens to match AM29DL640G as well, even though they
have different block/sector-layouts.

I think the problem is that AMD is assigning device-IDs of more than
16-bits. Anyhow, both AM29BDS643D and AM29DL640G supports CFI, so I
would like to remove support for them in amd_flash.c (patch below) to
avoid problems.

OK to commit?

/Jonas

PS. Would this patch ever find it's way into Linux 2.4 or just Linux
2.6?

RCS file: /home/cvs/mtd/drivers/mtd/chips/amd_flash.c,v
retrieving revision 1.26
diff -u -r1.26 amd_flash.c
--- amd_flash.c 20 Nov 2004 12:49:04 -0000 1.26
+++ amd_flash.c 2 Feb 2005 11:03:07 -0000
@@ -67,7 +67,6 @@
#define AM29LV160DT 0x22C4
#define AM29LV160DB 0x2249
#define AM29BDS323D 0x22D1
-#define AM29BDS643D 0x227E

/* Atmel */
#define AT49xV16x 0x00C0
@@ -618,17 +617,6 @@
{ .offset = 0x3f0000, .erasesize = 0x02000, .numblocks = 8 },
}
}, {
- .mfr_id = MANUFACTURER_AMD,
- .dev_id = AM29BDS643D,
- .name = "AMD AM29BDS643D",
- .size = 0x00800000,
- .numeraseregions = 3,
- .regions = {
- { .offset = 0x000000, .erasesize = 0x10000, .numblocks = 96 },
- { .offset = 0x600000, .erasesize = 0x10000, .numblocks = 31 },
- { .offset = 0x7f0000, .erasesize = 0x02000, .numblocks = 8 },
- }
- }, {
.mfr_id = MANUFACTURER_ATMEL,
.dev_id = AT49xV16x,
.name = "Atmel AT49xV16x",