]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
[MTD] CHIPS: Recognize Spansion CFI 1.4 chips
authorTodd Poynor <tpoynor@mvista.com>
Wed, 20 Jul 2005 21:01:17 +0000 (22:01 +0100)
committerThomas Gleixner <tglx@mtd.linutronix.de>
Thu, 4 Aug 2005 10:49:25 +0000 (12:49 +0200)
Modify Amd/Fujitsu CFI NOR flash primary vendor extension table revision
check to recognize version 1.4.  Verified the existing driver can
handle version 1.4 chips without additional info from 1.4 extended table.

Move the primary vendor extension table revision check from common file
to the 3 CFI chip driver files, since the data structures and revisions
handled by those data structures are specific to the chip driver.

Modify the error message printed when the revision is unknown to be a
KERN_ERR instead of WARNING since this will cause mtd to ignore the chip.

Signed-off-by: Todd Poynor <tpoynor@mvista.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/mtd/chips/cfi_cmdset_0001.c
drivers/mtd/chips/cfi_cmdset_0002.c
drivers/mtd/chips/cfi_cmdset_0020.c
drivers/mtd/chips/cfi_util.c

index 0cfcd88468e0ed3c2db5da780bc3d7e428c3ab3c..1e99dffcc6ae1afd276b02dc640166ecd4446251 100644 (file)
@@ -4,7 +4,7 @@
  *
  * (C) 2000 Red Hat. GPL'd
  *
- * $Id: cfi_cmdset_0001.c,v 1.178 2005/05/19 17:05:43 nico Exp $
+ * $Id: cfi_cmdset_0001.c,v 1.180 2005/07/20 21:01:13 tpoynor Exp $
  *
  * 
  * 10/10/2000  Nicolas Pitre <nico@cam.org>
@@ -252,6 +252,15 @@ read_pri_intelext(struct map_info *map, __u16 adr)
        if (!extp)
                return NULL;
 
+       if (extp->MajorVersion != '1' ||
+           (extp->MinorVersion < '0' || extp->MinorVersion > '3')) {
+               printk(KERN_ERR "  Unknown Intel/Sharp Extended Query "
+                      "version %c.%c.\n",  extp->MajorVersion,
+                      extp->MinorVersion);
+               kfree(extp);
+               return NULL;
+       }
+
        /* Do some byteswapping if necessary */
        extp->FeatureSupport = le32_to_cpu(extp->FeatureSupport);
        extp->BlkStatusRegMask = le16_to_cpu(extp->BlkStatusRegMask);
index 8505f118f2dbfcd8d7275c3cb1af5292eaaaca0d..e3d31c749045231394fd8fe1e52358db12a3a623 100644 (file)
@@ -17,7 +17,7 @@
  *
  * This code is GPL
  *
- * $Id: cfi_cmdset_0002.c,v 1.118 2005/07/04 22:34:29 gleixner Exp $
+ * $Id: cfi_cmdset_0002.c,v 1.120 2005/07/20 21:01:13 tpoynor Exp $
  *
  */
 
@@ -253,6 +253,16 @@ struct mtd_info *cfi_cmdset_0002(struct map_info *map, int primary)
                        return NULL;
                }
 
+               if (extp->MajorVersion != '1' ||
+                   (extp->MinorVersion < '0' || extp->MinorVersion > '4')) {
+                       printk(KERN_ERR "  Unknown Amd/Fujitsu Extended Query "
+                              "version %c.%c.\n",  extp->MajorVersion,
+                              extp->MinorVersion);
+                       kfree(extp);
+                       kfree(mtd);
+                       return NULL;
+               }
+
                /* Install our own private info structure */
                cfi->cmdset_priv = extp;        
 
index c894f880157831f1d1c3524aa77d9a462d77dd60..d22df2d96788afda357105625dc987e124027597 100644 (file)
@@ -4,7 +4,7 @@
  *
  * (C) 2000 Red Hat. GPL'd
  *
- * $Id: cfi_cmdset_0020.c,v 1.19 2005/07/13 15:52:45 dwmw2 Exp $
+ * $Id: cfi_cmdset_0020.c,v 1.20 2005/07/20 21:01:14 tpoynor Exp $
  * 
  * 10/10/2000  Nicolas Pitre <nico@cam.org>
  *     - completely revamped method functions so they are aware and
@@ -133,6 +133,15 @@ struct mtd_info *cfi_cmdset_0020(struct map_info *map, int primary)
                if (!extp)
                        return NULL;
 
+               if (extp->MajorVersion != '1' ||
+                   (extp->MinorVersion < '0' || extp->MinorVersion > '3')) {
+                       printk(KERN_ERR "  Unknown ST Microelectronics"
+                              " Extended Query version %c.%c.\n",
+                              extp->MajorVersion, extp->MinorVersion);
+                       kfree(extp);
+                       return NULL;
+               }
+
                /* Do some byteswapping if necessary */
                extp->FeatureSupport = cfi32_to_cpu(extp->FeatureSupport);
                extp->BlkStatusRegMask = cfi32_to_cpu(extp->BlkStatusRegMask);
index 2b2ede2bfccaeca3f9e0e47f2869d501b1633abf..0cf183f01e493148a54ba24aa4da5c0a7e182465 100644 (file)
@@ -7,7 +7,7 @@
  *
  * This code is covered by the GPL.
  *
- * $Id: cfi_util.c,v 1.8 2004/12/14 19:55:56 nico Exp $
+ * $Id: cfi_util.c,v 1.9 2005/07/20 21:01:14 tpoynor Exp $
  *
  */
 
@@ -70,15 +70,6 @@ __xipram cfi_read_pri(struct map_info *map, __u16 adr, __u16 size, const char* n
        local_irq_enable();
 #endif
 
-       if (extp->MajorVersion != '1' || 
-           (extp->MinorVersion < '0' || extp->MinorVersion > '3')) {
-               printk(KERN_WARNING "  Unknown %s Extended Query "
-                      "version %c.%c.\n",  name, extp->MajorVersion,
-                      extp->MinorVersion);
-               kfree(extp);
-               extp = NULL;
-       }
-
  out:  return extp;
 }