linux/generic: add some missing patches, refresh patches
[openwrt/svn-archive/archive.git] / target / linux / generic / patches-2.6.37 / 089-mtd-samsung-flash.patch
diff --git a/target/linux/generic/patches-2.6.37/089-mtd-samsung-flash.patch b/target/linux/generic/patches-2.6.37/089-mtd-samsung-flash.patch
new file mode 100644 (file)
index 0000000..03d890e
--- /dev/null
@@ -0,0 +1,43 @@
+--- a/drivers/mtd/chips/cfi_cmdset_0002.c
++++ b/drivers/mtd/chips/cfi_cmdset_0002.c
+@@ -394,15 +394,31 @@ static void cfi_fixup_major_minor(struct
+ {
+       // manufacturers defined in include/linux/mtd/cfi.h
+-      if (cfi->mfr == CFI_MFR_SAMSUNG && cfi->id == 0x257e &&
+-          extp->MajorVersion == '0')
+-              extp->MajorVersion = '1';
+-      /*
+-       * SST 38VF640x chips report major=0xFF / minor=0xFF.
+-       */
+-      if (cfi->mfr == CFI_MFR_SST && (cfi->id >> 4) == 0x0536) {
+-              extp->MajorVersion = '1';
+-              extp->MinorVersion = '0';
++      if (cfi->mfr == CFI_MFR_SAMSUNG &&
++              extp->MajorVersion == '0') {
++                      printk("  Fixed Samsung's Amd/Fujitsu Extended Query version from %c.%c",
++                              extp->MajorVersion, extp->MinorVersion);
++
++                      extp->MajorVersion = '1';
++                      extp->MinorVersion = '0';
++
++                      printk(" to %c.%c.\n",
++                              extp->MajorVersion, extp->MinorVersion);
++      }
++
++      if (cfi->mfr == CFI_MFR_SAMSUNG &&
++              extp->MajorVersion == '3' && extp->MinorVersion == '3') {
++                      printk(KERN_NOTICE "  Newer Samsung flash detected, "
++                              "should be compatibile with Amd/Fujitsu.\n");
++
++                      printk("  Fixed Samsung's Amd/Fujitsu Extended Query version from %c.%c",
++                              extp->MajorVersion, extp->MinorVersion);
++
++                      extp->MajorVersion = '1';       // set to 1.3 (last defined version)
++                      extp->MinorVersion = '3';
++
++                      printk(" to %c.%c.\n",
++                              extp->MajorVersion, extp->MinorVersion);
+       }
+ }