/* * 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