1 /* 2 * Copyright (c) 2006-2018, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 */ 9 #ifndef __AM33XX_H__ 10 #define __AM33XX_H__ 11 12 #define REG32(x) (*((volatile unsigned int *)(x))) 13 #define REG16(x) (*((volatile unsigned short *)(x))) 14 15 /** Cache Line size in ARM Cortex-A8. */ 16 #define AM33XX_CACHELINE_SIZE (64) 17 18 /** @brief Base address of AINTC memory mapped registers */ 19 #define AM33XX_AINTC_REGS (0x48200000) 20 21 22 /** @brief Base addresses of control module registers */ 23 #define AM33XX_CTLM_REGS (0x44e10000) 24 25 /** @brief Base addresses of USB memory mapped registers */ 26 #define AM33XX_USB_0_BASE (0x47401400) 27 #define AM33XX_USB_1_BASE (0x47401C00) 28 /** @brief Base addresses of SPI memory mapped registers */ 29 #define AM33XX_SPI_0_REGS (0x48030000) 30 #define AM33XX_SPI_1_REGS (0x481A0000) 31 32 /** @brief Base addresses of GPIO memory mapped registers */ 33 #define AM33XX_GPIO_0_REGS (0x44E07000) 34 #define AM33XX_GPIO_1_REGS (0x4804C000) 35 #define AM33XX_GPIO_2_REGS (0x481AC000) 36 #define AM33XX_GPIO_3_REGS (0x481AE000) 37 38 /** @brief Base addresses of DMTIMER memory mapped registers */ 39 #define AM33XX_DMTIMER_0_REGS (0x44E05000) 40 #define AM33XX_DMTIMER_1_REGS (0x44E31000) 41 #define AM33XX_DMTIMER_2_REGS (0x48040000) 42 #define AM33XX_DMTIMER_3_REGS (0x48042000) 43 #define AM33XX_DMTIMER_4_REGS (0x48044000) 44 #define AM33XX_DMTIMER_5_REGS (0x48046000) 45 #define AM33XX_DMTIMER_6_REGS (0x48048000) 46 #define AM33XX_DMTIMER_7_REGS (0x4804A000) 47 48 /** @brief Base address of MMC memory mapped registers */ 49 #define AM33XX_MMCHS_0_REGS (0x48060000) 50 #define AM33XX_MMCHS_1_REGS (0x481D8000) 51 #define AM33XX_MMCHS_2_REGS (0x47810000) 52 53 /** @brief Base address of GPMC memory mapped registers */ 54 #define AM33XX_GPMC_0_REGS (0x50000000) 55 56 /** @brief Base address of GPMC memory mapped registers */ 57 #define AM33XX_ELM_0_REGS (0x48080000) 58 59 /** @brief Base address of I2C memory mapped registers */ 60 #define AM33XX_I2C_0_REGS (0x44E0B000) 61 #define AM33XX_I2C_1_REGS (0x4802A000) 62 #define AM33XX_I2C_2_REGS (0x4819C000) 63 64 /** @brief Base address of WDT memory mapped registers */ 65 #define AM33XX_WDT_0_REGS (0x44E33000) 66 #define AM33XX_WDT_1_REGS (0x44E35000) 67 68 /** @brief Base address of WDT memory mapped registers */ 69 #define AM33XX_CPSW_SS_REGS (0x4A100000) 70 #define AM33XX_CPSW_MDIO_REGS (0x4A101000) 71 #define AM33XX_CPSW_WR_REGS (0x4A101200) 72 #define AM33XX_CPSW_CPDMA_REGS (0x4A100800) 73 #define AM33XX_CPSW_ALE_REGS (0x4A100D00) 74 #define AM33XX_CPSW_STAT_REGS (0x4A100900) 75 #define AM33XX_CPSW_PORT_0_REGS (0x4A100100) 76 #define AM33XX_CPSW_PORT_1_REGS (0x4A100200) 77 #define AM33XX_CPSW_SLIVER_1_REGS (0x4A100D80) 78 #define AM33XX_CPSW_PORT_2_REGS (0x4A100300) 79 #define AM33XX_CPSW_SLIVER_2_REGS (0x4A100DC0) 80 #define AM33XX_CPSW_CPPI_RAM_REGS (0x4A102000) 81 82 /** @brief Base address of McASP memory mapped registers */ 83 #define AM33XX_MCASP_1_CTRL_REGS (0x4803C000) 84 #define AM33XX_MCASP_1_FIFO_REGS (AM33XX_MCASP_1_CTRL_REGS + 0x1000) 85 #define AM33XX_MCASP_1_DATA_REGS (0x46400000) 86 87 /** @brief Base address of EMIF memory mapped registers */ 88 #define AM33XX_EMIF_0_REGS (0x4C000000) 89 90 /** @brief Base addresses of RTC memory mapped registers */ 91 #define AM33XX_RTC_0_REGS (0x44E3E000) 92 93 #define CM_PER(base) ((base) + 0) 94 #define CM_PER_L4LS_CLKSTCTRL(base) (CM_PER(base) + 0) 95 #define CM_PER_UART1_CLKCTRL(base) (CM_PER(base) + 0x6C) 96 #define CM_PER_UART2_CLKCTRL(base) (CM_PER(base) + 0x70) 97 #define CM_PER_UART3_CLKCTRL(base) (CM_PER(base) + 0x74) 98 #define CM_PER_UART4_CLKCTRL(base) (CM_PER(base) + 0x78) 99 #define CM_PER_UART5_CLKCTRL(base) (CM_PER(base) + 0x38) 100 #define CM_WKUP(base) ((base) + 0x400) 101 #define CM_DPLL(base) ((base) + 0x500) 102 #define CM_MPU(base) ((base) + 0x600) 103 #define CM_DEVICE(base) ((base) + 0x700) 104 #define CM_RTC(base) ((base) + 0x800) 105 #define CM_GFX(base) ((base) + 0x900) 106 #define CM_CEFUSE(base) ((base) + 0xA00) 107 #define OCP_AM33XXKET_RAM(base) ((base) + 0xB00) 108 #define PRM_PER(base) ((base) + 0xC00) 109 #define PRM_PER_PWRSTST(base) (PRM_PER(base) + 0x008) 110 #define PRM_PER_PWRSTCTRL(base) (PRM_PER(base) + 0x00C) 111 #define PRM_WKUP(base) ((base) + 0xD00) 112 #define PRM_MPU(base) ((base) + 0xE00) 113 #define PRM_DEVICE(base) ((base) + 0xF00) 114 #define PRM_RTC(base) ((base) + 0x1000) 115 #define PRM_GFX(base) ((base) + 0x1100) 116 #define PRM_CEFUSE(base) ((base) + 0x1200) 117 118 /** @brief Base addresses of PRCM memory mapped registers */ 119 #define AM33XX_PRCM_REGS (0x44E00000) 120 #define AM33XX_CM_PER_REGS CM_PER(AM33XX_PRCM_REGS) 121 #define AM33XX_CM_WKUP_REGS CM_WKUP(AM33XX_PRCM_REGS) 122 #define AM33XX_CM_DPLL_REGS CM_DPLL(AM33XX_PRCM_REGS) 123 #define AM33XX_CM_MPU_REGS CM_MPU(AM33XX_PRCM_REGS) 124 #define AM33XX_CM_DEVICE_REGS CM_DEVICE(AM33XX_PRCM_REGS) 125 #define AM33XX_CM_RTC_REGS CM_RTC(AM33XX_PRCM_REGS) 126 #define AM33XX_CM_GFX_REGS CM_GFX(AM33XX_PRCM_REGS) 127 #define AM33XX_CM_CEFUSE_REGS CM_CEFUSE(AM33XX_PRCM_REGS) 128 #define AM33XX_OCP_AM33XXKET_RAM_REGS OCP_AM33XXKET_RAM(AM33XX_PRCM_REGS) 129 #define AM33XX_PRM_PER_REGS PRM_PER(AM33XX_PRCM_REGS) 130 #define AM33XX_PRM_WKUP_REGS PRM_WKUP(AM33XX_PRCM_REGS) 131 #define AM33XX_PRM_MPU_REGS PRM_MPU(AM33XX_PRCM_REGS) 132 #define AM33XX_PRM_DEVICE_REGS PRM_DEVICE(AM33XX_PRCM_REGS) 133 #define AM33XX_PRM_RTC_REGS PRM_RTC(AM33XX_PRCM_REGS) 134 #define AM33XX_PRM_GFX_REGS PRM_GFX(AM33XX_PRCM_REGS) 135 #define AM33XX_PRM_CEFUSE_REGS PRM_CEFUSE(AM33XX_PRCM_REGS) 136 137 /** @brief Base address of control module memory mapped registers */ 138 #define AM33XX_CONTROL_REGS (0x44E10000) 139 140 141 /** @brief Base address of Channel controller memory mapped registers */ 142 #define AM33XX_EDMA30CC_0_REGS (0x49000000) 143 144 /** @brief Base address of DCAN module memory mapped registers */ 145 #define AM33XX_DCAN_0_REGS (0x481CC000) 146 #define AM33XX_DCAN_1_REGS (0x481D0000) 147 148 /******************************************************************************\ 149 * Parameterizable Configuration:- These are fed directly from the RTL 150 * parameters for the given AM33XX 151 \******************************************************************************/ 152 #define TPCC_MUX(n) 0xF90 + ((n) * 4) 153 154 155 #define AM33XX_LCDC_0_REGS 0x4830E000 156 157 #define AM33XX_ADC_TSC_0_REGS 0x44E0D000 158 159 /** @brief Base addresses of PWMSS memory mapped registers. */ 160 161 #define AM33XX_PWMSS0_REGS (0x48300000) 162 #define AM33XX_PWMSS1_REGS (0x48302000) 163 #define AM33XX_PWMSS2_REGS (0x48304000) 164 165 #define AM33XX_ECAP_REGS (0x00000100) 166 #define AM33XX_EQEP_REGS (0x00000180) 167 #define AM33XX_EPWM_REGS (0x00000200) 168 169 #define AM33XX_ECAP_0_REGS (AM33XX_PWMSS0_REGS + AM33XX_ECAP_REGS) 170 #define AM33XX_ECAP_1_REGS (AM33XX_PWMSS1_REGS + AM33XX_ECAP_REGS) 171 #define AM33XX_ECAP_2_REGS (AM33XX_PWMSS2_REGS + AM33XX_ECAP_REGS) 172 173 #define AM33XX_EQEP_0_REGS (AM33XX_PWMSS0_REGS + AM33XX_EQEP_REGS) 174 #define AM33XX_EQEP_1_REGS (AM33XX_PWMSS1_REGS + AM33XX_EQEP_REGS) 175 #define AM33XX_EQEP_2_REGS (AM33XX_PWMSS2_REGS + AM33XX_EQEP_REGS) 176 177 #define AM33XX_EPWM_0_REGS (AM33XX_PWMSS0_REGS + AM33XX_EPWM_REGS) 178 #define AM33XX_EPWM_1_REGS (AM33XX_PWMSS1_REGS + AM33XX_EPWM_REGS) 179 #define AM33XX_EPWM_2_REGS (AM33XX_PWMSS2_REGS + AM33XX_EPWM_REGS) 180 181 #define AM33XX_EPWM_MODULE_FREQ 100 182 183 /* PRCM registers */ 184 #define CM_PER_L4LS_CLKSTCTRL_REG(base) REG32((base) + 0x0) 185 #define CM_PER_UART1_CLKCTRL_REG(base) REG32(CM_PER_UART1_CLKCTRL(base)) 186 #define CM_PER_UART2_CLKCTRL_REG(base) REG32(CM_PER_UART2_CLKCTRL(base)) 187 #define CM_PER_UART3_CLKCTRL_REG(base) REG32(CM_PER_UART3_CLKCTRL(base)) 188 #define CM_PER_UART4_CLKCTRL_REG(base) REG32(CM_PER_UART4_CLKCTRL(base)) 189 #define CM_PER_UART5_CLKCTRL_REG(base) REG32(CM_PER_UART5_CLKCTRL(base)) 190 191 #define CM_PER_TIMER7_CLKCTRL(base) REG32((base) + 0x7C) 192 #define CM_PER_TIMER2_CLKCTRL(base) REG32((base) + 0x80) 193 194 #define PRM_PER_PWRSTST_REG(base) REG32(PRM_PER_PWRSTST(base)) 195 #define PRM_PER_PWRSTCTRL_REG(base) REG32(PRM_PER_PWRSTCTRL(base)) 196 197 #define CM_DPLL_CLKSEL_TIMER7_CLK(base) REG32(CM_DPLL(base) + 0x4) 198 #define CM_DPLL_CLKSEL_TIMER2_CLK(base) REG32(CM_DPLL(base) + 0x8) 199 200 /* timer registers */ 201 #define DMTIMER_TIDR(base) REG32(base + 0x0) 202 #define DMTIMER_TIOCP_CFG(base) REG32(base + 0x10) 203 #define DMTIMER_IRQ_EOI(base) REG32(base + 0x20) 204 #define DMTIMER_IRQSTATUS_RAW(base) REG32(base + 0x24) 205 #define DMTIMER_IRQSTATUS(base) REG32(base + 0x28) 206 #define DMTIMER_IRQENABLE_SET(base) REG32(base + 0x2C) 207 #define DMTIMER_IRQENABLE_CLR(base) REG32(base + 0x30) 208 #define DMTIMER_IRQWAKEEN(base) REG32(base + 0x34) 209 #define DMTIMER_TCLR(base) REG32(base + 0x38) 210 #define DMTIMER_TCRR(base) REG32(base + 0x3C) 211 #define DMTIMER_TLDR(base) REG32(base + 0x40) 212 #define DMTIMER_TTGR(base) REG32(base + 0x44) 213 #define DMTIMER_TWPS(base) REG32(base + 0x48) 214 #define DMTIMER_TMAR(base) REG32(base + 0x4C) 215 #define DMTIMER_TCAR(base, n) REG32(base + 0x50 + (((n) - 1) * 8)) 216 #define DMTIMER_TSICR(base) REG32(base + 0x54) 217 218 #define EMU_INT 0 219 #define COMMTX_INT 1 220 #define COMMRX_INT 2 221 #define BENCH_INT 3 222 #define ELM_IRQ_INT 4 223 #define NMI_INT 7 224 #define L3DEBUG_INT 9 225 #define L3APP_INT 10 226 #define PRCM_INT 11 227 #define EDMACOMP_INT 12 228 #define EDMAMPERR_INT 13 229 #define EDMAERR_INT 14 230 #define ADC_TSC_GEN_INT 16 231 #define USBSS_INT 17 232 #define USB_INT0 18 233 #define USB_INT1 19 234 #define PRU_ICSS_EVTOUT0_INT 20 235 #define PRU_ICSS_EVTOUT1_INT 21 236 #define PRU_ICSS_EVTOUT2_INT 22 237 #define PRU_ICSS_EVTOUT3_INT 23 238 #define PRU_ICSS_EVTOUT4_INT 24 239 #define PRU_ICSS_EVTOUT5_INT 25 240 #define PRU_ICSS_EVTOUT6_INT 26 241 #define PRU_ICSS_EVTOUT7_INT 27 242 #define MMCSD1_INT 28 243 #define MMCSD2_INT 29 244 #define I2C2_INT 30 245 #define ECAP0_INT 31 246 #define GPIO_INT2A 32 247 #define GPIO_INT2B 33 248 #define USBWAKEUP_INT 34 249 #define LCDC_INT 36 250 #define GFX_INT 37 251 #define EPWM2_INT 39 252 #define CPSW_RXTHR0_INT 40 253 #define CPSW_RX_INT0 41 254 #define CPSW_TX_INT0 42 255 #define CPSW_MISC0_INT 43 256 #define UART3_INT 44 257 #define UART4_INT 45 258 #define UART5_INT 46 259 #define ECAP1_INT 47 260 #define DCAN0_INT0 52 261 #define DCAN0_INT1 53 262 #define DCAN0_PARITY 54 263 #define DCAN1_INT0 55 264 #define DCAN1_INT1 56 265 #define DCAN1_PARITY 57 266 #define EPWM0_TZINT 58 267 #define EPWM1_TZINT 59 268 #define EPWM2_TZINT 60 269 #define ECAP2_INT 61 270 #define GPIO_INT3A 62 271 #define GPIO_INT3B 63 272 #define MMCSD0_INT 64 273 #define MCSPI0_INT 65 274 #define TINT0 66 275 #define TINT1_1MS 67 276 #define TINT2 68 277 #define TINT3 69 278 #define I2C0_INT 70 279 #define I2C1_INT 71 280 #define UART0_INT 72 281 #define UART1_INT 73 282 #define UART2_INT 74 283 #define RTC_INT 75 284 #define RTC_ALARM_INT 76 285 #define MB_INT0 77 286 #define M3_TXEV 78 287 #define EQEP0_INT 79 288 #define MACTX_INT0 80 289 #define MCARX_INT0 81 290 #define MCATX_INT1 82 291 #define MCARX_INT1 83 292 #define EPWM0_INT 86 293 #define EPWM1_INT 87 294 #define EQEP1_INT 88 295 #define EQEP2_INT 89 296 #define DMA_INTR_PIN2 90 297 #define WDT1_INT 91 298 #define TINT4 92 299 #define TINT5 93 300 #define TINT6 94 301 #define TINT7 95 302 #define GPIO_INT0A 96 303 #define GPIO_INT0B 97 304 #define GPIO_INT1A 98 305 #define GPIO_INT1B 99 306 #define GPMC_INT 100 307 #define DDRERR0 101 308 #define TCERR_INT0 112 309 #define TCERR_INT1 113 310 #define TCERR_INT2 114 311 #define ADC_TSC_PEN_INT 115 312 #define SMRFLX_MPU 120 313 #define SMRFLX_CORE 121 314 #define DMA_INTR_PIN0 123 315 #define DMA_INTR_PIN1 124 316 #define MCSPI1_INT 125 317 318 struct rt_hw_register 319 { 320 unsigned long r0; 321 unsigned long r1; 322 unsigned long r2; 323 unsigned long r3; 324 unsigned long r4; 325 unsigned long r5; 326 unsigned long r6; 327 unsigned long r7; 328 unsigned long r8; 329 unsigned long r9; 330 unsigned long r10; 331 unsigned long fp; 332 unsigned long ip; 333 unsigned long sp; 334 unsigned long lr; 335 unsigned long pc; 336 unsigned long cpsr; 337 unsigned long ORIG_r0; 338 }; 339 340 #define USERMODE 0x10 341 #define FIQMODE 0x11 342 #define IRQMODE 0x12 343 #define SVCMODE 0x13 344 #define ABORTMODE 0x17 345 #define UNDEFMODE 0x1b 346 #define MODEMASK 0x1f 347 #define NOINT 0xc0 348 349 #endif 350