diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 9bd721cb39..9b60d4396b 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -26,6 +26,9 @@ endif ifeq ($(LINUX_VERSION),2.6.38.6) LINUX_KERNEL_MD5SUM:=e896a3bb3185b8a8af8e2f010f63c02e endif +ifeq ($(LINUX_VERSION),2.6.39) + LINUX_KERNEL_MD5SUM:=1aab7a741abe08d42e8eccf20de61e05 +endif # disable the md5sum check for unknown kernel versions LINUX_KERNEL_MD5SUM?=x diff --git a/target/linux/generic/config-2.6.39 b/target/linux/generic/config-2.6.39 index 117e437fd7..82fe830fed 100644 --- a/target/linux/generic/config-2.6.39 +++ b/target/linux/generic/config-2.6.39 @@ -1120,6 +1120,8 @@ CONFIG_IP_ROUTE_VERBOSE=y # CONFIG_IR_SONY_DECODER is not set # CONFIG_IR_STREAMZAP is not set # CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set # CONFIG_ISCSI_TCP is not set CONFIG_ISDN=y # CONFIG_ISDN_AUDIO is not set @@ -1458,6 +1460,7 @@ CONFIG_MTD_PARTITIONS=y # CONFIG_MTD_PHYSMAP is not set # CONFIG_MTD_PHYSMAP_COMPAT is not set # CONFIG_MTD_PLATRAM is not set +# CONFIG_MTD_LATCH_ADDR is not set # CONFIG_MTD_PMC551 is not set # CONFIG_MTD_RAM is not set CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 @@ -1938,6 +1941,7 @@ CONFIG_PROC_SYSCTL=y # CONFIG_R8169 is not set # CONFIG_R8187SE is not set # CONFIG_R8712U is not set +# CONFIG_RTS_PSTOR is not set # CONFIG_RADIO_ADAPTERS is not set # CONFIG_RADIO_AZTECH is not set # CONFIG_RADIO_CADET is not set @@ -2104,6 +2108,7 @@ CONFIG_SCHED_OMIT_FRAME_POINTER=y # CONFIG_SCSI_ARCMSR is not set # CONFIG_SCSI_BFA_FC is not set # CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_SCSI_BNX2X_FCOE is not set # CONFIG_SCSI_BUSLOGIC is not set # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_DC390T is not set @@ -2869,8 +2874,10 @@ CONFIG_USB_SERIAL_SAFE_PADDED=y # CONFIG_USB_STORAGE is not set CONFIG_USB_STORAGE_ALAUDA=y # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set CONFIG_USB_STORAGE_DATAFAB=y # CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_REALTEK is not set CONFIG_USB_STORAGE_FREECOM=y # CONFIG_USB_STORAGE_ISD200 is not set CONFIG_USB_STORAGE_JUMPSHOT=y diff --git a/target/linux/generic/patches-2.6.39/021-ssb_commit_settings_export.patch b/target/linux/generic/patches-2.6.39/021-ssb_commit_settings_export.patch new file mode 100644 index 0000000000..657fdd6b92 --- /dev/null +++ b/target/linux/generic/patches-2.6.39/021-ssb_commit_settings_export.patch @@ -0,0 +1,77 @@ +--- a/drivers/ssb/driver_pcicore.c ++++ b/drivers/ssb/driver_pcicore.c +@@ -476,30 +476,6 @@ static void ssb_pcie_mdio_write(struct s + pcicore_write32(pc, mdio_control, 0); + } + +-static void ssb_broadcast_value(struct ssb_device *dev, +- u32 address, u32 data) +-{ +- /* This is used for both, PCI and ChipCommon core, so be careful. */ +- BUILD_BUG_ON(SSB_PCICORE_BCAST_ADDR != SSB_CHIPCO_BCAST_ADDR); +- BUILD_BUG_ON(SSB_PCICORE_BCAST_DATA != SSB_CHIPCO_BCAST_DATA); +- +- ssb_write32(dev, SSB_PCICORE_BCAST_ADDR, address); +- ssb_read32(dev, SSB_PCICORE_BCAST_ADDR); /* flush */ +- ssb_write32(dev, SSB_PCICORE_BCAST_DATA, data); +- ssb_read32(dev, SSB_PCICORE_BCAST_DATA); /* flush */ +-} +- +-static void ssb_commit_settings(struct ssb_bus *bus) +-{ +- struct ssb_device *dev; +- +- dev = bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev; +- if (WARN_ON(!dev)) +- return; +- /* This forces an update of the cached registers. */ +- ssb_broadcast_value(dev, 0xFD8, 0); +-} +- + int ssb_pcicore_dev_irqvecs_enable(struct ssb_pcicore *pc, + struct ssb_device *dev) + { +--- a/drivers/ssb/main.c ++++ b/drivers/ssb/main.c +@@ -1330,6 +1330,31 @@ error: + } + EXPORT_SYMBOL(ssb_bus_powerup); + ++static void ssb_broadcast_value(struct ssb_device *dev, ++ u32 address, u32 data) ++{ ++ /* This is used for both, PCI and ChipCommon core, so be careful. */ ++ BUILD_BUG_ON(SSB_PCICORE_BCAST_ADDR != SSB_CHIPCO_BCAST_ADDR); ++ BUILD_BUG_ON(SSB_PCICORE_BCAST_DATA != SSB_CHIPCO_BCAST_DATA); ++ ++ ssb_write32(dev, SSB_PCICORE_BCAST_ADDR, address); ++ ssb_read32(dev, SSB_PCICORE_BCAST_ADDR); /* flush */ ++ ssb_write32(dev, SSB_PCICORE_BCAST_DATA, data); ++ ssb_read32(dev, SSB_PCICORE_BCAST_DATA); /* flush */ ++} ++ ++void ssb_commit_settings(struct ssb_bus *bus) ++{ ++ struct ssb_device *dev; ++ ++ dev = bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev; ++ if (WARN_ON(!dev)) ++ return; ++ /* This forces an update of the cached registers. */ ++ ssb_broadcast_value(dev, 0xFD8, 0); ++} ++EXPORT_SYMBOL(ssb_commit_settings); ++ + u32 ssb_admatch_base(u32 adm) + { + u32 base = 0; +--- a/include/linux/ssb/ssb.h ++++ b/include/linux/ssb/ssb.h +@@ -518,6 +518,7 @@ extern int ssb_bus_may_powerdown(struct + * Otherwise static always-on powercontrol will be used. */ + extern int ssb_bus_powerup(struct ssb_bus *bus, bool dynamic_pctl); + ++extern void ssb_commit_settings(struct ssb_bus *bus); + + /* Various helper functions */ + extern u32 ssb_admatch_base(u32 adm); diff --git a/target/linux/generic/patches-2.6.39/022-ssb_pcicore_build_breakage.patch b/target/linux/generic/patches-2.6.39/022-ssb_pcicore_build_breakage.patch new file mode 100644 index 0000000000..71ecc96acd --- /dev/null +++ b/target/linux/generic/patches-2.6.39/022-ssb_pcicore_build_breakage.patch @@ -0,0 +1,49 @@ +From 1159024d4c0aafecaa0c6635c55153b4b39cc1c8 Mon Sep 17 00:00:00 2001 +From: "John W. Linville" +Date: Fri, 13 May 2011 09:23:47 -0400 +Subject: [PATCH] ssb: fix pcicore build breakage + +drivers/ssb/main.c:1336: error: 'SSB_PCICORE_BCAST_ADDR' undeclared (first use in this function) +drivers/ssb/main.c:1337: error: 'SSB_PCICORE_BCAST_DATA' undeclared (first use in this function) +drivers/ssb/main.c:1349: error: 'struct ssb_pcicore' has no member named 'dev' + +Reported-by: Randy Dunlap +Signed-off-by: John W. Linville +--- + drivers/ssb/main.c | 14 ++++++++++---- + 1 files changed, 10 insertions(+), 4 deletions(-) + +--- a/drivers/ssb/main.c ++++ b/drivers/ssb/main.c +@@ -1333,21 +1333,27 @@ EXPORT_SYMBOL(ssb_bus_powerup); + static void ssb_broadcast_value(struct ssb_device *dev, + u32 address, u32 data) + { ++#ifdef CONFIG_SSB_DRIVER_PCICORE + /* This is used for both, PCI and ChipCommon core, so be careful. */ + BUILD_BUG_ON(SSB_PCICORE_BCAST_ADDR != SSB_CHIPCO_BCAST_ADDR); + BUILD_BUG_ON(SSB_PCICORE_BCAST_DATA != SSB_CHIPCO_BCAST_DATA); ++#endif + +- ssb_write32(dev, SSB_PCICORE_BCAST_ADDR, address); +- ssb_read32(dev, SSB_PCICORE_BCAST_ADDR); /* flush */ +- ssb_write32(dev, SSB_PCICORE_BCAST_DATA, data); +- ssb_read32(dev, SSB_PCICORE_BCAST_DATA); /* flush */ ++ ssb_write32(dev, SSB_CHIPCO_BCAST_ADDR, address); ++ ssb_read32(dev, SSB_CHIPCO_BCAST_ADDR); /* flush */ ++ ssb_write32(dev, SSB_CHIPCO_BCAST_DATA, data); ++ ssb_read32(dev, SSB_CHIPCO_BCAST_DATA); /* flush */ + } + + void ssb_commit_settings(struct ssb_bus *bus) + { + struct ssb_device *dev; + ++#ifdef CONFIG_SSB_DRIVER_PCICORE + dev = bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev; ++#else ++ dev = bus->chipco.dev; ++#endif + if (WARN_ON(!dev)) + return; + /* This forces an update of the cached registers. */ diff --git a/target/linux/generic/patches-2.6.39/100-overlayfs.patch b/target/linux/generic/patches-2.6.39/100-overlayfs.patch index b5c9199075..92bbe38298 100644 --- a/target/linux/generic/patches-2.6.39/100-overlayfs.patch +++ b/target/linux/generic/patches-2.6.39/100-overlayfs.patch @@ -1,6 +1,6 @@ --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -1595,6 +1595,7 @@ struct inode_operations { +@@ -1594,6 +1594,7 @@ struct inode_operations { void (*truncate_range)(struct inode *, loff_t, loff_t); int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); @@ -8,7 +8,7 @@ } ____cacheline_aligned; struct seq_file; -@@ -1989,6 +1990,7 @@ extern long do_sys_open(int dfd, const c +@@ -1988,6 +1989,7 @@ extern long do_sys_open(int dfd, const c extern struct file *filp_open(const char *, int, int); extern struct file *file_open_root(struct dentry *, struct vfsmount *, const char *, int); @@ -184,7 +184,7 @@ struct pipe_inode_info *opipe, --- a/fs/namespace.c +++ b/fs/namespace.c -@@ -1510,6 +1510,23 @@ void drop_collected_mounts(struct vfsmou +@@ -1494,6 +1494,23 @@ void drop_collected_mounts(struct vfsmou release_mounts(&umount_list); } diff --git a/target/linux/generic/patches-2.6.39/230-openwrt_lzma_options.patch b/target/linux/generic/patches-2.6.39/230-openwrt_lzma_options.patch index 67e0ceefb0..8819a633ac 100644 --- a/target/linux/generic/patches-2.6.39/230-openwrt_lzma_options.patch +++ b/target/linux/generic/patches-2.6.39/230-openwrt_lzma_options.patch @@ -1,6 +1,6 @@ --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib -@@ -254,7 +254,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^) +@@ -254,7 +254,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^) quiet_cmd_lzma = LZMA $@ cmd_lzma = (cat $(filter-out FORCE,$^) | \ diff --git a/target/linux/generic/patches-2.6.39/300-mips_expose_boot_raw.patch b/target/linux/generic/patches-2.6.39/300-mips_expose_boot_raw.patch index 0be7b74de1..2521118531 100644 --- a/target/linux/generic/patches-2.6.39/300-mips_expose_boot_raw.patch +++ b/target/linux/generic/patches-2.6.39/300-mips_expose_boot_raw.patch @@ -18,7 +18,7 @@ Acked-by: Rob Landley config CEVT_BCM1480 bool -@@ -2252,6 +2249,18 @@ config USE_OF +@@ -2247,6 +2244,18 @@ config USE_OF help Include support for flattened device tree machine descriptions. diff --git a/target/linux/generic/patches-2.6.39/306-mips_mem_functions_performance.patch b/target/linux/generic/patches-2.6.39/306-mips_mem_functions_performance.patch index 6ea9ba51ee..e4324717b4 100644 --- a/target/linux/generic/patches-2.6.39/306-mips_mem_functions_performance.patch +++ b/target/linux/generic/patches-2.6.39/306-mips_mem_functions_performance.patch @@ -1,6 +1,6 @@ --- a/arch/mips/include/asm/string.h +++ b/arch/mips/include/asm/string.h -@@ -133,11 +133,44 @@ strncmp(__const__ char *__cs, __const__ +@@ -133,11 +133,44 @@ strncmp(__const__ char *__cs, __const__ #define __HAVE_ARCH_MEMSET extern void *memset(void *__s, int __c, size_t __count); diff --git a/target/linux/generic/patches-2.6.39/400-rootfs_split.patch b/target/linux/generic/patches-2.6.39/400-rootfs_split.patch index b41c740cc8..b9f345daa0 100644 --- a/target/linux/generic/patches-2.6.39/400-rootfs_split.patch +++ b/target/linux/generic/patches-2.6.39/400-rootfs_split.patch @@ -193,7 +193,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 -@@ -652,6 +801,9 @@ int add_mtd_partitions(struct mtd_info * +@@ -652,6 +803,9 @@ int add_mtd_partitions(struct mtd_info * struct mtd_part *slave; uint64_t cur_offset = 0; int i; @@ -203,7 +203,7 @@ printk(KERN_NOTICE "Creating %d MTD partitions on \"%s\":\n", nbparts, master->name); -@@ -666,6 +818,21 @@ int add_mtd_partitions(struct mtd_info * +@@ -666,6 +820,21 @@ int add_mtd_partitions(struct mtd_info * add_mtd_device(&slave->mtd); @@ -225,7 +225,7 @@ cur_offset = slave->offset + slave->mtd.size; } -@@ -673,6 +840,32 @@ int add_mtd_partitions(struct mtd_info * +@@ -673,6 +842,32 @@ int add_mtd_partitions(struct mtd_info * } EXPORT_SYMBOL(add_mtd_partitions); @@ -260,7 +260,7 @@ --- a/drivers/mtd/mtdchar.c +++ b/drivers/mtd/mtdchar.c -@@ -841,6 +841,13 @@ static int mtd_ioctl(struct file *file, +@@ -841,6 +841,13 @@ static int mtd_ioctl(struct file *file, file->f_pos = 0; break; } diff --git a/target/linux/generic/patches-2.6.39/460-cfi_show_amd_extended_table_version.patch b/target/linux/generic/patches-2.6.39/460-cfi_show_amd_extended_table_version.patch index ecd5c94c90..346026e7eb 100644 --- a/target/linux/generic/patches-2.6.39/460-cfi_show_amd_extended_table_version.patch +++ b/target/linux/generic/patches-2.6.39/460-cfi_show_amd_extended_table_version.patch @@ -1,6 +1,6 @@ --- a/drivers/mtd/chips/cfi_cmdset_0002.c +++ b/drivers/mtd/chips/cfi_cmdset_0002.c -@@ -463,9 +463,9 @@ struct mtd_info *cfi_cmdset_0002(struct +@@ -463,9 +463,9 @@ struct mtd_info *cfi_cmdset_0002(struct /* * Valid primary extension versions are: 1.0, 1.1, 1.2, 1.3, 1.4 diff --git a/target/linux/generic/patches-2.6.39/501-yaffs_cvs_2009_04_24.patch b/target/linux/generic/patches-2.6.39/501-yaffs_cvs_2009_04_24.patch index 5c70e79a05..c334b17d08 100644 --- a/target/linux/generic/patches-2.6.39/501-yaffs_cvs_2009_04_24.patch +++ b/target/linux/generic/patches-2.6.39/501-yaffs_cvs_2009_04_24.patch @@ -601,7 +601,7 @@ dev->checkpointBlockList[i] = -1; } -@@ -191,18 +185,17 @@ int yaffs_GetCheckpointSum(yaffs_Device +@@ -191,18 +185,17 @@ int yaffs_GetCheckpointSum(yaffs_Device static int yaffs_CheckpointFlushBuffer(yaffs_Device *dev) { @@ -926,7 +926,7 @@ { unsigned char cDelta; /* column parity delta */ unsigned lDelta; /* line parity delta */ -@@ -294,8 +292,7 @@ int yaffs_ECCCorrectOther(unsigned char +@@ -294,8 +292,7 @@ int yaffs_ECCCorrectOther(unsigned char return 0; /* no error */ if (lDelta == ~lDeltaPrime && @@ -936,7 +936,7 @@ /* Single bit (recoverable) error in data */ bit = 0; -@@ -307,7 +304,7 @@ int yaffs_ECCCorrectOther(unsigned char +@@ -307,7 +304,7 @@ int yaffs_ECCCorrectOther(unsigned char if (cDelta & 0x02) bit |= 0x01; @@ -945,7 +945,7 @@ return -1; data[lDelta] ^= (1 << bit); -@@ -316,7 +313,7 @@ int yaffs_ECCCorrectOther(unsigned char +@@ -316,7 +313,7 @@ int yaffs_ECCCorrectOther(unsigned char } if ((yaffs_CountBits32(lDelta) + yaffs_CountBits32(lDeltaPrime) + @@ -954,7 +954,7 @@ /* Reccoverable error in ecc */ *read_ecc = *test_ecc; -@@ -326,6 +323,4 @@ int yaffs_ECCCorrectOther(unsigned char +@@ -326,6 +323,4 @@ int yaffs_ECCCorrectOther(unsigned char /* Unrecoverable error */ return -1; @@ -1398,7 +1398,7 @@ { unsigned char *alias; int ret; -@@ -329,7 +395,7 @@ static int yaffs_readlink(struct dentry +@@ -329,7 +395,7 @@ static int yaffs_readlink(struct dentry return ret; } @@ -1560,7 +1560,7 @@ static int yaffs_file_flush(struct file *file, fl_owner_t id) #else static int yaffs_file_flush(struct file *file) -@@ -513,8 +579,8 @@ static int yaffs_file_flush(struct file +@@ -513,8 +579,8 @@ static int yaffs_file_flush(struct file yaffs_Device *dev = obj->myDev; T(YAFFS_TRACE_OS, @@ -1571,7 +1571,7 @@ yaffs_GrossLock(dev); -@@ -535,15 +601,15 @@ static int yaffs_readpage_nolock(struct +@@ -535,15 +601,15 @@ static int yaffs_readpage_nolock(struct yaffs_Device *dev; @@ -1591,7 +1591,7 @@ BUG_ON(!PageLocked(pg)); #else if (!PageLocked(pg)) -@@ -555,9 +621,9 @@ static int yaffs_readpage_nolock(struct +@@ -555,9 +621,9 @@ static int yaffs_readpage_nolock(struct yaffs_GrossLock(dev); @@ -1604,7 +1604,7 @@ yaffs_GrossUnlock(dev); -@@ -575,7 +641,7 @@ static int yaffs_readpage_nolock(struct +@@ -575,7 +641,7 @@ static int yaffs_readpage_nolock(struct flush_dcache_page(pg); kunmap(pg); @@ -3193,7 +3193,7 @@ if (n < step) { n++; continue; -@@ -2119,7 +2356,7 @@ static int yaffs_proc_write(struct file +@@ -2119,7 +2356,7 @@ static int yaffs_proc_write(struct file char *end; char *mask_name; const char *x; @@ -3202,7 +3202,7 @@ int i; int done = 0; int add, len = 0; -@@ -2129,9 +2366,8 @@ static int yaffs_proc_write(struct file +@@ -2129,9 +2366,8 @@ static int yaffs_proc_write(struct file while (!done && (pos < count)) { done = 1; @@ -3213,7 +3213,7 @@ switch (buf[pos]) { case '+': -@@ -2148,20 +2384,21 @@ static int yaffs_proc_write(struct file +@@ -2148,20 +2384,21 @@ static int yaffs_proc_write(struct file mask_name = NULL; mask_bitfield = simple_strtoul(buf + pos, &end, 0); @@ -3240,7 +3240,7 @@ mask_name = mask_flags[i].mask_name; mask_bitfield = mask_flags[i].mask_bitfield; done = 0; -@@ -2172,7 +2409,7 @@ static int yaffs_proc_write(struct file +@@ -2172,7 +2409,7 @@ static int yaffs_proc_write(struct file if (mask_name != NULL) { done = 0; @@ -3249,7 +3249,7 @@ case '-': rg &= ~mask_bitfield; break; -@@ -2191,13 +2428,13 @@ static int yaffs_proc_write(struct file +@@ -2191,13 +2428,13 @@ static int yaffs_proc_write(struct file yaffs_traceMask = rg | YAFFS_TRACE_ALWAYS; @@ -5691,7 +5691,7 @@ { /* Get the real object in case we were fed a hard link as an equivalent object */ equivalentObject = yaffs_GetEquivalentObject(equivalentObject); -@@ -2363,33 +2396,31 @@ yaffs_Object *yaffs_Link(yaffs_Object * +@@ -2363,33 +2396,31 @@ yaffs_Object *yaffs_Link(yaffs_Object * } @@ -7622,7 +7622,7 @@ int nToCopy; int n = nBytes; int nDone = 0; -@@ -4600,27 +4665,26 @@ int yaffs_ReadDataFromFile(yaffs_Object +@@ -4600,27 +4665,26 @@ int yaffs_ReadDataFromFile(yaffs_Object dev = in->myDev; while (n > 0) { @@ -7657,7 +7657,7 @@ if (dev->nShortOpCaches > 0) { /* If we can't find the data in the cache, then load it up. */ -@@ -4641,14 +4705,9 @@ int yaffs_ReadDataFromFile(yaffs_Object +@@ -4641,14 +4705,9 @@ int yaffs_ReadDataFromFile(yaffs_Object cache->locked = 1; @@ -7673,7 +7673,7 @@ cache->locked = 0; } else { /* Read into the local buffer then copy..*/ -@@ -4657,41 +4716,19 @@ int yaffs_ReadDataFromFile(yaffs_Object +@@ -4657,41 +4716,19 @@ int yaffs_ReadDataFromFile(yaffs_Object yaffs_GetTempBuffer(dev, __LINE__); yaffs_ReadChunkDataFromObject(in, chunk, localBuffer); @@ -7718,7 +7718,7 @@ } n -= nToCopy; -@@ -4704,28 +4741,37 @@ int yaffs_ReadDataFromFile(yaffs_Object +@@ -4704,28 +4741,37 @@ int yaffs_ReadDataFromFile(yaffs_Object return nDone; } @@ -7923,7 +7923,7 @@ int newFullChunks; yaffs_Device *dev = in->myDev; -@@ -4955,13 +4981,11 @@ int yaffs_ResizeFile(yaffs_Object * in, +@@ -4955,13 +4981,11 @@ int yaffs_ResizeFile(yaffs_Object * in, yaffs_CheckGarbageCollection(dev); @@ -7941,7 +7941,7 @@ if (newSize < oldFileSize) { -@@ -4994,21 +5018,20 @@ int yaffs_ResizeFile(yaffs_Object * in, +@@ -4994,21 +5018,20 @@ int yaffs_ResizeFile(yaffs_Object * in, } @@ -7968,7 +7968,7 @@ { obj = yaffs_GetEquivalentObject(obj); -@@ -5024,7 +5047,7 @@ loff_t yaffs_GetFileSize(yaffs_Object * +@@ -5024,7 +5047,7 @@ loff_t yaffs_GetFileSize(yaffs_Object * @@ -9789,7 +9789,7 @@ { int init_failed = 0; unsigned x; -@@ -7040,6 +7126,8 @@ int yaffs_GutsInitialise(yaffs_Device * +@@ -7040,6 +7126,8 @@ int yaffs_GutsInitialise(yaffs_Device * dev->chunkOffset = 0; dev->nFreeChunks = 0; @@ -9798,7 +9798,7 @@ if (dev->startBlock == 0) { dev->internalStartBlock = dev->startBlock + 1; dev->internalEndBlock = dev->endBlock + 1; -@@ -7049,18 +7137,18 @@ int yaffs_GutsInitialise(yaffs_Device * +@@ -7049,18 +7137,18 @@ int yaffs_GutsInitialise(yaffs_Device * /* Check geometry parameters. */ @@ -9823,7 +9823,7 @@ return YAFFS_FAIL; } -@@ -7070,6 +7158,12 @@ int yaffs_GutsInitialise(yaffs_Device * +@@ -7070,6 +7158,12 @@ int yaffs_GutsInitialise(yaffs_Device * return YAFFS_FAIL; } @@ -9836,7 +9836,7 @@ /* Got the right mix of functions? */ if (!yaffs_CheckDevFunctions(dev)) { /* Function missing */ -@@ -7097,31 +7191,18 @@ int yaffs_GutsInitialise(yaffs_Device * +@@ -7097,31 +7191,18 @@ int yaffs_GutsInitialise(yaffs_Device * dev->isMounted = 1; @@ -9875,7 +9875,7 @@ /* * Calculate chunkGroupBits. -@@ -7133,16 +7214,15 @@ int yaffs_GutsInitialise(yaffs_Device * +@@ -7133,16 +7214,15 @@ int yaffs_GutsInitialise(yaffs_Device * bits = ShiftsGE(x); /* Set up tnode width if wide tnodes are enabled. */ @@ -9896,7 +9896,7 @@ dev->tnodeWidth = 16; dev->tnodeMask = (1<tnodeWidth)-1; -@@ -7193,7 +7273,7 @@ int yaffs_GutsInitialise(yaffs_Device * +@@ -7193,7 +7273,7 @@ int yaffs_GutsInitialise(yaffs_Device * dev->hasPendingPrioritisedGCs = 1; /* Assume the worst for now, will get fixed on first GC */ /* Initialise temporary buffers and caches. */ @@ -9905,7 +9905,7 @@ init_failed = 1; dev->srCache = NULL; -@@ -7203,25 +7283,26 @@ int yaffs_GutsInitialise(yaffs_Device * +@@ -7203,25 +7283,26 @@ int yaffs_GutsInitialise(yaffs_Device * if (!init_failed && dev->nShortOpCaches > 0) { int i; @@ -9940,7 +9940,7 @@ init_failed = 1; dev->srLastUse = 0; -@@ -7229,29 +7310,30 @@ int yaffs_GutsInitialise(yaffs_Device * +@@ -7229,29 +7310,30 @@ int yaffs_GutsInitialise(yaffs_Device * dev->cacheHits = 0; @@ -9979,7 +9979,7 @@ T(YAFFS_TRACE_ALWAYS, (TSTR("yaffs: restored from checkpoint" TENDSTR))); } else { -@@ -7273,24 +7355,25 @@ int yaffs_GutsInitialise(yaffs_Device * +@@ -7273,24 +7355,25 @@ int yaffs_GutsInitialise(yaffs_Device * dev->nBackgroundDeletions = 0; dev->oldestDirtySequence = 0; @@ -10011,7 +10011,7 @@ /* Clean up the mess */ T(YAFFS_TRACE_TRACING, (TSTR("yaffs: yaffs_GutsInitialise() aborted.\n" TENDSTR))); -@@ -7318,7 +7401,7 @@ int yaffs_GutsInitialise(yaffs_Device * +@@ -7318,7 +7401,7 @@ int yaffs_GutsInitialise(yaffs_Device * } @@ -10710,7 +10710,7 @@ { if (etags) { memset(etags, 0, sizeof(*etags)); -@@ -169,9 +169,9 @@ static int rettags(yaffs_ExtendedTags * +@@ -169,9 +169,9 @@ static int rettags(yaffs_ExtendedTags * * Returns YAFFS_OK or YAFFS_FAIL. */ int nandmtd1_ReadChunkWithTagsFromNAND(yaffs_Device *dev, @@ -11038,14 +11038,14 @@ + yaffs_UnpackTags2(tags, &pt); + } + } - -- if(tags && retval == -EBADMSG && tags->eccResult == YAFFS_ECC_RESULT_NO_ERROR) -- tags->eccResult = YAFFS_ECC_RESULT_UNFIXED; ++ + if (localData) + yaffs_ReleaseTempBuffer(dev, data, __LINE__); +- if(tags && retval == -EBADMSG && tags->eccResult == YAFFS_ECC_RESULT_NO_ERROR) + if (tags && retval == -EBADMSG && tags->eccResult == YAFFS_ECC_RESULT_NO_ERROR) -+ tags->eccResult = YAFFS_ECC_RESULT_UNFIXED; + tags->eccResult = YAFFS_ECC_RESULT_UNFIXED; +- if (retval == 0) return YAFFS_OK; else diff --git a/target/linux/generic/patches-2.6.39/502-yaffs_git_2010_10_20.patch b/target/linux/generic/patches-2.6.39/502-yaffs_git_2010_10_20.patch index 2f4e6ef83b..ffb6f0aa8c 100644 --- a/target/linux/generic/patches-2.6.39/502-yaffs_git_2010_10_20.patch +++ b/target/linux/generic/patches-2.6.39/502-yaffs_git_2010_10_20.patch @@ -316,7 +316,7 @@ chunk/page state. This byte is zeroed when the page is discarded. Choose this option if you have existing on-NAND data in this format that you need to continue to support. New data written also uses the -@@ -57,7 +78,7 @@ adjusted to use the older-style format. +@@ -57,7 +78,7 @@ adjusted to use the older-style format. MTD versions in yaffs_mtdif1.c. */ /* Default: Not selected */ @@ -1614,7 +1614,7 @@ yaffs_ECCOther *read_ecc, const yaffs_ECCOther *test_ecc) { -@@ -304,7 +301,7 @@ int yaffs_ECCCorrectOther(unsigned char +@@ -304,7 +301,7 @@ int yaffs_ECCCorrectOther(unsigned char if (cDelta & 0x02) bit |= 0x01; @@ -1623,7 +1623,7 @@ return -1; data[lDelta] ^= (1 << bit); -@@ -312,8 +309,8 @@ int yaffs_ECCCorrectOther(unsigned char +@@ -312,8 +309,8 @@ int yaffs_ECCCorrectOther(unsigned char return 1; /* corrected */ } diff --git a/target/linux/generic/patches-2.6.39/511-debloat_lzma.patch b/target/linux/generic/patches-2.6.39/511-debloat_lzma.patch index 18e4a51ee3..1e41661ebb 100644 --- a/target/linux/generic/patches-2.6.39/511-debloat_lzma.patch +++ b/target/linux/generic/patches-2.6.39/511-debloat_lzma.patch @@ -124,7 +124,7 @@ /* LzmaDecode --- a/lib/lzma/LzmaDec.c +++ b/lib/lzma/LzmaDec.c -@@ -682,7 +682,7 @@ static void LzmaDec_InitRc(CLzmaDec *p, +@@ -682,7 +682,7 @@ static void LzmaDec_InitRc(CLzmaDec *p, p->needFlush = 0; } @@ -194,7 +194,7 @@ { CLzmaProps propNew; RINOK(LzmaProps_Decode(&propNew, props, propsSize)); -@@ -944,7 +944,7 @@ SRes LzmaDec_AllocateProbs(CLzmaDec *p, +@@ -944,7 +944,7 @@ SRes LzmaDec_AllocateProbs(CLzmaDec *p, return SZ_OK; } @@ -375,7 +375,7 @@ void MatchFinder_Construct(CMatchFinder *p); /* Conditions: -@@ -70,12 +65,6 @@ int MatchFinder_Create(CMatchFinder *p, +@@ -70,12 +65,6 @@ int MatchFinder_Create(CMatchFinder *p, UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter, ISzAlloc *alloc); void MatchFinder_Free(CMatchFinder *p, ISzAlloc *alloc); diff --git a/target/linux/generic/patches-2.6.39/600-netfilter_layer7_2.22.patch b/target/linux/generic/patches-2.6.39/600-netfilter_layer7_2.22.patch index 710afc8c99..87c2e1fc2e 100644 --- a/target/linux/generic/patches-2.6.39/600-netfilter_layer7_2.22.patch +++ b/target/linux/generic/patches-2.6.39/600-netfilter_layer7_2.22.patch @@ -30,7 +30,7 @@ depends on NETFILTER_ADVANCED --- a/net/netfilter/Makefile +++ b/net/netfilter/Makefile -@@ -102,6 +102,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT) +@@ -102,6 +102,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT) obj-$(CONFIG_NETFILTER_XT_MATCH_SCTP) += xt_sctp.o obj-$(CONFIG_NETFILTER_XT_MATCH_SOCKET) += xt_socket.o obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o diff --git a/target/linux/generic/patches-2.6.39/722-phy_mvswitch.patch b/target/linux/generic/patches-2.6.39/722-phy_mvswitch.patch index b5fef7668e..5a7b96aadd 100644 --- a/target/linux/generic/patches-2.6.39/722-phy_mvswitch.patch +++ b/target/linux/generic/patches-2.6.39/722-phy_mvswitch.patch @@ -1,8 +1,8 @@ --- a/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig -@@ -102,6 +102,9 @@ config ADM6996_PHY - ---help--- - Currently supports the ADM6996F switch +@@ -104,6 +104,9 @@ config ADM6996_PHY + Currently supports the ADM6996FC and ADM6996M switches. + Support for FC is very limited. +config MVSWITCH_PHY + tristate "Driver for Marvell 88E6060 switches" diff --git a/target/linux/generic/patches-2.6.39/723-phy_ip175c.patch b/target/linux/generic/patches-2.6.39/723-phy_ip175c.patch index d99ca61799..22a56ed4dc 100644 --- a/target/linux/generic/patches-2.6.39/723-phy_ip175c.patch +++ b/target/linux/generic/patches-2.6.39/723-phy_ip175c.patch @@ -1,6 +1,6 @@ --- a/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig -@@ -105,6 +105,10 @@ config ADM6996_PHY +@@ -107,6 +107,10 @@ config ADM6996_PHY config MVSWITCH_PHY tristate "Driver for Marvell 88E6060 switches" diff --git a/target/linux/generic/patches-2.6.39/724-phy_ar8216.patch b/target/linux/generic/patches-2.6.39/724-phy_ar8216.patch index a7afdfd820..c375a97292 100644 --- a/target/linux/generic/patches-2.6.39/724-phy_ar8216.patch +++ b/target/linux/generic/patches-2.6.39/724-phy_ar8216.patch @@ -1,6 +1,6 @@ --- a/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig -@@ -109,6 +109,10 @@ config IP17XX_PHY +@@ -111,6 +111,10 @@ config IP17XX_PHY tristate "Driver for IC+ IP17xx switches" select SWCONFIG diff --git a/target/linux/generic/patches-2.6.39/725-phy_rtl8306.patch b/target/linux/generic/patches-2.6.39/725-phy_rtl8306.patch index cd5e1a88b2..e97b84d48c 100644 --- a/target/linux/generic/patches-2.6.39/725-phy_rtl8306.patch +++ b/target/linux/generic/patches-2.6.39/725-phy_rtl8306.patch @@ -1,6 +1,6 @@ --- a/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig -@@ -113,6 +113,10 @@ config AR8216_PHY +@@ -115,6 +115,10 @@ config AR8216_PHY tristate "Driver for Atheros AR8216 switches" select SWCONFIG diff --git a/target/linux/generic/patches-2.6.39/726-phy_rtl8366.patch b/target/linux/generic/patches-2.6.39/726-phy_rtl8366.patch index c4599969cb..34ac10ed39 100644 --- a/target/linux/generic/patches-2.6.39/726-phy_rtl8366.patch +++ b/target/linux/generic/patches-2.6.39/726-phy_rtl8366.patch @@ -1,6 +1,6 @@ --- a/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig -@@ -155,4 +155,29 @@ config MDIO_OCTEON +@@ -157,4 +157,29 @@ config MDIO_OCTEON If in doubt, say Y. diff --git a/target/linux/generic/patches-2.6.39/750-hostap_txpower.patch b/target/linux/generic/patches-2.6.39/750-hostap_txpower.patch index e4c1803ff5..374a284454 100644 --- a/target/linux/generic/patches-2.6.39/750-hostap_txpower.patch +++ b/target/linux/generic/patches-2.6.39/750-hostap_txpower.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/hostap/hostap_ap.c +++ b/drivers/net/wireless/hostap/hostap_ap.c -@@ -2338,13 +2338,13 @@ int prism2_ap_get_sta_qual(local_info_t +@@ -2338,13 +2338,13 @@ int prism2_ap_get_sta_qual(local_info_t addr[count].sa_family = ARPHRD_ETHER; memcpy(addr[count].sa_data, sta->addr, ETH_ALEN); if (sta->last_rx_silence == 0) diff --git a/target/linux/generic/patches-2.6.39/811-pci_disable_usb_common_quirks.patch b/target/linux/generic/patches-2.6.39/811-pci_disable_usb_common_quirks.patch index 47abdf27ca..538ac3011d 100644 --- a/target/linux/generic/patches-2.6.39/811-pci_disable_usb_common_quirks.patch +++ b/target/linux/generic/patches-2.6.39/811-pci_disable_usb_common_quirks.patch @@ -1,7 +1,7 @@ --- a/drivers/usb/host/pci-quirks.c +++ b/drivers/usb/host/pci-quirks.c -@@ -392,6 +392,8 @@ reset_needed: +@@ -423,6 +423,8 @@ reset_needed: } EXPORT_SYMBOL_GPL(uhci_check_and_reset_hc); @@ -10,7 +10,7 @@ static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask) { u16 cmd; -@@ -736,3 +738,5 @@ static void __devinit quirk_usb_early_ha +@@ -767,3 +769,5 @@ static void __devinit quirk_usb_early_ha quirk_usb_handoff_xhci(pdev); } DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, quirk_usb_early_handoff); diff --git a/target/linux/generic/patches-2.6.39/830-ledtrig_morse.patch b/target/linux/generic/patches-2.6.39/830-ledtrig_morse.patch index 2edc4f33cb..c51ad78639 100644 --- a/target/linux/generic/patches-2.6.39/830-ledtrig_morse.patch +++ b/target/linux/generic/patches-2.6.39/830-ledtrig_morse.patch @@ -11,7 +11,7 @@ endif # NEW_LEDS --- a/drivers/leds/Makefile +++ b/drivers/leds/Makefile -@@ -53,3 +53,4 @@ obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += +@@ -53,3 +53,4 @@ obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += ledtrig-backlight.o obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o diff --git a/target/linux/generic/patches-2.6.39/831-ledtrig_netdev.patch b/target/linux/generic/patches-2.6.39/831-ledtrig_netdev.patch index 413174006c..8a54412285 100644 --- a/target/linux/generic/patches-2.6.39/831-ledtrig_netdev.patch +++ b/target/linux/generic/patches-2.6.39/831-ledtrig_netdev.patch @@ -14,7 +14,7 @@ endif # NEW_LEDS --- a/drivers/leds/Makefile +++ b/drivers/leds/Makefile -@@ -54,3 +54,4 @@ obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += +@@ -54,3 +54,4 @@ obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o obj-$(CONFIG_LEDS_TRIGGER_MORSE) += ledtrig-morse.o diff --git a/target/linux/generic/patches-2.6.39/834-gpio_ioctl.patch b/target/linux/generic/patches-2.6.39/834-gpio_ioctl.patch index 6609a1670a..3b7063223e 100644 --- a/target/linux/generic/patches-2.6.39/834-gpio_ioctl.patch +++ b/target/linux/generic/patches-2.6.39/834-gpio_ioctl.patch @@ -1,6 +1,6 @@ --- a/drivers/char/gpio_dev.c +++ b/drivers/char/gpio_dev.c -@@ -114,7 +114,7 @@ gpio_close(struct inode * inode, struct +@@ -114,7 +114,7 @@ gpio_close(struct inode * inode, struct } struct file_operations gpio_fops = { diff --git a/target/linux/generic/patches-2.6.39/863-gpiommc.patch b/target/linux/generic/patches-2.6.39/863-gpiommc.patch index c10eaeed25..b4f8fd953c 100644 --- a/target/linux/generic/patches-2.6.39/863-gpiommc.patch +++ b/target/linux/generic/patches-2.6.39/863-gpiommc.patch @@ -829,9 +829,9 @@ +be done automatically. --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -2888,6 +2888,11 @@ T: git git://git.kernel.org/pub/scm/linu - S: Maintained - F: drivers/media/video/gspca/ +@@ -2896,6 +2896,11 @@ L: linuxppc-dev@lists.ozlabs.org + S: Odd Fixes + F: drivers/tty/hvc/ +GPIOMMC DRIVER +P: Michael Buesch diff --git a/target/linux/generic/patches-2.6.39/941-ocf_20100325.patch b/target/linux/generic/patches-2.6.39/941-ocf_20100325.patch index 537f9ed374..e640bc1c55 100644 --- a/target/linux/generic/patches-2.6.39/941-ocf_20100325.patch +++ b/target/linux/generic/patches-2.6.39/941-ocf_20100325.patch @@ -24,7 +24,7 @@ * All of these routines try to estimate how many bits of randomness a * particular randomness source. They do this by keeping track of the * first and second order deltas of the event timings. -@@ -722,6 +732,61 @@ void add_disk_randomness(struct gendisk +@@ -722,6 +732,61 @@ void add_disk_randomness(struct gendisk } #endif @@ -160,7 +160,7 @@ --- a/kernel/pid.c +++ b/kernel/pid.c -@@ -424,6 +424,7 @@ struct task_struct *find_task_by_vpid(pi +@@ -427,6 +427,7 @@ struct task_struct *find_task_by_vpid(pi { return find_task_by_pid_ns(vnr, current->nsproxy->pid_ns); } diff --git a/target/linux/generic/patches-2.6.39/950-vm_exports.patch b/target/linux/generic/patches-2.6.39/950-vm_exports.patch index 9fcaabc791..874b810415 100644 --- a/target/linux/generic/patches-2.6.39/950-vm_exports.patch +++ b/target/linux/generic/patches-2.6.39/950-vm_exports.patch @@ -1,6 +1,6 @@ --- a/mm/shmem.c +++ b/mm/shmem.c -@@ -2711,6 +2711,16 @@ out: +@@ -2730,6 +2730,16 @@ out: /* common code */ @@ -17,7 +17,7 @@ /** * shmem_file_setup - get an unlinked file living in tmpfs * @name: name for dentry (to be seen in /proc//maps -@@ -2788,10 +2798,7 @@ int shmem_zero_setup(struct vm_area_stru +@@ -2807,10 +2817,7 @@ int shmem_zero_setup(struct vm_area_stru if (IS_ERR(file)) return PTR_ERR(file); @@ -32,7 +32,7 @@ } --- a/fs/file.c +++ b/fs/file.c -@@ -264,6 +264,7 @@ int expand_files(struct files_struct *fi +@@ -268,6 +268,7 @@ int expand_files(struct files_struct *fi /* All good, so we try */ return expand_fdtable(files, nr); } @@ -78,7 +78,7 @@ /** * zap_vma_ptes - remove ptes mapping the vma -@@ -2756,6 +2757,7 @@ int vmtruncate_range(struct inode *inode +@@ -2763,6 +2764,7 @@ int vmtruncate_range(struct inode *inode return 0; } @@ -106,7 +106,7 @@ void *caller) --- a/include/linux/mm.h +++ b/include/linux/mm.h -@@ -871,6 +871,7 @@ extern void __show_free_areas(unsigned i +@@ -872,6 +872,7 @@ extern void __show_free_areas(unsigned i int shmem_lock(struct file *file, int lock, struct user_struct *user); struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags);