| 1 | --- a/drivers/mtd/chips/cfi_cmdset_0002.c |
| 2 | +++ b/drivers/mtd/chips/cfi_cmdset_0002.c |
| 3 | @@ -336,6 +336,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 | @@ -366,6 +368,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 | @@ -384,16 +389,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 | |