xref: /OK3568_Linux_fs/kernel/arch/arm/mach-ebsa110/include/mach/io.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  *  arch/arm/mach-ebsa110/include/mach/io.h
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  *  Copyright (C) 1997,1998 Russell King
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * Modifications:
8*4882a593Smuzhiyun  *  06-Dec-1997	RMK	Created.
9*4882a593Smuzhiyun  */
10*4882a593Smuzhiyun #ifndef __ASM_ARM_ARCH_IO_H
11*4882a593Smuzhiyun #define __ASM_ARM_ARCH_IO_H
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun u8 __inb8(unsigned int port);
14*4882a593Smuzhiyun void __outb8(u8  val, unsigned int port);
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun u8 __inb16(unsigned int port);
17*4882a593Smuzhiyun void __outb16(u8  val, unsigned int port);
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun u16 __inw(unsigned int port);
20*4882a593Smuzhiyun void __outw(u16 val, unsigned int port);
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun u32 __inl(unsigned int port);
23*4882a593Smuzhiyun void __outl(u32 val, unsigned int port);
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun u8  __readb(const volatile void __iomem *addr);
26*4882a593Smuzhiyun u16 __readw(const volatile void __iomem *addr);
27*4882a593Smuzhiyun u32 __readl(const volatile void __iomem *addr);
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun void __writeb(u8  val, volatile void __iomem *addr);
30*4882a593Smuzhiyun void __writew(u16 val, volatile void __iomem *addr);
31*4882a593Smuzhiyun void __writel(u32 val, volatile void __iomem *addr);
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun /*
34*4882a593Smuzhiyun  * Argh, someone forgot the IOCS16 line.  We therefore have to handle
35*4882a593Smuzhiyun  * the byte stearing by selecting the correct byte IO functions here.
36*4882a593Smuzhiyun  */
37*4882a593Smuzhiyun #ifdef ISA_SIXTEEN_BIT_PERIPHERAL
38*4882a593Smuzhiyun #define inb(p) 			__inb16(p)
39*4882a593Smuzhiyun #define outb(v,p)		__outb16(v,p)
40*4882a593Smuzhiyun #else
41*4882a593Smuzhiyun #define inb(p)			__inb8(p)
42*4882a593Smuzhiyun #define outb(v,p)		__outb8(v,p)
43*4882a593Smuzhiyun #endif
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun #define inw(p)			__inw(p)
46*4882a593Smuzhiyun #define outw(v,p)		__outw(v,p)
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun #define inl(p)			__inl(p)
49*4882a593Smuzhiyun #define outl(v,p)		__outl(v,p)
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun #define readb(b)		__readb(b)
52*4882a593Smuzhiyun #define readw(b)		__readw(b)
53*4882a593Smuzhiyun #define readl(b)		__readl(b)
54*4882a593Smuzhiyun #define readb_relaxed(addr)	readb(addr)
55*4882a593Smuzhiyun #define readw_relaxed(addr)	readw(addr)
56*4882a593Smuzhiyun #define readl_relaxed(addr)	readl(addr)
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun #define writeb(v,b)		__writeb(v,b)
59*4882a593Smuzhiyun #define writew(v,b)		__writew(v,b)
60*4882a593Smuzhiyun #define writel(v,b)		__writel(v,b)
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun #define insb insb
63*4882a593Smuzhiyun extern void insb(unsigned int port, void *buf, int sz);
64*4882a593Smuzhiyun #define insw insw
65*4882a593Smuzhiyun extern void insw(unsigned int port, void *buf, int sz);
66*4882a593Smuzhiyun #define insl insl
67*4882a593Smuzhiyun extern void insl(unsigned int port, void *buf, int sz);
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun #define outsb outsb
70*4882a593Smuzhiyun extern void outsb(unsigned int port, const void *buf, int sz);
71*4882a593Smuzhiyun #define outsw outsw
72*4882a593Smuzhiyun extern void outsw(unsigned int port, const void *buf, int sz);
73*4882a593Smuzhiyun #define outsl outsl
74*4882a593Smuzhiyun extern void outsl(unsigned int port, const void *buf, int sz);
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun /* can't support writesb atm */
77*4882a593Smuzhiyun #define writesw writesw
78*4882a593Smuzhiyun extern void writesw(volatile void __iomem *addr, const void *data, int wordlen);
79*4882a593Smuzhiyun #define writesl writesl
80*4882a593Smuzhiyun extern void writesl(volatile void __iomem *addr, const void *data, int longlen);
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun /* can't support readsb atm */
83*4882a593Smuzhiyun #define readsw readsw
84*4882a593Smuzhiyun extern void readsw(const volatile void __iomem *addr, void *data, int wordlen);
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun #define readsl readsl
87*4882a593Smuzhiyun extern void readsl(const volatile void __iomem *addr, void *data, int longlen);
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun #endif
90