summaryrefslogtreecommitdiff
path: root/target/linux/generic-2.6/patches-2.6.32/014-samsung_flash.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic-2.6/patches-2.6.32/014-samsung_flash.patch')
-rw-r--r--target/linux/generic-2.6/patches-2.6.32/014-samsung_flash.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/target/linux/generic-2.6/patches-2.6.32/014-samsung_flash.patch b/target/linux/generic-2.6/patches-2.6.32/014-samsung_flash.patch
new file mode 100644
index 0000000000..7010d367b8
--- /dev/null
+++ b/target/linux/generic-2.6/patches-2.6.32/014-samsung_flash.patch
@@ -0,0 +1,50 @@
+--- a/drivers/mtd/chips/cfi_cmdset_0002.c
++++ b/drivers/mtd/chips/cfi_cmdset_0002.c
+@@ -325,6 +325,8 @@ static struct cfi_fixup fixup_table[] =
+ static void cfi_fixup_major_minor(struct cfi_private *cfi,
+ struct cfi_pri_amdstd *extp)
+ {
++ // manufacturers defined in include/linux/mtd/cfi.h
++
+ if (cfi->mfr == CFI_MFR_SAMSUNG && cfi->id == 0x257e &&
+ extp->MajorVersion == '0')
+ extp->MajorVersion = '1';
+@@ -355,6 +357,9 @@ struct mtd_info *cfi_cmdset_0002(struct
+ mtd->name = map->name;
+ mtd->writesize = 1;
+
++ printk(" CFI mfr 0x%08x\n", cfi->mfr); // TODO: Is there a more general place to print this info?
++ printk(" CFI id 0x%08x\n", cfi->id);
++
+ if (cfi->cfi_mode==CFI_MODE_CFI){
+ unsigned char bootloc;
+ /*
+@@ -373,16 +378,24 @@ struct mtd_info *cfi_cmdset_0002(struct
+
+ cfi_fixup_major_minor(cfi, extp);
+
+- if (extp->MajorVersion != '1' ||
+- (extp->MinorVersion < '0' || extp->MinorVersion > '4')) {
++ // valid primary extension versions are: 1.0, 1.1, 1.2, 1.3
++ // see: http://www.amd.com/us-en/assets/content_type/DownloadableAssets/cfi_r20.pdf, page 19 and on
++ // http://www.amd.com/us-en/assets/content_type/DownloadableAssets/cfi_100_20011201.pdf
++ if (extp->MajorVersion < '1' ||
++ extp->MajorVersion > '1' ||
++ (extp->MajorVersion == '1' && ( extp->MinorVersion < '0' || extp->MinorVersion > '3'))) {
+ printk(KERN_ERR " Unknown Amd/Fujitsu Extended Query "
+- "version %c.%c.\n", extp->MajorVersion,
+- extp->MinorVersion);
++ "version %c.%c (0x%02x/0x%02x).\n",
++ extp->MajorVersion, extp->MinorVersion,
++ extp->MajorVersion, extp->MinorVersion);
+ kfree(extp);
+ kfree(mtd);
+ return NULL;
+ }
+
++ printk(" Amd/Fujitsu Extended Query version %c.%c.\n",
++ extp->MajorVersion, extp->MinorVersion);
++
+ /* Install our own private info structure */
+ cfi->cmdset_priv = extp;
+