diff options
Diffstat (limited to 'target')
7 files changed, 192 insertions, 6 deletions
diff --git a/target/linux/generic/patches-2.6.36/009-decompress_unlzo_fix.patch b/target/linux/generic/patches-2.6.36/009-decompress_unlzo_fix.patch new file mode 100644 index 0000000000..37e322ad8c --- /dev/null +++ b/target/linux/generic/patches-2.6.36/009-decompress_unlzo_fix.patch @@ -0,0 +1,23 @@ +--- /dev/null ++++ b/include/linux/decompress/unlzo_mm.h +@@ -0,0 +1,10 @@ ++#ifndef UNLZO_MM_H ++#define UNLZO_MM_H ++ ++#ifdef STATIC ++#define INIT ++#else ++#define INIT __init ++#endif ++ ++#endif +--- a/lib/decompress_unlzo.c ++++ b/lib/decompress_unlzo.c +@@ -39,6 +39,7 @@ + + #include <linux/types.h> + #include <linux/lzo.h> ++#include <linux/decompress/unlzo_mm.h> + #include <linux/decompress/mm.h> + + #include <linux/compiler.h> diff --git a/target/linux/generic/patches-2.6.36/014-cfi_show_amd_extended_table_version.patch b/target/linux/generic/patches-2.6.36/014-cfi_show_amd_extended_table_version.patch new file mode 100644 index 0000000000..55a6c2e7d3 --- /dev/null +++ b/target/linux/generic/patches-2.6.36/014-cfi_show_amd_extended_table_version.patch @@ -0,0 +1,30 @@ +--- a/drivers/mtd/chips/cfi_cmdset_0002.c ++++ b/drivers/mtd/chips/cfi_cmdset_0002.c +@@ -371,6 +371,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'; +@@ -403,6 +405,9 @@ struct mtd_info *cfi_cmdset_0002(struct + + mtd->reboot_notifier.notifier_call = cfi_amdstd_reboot; + ++ 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; + __u16 adr = primary?cfi->cfiq->P_ADR:cfi->cfiq->A_ADR; +@@ -420,7 +425,7 @@ struct mtd_info *cfi_cmdset_0002(struct + * Valid primary extension versions are: 1.0, 1.1, 1.2, 1.3, 1.4 + * see: http://www.amd.com/us-en/assets/content_type/DownloadableAssets/cfi_r20.pdf, page 19 + * http://www.amd.com/us-en/assets/content_type/DownloadableAssets/cfi_100_20011201.pdf +- * http://www.spansion.com/Support/Datasheets/s29ws-p_00_a12_e.pdf ++ * http://www.spansion.com/Support/AppNotes/CFI_Spec_AN_03.pdf + */ + if (extp->MajorVersion != '1' || + (extp->MajorVersion == '1' && (extp->MinorVersion < '0' || extp->MinorVersion > '4'))) { diff --git a/target/linux/generic/patches-2.6.36/089-mtd-samsung-flash.patch b/target/linux/generic/patches-2.6.36/089-mtd-samsung-flash.patch new file mode 100644 index 0000000000..1d13d4ed5b --- /dev/null +++ b/target/linux/generic/patches-2.6.36/089-mtd-samsung-flash.patch @@ -0,0 +1,37 @@ +--- a/drivers/mtd/chips/cfi_cmdset_0002.c ++++ b/drivers/mtd/chips/cfi_cmdset_0002.c +@@ -373,9 +373,32 @@ static void cfi_fixup_major_minor(struct + { + // manufacturers defined in include/linux/mtd/cfi.h + +- if (cfi->mfr == CFI_MFR_SAMSUNG && cfi->id == 0x257e && +- extp->MajorVersion == '0') ++ 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 compatibile 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 (last defined version) ++ extp->MinorVersion = '3'; ++ ++ printk(" to %c.%c.\n", ++ extp->MajorVersion, extp->MinorVersion); ++ } + } + + struct mtd_info *cfi_cmdset_0002(struct map_info *map, int primary) diff --git a/target/linux/generic/patches-2.6.37/009-decompress_unlzo_fix.patch b/target/linux/generic/patches-2.6.37/009-decompress_unlzo_fix.patch new file mode 100644 index 0000000000..37e322ad8c --- /dev/null +++ b/target/linux/generic/patches-2.6.37/009-decompress_unlzo_fix.patch @@ -0,0 +1,23 @@ +--- /dev/null ++++ b/include/linux/decompress/unlzo_mm.h +@@ -0,0 +1,10 @@ ++#ifndef UNLZO_MM_H ++#define UNLZO_MM_H ++ ++#ifdef STATIC ++#define INIT ++#else ++#define INIT __init ++#endif ++ ++#endif +--- a/lib/decompress_unlzo.c ++++ b/lib/decompress_unlzo.c +@@ -39,6 +39,7 @@ + + #include <linux/types.h> + #include <linux/lzo.h> ++#include <linux/decompress/unlzo_mm.h> + #include <linux/decompress/mm.h> + + #include <linux/compiler.h> diff --git a/target/linux/generic/patches-2.6.37/014-cfi_show_amd_extended_table_version.patch b/target/linux/generic/patches-2.6.37/014-cfi_show_amd_extended_table_version.patch new file mode 100644 index 0000000000..6da34f78f9 --- /dev/null +++ b/target/linux/generic/patches-2.6.37/014-cfi_show_amd_extended_table_version.patch @@ -0,0 +1,30 @@ +--- a/drivers/mtd/chips/cfi_cmdset_0002.c ++++ b/drivers/mtd/chips/cfi_cmdset_0002.c +@@ -392,6 +392,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'; +@@ -431,6 +433,9 @@ struct mtd_info *cfi_cmdset_0002(struct + + mtd->reboot_notifier.notifier_call = cfi_amdstd_reboot; + ++ 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; + __u16 adr = primary?cfi->cfiq->P_ADR:cfi->cfiq->A_ADR; +@@ -448,7 +453,7 @@ struct mtd_info *cfi_cmdset_0002(struct + * Valid primary extension versions are: 1.0, 1.1, 1.2, 1.3, 1.4 + * see: http://cs.ozerki.net/zap/pub/axim-x5/docs/cfi_r20.pdf, page 19 + * http://www.spansion.com/Support/AppNotes/cfi_100_20011201.pdf +- * http://www.spansion.com/Support/Datasheets/s29ws-p_00_a12_e.pdf ++ * http://www.spansion.com/Support/AppNotes/CFI_Spec_AN_03.pdf + */ + if (extp->MajorVersion != '1' || + (extp->MajorVersion == '1' && (extp->MinorVersion < '0' || extp->MinorVersion > '4'))) { diff --git a/target/linux/generic/patches-2.6.37/065-rootfs_split.patch b/target/linux/generic/patches-2.6.37/065-rootfs_split.patch index c148738b84..a0483957cb 100644 --- a/target/linux/generic/patches-2.6.37/065-rootfs_split.patch +++ b/target/linux/generic/patches-2.6.37/065-rootfs_split.patch @@ -27,8 +27,8 @@ +#include <linux/magic.h> #include <linux/err.h> - #define MTD_ERASE_PARTIAL 0x8000 /* partition only covers parts of an erase block */ -@@ -50,7 +52,7 @@ struct mtd_part { + /* Our partition linked list */ +@@ -48,7 +50,7 @@ struct mtd_part { * the pointer to that structure with this macro. */ #define PART(x) ((struct mtd_part *)(x)) @@ -37,7 +37,7 @@ /* * MTD methods which simply translate the effective address and pass through -@@ -691,6 +693,153 @@ int mtd_del_partition(struct mtd_info *m +@@ -618,6 +620,153 @@ int mtd_del_partition(struct mtd_info *m } EXPORT_SYMBOL_GPL(mtd_del_partition); @@ -191,7 +191,7 @@ /* * This function, given a master MTD object and a partition table, creates * and registers slave MTD objects which are bound to the master according to -@@ -706,7 +855,7 @@ int add_mtd_partitions(struct mtd_info * +@@ -633,7 +782,7 @@ int add_mtd_partitions(struct mtd_info * { struct mtd_part *slave; uint64_t cur_offset = 0; @@ -200,7 +200,7 @@ printk(KERN_NOTICE "Creating %d MTD partitions on \"%s\":\n", nbparts, master->name); -@@ -721,6 +870,21 @@ int add_mtd_partitions(struct mtd_info * +@@ -648,6 +797,21 @@ int add_mtd_partitions(struct mtd_info * add_mtd_device(&slave->mtd); @@ -222,7 +222,7 @@ cur_offset = slave->offset + slave->mtd.size; } -@@ -728,6 +892,32 @@ int add_mtd_partitions(struct mtd_info * +@@ -655,6 +819,32 @@ int add_mtd_partitions(struct mtd_info * } EXPORT_SYMBOL(add_mtd_partitions); diff --git a/target/linux/generic/patches-2.6.37/089-mtd-samsung-flash.patch b/target/linux/generic/patches-2.6.37/089-mtd-samsung-flash.patch new file mode 100644 index 0000000000..03d890ea16 --- /dev/null +++ b/target/linux/generic/patches-2.6.37/089-mtd-samsung-flash.patch @@ -0,0 +1,43 @@ +--- a/drivers/mtd/chips/cfi_cmdset_0002.c ++++ b/drivers/mtd/chips/cfi_cmdset_0002.c +@@ -394,15 +394,31 @@ static void cfi_fixup_major_minor(struct + { + // manufacturers defined in include/linux/mtd/cfi.h + +- if (cfi->mfr == CFI_MFR_SAMSUNG && cfi->id == 0x257e && +- extp->MajorVersion == '0') +- extp->MajorVersion = '1'; +- /* +- * SST 38VF640x chips report major=0xFF / minor=0xFF. +- */ +- if (cfi->mfr == CFI_MFR_SST && (cfi->id >> 4) == 0x0536) { +- extp->MajorVersion = '1'; +- extp->MinorVersion = '0'; ++ 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 compatibile 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 (last defined version) ++ extp->MinorVersion = '3'; ++ ++ printk(" to %c.%c.\n", ++ extp->MajorVersion, extp->MinorVersion); + } + } + |