162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * linux/include/asm-m68k/io.h 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * 4/1/00 RZ: - rewritten to avoid clashes between ISA/PCI and other 662306a36Sopenharmony_ci * IO access 762306a36Sopenharmony_ci * - added Q40 support 862306a36Sopenharmony_ci * - added skeleton for GG-II and Amiga PCMCIA 962306a36Sopenharmony_ci * 2/3/01 RZ: - moved a few more defs into raw_io.h 1062306a36Sopenharmony_ci * 1162306a36Sopenharmony_ci * inX/outX should not be used by any driver unless it does 1262306a36Sopenharmony_ci * ISA access. Other drivers should use function defined in raw_io.h 1362306a36Sopenharmony_ci * or define its own macros on top of these. 1462306a36Sopenharmony_ci * 1562306a36Sopenharmony_ci * inX(),outX() are for ISA I/O 1662306a36Sopenharmony_ci * isa_readX(),isa_writeX() are for ISA memory 1762306a36Sopenharmony_ci */ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#ifndef _M68K_IO_MM_H 2062306a36Sopenharmony_ci#define _M68K_IO_MM_H 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci#ifdef __KERNEL__ 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci#include <linux/compiler.h> 2562306a36Sopenharmony_ci#include <asm/raw_io.h> 2662306a36Sopenharmony_ci#include <asm/virtconvert.h> 2762306a36Sopenharmony_ci#include <asm/kmap.h> 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci#ifdef CONFIG_ATARI 3062306a36Sopenharmony_ci#define atari_readb raw_inb 3162306a36Sopenharmony_ci#define atari_writeb raw_outb 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci#define atari_inb_p raw_inb 3462306a36Sopenharmony_ci#define atari_outb_p raw_outb 3562306a36Sopenharmony_ci#endif 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci/* 3962306a36Sopenharmony_ci * IO/MEM definitions for various ISA bridges 4062306a36Sopenharmony_ci */ 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci#ifdef CONFIG_Q40 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci#define q40_isa_io_base 0xff400000 4662306a36Sopenharmony_ci#define q40_isa_mem_base 0xff800000 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci#define Q40_ISA_IO_B(ioaddr) (q40_isa_io_base+1+4*((unsigned long)(ioaddr))) 4962306a36Sopenharmony_ci#define Q40_ISA_IO_W(ioaddr) (q40_isa_io_base+ 4*((unsigned long)(ioaddr))) 5062306a36Sopenharmony_ci#define Q40_ISA_MEM_B(madr) (q40_isa_mem_base+1+4*((unsigned long)(madr))) 5162306a36Sopenharmony_ci#define Q40_ISA_MEM_W(madr) (q40_isa_mem_base+ 4*((unsigned long)(madr))) 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci#define MULTI_ISA 0 5462306a36Sopenharmony_ci#endif /* Q40 */ 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 5762306a36Sopenharmony_ci#include <asm/amigayle.h> 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci#define AG_ISA_IO_B(ioaddr) ( GAYLE_IO+(ioaddr)+(((ioaddr)&1)*GAYLE_ODD) ) 6062306a36Sopenharmony_ci#define AG_ISA_IO_W(ioaddr) ( GAYLE_IO+(ioaddr) ) 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci#ifndef MULTI_ISA 6362306a36Sopenharmony_ci#define MULTI_ISA 0 6462306a36Sopenharmony_ci#else 6562306a36Sopenharmony_ci#undef MULTI_ISA 6662306a36Sopenharmony_ci#define MULTI_ISA 1 6762306a36Sopenharmony_ci#endif 6862306a36Sopenharmony_ci#endif /* AMIGA_PCMCIA */ 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci#define enec_isa_read_base 0xfffa0000 7362306a36Sopenharmony_ci#define enec_isa_write_base 0xfffb0000 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci#define ENEC_ISA_IO_B(ioaddr) (enec_isa_read_base+((((unsigned long)(ioaddr))&0x7F)<<9)) 7662306a36Sopenharmony_ci#define ENEC_ISA_IO_W(ioaddr) (enec_isa_read_base+((((unsigned long)(ioaddr))&0x7F)<<9)) 7762306a36Sopenharmony_ci#define ENEC_ISA_MEM_B(madr) (enec_isa_read_base+((((unsigned long)(madr))&0x7F)<<9)) 7862306a36Sopenharmony_ci#define ENEC_ISA_MEM_W(madr) (enec_isa_read_base+((((unsigned long)(madr))&0x7F)<<9)) 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci#ifndef MULTI_ISA 8162306a36Sopenharmony_ci#define MULTI_ISA 0 8262306a36Sopenharmony_ci#else 8362306a36Sopenharmony_ci#undef MULTI_ISA 8462306a36Sopenharmony_ci#define MULTI_ISA 1 8562306a36Sopenharmony_ci#endif 8662306a36Sopenharmony_ci#endif /* ATARI_ROM_ISA */ 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci#if defined(CONFIG_ISA) || defined(CONFIG_ATARI_ROM_ISA) 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci#if MULTI_ISA == 0 9262306a36Sopenharmony_ci#undef MULTI_ISA 9362306a36Sopenharmony_ci#endif 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci#define ISA_TYPE_Q40 (1) 9662306a36Sopenharmony_ci#define ISA_TYPE_AG (2) 9762306a36Sopenharmony_ci#define ISA_TYPE_ENEC (3) 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci#if defined(CONFIG_Q40) && !defined(MULTI_ISA) 10062306a36Sopenharmony_ci#define ISA_TYPE ISA_TYPE_Q40 10162306a36Sopenharmony_ci#define ISA_SEX 0 10262306a36Sopenharmony_ci#endif 10362306a36Sopenharmony_ci#if defined(CONFIG_AMIGA_PCMCIA) && !defined(MULTI_ISA) 10462306a36Sopenharmony_ci#define ISA_TYPE ISA_TYPE_AG 10562306a36Sopenharmony_ci#define ISA_SEX 1 10662306a36Sopenharmony_ci#endif 10762306a36Sopenharmony_ci#if defined(CONFIG_ATARI_ROM_ISA) && !defined(MULTI_ISA) 10862306a36Sopenharmony_ci#define ISA_TYPE ISA_TYPE_ENEC 10962306a36Sopenharmony_ci#define ISA_SEX 0 11062306a36Sopenharmony_ci#endif 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci#ifdef MULTI_ISA 11362306a36Sopenharmony_ciextern int isa_type; 11462306a36Sopenharmony_ciextern int isa_sex; 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_ci#define ISA_TYPE isa_type 11762306a36Sopenharmony_ci#define ISA_SEX isa_sex 11862306a36Sopenharmony_ci#endif 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci/* 12162306a36Sopenharmony_ci * define inline addr translation functions. Normally only one variant will 12262306a36Sopenharmony_ci * be compiled in so the case statement will be optimised away 12362306a36Sopenharmony_ci */ 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_cistatic inline u8 __iomem *isa_itb(unsigned long addr) 12662306a36Sopenharmony_ci{ 12762306a36Sopenharmony_ci switch(ISA_TYPE) 12862306a36Sopenharmony_ci { 12962306a36Sopenharmony_ci#ifdef CONFIG_Q40 13062306a36Sopenharmony_ci case ISA_TYPE_Q40: return (u8 __iomem *)Q40_ISA_IO_B(addr); 13162306a36Sopenharmony_ci#endif 13262306a36Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 13362306a36Sopenharmony_ci case ISA_TYPE_AG: return (u8 __iomem *)AG_ISA_IO_B(addr); 13462306a36Sopenharmony_ci#endif 13562306a36Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 13662306a36Sopenharmony_ci case ISA_TYPE_ENEC: return (u8 __iomem *)ENEC_ISA_IO_B(addr); 13762306a36Sopenharmony_ci#endif 13862306a36Sopenharmony_ci default: return NULL; /* avoid warnings, just in case */ 13962306a36Sopenharmony_ci } 14062306a36Sopenharmony_ci} 14162306a36Sopenharmony_cistatic inline u16 __iomem *isa_itw(unsigned long addr) 14262306a36Sopenharmony_ci{ 14362306a36Sopenharmony_ci switch(ISA_TYPE) 14462306a36Sopenharmony_ci { 14562306a36Sopenharmony_ci#ifdef CONFIG_Q40 14662306a36Sopenharmony_ci case ISA_TYPE_Q40: return (u16 __iomem *)Q40_ISA_IO_W(addr); 14762306a36Sopenharmony_ci#endif 14862306a36Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 14962306a36Sopenharmony_ci case ISA_TYPE_AG: return (u16 __iomem *)AG_ISA_IO_W(addr); 15062306a36Sopenharmony_ci#endif 15162306a36Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 15262306a36Sopenharmony_ci case ISA_TYPE_ENEC: return (u16 __iomem *)ENEC_ISA_IO_W(addr); 15362306a36Sopenharmony_ci#endif 15462306a36Sopenharmony_ci default: return NULL; /* avoid warnings, just in case */ 15562306a36Sopenharmony_ci } 15662306a36Sopenharmony_ci} 15762306a36Sopenharmony_cistatic inline u32 __iomem *isa_itl(unsigned long addr) 15862306a36Sopenharmony_ci{ 15962306a36Sopenharmony_ci switch(ISA_TYPE) 16062306a36Sopenharmony_ci { 16162306a36Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 16262306a36Sopenharmony_ci case ISA_TYPE_AG: return (u32 __iomem *)AG_ISA_IO_W(addr); 16362306a36Sopenharmony_ci#endif 16462306a36Sopenharmony_ci default: return 0; /* avoid warnings, just in case */ 16562306a36Sopenharmony_ci } 16662306a36Sopenharmony_ci} 16762306a36Sopenharmony_cistatic inline u8 __iomem *isa_mtb(unsigned long addr) 16862306a36Sopenharmony_ci{ 16962306a36Sopenharmony_ci switch(ISA_TYPE) 17062306a36Sopenharmony_ci { 17162306a36Sopenharmony_ci#ifdef CONFIG_Q40 17262306a36Sopenharmony_ci case ISA_TYPE_Q40: return (u8 __iomem *)Q40_ISA_MEM_B(addr); 17362306a36Sopenharmony_ci#endif 17462306a36Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 17562306a36Sopenharmony_ci case ISA_TYPE_AG: return (u8 __iomem *)addr; 17662306a36Sopenharmony_ci#endif 17762306a36Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 17862306a36Sopenharmony_ci case ISA_TYPE_ENEC: return (u8 __iomem *)ENEC_ISA_MEM_B(addr); 17962306a36Sopenharmony_ci#endif 18062306a36Sopenharmony_ci default: return NULL; /* avoid warnings, just in case */ 18162306a36Sopenharmony_ci } 18262306a36Sopenharmony_ci} 18362306a36Sopenharmony_cistatic inline u16 __iomem *isa_mtw(unsigned long addr) 18462306a36Sopenharmony_ci{ 18562306a36Sopenharmony_ci switch(ISA_TYPE) 18662306a36Sopenharmony_ci { 18762306a36Sopenharmony_ci#ifdef CONFIG_Q40 18862306a36Sopenharmony_ci case ISA_TYPE_Q40: return (u16 __iomem *)Q40_ISA_MEM_W(addr); 18962306a36Sopenharmony_ci#endif 19062306a36Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 19162306a36Sopenharmony_ci case ISA_TYPE_AG: return (u16 __iomem *)addr; 19262306a36Sopenharmony_ci#endif 19362306a36Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 19462306a36Sopenharmony_ci case ISA_TYPE_ENEC: return (u16 __iomem *)ENEC_ISA_MEM_W(addr); 19562306a36Sopenharmony_ci#endif 19662306a36Sopenharmony_ci default: return NULL; /* avoid warnings, just in case */ 19762306a36Sopenharmony_ci } 19862306a36Sopenharmony_ci} 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci#define isa_inb(port) in_8(isa_itb(port)) 20262306a36Sopenharmony_ci#define isa_inw(port) (ISA_SEX ? in_be16(isa_itw(port)) : in_le16(isa_itw(port))) 20362306a36Sopenharmony_ci#define isa_inl(port) (ISA_SEX ? in_be32(isa_itl(port)) : in_le32(isa_itl(port))) 20462306a36Sopenharmony_ci#define isa_outb(val,port) out_8(isa_itb(port),(val)) 20562306a36Sopenharmony_ci#define isa_outw(val,port) (ISA_SEX ? out_be16(isa_itw(port),(val)) : out_le16(isa_itw(port),(val))) 20662306a36Sopenharmony_ci#define isa_outl(val,port) (ISA_SEX ? out_be32(isa_itl(port),(val)) : out_le32(isa_itl(port),(val))) 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci#define isa_readb(p) in_8(isa_mtb((unsigned long)(p))) 20962306a36Sopenharmony_ci#define isa_readw(p) \ 21062306a36Sopenharmony_ci (ISA_SEX ? in_be16(isa_mtw((unsigned long)(p))) \ 21162306a36Sopenharmony_ci : in_le16(isa_mtw((unsigned long)(p)))) 21262306a36Sopenharmony_ci#define isa_writeb(val,p) out_8(isa_mtb((unsigned long)(p)),(val)) 21362306a36Sopenharmony_ci#define isa_writew(val,p) \ 21462306a36Sopenharmony_ci (ISA_SEX ? out_be16(isa_mtw((unsigned long)(p)),(val)) \ 21562306a36Sopenharmony_ci : out_le16(isa_mtw((unsigned long)(p)),(val))) 21662306a36Sopenharmony_ci 21762306a36Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 21862306a36Sopenharmony_ci#define isa_rom_inb(port) rom_in_8(isa_itb(port)) 21962306a36Sopenharmony_ci#define isa_rom_inw(port) \ 22062306a36Sopenharmony_ci (ISA_SEX ? rom_in_be16(isa_itw(port)) \ 22162306a36Sopenharmony_ci : rom_in_le16(isa_itw(port))) 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci#define isa_rom_outb(val, port) rom_out_8(isa_itb(port), (val)) 22462306a36Sopenharmony_ci#define isa_rom_outw(val, port) \ 22562306a36Sopenharmony_ci (ISA_SEX ? rom_out_be16(isa_itw(port), (val)) \ 22662306a36Sopenharmony_ci : rom_out_le16(isa_itw(port), (val))) 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_ci#define isa_rom_readb(p) rom_in_8(isa_mtb((unsigned long)(p))) 22962306a36Sopenharmony_ci#define isa_rom_readw(p) \ 23062306a36Sopenharmony_ci (ISA_SEX ? rom_in_be16(isa_mtw((unsigned long)(p))) \ 23162306a36Sopenharmony_ci : rom_in_le16(isa_mtw((unsigned long)(p)))) 23262306a36Sopenharmony_ci#define isa_rom_readw_swap(p) \ 23362306a36Sopenharmony_ci (ISA_SEX ? rom_in_le16(isa_mtw((unsigned long)(p))) \ 23462306a36Sopenharmony_ci : rom_in_be16(isa_mtw((unsigned long)(p)))) 23562306a36Sopenharmony_ci#define isa_rom_readw_raw(p) rom_in_be16(isa_mtw((unsigned long)(p))) 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ci#define isa_rom_writeb(val, p) rom_out_8(isa_mtb((unsigned long)(p)), (val)) 23862306a36Sopenharmony_ci#define isa_rom_writew(val, p) \ 23962306a36Sopenharmony_ci (ISA_SEX ? rom_out_be16(isa_mtw((unsigned long)(p)), (val)) \ 24062306a36Sopenharmony_ci : rom_out_le16(isa_mtw((unsigned long)(p)), (val))) 24162306a36Sopenharmony_ci#define isa_rom_writew_swap(val, p) \ 24262306a36Sopenharmony_ci (ISA_SEX ? rom_out_le16(isa_mtw((unsigned long)(p)), (val)) \ 24362306a36Sopenharmony_ci : rom_out_be16(isa_mtw((unsigned long)(p)), (val))) 24462306a36Sopenharmony_ci#define isa_rom_writew_raw(val, p) rom_out_be16(isa_mtw((unsigned long)(p)), (val)) 24562306a36Sopenharmony_ci#endif /* CONFIG_ATARI_ROM_ISA */ 24662306a36Sopenharmony_ci 24762306a36Sopenharmony_cistatic inline void isa_delay(void) 24862306a36Sopenharmony_ci{ 24962306a36Sopenharmony_ci switch(ISA_TYPE) 25062306a36Sopenharmony_ci { 25162306a36Sopenharmony_ci#ifdef CONFIG_Q40 25262306a36Sopenharmony_ci case ISA_TYPE_Q40: isa_outb(0,0x80); break; 25362306a36Sopenharmony_ci#endif 25462306a36Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 25562306a36Sopenharmony_ci case ISA_TYPE_AG: break; 25662306a36Sopenharmony_ci#endif 25762306a36Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 25862306a36Sopenharmony_ci case ISA_TYPE_ENEC: break; 25962306a36Sopenharmony_ci#endif 26062306a36Sopenharmony_ci default: break; /* avoid warnings */ 26162306a36Sopenharmony_ci } 26262306a36Sopenharmony_ci} 26362306a36Sopenharmony_ci 26462306a36Sopenharmony_ci#define isa_inb_p(p) ({u8 v=isa_inb(p);isa_delay();v;}) 26562306a36Sopenharmony_ci#define isa_outb_p(v,p) ({isa_outb((v),(p));isa_delay();}) 26662306a36Sopenharmony_ci#define isa_inw_p(p) ({u16 v=isa_inw(p);isa_delay();v;}) 26762306a36Sopenharmony_ci#define isa_outw_p(v,p) ({isa_outw((v),(p));isa_delay();}) 26862306a36Sopenharmony_ci#define isa_inl_p(p) ({u32 v=isa_inl(p);isa_delay();v;}) 26962306a36Sopenharmony_ci#define isa_outl_p(v,p) ({isa_outl((v),(p));isa_delay();}) 27062306a36Sopenharmony_ci 27162306a36Sopenharmony_ci#define isa_insb(port, buf, nr) raw_insb(isa_itb(port), (u8 *)(buf), (nr)) 27262306a36Sopenharmony_ci#define isa_outsb(port, buf, nr) raw_outsb(isa_itb(port), (u8 *)(buf), (nr)) 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_ci#define isa_insw(port, buf, nr) \ 27562306a36Sopenharmony_ci (ISA_SEX ? raw_insw(isa_itw(port), (u16 *)(buf), (nr)) : \ 27662306a36Sopenharmony_ci raw_insw_swapw(isa_itw(port), (u16 *)(buf), (nr))) 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ci#define isa_outsw(port, buf, nr) \ 27962306a36Sopenharmony_ci (ISA_SEX ? raw_outsw(isa_itw(port), (u16 *)(buf), (nr)) : \ 28062306a36Sopenharmony_ci raw_outsw_swapw(isa_itw(port), (u16 *)(buf), (nr))) 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ci#define isa_insl(port, buf, nr) \ 28362306a36Sopenharmony_ci (ISA_SEX ? raw_insl(isa_itl(port), (u32 *)(buf), (nr)) : \ 28462306a36Sopenharmony_ci raw_insw_swapw(isa_itw(port), (u16 *)(buf), (nr)<<1)) 28562306a36Sopenharmony_ci 28662306a36Sopenharmony_ci#define isa_outsl(port, buf, nr) \ 28762306a36Sopenharmony_ci (ISA_SEX ? raw_outsl(isa_itl(port), (u32 *)(buf), (nr)) : \ 28862306a36Sopenharmony_ci raw_outsw_swapw(isa_itw(port), (u16 *)(buf), (nr)<<1)) 28962306a36Sopenharmony_ci 29062306a36Sopenharmony_ci 29162306a36Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 29262306a36Sopenharmony_ci#define isa_rom_inb_p(p) ({ u8 _v = isa_rom_inb(p); isa_delay(); _v; }) 29362306a36Sopenharmony_ci#define isa_rom_inw_p(p) ({ u16 _v = isa_rom_inw(p); isa_delay(); _v; }) 29462306a36Sopenharmony_ci#define isa_rom_outb_p(v, p) ({ isa_rom_outb((v), (p)); isa_delay(); }) 29562306a36Sopenharmony_ci#define isa_rom_outw_p(v, p) ({ isa_rom_outw((v), (p)); isa_delay(); }) 29662306a36Sopenharmony_ci 29762306a36Sopenharmony_ci#define isa_rom_insb(port, buf, nr) raw_rom_insb(isa_itb(port), (u8 *)(buf), (nr)) 29862306a36Sopenharmony_ci 29962306a36Sopenharmony_ci#define isa_rom_insw(port, buf, nr) \ 30062306a36Sopenharmony_ci (ISA_SEX ? raw_rom_insw(isa_itw(port), (u16 *)(buf), (nr)) : \ 30162306a36Sopenharmony_ci raw_rom_insw_swapw(isa_itw(port), (u16 *)(buf), (nr))) 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_ci#define isa_rom_outsb(port, buf, nr) raw_rom_outsb(isa_itb(port), (u8 *)(buf), (nr)) 30462306a36Sopenharmony_ci 30562306a36Sopenharmony_ci#define isa_rom_outsw(port, buf, nr) \ 30662306a36Sopenharmony_ci (ISA_SEX ? raw_rom_outsw(isa_itw(port), (u16 *)(buf), (nr)) : \ 30762306a36Sopenharmony_ci raw_rom_outsw_swapw(isa_itw(port), (u16 *)(buf), (nr))) 30862306a36Sopenharmony_ci#endif /* CONFIG_ATARI_ROM_ISA */ 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_ci#endif /* CONFIG_ISA || CONFIG_ATARI_ROM_ISA */ 31162306a36Sopenharmony_ci 31262306a36Sopenharmony_ci 31362306a36Sopenharmony_ci#if defined(CONFIG_ISA) && !defined(CONFIG_ATARI_ROM_ISA) 31462306a36Sopenharmony_ci#define inb isa_inb 31562306a36Sopenharmony_ci#define inb_p isa_inb_p 31662306a36Sopenharmony_ci#define outb isa_outb 31762306a36Sopenharmony_ci#define outb_p isa_outb_p 31862306a36Sopenharmony_ci#define inw isa_inw 31962306a36Sopenharmony_ci#define inw_p isa_inw_p 32062306a36Sopenharmony_ci#define outw isa_outw 32162306a36Sopenharmony_ci#define outw_p isa_outw_p 32262306a36Sopenharmony_ci#define inl isa_inl 32362306a36Sopenharmony_ci#define inl_p isa_inl_p 32462306a36Sopenharmony_ci#define outl isa_outl 32562306a36Sopenharmony_ci#define outl_p isa_outl_p 32662306a36Sopenharmony_ci#define insb isa_insb 32762306a36Sopenharmony_ci#define insw isa_insw 32862306a36Sopenharmony_ci#define insl isa_insl 32962306a36Sopenharmony_ci#define outsb isa_outsb 33062306a36Sopenharmony_ci#define outsw isa_outsw 33162306a36Sopenharmony_ci#define outsl isa_outsl 33262306a36Sopenharmony_ci#define readb isa_readb 33362306a36Sopenharmony_ci#define readw isa_readw 33462306a36Sopenharmony_ci#define writeb isa_writeb 33562306a36Sopenharmony_ci#define writew isa_writew 33662306a36Sopenharmony_ci#endif /* CONFIG_ISA && !CONFIG_ATARI_ROM_ISA */ 33762306a36Sopenharmony_ci 33862306a36Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 33962306a36Sopenharmony_ci/* 34062306a36Sopenharmony_ci * kernel with both ROM port ISA and IDE compiled in, those have 34162306a36Sopenharmony_ci * conflicting defs for in/out. Simply consider port < 1024 34262306a36Sopenharmony_ci * ROM port ISA and everything else regular ISA for IDE. read,write defined 34362306a36Sopenharmony_ci * below. 34462306a36Sopenharmony_ci */ 34562306a36Sopenharmony_ci#define inb(port) ((port) < 1024 ? isa_rom_inb(port) : in_8(port)) 34662306a36Sopenharmony_ci#define inb_p(port) ((port) < 1024 ? isa_rom_inb_p(port) : in_8(port)) 34762306a36Sopenharmony_ci#define inw(port) ((port) < 1024 ? isa_rom_inw(port) : in_le16(port)) 34862306a36Sopenharmony_ci#define inw_p(port) ((port) < 1024 ? isa_rom_inw_p(port) : in_le16(port)) 34962306a36Sopenharmony_ci#define inl isa_inl 35062306a36Sopenharmony_ci#define inl_p isa_inl_p 35162306a36Sopenharmony_ci 35262306a36Sopenharmony_ci#define outb(val, port) ((port) < 1024 ? isa_rom_outb((val), (port)) : out_8((port), (val))) 35362306a36Sopenharmony_ci#define outb_p(val, port) ((port) < 1024 ? isa_rom_outb_p((val), (port)) : out_8((port), (val))) 35462306a36Sopenharmony_ci#define outw(val, port) ((port) < 1024 ? isa_rom_outw((val), (port)) : out_le16((port), (val))) 35562306a36Sopenharmony_ci#define outw_p(val, port) ((port) < 1024 ? isa_rom_outw_p((val), (port)) : out_le16((port), (val))) 35662306a36Sopenharmony_ci#define outl isa_outl 35762306a36Sopenharmony_ci#define outl_p isa_outl_p 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_ci#define insb(port, buf, nr) ((port) < 1024 ? isa_rom_insb((port), (buf), (nr)) : isa_insb((port), (buf), (nr))) 36062306a36Sopenharmony_ci#define insw(port, buf, nr) ((port) < 1024 ? isa_rom_insw((port), (buf), (nr)) : isa_insw((port), (buf), (nr))) 36162306a36Sopenharmony_ci#define insl isa_insl 36262306a36Sopenharmony_ci#define outsb(port, buf, nr) ((port) < 1024 ? isa_rom_outsb((port), (buf), (nr)) : isa_outsb((port), (buf), (nr))) 36362306a36Sopenharmony_ci#define outsw(port, buf, nr) ((port) < 1024 ? isa_rom_outsw((port), (buf), (nr)) : isa_outsw((port), (buf), (nr))) 36462306a36Sopenharmony_ci#define outsl isa_outsl 36562306a36Sopenharmony_ci 36662306a36Sopenharmony_ci#define readb(addr) in_8(addr) 36762306a36Sopenharmony_ci#define writeb(val, addr) out_8((addr), (val)) 36862306a36Sopenharmony_ci#define readw(addr) in_le16(addr) 36962306a36Sopenharmony_ci#define writew(val, addr) out_le16((addr), (val)) 37062306a36Sopenharmony_ci#endif /* CONFIG_ATARI_ROM_ISA */ 37162306a36Sopenharmony_ci 37262306a36Sopenharmony_ci#define readl(addr) in_le32(addr) 37362306a36Sopenharmony_ci#define writel(val,addr) out_le32((addr),(val)) 37462306a36Sopenharmony_ci 37562306a36Sopenharmony_ci#define readsb(port, buf, nr) raw_insb((port), (u8 *)(buf), (nr)) 37662306a36Sopenharmony_ci#define readsw(port, buf, nr) raw_insw((port), (u16 *)(buf), (nr)) 37762306a36Sopenharmony_ci#define readsl(port, buf, nr) raw_insl((port), (u32 *)(buf), (nr)) 37862306a36Sopenharmony_ci#define writesb(port, buf, nr) raw_outsb((port), (u8 *)(buf), (nr)) 37962306a36Sopenharmony_ci#define writesw(port, buf, nr) raw_outsw((port), (u16 *)(buf), (nr)) 38062306a36Sopenharmony_ci#define writesl(port, buf, nr) raw_outsl((port), (u32 *)(buf), (nr)) 38162306a36Sopenharmony_ci 38262306a36Sopenharmony_ci#ifndef CONFIG_SUN3 38362306a36Sopenharmony_ci#define IO_SPACE_LIMIT 0xffff 38462306a36Sopenharmony_ci#else 38562306a36Sopenharmony_ci#define IO_SPACE_LIMIT 0x0fffffff 38662306a36Sopenharmony_ci#endif 38762306a36Sopenharmony_ci 38862306a36Sopenharmony_ci#endif /* __KERNEL__ */ 38962306a36Sopenharmony_ci 39062306a36Sopenharmony_ci#define __ARCH_HAS_NO_PAGE_ZERO_MAPPED 1 39162306a36Sopenharmony_ci 39262306a36Sopenharmony_ci/* 39362306a36Sopenharmony_ci * Convert a physical pointer to a virtual kernel pointer for /dev/mem 39462306a36Sopenharmony_ci * access 39562306a36Sopenharmony_ci */ 39662306a36Sopenharmony_ci#define xlate_dev_mem_ptr(p) __va(p) 39762306a36Sopenharmony_ci 39862306a36Sopenharmony_ci#define readb_relaxed(addr) readb(addr) 39962306a36Sopenharmony_ci#define readw_relaxed(addr) readw(addr) 40062306a36Sopenharmony_ci#define readl_relaxed(addr) readl(addr) 40162306a36Sopenharmony_ci 40262306a36Sopenharmony_ci#define writeb_relaxed(b, addr) writeb(b, addr) 40362306a36Sopenharmony_ci#define writew_relaxed(b, addr) writew(b, addr) 40462306a36Sopenharmony_ci#define writel_relaxed(b, addr) writel(b, addr) 40562306a36Sopenharmony_ci 40662306a36Sopenharmony_ci#endif /* _M68K_IO_MM_H */ 407