1 1.9 andvar /* $NetBSD: ixp12x0reg.h,v 1.9 2021/09/17 08:13:06 andvar Exp $ */ 2 1.1 ichiro 3 1.1 ichiro /* 4 1.3 ichiro * Copyright (c) 2002, 2003 5 1.1 ichiro * Ichiro FUKUHARA <ichiro (at) ichiro.org>. 6 1.1 ichiro * All rights reserved. 7 1.1 ichiro * 8 1.1 ichiro * Redistribution and use in source and binary forms, with or without 9 1.1 ichiro * modification, are permitted provided that the following conditions 10 1.1 ichiro * are met: 11 1.1 ichiro * 1. Redistributions of source code must retain the above copyright 12 1.1 ichiro * notice, this list of conditions and the following disclaimer. 13 1.1 ichiro * 2. Redistributions in binary form must reproduce the above copyright 14 1.1 ichiro * notice, this list of conditions and the following disclaimer in the 15 1.1 ichiro * documentation and/or other materials provided with the distribution. 16 1.1 ichiro * 17 1.1 ichiro * THIS SOFTWARE IS PROVIDED BY ICHIRO FUKUHARA ``AS IS'' AND ANY EXPRESS OR 18 1.1 ichiro * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 1.1 ichiro * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 1.1 ichiro * IN NO EVENT SHALL ICHIRO FUKUHARA OR THE VOICES IN HIS HEAD BE LIABLE FOR 21 1.1 ichiro * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 1.1 ichiro * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 1.1 ichiro * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 1.1 ichiro * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 1.1 ichiro * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 1.1 ichiro * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 1.1 ichiro * SUCH DAMAGE. 28 1.1 ichiro */ 29 1.1 ichiro 30 1.1 ichiro #ifndef _IXP12X0REG_H_ 31 1.1 ichiro #define _IXP12X0REG_H_ 32 1.1 ichiro 33 1.1 ichiro /* 34 1.1 ichiro * Physical memory map for the Intel IXP12X0 35 1.1 ichiro */ 36 1.1 ichiro 37 1.1 ichiro /* 38 1.1 ichiro * FFFF FFFF --------------------------- 39 1.1 ichiro * Device 6 40 1.1 ichiro * SDRAM 41 1.1 ichiro * FF00 0000 - FF00 0014 42 1.1 ichiro * SDRAM Control Register 43 1.1 ichiro * D000 0000 - DFFF FFFF 44 1.1 ichiro * Prefetch 256MB 45 1.1 ichiro * C000 0000 - CFFF FFFF 46 1.1 ichiro * non-Prefetch 256MB 47 1.1 ichiro * C000 0000 --------------------------- 48 1.1 ichiro * Device 5 49 1.1 ichiro * AMBA Translation (ATU) 50 1.1 ichiro * B000 0000 --------------------------- 51 1.1 ichiro * Device 4 52 1.1 ichiro * Reserved 53 1.1 ichiro * A000 0000 --------------------------- 54 1.1 ichiro * Device 3 55 1.1 ichiro * StrongARM Core System 56 1.1 ichiro * 9000 0000 --------------------------- 57 1.1 ichiro * Device 2 58 1.1 ichiro * Reserved 59 1.1 ichiro * 8000 0000 --------------------------- 60 1.1 ichiro * Device 1 61 1.1 ichiro * PCI UNIT 62 1.1 ichiro * 6000 0000 - 7FFF FFFF 63 1.1 ichiro * PCI Memory Cycle Access 64 1.1 ichiro * 5400 0000 - 5400 FFFF 65 1.1 ichiro * PCI I/O Cycle Access 66 1.3 ichiro * 5300 0000 - 53BF FFFF 67 1.1 ichiro * PCI Type0 Configuration Cycle Access 68 1.1 ichiro * 5200 0000 - 52FF FFFF 69 1.1 ichiro * PCI Type1 Configuration Cycle Access 70 1.1 ichiro * 4200 0000 - 4200 03FF 71 1.1 ichiro * Local PCI Configuration Space 72 1.1 ichiro * 4000 0000 --------------------------- 73 1.1 ichiro * Device 0 74 1.1 ichiro * SRAM UNIT 75 1.1 ichiro * 0000 0000 --------------------------- 76 1.1 ichiro */ 77 1.1 ichiro 78 1.1 ichiro 79 1.1 ichiro /* 80 1.1 ichiro * Virtual memory map for the Intel IXP12X0 integrated devices 81 1.3 ichiro * 82 1.3 ichiro * IXP12x0 processors have many device registers at very lower addresses. 83 1.3 ichiro * To make user process space wider, we map the registers at lower address 84 1.5 wiz * to upper address using address translation of virtual memory system. 85 1.3 ichiro * 86 1.9 andvar * Some device registers are statically mapped on upper address region. 87 1.3 ichiro * because we have to access them before bus_space is initialized. 88 1.9 andvar * Most device is dynamically mapped by bus_space_map(). In this case, 89 1.3 ichiro * the actual mapped (virtual) address are not cared by device drivers. 90 1.1 ichiro */ 91 1.1 ichiro 92 1.1 ichiro /* 93 1.1 ichiro * FFFF FFFF --------------------------- 94 1.1 ichiro * 95 1.3 ichiro * F400 0000 --------------------------- 96 1.3 ichiro * PCI Type 0 Configuration Cycle Access 97 1.3 ichiro * VA F300 0000 == PA 5300 0000 (16Mbyte) 98 1.3 ichiro * F300 0000 --------------------------- 99 1.3 ichiro * PCI Type 1 Configuration Cycle Access 100 1.3 ichiro * VA F200 0000 == PA 5200 0000 (16Mbyte) 101 1.3 ichiro * F200 0000 --------------------------- 102 1.3 ichiro * not used 103 1.4 igy * F020 0000 --------------------------- 104 1.4 igy * PCI Registers Accessible Through I/O 105 1.4 igy * VA F010 0000 == PA 5400 0000 (1Mbyte) 106 1.4 igy * F010 0000 --------------------------- 107 1.4 igy * not used 108 1.1 ichiro * F001 1000 --------------------------- 109 1.1 ichiro * PCI Registers Accessible Through StrongARM Core 110 1.1 ichiro * VA F001 0000 == PA 4200 0000 (4kbyte) 111 1.1 ichiro * F001 0300 - F001 036F TIMER 112 1.3 ichiro * F001 0200 - F001 0293 PCI_FIQ 113 1.3 ichiro * F001 0180 - F001 0193 PCI_IRQ 114 1.1 ichiro * F001 0000 --------------------------- 115 1.1 ichiro * StrongARM System and Peripheral Registers 116 1.4 igy * VA F000 0000 == PA 9000 0000 (64kbyte) 117 1.1 ichiro * F000 3400 - F000 3C03 UART 118 1.1 ichiro * F000 3400 - F000 3C03 UART 119 1.1 ichiro * F000 2000 - F000 3003 RTC 120 1.1 ichiro * F000 1C00 - F000 1C03 GPIO_DATA 121 1.1 ichiro * F000 1800 - F000 1C03 GPIO 122 1.1 ichiro * F000 1400 - F000 1403 IRQ 123 1.1 ichiro * F000 1000 - F000 1003 FIQ 124 1.8 andvar * F000 0C00 - F000 0C03 PLL_CFG (not used at this address) 125 1.1 ichiro * F000 0000 --------------------------- 126 1.1 ichiro * Kernel text and data 127 1.1 ichiro * C000 0000 --------------------------- 128 1.1 ichiro * L2 tables for user process (XXX should be fixed) 129 1.3 ichiro * 8000 0000 --------------------------- 130 1.3 ichiro * PCI Registers Accessible Through Memory 131 1.3 ichiro * VA 6000 0000 == PA 6000 0000 (512Mbyte) 132 1.1 ichiro * 6000 0000 --------------------------- 133 1.1 ichiro * 5400 0000 --------------------------- 134 1.1 ichiro * 0000 0000 --------------------------- 135 1.1 ichiro * 136 1.1 ichiro */ 137 1.1 ichiro 138 1.1 ichiro /* Virtual address for I/O space */ 139 1.2 ichiro #define IXP12X0_IO_VBASE 0xf0000000UL 140 1.1 ichiro 141 1.1 ichiro /* StrongARM System and Peripheral Registers */ 142 1.4 igy #define IXP12X0_SYS_VBASE 0xf0000000UL 143 1.2 ichiro #define IXP12X0_SYS_HWBASE 0x90000000UL 144 1.2 ichiro #define IXP12X0_SYS_SIZE 0x00010000UL /* 64Kbyte */ 145 1.1 ichiro 146 1.1 ichiro #define IXP12X0_PLL_CFG (IXP12X0_IO_VBASE + 0x0c00) 147 1.1 ichiro #define IXP12X0_PLL_CFG_CCF 0x1f 148 1.1 ichiro 149 1.1 ichiro /* PCI Registers Accessible Through StrongARM Core */ 150 1.4 igy #define IXP12X0_PCI_VBASE 0xf0010000UL 151 1.2 ichiro #define IXP12X0_PCI_HWBASE 0x42000000UL 152 1.2 ichiro #define IXP12X0_PCI_SIZE 0x00001000UL /* 4Kbyte */ 153 1.1 ichiro 154 1.2 ichiro /* PCI I/O Space */ 155 1.4 igy #define IXP12X0_PCI_IO_VBASE 0xf0100000UL 156 1.4 igy #define IXP12X0_PCI_IO_HWBASE 0x54000000UL 157 1.3 ichiro #define IXP12X0_PCI_IO_SIZE 0x00100000UL /* 1Mbyte */ 158 1.1 ichiro 159 1.2 ichiro /* PCI Memory Space */ 160 1.2 ichiro #define IXP12X0_PCI_MEM_HWBASE 0x60000000UL /* VA == PA */ 161 1.2 ichiro #define IXP12X0_PCI_MEM_VBASE IXP12X0_PCI_MEM_HWBASE 162 1.2 ichiro #define IXP12X0_PCI_MEM_SIZE 0x20000000UL 163 1.1 ichiro 164 1.1 ichiro /* PCI Type0/1 Configuration address */ 165 1.3 ichiro #define IXP12X0_PCI_TYPE0_HWBASE 0x53000000UL 166 1.3 ichiro #define IXP12X0_PCI_TYPE0_VBASE 0xf3000000UL 167 1.3 ichiro #define IXP12X0_PCI_TYPE0_SIZE 0x01000000UL /* 16MB */ 168 1.3 ichiro 169 1.3 ichiro #define IXP12X0_PCI_TYPE1_HWBASE 0x52000000UL 170 1.3 ichiro #define IXP12X0_PCI_TYPE1_VBASE 0xf2000000UL 171 1.3 ichiro #define IXP12X0_PCI_TYPE1_SIZE 0x01000000UL /* 16MB */ 172 1.1 ichiro 173 1.1 ichiro /* 174 1.1 ichiro * SlowPort I/O Register 175 1.1 ichiro */ 176 1.1 ichiro /* see. arch/evbarm/ixm1200/ixm1200reg.h */ 177 1.1 ichiro 178 1.1 ichiro /* Physical register base addresses */ 179 1.1 ichiro /* #define IXP12X0_GPIO_VBASE */ 180 1.2 ichiro #define IXP12X0_GPIO_HWBASE 0x90001800UL 181 1.2 ichiro #define IXP12X0_GPIO_SIZE 0x00000800UL 182 1.1 ichiro 183 1.1 ichiro /* Interrupts */ 184 1.1 ichiro #define IXP12X0_FIQ_VBASE (IXP12X0_IO_VBASE + 0x1000) 185 1.2 ichiro #define IXP12X0_FIQ_HWBASE 0x90001000UL 186 1.2 ichiro #define IXP12X0_FIQ_SIZE 0x00000004UL 187 1.1 ichiro #define IXP12X0_IRQ_VBASE (IXP12X0_IO_VBASE + 0x1400) 188 1.2 ichiro #define IXP12X0_IRQ_HWBASE 0x90001400UL 189 1.2 ichiro #define IXP12X0_IRQ_SIZE 0x00000004UL 190 1.1 ichiro 191 1.1 ichiro /* 192 1.1 ichiro * Interrupt index assignment 193 1.1 ichiro * 194 1.1 ichiro * 195 1.1 ichiro * FIQ/IRQ bitmap in "StrongARM System and Peripheral Registers" 196 1.1 ichiro * 197 1.1 ichiro * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 198 1.1 ichiro * bit 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 199 1.1 ichiro * +-+-------------------------------------------+-+-+-+-+-+-+-+---+ 200 1.1 ichiro * |M| |U|S|R|S|U|C|P| | 201 1.1 ichiro * |B| |A|D|T|R|E|I|C| | 202 1.1 ichiro * |Z| RES |R|R|C|A|N|N|I|RES| 203 1.1 ichiro * | | |T|A| |M|G|T| | | 204 1.1 ichiro * | | | |M| | | | | | | 205 1.1 ichiro * +-+-------------------------------------------+-+-+-+-+-+-+-+---+ 206 1.1 ichiro * 3 207 1.1 ichiro * index 1 8 7 6 5 4 3 2 208 1.1 ichiro * 209 1.1 ichiro * 210 1.1 ichiro * We Map a software interrupt queue index to the unused bits in the 211 1.1 ichiro * IRQ/FIQ registers. (in "StrongARM System and Peripheral Registers") 212 1.1 ichiro * 213 1.1 ichiro * XXX will need to revisit this if those bits are ever used in future 214 1.1 ichiro * steppings). 215 1.1 ichiro * 216 1.1 ichiro * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 217 1.1 ichiro * bit 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 218 1.1 ichiro * +-+-+-+-+-+-----------------------------------+-+-+-+-+-+-+-+---+ 219 1.1 ichiro * |M|S|C|N|S| |U|S|R|S|U|C|P| | 220 1.1 ichiro * |B|O|L|E|E| |A|D|T|R|E|I|C| | 221 1.1 ichiro * |Z|F|O|T|R| RES |R|R|C|A|N|N|I|RES| 222 1.1 ichiro * | |T|C| |I| |T|A| |M|G|T| | | 223 1.1 ichiro * | | |K| |A| | |M| | | | | | | 224 1.1 ichiro * | | | | |L| | | | | | | | | | 225 1.1 ichiro * +-+-+-+-+-+-----------------------------------+-+-+-+-+-+-+-+---+ 226 1.1 ichiro * 3 3 2 2 2 227 1.1 ichiro * index 1 0 9 8 7 8 7 6 5 4 3 2 228 1.1 ichiro * 229 1.1 ichiro */ 230 1.1 ichiro 231 1.1 ichiro #define NIRQ 64 232 1.1 ichiro #define SYS_NIRQ 32 233 1.1 ichiro 234 1.1 ichiro #define IXP12X0_INTR_MBZ 31 235 1.1 ichiro #define IXP12X0_INTR_bit30 30 236 1.1 ichiro #define IXP12X0_INTR_bit29 29 237 1.1 ichiro #define IXP12X0_INTR_bit28 28 238 1.1 ichiro #define IXP12X0_INTR_bit27 27 239 1.1 ichiro #define IXP12X0_INTR_bit26 26 240 1.1 ichiro #define IXP12X0_INTR_bit25 25 241 1.1 ichiro #define IXP12X0_INTR_bit24 24 242 1.1 ichiro #define IXP12X0_INTR_bit23 23 243 1.1 ichiro #define IXP12X0_INTR_bit22 22 244 1.1 ichiro #define IXP12X0_INTR_bit21 21 245 1.1 ichiro #define IXP12X0_INTR_bit20 20 246 1.1 ichiro #define IXP12X0_INTR_bit19 19 247 1.1 ichiro #define IXP12X0_INTR_bit18 18 248 1.1 ichiro #define IXP12X0_INTR_bit17 17 249 1.1 ichiro #define IXP12X0_INTR_bit16 16 250 1.1 ichiro #define IXP12X0_INTR_bit15 15 251 1.1 ichiro #define IXP12X0_INTR_bit14 14 252 1.1 ichiro #define IXP12X0_INTR_bit13 13 253 1.1 ichiro #define IXP12X0_INTR_bit12 12 254 1.1 ichiro #define IXP12X0_INTR_bit11 11 255 1.1 ichiro #define IXP12X0_INTR_bit10 10 256 1.1 ichiro #define IXP12X0_INTR_bit9 9 257 1.1 ichiro #define IXP12X0_INTR_UART 8 258 1.1 ichiro #define IXP12X0_INTR_SDRAM 7 259 1.1 ichiro #define IXP12X0_INTR_RTC 6 260 1.1 ichiro #define IXP12X0_INTR_SRAM 5 261 1.1 ichiro #define IXP12X0_INTR_UENG 4 262 1.1 ichiro #define IXP12X0_INTR_CINT 3 263 1.1 ichiro #define IXP12X0_INTR_PCI 2 264 1.1 ichiro #define IXP12X0_INTR_bit1 1 265 1.1 ichiro #define IXP12X0_INTR_bit0 0 266 1.1 ichiro 267 1.1 ichiro #define IXP12X0_INTR_MASK \ 268 1.1 ichiro ((1U << IXP12X0_INTR_MBZ) \ 269 1.1 ichiro | (1U << IXP12X0_INTR_UART) \ 270 1.1 ichiro | (1U << IXP12X0_INTR_SDRAM) \ 271 1.1 ichiro | (1U << IXP12X0_INTR_RTC) \ 272 1.1 ichiro | (1U << IXP12X0_INTR_SRAM) \ 273 1.1 ichiro | (1U << IXP12X0_INTR_UENG) \ 274 1.1 ichiro | (1U << IXP12X0_INTR_CINT)) 275 1.1 ichiro 276 1.1 ichiro #endif /* _IXP12X0REG_H_ */ 277