mach/io.h cleanup fixes
Subsystems (14)
cover mach/io.h cleanup fixes
From: Rob Herring <[email protected]>
This is a couple of fixes to mach/io.h clean-up series. The first 2 patches are a couple of compile fixes. The 3rd patch creates a common definition of IOMEM() macros. The 4th patch uses the common IOMEM() definition to fix incorrect usages of __io() macro.
This applies on top of io-cleanup-for-3.4 branch already pulled into arm-soc.
Rob
Rob Herring (4):
ARM: fix ioremap/iounmap for !CONFIG_MMU
ARM: iop13xx: fix missing declaration of iop13xx_init_early
ARM: create a common IOMEM definition
ARM: __io abuse cleanup
arch/arm/include/asm/assembler.h | 2 ++ arch/arm/include/asm/io.h | 2 ++ arch/arm/kernel/debug.S | 1 + arch/arm/kernel/entry-armv.S | 1 + arch/arm/mach-cns3xxx/core.c | 8 ++++---- arch/arm/mach-cns3xxx/devices.c | 2 +- arch/arm/mach-davinci/include/mach/hardware.h | 6 ------ arch/arm/mach-davinci/include/mach/uncompress.h | 2 ++ arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h | 9 --------- arch/arm/mach-iop13xx/include/mach/iop13xx.h | 1 + arch/arm/mach-mmp/include/mach/addr-map.h | 6 ------ arch/arm/mach-msm/include/mach/msm_iomap-7x00.h | 6 ------ arch/arm/mach-msm/include/mach/msm_iomap.h | 6 ------ arch/arm/mach-mxs/include/mach/hardware.h | 6 ------ arch/arm/mach-netx/generic.c | 2 +- arch/arm/mach-netx/include/mach/hardware.h | 2 +- arch/arm/mach-netx/include/mach/netx-regs.h | 16 ++++++++-------- arch/arm/mach-omap1/ams-delta-fiq-handler.S | 1 + arch/arm/mach-omap1/iomap.h | 6 ------ arch/arm/mach-omap2/clock3xxx_data.c | 1 + arch/arm/mach-omap2/clock44xx_data.c | 1 + arch/arm/mach-omap2/iomap.h | 6 ------ arch/arm/mach-realview/include/mach/hardware.h | 2 +- arch/arm/mach-rpc/include/mach/hardware.h | 6 ------ arch/arm/mach-shmobile/board-ag5evm.c | 2 +- arch/arm/mach-shmobile/board-bonito.c | 2 +- arch/arm/mach-shmobile/board-kota2.c | 2 +- arch/arm/mach-shmobile/intc-r8a7779.c | 4 ++-- arch/arm/mach-shmobile/intc-sh73a0.c | 4 ++-- arch/arm/mach-shmobile/smp-r8a7779.c | 4 ++-- arch/arm/mach-shmobile/smp-sh73a0.c | 20 ++++++++++---------- arch/arm/mach-spear3xx/clock.c | 1 + arch/arm/mach-spear6xx/clock.c | 1 + arch/arm/mach-tegra/include/mach/iomap.h | 6 ------ arch/arm/mach-u300/include/mach/u300-regs.h | 6 ------ arch/arm/mach-ux500/include/mach/hardware.h | 2 +- arch/arm/mm/nommu.c | 8 ++++++-- arch/arm/plat-mxc/include/mach/hardware.h | 6 ------ arch/arm/plat-omap/include/plat/hardware.h | 6 ------ arch/arm/plat-omap/include/plat/usb.h | 1 - arch/arm/plat-spear/include/plat/hardware.h | 6 ------ 41 files changed, 56 insertions(+), 126 deletions(-)
Signature · 1 line
1.7.5.4
PATCH 1/4 ARM: fix ioremap/iounmap for !CONFIG_MMU
From: Rob Herring <[email protected]>
With commit 4fe7ef3a081 (ARM: provide runtime hook for ioremap/iounmap), compiles with !CONFIG_MMU were broken. Rename nommu __iounmap to __arm_iounmap and add arch_ioremap_caller and arch_iounmap. Its not expected that these need to be overriden for !CONFIG_MMU, so setting the function ptrs has no effect in this case.
--- arch/arm/mm/nommu.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)
arch/arm/mm/nommu.c +6 -2
@@ -86,13 +86,17 @@ void __iomem *__arm_ioremap(unsigned long phys_addr, size_t size, }EXPORT_SYMBOL (__arm_ioremap); +void __iomem * (*arch_ioremap_caller)(unsigned long ,size_t ,unsigned int ,void *); +void __iomem *__arm_ioremap_caller (unsigned long phys_addr,size_t size,unsigned int mtype,void *caller) {return __arm_ioremap (phys_addr, size, mtype); } -void __iounmap (volatile void __iomem *addr) +void (*arch_iounmap)(volatile void __iomem *); + +void __arm_iounmap (volatile void __iomem *addr) { } -EXPORT_SYMBOL (__iounmap); +EXPORT_SYMBOL (__arm_iounmap);
Signature · 1 line
1.7.5.4
PATCH 2/4 ARM: iop13xx: fix missing declaration of iop13xx_init_early
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Commit 1dfe34ae794c13 (ARM: iop13xx: use runtime ioremap hook) missed a declaration of iop13xx_init_early resulting in a build error.
--- arch/arm/mach-iop13xx/include/mach/iop13xx.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
arch/arm/mach-iop13xx/include/mach/iop13xx.h +1 -0
@@ -5,6 +5,7 @@/* The ATU offsets can change based on the strapping */ extern u32 iop13xx_atux_pmmr_offset;extern u32 iop13xx_atue_pmmr_offset; +void iop13xx_init_early (void );void iop13xx_init_irq (void );void iop13xx_map_io (void );void iop13xx_platform_init (void );
Signature · 1 line
1.7.5.4
PATCH 3/4 ARM: create a common IOMEM definition
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Several platforms create IOMEM defines for casting to 'void __iomem *', and other platforms are incorrectly using __io() macro for the same purpose. This creates a common definition and removes all the platform specific versions. Rather than try to make linux/io.h and asm/io.h assembly safe, the assembly version of IOMEM is moved into asm/assembler.h.
--- arch/arm/include/asm/assembler.h | 2 ++ arch/arm/include/asm/io.h | 2 ++ arch/arm/kernel/debug.S | 1 + arch/arm/kernel/entry-armv.S | 1 + arch/arm/mach-davinci/include/mach/hardware.h | 6 ------ arch/arm/mach-davinci/include/mach/uncompress.h | 2 ++ arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h | 9 --------- arch/arm/mach-mmp/include/mach/addr-map.h | 6 ------ arch/arm/mach-msm/include/mach/msm_iomap-7x00.h | 6 ------ arch/arm/mach-msm/include/mach/msm_iomap.h | 6 ------ arch/arm/mach-mxs/include/mach/hardware.h | 6 ------ arch/arm/mach-omap1/ams-delta-fiq-handler.S | 1 + arch/arm/mach-omap1/iomap.h | 6 ------ arch/arm/mach-omap2/clock3xxx_data.c | 1 + arch/arm/mach-omap2/clock44xx_data.c | 1 + arch/arm/mach-omap2/iomap.h | 6 ------ arch/arm/mach-rpc/include/mach/hardware.h | 6 ------ arch/arm/mach-spear3xx/clock.c | 1 + arch/arm/mach-spear6xx/clock.c | 1 + arch/arm/mach-tegra/include/mach/iomap.h | 6 ------ arch/arm/mach-u300/include/mach/u300-regs.h | 6 ------ arch/arm/plat-mxc/include/mach/hardware.h | 6 ------ arch/arm/plat-omap/include/plat/hardware.h | 6 ------ arch/arm/plat-omap/include/plat/usb.h | 1 - arch/arm/plat-spear/include/plat/hardware.h | 6 ------ 25 files changed, 13 insertions(+), 88 deletions(-)
arch/arm/include/asm/assembler.h +2 -0
@@ -23,6 +23,8 @@#include <asm/ptrace.h> #include <asm/domain.h> +#define IOMEM (x) (x) +/* * Endian independent macros for shifting bytes within registers. */
arch/arm/include/asm/io.h +2 -0
@@ -102,6 +102,8 @@ static inline void __iomem *__typesafe_io(unsigned long addr)return (void __iomem *)addr; } +#define IOMEM (x) ((void __force __iomem *)(x)) +/* IO barriers */ #ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE #define __iormb () rmb()
arch/arm/kernel/debug.S +1 -0
@@ -10,6 +10,7 @@ * 32-bit debugging code */ #include <linux/linkage.h> +#include <asm/assembler.h> .text
arch/arm/kernel/entry-armv.S +1 -0
@@ -15,6 +15,7 @@ * that causes it to save wrong values... Be aware! */ +#include <asm/assembler.h> #include <asm/memory.h> #include <asm/glue-df.h> #include <asm/glue-pf.h>
arch/arm/mach-davinci/include/mach/hardware.h +0 -6
@@ -32,10 +32,4 @@#define __IO_ADDRESS (x) ((x) + IO_OFFSET)#define IO_ADDRESS (pa) IOMEM(__IO_ADDRESS(pa)) -#ifdef __ASSEMBLER__ -#define IOMEM (x) x -#else -#define IOMEM (x) ((void __force __iomem *)(x)) -#endif -#endif /* __ASM_ARCH_HARDWARE_H */
arch/arm/mach-davinci/include/mach/uncompress.h +2 -0
@@ -25,6 +25,8 @@#include <mach/serial.h> +#define IOMEM (x) ((void __force __iomem *)(x)) +u32 *uart;/* PORT_16C550A, in polled non-fifo mode */
arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h +0 -9
@@ -6,15 +6,6 @@#define __ASM_ARCH_EP93XX_REGS_H/* -* A typesafe __io() variation for variable initialisers -*/ -#ifdef __ASSEMBLER__ -#define IOMEM (p) p -#else -#define IOMEM (p) ((void __iomem __force *)(p)) -#endif - -/* * EP93xx Physical Memory Map: * * The ASDO pin is sampled at system reset to select a synchronous or
arch/arm/mach-mmp/include/mach/addr-map.h +0 -6
@@ -11,12 +11,6 @@#ifndef __ASM_MACH_ADDR_MAP_H#define __ASM_MACH_ADDR_MAP_H -#ifndef __ASSEMBLER__ -#define IOMEM (x) ((void __iomem *)(x)) -#else -#define IOMEM (x) (x) -#endif -/* APB - Application Subsystem Peripheral Bus * * NOTE: the DMA controller registers are actually on the AXI fabric #1
arch/arm/mach-msm/include/mach/msm_iomap-7x00.h +0 -6
@@ -38,12 +38,6 @@* */ -#ifdef __ASSEMBLY__ -#define IOMEM (x) x -#else -#define IOMEM (x) ((void __force __iomem *)(x)) -#endif -#define MSM_VIC_BASE IOMEM(0xE0000000)#define MSM_VIC_PHYS 0xC0000000#define MSM_VIC_SIZE SZ_4K
arch/arm/mach-msm/include/mach/msm_iomap.h +0 -6
@@ -37,12 +37,6 @@* */ -#ifdef __ASSEMBLY__ -#define IOMEM (x) x -#else -#define IOMEM (x) ((void __force __iomem *)(x)) -#endif -#if defined(CONFIG_ARCH_MSM7X30 )#include "msm_iomap-7x30.h" #elif defined(CONFIG_ARCH_QSD8X50 )
arch/arm/mach-mxs/include/mach/hardware.h +0 -6
@@ -20,10 +20,4 @@#ifndef __MACH_MXS_HARDWARE_H__#define __MACH_MXS_HARDWARE_H__ -#ifdef __ASSEMBLER__ -#define IOMEM (addr) (addr) -#else -#define IOMEM (addr) ((void __force __iomem *)(addr)) -#endif -#endif /* __MACH_MXS_HARDWARE_H__ */
arch/arm/mach-omap1/ams-delta-fiq-handler.S +1 -0
@@ -14,6 +14,7 @@ */ #include <linux/linkage.h> +#include <asm/assembler.h> #include <plat/board-ams-delta.h>
arch/arm/mach-omap1/iomap.h +0 -6
@@ -22,12 +22,6 @@* 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef __ASSEMBLER__ -#define IOMEM (x) (x) -#else -#define IOMEM (x) ((void __force __iomem *)(x)) -#endif -#define OMAP1_IO_OFFSET 0x01000000/* Virtual IO = 0xfefb0000 */ #define OMAP1_IO_ADDRESS (pa) IOMEM((pa) - OMAP1_IO_OFFSET)
arch/arm/mach-omap2/clock3xxx_data.c +1 -0
@@ -19,6 +19,7 @@#include <linux/kernel.h> #include <linux/clk.h> #include <linux/list.h> +#include <linux/io.h> #include <plat/hardware.h> #include <plat/clkdev_omap.h>
arch/arm/mach-omap2/clock44xx_data.c +1 -0
@@ -26,6 +26,7 @@#include <linux/kernel.h> #include <linux/list.h> #include <linux/clk.h> +#include <linux/io.h> #include <plat/hardware.h> #include <plat/clkdev_omap.h>
arch/arm/mach-omap2/iomap.h +0 -6
@@ -22,12 +22,6 @@* 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef __ASSEMBLER__ -#define IOMEM (x) (x) -#else -#define IOMEM (x) ((void __force __iomem *)(x)) -#endif -#define OMAP2_L3_IO_OFFSET 0x90000000#define OMAP2_L3_IO_ADDRESS (pa) IOMEM((pa) + OMAP2_L3_IO_OFFSET)/* L3 */
arch/arm/mach-rpc/include/mach/hardware.h +0 -6
@@ -14,12 +14,6 @@#include <mach/memory.h> -#ifndef __ASSEMBLY__ -#define IOMEM (x) ((void __iomem *)(unsigned long)(x)) -#else -#define IOMEM (x) x -#endif /* __ASSEMBLY__ */ -/* * What hardware must be present */
arch/arm/mach-spear3xx/clock.c +1 -0
@@ -12,6 +12,7 @@*/ #include <linux/init.h> +#include <linux/io.h> #include <linux/kernel.h> #include <asm/mach-types.h> #include <plat/clock.h>
arch/arm/mach-spear6xx/clock.c +1 -0
@@ -12,6 +12,7 @@*/ #include <linux/init.h> +#include <linux/io.h> #include <linux/kernel.h> #include <plat/clock.h> #include <mach/misc_regs.h>
arch/arm/mach-tegra/include/mach/iomap.h +0 -6
@@ -281,12 +281,6 @@* */ -#ifdef __ASSEMBLY__ -#define IOMEM (x) (x) -#else -#define IOMEM (x) ((void __force __iomem *)(x)) -#endif -#define IO_IRAM_PHYS 0x40000000#define IO_IRAM_VIRT IOMEM(0xFE400000)#define IO_IRAM_SIZE SZ_256K
arch/arm/mach-u300/include/mach/u300-regs.h +0 -6
@@ -18,12 +18,6 @@* the defines are used for setting up the I/O memory mapping. */ -#ifdef __ASSEMBLER__ -#define IOMEM (a) (a) -#else -#define IOMEM (a) (void __iomem *) a -#endif -/* NAND Flash CS0 */ #define U300_NAND_CS0_PHYS_BASE 0x80000000
arch/arm/plat-mxc/include/mach/hardware.h +0 -6
@@ -22,12 +22,6 @@#include <asm/sizes.h> -#ifdef __ASSEMBLER__ -#define IOMEM (addr) (addr) -#else -#define IOMEM (addr) ((void __force __iomem *)(addr)) -#endif -#define addr_in_module (addr, mod) \ ((unsigned long)(addr) - mod ## _BASE_ADDR < mod ## _SIZE)
arch/arm/plat-omap/include/plat/hardware.h +0 -6
@@ -43,12 +43,6 @@#endif #include <plat/serial.h> -#ifdef __ASSEMBLER__ -#define IOMEM (x) (x) -#else -#define IOMEM (x) ((void __force __iomem *)(x)) -#endif -/* * --------------------------------------------------------------------------- * Common definitions for all OMAP processors
arch/arm/plat-omap/include/plat/usb.h +0 -1
@@ -112,7 +112,6 @@ extern int omap4430_phy_suspend(struct device *dev, int suspend);*/ #define OMAP2_L4_IO_OFFSET 0xb2000000 -#define IOMEM (x) ((void __force __iomem *)(x))#define OMAP2_L4_IO_ADDRESS (pa) IOMEM((pa) + OMAP2_L4_IO_OFFSET)static inline u8 omap_readb (u32 pa)
arch/arm/plat-spear/include/plat/hardware.h +0 -6
@@ -14,10 +14,4 @@#ifndef __PLAT_HARDWARE_H#define __PLAT_HARDWARE_H -#ifndef __ASSEMBLY__ -#define IOMEM (x) ((void __iomem __force *)(x)) -#else -#define IOMEM (x) (x) -#endif -#endif /* __PLAT_HARDWARE_H */
Signature · 1 line
1.7.5.4
PATCH 3/4 ARM: create a common IOMEM definition
Quoted 8 lines · Rob Herring
From: Rob Herring <[email protected]>
Several platforms create IOMEM defines for casting to 'void
__iomem*', and other platforms are incorrectly using__io()macro for the same purpose. This creates a common definition and removes all the platform specific versions. Rather than try to makelinux/io.handasm/io.hassembly safe, the assembly version of IOMEM is moved intoasm/assembler.h.
Looks good to me, in order to fix the problem at hand. I'm not sure about spreading the IOMEM() macro further, that is largely a separate problem and only a question of style, not of correctness as with __io().
PATCH 3/4 ARM: create a common IOMEM definition
Quoted 10 lines · Arnd Bergmann
Quoted 8 lines · Rob Herring
From: Rob Herring <[email protected]>
Several platforms create IOMEM defines for casting to 'void
__iomem*', and other platforms are incorrectly using__io()macro for the same purpose. This creates a common definition and removes all the platform specific versions. Rather than try to makelinux/io.handasm/io.hassembly safe, the assembly version of IOMEM is moved intoasm/assembler.h.
Quoted 3 lines
Looks good to me, in order to fix the problem at hand. I'm not sure about spreading the
IOMEM()macro further, that is largely a separate problem and only a question of style, not of correctness as with__io().
Got a better suggestion? I didn't think adding IOMEM to 5 more platforms or inventing something different was the right path. Hopefully this is a shrinking problem as things move to DT.
Rob
Quoted 1 line
Acked-by Arnd Bergmann <[email protected]>
PATCH 3/4 ARM: create a common IOMEM definition
Quoted 11 lines · Rob Herring
Quoted 10 lines · Arnd Bergmann
Quoted 8 lines · Rob Herring
From: Rob Herring <[email protected]>
Several platforms create IOMEM defines for casting to 'void
__iomem*', and other platforms are incorrectly using__io()macro for the same purpose. This creates a common definition and removes all the platform specific versions. Rather than try to makelinux/io.handasm/io.hassembly safe, the assembly version of IOMEM is moved intoasm/assembler.h.
Quoted 7 lines
Quoted 3 lines
Looks good to me, in order to fix the problem at hand. I'm not sure about spreading the
IOMEM()macro further, that is largely a separate problem and only a question of style, not of correctness as with__io().Got a better suggestion? I didn't think adding IOMEM to 5 more platforms or inventing something different was the right path. Hopefully this is a shrinking problem as things move to DT.
In a cleanup series I started earlier, I used ${PLATFORM}_IO_P2V, which is now used on at91 and imx. I'm not particularly attached to that one either, the basic idea was that we could define them all concurrently, but in hindsight that looks flawed now. Let's just use the patch you came up with.
Arnd
PATCH 3/4 ARM: create a common IOMEM definition
In reply to Rob HerringQuoted 49 lines · Rob Herring
From: Rob Herring <[email protected]>
Several platforms create IOMEM defines for casting to 'void
__iomem*', and other platforms are incorrectly using__io()macro for the same purpose. This creates a common definition and removes all the platform specific versions. Rather than try to makelinux/io.handasm/io.hassembly safe, the assembly version of IOMEM is moved intoasm/assembler.h.Signed-off-by Rob Herring <[email protected]>Cc Russell King <[email protected]>Cc Sekhar Nori <[email protected]>Cc Kevin Hilman <[email protected]>Cc Hartley Sweeten <[email protected]>Cc Ryan Mallon <[email protected]>Cc Eric Miao <[email protected]>Cc Haojian Zhuang <[email protected]>Cc David Brown <[email protected]>Cc Daniel Walker <[email protected]>Cc Bryan Huntsman <[email protected]>Cc Sascha Hauer <[email protected]>Cc Shawn Guo <[email protected]>Cc Tony Lindgren <[email protected]>Cc Paul Walmsley <[email protected]>Cc Viresh Kumar <[email protected]>Cc Rajeev Kumar <[email protected]>Cc Colin Cross <[email protected]>Cc Olof Johansson <[email protected]>Cc Stephen Warren <[email protected]>Cc Linus Walleij <[email protected]>--- arch/arm/include/asm/assembler.h | 2 ++ arch/arm/include/asm/io.h | 2 ++ arch/arm/kernel/debug.S | 1 + arch/arm/kernel/entry-armv.S | 1 + arch/arm/mach-davinci/include/mach/hardware.h | 6 ------ arch/arm/mach-davinci/include/mach/uncompress.h | 2 ++ arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h | 9 --------- arch/arm/mach-mmp/include/mach/addr-map.h | 6 ------ arch/arm/mach-msm/include/mach/msm_iomap-7x00.h | 6 ------ arch/arm/mach-msm/include/mach/msm_iomap.h | 6 ------ arch/arm/mach-mxs/include/mach/hardware.h | 6 ------ arch/arm/mach-omap1/ams-delta-fiq-handler.S | 1 + arch/arm/mach-omap1/iomap.h | 6 ------ arch/arm/mach-omap2/clock3xxx_data.c | 1 + arch/arm/mach-omap2/clock44xx_data.c | 1 + arch/arm/mach-omap2/iomap.h | 6 ------ arch/arm/mach-rpc/include/mach/hardware.h | 6 ------ arch/arm/mach-spear3xx/clock.c | 1 +
Quoted 9 lines
arch/arm/mach-spear6xx/clock.c | 1 + arch/arm/mach-tegra/include/mach/iomap.h | 6 ------ arch/arm/mach-u300/include/mach/u300-regs.h | 6 ------ arch/arm/plat-mxc/include/mach/hardware.h | 6 ------ arch/arm/plat-omap/include/plat/hardware.h | 6 ------ arch/arm/plat-omap/include/plat/usb.h | 1 - arch/arm/plat-spear/include/plat/hardware.h | 6 ------ 25 files changed, 13 insertions(+), 88 deletions(-)
--
viresh
Paul Walmsley
maintainerPATCH 3/4 ARM: create a common IOMEM definition
In reply to Rob HerringPATCH 3/4 ARM: create a common IOMEM definition
In reply to Rob HerringQuoted 10 lines · Rob Herring
From: Rob Herring <[email protected]>
Several platforms create IOMEM defines for casting to 'void
__iomem*', and other platforms are incorrectly using__io()macro for the same purpose. This creates a common definition and removes all the platform specific versions. Rather than try to makelinux/io.handasm/io.hassembly safe, the assembly version of IOMEM is moved intoasm/assembler.h.Signed-off-by Rob Herring <[email protected]>
For:
Quoted 1 line
?arch/arm/mach-u300/include/mach/u300-regs.h ? ? | ? ?6 ------
Yours,
Linus Walleij
PATCH 3/4 ARM: create a common IOMEM definition
In reply to Rob HerringQuoted 48 lines · Rob Herring
Several platforms create IOMEM defines for casting to 'void
__iomem*', and other platforms are incorrectly using__io()macro for the same purpose. This creates a common definition and removes all the platform specific versions. Rather than try to makelinux/io.handasm/io.hassembly safe, the assembly version of IOMEM is moved intoasm/assembler.h.Signed-off-by Rob Herring <[email protected]>Cc Russell King <[email protected]>Cc Sekhar Nori <[email protected]>Cc Kevin Hilman <[email protected]>Cc Hartley Sweeten <[email protected]>Cc Ryan Mallon <[email protected]>Cc Eric Miao <[email protected]>Cc Haojian Zhuang <[email protected]>Cc David Brown <[email protected]>Cc Daniel Walker <[email protected]>Cc Bryan Huntsman <[email protected]>Cc Sascha Hauer <[email protected]>Cc Shawn Guo <[email protected]>Cc Tony Lindgren <[email protected]>Cc Paul Walmsley <[email protected]>Cc Viresh Kumar <[email protected]>Cc Rajeev Kumar <[email protected]>Cc Colin Cross <[email protected]>Cc Olof Johansson <[email protected]>Cc Stephen Warren <[email protected]>Cc Linus Walleij <[email protected]>--- arch/arm/include/asm/assembler.h | 2 ++ arch/arm/include/asm/io.h | 2 ++ arch/arm/kernel/debug.S | 1 + arch/arm/kernel/entry-armv.S | 1 + arch/arm/mach-davinci/include/mach/hardware.h | 6 ------ arch/arm/mach-davinci/include/mach/uncompress.h | 2 ++ arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h | 9 --------- arch/arm/mach-mmp/include/mach/addr-map.h | 6 ------ arch/arm/mach-msm/include/mach/msm_iomap-7x00.h | 6 ------ arch/arm/mach-msm/include/mach/msm_iomap.h | 6 ------ arch/arm/mach-mxs/include/mach/hardware.h | 6 ------ arch/arm/mach-omap1/ams-delta-fiq-handler.S | 1 + arch/arm/mach-omap1/iomap.h | 6 ------ arch/arm/mach-omap2/clock3xxx_data.c | 1 + arch/arm/mach-omap2/clock44xx_data.c | 1 + arch/arm/mach-omap2/iomap.h | 6 ------ arch/arm/mach-rpc/include/mach/hardware.h | 6 ------ arch/arm/mach-spear3xx/clock.c | 1 +
Quoted 9 lines
arch/arm/mach-spear6xx/clock.c | 1 + arch/arm/mach-tegra/include/mach/iomap.h | 6 ------ arch/arm/mach-u300/include/mach/u300-regs.h | 6 ------ arch/arm/plat-mxc/include/mach/hardware.h | 6 ------ arch/arm/plat-omap/include/plat/hardware.h | 6 ------ arch/arm/plat-omap/include/plat/usb.h | 1 - arch/arm/plat-spear/include/plat/hardware.h | 6 ------ 25 files changed, 13 insertions(+), 88 deletions(-)
For ep93xx:
Tony Lindgren
maintainerPATCH 3/4 ARM: create a common IOMEM definition
In reply to Rob HerringQuoted 8 lines · Rob Herring
From: Rob Herring <[email protected]>
Several platforms create IOMEM defines for casting to 'void
__iomem*', and other platforms are incorrectly using__io()macro for the same purpose. This creates a common definition and removes all the platform specific versions. Rather than try to makelinux/io.handasm/io.hassembly safe, the assembly version of IOMEM is moved intoasm/assembler.h.
Glad to see this:
PATCH 3/4 ARM: create a common IOMEM definition
In reply to Rob HerringQuoted 2 lines · Rob Herring
arch/arm/mach-msm/include/mach/msm_iomap-7x00.h | 6 ------ arch/arm/mach-msm/include/mach/msm_iomap.h | 6 ------
Signature · 2 lines
Sent by an employee of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
PATCH 3/4 ARM: create a common IOMEM definition
In reply to Rob HerringQuoted 22 lines · Rob Herring
From: Rob Herring <[email protected]>
Several platforms create IOMEM defines for casting to 'void
__iomem*', and other platforms are incorrectly using__io()macro for the same purpose. This creates a common definition and removes all the platform specific versions. Rather than try to makelinux/io.handasm/io.hassembly safe, the assembly version of IOMEM is moved intoasm/assembler.h.Signed-off-by Rob Herring <[email protected]>Cc Russell King <[email protected]>Cc Sekhar Nori <[email protected]>Cc Kevin Hilman <[email protected]>Cc Hartley Sweeten <[email protected]>Cc Ryan Mallon <[email protected]>Cc Eric Miao <[email protected]>Cc Haojian Zhuang <[email protected]>Cc David Brown <[email protected]>Cc Daniel Walker <[email protected]>Cc Bryan Huntsman <[email protected]>Cc Sascha Hauer <[email protected]>Cc Shawn Guo <[email protected]>
Quoted 8 lines
Cc Tony Lindgren <[email protected]>Cc Paul Walmsley <[email protected]>Cc Viresh Kumar <[email protected]>Cc Rajeev Kumar <[email protected]>Cc Colin Cross <[email protected]>Cc Olof Johansson <[email protected]>Cc Stephen Warren <[email protected]>Cc Linus Walleij <[email protected]>
PATCH 3/4 ARM: create a common IOMEM definition
In reply to Rob HerringQuoted 9 lines · Rob Herring
From: Rob Herring <[email protected]>
Several platforms create IOMEM defines for casting to 'void
__iomem*', and other platforms are incorrectly using__io()macro for the same purpose. This creates a common definition and removes all the platform specific versions. Rather than try to makelinux/io.handasm/io.hassembly safe, the assembly version of IOMEM is moved intoasm/assembler.h.
Quoted 3 lines
Signed-off-by Rob Herring <[email protected]>?arch/arm/mach-mmp/include/mach/addr-map.h ? ? ? | ? ?6 ------
PATCH 4/4 ARM: __io abuse cleanup
In reply to Rob HerringFrom: Rob Herring <[email protected]>
Several platforms incorrectly use __io() for casting to 'void __iomem *'. This converts all of those uses to use the common IOMEM macro.
--- arch/arm/mach-cns3xxx/core.c | 8 ++++---- arch/arm/mach-cns3xxx/devices.c | 2 +- arch/arm/mach-netx/generic.c | 2 +- arch/arm/mach-netx/include/mach/hardware.h | 2 +- arch/arm/mach-netx/include/mach/netx-regs.h | 16 ++++++++-------- arch/arm/mach-realview/include/mach/hardware.h | 2 +- arch/arm/mach-shmobile/board-ag5evm.c | 2 +- arch/arm/mach-shmobile/board-bonito.c | 2 +- arch/arm/mach-shmobile/board-kota2.c | 2 +- arch/arm/mach-shmobile/intc-r8a7779.c | 4 ++-- arch/arm/mach-shmobile/intc-sh73a0.c | 4 ++-- arch/arm/mach-shmobile/smp-r8a7779.c | 4 ++-- arch/arm/mach-shmobile/smp-sh73a0.c | 20 ++++++++++---------- arch/arm/mach-ux500/include/mach/hardware.h | 2 +- 14 files changed, 36 insertions(+), 36 deletions(-)
arch/arm/mach-cns3xxx/core.c +4 -4
@@ -72,13 +72,13 @@ void __init cns3xxx_map_io(void)/* used by entry-macro.S */ void __init cns3xxx_init_irq (void ) { -gic_init (0 ,29 ,__io (CNS3XXX_TC11MP_GIC_DIST_BASE_VIRT ), -__io (CNS3XXX_TC11MP_GIC_CPU_BASE_VIRT )); +gic_init (0 ,29 ,IOMEM (CNS3XXX_TC11MP_GIC_DIST_BASE_VIRT ), +IOMEM (CNS3XXX_TC11MP_GIC_CPU_BASE_VIRT )); }void cns3xxx_power_off (void ) { -u32 __iomem *pm_base =__io (CNS3XXX_PM_BASE_VIRT ); +u32 __iomem *pm_base =IOMEM (CNS3XXX_PM_BASE_VIRT );u32 clkctrl;printk (KERN_INFO "powering system down...\n" );
@@ -237,7 +237,7 @@ static void __init __cns3xxx_timer_init(unsigned int timer_irq)static void __init cns3xxx_timer_init (void ) { - cns3xxx_tmr1 =__io (CNS3XXX_TIMER1_2_3_BASE_VIRT ); + cns3xxx_tmr1 =IOMEM (CNS3XXX_TIMER1_2_3_BASE_VIRT );__cns3xxx_timer_init (IRQ_CNS3XXX_TIMER0 ); }
arch/arm/mach-cns3xxx/devices.c +1 -1
@@ -98,7 +98,7 @@ static struct platform_device cns3xxx_sdhci_pdev = {void __init cns3xxx_sdhci_init (void ) { -u32 __iomem *gpioa =__io (CNS3XXX_MISC_BASE_VIRT +0x0014 ); +u32 __iomem *gpioa =IOMEM (CNS3XXX_MISC_BASE_VIRT +0x0014 );u32 gpioa_pins =__raw_readl (gpioa);/* MMC/SD pins share with GPIOA */
arch/arm/mach-netx/generic.c +1 -1
@@ -168,7 +168,7 @@ void __init netx_init_irq(void) {int irq; -vic_init (__io (io_p2v (NETX_PA_VIC )),0 , ~0 ,0 ); +vic_init (io_p2v (NETX_PA_VIC ),0 , ~0 ,0 );for (irq =NETX_IRQ_HIF_CHAINED (0 ); irq <=NETX_IRQ_HIF_LAST ; irq++) { irq_set_chip_and_handler(irq, &netx_hif_chip,
arch/arm/mach-netx/include/mach/hardware.h +1 -1
@@ -33,7 +33,7 @@#define XMAC_MEM_SIZE 0x1000#define SRAM_MEM_SIZE 0x8000 -#define io_p2v (x) ((x) - NETX_IO_PHYS + NETX_IO_VIRT) +#define io_p2v (x) IOMEM((x) - NETX_IO_PHYS + NETX_IO_VIRT)#define io_v2p (x) ((x) - NETX_IO_VIRT + NETX_IO_PHYS)#endif
arch/arm/mach-netx/include/mach/netx-regs.h +8 -8
@@ -115,7 +115,7 @@*********************************/ /* Registers */ -#define NETX_SYSTEM_REG (ofs) __io(NETX_VA_SYSTEM + (ofs)) +#define NETX_SYSTEM_REG (ofs) IOMEM(NETX_VA_SYSTEM + (ofs))#define NETX_SYSTEM_BOO_SR NETX_SYSTEM_REG(0x00)#define NETX_SYSTEM_IOC_CR NETX_SYSTEM_REG(0x04)#define NETX_SYSTEM_IOC_MR NETX_SYSTEM_REG(0x08)
@@ -185,7 +185,7 @@*******************************/ /* Registers */ -#define NETX_GPIO_REG (ofs) __io(NETX_VA_GPIO + (ofs)) +#define NETX_GPIO_REG (ofs) IOMEM(NETX_VA_GPIO + (ofs))#define NETX_GPIO_CFG (gpio) NETX_GPIO_REG(0x0 + ((gpio)<<2))#define NETX_GPIO_THRESHOLD_CAPTURE (gpio) NETX_GPIO_REG(0x40 + ((gpio)<<2))#define NETX_GPIO_COUNTER_CTRL (counter) NETX_GPIO_REG(0x80 + ((counter)<<2))
@@ -230,7 +230,7 @@*******************************/ /* Registers */ -#define NETX_PIO_REG (ofs) __io(NETX_VA_PIO + (ofs)) +#define NETX_PIO_REG (ofs) IOMEM(NETX_VA_PIO + (ofs))#define NETX_PIO_INPIO NETX_PIO_REG(0x0)#define NETX_PIO_OUTPIO NETX_PIO_REG(0x4)#define NETX_PIO_OEPIO NETX_PIO_REG(0x8)
@@ -240,7 +240,7 @@*******************************/ /* Registers */ -#define NETX_MIIMU __io(NETX_VA_MIIMU) +#define NETX_MIIMU IOMEM(NETX_VA_MIIMU)/* Bits */ #define MIIMU_SNRDY (1<<0)
@@ -317,7 +317,7 @@*******************************/ /* Registers */ -#define NETX_PFIFO_REG (ofs) __io(NETX_VA_PFIFO + (ofs)) +#define NETX_PFIFO_REG (ofs) IOMEM(NETX_VA_PFIFO + (ofs))#define NETX_PFIFO_BASE (pfifo) NETX_PFIFO_REG(0x00 + ((pfifo)<<2))#define NETX_PFIFO_BORDER_BASE (pfifo) NETX_PFIFO_REG(0x80 + ((pfifo)<<2))#define NETX_PFIFO_RESET NETX_PFIFO_REG(0x100)
@@ -334,7 +334,7 @@*******************************/ /* Registers */ -#define NETX_MEMCR_REG (ofs) __io(NETX_VA_MEMCR + (ofs)) +#define NETX_MEMCR_REG (ofs) IOMEM(NETX_VA_MEMCR + (ofs))#define NETX_MEMCR_SRAM_CTRL (cs) NETX_MEMCR_REG(0x0 + 4 * (cs))/* SRAM for CS 0..2 */ #define NETX_MEMCR_SDRAM_CFG_CTRL NETX_MEMCR_REG(0x40)#define NETX_MEMCR_SDRAM_TIMING_CTRL NETX_MEMCR_REG(0x44)
@@ -355,7 +355,7 @@*******************************/ /* Registers */ -#define NETX_DPMAS_REG (ofs) __io(NETX_VA_DPMAS + (ofs)) +#define NETX_DPMAS_REG (ofs) IOMEM(NETX_VA_DPMAS + (ofs))#define NETX_DPMAS_SYS_STAT NETX_DPMAS_REG(0x4d8)#define NETX_DPMAS_INT_STAT NETX_DPMAS_REG(0x4e0)#define NETX_DPMAS_INT_EN NETX_DPMAS_REG(0x4f0)
@@ -425,7 +425,7 @@/******************************* * I2C * *******************************/ -#define NETX_I2C_REG (ofs) __io(NETX_VA_I2C, (ofs)) +#define NETX_I2C_REG (ofs) IOMEM(NETX_VA_I2C, (ofs))#define NETX_I2C_CTRL NETX_I2C_REG(0x0)#define NETX_I2C_DATA NETX_I2C_REG(0x4)
arch/arm/mach-realview/include/mach/hardware.h +1 -1
@@ -37,6 +37,6 @@#else #define IO_ADDRESS (x) (x)#endif -#define __io_address (n) __io(IO_ADDRESS(n)) +#define __io_address (n) IOMEM(IO_ADDRESS(n))#endif
arch/arm/mach-shmobile/board-ag5evm.c +1 -1
@@ -615,7 +615,7 @@ static void __init ag5evm_init(void)#ifdef CONFIG_CACHE_L2X0 /* Shared attribute override enable, 64K*8way */ -l2x0_init (__io (0xf0100000 ),0x00460000 ,0xc2000fff ); +l2x0_init (IOMEM (0xf0100000 ),0x00460000 ,0xc2000fff );#endif sh73a0_add_standard_devices ();platform_add_devices (ag5evm_devices,ARRAY_SIZE (ag5evm_devices));
arch/arm/mach-shmobile/board-bonito.c +1 -1
@@ -394,7 +394,7 @@ static void __init bonito_init(void)#ifdef CONFIG_CACHE_L2X0 /* Early BRESP enable, Shared attribute override enable, 32K*8way */ -l2x0_init (__io (0xf0002000 ),0x40440000 ,0x82000fff ); +l2x0_init (IOMEM (0xf0002000 ),0x40440000 ,0x82000fff );#endif r8a7740_add_standard_devices ();
arch/arm/mach-shmobile/board-kota2.c +1 -1
@@ -530,7 +530,7 @@ static void __init kota2_init(void)#ifdef CONFIG_CACHE_L2X0 /* Early BRESP enable, Shared attribute override enable, 64K*8way */ -l2x0_init (__io (0xf0100000 ),0x40460000 ,0x82000fff ); +l2x0_init (IOMEM (0xf0100000 ),0x40460000 ,0x82000fff );#endif sh73a0_add_standard_devices ();platform_add_devices (kota2_devices,ARRAY_SIZE (kota2_devices));
arch/arm/mach-shmobile/intc-r8a7779.c +2 -2
@@ -42,8 +42,8 @@ static int r8a7779_set_wake(struct irq_data *data, unsigned int on)void __init r8a7779_init_irq (void ) { -void __iomem *gic_dist_base =__io (0xf0001000 ); -void __iomem *gic_cpu_base =__io (0xf0000100 ); +void __iomem *gic_dist_base =IOMEM (0xf0001000 ); +void __iomem *gic_cpu_base =IOMEM (0xf0000100 );/* use GIC to handle interrupts */ gic_init (0 ,29 , gic_dist_base, gic_cpu_base);
arch/arm/mach-shmobile/intc-sh73a0.c +2 -2
@@ -419,8 +419,8 @@ static irqreturn_t sh73a0_pint1_demux(int irq, void *dev_id)void __init sh73a0_init_irq (void ) { -void __iomem *gic_dist_base =__io (0xf0001000 ); -void __iomem *gic_cpu_base =__io (0xf0000100 ); +void __iomem *gic_dist_base =IOMEM (0xf0001000 ); +void __iomem *gic_cpu_base =IOMEM (0xf0000100 );void __iomem *intevtsa =ioremap_nocache (0xffd20100 ,PAGE_SIZE );int k, n;
arch/arm/mach-shmobile/smp-r8a7779.c +2 -2
@@ -30,7 +30,7 @@#include <asm/smp_twd.h> #include <asm/hardware/gic.h> -#define AVECR 0xfe700040 +#define AVECR IOMEM(0xfe700040)static struct r8a7779_pm_ch r8a7779_ch_cpu1 = { .chan_offs =0x40 ,/* PWRSR0 .. PWRER0 */
@@ -140,7 +140,7 @@ void __init r8a7779_smp_prepare_cpus(void)scu_enable (scu_base_addr ());/* Map the reset vector (in headsmp.S) */ -__raw_writel (__pa (shmobile_secondary_vector),__io (AVECR )); +__raw_writel (__pa (shmobile_secondary_vector),AVECR );/* enable cache coherency on CPU0 */ modify_scu_cpu_psr (0 ,3 << (cpu *8 ));
arch/arm/mach-shmobile/smp-sh73a0.c +10 -10
@@ -28,11 +28,11 @@#include <asm/smp_twd.h> #include <asm/hardware/gic.h> -#define WUPCR 0xe6151010 -#define SRESCR 0xe6151018 -#define PSTR 0xe6151040 -#define SBAR 0xe6180020 -#define APARMBAREA 0xe6f10020 +#define WUPCR IOMEM(0xe6151010) +#define SRESCR IOMEM(0xe6151018) +#define PSTR IOMEM(0xe6151040) +#define SBAR IOMEM(0xe6180020) +#define APARMBAREA IOMEM(0xe6f10020)static void __iomem *scu_base_addr (void ) {
@@ -80,10 +80,10 @@ int __cpuinit sh73a0_boot_secondary(unsigned int cpu)/* enable cache coherency */ modify_scu_cpu_psr (0 ,3 << (cpu *8 )); -if (((__raw_readw (__io (PSTR )) >> (4 * cpu)) &3 ) ==3 ) -__raw_writel (1 << cpu,__io (WUPCR ));/* wake up */ +if (((__raw_readw (PSTR ) >> (4 * cpu)) &3 ) ==3 ) +__raw_writel (1 << cpu,WUPCR );/* wake up */ else -__raw_writel (1 << cpu,__io (SRESCR ));/* reset */ +__raw_writel (1 << cpu,SRESCR );/* reset */ return 0 ; }
@@ -95,8 +95,8 @@ void __init sh73a0_smp_prepare_cpus(void)scu_enable (scu_base_addr ());/* Map the reset vector (in headsmp.S) */ -__raw_writel (0 ,__io (APARMBAREA ));/* 4k */ -__raw_writel (__pa (shmobile_secondary_vector),__io (SBAR )); +__raw_writel (0 ,APARMBAREA );/* 4k */ +__raw_writel (__pa (shmobile_secondary_vector),SBAR );/* enable cache coherency on CPU0 */ modify_scu_cpu_psr (0 ,3 << (cpu *8 ));
arch/arm/mach-ux500/include/mach/hardware.h +1 -1
@@ -23,7 +23,7 @@ (((x) &0x0fffffff ) + (((x) >>4 ) &0x0f000000 ) +U8500_IO_VIRTUAL ) /* typesafe io address */ -#define __io_address (n) __io(IO_ADDRESS(n)) +#define __io_address (n) IOMEM(IO_ADDRESS(n))/* Used by some plat-nomadik code */ #define io_p2v (n) __io_address(n)
Signature · 1 line
1.7.5.4
PATCH 4/4 ARM: __io abuse cleanup
Quoted 5 lines · Rob Herring
From: Rob Herring <[email protected]>
Several platforms incorrectly use
__io()for casting to 'void__iomem*'. This converts all of those uses to use the common IOMEM macro.
Quoted 9 lines
Reported-by Arnd Bergmann <[email protected]>Signed-off-by Rob Herring <[email protected]>Cc Anton Vorontsov <[email protected]>Cc Russell King <[email protected]>Cc Paul Mundt <[email protected]>Cc Magnus Damm <[email protected]>Cc Srinidhi Kasagar <[email protected]>Cc Linus Walleij <[email protected]>Cc linux-sh at vger.kernel.org
PATCH 4/4 ARM: __io abuse cleanup
In reply to Rob HerringQuoted 14 lines · Rob Herring
From: Rob Herring <[email protected]>
Several platforms incorrectly use
__io()for casting to 'void__iomem*'. This converts all of those uses to use the common IOMEM macro.Reported-by Arnd Bergmann <[email protected]>Signed-off-by Rob Herring <[email protected]>Cc Anton Vorontsov <[email protected]>Cc Russell King <[email protected]>Cc Paul Mundt <[email protected]>Cc Magnus Damm <[email protected]>Cc Srinidhi Kasagar <[email protected]>Cc Linus Walleij <[email protected]>Cc linux-sh at vger.kernel.org
Quoted 1 line
---
For cns3xxx:
Thanks!
Signature · 2 lines
Anton Vorontsov Email: cbouatmailru at gmail.com
PATCH 4/4 ARM: __io abuse cleanup
In reply to Rob HerringQuoted 5 lines · Rob Herring
From: Rob Herring <[email protected]>
Several platforms incorrectly use
__io()for casting to 'void__iomem*'. This converts all of those uses to use the common IOMEM macro.
Quoted 9 lines
Reported-by Arnd Bergmann <[email protected]>Signed-off-by Rob Herring <[email protected]>Cc Anton Vorontsov <[email protected]>Cc Russell King <[email protected]>Cc Paul Mundt <[email protected]>Cc Magnus Damm <[email protected]>Cc Srinidhi Kasagar <[email protected]>Cc Linus Walleij <[email protected]>Cc linux-sh at vger.kernel.org
Thanks Rob!
Linus Walleij