162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * arch/arm/mach-sa1100/include/mach/hardware.h 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 1998 Nicolas Pitre <nico@fluxnic.net> 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * This file contains the hardware definitions for SA1100 architecture 862306a36Sopenharmony_ci * 962306a36Sopenharmony_ci * 2000/05/23 John Dorsey <john+@cs.cmu.edu> 1062306a36Sopenharmony_ci * Definitions for SA1111 added. 1162306a36Sopenharmony_ci */ 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#ifndef __ASM_ARCH_HARDWARE_H 1462306a36Sopenharmony_ci#define __ASM_ARCH_HARDWARE_H 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#define UNCACHEABLE_ADDR 0xfa050000 /* ICIP */ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci/* 2162306a36Sopenharmony_ci * SA1100 internal I/O mappings 2262306a36Sopenharmony_ci * 2362306a36Sopenharmony_ci * We have the following mapping: 2462306a36Sopenharmony_ci * phys virt 2562306a36Sopenharmony_ci * 80000000 f8000000 2662306a36Sopenharmony_ci * 90000000 fa000000 2762306a36Sopenharmony_ci * a0000000 fc000000 2862306a36Sopenharmony_ci * b0000000 fe000000 2962306a36Sopenharmony_ci */ 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci#define VIO_BASE 0xf8000000 /* virtual start of IO space */ 3262306a36Sopenharmony_ci#define VIO_SHIFT 3 /* x = IO space shrink power */ 3362306a36Sopenharmony_ci#define PIO_START 0x80000000 /* physical start of IO space */ 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci#define io_p2v( x ) \ 3662306a36Sopenharmony_ci IOMEM( (((x)&0x00ffffff) | (((x)&0x30000000)>>VIO_SHIFT)) + VIO_BASE ) 3762306a36Sopenharmony_ci#define io_v2p( x ) \ 3862306a36Sopenharmony_ci ( (((x)&0x00ffffff) | (((x)&(0x30000000>>VIO_SHIFT))<<VIO_SHIFT)) + PIO_START ) 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci#define __MREG(x) IOMEM(io_p2v(x)) 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci#ifndef __ASSEMBLY__ 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci# define __REG(x) (*((volatile unsigned long __iomem *)io_p2v(x))) 4562306a36Sopenharmony_ci# define __PREG(x) (io_v2p((unsigned long)&(x))) 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci#else 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci# define __REG(x) io_p2v(x) 5062306a36Sopenharmony_ci# define __PREG(x) io_v2p(x) 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci#endif 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#include "SA-1100.h" 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci#endif /* _ASM_ARCH_HARDWARE_H */ 57