| /* | |
| * linux/include/asm-arm/arch-shark/io.h | |
| * | |
| * by Alexander Schulz | |
| * | |
| * derived from: | |
| * linux/include/asm-arm/arch-ebsa110/io.h | |
| * Copyright (C) 1997,1998 Russell King | |
| */ | |
| #ifndef __ASM_ARM_ARCH_IO_H | |
| #define __ASM_ARM_ARCH_IO_H | |
| #include <asm/hardware.h> | |
| #define IO_SPACE_LIMIT 0xffffffff | |
| /* | |
| * We use two different types of addressing - PC style addresses, and ARM | |
| * addresses. PC style accesses the PC hardware with the normal PC IO | |
| * addresses, eg 0x3f8 for serial#1. ARM addresses are 0x80000000+ | |
| * and are translated to the start of IO. | |
| */ | |
| #define __PORT_PCIO(x) (!((x) & 0x80000000)) | |
| #define __io(a) ((void __iomem *)(PCIO_BASE + (a))) | |
| static inline unsigned int __ioaddr (unsigned int port) \ | |
| { \ | |
| if (__PORT_PCIO(port)) \ | |
| return (unsigned int)(PCIO_BASE + (port)); \ | |
| else \ | |
| return (unsigned int)(IO_BASE + (port)); \ | |
| } | |
| #define __mem_pci(addr) (addr) | |
| /* | |
| * Translated address IO functions | |
| * | |
| * IO address has already been translated to a virtual address | |
| */ | |
| #define outb_t(v,p) \ | |
| (*(volatile unsigned char *)(p) = (v)) | |
| #define inb_t(p) \ | |
| (*(volatile unsigned char *)(p)) | |
| #define outl_t(v,p) \ | |
| (*(volatile unsigned long *)(p) = (v)) | |
| #define inl_t(p) \ | |
| (*(volatile unsigned long *)(p)) | |
| #endif |