mtd: cfi_cmdset_0002: fix the check for valid primary extension versions
authorGuillaume LECERF <glecerf@gmail.com>
Fri, 2 Jul 2010 12:39:10 +0000 (14:39 +0200)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Wed, 4 Aug 2010 09:58:36 +0000 (10:58 +0100)
Valid primary extension versions are: 1.0, 1.1, 1.2, 1.3 [1][2].
Fix the check in cfi_cmdset_0002 accordingly.

[1] http://www.amd.com/us-en/assets/content_type/DownloadableAssets/cfi_r20.pdf, page 19
[2] http://www.amd.com/us-en/assets/content_type/DownloadableAssets/cfi_100_20011201.pdf

Signed-off-by: Florian Fainelli <florian@openwrt.org>
Signed-off-by: Guillaume LECERF <glecerf@gmail.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/mtd/chips/cfi_cmdset_0002.c

index d81079ef91a538c20fa97f891df13db2958b36b5..749203f89b55f8212aecb3fb8235acab29f05aab 100644 (file)
@@ -417,16 +417,25 @@ struct mtd_info *cfi_cmdset_0002(struct map_info *map, int primary)
                         */
                        cfi_fixup_major_minor(cfi, extp);
 
+                       /*
+                        * Valid primary extension versions are: 1.0, 1.1, 1.2, 1.3
+                        * see: http://www.amd.com/us-en/assets/content_type/DownloadableAssets/cfi_r20.pdf, page 19 and on
+                        *      http://www.amd.com/us-en/assets/content_type/DownloadableAssets/cfi_100_20011201.pdf
+                        */
                        if (extp->MajorVersion != '1' ||
-                           (extp->MinorVersion < '0' || extp->MinorVersion > '4')) {
+                           (extp->MajorVersion == '1' && ( extp->MinorVersion < '0' || extp->MinorVersion > '3'))) {
                                printk(KERN_ERR "  Unknown Amd/Fujitsu Extended Query "
-                                      "version %c.%c.\n",  extp->MajorVersion,
-                                      extp->MinorVersion);
+                                      "version %c.%c (%#02x/%#02x).\n",
+                                      extp->MajorVersion, extp->MinorVersion,
+                                      extp->MajorVersion, extp->MinorVersion);
                                kfree(extp);
                                kfree(mtd);
                                return NULL;
                        }
 
+                       printk(KERN_INFO "  Amd/Fujitsu Extended Query version %c.%c.\n",
+                              extp->MajorVersion, extp->MinorVersion);
+
                        /* Install our own private info structure */
                        cfi->cmdset_priv = extp;