1 /* SPDX-License-Identifier: BSD-Source-Code */ 2 /* 3 * Copyright (c) 2015, Atmel Corporation 4 * Copyright (c) 2017, Timesys Corporation 5 * 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions are met: 10 * 11 * - Redistributions of source code must retain the above copyright notice, 12 * this list of conditions and the disclaimer below. 13 * 14 * Atmel's name may not be used to endorse or promote products derived from 15 * this software without specific prior written permission. 16 * 17 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR 18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE 20 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 23 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 #ifndef SAMA5D2_H 29 #define SAMA5D2_H 30 31 /* 32 * Peripheral identifiers/interrupts. 33 */ 34 #define AT91C_ID_FIQ 0 /* FIQ Interrupt ID */ 35 #define AT91C_ID_PMC 1 /* Power Management Controller */ 36 #define AT91C_ID_ARM 2 /* Performance Monitor Unit */ 37 #define AT91C_ID_PIT 3 /* Periodic Interval Timer Interrupt */ 38 #define AT91C_ID_WDT 4 /* Watchdog Timer Interrupt */ 39 #define AT91C_ID_GMAC 5 /* Ethernet MAC */ 40 #define AT91C_ID_XDMAC0 6 /* DMA Controller 0 */ 41 #define AT91C_ID_XDMAC1 7 /* DMA Controller 1 */ 42 #define AT91C_ID_ICM 8 /* Integrity Check Monitor */ 43 #define AT91C_ID_AES 9 /* Advanced Encryption Standard */ 44 #define AT91C_ID_AESB 10 /* AES bridge */ 45 #define AT91C_ID_TDES 11 /* Triple Data Encryption Standard */ 46 #define AT91C_ID_SHA 12 /* SHA Signature */ 47 #define AT91C_ID_MPDDRC 13 /* MPDDR Controller */ 48 #define AT91C_ID_MATRIX1 14 /* H32MX, 32-bit AHB Matrix */ 49 #define AT91C_ID_MATRIX0 15 /* H64MX, 64-bit AHB Matrix */ 50 #define AT91C_ID_SECUMOD 16 /* Secure Module */ 51 #define AT91C_ID_HSMC 17 /* Multi-bit ECC interrupt */ 52 #define AT91C_ID_PIOA 18 /* Parallel I/O Controller A */ 53 #define AT91C_ID_FLEXCOM0 19 /* FLEXCOM0 */ 54 #define AT91C_ID_FLEXCOM1 20 /* FLEXCOM1 */ 55 #define AT91C_ID_FLEXCOM2 21 /* FLEXCOM2 */ 56 #define AT91C_ID_FLEXCOM3 22 /* FLEXCOM3 */ 57 #define AT91C_ID_FLEXCOM4 23 /* FLEXCOM4 */ 58 #define AT91C_ID_UART0 24 /* UART0 */ 59 #define AT91C_ID_UART1 25 /* UART1 */ 60 #define AT91C_ID_UART2 26 /* UART2 */ 61 #define AT91C_ID_UART3 27 /* UART3 */ 62 #define AT91C_ID_UART4 28 /* UART4 */ 63 #define AT91C_ID_TWI0 29 /* Two-wire Interface 0 */ 64 #define AT91C_ID_TWI1 30 /* Two-wire Interface 1 */ 65 #define AT91C_ID_SDMMC0 31 /* SDMMC Controller 0 */ 66 #define AT91C_ID_SDMMC1 32 /* SDMMC Controller 1 */ 67 #define AT91C_ID_SPI0 33 /* Serial Peripheral Interface 0 */ 68 #define AT91C_ID_SPI1 34 /* Serial Peripheral Interface 1 */ 69 #define AT91C_ID_TC0 35 /* Timer Counter 0 (ch.0,1,2) */ 70 #define AT91C_ID_TC1 36 /* Timer Counter 1 (ch.3,4,5) */ 71 /* 37 */ 72 #define AT91C_ID_PWM 38 /* PWM Controller0 (ch. 0,1,2,3) */ 73 /* 39 */ 74 #define AT91C_ID_ADC 40 /* Touch Screen ADC Controller */ 75 #define AT91C_ID_UHPHS 41 /* USB Host High Speed */ 76 #define AT91C_ID_UDPHS 42 /* USB Device High Speed */ 77 #define AT91C_ID_SSC0 43 /* Serial Synchronous Controller 0 */ 78 #define AT91C_ID_SSC1 44 /* Serial Synchronous Controller 1 */ 79 #define AT91C_ID_LCDC 45 /* LCD Controller */ 80 #define AT91C_ID_ISI 46 /* Image Sensor Interface */ 81 #define AT91C_ID_TRNG 47 /* True Random Number Generator */ 82 #define AT91C_ID_PDMIC 48 /* PDM Interface Controller */ 83 #define AT91C_ID_IRQ 49 /* IRQ Interrupt ID */ 84 #define AT91C_ID_SFC 50 /* Fuse Controller */ 85 #define AT91C_ID_SECURAM 51 /* Secure RAM */ 86 #define AT91C_ID_QSPI0 52 /* QSPI0 */ 87 #define AT91C_ID_QSPI1 53 /* QSPI1 */ 88 #define AT91C_ID_I2SC0 54 /* Inter-IC Sound Controller 0 */ 89 #define AT91C_ID_I2SC1 55 /* Inter-IC Sound Controller 1 */ 90 #define AT91C_ID_CAN0_INT0 56 /* MCAN 0 Interrupt0 */ 91 #define AT91C_ID_CAN1_INT0 57 /* MCAN 1 Interrupt0 */ 92 #define AT91C_ID_PTC 58 /* Peripheral Touch Controller */ 93 #define AT91C_ID_CLASSD 59 /* Audio Class D Amplifier */ 94 #define AT91C_ID_SFR 60 /* Special Function Register */ 95 #define AT91C_ID_SAIC 61 /* Secured AIC */ 96 #define AT91C_ID_AIC 62 /* Advanced Interrupt Controller */ 97 #define AT91C_ID_L2CC 63 /* L2 Cache Controller */ 98 #define AT91C_ID_CAN0_INT1 64 /* MCAN 0 Interrupt1 */ 99 #define AT91C_ID_CAN1_INT1 65 /* MCAN 1 Interrupt1 */ 100 #define AT91C_ID_GMAC_Q1 66 /* GMAC Queue 1 Interrupt */ 101 #define AT91C_ID_GMAC_Q2 67 /* GMAC Queue 2 Interrupt */ 102 #define AT91C_ID_PIOB 68 /* Parallel I/O Controller B */ 103 #define AT91C_ID_PIOC 69 /* Parallel I/O Controller C */ 104 #define AT91C_ID_PIOD 70 /* Parallel I/O Controller D */ 105 #define AT91C_ID_SDMMC0_TIMER 71 /* SDMMC0 Timer */ 106 #define AT91C_ID_SDMMC1_TIMER 72 /* SDMMC1 Timer */ 107 /* 73 */ 108 #define AT91C_ID_SYS 74 /* System Controller Interrupt */ 109 #define AT91C_ID_ACC 75 /* Analog Comparator */ 110 #define AT91C_ID_RXLP 76 /* UART Low-Power */ 111 #define AT91C_ID_SFRBU 77 /* Special Function Register BackUp */ 112 #define AT91C_ID_CHIPID 78 /* Chip ID */ 113 114 #define AT91C_ID_COUNTS (AT91C_ID_CHIPID + 1) 115 116 /* 117 * User Peripherals physical base addresses. 118 */ 119 #define AT91C_BASE_LCDC 0xf0000000 120 #define AT91C_BASE_XDMAC1 0xf0004000 121 #define AT91C_BASE_HXISI 0xf0008000 122 #define AT91C_BASE_MPDDRC 0xf000c000 123 #define AT91C_BASE_XDMAC0 0xf0010000 124 #define AT91C_BASE_PMC 0xf0014000 125 #define AT91C_BASE_MATRIX64 0xf0018000 /* MATRIX0 */ 126 #define AT91C_BASE_AESB 0xf001c000 127 #define AT91C_BASE_QSPI0 0xf0020000 128 #define AT91C_BASE_QSPI1 0xf0024000 129 #define AT91C_BASE_SHA 0xf0028000 130 #define AT91C_BASE_AES 0xf002c000 131 132 #define AT91C_BASE_SPI0 0xf8000000 133 #define AT91C_BASE_SSC0 0xf8004000 134 #define AT91C_BASE_GMAC 0xf8008000 135 #define AT91C_BASE_TC0 0xf800c000 136 #define AT91C_BASE_TC1 0xf8010000 137 #define AT91C_BASE_HSMC 0xf8014000 138 #define AT91C_BASE_PDMIC 0xf8018000 139 #define AT91C_BASE_UART0 0xf801c000 140 #define AT91C_BASE_UART1 0xf8020000 141 #define AT91C_BASE_UART2 0xf8024000 142 #define AT91C_BASE_TWI0 0xf8028000 143 #define AT91C_BASE_PWMC 0xf802c000 144 #define AT91C_BASE_SFR 0xf8030000 145 #define AT91C_BASE_FLEXCOM0 0xf8034000 146 #define AT91C_BASE_FLEXCOM1 0xf8038000 147 #define AT91C_BASE_SAIC 0xf803c000 148 #define AT91C_BASE_ICM 0xf8040000 149 #define AT91C_BASE_SECURAM 0xf8044000 150 #define AT91C_BASE_SYSC 0xf8048000 151 #define AT91C_BASE_ACC 0xf804a000 152 #define AT91C_BASE_SFC 0xf804c000 153 #define AT91C_BASE_I2SC0 0xf8050000 154 #define AT91C_BASE_CAN0 0xf8054000 155 156 #define AT91C_BASE_SPI1 0xfc000000 157 #define AT91C_BASE_SSC1 0xfc004000 158 #define AT91C_BASE_UART3 0xfc008000 159 #define AT91C_BASE_UART4 0xfc00c000 160 #define AT91C_BASE_FLEXCOM2 0xfc010000 161 #define AT91C_BASE_FLEXCOM3 0xfc014000 162 #define AT91C_BASE_FLEXCOM4 0xfc018000 163 #define AT91C_BASE_TRNG 0xfc01c000 164 #define AT91C_BASE_AIC 0xfc020000 165 #define AT91C_BASE_TWI1 0xfc028000 166 #define AT91C_BASE_UDPHS 0xfc02c000 167 #define AT91C_BASE_ADC 0xfc030000 168 169 #define AT91C_BASE_PIOA 0xfc038000 170 #define AT91C_BASE_MATRIX32 0xfc03c000 /* MATRIX1 */ 171 #define AT91C_BASE_SECUMOD 0xfc040000 172 #define AT91C_BASE_TDES 0xfc044000 173 #define AT91C_BASE_CLASSD 0xfc048000 174 #define AT91C_BASE_I2SC1 0xfc04c000 175 #define AT91C_BASE_CAN1 0xfc050000 176 #define AT91C_BASE_SFRBU 0xfc05c000 177 #define AT91C_BASE_CHIPID 0xfc069000 178 179 /* 180 * Address Memory Space 181 */ 182 #define AT91C_BASE_INTERNAL_MEM 0x00000000 183 #define AT91C_BASE_CS0 0x10000000 184 #define AT91C_BASE_DDRCS 0x20000000 185 #define AT91C_BASE_DDRCS_AES 0x40000000 186 #define AT91C_BASE_CS1 0x60000000 187 #define AT91C_BASE_CS2 0x70000000 188 #define AT91C_BASE_CS3 0x80000000 189 #define AT91C_BASE_QSPI0_AES_MEM 0x90000000 190 #define AT91C_BASE_QSPI1_AES_MEM 0x98000000 191 #define AT91C_BASE_SDHC0 0xa0000000 192 #define AT91C_BASE_SDHC1 0xb0000000 193 #define AT91C_BASE_NFC_CMD_REG 0xc0000000 194 #define AT91C_BASE_QSPI0_MEM 0xd0000000 195 #define AT91C_BASE_QSPI1_MEM 0xd8000000 196 #define AT91C_BASE_PERIPH 0xf0000000 197 198 /* 199 * Internal Memories 200 */ 201 #define AT91C_BASE_ROM 0x00000000 /* ROM */ 202 #define AT91C_BASE_ECC_ROM 0x00060000 /* ECC ROM */ 203 #define AT91C_BASE_NFC_SRAM 0x00100000 /* NFC SRAM */ 204 #define AT91C_BASE_SRAM0 0x00200000 /* SRAM0 */ 205 #define AT91C_BASE_SRAM1 0x00220000 /* SRAM1 */ 206 #define AT91C_BASE_UDPHS_SRAM 0x00300000 /* UDPHS RAM */ 207 #define AT91C_BASE_UHP_OHCI 0x00400000 /* UHP OHCI */ 208 #define AT91C_BASE_UHP_EHCI 0x00500000 /* UHP EHCI */ 209 #define AT91C_BASE_AXI_MATRIX 0x00600000 /* AXI Maxtrix */ 210 #define AT91C_BASE_DAP 0x00700000 /* DAP */ 211 #define AT91C_BASE_PTC 0x00800000 /* PTC */ 212 #define AT91C_BASE_L2CC 0x00A00000 /* L2CC */ 213 214 /* 215 * Other misc defines 216 */ 217 #define AT91C_BASE_PMECC (AT91C_BASE_HSMC + 0x70) 218 #define AT91C_BASE_PMERRLOC (AT91C_BASE_HSMC + 0x500) 219 220 #define AT91_PMECC (AT91C_BASE_PMECC - AT91C_BASE_SYS) 221 #define AT91_PMERRLOC (AT91C_BASE_PMERRLOC - AT91C_BASE_SYS) 222 223 #define AT91C_BASE_PIOB (AT91C_BASE_PIOA + 0x40) 224 #define AT91C_BASE_PIOC (AT91C_BASE_PIOB + 0x40) 225 #define AT91C_BASE_PIOD (AT91C_BASE_PIOC + 0x40) 226 227 /* SYSC spawns */ 228 #define AT91C_BASE_RSTC AT91C_BASE_SYSC 229 #define AT91C_BASE_SHDC (AT91C_BASE_SYSC + 0x10) 230 #define AT91C_BASE_PITC (AT91C_BASE_SYSC + 0x30) 231 #define AT91C_BASE_WDT (AT91C_BASE_SYSC + 0x40) 232 #define AT91C_BASE_SCKCR (AT91C_BASE_SYSC + 0x50) 233 #define AT91C_BASE_RTCC (AT91C_BASE_SYSC + 0xb0) 234 235 #define ATMEL_BASE_SMC (AT91C_BASE_HSMC + 0x700) 236 237 #define AT91C_NUM_PIO 4 238 #define AT91C_NUM_TWI 2 239 240 /* AICREDIR Unlock Key */ 241 #define AICREDIR_KEY 0xB6D81C4D 242 243 /* 244 * Matrix Slaves ID 245 */ 246 /* MATRIX0(H64MX) Matrix Slaves */ 247 /* Bridge from H64MX to AXIMX (Internal ROM, Cryto Library, PKCC RAM) */ 248 #define H64MX_SLAVE_BRIDGE_TO_AXIMX 0 249 #define H64MX_SLAVE_PERI_BRIDGE 1 /* H64MX Peripheral Bridge */ 250 #define H64MX_SLAVE_DDR2_PORT_0 2 /* DDR2 Port0-AESOTF */ 251 #define H64MX_SLAVE_DDR2_PORT_1 3 /* DDR2 Port1 */ 252 #define H64MX_SLAVE_DDR2_PORT_2 4 /* DDR2 Port2 */ 253 #define H64MX_SLAVE_DDR2_PORT_3 5 /* DDR2 Port3 */ 254 #define H64MX_SLAVE_DDR2_PORT_4 6 /* DDR2 Port4 */ 255 #define H64MX_SLAVE_DDR2_PORT_5 7 /* DDR2 Port5 */ 256 #define H64MX_SLAVE_DDR2_PORT_6 8 /* DDR2 Port6 */ 257 #define H64MX_SLAVE_DDR2_PORT_7 9 /* DDR2 Port7 */ 258 #define H64MX_SLAVE_INTERNAL_SRAM 10 /* Internal SRAM 128K */ 259 #define H64MX_SLAVE_CACHE_L2 11 /* Internal SRAM 128K (L2) */ 260 #define H64MX_SLAVE_QSPI0 12 /* QSPI0 */ 261 #define H64MX_SLAVE_QSPI1 13 /* QSPI1 */ 262 #define H64MX_SLAVE_AESB 14 /* AESB */ 263 264 /* MATRIX1(H32MX) Matrix Slaves */ 265 #define H32MX_BRIDGE_TO_H64MX 0 /* Bridge from H32MX to H64MX */ 266 #define H32MX_PERI_BRIDGE_0 1 /* H32MX Peripheral Bridge 0 */ 267 #define H32MX_PERI_BRIDGE_1 2 /* H32MX Peripheral Bridge 1 */ 268 #define H32MX_EXTERNAL_EBI 3 /* External Bus Interface */ 269 #define H32MX_NFC_CMD_REG 3 /* NFC command Register */ 270 #define H32MX_NFC_SRAM 4 /* NFC SRAM */ 271 #define H32MX_USB 5 272 273 #endif /* #ifndef SAMA5D2_H */ 274