summaryrefslogtreecommitdiffstats
path: root/target/linux/generic-2.6/patches-2.6.35/014-samsung_flash
blob: e448dfe08f3cadda8d7920de53a0505a5a740ebd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
@@ -48,6 +48,7 @@
 #define SST49LF040B	        0x0050
 #define SST49LF008A		0x005a
 #define AT49BV6416		0x00d6
+#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 *);
@@ -419,12 +420,19 @@ struct mtd_info *cfi_cmdset_0002(struct
 
 			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;
+			        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 */