xref: /openbmc/linux/arch/sh/include/asm/io_generic.h (revision f15cbe6f1a4b4d9df59142fc8e4abb973302cf44)
1*f15cbe6fSPaul Mundt /*
2*f15cbe6fSPaul Mundt  * Trivial I/O routine definitions, intentionally meant to be included
3*f15cbe6fSPaul Mundt  * multiple times. Ugly I/O routine concatenation helpers taken from
4*f15cbe6fSPaul Mundt  * alpha. Must be included _before_ io.h to avoid preprocessor-induced
5*f15cbe6fSPaul Mundt  * routine mismatch.
6*f15cbe6fSPaul Mundt  */
7*f15cbe6fSPaul Mundt #define IO_CONCAT(a,b)	_IO_CONCAT(a,b)
8*f15cbe6fSPaul Mundt #define _IO_CONCAT(a,b)	a ## _ ## b
9*f15cbe6fSPaul Mundt 
10*f15cbe6fSPaul Mundt #ifndef __IO_PREFIX
11*f15cbe6fSPaul Mundt #error "Don't include this header without a valid system prefix"
12*f15cbe6fSPaul Mundt #endif
13*f15cbe6fSPaul Mundt 
14*f15cbe6fSPaul Mundt u8 IO_CONCAT(__IO_PREFIX,inb)(unsigned long);
15*f15cbe6fSPaul Mundt u16 IO_CONCAT(__IO_PREFIX,inw)(unsigned long);
16*f15cbe6fSPaul Mundt u32 IO_CONCAT(__IO_PREFIX,inl)(unsigned long);
17*f15cbe6fSPaul Mundt 
18*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,outb)(u8, unsigned long);
19*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,outw)(u16, unsigned long);
20*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,outl)(u32, unsigned long);
21*f15cbe6fSPaul Mundt 
22*f15cbe6fSPaul Mundt u8 IO_CONCAT(__IO_PREFIX,inb_p)(unsigned long);
23*f15cbe6fSPaul Mundt u16 IO_CONCAT(__IO_PREFIX,inw_p)(unsigned long);
24*f15cbe6fSPaul Mundt u32 IO_CONCAT(__IO_PREFIX,inl_p)(unsigned long);
25*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,outb_p)(u8, unsigned long);
26*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,outw_p)(u16, unsigned long);
27*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,outl_p)(u32, unsigned long);
28*f15cbe6fSPaul Mundt 
29*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,insb)(unsigned long, void *dst, unsigned long count);
30*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,insw)(unsigned long, void *dst, unsigned long count);
31*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,insl)(unsigned long, void *dst, unsigned long count);
32*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,outsb)(unsigned long, const void *src, unsigned long count);
33*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,outsw)(unsigned long, const void *src, unsigned long count);
34*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,outsl)(unsigned long, const void *src, unsigned long count);
35*f15cbe6fSPaul Mundt 
36*f15cbe6fSPaul Mundt u8 IO_CONCAT(__IO_PREFIX,readb)(void __iomem *);
37*f15cbe6fSPaul Mundt u16 IO_CONCAT(__IO_PREFIX,readw)(void __iomem *);
38*f15cbe6fSPaul Mundt u32 IO_CONCAT(__IO_PREFIX,readl)(void __iomem *);
39*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,writeb)(u8, void __iomem *);
40*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,writew)(u16, void __iomem *);
41*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,writel)(u32, void __iomem *);
42*f15cbe6fSPaul Mundt 
43*f15cbe6fSPaul Mundt void *IO_CONCAT(__IO_PREFIX,ioremap)(unsigned long offset, unsigned long size);
44*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,iounmap)(void *addr);
45*f15cbe6fSPaul Mundt 
46*f15cbe6fSPaul Mundt void __iomem *IO_CONCAT(__IO_PREFIX,ioport_map)(unsigned long addr, unsigned int size);
47*f15cbe6fSPaul Mundt void IO_CONCAT(__IO_PREFIX,ioport_unmap)(void __iomem *addr);
48*f15cbe6fSPaul Mundt 
49*f15cbe6fSPaul Mundt #undef __IO_PREFIX
50