add fix for samsung flash chips
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 24 Oct 2006 18:05:05 +0000 (18:05 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 24 Oct 2006 18:05:05 +0000 (18:05 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5284 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/generic-2.6/patches/007-samsung_flash.patch [new file with mode: 0644]

diff --git a/target/linux/generic-2.6/patches/007-samsung_flash.patch b/target/linux/generic-2.6/patches/007-samsung_flash.patch
new file mode 100644 (file)
index 0000000..93e371f
--- /dev/null
@@ -0,0 +1,38 @@
+--- linux.old/drivers/mtd/chips/cfi_cmdset_0002.c      2006-10-23 21:14:11.618024794 +0200
++++ linux.dev/drivers/mtd/chips/cfi_cmdset_0002.c      2006-10-24 07:47:52.267007586 +0200
+@@ -49,6 +49,7 @@
+ #define MANUFACTURER_SST      0x00BF
+ #define SST49LF004B           0x0060
+ #define SST49LF008A           0x005a
++#define MANUFACTURER_SAMSUNG  0x00ec
+ static int cfi_amdstd_read (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
+ static int cfi_amdstd_write_words(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
+@@ -254,13 +255,20 @@
+               }
+               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;
++                  (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 {
++                          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 */