1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2a09e64fbSRussell King /* 3a09e64fbSRussell King * arch/arm/mach-sa1100/include/mach/hardware.h 4a09e64fbSRussell King * 52f82af08SNicolas Pitre * Copyright (C) 1998 Nicolas Pitre <nico@fluxnic.net> 6a09e64fbSRussell King * 7a09e64fbSRussell King * This file contains the hardware definitions for SA1100 architecture 8a09e64fbSRussell King * 9a09e64fbSRussell King * 2000/05/23 John Dorsey <john+@cs.cmu.edu> 10a09e64fbSRussell King * Definitions for SA1111 added. 11a09e64fbSRussell King */ 12a09e64fbSRussell King 13a09e64fbSRussell King #ifndef __ASM_ARCH_HARDWARE_H 14a09e64fbSRussell King #define __ASM_ARCH_HARDWARE_H 15a09e64fbSRussell King 16a09e64fbSRussell King 17c94e4ad2SRussell King #define UNCACHEABLE_ADDR 0xfa050000 /* ICIP */ 18a09e64fbSRussell King 19a09e64fbSRussell King 20a09e64fbSRussell King /* 21a09e64fbSRussell King * SA1100 internal I/O mappings 22a09e64fbSRussell King * 23a09e64fbSRussell King * We have the following mapping: 24a09e64fbSRussell King * phys virt 25a09e64fbSRussell King * 80000000 f8000000 26a09e64fbSRussell King * 90000000 fa000000 27a09e64fbSRussell King * a0000000 fc000000 28a09e64fbSRussell King * b0000000 fe000000 29a09e64fbSRussell King */ 30a09e64fbSRussell King 31a09e64fbSRussell King #define VIO_BASE 0xf8000000 /* virtual start of IO space */ 32a09e64fbSRussell King #define VIO_SHIFT 3 /* x = IO space shrink power */ 33a09e64fbSRussell King #define PIO_START 0x80000000 /* physical start of IO space */ 34a09e64fbSRussell King 35a09e64fbSRussell King #define io_p2v( x ) \ 363169663aSRussell King IOMEM( (((x)&0x00ffffff) | (((x)&0x30000000)>>VIO_SHIFT)) + VIO_BASE ) 37a09e64fbSRussell King #define io_v2p( x ) \ 38a09e64fbSRussell King ( (((x)&0x00ffffff) | (((x)&(0x30000000>>VIO_SHIFT))<<VIO_SHIFT)) + PIO_START ) 39a09e64fbSRussell King 403169663aSRussell King #define __MREG(x) IOMEM(io_p2v(x)) 413169663aSRussell King 42a09e64fbSRussell King #ifndef __ASSEMBLY__ 43a09e64fbSRussell King 443169663aSRussell King # define __REG(x) (*((volatile unsigned long __iomem *)io_p2v(x))) 45a09e64fbSRussell King # define __PREG(x) (io_v2p((unsigned long)&(x))) 46a09e64fbSRussell King 47a09e64fbSRussell King #else 48a09e64fbSRussell King 49a09e64fbSRussell King # define __REG(x) io_p2v(x) 50a09e64fbSRussell King # define __PREG(x) io_v2p(x) 51a09e64fbSRussell King 52a09e64fbSRussell King #endif 53a09e64fbSRussell King 54a09e64fbSRussell King #include "SA-1100.h" 55a09e64fbSRussell King 56a09e64fbSRussell King #endif /* _ASM_ARCH_HARDWARE_H */ 57