xref: /nrf52832-nimble/rt-thread/libcpu/arm/am335x/am33xx.h (revision 104654410c56c573564690304ae786df310c91fc)
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