Skip to content

Commit

Permalink
[ARM] Add a common typesafe __io implementation
Browse files Browse the repository at this point in the history
As Al did for Versatile in 2ad4f86,
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>
  • Loading branch information
Russell King authored and Russell King committed Nov 30, 2008
1 parent cd32a48 commit 0560cf5
Show file tree
Hide file tree
Showing 23 changed files with 44 additions and 65 deletions.
8 changes: 8 additions & 0 deletions arch/arm/include/asm/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down
4 changes: 2 additions & 2 deletions arch/arm/mach-aaec2000/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 2 additions & 2 deletions arch/arm/mach-at91/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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__
Expand Down
4 changes: 2 additions & 2 deletions arch/arm/mach-clps711x/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
3 changes: 1 addition & 2 deletions arch/arm/mach-davinci/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
4 changes: 2 additions & 2 deletions arch/arm/mach-ep93xx/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
2 changes: 1 addition & 1 deletion arch/arm/mach-h720x/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion arch/arm/mach-imx/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion arch/arm/mach-ixp4xx/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
4 changes: 2 additions & 2 deletions arch/arm/mach-ks8695/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
8 changes: 2 additions & 6 deletions arch/arm/mach-l7200/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,7 @@
/*
* 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
4 changes: 2 additions & 2 deletions arch/arm/mach-lh7a40x/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
6 changes: 1 addition & 5 deletions arch/arm/mach-msm/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,7 @@

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
2 changes: 1 addition & 1 deletion arch/arm/mach-netx/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion arch/arm/mach-ns9xxx/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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))

Expand Down
7 changes: 1 addition & 6 deletions arch/arm/mach-orion5x/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)


Expand Down
4 changes: 2 additions & 2 deletions arch/arm/mach-pnx4008/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 2 additions & 2 deletions arch/arm/mach-pxa/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
9 changes: 2 additions & 7 deletions arch/arm/mach-realview/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,7 @@

#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
8 changes: 2 additions & 6 deletions arch/arm/mach-sa1100/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,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...
*/
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
8 changes: 2 additions & 6 deletions arch/arm/mach-versatile/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,7 @@

#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
4 changes: 2 additions & 2 deletions arch/arm/plat-mxc/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
6 changes: 2 additions & 4 deletions arch/arm/plat-omap/include/mach/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,15 @@
* 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)

/*
* ----------------------------------------------------------------------------
* I/O mapping
* ----------------------------------------------------------------------------
*/

#define PCIO_BASE 0

#if defined(CONFIG_ARCH_OMAP1)

#define IO_PHYS 0xFFFB0000
Expand Down

0 comments on commit 0560cf5

Please sign in to comment.