diff --git a/debian/changelog b/debian/changelog index e3ba8f724..8d63ca021 100644 --- a/debian/changelog +++ b/debian/changelog @@ -24,6 +24,9 @@ linux-2.6 (3.1.1-1) UNRELEASED; urgency=low * [x86] Add amilo-rfkill driver for some Fujitsu-Siemens Amilo laptops (Closes: #631664) + [ Arnaud Patard ] + * [arm] add missing ioread/write be functions to ixp4xx to fix FTBFS + -- Ben Hutchings Fri, 04 Nov 2011 15:05:47 +0000 linux-2.6 (3.1.0-1~experimental.1) experimental; urgency=low diff --git a/debian/patches/bugfix/arm/ixp4xx_iobe.patch b/debian/patches/bugfix/arm/ixp4xx_iobe.patch new file mode 100644 index 000000000..14e331d5e --- /dev/null +++ b/debian/patches/bugfix/arm/ixp4xx_iobe.patch @@ -0,0 +1,103 @@ +ixp4xx: add io{read,write}{16,32}be functions + +Some driver are now requiring some be io functions, add noted in +commit (06901bd83412db5a31de7526e637101ed0c2c472). Otherwise, it may lead +to build errors like this one : + +drivers/net/mlx4/en_tx.c: In function ‘mlx4_en_xmit’: +drivers/net/mlx4/en_tx.c:815: error: implicit declaration of function ‘iowrite32be’ +make[3]: *** [drivers/net/mlx4/en_tx.o] Error 1 +make[2]: *** [drivers/net/mlx4] Error 2 +make[1]: *** [drivers/net] Error 2 + +Signed-off-by: Arnaud Patard + +Index: linux-3.1/arch/arm/mach-ixp4xx/include/mach/io.h +=================================================================== +--- linux-3.1.orig/arch/arm/mach-ixp4xx/include/mach/io.h 2011-11-13 14:14:50.662853902 +0100 ++++ linux-3.1/arch/arm/mach-ixp4xx/include/mach/io.h 2011-11-13 14:19:38.522841236 +0100 +@@ -387,6 +387,20 @@ static inline unsigned int ioread16(cons + #endif + } + ++#define ioread16be(p) ioread16be(p) ++static inline unsigned int ioread16be(const void __iomem *addr) ++{ ++ unsigned long port = (unsigned long __force)addr; ++ if (__is_io_address(port)) ++ return (unsigned int)inw(port & PIO_MASK); ++ else ++#ifndef CONFIG_IXP4XX_INDIRECT_PCI ++ return be16_to_cpu((__force __be16)__raw_readw(addr)); ++#else ++ return be16_to_cpu((__force __le16)(unsigned int)__indirect_readw(addr)); ++#endif ++} ++ + #define ioread16_rep(p, v, c) ioread16_rep(p, v, c) + static inline void ioread16_rep(const void __iomem *addr, void *vaddr, + u32 count) +@@ -417,6 +431,21 @@ static inline unsigned int ioread32(cons + } + } + ++#define ioread32be(p) ioread32be(p) ++static inline unsigned int ioread32be(const void __iomem *addr) ++{ ++ unsigned long port = (unsigned long __force)addr; ++ if (__is_io_address(port)) ++ return (unsigned int)inl(port & PIO_MASK); ++ else { ++#ifndef CONFIG_IXP4XX_INDIRECT_PCI ++ return be32_to_cpu((__force __be32)__raw_readl(addr)); ++#else ++ return be32_to_cpu((__force __be32)(unsigned int)__indirect_readl(addr)); ++#endif ++ } ++} ++ + #define ioread32_rep(p, v, c) ioread32_rep(p, v, c) + static inline void ioread32_rep(const void __iomem *addr, void *vaddr, + u32 count) +@@ -475,6 +504,20 @@ static inline void iowrite16(u16 value, + #endif + } + ++#define iowrite16be(v, p) iowrite16be(v, p) ++static inline void iowrite16be(u16 value, void __iomem *addr) ++{ ++ unsigned long port = (unsigned long __force)addr; ++ if (__is_io_address(port)) ++ outw(value, port & PIO_MASK); ++ else ++#ifndef CONFIG_IXP4XX_INDIRECT_PCI ++ __raw_writew(cpu_to_be16(value), addr); ++#else ++ __indirect_writew(cpu_to_be16(value), addr); ++#endif ++} ++ + #define iowrite16_rep(p, v, c) iowrite16_rep(p, v, c) + static inline void iowrite16_rep(void __iomem *addr, const void *vaddr, + u32 count) +@@ -504,6 +547,20 @@ static inline void iowrite32(u32 value, + #endif + } + ++#define iowrite32be(v, p) iowrite32be(v, p) ++static inline void iowrite32be(u32 value, void __iomem *addr) ++{ ++ unsigned long port = (unsigned long __force)addr; ++ if (__is_io_address(port)) ++ outl(value, port & PIO_MASK); ++ else ++#ifndef CONFIG_IXP4XX_INDIRECT_PCI ++ __raw_writel((u32 __force)cpu_to_be32(value), addr); ++#else ++ __indirect_writel((u32 __force)cpu_to_be32(value), addr); ++#endif ++} ++ + #define iowrite32_rep(p, v, c) iowrite32_rep(p, v, c) + static inline void iowrite32_rep(void __iomem *addr, const void *vaddr, + u32 count) diff --git a/debian/patches/series/base b/debian/patches/series/base index 137978fa0..f6a64211e 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -62,3 +62,4 @@ # Defer until we're sure about the system call number #+ bugfix/ia64/ia64-Add-accept4-syscall.patch ++ bugfix/arm/ixp4xx_iobe.patch