At LEAST
8MB flash: K8D6316UBM-PI07 Samsung Electronics 64M Bit
(8M x8/4M x16) Dual Bank NOR Flash Memory
memory falls in to the else statement. However it otherwise functions.
if (extp->MajorVersion != '1' ||
(extp->MinorVersion < '0' || extp->MinorVersion > '4')) {
if (cfi->mfr == MANUFACTURER_SAMSUNG &&
(extp->MajorVersion == '3' && extp->MinorVersion == '3')) {
printk(KERN_NOTICE " Newer Samsung flash detected, "
"should be compatibile with Amd/Fujitsu.\n");
}
else {
...
}
}
Note that it does so, and continue using the chip to //prevent// this result:
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
Amd/Fujitsu Extended Query Table at 0x0040
Unknown Amd/Fujitsu Extended Query version 0.0.
gen_probe: No supported Vendor Command Set found
physmap-flash physmap-flash.0: map_probe failed
VFS: Cannot open root device "<NULL>" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
Signed-off-by: Michael J. Evans <[email protected]>
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
@@ -83,7 +83,7 @@ static struct mtd_chip_driver cfi_amdstd_chipdrv = {
};
-/* #define DEBUG_CFI_FEATURES */
+#define DEBUG_CFI_FEATURES
#ifdef DEBUG_CFI_FEATURES
@@ -368,6 +368,8 @@ struct mtd_info *cfi_cmdset_0002(struct map_info *map, int
primary)
extp = (struct cfi_pri_amdstd*)cfi_read_pri(map, adr,
sizeof(*extp), "Amd/Fujitsu");
if (!extp) {
+ printk(KERN_INFO
+ "Flash chip doesn't appear to use the
Amd/Fujitsu command set.\n");
kfree(mtd);
return NULL;
}
@@ -382,12 +384,10 @@ struct mtd_info *cfi_cmdset_0002(struct map_info *map,
int primary)
"should be compatibile with Amd/Fujitsu.\n");
}
else {
- printk(KERN_ERR " Unknown Amd/Fujitsu Extended
Query "
- "version %c.%c.\n", extp->MajorVersion,
+ printk(KERN_ERR " WARNING: Unknown Amd/Fujitsu
Extended Query "
+ "vendor: %4x version %c.%c. If defaults fail
look up the chip.\n",
+ (int) cfi->mfr, extp->MajorVersion,
extp->MinorVersion);
- kfree(extp);
- kfree(mtd);
- return NULL;
}
}
--- a/drivers/mtd/chips/cfi_probe.c
+++ b/drivers/mtd/chips/cfi_probe.c
@@ -18,7 +18,7 @@
#include <linux/mtd/cfi.h>
#include <linux/mtd/gen_probe.h>
-//#define DEBUG_CFI
+#define DEBUG_CFI
#ifdef DEBUG_CFI
static void print_cfi_ident(struct cfi_ident *);
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel