Root/target/linux/generic/patches-2.6.32/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@@ -325,6 +325,8 @@ static struct cfi_fixup fixup_table[] =
4 static void cfi_fixup_major_minor(struct cfi_private *cfi,
5                   struct cfi_pri_amdstd *extp)
6 {
7+ // manufacturers defined in include/linux/mtd/cfi.h
8+
9     if (cfi->mfr == CFI_MFR_SAMSUNG && cfi->id == 0x257e &&
10         extp->MajorVersion == '0')
11         extp->MajorVersion = '1';
12@@ -355,6 +357,9 @@ struct mtd_info *cfi_cmdset_0002(struct
13     mtd->name = map->name;
14     mtd->writesize = 1;
15 
16+ printk(" CFI mfr 0x%08x\n", cfi->mfr); // TODO: Is there a more general place to print this info?
17+ printk(" CFI id 0x%08x\n", cfi->id);
18+
19     if (cfi->cfi_mode==CFI_MODE_CFI){
20         unsigned char bootloc;
21         /*
22@@ -373,16 +378,24 @@ struct mtd_info *cfi_cmdset_0002(struct
23 
24         cfi_fixup_major_minor(cfi, extp);
25 
26- if (extp->MajorVersion != '1' ||
27- (extp->MinorVersion < '0' || extp->MinorVersion > '4')) {
28+ // valid primary extension versions are: 1.0, 1.1, 1.2, 1.3
29+ // see: http://www.amd.com/us-en/assets/content_type/DownloadableAssets/cfi_r20.pdf, page 19 and on
30+ // http://www.amd.com/us-en/assets/content_type/DownloadableAssets/cfi_100_20011201.pdf
31+ if (extp->MajorVersion < '1' ||
32+ extp->MajorVersion > '1' ||
33+ (extp->MajorVersion == '1' && ( extp->MinorVersion < '0' || extp->MinorVersion > '3'))) {
34             printk(KERN_ERR " Unknown Amd/Fujitsu Extended Query "
35- "version %c.%c.\n", extp->MajorVersion,
36- extp->MinorVersion);
37+ "version %c.%c (0x%02x/0x%02x).\n",
38+ extp->MajorVersion, extp->MinorVersion,
39+ extp->MajorVersion, extp->MinorVersion);
40             kfree(extp);
41             kfree(mtd);
42             return NULL;
43         }
44 
45+ printk(" Amd/Fujitsu Extended Query version %c.%c.\n",
46+ extp->MajorVersion, extp->MinorVersion);
47+
48         /* Install our own private info structure */
49         cfi->cmdset_priv = extp;
50 
51

Archive Download this file



interactive