Root/target/linux/generic/patches-2.6.31/014-cfi_fix_amd_extended_table_check.patch

1--- a/drivers/mtd/chips/cfi_cmdset_0002.c
2+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
3@@ -51,6 +51,7 @@
4 #define SST49LF040B 0x0050
5 #define SST49LF008A 0x005a
6 #define AT49BV6416 0x00d6
7+#define MANUFACTURER_SAMSUNG 0x00ec
8 
9 static int cfi_amdstd_read (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
10 static int cfi_amdstd_write_words(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
11@@ -375,12 +376,19 @@ struct mtd_info *cfi_cmdset_0002(struct
12 
13         if (extp->MajorVersion != '1' ||
14             (extp->MinorVersion < '0' || extp->MinorVersion > '4')) {
15- printk(KERN_ERR " Unknown Amd/Fujitsu Extended Query "
16- "version %c.%c.\n", extp->MajorVersion,
17- extp->MinorVersion);
18- kfree(extp);
19- kfree(mtd);
20- return NULL;
21+ if (cfi->mfr == MANUFACTURER_SAMSUNG &&
22+ (extp->MajorVersion == '3' && extp->MinorVersion == '3')) {
23+ printk(KERN_NOTICE " Newer Samsung flash detected, "
24+ "should be compatibile with Amd/Fujitsu.\n");
25+ }
26+ else {
27+ printk(KERN_ERR " Unknown Amd/Fujitsu Extended Query "
28+ "version %c.%c.\n", extp->MajorVersion,
29+ extp->MinorVersion);
30+ kfree(extp);
31+ kfree(mtd);
32+ return NULL;
33+ }
34         }
35 
36         /* Install our own private info structure */
37

Archive Download this file



interactive