diff options
Diffstat (limited to 'target/linux/generic/patches-2.6.37/473-mtd_samsung_flash.patch')
-rw-r--r-- | target/linux/generic/patches-2.6.37/473-mtd_samsung_flash.patch | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/target/linux/generic/patches-2.6.37/473-mtd_samsung_flash.patch b/target/linux/generic/patches-2.6.37/473-mtd_samsung_flash.patch new file mode 100644 index 0000000..9b8cc81 --- /dev/null +++ b/target/linux/generic/patches-2.6.37/473-mtd_samsung_flash.patch @@ -0,0 +1,41 @@ +--- a/drivers/mtd/chips/cfi_cmdset_0002.c ++++ b/drivers/mtd/chips/cfi_cmdset_0002.c +@@ -392,9 +392,35 @@ static struct cfi_fixup fixup_table[] = + static void cfi_fixup_major_minor(struct cfi_private *cfi, + struct cfi_pri_amdstd *extp) + { +- if (cfi->mfr == CFI_MFR_SAMSUNG && cfi->id == 0x257e && +- extp->MajorVersion == '0') +- extp->MajorVersion = '1'; ++ /* Manufacturers are defined in include/linux/mtd/cfi.h */ ++ ++ if (cfi->mfr == CFI_MFR_SAMSUNG && ++ extp->MajorVersion == '0') { ++ printk(" Fixed Samsung's Amd/Fujitsu Extended Query version from %c.%c", ++ extp->MajorVersion, extp->MinorVersion); ++ ++ extp->MajorVersion = '1'; ++ extp->MinorVersion = '0'; ++ ++ printk(" to %c.%c.\n", ++ extp->MajorVersion, extp->MinorVersion); ++ } ++ ++ if (cfi->mfr == CFI_MFR_SAMSUNG && ++ extp->MajorVersion == '3' && extp->MinorVersion == '3') { ++ printk(KERN_NOTICE " Newer Samsung flash detected, " ++ "should be compatible with Amd/Fujitsu.\n"); ++ ++ printk(" Fixed Samsung's Amd/Fujitsu Extended Query version from %c.%c", ++ extp->MajorVersion, extp->MinorVersion); ++ ++ extp->MajorVersion = '1'; // set to 1.3 ++ extp->MinorVersion = '3'; ++ ++ printk(" to %c.%c.\n", ++ extp->MajorVersion, extp->MinorVersion); ++ } ++ + /* + * SST 38VF640x chips report major=0xFF / minor=0xFF. + */ |