Skip to contentSkip to conversation

mach/io.h cleanup fixes

PATCH New Rob Herring 11 participants 19 messages Mar 11, 2012 – Mar 14, 2012

Subsystems (14)
lore
Share & tools
lore
#0 lore raw

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
#1 lore raw

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
index 4fc6794..6486d2f 100644
@@ -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
#2 lore raw

PATCH 2/4 ARM: iop13xx: fix missing declaration of iop13xx_init_early

In reply to Rob Herring

From: 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
index 07e9ff7..e190dcd 100644
@@ -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
#3 lore raw

PATCH 3/4 ARM: create a common IOMEM definition

In reply to 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 make linux/io.h and asm/io.h assembly safe, the assembly version of IOMEM is moved into asm/assembler.h.

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 +
 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
index 62f8095..88374dd 100644
@@ -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
index 11d2072..35d9140 100644
@@ -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
index 204e216..501cdbf 100644
@@ -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
index 22f0ed3..395f627 100644
@@ -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
index 414e0b9..0be260b 100644
@@ -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
index 9dc7cf9..da2fb2c 100644
@@ -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
index e711d0e..c4a7b84 100644
@@ -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
index 3e404ac..b1ece08 100644
@@ -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
index 152b3b7..6c4046c 100644
@@ -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
index 90682f4..00afdfb 100644
@@ -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
index 53e89a0..4c0e8a6 100644
@@ -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
index 399c4c4..a051cb8 100644
@@ -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
index d681757..330c471 100644
@@ -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
index 981b9f9..480fb8f 100644
@@ -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
index 79b98f2..c03c110 100644
@@ -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
index e6f9581..0812b15 100644
@@ -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
index 050d63c..257166b 100644
@@ -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
index f67860c..6c4841f 100644
@@ -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
index ac70e0d..9281cf8 100644
@@ -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
index 082b4d1..c05b311 100644
@@ -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
index 035fdc9..7b7cba9 100644
@@ -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
index ca06a68..0630513 100644
@@ -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
index 537b05a..e897978 100644
@@ -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
index d0fc9f4..762eeb0 100644
@@ -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
index 66d6772..70187d7 100644
@@ -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
#4 lore raw

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 make linux/io.h and asm/io.h assembly safe, the assembly version of IOMEM is moved into asm/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().

#5 lore raw

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 make linux/io.h and asm/io.h assembly safe, the assembly version of IOMEM is moved into asm/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
#6 lore raw

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 make linux/io.h and asm/io.h assembly safe, the assembly version of IOMEM is moved into asm/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

#7 lore raw

PATCH 3/4 ARM: create a common IOMEM definition

In reply to Rob Herring
Quoted 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 make linux/io.h and asm/io.h assembly safe, the assembly version of IOMEM is moved into asm/assembler.h.

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

#9 lore raw

PATCH 3/4 ARM: create a common IOMEM definition

In reply to Rob Herring
Quoted 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 make linux/io.h and asm/io.h assembly safe, the assembly version of IOMEM is moved into asm/assembler.h.

For:

Quoted 1 line

?arch/arm/mach-u300/include/mach/u300-regs.h ? ? | ? ?6 ------

Yours,
Linus Walleij

#10 lore raw

PATCH 3/4 ARM: create a common IOMEM definition

In reply to Rob Herring
Quoted 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 make linux/io.h and asm/io.h assembly safe, the assembly version of IOMEM is moved into asm/assembler.h.

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:

maintainer
#11 lore raw

PATCH 3/4 ARM: create a common IOMEM definition

In reply to Rob Herring
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 make linux/io.h and asm/io.h assembly safe, the assembly version of IOMEM is moved into asm/assembler.h.

Glad to see this:

#12 lore raw

PATCH 3/4 ARM: create a common IOMEM definition

In reply to Rob Herring
Quoted 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.
#13 lore raw

PATCH 3/4 ARM: create a common IOMEM definition

In reply to Rob Herring
Quoted 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 make linux/io.h and asm/io.h assembly safe, the assembly version of IOMEM is moved into asm/assembler.h.

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]>
#14 lore raw

PATCH 3/4 ARM: create a common IOMEM definition

In reply to Rob Herring
Quoted 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 make linux/io.h and asm/io.h assembly safe, the assembly version of IOMEM is moved into asm/assembler.h.

Quoted 3 lines

?arch/arm/mach-mmp/include/mach/addr-map.h ? ? ? | ? ?6 ------

#15 lore raw

PATCH 4/4 ARM: __io abuse cleanup

In reply to 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.

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
---
 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
index 941a308..031805b 100644
@@ -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
index 79d1fb0..1e40c99 100644
@@ -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
index 59e6797..aa62746 100644
@@ -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
index 517a2bd..b661af2 100644
@@ -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
index 5a03e7c..fdde22b 100644
@@ -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
index 8a638d1..281e71c 100644
@@ -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
index eff8a96..5346529 100644
@@ -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
index 4d22016..91d4c22 100644
@@ -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
index 857ceee..4cf6100 100644
@@ -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
index 5d92fcd..550b23d 100644
@@ -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
index 1eda6b0..dbb4357 100644
@@ -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
index 4fe2e9e..6d5e57d 100644
@@ -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
index 0d159d6..667d53d 100644
@@ -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
index b6ba26a..aac7689 100644
@@ -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
#16 lore raw

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
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
#17 lore raw

PATCH 4/4 ARM: __io abuse cleanup

In reply to Rob Herring
Quoted 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.

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
#18 lore raw

PATCH 4/4 ARM: __io abuse cleanup

In reply to Rob Herring
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
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