diff options
author | John Bowler <jbowler@nslu2-linux.org> | 2005-10-30 21:54:14 +0000 |
---|---|---|
committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2005-10-30 21:54:14 +0000 |
commit | d1ebd904d77f4a8836b33317ebd02bada3d59d96 (patch) | |
tree | e8a5d5821d04d1e3699ed33843cce0c9b93d9e26 | |
parent | b7bf1357c5744791c1143ed7be283a6bf016c652 (diff) |
nslu2-kernel: updated patch set and defconfig in 2.6.14
- 16-ixp4xx-ioremap is removed (l-a-k wants the warning in there)
- 25-nslu2-arch-reset is removed (doesn't seem necessary in 2.6.13+)
- 10-ixp4xx-copy-from update to remove compiler warning
- 18-ixp4xx-io-h-addr better patch - removes casts
- defconfig - update from CVS
- nslu2-kernel.inc: EXTRAVERSION and LOCALVERSION are now set to ""
- to ensure that KERNEL_VERSION is constant between major versions.
-rw-r--r-- | packages/linux/nslu2-kernel.inc | 7 | ||||
-rw-r--r-- | packages/linux/nslu2-kernel/2.6.14/10-ixp4xx-copy-from.patch | 23 | ||||
-rw-r--r-- | packages/linux/nslu2-kernel/2.6.14/16-ixp4xx-ioremap.patch | 11 | ||||
-rw-r--r-- | packages/linux/nslu2-kernel/2.6.14/18-ixp4xx-io-h-addr.patch | 308 | ||||
-rw-r--r-- | packages/linux/nslu2-kernel/2.6.14/25-nslu2-arch-reset.patch | 41 | ||||
-rw-r--r-- | packages/linux/nslu2-kernel/2.6.14/defconfig | 3 | ||||
-rw-r--r-- | packages/linux/nslu2-kernel_2.6.14.bb | 4 |
7 files changed, 302 insertions, 95 deletions
diff --git a/packages/linux/nslu2-kernel.inc b/packages/linux/nslu2-kernel.inc index 5358b87c8d..a0cc1daf25 100644 --- a/packages/linux/nslu2-kernel.inc +++ b/packages/linux/nslu2-kernel.inc @@ -228,6 +228,13 @@ CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_KERNEL_OPTIONS} ${CMDLINE_DEBUG} ${CMDLINE_ KERNEL_CC += "${TARGET_CC_KERNEL_ARCH}" KERNEL_LD += "${TARGET_LD_KERNEL_ARCH}" +# Set EXTRAVERSION and LOCALVERSION to "" so that the kernel version +# remains pinned to the x.y.z form, also turn off the directory +# printing which provides almost all the output of an incremental build. +EXTRA_OEMAKE += "EXTRAVERSION=" +EXTRA_OEMAKE += "LOCALVERSION=" +EXTRA_OEMAKE += "MAKEFLAGS='--no-print-directory'" + # By putting the added files in place in a separate task before # do_patch it becomes possible to patch these files. do_unpacklocal() { diff --git a/packages/linux/nslu2-kernel/2.6.14/10-ixp4xx-copy-from.patch b/packages/linux/nslu2-kernel/2.6.14/10-ixp4xx-copy-from.patch index f2e65ecd8f..66cf99b32e 100644 --- a/packages/linux/nslu2-kernel/2.6.14/10-ixp4xx-copy-from.patch +++ b/packages/linux/nslu2-kernel/2.6.14/10-ixp4xx-copy-from.patch @@ -1,5 +1,5 @@ ---- linux-2.6.13/.pc/10-ixp4xx-copy-from.patch/drivers/mtd/maps/ixp4xx.c 2005-10-07 15:55:08.958509801 -0700 -+++ linux-2.6.13/drivers/mtd/maps/ixp4xx.c 2005-10-07 19:06:22.352484966 -0700 +--- linux-2.6.14/drivers/mtd/maps/ixp4xx.c 2005-10-27 17:02:08.000000000 -0700 ++++ linux-2.6.14/drivers/mtd/maps/ixp4xx.c 2005-10-29 23:11:24.990820968 -0700 @@ -22,6 +22,7 @@ #include <linux/string.h> #include <linux/mtd/mtd.h> @@ -55,7 +55,7 @@ return val; } -@@ -53,19 +81,23 @@ +@@ -53,19 +81,25 @@ static map_word ixp4xx_read16(struct map static void ixp4xx_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len) { @@ -63,15 +63,18 @@ - u8 *dest = (u8 *) to; - u16 *src = (u16 *) (map->map_priv_1 + from); - u16 data; -+ if (len <= 0) -+ return; - +- - for (i = 0; i < (len / 2); i++) { - data = src[i]; - dest[i * 2] = BYTE0(data); - dest[i * 2 + 1] = BYTE1(data); -+ u8 *dest = (u8 *) to; -+ u8 *src = (u8 *) (map->map_priv_1 + from); ++ u8 *dest, *src; ++ ++ if (len <= 0) ++ return; ++ ++ dest = (u8 *) to; ++ src = (u8 *) (map->map_priv_1 + from); + if (from & 1) + *dest++ = BYTE1(FLASHW(src-1)), ++src, --len; + @@ -89,7 +92,7 @@ } /* -@@ -75,7 +107,7 @@ +@@ -75,7 +109,7 @@ static void ixp4xx_copy_from(struct map_ static void ixp4xx_probe_write16(struct map_info *map, map_word d, unsigned long adr) { if (!(adr & 1)) @@ -98,7 +101,7 @@ } /* -@@ -83,7 +115,7 @@ +@@ -83,7 +117,7 @@ static void ixp4xx_probe_write16(struct */ static void ixp4xx_write16(struct map_info *map, map_word d, unsigned long adr) { diff --git a/packages/linux/nslu2-kernel/2.6.14/16-ixp4xx-ioremap.patch b/packages/linux/nslu2-kernel/2.6.14/16-ixp4xx-ioremap.patch deleted file mode 100644 index 53d390b7c5..0000000000 --- a/packages/linux/nslu2-kernel/2.6.14/16-ixp4xx-ioremap.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- linux-2.6.14-rc5/drivers/mtd/maps/ixp4xx.c 2005-10-26 08:37:21.960361430 -0700 -+++ patched/drivers/mtd/maps/ixp4xx.c 2005-10-26 12:13:13.879374310 -0700 -@@ -227,7 +227,7 @@ static int ixp4xx_flash_probe(struct dev - goto Error; - } - -- info->map.map_priv_1 = ioremap(dev->resource->start, -+ info->map.map_priv_1 = (unsigned long)ioremap(dev->resource->start, - dev->resource->end - dev->resource->start + 1); - if (!info->map.map_priv_1) { - printk(KERN_ERR "IXP4XXFlash: Failed to ioremap region\n"); diff --git a/packages/linux/nslu2-kernel/2.6.14/18-ixp4xx-io-h-addr.patch b/packages/linux/nslu2-kernel/2.6.14/18-ixp4xx-io-h-addr.patch index cf6313116d..5813bbb7ac 100644 --- a/packages/linux/nslu2-kernel/2.6.14/18-ixp4xx-io-h-addr.patch +++ b/packages/linux/nslu2-kernel/2.6.14/18-ixp4xx-io-h-addr.patch @@ -1,37 +1,287 @@ ---- linux-2.6.14-rc5/include/asm-arm/arch-ixp4xx/io.h 2005-10-26 08:37:22.844417060 -0700 -+++ patched/include/asm-arm/arch-ixp4xx/io.h 2005-10-26 12:14:20.771583571 -0700 -@@ -80,21 +80,21 @@ __ixp4xx_iounmap(void __iomem *addr) +--- linux-2.6.14/include/asm-arm/arch-ixp4xx/io.h 2005-10-29 23:33:21.757679882 -0700 ++++ linux-2.6.14/include/asm-arm/arch-ixp4xx/io.h 2005-10-29 23:47:02.581331058 -0700 +@@ -80,9 +80,9 @@ __ixp4xx_iounmap(void __iomem *addr) #define __arch_ioremap(a, s, f, x) __ixp4xx_ioremap(a, s, f, x) #define __arch_iounmap(a) __ixp4xx_iounmap(a) -#define writeb(p, v) __ixp4xx_writeb(p, v) -#define writew(p, v) __ixp4xx_writew(p, v) -#define writel(p, v) __ixp4xx_writel(p, v) -- --#define writesb(p, v, l) __ixp4xx_writesb(p, v, l) --#define writesw(p, v, l) __ixp4xx_writesw(p, v, l) --#define writesl(p, v, l) __ixp4xx_writesl(p, v, l) -+#define writeb(v, p) __ixp4xx_writeb(v, (u32)p) -+#define writew(v, p) __ixp4xx_writew(v, (u32)p) -+#define writel(v, p) __ixp4xx_writel(v, (u32)p) -+ -+#define writesb(p, v, l) __ixp4xx_writesb((u32)p, v, l) -+#define writesw(p, v, l) __ixp4xx_writesw((u32)p, v, l) -+#define writesl(p, v, l) __ixp4xx_writesl((u32)p, v, l) - --#define readb(p) __ixp4xx_readb(p) --#define readw(p) __ixp4xx_readw(p) --#define readl(p) __ixp4xx_readl(p) -+#define readb(p) __ixp4xx_readb((u32)p) -+#define readw(p) __ixp4xx_readw((u32)p) -+#define readl(p) __ixp4xx_readl((u32)p) - --#define readsb(p, v, l) __ixp4xx_readsb(p, v, l) --#define readsw(p, v, l) __ixp4xx_readsw(p, v, l) --#define readsl(p, v, l) __ixp4xx_readsl(p, v, l) -+#define readsb(p, v, l) __ixp4xx_readsb((u32)p, v, l) -+#define readsw(p, v, l) __ixp4xx_readsw((u32)p, v, l) -+#define readsl(p, v, l) __ixp4xx_readsl((u32)p, v, l) ++#define writeb(v, p) __ixp4xx_writeb(v, p) ++#define writew(v, p) __ixp4xx_writew(v, p) ++#define writel(v, p) __ixp4xx_writel(v, p) + + #define writesb(p, v, l) __ixp4xx_writesb(p, v, l) + #define writesw(p, v, l) __ixp4xx_writesw(p, v, l) +@@ -97,8 +97,9 @@ __ixp4xx_iounmap(void __iomem *addr) + #define readsl(p, v, l) __ixp4xx_readsl(p, v, l) + + static inline void +-__ixp4xx_writeb(u8 value, u32 addr) ++__ixp4xx_writeb(u8 value, volatile void __iomem *p) + { ++ u32 addr = (u32)p; + u32 n, byte_enables, data; + + if (addr >= VMALLOC_START) { +@@ -113,15 +114,16 @@ __ixp4xx_writeb(u8 value, u32 addr) + } + + static inline void +-__ixp4xx_writesb(u32 bus_addr, const u8 *vaddr, int count) ++__ixp4xx_writesb(volatile void __iomem *bus_addr, const u8 *vaddr, int count) + { + while (count--) + writeb(*vaddr++, bus_addr); + } + + static inline void +-__ixp4xx_writew(u16 value, u32 addr) ++__ixp4xx_writew(u16 value, volatile void __iomem *p) + { ++ u32 addr = (u32)p; + u32 n, byte_enables, data; + + if (addr >= VMALLOC_START) { +@@ -136,15 +138,16 @@ __ixp4xx_writew(u16 value, u32 addr) + } + + static inline void +-__ixp4xx_writesw(u32 bus_addr, const u16 *vaddr, int count) ++__ixp4xx_writesw(volatile void __iomem *bus_addr, const u16 *vaddr, int count) + { + while (count--) + writew(*vaddr++, bus_addr); + } + + static inline void +-__ixp4xx_writel(u32 value, u32 addr) ++__ixp4xx_writel(u32 value, volatile void __iomem *p) + { ++ u32 addr = (u32)p; + if (addr >= VMALLOC_START) { + __raw_writel(value, addr); + return; +@@ -154,15 +157,16 @@ __ixp4xx_writel(u32 value, u32 addr) + } + + static inline void +-__ixp4xx_writesl(u32 bus_addr, const u32 *vaddr, int count) ++__ixp4xx_writesl(volatile void __iomem *bus_addr, const u32 *vaddr, int count) + { + while (count--) + writel(*vaddr++, bus_addr); + } + + static inline unsigned char +-__ixp4xx_readb(u32 addr) ++__ixp4xx_readb(const volatile void __iomem *p) + { ++ u32 addr = (u32)p; + u32 n, byte_enables, data; + + if (addr >= VMALLOC_START) +@@ -177,15 +181,16 @@ __ixp4xx_readb(u32 addr) + } + + static inline void +-__ixp4xx_readsb(u32 bus_addr, u8 *vaddr, u32 count) ++__ixp4xx_readsb(const volatile void __iomem *bus_addr, u8 *vaddr, u32 count) + { + while (count--) + *vaddr++ = readb(bus_addr); + } + + static inline unsigned short +-__ixp4xx_readw(u32 addr) ++__ixp4xx_readw(const volatile void __iomem *p) + { ++ u32 addr = (u32)p; + u32 n, byte_enables, data; + + if (addr >= VMALLOC_START) +@@ -200,15 +205,16 @@ __ixp4xx_readw(u32 addr) + } static inline void - __ixp4xx_writeb(u8 value, u32 addr) +-__ixp4xx_readsw(u32 bus_addr, u16 *vaddr, u32 count) ++__ixp4xx_readsw(const volatile void __iomem *bus_addr, u16 *vaddr, u32 count) + { + while (count--) + *vaddr++ = readw(bus_addr); + } + + static inline unsigned long +-__ixp4xx_readl(u32 addr) ++__ixp4xx_readl(const volatile void __iomem *p) + { ++ u32 addr = (u32)p; + u32 data; + + if (addr >= VMALLOC_START) +@@ -221,7 +227,7 @@ __ixp4xx_readl(u32 addr) + } + + static inline void +-__ixp4xx_readsl(u32 bus_addr, u32 *vaddr, u32 count) ++__ixp4xx_readsl(const volatile void __iomem *bus_addr, u32 *vaddr, u32 count) + { + while (count--) + *vaddr++ = readl(bus_addr); +@@ -239,7 +245,7 @@ __ixp4xx_readsl(u32 bus_addr, u32 *vaddr + eth_copy_and_sum((s),__mem_pci(c),(l),(b)) + + static inline int +-check_signature(unsigned long bus_addr, const unsigned char *signature, ++check_signature(const unsigned char __iomem *bus_addr, const unsigned char *signature, + int length) + { + int retval = 0; +@@ -389,7 +395,7 @@ __ixp4xx_insl(u32 io_addr, u32 *vaddr, u + #define __is_io_address(p) (((unsigned long)p >= PIO_OFFSET) && \ + ((unsigned long)p <= (PIO_MASK + PIO_OFFSET))) + static inline unsigned int +-__ixp4xx_ioread8(void __iomem *addr) ++__ixp4xx_ioread8(const void __iomem *addr) + { + unsigned long port = (unsigned long __force)addr; + if (__is_io_address(port)) +@@ -398,12 +404,12 @@ __ixp4xx_ioread8(void __iomem *addr) + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + return (unsigned int)__raw_readb(port); + #else +- return (unsigned int)__ixp4xx_readb(port); ++ return (unsigned int)__ixp4xx_readb(addr); + #endif + } + + static inline void +-__ixp4xx_ioread8_rep(void __iomem *addr, void *vaddr, u32 count) ++__ixp4xx_ioread8_rep(const void __iomem *addr, void *vaddr, u32 count) + { + unsigned long port = (unsigned long __force)addr; + if (__is_io_address(port)) +@@ -412,12 +418,12 @@ __ixp4xx_ioread8_rep(void __iomem *addr, + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_readsb(addr, vaddr, count); + #else +- __ixp4xx_readsb(port, vaddr, count); ++ __ixp4xx_readsb(addr, vaddr, count); + #endif + } + + static inline unsigned int +-__ixp4xx_ioread16(void __iomem *addr) ++__ixp4xx_ioread16(const void __iomem *addr) + { + unsigned long port = (unsigned long __force)addr; + if (__is_io_address(port)) +@@ -426,12 +432,12 @@ __ixp4xx_ioread16(void __iomem *addr) + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + return le16_to_cpu(__raw_readw((u32)port)); + #else +- return (unsigned int)__ixp4xx_readw((u32)port); ++ return (unsigned int)__ixp4xx_readw(addr); + #endif + } + + static inline void +-__ixp4xx_ioread16_rep(void __iomem *addr, void *vaddr, u32 count) ++__ixp4xx_ioread16_rep(const void __iomem *addr, void *vaddr, u32 count) + { + unsigned long port = (unsigned long __force)addr; + if (__is_io_address(port)) +@@ -440,12 +446,12 @@ __ixp4xx_ioread16_rep(void __iomem *addr + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_readsw(addr, vaddr, count); + #else +- __ixp4xx_readsw(port, vaddr, count); ++ __ixp4xx_readsw(addr, vaddr, count); + #endif + } + + static inline unsigned int +-__ixp4xx_ioread32(void __iomem *addr) ++__ixp4xx_ioread32(const void __iomem *addr) + { + unsigned long port = (unsigned long __force)addr; + if (__is_io_address(port)) +@@ -454,13 +460,13 @@ __ixp4xx_ioread32(void __iomem *addr) + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + return le32_to_cpu(__raw_readl((u32)port)); + #else +- return (unsigned int)__ixp4xx_readl((u32)port); ++ return (unsigned int)__ixp4xx_readl(addr); + #endif + } + } + + static inline void +-__ixp4xx_ioread32_rep(void __iomem *addr, void *vaddr, u32 count) ++__ixp4xx_ioread32_rep(const void __iomem *addr, void *vaddr, u32 count) + { + unsigned long port = (unsigned long __force)addr; + if (__is_io_address(port)) +@@ -469,7 +475,7 @@ __ixp4xx_ioread32_rep(void __iomem *addr + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_readsl(addr, vaddr, count); + #else +- __ixp4xx_readsl(port, vaddr, count); ++ __ixp4xx_readsl(addr, vaddr, count); + #endif + } + +@@ -483,7 +489,7 @@ __ixp4xx_iowrite8(u8 value, void __iomem + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_writeb(value, port); + #else +- __ixp4xx_writeb(value, port); ++ __ixp4xx_writeb(value, addr); + #endif + } + +@@ -497,7 +503,7 @@ __ixp4xx_iowrite8_rep(void __iomem *addr + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_writesb(addr, vaddr, count); + #else +- __ixp4xx_writesb(port, vaddr, count); ++ __ixp4xx_writesb(addr, vaddr, count); + #endif + } + +@@ -511,7 +517,7 @@ __ixp4xx_iowrite16(u16 value, void __iom + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_writew(cpu_to_le16(value), addr); + #else +- __ixp4xx_writew(value, port); ++ __ixp4xx_writew(value, addr); + #endif + } + +@@ -525,7 +531,7 @@ __ixp4xx_iowrite16_rep(void __iomem *add + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_writesw(addr, vaddr, count); + #else +- __ixp4xx_writesw(port, vaddr, count); ++ __ixp4xx_writesw(addr, vaddr, count); + #endif + } + +@@ -539,7 +545,7 @@ __ixp4xx_iowrite32(u32 value, void __iom + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_writel(cpu_to_le32(value), port); + #else +- __ixp4xx_writel(value, port); ++ __ixp4xx_writel(value, addr); + #endif + } + +@@ -553,7 +559,7 @@ __ixp4xx_iowrite32_rep(void __iomem *add + #ifndef CONFIG_IXP4XX_INDIRECT_PCI + __raw_writesl(addr, vaddr, count); + #else +- __ixp4xx_writesl(port, vaddr, count); ++ __ixp4xx_writesl(addr, vaddr, count); + #endif + } + diff --git a/packages/linux/nslu2-kernel/2.6.14/25-nslu2-arch-reset.patch b/packages/linux/nslu2-kernel/2.6.14/25-nslu2-arch-reset.patch deleted file mode 100644 index 9177eb337f..0000000000 --- a/packages/linux/nslu2-kernel/2.6.14/25-nslu2-arch-reset.patch +++ /dev/null @@ -1,41 +0,0 @@ -# On NSLU2 ensure that the flash is readable on system boot. - ---- linux-2.6.13/include/asm-arm/arch-ixp4xx/system.h 2005-08-28 16:41:01.000000000 -0700 -+++ linux-2.6.13/include/asm-arm/arch-ixp4xx/system.h 2005-10-26 07:43:11.763839457 -0700 -@@ -10,6 +10,7 @@ - */ - - #include <asm/hardware.h> -+#include <asm/mach-types.h> - - static inline void arch_idle(void) - { -@@ -22,6 +23,23 @@ static inline void arch_idle(void) - - static inline void arch_reset(char mode) - { -+#if (defined CONFIG_MACH_NSLU2) && (defined NSLU2_FLASH_BASE) -+ /* On NSLU2 machines the flash is sometimes left in a non-read -+ * mode, such that attempting a read will cause problems - such as -+ * a hang. This will prevent both hard and soft reboot since the -+ * first thing done is to read the first instruction from the flash! -+ * Therefore issue a flash reset command here. -+ */ -+ if ( machine_is_nslu2()) { -+ /* Use the physical address here and write the reset command -+ * to the command address (not technically necessary). See -+ * <linux/mtd/cfi.h> for how to calculate this for other -+ * systems. The NSLU2 has one bank of 16 bit flash. -+ */ -+ *(__u16*)(NSLU2_FLASH_BASE+0xAA/*command*/) = 0x00ff/*reset*/; -+ } -+#endif -+ - if ( 1 && mode == 's') { - /* Jump into ROM at address 0 */ - cpu_reset(0); -@@ -39,4 +57,3 @@ static inline void arch_reset(char mode) - *IXP4XX_OSWE = IXP4XX_WDT_RESET_ENABLE | IXP4XX_WDT_COUNT_ENABLE; - } - } -- diff --git a/packages/linux/nslu2-kernel/2.6.14/defconfig b/packages/linux/nslu2-kernel/2.6.14/defconfig index 5041d919c8..8d0d751738 100644 --- a/packages/linux/nslu2-kernel/2.6.14/defconfig +++ b/packages/linux/nslu2-kernel/2.6.14/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.14-rc4 -# Tue Oct 18 21:53:12 2005 +# Fri Oct 21 16:13:58 2005 # CONFIG_ARM=y CONFIG_MMU=y @@ -717,6 +717,7 @@ CONFIG_NET_RADIO=y # # Wireless 802.11b ISA/PCI cards support # +# CONFIG_AIRO is not set # CONFIG_HERMES is not set # CONFIG_ATMEL is not set diff --git a/packages/linux/nslu2-kernel_2.6.14.bb b/packages/linux/nslu2-kernel_2.6.14.bb index c378ed712a..31b7bbbfdd 100644 --- a/packages/linux/nslu2-kernel_2.6.14.bb +++ b/packages/linux/nslu2-kernel_2.6.14.bb @@ -8,7 +8,7 @@ PR_CONFIG = "1" # Increment the number below (i.e. the digits after PR) when # making changes within this file or for changes to the patches # applied to the kernel. -PR = "r1.${PR_CONFIG}" +PR = "r2.${PR_CONFIG}" include nslu2-kernel.inc @@ -28,10 +28,8 @@ N2K_PATCHES = "\ file://10-ixp4xx-copy-from.patch;patch=1 \ file://10-mtdpart-redboot-fis-byteswap.patch;patch=1 \ file://15-ixp4xx-writesb-l-w.patch;patch=1 \ - file://16-ixp4xx-ioremap.patch;patch=1 \ file://18-ixp4xx-io-h-addr.patch;patch=1 \ file://20-timer.patch;patch=1 \ - file://25-nslu2-arch-reset.patch;patch=1 \ file://28-spinlock-up.patch;patch=1 \ file://29-ipv4-route-c-spinlock.patch;patch=1 \ file://30-i2c-x1205.patch;patch=1 \ |