ARM: imx: refactor the io mapping macro
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Mon, 25 Oct 2010 09:40:30 +0000 (11:40 +0200)
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Wed, 17 Nov 2010 07:58:08 +0000 (08:58 +0100)
This makes it more assembler friendly and allows it to be used in situation
that need an unsigned long and not a pointer.  Also the naming is
clearer.  IOMEM is introduced without IMX_ prefix as it is used this way
in more than one ARM subarch and it might become globally available
soon.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
arch/arm/mach-mx3/mach-kzm_arm11_01.c
arch/arm/plat-mxc/include/mach/hardware.h
arch/arm/plat-mxc/include/mach/mx1.h
arch/arm/plat-mxc/include/mach/mx21.h
arch/arm/plat-mxc/include/mach/mx25.h
arch/arm/plat-mxc/include/mach/mx27.h
arch/arm/plat-mxc/include/mach/mx31.h
arch/arm/plat-mxc/include/mach/mx35.h
arch/arm/plat-mxc/include/mach/mx51.h
arch/arm/plat-mxc/include/mach/mxc91231.h

index 042cd5655e17b46d548a39a72b2780881af91bb4..a5f3eb24e4d5059f499850eb095854e101b6f1db 100644 (file)
@@ -41,9 +41,9 @@
 #include "devices-imx31.h"
 #include "devices.h"
 
-#define KZM_ARM11_IO_ADDRESS(x) (                                      \
-       IMX_IO_ADDRESS(x, MX31_CS4) ?:                                  \
-       IMX_IO_ADDRESS(x, MX31_CS5) ?:                                  \
+#define KZM_ARM11_IO_ADDRESS(x) (IOMEM(                                        \
+       IMX_IO_P2V_MODULE(x, MX31_CS4) ?:                               \
+       IMX_IO_P2V_MODULE(x, MX31_CS5)) ?:                              \
        MX31_IO_ADDRESS(x))
 
 /*
index ebadf4ac43fcec4a55b4dffdd5bdf16e69bb255c..4bbe50612d141056c1d887c430e5ae876aa4e8d6 100644 (file)
 
 #include <asm/sizes.h>
 
-#define IMX_IO_ADDRESS(addr, module)                                   \
-       ((void __force __iomem *)                                       \
-        (((unsigned long)((addr) - (module ## _BASE_ADDR)) < module ## _SIZE) ?\
-        (addr) - (module ## _BASE_ADDR) + (module ## _BASE_ADDR_VIRT) : 0))
+#ifdef __ASSEMBLER__
+#define IOMEM(addr)    (addr)
+#else
+#define IOMEM(addr)    ((void __force __iomem *)(addr))
+#endif
+
+#define IMX_IO_P2V_MODULE(addr, module)                                        \
+       (((addr) - module ## _BASE_ADDR) < module ## _SIZE ?            \
+        (addr) - (module ## _BASE_ADDR) + (module ## _BASE_ADDR_VIRT) : 0)
 
 #ifdef CONFIG_ARCH_MX5
 #include <mach/mx51.h>
index 641b2461823950be06d2573131f7f2b8ba74d3e4..b41c2887f65c6a83f7b7c1a483fae3f793ac7764 100644 (file)
@@ -73,8 +73,9 @@
 #define MX1_CSI_BASE_ADDR              (0x24000 + MX1_IO_BASE_ADDR)
 
 /* macro to get at IO space when running virtually */
-#define MX1_IO_ADDRESS(x) (                                            \
-       IMX_IO_ADDRESS(x, MX1_IO))
+#define MX1_IO_P2V(x)  (                                               \
+       IMX_IO_P2V_MODULE(x, MX1_IO))
+#define MX1_IO_ADDRESS(x)              IOMEM(MX1_IO_P2V(x))
 
 /* fixed interrput numbers */
 #define MX1_INT_SOFTINT                0
index 8bc59720b6e4be8ed7b52c08bece17cf35c0cfb1..aed0277ebc93d7bf9b09cc9ba1032762e32a2be9 100644 (file)
 
 #define MX21_IRAM_BASE_ADDR            0xffffe800      /* internal ram */
 
-#define MX21_IO_ADDRESS(x) (                                           \
-       IMX_IO_ADDRESS(x, MX21_AIPI) ?:                                 \
-       IMX_IO_ADDRESS(x, MX21_SAHB1) ?:                                \
-       IMX_IO_ADDRESS(x, MX21_X_MEMC))
+#define MX21_IO_P2V(x) (                                               \
+       IMX_IO_P2V_MODULE(x, MX21_AIPI) ?:                              \
+       IMX_IO_P2V_MODULE(x, MX21_SAHB1) ?:                             \
+       IMX_IO_P2V_MODULE(x, MX21_X_MEMC))
+#define MX21_IO_ADDRESS(x)             IOMEM(MX21_IO_P2V(x))
 
 /* fixed interrupt numbers */
 #define MX21_INT_CSPI3         6
index cf46a45b0d4e54971d3fe829bfc8a7c7942aaebc..6f9e1d401ce883950b08ee9f43d1c6929ac7f0cd 100644 (file)
 #define MX25_GPIO3_BASE_ADDR_VIRT      (MX25_AIPS2_BASE_ADDR_VIRT + 0xa4000)
 #define MX25_GPIO4_BASE_ADDR_VIRT      (MX25_AIPS2_BASE_ADDR_VIRT + 0x9c000)
 
-#define MX25_IO_ADDRESS(x) (                                   \
-       IMX_IO_ADDRESS(x, MX25_AIPS1) ?:                        \
-       IMX_IO_ADDRESS(x, MX25_AIPS2) ?:                        \
-       IMX_IO_ADDRESS(x, MX25_AVIC))
+#define MX25_IO_P2V(x) (                                       \
+       IMX_IO_P2V_MODULE(x, MX25_AIPS1) ?:                     \
+       IMX_IO_P2V_MODULE(x, MX25_AIPS2) ?:                     \
+       IMX_IO_P2V_MODULE(x, MX25_AVIC))
+#define MX25_IO_ADDRESS(x)             IOMEM(MX25_IO_P2V(x))
 
 #define MX25_AIPS1_IO_ADDRESS(x) \
        (((x) - MX25_AIPS1_BASE_ADDR) + MX25_AIPS1_BASE_ADDR_VIRT)
index 2237ba2e53519230f2d8986af241558b6822925c..c769cc8c0e863f90ad4343acfc9889dc29e6a117 100644 (file)
 /* IRAM */
 #define MX27_IRAM_BASE_ADDR            0xffff4c00      /* internal ram */
 
-#define MX27_IO_ADDRESS(x) (                                           \
-       IMX_IO_ADDRESS(x, MX27_AIPI) ?:                                 \
-       IMX_IO_ADDRESS(x, MX27_SAHB1) ?:                                \
-       IMX_IO_ADDRESS(x, MX27_X_MEMC))
+#define MX27_IO_P2V(x) (                                               \
+       IMX_IO_P2V_MODULE(x, MX27_AIPI) ?:                              \
+       IMX_IO_P2V_MODULE(x, MX27_SAHB1) ?:                             \
+       IMX_IO_P2V_MODULE(x, MX27_X_MEMC))
+#define MX27_IO_ADDRESS(x)             IOMEM(MX27_IO_P2V(x))
 
 #ifndef __ASSEMBLER__
 static inline void mx27_setup_weimcs(size_t cs,
index 61cfe827498b2a8580351575e9a1d15211b21f1f..eb4a28dc26863219112f6b83dc6f41f3de0ca966 100644 (file)
 
 #define MX31_PCMCIA_MEM_BASE_ADDR      0xbc000000
 
-#define MX31_IO_ADDRESS(x) (                                           \
-       IMX_IO_ADDRESS(x, MX31_AIPS1) ?:                                \
-       IMX_IO_ADDRESS(x, MX31_AIPS2) ?:                                \
-       IMX_IO_ADDRESS(x, MX31_AVIC) ?:                                 \
-       IMX_IO_ADDRESS(x, MX31_X_MEMC) ?:                               \
-       IMX_IO_ADDRESS(x, MX31_SPBA0))
+#define MX31_IO_P2V(x) (                                               \
+       IMX_IO_P2V_MODULE(x, MX31_AIPS1) ?:                             \
+       IMX_IO_P2V_MODULE(x, MX31_AIPS2) ?:                             \
+       IMX_IO_P2V_MODULE(x, MX31_AVIC) ?:                              \
+       IMX_IO_P2V_MODULE(x, MX31_X_MEMC) ?:                            \
+       IMX_IO_P2V_MODULE(x, MX31_SPBA0))
+#define MX31_IO_ADDRESS(x)             IOMEM(MX31_IO_P2V(x))
 
 #ifndef __ASSEMBLER__
 static inline void mx31_setup_weimcs(size_t cs,
index 6267cff6035d56532054e6d0503a8ad32ff77047..ce1a24b09337f071da984d3a1bee8c04f39f6d87 100644 (file)
 #define MX35_NFC_BASE_ADDR             0xbb000000
 #define MX35_PCMCIA_MEM_BASE_ADDR      0xbc000000
 
-#define MX35_IO_ADDRESS(x) (                                           \
-       IMX_IO_ADDRESS(x, MX35_AIPS1) ?:                                \
-       IMX_IO_ADDRESS(x, MX35_AIPS2) ?:                                \
-       IMX_IO_ADDRESS(x, MX35_AVIC) ?:                                 \
-       IMX_IO_ADDRESS(x, MX35_X_MEMC) ?:                               \
-       IMX_IO_ADDRESS(x, MX35_SPBA0))
+#define MX35_IO_P2V(x) (                                               \
+       IMX_IO_P2V_MODULE(x, MX35_AIPS1) ?:                             \
+       IMX_IO_P2V_MODULE(x, MX35_AIPS2) ?:                             \
+       IMX_IO_P2V_MODULE(x, MX35_AVIC) ?:                              \
+       IMX_IO_P2V_MODULE(x, MX35_X_MEMC) ?:                            \
+       IMX_IO_P2V_MODULE(x, MX35_SPBA0))
+#define MX35_IO_ADDRESS(x)             IOMEM(MX35_IO_P2V(x))
 
 /*
  * Interrupt numbers
index 2af7a1056fc17661d69e0ef900349aa317a98eba..e93cf5be90a48c26c2974d513b13850d51875c01 100644 (file)
 #define MX51_GPU2D_BASE_ADDR           0xd0000000
 #define MX51_TZIC_BASE_ADDR            0xe0000000
 
-#define MX51_IO_ADDRESS(x) (                                           \
-       IMX_IO_ADDRESS(x, MX51_IRAM) ?:                                 \
-       IMX_IO_ADDRESS(x, MX51_DEBUG) ?:                                \
-       IMX_IO_ADDRESS(x, MX51_SPBA0) ?:                                \
-       IMX_IO_ADDRESS(x, MX51_AIPS1) ?:                                \
-       IMX_IO_ADDRESS(x, MX51_AIPS2))
+#define MX51_IO_P2V(x) (                                               \
+       IMX_IO_P2V_MODULE(x, MX51_IRAM) ?:                              \
+       IMX_IO_P2V_MODULE(x, MX51_DEBUG) ?:                             \
+       IMX_IO_P2V_MODULE(x, MX51_SPBA0) ?:                             \
+       IMX_IO_P2V_MODULE(x, MX51_AIPS1) ?:                             \
+       IMX_IO_P2V_MODULE(x, MX51_AIPS2))
+#define MX51_IO_ADDRESS(x)             IOMEM(MX51_IO_P2V(x))
 
 /* This is currently used in <mach/debug-macro.S>, but should go away */
 #define MX51_AIPS1_IO_ADDRESS(x)  \
index 0ca3101ebf36e92364b33a78fbf4e7db916f2af6..49e5e25000fc89802417332ae6f04ffc45c08d04 100644 (file)
  * it returns 0.
  */
 
-#define MXC91231_IO_ADDRESS(x) (                                       \
-       IMX_IO_ADDRESS(x, MXC91231_L2CC) ?:                             \
-       IMX_IO_ADDRESS(x, MXC91231_X_MEMC) ?:                           \
-       IMX_IO_ADDRESS(x, MXC91231_ROMP) ?:                             \
-       IMX_IO_ADDRESS(x, MXC91231_AVIC) ?:                             \
-       IMX_IO_ADDRESS(x, MXC91231_AIPS1) ?:                            \
-       IMX_IO_ADDRESS(x, MXC91231_SPBA0) ?:                            \
-       IMX_IO_ADDRESS(x, MXC91231_SPBA1) ?:                            \
-       IMX_IO_ADDRESS(x, MXC91231_AIPS2))
+#define MXC91231_IO_P2V(x)     (                                       \
+       IMX_IO_P2V_MODULE(x, MXC91231_L2CC) ?:                          \
+       IMX_IO_P2V_MODULE(x, MXC91231_X_MEMC) ?:                        \
+       IMX_IO_P2V_MODULE(x, MXC91231_ROMP) ?:                          \
+       IMX_IO_P2V_MODULE(x, MXC91231_AVIC) ?:                          \
+       IMX_IO_P2V_MODULE(x, MXC91231_AIPS1) ?:                         \
+       IMX_IO_P2V_MODULE(x, MXC91231_SPBA0) ?:                         \
+       IMX_IO_P2V_MODULE(x, MXC91231_SPBA1) ?:                         \
+       IMX_IO_P2V_MODULE(x, MXC91231_AIPS2))
+#define MXC91231_IO_ADDRESS(x)         IOMEM(MXC91231_IO_P2V(x))
 
 /*
  * Interrupt numbers