1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun * linux/include/asm-m68k/io.h
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * 4/1/00 RZ: - rewritten to avoid clashes between ISA/PCI and other
6*4882a593Smuzhiyun * IO access
7*4882a593Smuzhiyun * - added Q40 support
8*4882a593Smuzhiyun * - added skeleton for GG-II and Amiga PCMCIA
9*4882a593Smuzhiyun * 2/3/01 RZ: - moved a few more defs into raw_io.h
10*4882a593Smuzhiyun *
11*4882a593Smuzhiyun * inX/outX should not be used by any driver unless it does
12*4882a593Smuzhiyun * ISA access. Other drivers should use function defined in raw_io.h
13*4882a593Smuzhiyun * or define its own macros on top of these.
14*4882a593Smuzhiyun *
15*4882a593Smuzhiyun * inX(),outX() are for ISA I/O
16*4882a593Smuzhiyun * isa_readX(),isa_writeX() are for ISA memory
17*4882a593Smuzhiyun */
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun #ifndef _M68K_IO_MM_H
20*4882a593Smuzhiyun #define _M68K_IO_MM_H
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun #ifdef __KERNEL__
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun #include <linux/compiler.h>
25*4882a593Smuzhiyun #include <asm/raw_io.h>
26*4882a593Smuzhiyun #include <asm/virtconvert.h>
27*4882a593Smuzhiyun #include <asm/kmap.h>
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun #include <asm-generic/iomap.h>
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun #ifdef CONFIG_ATARI
32*4882a593Smuzhiyun #define atari_readb raw_inb
33*4882a593Smuzhiyun #define atari_writeb raw_outb
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun #define atari_inb_p raw_inb
36*4882a593Smuzhiyun #define atari_outb_p raw_outb
37*4882a593Smuzhiyun #endif
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun /*
41*4882a593Smuzhiyun * IO/MEM definitions for various ISA bridges
42*4882a593Smuzhiyun */
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun #ifdef CONFIG_Q40
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun #define q40_isa_io_base 0xff400000
48*4882a593Smuzhiyun #define q40_isa_mem_base 0xff800000
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun #define Q40_ISA_IO_B(ioaddr) (q40_isa_io_base+1+4*((unsigned long)(ioaddr)))
51*4882a593Smuzhiyun #define Q40_ISA_IO_W(ioaddr) (q40_isa_io_base+ 4*((unsigned long)(ioaddr)))
52*4882a593Smuzhiyun #define Q40_ISA_MEM_B(madr) (q40_isa_mem_base+1+4*((unsigned long)(madr)))
53*4882a593Smuzhiyun #define Q40_ISA_MEM_W(madr) (q40_isa_mem_base+ 4*((unsigned long)(madr)))
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun #define MULTI_ISA 0
56*4882a593Smuzhiyun #endif /* Q40 */
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun #ifdef CONFIG_AMIGA_PCMCIA
59*4882a593Smuzhiyun #include <asm/amigayle.h>
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun #define AG_ISA_IO_B(ioaddr) ( GAYLE_IO+(ioaddr)+(((ioaddr)&1)*GAYLE_ODD) )
62*4882a593Smuzhiyun #define AG_ISA_IO_W(ioaddr) ( GAYLE_IO+(ioaddr) )
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun #ifndef MULTI_ISA
65*4882a593Smuzhiyun #define MULTI_ISA 0
66*4882a593Smuzhiyun #else
67*4882a593Smuzhiyun #undef MULTI_ISA
68*4882a593Smuzhiyun #define MULTI_ISA 1
69*4882a593Smuzhiyun #endif
70*4882a593Smuzhiyun #endif /* AMIGA_PCMCIA */
71*4882a593Smuzhiyun
72*4882a593Smuzhiyun #ifdef CONFIG_ATARI_ROM_ISA
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun #define enec_isa_read_base 0xfffa0000
75*4882a593Smuzhiyun #define enec_isa_write_base 0xfffb0000
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun #define ENEC_ISA_IO_B(ioaddr) (enec_isa_read_base+((((unsigned long)(ioaddr))&0x7F)<<9))
78*4882a593Smuzhiyun #define ENEC_ISA_IO_W(ioaddr) (enec_isa_read_base+((((unsigned long)(ioaddr))&0x7F)<<9))
79*4882a593Smuzhiyun #define ENEC_ISA_MEM_B(madr) (enec_isa_read_base+((((unsigned long)(madr))&0x7F)<<9))
80*4882a593Smuzhiyun #define ENEC_ISA_MEM_W(madr) (enec_isa_read_base+((((unsigned long)(madr))&0x7F)<<9))
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun #ifndef MULTI_ISA
83*4882a593Smuzhiyun #define MULTI_ISA 0
84*4882a593Smuzhiyun #else
85*4882a593Smuzhiyun #undef MULTI_ISA
86*4882a593Smuzhiyun #define MULTI_ISA 1
87*4882a593Smuzhiyun #endif
88*4882a593Smuzhiyun #endif /* ATARI_ROM_ISA */
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun #if defined(CONFIG_ISA) || defined(CONFIG_ATARI_ROM_ISA)
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun #if MULTI_ISA == 0
94*4882a593Smuzhiyun #undef MULTI_ISA
95*4882a593Smuzhiyun #endif
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun #define ISA_TYPE_Q40 (1)
98*4882a593Smuzhiyun #define ISA_TYPE_AG (2)
99*4882a593Smuzhiyun #define ISA_TYPE_ENEC (3)
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun #if defined(CONFIG_Q40) && !defined(MULTI_ISA)
102*4882a593Smuzhiyun #define ISA_TYPE ISA_TYPE_Q40
103*4882a593Smuzhiyun #define ISA_SEX 0
104*4882a593Smuzhiyun #endif
105*4882a593Smuzhiyun #if defined(CONFIG_AMIGA_PCMCIA) && !defined(MULTI_ISA)
106*4882a593Smuzhiyun #define ISA_TYPE ISA_TYPE_AG
107*4882a593Smuzhiyun #define ISA_SEX 1
108*4882a593Smuzhiyun #endif
109*4882a593Smuzhiyun #if defined(CONFIG_ATARI_ROM_ISA) && !defined(MULTI_ISA)
110*4882a593Smuzhiyun #define ISA_TYPE ISA_TYPE_ENEC
111*4882a593Smuzhiyun #define ISA_SEX 0
112*4882a593Smuzhiyun #endif
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun #ifdef MULTI_ISA
115*4882a593Smuzhiyun extern int isa_type;
116*4882a593Smuzhiyun extern int isa_sex;
117*4882a593Smuzhiyun
118*4882a593Smuzhiyun #define ISA_TYPE isa_type
119*4882a593Smuzhiyun #define ISA_SEX isa_sex
120*4882a593Smuzhiyun #endif
121*4882a593Smuzhiyun
122*4882a593Smuzhiyun /*
123*4882a593Smuzhiyun * define inline addr translation functions. Normally only one variant will
124*4882a593Smuzhiyun * be compiled in so the case statement will be optimised away
125*4882a593Smuzhiyun */
126*4882a593Smuzhiyun
isa_itb(unsigned long addr)127*4882a593Smuzhiyun static inline u8 __iomem *isa_itb(unsigned long addr)
128*4882a593Smuzhiyun {
129*4882a593Smuzhiyun switch(ISA_TYPE)
130*4882a593Smuzhiyun {
131*4882a593Smuzhiyun #ifdef CONFIG_Q40
132*4882a593Smuzhiyun case ISA_TYPE_Q40: return (u8 __iomem *)Q40_ISA_IO_B(addr);
133*4882a593Smuzhiyun #endif
134*4882a593Smuzhiyun #ifdef CONFIG_AMIGA_PCMCIA
135*4882a593Smuzhiyun case ISA_TYPE_AG: return (u8 __iomem *)AG_ISA_IO_B(addr);
136*4882a593Smuzhiyun #endif
137*4882a593Smuzhiyun #ifdef CONFIG_ATARI_ROM_ISA
138*4882a593Smuzhiyun case ISA_TYPE_ENEC: return (u8 __iomem *)ENEC_ISA_IO_B(addr);
139*4882a593Smuzhiyun #endif
140*4882a593Smuzhiyun default: return NULL; /* avoid warnings, just in case */
141*4882a593Smuzhiyun }
142*4882a593Smuzhiyun }
isa_itw(unsigned long addr)143*4882a593Smuzhiyun static inline u16 __iomem *isa_itw(unsigned long addr)
144*4882a593Smuzhiyun {
145*4882a593Smuzhiyun switch(ISA_TYPE)
146*4882a593Smuzhiyun {
147*4882a593Smuzhiyun #ifdef CONFIG_Q40
148*4882a593Smuzhiyun case ISA_TYPE_Q40: return (u16 __iomem *)Q40_ISA_IO_W(addr);
149*4882a593Smuzhiyun #endif
150*4882a593Smuzhiyun #ifdef CONFIG_AMIGA_PCMCIA
151*4882a593Smuzhiyun case ISA_TYPE_AG: return (u16 __iomem *)AG_ISA_IO_W(addr);
152*4882a593Smuzhiyun #endif
153*4882a593Smuzhiyun #ifdef CONFIG_ATARI_ROM_ISA
154*4882a593Smuzhiyun case ISA_TYPE_ENEC: return (u16 __iomem *)ENEC_ISA_IO_W(addr);
155*4882a593Smuzhiyun #endif
156*4882a593Smuzhiyun default: return NULL; /* avoid warnings, just in case */
157*4882a593Smuzhiyun }
158*4882a593Smuzhiyun }
isa_itl(unsigned long addr)159*4882a593Smuzhiyun static inline u32 __iomem *isa_itl(unsigned long addr)
160*4882a593Smuzhiyun {
161*4882a593Smuzhiyun switch(ISA_TYPE)
162*4882a593Smuzhiyun {
163*4882a593Smuzhiyun #ifdef CONFIG_AMIGA_PCMCIA
164*4882a593Smuzhiyun case ISA_TYPE_AG: return (u32 __iomem *)AG_ISA_IO_W(addr);
165*4882a593Smuzhiyun #endif
166*4882a593Smuzhiyun default: return 0; /* avoid warnings, just in case */
167*4882a593Smuzhiyun }
168*4882a593Smuzhiyun }
isa_mtb(unsigned long addr)169*4882a593Smuzhiyun static inline u8 __iomem *isa_mtb(unsigned long addr)
170*4882a593Smuzhiyun {
171*4882a593Smuzhiyun switch(ISA_TYPE)
172*4882a593Smuzhiyun {
173*4882a593Smuzhiyun #ifdef CONFIG_Q40
174*4882a593Smuzhiyun case ISA_TYPE_Q40: return (u8 __iomem *)Q40_ISA_MEM_B(addr);
175*4882a593Smuzhiyun #endif
176*4882a593Smuzhiyun #ifdef CONFIG_AMIGA_PCMCIA
177*4882a593Smuzhiyun case ISA_TYPE_AG: return (u8 __iomem *)addr;
178*4882a593Smuzhiyun #endif
179*4882a593Smuzhiyun #ifdef CONFIG_ATARI_ROM_ISA
180*4882a593Smuzhiyun case ISA_TYPE_ENEC: return (u8 __iomem *)ENEC_ISA_MEM_B(addr);
181*4882a593Smuzhiyun #endif
182*4882a593Smuzhiyun default: return NULL; /* avoid warnings, just in case */
183*4882a593Smuzhiyun }
184*4882a593Smuzhiyun }
isa_mtw(unsigned long addr)185*4882a593Smuzhiyun static inline u16 __iomem *isa_mtw(unsigned long addr)
186*4882a593Smuzhiyun {
187*4882a593Smuzhiyun switch(ISA_TYPE)
188*4882a593Smuzhiyun {
189*4882a593Smuzhiyun #ifdef CONFIG_Q40
190*4882a593Smuzhiyun case ISA_TYPE_Q40: return (u16 __iomem *)Q40_ISA_MEM_W(addr);
191*4882a593Smuzhiyun #endif
192*4882a593Smuzhiyun #ifdef CONFIG_AMIGA_PCMCIA
193*4882a593Smuzhiyun case ISA_TYPE_AG: return (u16 __iomem *)addr;
194*4882a593Smuzhiyun #endif
195*4882a593Smuzhiyun #ifdef CONFIG_ATARI_ROM_ISA
196*4882a593Smuzhiyun case ISA_TYPE_ENEC: return (u16 __iomem *)ENEC_ISA_MEM_W(addr);
197*4882a593Smuzhiyun #endif
198*4882a593Smuzhiyun default: return NULL; /* avoid warnings, just in case */
199*4882a593Smuzhiyun }
200*4882a593Smuzhiyun }
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun
203*4882a593Smuzhiyun #define isa_inb(port) in_8(isa_itb(port))
204*4882a593Smuzhiyun #define isa_inw(port) (ISA_SEX ? in_be16(isa_itw(port)) : in_le16(isa_itw(port)))
205*4882a593Smuzhiyun #define isa_inl(port) (ISA_SEX ? in_be32(isa_itl(port)) : in_le32(isa_itl(port)))
206*4882a593Smuzhiyun #define isa_outb(val,port) out_8(isa_itb(port),(val))
207*4882a593Smuzhiyun #define isa_outw(val,port) (ISA_SEX ? out_be16(isa_itw(port),(val)) : out_le16(isa_itw(port),(val)))
208*4882a593Smuzhiyun #define isa_outl(val,port) (ISA_SEX ? out_be32(isa_itl(port),(val)) : out_le32(isa_itl(port),(val)))
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun #define isa_readb(p) in_8(isa_mtb((unsigned long)(p)))
211*4882a593Smuzhiyun #define isa_readw(p) \
212*4882a593Smuzhiyun (ISA_SEX ? in_be16(isa_mtw((unsigned long)(p))) \
213*4882a593Smuzhiyun : in_le16(isa_mtw((unsigned long)(p))))
214*4882a593Smuzhiyun #define isa_writeb(val,p) out_8(isa_mtb((unsigned long)(p)),(val))
215*4882a593Smuzhiyun #define isa_writew(val,p) \
216*4882a593Smuzhiyun (ISA_SEX ? out_be16(isa_mtw((unsigned long)(p)),(val)) \
217*4882a593Smuzhiyun : out_le16(isa_mtw((unsigned long)(p)),(val)))
218*4882a593Smuzhiyun
219*4882a593Smuzhiyun #ifdef CONFIG_ATARI_ROM_ISA
220*4882a593Smuzhiyun #define isa_rom_inb(port) rom_in_8(isa_itb(port))
221*4882a593Smuzhiyun #define isa_rom_inw(port) \
222*4882a593Smuzhiyun (ISA_SEX ? rom_in_be16(isa_itw(port)) \
223*4882a593Smuzhiyun : rom_in_le16(isa_itw(port)))
224*4882a593Smuzhiyun
225*4882a593Smuzhiyun #define isa_rom_outb(val, port) rom_out_8(isa_itb(port), (val))
226*4882a593Smuzhiyun #define isa_rom_outw(val, port) \
227*4882a593Smuzhiyun (ISA_SEX ? rom_out_be16(isa_itw(port), (val)) \
228*4882a593Smuzhiyun : rom_out_le16(isa_itw(port), (val)))
229*4882a593Smuzhiyun
230*4882a593Smuzhiyun #define isa_rom_readb(p) rom_in_8(isa_mtb((unsigned long)(p)))
231*4882a593Smuzhiyun #define isa_rom_readw(p) \
232*4882a593Smuzhiyun (ISA_SEX ? rom_in_be16(isa_mtw((unsigned long)(p))) \
233*4882a593Smuzhiyun : rom_in_le16(isa_mtw((unsigned long)(p))))
234*4882a593Smuzhiyun #define isa_rom_readw_swap(p) \
235*4882a593Smuzhiyun (ISA_SEX ? rom_in_le16(isa_mtw((unsigned long)(p))) \
236*4882a593Smuzhiyun : rom_in_be16(isa_mtw((unsigned long)(p))))
237*4882a593Smuzhiyun #define isa_rom_readw_raw(p) rom_in_be16(isa_mtw((unsigned long)(p)))
238*4882a593Smuzhiyun
239*4882a593Smuzhiyun #define isa_rom_writeb(val, p) rom_out_8(isa_mtb((unsigned long)(p)), (val))
240*4882a593Smuzhiyun #define isa_rom_writew(val, p) \
241*4882a593Smuzhiyun (ISA_SEX ? rom_out_be16(isa_mtw((unsigned long)(p)), (val)) \
242*4882a593Smuzhiyun : rom_out_le16(isa_mtw((unsigned long)(p)), (val)))
243*4882a593Smuzhiyun #define isa_rom_writew_swap(val, p) \
244*4882a593Smuzhiyun (ISA_SEX ? rom_out_le16(isa_mtw((unsigned long)(p)), (val)) \
245*4882a593Smuzhiyun : rom_out_be16(isa_mtw((unsigned long)(p)), (val)))
246*4882a593Smuzhiyun #define isa_rom_writew_raw(val, p) rom_out_be16(isa_mtw((unsigned long)(p)), (val))
247*4882a593Smuzhiyun #endif /* CONFIG_ATARI_ROM_ISA */
248*4882a593Smuzhiyun
isa_delay(void)249*4882a593Smuzhiyun static inline void isa_delay(void)
250*4882a593Smuzhiyun {
251*4882a593Smuzhiyun switch(ISA_TYPE)
252*4882a593Smuzhiyun {
253*4882a593Smuzhiyun #ifdef CONFIG_Q40
254*4882a593Smuzhiyun case ISA_TYPE_Q40: isa_outb(0,0x80); break;
255*4882a593Smuzhiyun #endif
256*4882a593Smuzhiyun #ifdef CONFIG_AMIGA_PCMCIA
257*4882a593Smuzhiyun case ISA_TYPE_AG: break;
258*4882a593Smuzhiyun #endif
259*4882a593Smuzhiyun #ifdef CONFIG_ATARI_ROM_ISA
260*4882a593Smuzhiyun case ISA_TYPE_ENEC: break;
261*4882a593Smuzhiyun #endif
262*4882a593Smuzhiyun default: break; /* avoid warnings */
263*4882a593Smuzhiyun }
264*4882a593Smuzhiyun }
265*4882a593Smuzhiyun
266*4882a593Smuzhiyun #define isa_inb_p(p) ({u8 v=isa_inb(p);isa_delay();v;})
267*4882a593Smuzhiyun #define isa_outb_p(v,p) ({isa_outb((v),(p));isa_delay();})
268*4882a593Smuzhiyun #define isa_inw_p(p) ({u16 v=isa_inw(p);isa_delay();v;})
269*4882a593Smuzhiyun #define isa_outw_p(v,p) ({isa_outw((v),(p));isa_delay();})
270*4882a593Smuzhiyun #define isa_inl_p(p) ({u32 v=isa_inl(p);isa_delay();v;})
271*4882a593Smuzhiyun #define isa_outl_p(v,p) ({isa_outl((v),(p));isa_delay();})
272*4882a593Smuzhiyun
273*4882a593Smuzhiyun #define isa_insb(port, buf, nr) raw_insb(isa_itb(port), (u8 *)(buf), (nr))
274*4882a593Smuzhiyun #define isa_outsb(port, buf, nr) raw_outsb(isa_itb(port), (u8 *)(buf), (nr))
275*4882a593Smuzhiyun
276*4882a593Smuzhiyun #define isa_insw(port, buf, nr) \
277*4882a593Smuzhiyun (ISA_SEX ? raw_insw(isa_itw(port), (u16 *)(buf), (nr)) : \
278*4882a593Smuzhiyun raw_insw_swapw(isa_itw(port), (u16 *)(buf), (nr)))
279*4882a593Smuzhiyun
280*4882a593Smuzhiyun #define isa_outsw(port, buf, nr) \
281*4882a593Smuzhiyun (ISA_SEX ? raw_outsw(isa_itw(port), (u16 *)(buf), (nr)) : \
282*4882a593Smuzhiyun raw_outsw_swapw(isa_itw(port), (u16 *)(buf), (nr)))
283*4882a593Smuzhiyun
284*4882a593Smuzhiyun #define isa_insl(port, buf, nr) \
285*4882a593Smuzhiyun (ISA_SEX ? raw_insl(isa_itl(port), (u32 *)(buf), (nr)) : \
286*4882a593Smuzhiyun raw_insw_swapw(isa_itw(port), (u16 *)(buf), (nr)<<1))
287*4882a593Smuzhiyun
288*4882a593Smuzhiyun #define isa_outsl(port, buf, nr) \
289*4882a593Smuzhiyun (ISA_SEX ? raw_outsl(isa_itl(port), (u32 *)(buf), (nr)) : \
290*4882a593Smuzhiyun raw_outsw_swapw(isa_itw(port), (u16 *)(buf), (nr)<<1))
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun
293*4882a593Smuzhiyun #ifdef CONFIG_ATARI_ROM_ISA
294*4882a593Smuzhiyun #define isa_rom_inb_p(p) ({ u8 _v = isa_rom_inb(p); isa_delay(); _v; })
295*4882a593Smuzhiyun #define isa_rom_inw_p(p) ({ u16 _v = isa_rom_inw(p); isa_delay(); _v; })
296*4882a593Smuzhiyun #define isa_rom_outb_p(v, p) ({ isa_rom_outb((v), (p)); isa_delay(); })
297*4882a593Smuzhiyun #define isa_rom_outw_p(v, p) ({ isa_rom_outw((v), (p)); isa_delay(); })
298*4882a593Smuzhiyun
299*4882a593Smuzhiyun #define isa_rom_insb(port, buf, nr) raw_rom_insb(isa_itb(port), (u8 *)(buf), (nr))
300*4882a593Smuzhiyun
301*4882a593Smuzhiyun #define isa_rom_insw(port, buf, nr) \
302*4882a593Smuzhiyun (ISA_SEX ? raw_rom_insw(isa_itw(port), (u16 *)(buf), (nr)) : \
303*4882a593Smuzhiyun raw_rom_insw_swapw(isa_itw(port), (u16 *)(buf), (nr)))
304*4882a593Smuzhiyun
305*4882a593Smuzhiyun #define isa_rom_outsb(port, buf, nr) raw_rom_outsb(isa_itb(port), (u8 *)(buf), (nr))
306*4882a593Smuzhiyun
307*4882a593Smuzhiyun #define isa_rom_outsw(port, buf, nr) \
308*4882a593Smuzhiyun (ISA_SEX ? raw_rom_outsw(isa_itw(port), (u16 *)(buf), (nr)) : \
309*4882a593Smuzhiyun raw_rom_outsw_swapw(isa_itw(port), (u16 *)(buf), (nr)))
310*4882a593Smuzhiyun #endif /* CONFIG_ATARI_ROM_ISA */
311*4882a593Smuzhiyun
312*4882a593Smuzhiyun #endif /* CONFIG_ISA || CONFIG_ATARI_ROM_ISA */
313*4882a593Smuzhiyun
314*4882a593Smuzhiyun
315*4882a593Smuzhiyun #if defined(CONFIG_ISA) && !defined(CONFIG_ATARI_ROM_ISA)
316*4882a593Smuzhiyun #define inb isa_inb
317*4882a593Smuzhiyun #define inb_p isa_inb_p
318*4882a593Smuzhiyun #define outb isa_outb
319*4882a593Smuzhiyun #define outb_p isa_outb_p
320*4882a593Smuzhiyun #define inw isa_inw
321*4882a593Smuzhiyun #define inw_p isa_inw_p
322*4882a593Smuzhiyun #define outw isa_outw
323*4882a593Smuzhiyun #define outw_p isa_outw_p
324*4882a593Smuzhiyun #define inl isa_inl
325*4882a593Smuzhiyun #define inl_p isa_inl_p
326*4882a593Smuzhiyun #define outl isa_outl
327*4882a593Smuzhiyun #define outl_p isa_outl_p
328*4882a593Smuzhiyun #define insb isa_insb
329*4882a593Smuzhiyun #define insw isa_insw
330*4882a593Smuzhiyun #define insl isa_insl
331*4882a593Smuzhiyun #define outsb isa_outsb
332*4882a593Smuzhiyun #define outsw isa_outsw
333*4882a593Smuzhiyun #define outsl isa_outsl
334*4882a593Smuzhiyun #define readb isa_readb
335*4882a593Smuzhiyun #define readw isa_readw
336*4882a593Smuzhiyun #define writeb isa_writeb
337*4882a593Smuzhiyun #define writew isa_writew
338*4882a593Smuzhiyun #endif /* CONFIG_ISA && !CONFIG_ATARI_ROM_ISA */
339*4882a593Smuzhiyun
340*4882a593Smuzhiyun #ifdef CONFIG_ATARI_ROM_ISA
341*4882a593Smuzhiyun /*
342*4882a593Smuzhiyun * kernel with both ROM port ISA and IDE compiled in, those have
343*4882a593Smuzhiyun * conflicting defs for in/out. Simply consider port < 1024
344*4882a593Smuzhiyun * ROM port ISA and everything else regular ISA for IDE. read,write defined
345*4882a593Smuzhiyun * below.
346*4882a593Smuzhiyun */
347*4882a593Smuzhiyun #define inb(port) ((port) < 1024 ? isa_rom_inb(port) : in_8(port))
348*4882a593Smuzhiyun #define inb_p(port) ((port) < 1024 ? isa_rom_inb_p(port) : in_8(port))
349*4882a593Smuzhiyun #define inw(port) ((port) < 1024 ? isa_rom_inw(port) : in_le16(port))
350*4882a593Smuzhiyun #define inw_p(port) ((port) < 1024 ? isa_rom_inw_p(port) : in_le16(port))
351*4882a593Smuzhiyun #define inl isa_inl
352*4882a593Smuzhiyun #define inl_p isa_inl_p
353*4882a593Smuzhiyun
354*4882a593Smuzhiyun #define outb(val, port) ((port) < 1024 ? isa_rom_outb((val), (port)) : out_8((port), (val)))
355*4882a593Smuzhiyun #define outb_p(val, port) ((port) < 1024 ? isa_rom_outb_p((val), (port)) : out_8((port), (val)))
356*4882a593Smuzhiyun #define outw(val, port) ((port) < 1024 ? isa_rom_outw((val), (port)) : out_le16((port), (val)))
357*4882a593Smuzhiyun #define outw_p(val, port) ((port) < 1024 ? isa_rom_outw_p((val), (port)) : out_le16((port), (val)))
358*4882a593Smuzhiyun #define outl isa_outl
359*4882a593Smuzhiyun #define outl_p isa_outl_p
360*4882a593Smuzhiyun
361*4882a593Smuzhiyun #define insb(port, buf, nr) ((port) < 1024 ? isa_rom_insb((port), (buf), (nr)) : isa_insb((port), (buf), (nr)))
362*4882a593Smuzhiyun #define insw(port, buf, nr) ((port) < 1024 ? isa_rom_insw((port), (buf), (nr)) : isa_insw((port), (buf), (nr)))
363*4882a593Smuzhiyun #define insl isa_insl
364*4882a593Smuzhiyun #define outsb(port, buf, nr) ((port) < 1024 ? isa_rom_outsb((port), (buf), (nr)) : isa_outsb((port), (buf), (nr)))
365*4882a593Smuzhiyun #define outsw(port, buf, nr) ((port) < 1024 ? isa_rom_outsw((port), (buf), (nr)) : isa_outsw((port), (buf), (nr)))
366*4882a593Smuzhiyun #define outsl isa_outsl
367*4882a593Smuzhiyun
368*4882a593Smuzhiyun #define readb(addr) in_8(addr)
369*4882a593Smuzhiyun #define writeb(val, addr) out_8((addr), (val))
370*4882a593Smuzhiyun #define readw(addr) in_le16(addr)
371*4882a593Smuzhiyun #define writew(val, addr) out_le16((addr), (val))
372*4882a593Smuzhiyun #endif /* CONFIG_ATARI_ROM_ISA */
373*4882a593Smuzhiyun
374*4882a593Smuzhiyun #define readl(addr) in_le32(addr)
375*4882a593Smuzhiyun #define writel(val,addr) out_le32((addr),(val))
376*4882a593Smuzhiyun
377*4882a593Smuzhiyun #define readsb(port, buf, nr) raw_insb((port), (u8 *)(buf), (nr))
378*4882a593Smuzhiyun #define readsw(port, buf, nr) raw_insw((port), (u16 *)(buf), (nr))
379*4882a593Smuzhiyun #define readsl(port, buf, nr) raw_insl((port), (u32 *)(buf), (nr))
380*4882a593Smuzhiyun #define writesb(port, buf, nr) raw_outsb((port), (u8 *)(buf), (nr))
381*4882a593Smuzhiyun #define writesw(port, buf, nr) raw_outsw((port), (u16 *)(buf), (nr))
382*4882a593Smuzhiyun #define writesl(port, buf, nr) raw_outsl((port), (u32 *)(buf), (nr))
383*4882a593Smuzhiyun
384*4882a593Smuzhiyun #ifndef CONFIG_SUN3
385*4882a593Smuzhiyun #define IO_SPACE_LIMIT 0xffff
386*4882a593Smuzhiyun #else
387*4882a593Smuzhiyun #define IO_SPACE_LIMIT 0x0fffffff
388*4882a593Smuzhiyun #endif
389*4882a593Smuzhiyun
390*4882a593Smuzhiyun #endif /* __KERNEL__ */
391*4882a593Smuzhiyun
392*4882a593Smuzhiyun #define __ARCH_HAS_NO_PAGE_ZERO_MAPPED 1
393*4882a593Smuzhiyun
394*4882a593Smuzhiyun /*
395*4882a593Smuzhiyun * Convert a physical pointer to a virtual kernel pointer for /dev/mem
396*4882a593Smuzhiyun * access
397*4882a593Smuzhiyun */
398*4882a593Smuzhiyun #define xlate_dev_mem_ptr(p) __va(p)
399*4882a593Smuzhiyun
400*4882a593Smuzhiyun /*
401*4882a593Smuzhiyun * Convert a virtual cached pointer to an uncached pointer
402*4882a593Smuzhiyun */
403*4882a593Smuzhiyun #define xlate_dev_kmem_ptr(p) p
404*4882a593Smuzhiyun
405*4882a593Smuzhiyun #define readb_relaxed(addr) readb(addr)
406*4882a593Smuzhiyun #define readw_relaxed(addr) readw(addr)
407*4882a593Smuzhiyun #define readl_relaxed(addr) readl(addr)
408*4882a593Smuzhiyun
409*4882a593Smuzhiyun #define writeb_relaxed(b, addr) writeb(b, addr)
410*4882a593Smuzhiyun #define writew_relaxed(b, addr) writew(b, addr)
411*4882a593Smuzhiyun #define writel_relaxed(b, addr) writel(b, addr)
412*4882a593Smuzhiyun
413*4882a593Smuzhiyun #endif /* _M68K_IO_MM_H */
414