1 1.2 andvar /* $NetBSD: at91sam9260reg.h,v 1.2 2021/09/17 08:13:06 andvar Exp $ */ 2 1.1 aymeric 3 1.1 aymeric /* 4 1.1 aymeric * Copyright (c) 2007 Embedtronics Oy 5 1.1 aymeric * All rights reserved. 6 1.1 aymeric * 7 1.1 aymeric * Redistribution and use in source and binary forms, with or without 8 1.1 aymeric * modification, are permitted provided that the following conditions 9 1.1 aymeric * are met: 10 1.1 aymeric * 1. Redistributions of source code must retain the above copyright 11 1.1 aymeric * notice, this list of conditions and the following disclaimer. 12 1.1 aymeric * 2. Redistributions in binary form must reproduce the above copyright 13 1.1 aymeric * notice, this list of conditions and the following disclaimer in the 14 1.1 aymeric * documentation and/or other materials provided with the distribution. 15 1.1 aymeric * 16 1.1 aymeric * THIS SOFTWARE IS PROVIDED BY ICHIRO FUKUHARA ``AS IS'' AND ANY EXPRESS OR 17 1.1 aymeric * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18 1.1 aymeric * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 1.1 aymeric * IN NO EVENT SHALL ICHIRO FUKUHARA OR THE VOICES IN HIS HEAD BE LIABLE FOR 20 1.1 aymeric * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 1.1 aymeric * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22 1.1 aymeric * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 1.1 aymeric * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24 1.1 aymeric * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 1.1 aymeric * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 1.1 aymeric * SUCH DAMAGE. 27 1.1 aymeric */ 28 1.1 aymeric /* Adaptation to AT91SAM9260 by Aymeric Vincent is in the public domain */ 29 1.1 aymeric 30 1.1 aymeric #ifndef _AT91SAM9260REG_H_ 31 1.1 aymeric #define _AT91SAM9260REG_H_ 32 1.1 aymeric 33 1.1 aymeric #include <arm/at91/at91reg.h> 34 1.1 aymeric 35 1.1 aymeric /* 36 1.1 aymeric * Physical memory map for the AT91SAM9260 37 1.1 aymeric */ 38 1.1 aymeric 39 1.1 aymeric /* 40 1.1 aymeric * ffff ffff --------------------------- 41 1.1 aymeric * System Controller 42 1.1 aymeric * ffff c000 --------------------------- 43 1.1 aymeric * Peripherals 44 1.1 aymeric * fffa 0000 --------------------------- 45 1.1 aymeric * (not used) 46 1.1 aymeric * 9000 0000 --------------------------- 47 1.1 aymeric * EBI Chip Select 7 48 1.1 aymeric * 8000 0000 --------------------------- 49 1.1 aymeric * EBI Chip Select 6 / CF logic 50 1.1 aymeric * 7000 0000 --------------------------- 51 1.1 aymeric * EBI Chip Select 5 / CF logic 52 1.1 aymeric * 6000 0000 --------------------------- 53 1.1 aymeric * EBI Chip Select 4 / CF logic 54 1.1 aymeric * 5000 0000 --------------------------- 55 1.1 aymeric * EBI Chip Select 3 / NANDFlash 56 1.1 aymeric * 4000 0000 --------------------------- 57 1.1 aymeric * EBI Chip Select 2 58 1.1 aymeric * 3000 0000 --------------------------- 59 1.1 aymeric * EBI Chip Select 1 / SDRAM 60 1.1 aymeric * 2000 0000 --------------------------- 61 1.1 aymeric * EBI Chip Select 0 / BFC 62 1.1 aymeric * 1000 0000 --------------------------- 63 1.1 aymeric * Reserved 64 1.1 aymeric * 0070 0000 --------------------------- 65 1.1 aymeric * LCD User Interface 66 1.1 aymeric * 0060 0000 --------------------------- 67 1.1 aymeric * UHP User Interface 68 1.1 aymeric * 0050 0000 --------------------------- 69 1.1 aymeric * Reserved 70 1.1 aymeric * 0040 0000 --------------------------- 71 1.1 aymeric * SRAM 72 1.1 aymeric * 0030 0000 --------------------------- 73 1.1 aymeric * DTCM 74 1.1 aymeric * 0020 0000 --------------------------- 75 1.1 aymeric * ITCM 76 1.1 aymeric * 0010 0000 --------------------------- 77 1.1 aymeric * Boot memory 78 1.1 aymeric * 0000 0000 --------------------------- 79 1.1 aymeric */ 80 1.1 aymeric 81 1.1 aymeric 82 1.1 aymeric /* 83 1.1 aymeric * Virtual memory map for the AT91SAM9260 integrated devices 84 1.1 aymeric * 85 1.1 aymeric * Some device registers are statically mapped on upper address region. 86 1.1 aymeric * because we have to access them before bus_space is initialized. 87 1.2 andvar * Most devices are dynamically mapped by bus_space_map(). In this case, 88 1.1 aymeric * the actual mapped (virtual) address are not cared by device drivers. 89 1.1 aymeric */ 90 1.1 aymeric 91 1.1 aymeric /* 92 1.1 aymeric * FFFF FFFF --------------------------- 93 1.1 aymeric * APB bus (1 MB) 94 1.1 aymeric * FFF0 0000 --------------------------- 95 1.1 aymeric * (not used) 96 1.1 aymeric * E000 0000 --------------------------- 97 1.1 aymeric * Kernel text and data 98 1.1 aymeric * C000 0000 --------------------------- 99 1.1 aymeric * (not used) 100 1.1 aymeric * 0000 0000 --------------------------- 101 1.1 aymeric * 102 1.1 aymeric */ 103 1.1 aymeric 104 1.1 aymeric #define AT91SAM9260_BOOTMEM_BASE 0x00000000U 105 1.1 aymeric #define AT91SAM9260_BOOTMEM_SIZE 0x00100000U 106 1.1 aymeric 107 1.1 aymeric #define AT91SAM9260_ROM_BASE 0x00100000U 108 1.1 aymeric #define AT91SAM9260_ROM_SIZE 0x00008000U 109 1.1 aymeric 110 1.1 aymeric #define AT91SAM9260_SRAM0_BASE 0x00200000U 111 1.1 aymeric #define AT91SAM9260_SRAM0_SIZE 0x00001000U 112 1.1 aymeric 113 1.1 aymeric #define AT91SAM9260_SRAM1_BASE 0x00300000U 114 1.1 aymeric #define AT91SAM9260_SRAM1_SIZE 0x00001000U 115 1.1 aymeric 116 1.1 aymeric #define AT91SAM9260_UHP_BASE 0x00500000U 117 1.1 aymeric #define AT91SAM9260_UHP_SIZE 0x00004000U 118 1.1 aymeric 119 1.1 aymeric #define AT91SAM9260_CS0_BASE 0x10000000U 120 1.1 aymeric #define AT91SAM9260_CS0_SIZE 0x10000000U 121 1.1 aymeric 122 1.1 aymeric #define AT91SAM9260_CS1_BASE 0x20000000U 123 1.1 aymeric #define AT91SAM9260_CS1_SIZE 0x10000000U 124 1.1 aymeric 125 1.1 aymeric #define AT91SAM9260_SDRAM_BASE AT91SAM9260_CS1_BASE 126 1.1 aymeric 127 1.1 aymeric #define AT91SAM9260_CS2_BASE 0x30000000U 128 1.1 aymeric #define AT91SAM9260_CS2_SIZE 0x10000000U 129 1.1 aymeric 130 1.1 aymeric #define AT91SAM9260_CS3_BASE 0x40000000U 131 1.1 aymeric #define AT91SAM9260_CS3_SIZE 0x10000000U 132 1.1 aymeric 133 1.1 aymeric #define AT91SAM9260_CS4_BASE 0x50000000U 134 1.1 aymeric #define AT91SAM9260_CS4_SIZE 0x10000000U 135 1.1 aymeric 136 1.1 aymeric #define AT91SAM9260_CS5_BASE 0x60000000U 137 1.1 aymeric #define AT91SAM9260_CS5_SIZE 0x10000000U 138 1.1 aymeric 139 1.1 aymeric #define AT91SAM9260_CS6_BASE 0x70000000U 140 1.1 aymeric #define AT91SAM9260_CS6_SIZE 0x10000000U 141 1.1 aymeric 142 1.1 aymeric #define AT91SAM9260_CS7_BASE 0x80000000U 143 1.1 aymeric #define AT91SAM9260_CS7_SIZE 0x10000000U 144 1.1 aymeric 145 1.1 aymeric /* Virtual address for I/O space */ 146 1.1 aymeric #define AT91SAM9260_APB_VBASE 0xfff00000U 147 1.1 aymeric #define AT91SAM9260_APB_HWBASE 0xfff00000U 148 1.1 aymeric #define AT91SAM9260_APB_SIZE 0x00100000U 149 1.1 aymeric 150 1.1 aymeric /* Peripherals: */ 151 1.1 aymeric #include <arm/at91/at91pdcreg.h> 152 1.1 aymeric 153 1.1 aymeric #define AT91SAM9260_TC0_BASE 0xFFFA0000U 154 1.1 aymeric #define AT91SAM9260_TC1_BASE 0xFFFA0040U 155 1.1 aymeric #define AT91SAM9260_TC2_BASE 0xFFFA0080U 156 1.1 aymeric #define AT91SAM9260_TCB012_BASE 0xFFFA00C0U 157 1.1 aymeric #define AT91SAM9260_TC_SIZE 0x4000U 158 1.1 aymeric //#include <arm/at91/at91tcreg.h> 159 1.1 aymeric 160 1.1 aymeric #define AT91SAM9260_UDP_BASE 0xFFFA4000U 161 1.1 aymeric #define AT91SAM9260_UDP_SIZE 0x4000U 162 1.1 aymeric //#include <arm/at91/at91udpreg.h> 163 1.1 aymeric 164 1.1 aymeric #define AT91SAM9260_MCI_BASE 0xFFFA8000U 165 1.1 aymeric 166 1.1 aymeric #define AT91SAM9260_TWI_BASE 0xFFFAC000U 167 1.1 aymeric #include <arm/at91/at91twireg.h> 168 1.1 aymeric 169 1.1 aymeric #define AT91SAM9260_USART0_BASE 0xFFFB0000U 170 1.1 aymeric #define AT91SAM9260_USART1_BASE 0xFFFB4000U 171 1.1 aymeric #define AT91SAM9260_USART2_BASE 0xFFFB8000U 172 1.1 aymeric #define AT91SAM9260_USART_SIZE 0x4000U 173 1.1 aymeric #include <arm/at91/at91usartreg.h> 174 1.1 aymeric 175 1.1 aymeric #define AT91SAM9260_SSC_BASE 0xFFFBC000U 176 1.1 aymeric #define AT91SAM9260_SSC_SIZE 0x4000U 177 1.1 aymeric //#include <arm/at91/at91sscreg.h> 178 1.1 aymeric 179 1.1 aymeric #define AT91SAM9260_EMAC_BASE 0xFFFC4000U 180 1.1 aymeric #define AT91SAM9260_EMAC_SIZE 0x4000U 181 1.1 aymeric #include <arm/at91/at91emacreg.h> 182 1.1 aymeric 183 1.1 aymeric #define AT91SAM9260_SPI0_BASE 0xFFFC8000U 184 1.1 aymeric #define AT91SAM9260_SPI1_BASE 0xFFFCC000U 185 1.1 aymeric #define AT91SAM9260_SPI_SIZE 0x4000U 186 1.1 aymeric #include <arm/at91/at91spireg.h> 187 1.1 aymeric 188 1.1 aymeric /* system controller: */ 189 1.1 aymeric #define AT91SAM9260_SDRAMC_BASE 0xFFFFEA00U 190 1.1 aymeric #define AT91SAM9260_SDRAMC_SIZE 0x200U 191 1.1 aymeric 192 1.1 aymeric #define AT91SAM9260_SMC_BASE 0xFFFFEC00U 193 1.1 aymeric #define AT91SAM9260_SMC_SIZE 0x200U 194 1.1 aymeric 195 1.1 aymeric #define AT91SAM9260_MATRIX_BASE 0xFFFFEE00U 196 1.1 aymeric #define AT91SAM9216_MATRIX_SIZE 0x200U 197 1.1 aymeric 198 1.1 aymeric #define AT91SAM9260_AIC_BASE 0xFFFFF000U 199 1.1 aymeric #define AT91SAM9260_AIC_SIZE 0x200U 200 1.1 aymeric #include <arm/at91/at91aicreg.h> 201 1.1 aymeric 202 1.1 aymeric #define AT91SAM9260_DBGU_BASE 0xFFFFF200U 203 1.1 aymeric #define AT91SAM9260_DBGU_SIZE 0x200U 204 1.1 aymeric #include <arm/at91/at91dbgureg.h> 205 1.1 aymeric 206 1.1 aymeric #define AT91SAM9260_PIOA_BASE 0xFFFFF400U 207 1.1 aymeric #define AT91SAM9260_PIOB_BASE 0xFFFFF600U 208 1.1 aymeric #define AT91SAM9260_PIOC_BASE 0xFFFFF800U 209 1.1 aymeric #define AT91SAM9260_PIO_SIZE 0x200U 210 1.1 aymeric #define AT91_PIO_SIZE AT91SAM9260_PIO_SIZE // for generic AT91 code 211 1.1 aymeric #include <arm/at91/at91pioreg.h> 212 1.1 aymeric 213 1.1 aymeric #define PIOA_READ(_reg) *((volatile uint32_t *)(AT91SAM9260_PIOA_BASE + (_reg))) 214 1.1 aymeric #define PIOA_WRITE(_reg, _val) do {*((volatile uint32_t *)(AT91SAM9260_PIOA_BASE + (_reg))) = (_val);} while (0) 215 1.1 aymeric #define PIOB_READ(_reg) *((volatile uint32_t *)(AT91SAM9260_PIOB_BASE + (_reg))) 216 1.1 aymeric #define PIOB_WRITE(_reg, _val) do {*((volatile uint32_t *)(AT91SAM9260_PIOB_BASE + (_reg))) = (_val);} while (0) 217 1.1 aymeric #define PIOC_READ(_reg) *((volatile uint32_t *)(AT91SAM9260_PIOC_BASE + (_reg))) 218 1.1 aymeric #define PIOC_WRITE(_reg, _val) do {*((volatile uint32_t *)(AT91SAM9260_PIOC_BASE + (_reg))) = (_val);} while (0) 219 1.1 aymeric 220 1.1 aymeric #define AT91SAM9260_PMC_BASE 0xFFFFFC00U 221 1.1 aymeric #define AT91SAM9260_PMC_SIZE 0x100U 222 1.1 aymeric #include <arm/at91/at91pmcreg.h> 223 1.1 aymeric 224 1.1 aymeric #define AT91SAM9260_RSTC_BASE 0xFFFFFD00U 225 1.1 aymeric #define AT91SAM9260_RSTC_SIZE 0x10U 226 1.1 aymeric 227 1.1 aymeric #define AT91SAM9260_SHDWC_BASE 0xFFFFFD10U 228 1.1 aymeric #define AT91SAM9260_SHDWC_SIZE 0x10U 229 1.1 aymeric 230 1.1 aymeric #define AT91SAM9260_RTT_BASE 0xFFFFFD20U 231 1.1 aymeric #define AT91SAM9260_RTT_SIZE 0x10U 232 1.1 aymeric 233 1.1 aymeric #define AT91SAM9260_PIT_BASE 0xFFFFFD30U 234 1.1 aymeric #define AT91SAM9260_PIT_SIZE 0x10U 235 1.1 aymeric 236 1.1 aymeric #define AT91SAM9260_WDT_BASE 0xFFFFFD40U 237 1.1 aymeric #define AT91SAM9260_WDT_SIZE 0x10U 238 1.1 aymeric 239 1.1 aymeric #define AT91SAM9260_GPBR_BASE 0xFFFFFD50U 240 1.1 aymeric #define AT91SAM9260_GPBR_SIZE 0x10U 241 1.1 aymeric 242 1.1 aymeric 243 1.1 aymeric // peripheral identifiers: 244 1.1 aymeric /* peripheral identifiers: */ 245 1.1 aymeric enum { 246 1.1 aymeric PID_FIQ = 0, /* 0 */ 247 1.1 aymeric PID_SYSIRQ, /* 1 */ 248 1.1 aymeric PID_PIOA, /* 2 */ 249 1.1 aymeric PID_PIOB, /* 3 */ 250 1.1 aymeric PID_PIOC, /* 4 */ 251 1.1 aymeric PID_ADC, /* 5 */ 252 1.1 aymeric PID_US0, /* 6 */ 253 1.1 aymeric PID_US1, /* 7 */ 254 1.1 aymeric PID_US2, /* 8 */ 255 1.1 aymeric PID_MCI, /* 9 */ 256 1.1 aymeric PID_UDP, /* 10 */ 257 1.1 aymeric PID_TWI, /* 11 */ 258 1.1 aymeric PID_SPI0, /* 12 */ 259 1.1 aymeric PID_SPI1, /* 13 */ 260 1.1 aymeric PID_SSC, /* 14 */ 261 1.1 aymeric 262 1.1 aymeric 263 1.1 aymeric PID_TC0 = 17, /* 17 */ 264 1.1 aymeric PID_TC1, /* 18 */ 265 1.1 aymeric PID_TC2, /* 19 */ 266 1.1 aymeric PID_UHP, /* 20 */ 267 1.1 aymeric PID_EMAC, /* 21 */ 268 1.1 aymeric PID_ISI, /* 22 */ 269 1.1 aymeric PID_US3, /* 23 */ 270 1.1 aymeric PID_US4, /* 24 */ 271 1.1 aymeric PID_US5, /* 25 */ 272 1.1 aymeric PID_TC3, /* 26 */ 273 1.1 aymeric PID_TC4, /* 27 */ 274 1.1 aymeric PID_TC5, /* 28 */ 275 1.1 aymeric PID_IRQ0, /* 29 */ 276 1.1 aymeric PID_IRQ1, /* 30 */ 277 1.1 aymeric PID_IRQ2, /* 31 */ 278 1.1 aymeric }; 279 1.1 aymeric 280 1.1 aymeric #endif /* _AT91SAM9260REG_H_ */ 281