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 000000000..37e322ad8 --- /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 000000000..55a6c2e7d --- /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 000000000..1d13d4ed5 --- /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 000000000..37e322ad8 --- /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 000000000..6da34f78f --- /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 c148738b8..a0483957c 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 000000000..03d890ea1 --- /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); + 	} + } +  | 
