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