aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic-2.6/patches/007-samsung_flash.patch
blob: 93e371fa92f1a850b5dfc14ce2ab26d0273f1a9e (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
37
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 */