18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * linux/include/asm-m68k/io.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * 4/1/00 RZ: - rewritten to avoid clashes between ISA/PCI and other 68c2ecf20Sopenharmony_ci * IO access 78c2ecf20Sopenharmony_ci * - added Q40 support 88c2ecf20Sopenharmony_ci * - added skeleton for GG-II and Amiga PCMCIA 98c2ecf20Sopenharmony_ci * 2/3/01 RZ: - moved a few more defs into raw_io.h 108c2ecf20Sopenharmony_ci * 118c2ecf20Sopenharmony_ci * inX/outX should not be used by any driver unless it does 128c2ecf20Sopenharmony_ci * ISA access. Other drivers should use function defined in raw_io.h 138c2ecf20Sopenharmony_ci * or define its own macros on top of these. 148c2ecf20Sopenharmony_ci * 158c2ecf20Sopenharmony_ci * inX(),outX() are for ISA I/O 168c2ecf20Sopenharmony_ci * isa_readX(),isa_writeX() are for ISA memory 178c2ecf20Sopenharmony_ci */ 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci#ifndef _M68K_IO_MM_H 208c2ecf20Sopenharmony_ci#define _M68K_IO_MM_H 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci#ifdef __KERNEL__ 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci#include <linux/compiler.h> 258c2ecf20Sopenharmony_ci#include <asm/raw_io.h> 268c2ecf20Sopenharmony_ci#include <asm/virtconvert.h> 278c2ecf20Sopenharmony_ci#include <asm/kmap.h> 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci#include <asm-generic/iomap.h> 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci#ifdef CONFIG_ATARI 328c2ecf20Sopenharmony_ci#define atari_readb raw_inb 338c2ecf20Sopenharmony_ci#define atari_writeb raw_outb 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci#define atari_inb_p raw_inb 368c2ecf20Sopenharmony_ci#define atari_outb_p raw_outb 378c2ecf20Sopenharmony_ci#endif 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci/* 418c2ecf20Sopenharmony_ci * IO/MEM definitions for various ISA bridges 428c2ecf20Sopenharmony_ci */ 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci#ifdef CONFIG_Q40 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci#define q40_isa_io_base 0xff400000 488c2ecf20Sopenharmony_ci#define q40_isa_mem_base 0xff800000 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci#define Q40_ISA_IO_B(ioaddr) (q40_isa_io_base+1+4*((unsigned long)(ioaddr))) 518c2ecf20Sopenharmony_ci#define Q40_ISA_IO_W(ioaddr) (q40_isa_io_base+ 4*((unsigned long)(ioaddr))) 528c2ecf20Sopenharmony_ci#define Q40_ISA_MEM_B(madr) (q40_isa_mem_base+1+4*((unsigned long)(madr))) 538c2ecf20Sopenharmony_ci#define Q40_ISA_MEM_W(madr) (q40_isa_mem_base+ 4*((unsigned long)(madr))) 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci#define MULTI_ISA 0 568c2ecf20Sopenharmony_ci#endif /* Q40 */ 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 598c2ecf20Sopenharmony_ci#include <asm/amigayle.h> 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci#define AG_ISA_IO_B(ioaddr) ( GAYLE_IO+(ioaddr)+(((ioaddr)&1)*GAYLE_ODD) ) 628c2ecf20Sopenharmony_ci#define AG_ISA_IO_W(ioaddr) ( GAYLE_IO+(ioaddr) ) 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_ci#ifndef MULTI_ISA 658c2ecf20Sopenharmony_ci#define MULTI_ISA 0 668c2ecf20Sopenharmony_ci#else 678c2ecf20Sopenharmony_ci#undef MULTI_ISA 688c2ecf20Sopenharmony_ci#define MULTI_ISA 1 698c2ecf20Sopenharmony_ci#endif 708c2ecf20Sopenharmony_ci#endif /* AMIGA_PCMCIA */ 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci#define enec_isa_read_base 0xfffa0000 758c2ecf20Sopenharmony_ci#define enec_isa_write_base 0xfffb0000 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci#define ENEC_ISA_IO_B(ioaddr) (enec_isa_read_base+((((unsigned long)(ioaddr))&0x7F)<<9)) 788c2ecf20Sopenharmony_ci#define ENEC_ISA_IO_W(ioaddr) (enec_isa_read_base+((((unsigned long)(ioaddr))&0x7F)<<9)) 798c2ecf20Sopenharmony_ci#define ENEC_ISA_MEM_B(madr) (enec_isa_read_base+((((unsigned long)(madr))&0x7F)<<9)) 808c2ecf20Sopenharmony_ci#define ENEC_ISA_MEM_W(madr) (enec_isa_read_base+((((unsigned long)(madr))&0x7F)<<9)) 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ci#ifndef MULTI_ISA 838c2ecf20Sopenharmony_ci#define MULTI_ISA 0 848c2ecf20Sopenharmony_ci#else 858c2ecf20Sopenharmony_ci#undef MULTI_ISA 868c2ecf20Sopenharmony_ci#define MULTI_ISA 1 878c2ecf20Sopenharmony_ci#endif 888c2ecf20Sopenharmony_ci#endif /* ATARI_ROM_ISA */ 898c2ecf20Sopenharmony_ci 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci#if defined(CONFIG_ISA) || defined(CONFIG_ATARI_ROM_ISA) 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ci#if MULTI_ISA == 0 948c2ecf20Sopenharmony_ci#undef MULTI_ISA 958c2ecf20Sopenharmony_ci#endif 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_ci#define ISA_TYPE_Q40 (1) 988c2ecf20Sopenharmony_ci#define ISA_TYPE_AG (2) 998c2ecf20Sopenharmony_ci#define ISA_TYPE_ENEC (3) 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_ci#if defined(CONFIG_Q40) && !defined(MULTI_ISA) 1028c2ecf20Sopenharmony_ci#define ISA_TYPE ISA_TYPE_Q40 1038c2ecf20Sopenharmony_ci#define ISA_SEX 0 1048c2ecf20Sopenharmony_ci#endif 1058c2ecf20Sopenharmony_ci#if defined(CONFIG_AMIGA_PCMCIA) && !defined(MULTI_ISA) 1068c2ecf20Sopenharmony_ci#define ISA_TYPE ISA_TYPE_AG 1078c2ecf20Sopenharmony_ci#define ISA_SEX 1 1088c2ecf20Sopenharmony_ci#endif 1098c2ecf20Sopenharmony_ci#if defined(CONFIG_ATARI_ROM_ISA) && !defined(MULTI_ISA) 1108c2ecf20Sopenharmony_ci#define ISA_TYPE ISA_TYPE_ENEC 1118c2ecf20Sopenharmony_ci#define ISA_SEX 0 1128c2ecf20Sopenharmony_ci#endif 1138c2ecf20Sopenharmony_ci 1148c2ecf20Sopenharmony_ci#ifdef MULTI_ISA 1158c2ecf20Sopenharmony_ciextern int isa_type; 1168c2ecf20Sopenharmony_ciextern int isa_sex; 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_ci#define ISA_TYPE isa_type 1198c2ecf20Sopenharmony_ci#define ISA_SEX isa_sex 1208c2ecf20Sopenharmony_ci#endif 1218c2ecf20Sopenharmony_ci 1228c2ecf20Sopenharmony_ci/* 1238c2ecf20Sopenharmony_ci * define inline addr translation functions. Normally only one variant will 1248c2ecf20Sopenharmony_ci * be compiled in so the case statement will be optimised away 1258c2ecf20Sopenharmony_ci */ 1268c2ecf20Sopenharmony_ci 1278c2ecf20Sopenharmony_cistatic inline u8 __iomem *isa_itb(unsigned long addr) 1288c2ecf20Sopenharmony_ci{ 1298c2ecf20Sopenharmony_ci switch(ISA_TYPE) 1308c2ecf20Sopenharmony_ci { 1318c2ecf20Sopenharmony_ci#ifdef CONFIG_Q40 1328c2ecf20Sopenharmony_ci case ISA_TYPE_Q40: return (u8 __iomem *)Q40_ISA_IO_B(addr); 1338c2ecf20Sopenharmony_ci#endif 1348c2ecf20Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 1358c2ecf20Sopenharmony_ci case ISA_TYPE_AG: return (u8 __iomem *)AG_ISA_IO_B(addr); 1368c2ecf20Sopenharmony_ci#endif 1378c2ecf20Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 1388c2ecf20Sopenharmony_ci case ISA_TYPE_ENEC: return (u8 __iomem *)ENEC_ISA_IO_B(addr); 1398c2ecf20Sopenharmony_ci#endif 1408c2ecf20Sopenharmony_ci default: return NULL; /* avoid warnings, just in case */ 1418c2ecf20Sopenharmony_ci } 1428c2ecf20Sopenharmony_ci} 1438c2ecf20Sopenharmony_cistatic inline u16 __iomem *isa_itw(unsigned long addr) 1448c2ecf20Sopenharmony_ci{ 1458c2ecf20Sopenharmony_ci switch(ISA_TYPE) 1468c2ecf20Sopenharmony_ci { 1478c2ecf20Sopenharmony_ci#ifdef CONFIG_Q40 1488c2ecf20Sopenharmony_ci case ISA_TYPE_Q40: return (u16 __iomem *)Q40_ISA_IO_W(addr); 1498c2ecf20Sopenharmony_ci#endif 1508c2ecf20Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 1518c2ecf20Sopenharmony_ci case ISA_TYPE_AG: return (u16 __iomem *)AG_ISA_IO_W(addr); 1528c2ecf20Sopenharmony_ci#endif 1538c2ecf20Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 1548c2ecf20Sopenharmony_ci case ISA_TYPE_ENEC: return (u16 __iomem *)ENEC_ISA_IO_W(addr); 1558c2ecf20Sopenharmony_ci#endif 1568c2ecf20Sopenharmony_ci default: return NULL; /* avoid warnings, just in case */ 1578c2ecf20Sopenharmony_ci } 1588c2ecf20Sopenharmony_ci} 1598c2ecf20Sopenharmony_cistatic inline u32 __iomem *isa_itl(unsigned long addr) 1608c2ecf20Sopenharmony_ci{ 1618c2ecf20Sopenharmony_ci switch(ISA_TYPE) 1628c2ecf20Sopenharmony_ci { 1638c2ecf20Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 1648c2ecf20Sopenharmony_ci case ISA_TYPE_AG: return (u32 __iomem *)AG_ISA_IO_W(addr); 1658c2ecf20Sopenharmony_ci#endif 1668c2ecf20Sopenharmony_ci default: return 0; /* avoid warnings, just in case */ 1678c2ecf20Sopenharmony_ci } 1688c2ecf20Sopenharmony_ci} 1698c2ecf20Sopenharmony_cistatic inline u8 __iomem *isa_mtb(unsigned long addr) 1708c2ecf20Sopenharmony_ci{ 1718c2ecf20Sopenharmony_ci switch(ISA_TYPE) 1728c2ecf20Sopenharmony_ci { 1738c2ecf20Sopenharmony_ci#ifdef CONFIG_Q40 1748c2ecf20Sopenharmony_ci case ISA_TYPE_Q40: return (u8 __iomem *)Q40_ISA_MEM_B(addr); 1758c2ecf20Sopenharmony_ci#endif 1768c2ecf20Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 1778c2ecf20Sopenharmony_ci case ISA_TYPE_AG: return (u8 __iomem *)addr; 1788c2ecf20Sopenharmony_ci#endif 1798c2ecf20Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 1808c2ecf20Sopenharmony_ci case ISA_TYPE_ENEC: return (u8 __iomem *)ENEC_ISA_MEM_B(addr); 1818c2ecf20Sopenharmony_ci#endif 1828c2ecf20Sopenharmony_ci default: return NULL; /* avoid warnings, just in case */ 1838c2ecf20Sopenharmony_ci } 1848c2ecf20Sopenharmony_ci} 1858c2ecf20Sopenharmony_cistatic inline u16 __iomem *isa_mtw(unsigned long addr) 1868c2ecf20Sopenharmony_ci{ 1878c2ecf20Sopenharmony_ci switch(ISA_TYPE) 1888c2ecf20Sopenharmony_ci { 1898c2ecf20Sopenharmony_ci#ifdef CONFIG_Q40 1908c2ecf20Sopenharmony_ci case ISA_TYPE_Q40: return (u16 __iomem *)Q40_ISA_MEM_W(addr); 1918c2ecf20Sopenharmony_ci#endif 1928c2ecf20Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 1938c2ecf20Sopenharmony_ci case ISA_TYPE_AG: return (u16 __iomem *)addr; 1948c2ecf20Sopenharmony_ci#endif 1958c2ecf20Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 1968c2ecf20Sopenharmony_ci case ISA_TYPE_ENEC: return (u16 __iomem *)ENEC_ISA_MEM_W(addr); 1978c2ecf20Sopenharmony_ci#endif 1988c2ecf20Sopenharmony_ci default: return NULL; /* avoid warnings, just in case */ 1998c2ecf20Sopenharmony_ci } 2008c2ecf20Sopenharmony_ci} 2018c2ecf20Sopenharmony_ci 2028c2ecf20Sopenharmony_ci 2038c2ecf20Sopenharmony_ci#define isa_inb(port) in_8(isa_itb(port)) 2048c2ecf20Sopenharmony_ci#define isa_inw(port) (ISA_SEX ? in_be16(isa_itw(port)) : in_le16(isa_itw(port))) 2058c2ecf20Sopenharmony_ci#define isa_inl(port) (ISA_SEX ? in_be32(isa_itl(port)) : in_le32(isa_itl(port))) 2068c2ecf20Sopenharmony_ci#define isa_outb(val,port) out_8(isa_itb(port),(val)) 2078c2ecf20Sopenharmony_ci#define isa_outw(val,port) (ISA_SEX ? out_be16(isa_itw(port),(val)) : out_le16(isa_itw(port),(val))) 2088c2ecf20Sopenharmony_ci#define isa_outl(val,port) (ISA_SEX ? out_be32(isa_itl(port),(val)) : out_le32(isa_itl(port),(val))) 2098c2ecf20Sopenharmony_ci 2108c2ecf20Sopenharmony_ci#define isa_readb(p) in_8(isa_mtb((unsigned long)(p))) 2118c2ecf20Sopenharmony_ci#define isa_readw(p) \ 2128c2ecf20Sopenharmony_ci (ISA_SEX ? in_be16(isa_mtw((unsigned long)(p))) \ 2138c2ecf20Sopenharmony_ci : in_le16(isa_mtw((unsigned long)(p)))) 2148c2ecf20Sopenharmony_ci#define isa_writeb(val,p) out_8(isa_mtb((unsigned long)(p)),(val)) 2158c2ecf20Sopenharmony_ci#define isa_writew(val,p) \ 2168c2ecf20Sopenharmony_ci (ISA_SEX ? out_be16(isa_mtw((unsigned long)(p)),(val)) \ 2178c2ecf20Sopenharmony_ci : out_le16(isa_mtw((unsigned long)(p)),(val))) 2188c2ecf20Sopenharmony_ci 2198c2ecf20Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 2208c2ecf20Sopenharmony_ci#define isa_rom_inb(port) rom_in_8(isa_itb(port)) 2218c2ecf20Sopenharmony_ci#define isa_rom_inw(port) \ 2228c2ecf20Sopenharmony_ci (ISA_SEX ? rom_in_be16(isa_itw(port)) \ 2238c2ecf20Sopenharmony_ci : rom_in_le16(isa_itw(port))) 2248c2ecf20Sopenharmony_ci 2258c2ecf20Sopenharmony_ci#define isa_rom_outb(val, port) rom_out_8(isa_itb(port), (val)) 2268c2ecf20Sopenharmony_ci#define isa_rom_outw(val, port) \ 2278c2ecf20Sopenharmony_ci (ISA_SEX ? rom_out_be16(isa_itw(port), (val)) \ 2288c2ecf20Sopenharmony_ci : rom_out_le16(isa_itw(port), (val))) 2298c2ecf20Sopenharmony_ci 2308c2ecf20Sopenharmony_ci#define isa_rom_readb(p) rom_in_8(isa_mtb((unsigned long)(p))) 2318c2ecf20Sopenharmony_ci#define isa_rom_readw(p) \ 2328c2ecf20Sopenharmony_ci (ISA_SEX ? rom_in_be16(isa_mtw((unsigned long)(p))) \ 2338c2ecf20Sopenharmony_ci : rom_in_le16(isa_mtw((unsigned long)(p)))) 2348c2ecf20Sopenharmony_ci#define isa_rom_readw_swap(p) \ 2358c2ecf20Sopenharmony_ci (ISA_SEX ? rom_in_le16(isa_mtw((unsigned long)(p))) \ 2368c2ecf20Sopenharmony_ci : rom_in_be16(isa_mtw((unsigned long)(p)))) 2378c2ecf20Sopenharmony_ci#define isa_rom_readw_raw(p) rom_in_be16(isa_mtw((unsigned long)(p))) 2388c2ecf20Sopenharmony_ci 2398c2ecf20Sopenharmony_ci#define isa_rom_writeb(val, p) rom_out_8(isa_mtb((unsigned long)(p)), (val)) 2408c2ecf20Sopenharmony_ci#define isa_rom_writew(val, p) \ 2418c2ecf20Sopenharmony_ci (ISA_SEX ? rom_out_be16(isa_mtw((unsigned long)(p)), (val)) \ 2428c2ecf20Sopenharmony_ci : rom_out_le16(isa_mtw((unsigned long)(p)), (val))) 2438c2ecf20Sopenharmony_ci#define isa_rom_writew_swap(val, p) \ 2448c2ecf20Sopenharmony_ci (ISA_SEX ? rom_out_le16(isa_mtw((unsigned long)(p)), (val)) \ 2458c2ecf20Sopenharmony_ci : rom_out_be16(isa_mtw((unsigned long)(p)), (val))) 2468c2ecf20Sopenharmony_ci#define isa_rom_writew_raw(val, p) rom_out_be16(isa_mtw((unsigned long)(p)), (val)) 2478c2ecf20Sopenharmony_ci#endif /* CONFIG_ATARI_ROM_ISA */ 2488c2ecf20Sopenharmony_ci 2498c2ecf20Sopenharmony_cistatic inline void isa_delay(void) 2508c2ecf20Sopenharmony_ci{ 2518c2ecf20Sopenharmony_ci switch(ISA_TYPE) 2528c2ecf20Sopenharmony_ci { 2538c2ecf20Sopenharmony_ci#ifdef CONFIG_Q40 2548c2ecf20Sopenharmony_ci case ISA_TYPE_Q40: isa_outb(0,0x80); break; 2558c2ecf20Sopenharmony_ci#endif 2568c2ecf20Sopenharmony_ci#ifdef CONFIG_AMIGA_PCMCIA 2578c2ecf20Sopenharmony_ci case ISA_TYPE_AG: break; 2588c2ecf20Sopenharmony_ci#endif 2598c2ecf20Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 2608c2ecf20Sopenharmony_ci case ISA_TYPE_ENEC: break; 2618c2ecf20Sopenharmony_ci#endif 2628c2ecf20Sopenharmony_ci default: break; /* avoid warnings */ 2638c2ecf20Sopenharmony_ci } 2648c2ecf20Sopenharmony_ci} 2658c2ecf20Sopenharmony_ci 2668c2ecf20Sopenharmony_ci#define isa_inb_p(p) ({u8 v=isa_inb(p);isa_delay();v;}) 2678c2ecf20Sopenharmony_ci#define isa_outb_p(v,p) ({isa_outb((v),(p));isa_delay();}) 2688c2ecf20Sopenharmony_ci#define isa_inw_p(p) ({u16 v=isa_inw(p);isa_delay();v;}) 2698c2ecf20Sopenharmony_ci#define isa_outw_p(v,p) ({isa_outw((v),(p));isa_delay();}) 2708c2ecf20Sopenharmony_ci#define isa_inl_p(p) ({u32 v=isa_inl(p);isa_delay();v;}) 2718c2ecf20Sopenharmony_ci#define isa_outl_p(v,p) ({isa_outl((v),(p));isa_delay();}) 2728c2ecf20Sopenharmony_ci 2738c2ecf20Sopenharmony_ci#define isa_insb(port, buf, nr) raw_insb(isa_itb(port), (u8 *)(buf), (nr)) 2748c2ecf20Sopenharmony_ci#define isa_outsb(port, buf, nr) raw_outsb(isa_itb(port), (u8 *)(buf), (nr)) 2758c2ecf20Sopenharmony_ci 2768c2ecf20Sopenharmony_ci#define isa_insw(port, buf, nr) \ 2778c2ecf20Sopenharmony_ci (ISA_SEX ? raw_insw(isa_itw(port), (u16 *)(buf), (nr)) : \ 2788c2ecf20Sopenharmony_ci raw_insw_swapw(isa_itw(port), (u16 *)(buf), (nr))) 2798c2ecf20Sopenharmony_ci 2808c2ecf20Sopenharmony_ci#define isa_outsw(port, buf, nr) \ 2818c2ecf20Sopenharmony_ci (ISA_SEX ? raw_outsw(isa_itw(port), (u16 *)(buf), (nr)) : \ 2828c2ecf20Sopenharmony_ci raw_outsw_swapw(isa_itw(port), (u16 *)(buf), (nr))) 2838c2ecf20Sopenharmony_ci 2848c2ecf20Sopenharmony_ci#define isa_insl(port, buf, nr) \ 2858c2ecf20Sopenharmony_ci (ISA_SEX ? raw_insl(isa_itl(port), (u32 *)(buf), (nr)) : \ 2868c2ecf20Sopenharmony_ci raw_insw_swapw(isa_itw(port), (u16 *)(buf), (nr)<<1)) 2878c2ecf20Sopenharmony_ci 2888c2ecf20Sopenharmony_ci#define isa_outsl(port, buf, nr) \ 2898c2ecf20Sopenharmony_ci (ISA_SEX ? raw_outsl(isa_itl(port), (u32 *)(buf), (nr)) : \ 2908c2ecf20Sopenharmony_ci raw_outsw_swapw(isa_itw(port), (u16 *)(buf), (nr)<<1)) 2918c2ecf20Sopenharmony_ci 2928c2ecf20Sopenharmony_ci 2938c2ecf20Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 2948c2ecf20Sopenharmony_ci#define isa_rom_inb_p(p) ({ u8 _v = isa_rom_inb(p); isa_delay(); _v; }) 2958c2ecf20Sopenharmony_ci#define isa_rom_inw_p(p) ({ u16 _v = isa_rom_inw(p); isa_delay(); _v; }) 2968c2ecf20Sopenharmony_ci#define isa_rom_outb_p(v, p) ({ isa_rom_outb((v), (p)); isa_delay(); }) 2978c2ecf20Sopenharmony_ci#define isa_rom_outw_p(v, p) ({ isa_rom_outw((v), (p)); isa_delay(); }) 2988c2ecf20Sopenharmony_ci 2998c2ecf20Sopenharmony_ci#define isa_rom_insb(port, buf, nr) raw_rom_insb(isa_itb(port), (u8 *)(buf), (nr)) 3008c2ecf20Sopenharmony_ci 3018c2ecf20Sopenharmony_ci#define isa_rom_insw(port, buf, nr) \ 3028c2ecf20Sopenharmony_ci (ISA_SEX ? raw_rom_insw(isa_itw(port), (u16 *)(buf), (nr)) : \ 3038c2ecf20Sopenharmony_ci raw_rom_insw_swapw(isa_itw(port), (u16 *)(buf), (nr))) 3048c2ecf20Sopenharmony_ci 3058c2ecf20Sopenharmony_ci#define isa_rom_outsb(port, buf, nr) raw_rom_outsb(isa_itb(port), (u8 *)(buf), (nr)) 3068c2ecf20Sopenharmony_ci 3078c2ecf20Sopenharmony_ci#define isa_rom_outsw(port, buf, nr) \ 3088c2ecf20Sopenharmony_ci (ISA_SEX ? raw_rom_outsw(isa_itw(port), (u16 *)(buf), (nr)) : \ 3098c2ecf20Sopenharmony_ci raw_rom_outsw_swapw(isa_itw(port), (u16 *)(buf), (nr))) 3108c2ecf20Sopenharmony_ci#endif /* CONFIG_ATARI_ROM_ISA */ 3118c2ecf20Sopenharmony_ci 3128c2ecf20Sopenharmony_ci#endif /* CONFIG_ISA || CONFIG_ATARI_ROM_ISA */ 3138c2ecf20Sopenharmony_ci 3148c2ecf20Sopenharmony_ci 3158c2ecf20Sopenharmony_ci#if defined(CONFIG_ISA) && !defined(CONFIG_ATARI_ROM_ISA) 3168c2ecf20Sopenharmony_ci#define inb isa_inb 3178c2ecf20Sopenharmony_ci#define inb_p isa_inb_p 3188c2ecf20Sopenharmony_ci#define outb isa_outb 3198c2ecf20Sopenharmony_ci#define outb_p isa_outb_p 3208c2ecf20Sopenharmony_ci#define inw isa_inw 3218c2ecf20Sopenharmony_ci#define inw_p isa_inw_p 3228c2ecf20Sopenharmony_ci#define outw isa_outw 3238c2ecf20Sopenharmony_ci#define outw_p isa_outw_p 3248c2ecf20Sopenharmony_ci#define inl isa_inl 3258c2ecf20Sopenharmony_ci#define inl_p isa_inl_p 3268c2ecf20Sopenharmony_ci#define outl isa_outl 3278c2ecf20Sopenharmony_ci#define outl_p isa_outl_p 3288c2ecf20Sopenharmony_ci#define insb isa_insb 3298c2ecf20Sopenharmony_ci#define insw isa_insw 3308c2ecf20Sopenharmony_ci#define insl isa_insl 3318c2ecf20Sopenharmony_ci#define outsb isa_outsb 3328c2ecf20Sopenharmony_ci#define outsw isa_outsw 3338c2ecf20Sopenharmony_ci#define outsl isa_outsl 3348c2ecf20Sopenharmony_ci#define readb isa_readb 3358c2ecf20Sopenharmony_ci#define readw isa_readw 3368c2ecf20Sopenharmony_ci#define writeb isa_writeb 3378c2ecf20Sopenharmony_ci#define writew isa_writew 3388c2ecf20Sopenharmony_ci#endif /* CONFIG_ISA && !CONFIG_ATARI_ROM_ISA */ 3398c2ecf20Sopenharmony_ci 3408c2ecf20Sopenharmony_ci#ifdef CONFIG_ATARI_ROM_ISA 3418c2ecf20Sopenharmony_ci/* 3428c2ecf20Sopenharmony_ci * kernel with both ROM port ISA and IDE compiled in, those have 3438c2ecf20Sopenharmony_ci * conflicting defs for in/out. Simply consider port < 1024 3448c2ecf20Sopenharmony_ci * ROM port ISA and everything else regular ISA for IDE. read,write defined 3458c2ecf20Sopenharmony_ci * below. 3468c2ecf20Sopenharmony_ci */ 3478c2ecf20Sopenharmony_ci#define inb(port) ((port) < 1024 ? isa_rom_inb(port) : in_8(port)) 3488c2ecf20Sopenharmony_ci#define inb_p(port) ((port) < 1024 ? isa_rom_inb_p(port) : in_8(port)) 3498c2ecf20Sopenharmony_ci#define inw(port) ((port) < 1024 ? isa_rom_inw(port) : in_le16(port)) 3508c2ecf20Sopenharmony_ci#define inw_p(port) ((port) < 1024 ? isa_rom_inw_p(port) : in_le16(port)) 3518c2ecf20Sopenharmony_ci#define inl isa_inl 3528c2ecf20Sopenharmony_ci#define inl_p isa_inl_p 3538c2ecf20Sopenharmony_ci 3548c2ecf20Sopenharmony_ci#define outb(val, port) ((port) < 1024 ? isa_rom_outb((val), (port)) : out_8((port), (val))) 3558c2ecf20Sopenharmony_ci#define outb_p(val, port) ((port) < 1024 ? isa_rom_outb_p((val), (port)) : out_8((port), (val))) 3568c2ecf20Sopenharmony_ci#define outw(val, port) ((port) < 1024 ? isa_rom_outw((val), (port)) : out_le16((port), (val))) 3578c2ecf20Sopenharmony_ci#define outw_p(val, port) ((port) < 1024 ? isa_rom_outw_p((val), (port)) : out_le16((port), (val))) 3588c2ecf20Sopenharmony_ci#define outl isa_outl 3598c2ecf20Sopenharmony_ci#define outl_p isa_outl_p 3608c2ecf20Sopenharmony_ci 3618c2ecf20Sopenharmony_ci#define insb(port, buf, nr) ((port) < 1024 ? isa_rom_insb((port), (buf), (nr)) : isa_insb((port), (buf), (nr))) 3628c2ecf20Sopenharmony_ci#define insw(port, buf, nr) ((port) < 1024 ? isa_rom_insw((port), (buf), (nr)) : isa_insw((port), (buf), (nr))) 3638c2ecf20Sopenharmony_ci#define insl isa_insl 3648c2ecf20Sopenharmony_ci#define outsb(port, buf, nr) ((port) < 1024 ? isa_rom_outsb((port), (buf), (nr)) : isa_outsb((port), (buf), (nr))) 3658c2ecf20Sopenharmony_ci#define outsw(port, buf, nr) ((port) < 1024 ? isa_rom_outsw((port), (buf), (nr)) : isa_outsw((port), (buf), (nr))) 3668c2ecf20Sopenharmony_ci#define outsl isa_outsl 3678c2ecf20Sopenharmony_ci 3688c2ecf20Sopenharmony_ci#define readb(addr) in_8(addr) 3698c2ecf20Sopenharmony_ci#define writeb(val, addr) out_8((addr), (val)) 3708c2ecf20Sopenharmony_ci#define readw(addr) in_le16(addr) 3718c2ecf20Sopenharmony_ci#define writew(val, addr) out_le16((addr), (val)) 3728c2ecf20Sopenharmony_ci#endif /* CONFIG_ATARI_ROM_ISA */ 3738c2ecf20Sopenharmony_ci 3748c2ecf20Sopenharmony_ci#define readl(addr) in_le32(addr) 3758c2ecf20Sopenharmony_ci#define writel(val,addr) out_le32((addr),(val)) 3768c2ecf20Sopenharmony_ci 3778c2ecf20Sopenharmony_ci#define readsb(port, buf, nr) raw_insb((port), (u8 *)(buf), (nr)) 3788c2ecf20Sopenharmony_ci#define readsw(port, buf, nr) raw_insw((port), (u16 *)(buf), (nr)) 3798c2ecf20Sopenharmony_ci#define readsl(port, buf, nr) raw_insl((port), (u32 *)(buf), (nr)) 3808c2ecf20Sopenharmony_ci#define writesb(port, buf, nr) raw_outsb((port), (u8 *)(buf), (nr)) 3818c2ecf20Sopenharmony_ci#define writesw(port, buf, nr) raw_outsw((port), (u16 *)(buf), (nr)) 3828c2ecf20Sopenharmony_ci#define writesl(port, buf, nr) raw_outsl((port), (u32 *)(buf), (nr)) 3838c2ecf20Sopenharmony_ci 3848c2ecf20Sopenharmony_ci#ifndef CONFIG_SUN3 3858c2ecf20Sopenharmony_ci#define IO_SPACE_LIMIT 0xffff 3868c2ecf20Sopenharmony_ci#else 3878c2ecf20Sopenharmony_ci#define IO_SPACE_LIMIT 0x0fffffff 3888c2ecf20Sopenharmony_ci#endif 3898c2ecf20Sopenharmony_ci 3908c2ecf20Sopenharmony_ci#endif /* __KERNEL__ */ 3918c2ecf20Sopenharmony_ci 3928c2ecf20Sopenharmony_ci#define __ARCH_HAS_NO_PAGE_ZERO_MAPPED 1 3938c2ecf20Sopenharmony_ci 3948c2ecf20Sopenharmony_ci/* 3958c2ecf20Sopenharmony_ci * Convert a physical pointer to a virtual kernel pointer for /dev/mem 3968c2ecf20Sopenharmony_ci * access 3978c2ecf20Sopenharmony_ci */ 3988c2ecf20Sopenharmony_ci#define xlate_dev_mem_ptr(p) __va(p) 3998c2ecf20Sopenharmony_ci 4008c2ecf20Sopenharmony_ci/* 4018c2ecf20Sopenharmony_ci * Convert a virtual cached pointer to an uncached pointer 4028c2ecf20Sopenharmony_ci */ 4038c2ecf20Sopenharmony_ci#define xlate_dev_kmem_ptr(p) p 4048c2ecf20Sopenharmony_ci 4058c2ecf20Sopenharmony_ci#define readb_relaxed(addr) readb(addr) 4068c2ecf20Sopenharmony_ci#define readw_relaxed(addr) readw(addr) 4078c2ecf20Sopenharmony_ci#define readl_relaxed(addr) readl(addr) 4088c2ecf20Sopenharmony_ci 4098c2ecf20Sopenharmony_ci#define writeb_relaxed(b, addr) writeb(b, addr) 4108c2ecf20Sopenharmony_ci#define writew_relaxed(b, addr) writew(b, addr) 4118c2ecf20Sopenharmony_ci#define writel_relaxed(b, addr) writel(b, addr) 4128c2ecf20Sopenharmony_ci 4138c2ecf20Sopenharmony_ci#endif /* _M68K_IO_MM_H */ 414