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

Reply via email to