1 /* 2 * linux/include/asm-arm/arch-sa1100/hardware.h 3 * 4 * Copyright (C) 1998 Nicolas Pitre <nico@cam.org> 5 * 6 * This file contains the hardware definitions for SA1100 architecture 7 * 8 * 2000/05/23 John Dorsey <john+@cs.cmu.edu> 9 * Definitions for SA1111 added. 10 */ 11 12 #ifndef __ASM_ARCH_HARDWARE_H 13 #define __ASM_ARCH_HARDWARE_H 14 15 #include <linux/config.h> 16 #include <asm/mach-types.h> 17 18 19 /* Flushing areas */ 20 #define FLUSH_BASE_PHYS 0xe0000000 /* SA1100 zero bank */ 21 #define FLUSH_BASE 0xf5000000 22 #define FLUSH_BASE_MINICACHE 0xf5800000 23 #define UNCACHEABLE_ADDR 0xfa050000 24 25 26 /* 27 * Those are statically mapped PCMCIA IO space for designs using it as a 28 * generic IO bus, typically with ISA parts, hardwired IDE interfaces, etc. 29 * The actual PCMCIA code is mapping required IO region at run time. 30 */ 31 #define PCMCIA_IO_0_BASE 0xf6000000 32 #define PCMCIA_IO_1_BASE 0xf7000000 33 34 35 /* 36 * We requires absolute addresses i.e. (PCMCIA_IO_0_BASE + 0x3f8) for 37 * in*()/out*() macros to be usable for all cases. 38 */ 39 #define PCIO_BASE 0 40 41 42 /* 43 * SA1100 internal I/O mappings 44 * 45 * We have the following mapping: 46 * phys virt 47 * 80000000 f8000000 48 * 90000000 fa000000 49 * a0000000 fc000000 50 * b0000000 fe000000 51 */ 52 53 #define VIO_BASE 0xf8000000 /* virtual start of IO space */ 54 #define VIO_SHIFT 3 /* x = IO space shrink power */ 55 #define PIO_START 0x80000000 /* physical start of IO space */ 56 57 #define io_p2v( x ) \ 58 ( (((x)&0x00ffffff) | (((x)&0x30000000)>>VIO_SHIFT)) + VIO_BASE ) 59 #define io_v2p( x ) \ 60 ( (((x)&0x00ffffff) | (((x)&(0x30000000>>VIO_SHIFT))<<VIO_SHIFT)) + PIO_START ) 61 62 #ifndef __ASSEMBLY__ 63 #include <asm/types.h> 64 65 #if 0 66 # define __REG(x) (*((volatile u32 *)io_p2v(x))) 67 #else 68 /* 69 * This __REG() version gives the same results as the one above, except 70 * that we are fooling gcc somehow so it generates far better and smaller 71 * assembly code for access to contigous registers. It's a shame that gcc 72 * doesn't guess this by itself. 73 */ 74 typedef struct { volatile u32 offset[4096]; } __regbase; 75 # define __REGP(x) ((__regbase *)((x)&~4095))->offset[((x)&4095)>>2] 76 # define __REG(x) __REGP(io_p2v(x)) 77 #endif 78 79 # define __PREG(x) (io_v2p((u32)&(x))) 80 81 #else 82 83 # define __REG(x) io_p2v(x) 84 # define __PREG(x) io_v2p(x) 85 86 #endif 87 88 #include "SA-1100.h" 89 90 91 /* 92 * SA1100 GPIO edge detection for IRQs: 93 * IRQs are generated on Falling-Edge, Rising-Edge, or both. 94 * This must be called *before* the corresponding IRQ is registered. 95 * Use this instead of directly setting GRER/GFER. 96 */ 97 #define GPIO_NO_EDGES 0 98 #define GPIO_FALLING_EDGE 1 99 #define GPIO_RISING_EDGE 2 100 #define GPIO_BOTH_EDGES 3 101 #ifndef __ASSEMBLY__ 102 extern void set_GPIO_IRQ_edge( int gpio_mask, int edge_mask ); 103 #endif 104 105 106 /* 107 * Implementation specifics. 108 * 109 * *** BIG FAT NOTE *** 110 * 111 * Any definitions in these files should be prefixed by an identifier - 112 * eg, ASSABET_UCB1300_IRQ This will allow us to eleminate these 113 * ifdefs, and lots of other preprocessor gunk elsewhere. 114 * 115 * Also, please try to add your entry in alphabetical order. The 116 * initial ones below are the start of the alphabetical list. 117 * 118 * Do NOT add your ifdefs around your file. 119 */ 120 121 #include "badge4.h" 122 123 #include "frodo.h" 124 125 #include "h3600.h" 126 127 #include "system3.h" 128 129 #ifdef CONFIG_SA1100_PANGOLIN 130 #include "pangolin.h" 131 #endif 132 133 #ifdef CONFIG_SA1100_HUW_WEBPANEL 134 #include "huw_webpanel.h" 135 #endif 136 137 #ifdef CONFIG_SA1100_PFS168 138 #include "pfs168.h" 139 #endif 140 141 142 #ifdef CONFIG_SA1100_YOPY 143 #include "yopy.h" 144 #endif 145 146 #ifdef CONFIG_SA1100_FREEBIRD 147 #include "freebird.h" 148 #endif 149 150 #ifdef CONFIG_SA1100_CERF 151 #include "cerf.h" 152 #endif 153 154 #ifdef CONFIG_SA1100_EMPEG 155 #include "empeg.h" 156 #endif 157 158 #ifdef CONFIG_SA1100_ITSY 159 #include "itsy.h" 160 #endif 161 162 #if defined(CONFIG_SA1100_GRAPHICSCLIENT) 163 #include "graphicsclient.h" 164 #endif 165 166 #if defined(CONFIG_SA1100_OMNIMETER) 167 #include "omnimeter.h" 168 #endif 169 170 #if defined(CONFIG_SA1100_JORNADA720) 171 #include "jornada720.h" 172 #endif 173 174 #if defined(CONFIG_SA1100_PLEB) 175 #include "pleb.h" 176 #endif 177 178 #if defined(CONFIG_SA1100_LART) 179 #include "lart.h" 180 #endif 181 182 #ifdef CONFIG_SA1100_SIMPAD 183 #include "simpad.h" 184 #endif 185 186 #ifdef CONFIG_SA1100_SIMPUTER 187 #include "simputer.h" 188 #endif 189 190 #if defined(CONFIG_SA1100_GRAPHICSMASTER) 191 #include "graphicsmaster.h" 192 #endif 193 194 #if defined(CONFIG_SA1100_ADSAGC) 195 #include "adsagc.h" 196 #endif 197 198 #if defined(CONFIG_SA1100_ADSBITSY) 199 #include "adsbitsy.h" 200 #endif 201 202 #if defined(CONFIG_SA1100_ADSBITSYPLUS) 203 #include "adsbitsyplus.h" 204 #endif 205 206 #ifdef CONFIG_SA1101 207 208 /* 209 * We have mapped the sa1101 depending on the value of SA1101_BASE. 210 * It then appears from 0xf4000000. 211 */ 212 213 #define SA1101_p2v( x ) ((x) - SA1101_BASE + 0xf4000000) 214 #define SA1101_v2p( x ) ((x) - 0xf4000000 + SA1101_BASE) 215 216 #include "SA-1101.h" 217 218 #endif 219 220 #if defined(CONFIG_SA1100_OMNIMETER) 221 #include "omnimeter.h" 222 #endif 223 224 #if defined(CONFIG_SA1100_JORNADA720) 225 #include "jornada720.h" 226 #endif 227 228 #if defined(CONFIG_SA1100_FLEXANET) 229 #include "flexanet.h" 230 #endif 231 232 #endif /* _ASM_ARCH_HARDWARE_H */ 233