[ARM] Add a common typesafe __io implementation
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Sun, 30 Nov 2008 11:45:54 +0000 (11:45 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 30 Nov 2008 11:45:54 +0000 (11:45 +0000)
As Al did for Versatile in 2ad4f86b60b649fd7428265c08d73a3bd360c81b,
add a typesafe __io implementation for platforms to use.  Convert
platforms to use this new simple typesafe implementation.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
23 files changed:
arch/arm/include/asm/io.h
arch/arm/mach-aaec2000/include/mach/io.h
arch/arm/mach-at91/include/mach/io.h
arch/arm/mach-clps711x/include/mach/io.h
arch/arm/mach-davinci/include/mach/io.h
arch/arm/mach-ep93xx/include/mach/io.h
arch/arm/mach-h720x/include/mach/io.h
arch/arm/mach-imx/include/mach/io.h
arch/arm/mach-ixp4xx/include/mach/io.h
arch/arm/mach-ks8695/include/mach/io.h
arch/arm/mach-l7200/include/mach/io.h
arch/arm/mach-lh7a40x/include/mach/io.h
arch/arm/mach-msm/include/mach/io.h
arch/arm/mach-netx/include/mach/io.h
arch/arm/mach-ns9xxx/include/mach/io.h
arch/arm/mach-orion5x/include/mach/io.h
arch/arm/mach-pnx4008/include/mach/io.h
arch/arm/mach-pxa/include/mach/io.h
arch/arm/mach-realview/include/mach/io.h
arch/arm/mach-sa1100/include/mach/io.h
arch/arm/mach-versatile/include/mach/io.h
arch/arm/plat-mxc/include/mach/io.h
arch/arm/plat-omap/include/mach/io.h

index a8094451be57285cca1b802e93860b0c9c860774..d2a59cfc30ce3f790ccc3b01a781f4fdf75c8baf 100644 (file)
@@ -79,6 +79,14 @@ extern void __iounmap(volatile void __iomem *addr);
  */
 extern void __readwrite_bug(const char *fn);
 
+/*
+ * A typesafe __io() helper
+ */
+static inline void __iomem *__typesafe_io(unsigned long addr)
+{
+       return (void __iomem *)addr;
+}
+
 /*
  * Now, pick up the machine-defined IO definitions
  */
index a283296b3175106d3be65afdbf2636b6eab4db1c..ab4fe5d20eaf2fbad0750fc59fbf25125826a284 100644 (file)
@@ -12,7 +12,7 @@
  * We don't actually have real ISA nor PCI buses, but there is so many
  * drivers out there that might just work if we fake them...
  */
-#define __io(a)                        ((void __iomem *)(a))
-#define __mem_pci(a)           (a)
+#define __io(a)                __typesafe_io(a)
+#define __mem_pci(a)   (a)
 
 #endif
index 1611bd03f52892ca846f56f4adc8801e4c85e362..0b0cccc46e68497dd399c6ab283f4009ad5c92a7 100644 (file)
@@ -23,8 +23,8 @@
 
 #define IO_SPACE_LIMIT         0xFFFFFFFF
 
-#define __io(a)                        ((void __iomem *)(a))
-#define __mem_pci(a)           (a)
+#define __io(a)                __typesafe_io(a)
+#define __mem_pci(a)   (a)
 
 
 #ifndef __ASSEMBLY__
index 49419f946046c403961653d9f3e5320fbcfa6a5a..2e0b3ced8f07034f7e7c342b34f1b64d5a491afd 100644 (file)
@@ -22,8 +22,8 @@
 
 #define IO_SPACE_LIMIT 0xffffffff
 
-#define __io(a)                        ((void __iomem *)(a))
-#define __mem_pci(a)           (a)
+#define __io(a)                __typesafe_io(a)
+#define __mem_pci(a)   (a)
 
 /*
  * We don't support ins[lb]/outs[lb].  Make them fault.
index b78ee9140496df8ef2f00fc3bf55986e3b211c2b..a48795fd24173f743ff859ef6ded883d7abf2ca9 100644 (file)
@@ -29,8 +29,7 @@
  * We don't actually have real ISA nor PCI buses, but there is so many
  * drivers out there that might just work if we fake them...
  */
-#define PCIO_BASE               0
-#define __io(a)                        ((void __iomem *)(PCIO_BASE + (a)))
+#define __io(a)                        __typesafe_io(a)
 #define __mem_pci(a)           (a)
 #define __mem_isa(a)           (a)
 
index 1ab9a90ad33949b4dee55331eff8762fd21e59fe..fd5f081cc8b7263e01cf40c3e8473f19a3763998 100644 (file)
@@ -4,5 +4,5 @@
 
 #define IO_SPACE_LIMIT         0xffffffff
 
-#define __io(p)                        ((void __iomem *)(p))
-#define __mem_pci(p)           (p)
+#define __io(p)                __typesafe_io(p)
+#define __mem_pci(p)   (p)
index f678e4f57e5f10be596029b1805af0a9b30fd81b..2c8659c21a936889f6048938fa07d0768f38e982 100644 (file)
@@ -16,7 +16,7 @@
 
 #define IO_SPACE_LIMIT 0xffffffff
 
-#define __io(a)                ((void __iomem *)(a))
+#define __io(a)                __typesafe_io(a)
 #define __mem_pci(a)   (a)
 
 #endif
index 0a11b0f480e036263f08c06251bc188f3d64bbca..9e197ae4590f8358b31f618641261151c9801262 100644 (file)
@@ -22,7 +22,7 @@
 
 #define IO_SPACE_LIMIT 0xffffffff
 
-#define __io(a)                ((void __iomem *)(a))
+#define __io(a)                __typesafe_io(a)
 #define __mem_pci(a)   (a)
 
 #endif
index b7f780f574fad2dda5fdeb4ad52da0ddfa2dcc71..ce63048d45eb0ab7ad52556917ce5b28fe1c610c 100644 (file)
@@ -239,7 +239,7 @@ __ixp4xx_readsl(const volatile void __iomem *bus_addr, u32 *vaddr, u32 count)
 
 #ifndef CONFIG_PCI
 
-#define        __io(v)         v
+#define        __io(v)         __typesafe_io(v)
 
 #else
 
index f364f24ffe1ec44a1bc1a8e4c269e552b1dba95e..a7a63ac3ba4e5f607bec5607018533d7209d1843 100644 (file)
@@ -13,7 +13,7 @@
 
 #define IO_SPACE_LIMIT         0xffffffff
 
-#define __io(a)                        ((void __iomem *)(a))
-#define __mem_pci(a)           (a)
+#define __io(a)                __typesafe_io(a)
+#define __mem_pci(a)   (a)
 
 #endif
index 64dc594598117778b0125df3521810c74e5924c3..a770a89fb70829f55f889ea5b4dce49b1cd7b0fd 100644 (file)
 /*
  * There are not real ISA nor PCI buses, so we fake it.
  */
-static inline void __iomem *__io(unsigned long addr)
-{
-       return (void __iomem *)addr;
-}
-#define __io(a)        __io(a)
-#define __mem_pci(a)           (a)
+#define __io(a)                __typesafe_io(a)
+#define __mem_pci(a)   (a)
 
 #endif
index e41422db97a66733ba660f4321e09e62c19206dd..6ece45911cbc2a1e6efc274a7a4118befc86a2e5 100644 (file)
@@ -14,7 +14,7 @@
 #define IO_SPACE_LIMIT 0xffffffff
 
 /* No ISA or PCI bus on this machine. */
-#define __io(a)                        ((void __iomem *)(a))
-#define __mem_pci(a)           (a)
+#define __io(a)                __typesafe_io(a)
+#define __mem_pci(a)   (a)
 
 #endif /* __ASM_ARCH_IO_H */
index c6a2feb268b0bc8def0f0890ad1aa803ae506173..aab964591db43a390e36c74c406b279bb768ce17 100644 (file)
 
 void __iomem *__msm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype);
 
-static inline void __iomem *__io(unsigned long addr)
-{
-       return (void __iomem *)addr;
-}
-#define __io(a)         __io(a)
+#define __io(a)                __typesafe_io(a)
 #define __mem_pci(a)    (a)
 
 #endif
index 468b92a825850592daad5da82a4fa2cfc48e76ed..c3921cb3b6a6c7bde77b7cfd6f7108c48ccc04a5 100644 (file)
@@ -22,7 +22,7 @@
 
 #define IO_SPACE_LIMIT 0xffffffff
 
-#define __io(a)         ((void __iomem *)(a))
+#define __io(a)                __typesafe_io(a)
 #define __mem_pci(a)            (a)
 
 #endif
index 027bf649645adfc738dda0224dc856e0725f6a53..f08451d2e1bc87d69a1b861e2f9175dd7a5cef45 100644 (file)
@@ -13,7 +13,7 @@
 
 #define IO_SPACE_LIMIT  0xffffffff /* XXX */
 
-#define __io(a)         ((void __iomem *)(a))
+#define __io(a)                __typesafe_io(a)
 #define __mem_pci(a)    (a)
 #define __mem_isa(a)    (IO_BASE + (a))
 
index f24b2513f7f366d896bf016bd81bf9b3dd7eee56..c47b033bd999e67588e037522aa897aefae6bc12 100644 (file)
@@ -38,14 +38,9 @@ __arch_iounmap(void __iomem *addr)
                __iounmap(addr);
 }
 
-static inline void __iomem *__io(unsigned long addr)
-{
-       return (void __iomem *)addr;
-}
-
 #define __arch_ioremap(p, s, m)        __arch_ioremap(p, s, m)
 #define __arch_iounmap(a)      __arch_iounmap(a)
-#define __io(a)                        __io(a)
+#define __io(a)                        __typesafe_io(a)
 #define __mem_pci(a)           (a)
 
 
index c6206f25839d16ed65f0990ce266fa2467ea1567..cbf0904540ea4ed2d930a4e348b9f292f15aeffd 100644 (file)
@@ -15,7 +15,7 @@
 
 #define IO_SPACE_LIMIT 0xffffffff
 
-#define __io(a)                        ((void __iomem *)(a))
-#define __mem_pci(a)           (a)
+#define __io(a)                __typesafe_io(a)
+#define __mem_pci(a)   (a)
 
 #endif
index 38cb2123e9b2bfa3e12c84683c217b8a3432f192..262691fb97d86c2ce36de96d7e180a35b4906298 100644 (file)
@@ -12,7 +12,7 @@
  * We don't actually have real ISA nor PCI buses, but there is so many
  * drivers out there that might just work if we fake them...
  */
-#define __io(a)                        ((void __iomem *)(a))
-#define __mem_pci(a)           (a)
+#define __io(a)                __typesafe_io(a)
+#define __mem_pci(a)   (a)
 
 #endif
index aa069424d3101d36d5c4bce47947fc47e409d90e..f05bcdf605d8815364c20133ce30c062bd721b9f 100644 (file)
 
 #define IO_SPACE_LIMIT 0xffffffff
 
-static inline void __iomem *__io(unsigned long addr)
-{
-       return (void __iomem *)addr;
-}
-
-#define __io(a)                        __io(a)
-#define __mem_pci(a)           (a)
+#define __io(a)                __typesafe_io(a)
+#define __mem_pci(a)   (a)
 
 #endif
index 0c070a6149bcb4a845c8b35360d9eecefdff76c6..d8b43f3dcd2d92d6b6e72a59ed05f6d028b12622 100644 (file)
  * We don't actually have real ISA nor PCI buses, but there is so many 
  * drivers out there that might just work if we fake them...
  */
-static inline void __iomem *__io(unsigned long addr)
-{
-       return (void __iomem *)addr;
-}
-#define __io(a)                        __io(a)
-#define __mem_pci(a)           (a)
+#define __io(a)                __typesafe_io(a)
+#define __mem_pci(a)   (a)
 
 #endif
index c0b9dd1d025759a4d893fefc9ac73c065aa57523..f067c14c7182982850e2179adc94b4298185d866 100644 (file)
 
 #define IO_SPACE_LIMIT 0xffffffff
 
-static inline void __iomem *__io(unsigned long addr)
-{
-       return (void __iomem *)addr;
-}
-#define __io(a)        __io(a)
-#define __mem_pci(a)           (a)
+#define __io(a)                __typesafe_io(a)
+#define __mem_pci(a)   (a)
 
 #endif
index 5d4cb11964411ce924cbb44392cd7788f07defe2..c0cb267e74037c7145563b7be7a8bc2dd91d2377 100644 (file)
@@ -35,8 +35,8 @@ __mx3_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype)
 #endif
 
 /* io address mapping macro */
-#define __io(a)                        ((void __iomem *)(a))
+#define __io(a)                __typesafe_io(a)
 
-#define __mem_pci(a)           (a)
+#define __mem_pci(a)   (a)
 
 #endif
index adc83b7b82052f296dae128af5597084ed1c1e45..d92bf7964481c5f39dffeeea8f2be507e1ec2065 100644 (file)
@@ -42,8 +42,8 @@
  * We don't actually have real ISA nor PCI buses, but there is so many
  * drivers out there that might just work if we fake them...
  */
-#define __io(a)                        ((void __iomem *)(PCIO_BASE + (a)))
-#define __mem_pci(a)           (a)
+#define __io(a)                __typesafe_io(a)
+#define __mem_pci(a)   (a)
 
 /*
  * ----------------------------------------------------------------------------
@@ -51,8 +51,6 @@
  * ----------------------------------------------------------------------------
  */
 
-#define PCIO_BASE      0
-
 #if defined(CONFIG_ARCH_OMAP1)
 
 #define IO_PHYS                        0xFFFB0000