HPM SDK
HPMicro Software Development Kit
hpm_soc.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2024 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 
9 #ifndef HPM_SOC_H
10 #define HPM_SOC_H
11 
12 
13 /* List of external IRQs */
14 #define IRQn_GPIO0_A 1 /* GPIO0_A IRQ */
15 #define IRQn_GPIO0_B 2 /* GPIO0_B IRQ */
16 #define IRQn_GPIO0_X 3 /* GPIO0_X IRQ */
17 #define IRQn_GPIO0_Y 4 /* GPIO0_Y IRQ */
18 #define IRQn_GPTMR0 5 /* GPTMR0 IRQ */
19 #define IRQn_GPTMR1 6 /* GPTMR1 IRQ */
20 #define IRQn_UART0 13 /* UART0 IRQ */
21 #define IRQn_UART1 14 /* UART1 IRQ */
22 #define IRQn_UART2 15 /* UART2 IRQ */
23 #define IRQn_UART3 16 /* UART3 IRQ */
24 #define IRQn_I2C0 21 /* I2C0 IRQ */
25 #define IRQn_I2C1 22 /* I2C1 IRQ */
26 #define IRQn_I2C2 23 /* I2C2 IRQ */
27 #define IRQn_I2C3 24 /* I2C3 IRQ */
28 #define IRQn_SPI0 25 /* SPI0 IRQ */
29 #define IRQn_SPI1 26 /* SPI1 IRQ */
30 #define IRQn_SPI2 27 /* SPI2 IRQ */
31 #define IRQn_SPI3 28 /* SPI3 IRQ */
32 #define IRQn_TSNS 29 /* TSNS IRQ */
33 #define IRQn_MBX0A 30 /* MBX0A IRQ */
34 #define IRQn_MBX0B 31 /* MBX0B IRQ */
35 #define IRQn_EWDG0 32 /* EWDG0 IRQ */
36 #define IRQn_EWDG1 33 /* EWDG1 IRQ */
37 #define IRQn_HDMA 34 /* HDMA IRQ */
38 #define IRQn_USB0 51 /* USB0 IRQ */
39 #define IRQn_XPI0 52 /* XPI0 IRQ */
40 #define IRQn_PSEC 54 /* PSEC IRQ */
41 #define IRQn_SECMON 55 /* SECMON IRQ */
42 #define IRQn_FUSE 57 /* FUSE IRQ */
43 #define IRQn_ADC0 58 /* ADC0 IRQ */
44 #define IRQn_ACMP_0 62 /* ACMP_0 IRQ */
45 #define IRQn_ACMP_1 63 /* ACMP_1 IRQ */
46 #define IRQn_SYSCTL 64 /* SYSCTL IRQ */
47 #define IRQn_PGPIO 65 /* PGPIO IRQ */
48 #define IRQn_PTMR 66 /* PTMR IRQ */
49 #define IRQn_PUART 67 /* PUART IRQ */
50 #define IRQn_PEWDG 68 /* PEWDG IRQ */
51 #define IRQn_BROWNOUT 69 /* BROWNOUT IRQ */
52 #define IRQn_PAD_WAKEUP 70 /* PAD_WAKEUP IRQ */
53 #define IRQn_DEBUG0 71 /* DEBUG0 IRQ */
54 #define IRQn_DEBUG1 72 /* DEBUG1 IRQ */
55 
56 #include "hpm_common.h"
57 
58 #include "hpm_gpio_regs.h"
59 /* Address of GPIO instances */
60 /* FGPIO base address */
61 #define HPM_FGPIO_BASE (0xC0000UL)
62 /* FGPIO base pointer */
63 #define HPM_FGPIO ((GPIO_Type *) HPM_FGPIO_BASE)
64 /* GPIO0 base address */
65 #define HPM_GPIO0_BASE (0xF00D0000UL)
66 /* GPIO0 base pointer */
67 #define HPM_GPIO0 ((GPIO_Type *) HPM_GPIO0_BASE)
68 /* PGPIO base address */
69 #define HPM_PGPIO_BASE (0xF411C000UL)
70 /* PGPIO base pointer */
71 #define HPM_PGPIO ((GPIO_Type *) HPM_PGPIO_BASE)
72 
73 /* Address of DM instances */
74 /* DM base address */
75 #define HPM_DM_BASE (0x30000000UL)
76 
77 #include "hpm_plic_regs.h"
78 /* Address of PLIC instances */
79 /* PLIC base address */
80 #define HPM_PLIC_BASE (0xE4000000UL)
81 /* PLIC base pointer */
82 #define HPM_PLIC ((PLIC_Type *) HPM_PLIC_BASE)
83 
84 #include "hpm_mchtmr_regs.h"
85 /* Address of MCHTMR instances */
86 /* MCHTMR base address */
87 #define HPM_MCHTMR_BASE (0xE6000000UL)
88 /* MCHTMR base pointer */
89 #define HPM_MCHTMR ((MCHTMR_Type *) HPM_MCHTMR_BASE)
90 
91 #include "hpm_plic_sw_regs.h"
92 /* Address of PLICSW instances */
93 /* PLICSW base address */
94 #define HPM_PLICSW_BASE (0xE6400000UL)
95 /* PLICSW base pointer */
96 #define HPM_PLICSW ((PLIC_SW_Type *) HPM_PLICSW_BASE)
97 
98 #include "hpm_gptmr_regs.h"
99 /* Address of GPTMR instances */
100 /* GPTMR0 base address */
101 #define HPM_GPTMR0_BASE (0xF0000000UL)
102 /* GPTMR0 base pointer */
103 #define HPM_GPTMR0 ((GPTMR_Type *) HPM_GPTMR0_BASE)
104 /* GPTMR1 base address */
105 #define HPM_GPTMR1_BASE (0xF0004000UL)
106 /* GPTMR1 base pointer */
107 #define HPM_GPTMR1 ((GPTMR_Type *) HPM_GPTMR1_BASE)
108 /* PTMR base address */
109 #define HPM_PTMR_BASE (0xF4120000UL)
110 /* PTMR base pointer */
111 #define HPM_PTMR ((GPTMR_Type *) HPM_PTMR_BASE)
112 
113 #include "hpm_uart_regs.h"
114 /* Address of UART instances */
115 /* UART0 base address */
116 #define HPM_UART0_BASE (0xF0040000UL)
117 /* UART0 base pointer */
118 #define HPM_UART0 ((UART_Type *) HPM_UART0_BASE)
119 /* UART1 base address */
120 #define HPM_UART1_BASE (0xF0044000UL)
121 /* UART1 base pointer */
122 #define HPM_UART1 ((UART_Type *) HPM_UART1_BASE)
123 /* UART2 base address */
124 #define HPM_UART2_BASE (0xF0048000UL)
125 /* UART2 base pointer */
126 #define HPM_UART2 ((UART_Type *) HPM_UART2_BASE)
127 /* UART3 base address */
128 #define HPM_UART3_BASE (0xF004C000UL)
129 /* UART3 base pointer */
130 #define HPM_UART3 ((UART_Type *) HPM_UART3_BASE)
131 /* PUART base address */
132 #define HPM_PUART_BASE (0xF4124000UL)
133 /* PUART base pointer */
134 #define HPM_PUART ((UART_Type *) HPM_PUART_BASE)
135 
136 #include "hpm_i2c_regs.h"
137 /* Address of I2C instances */
138 /* I2C0 base address */
139 #define HPM_I2C0_BASE (0xF0060000UL)
140 /* I2C0 base pointer */
141 #define HPM_I2C0 ((I2C_Type *) HPM_I2C0_BASE)
142 /* I2C1 base address */
143 #define HPM_I2C1_BASE (0xF0064000UL)
144 /* I2C1 base pointer */
145 #define HPM_I2C1 ((I2C_Type *) HPM_I2C1_BASE)
146 /* I2C2 base address */
147 #define HPM_I2C2_BASE (0xF0068000UL)
148 /* I2C2 base pointer */
149 #define HPM_I2C2 ((I2C_Type *) HPM_I2C2_BASE)
150 /* I2C3 base address */
151 #define HPM_I2C3_BASE (0xF006C000UL)
152 /* I2C3 base pointer */
153 #define HPM_I2C3 ((I2C_Type *) HPM_I2C3_BASE)
154 
155 #include "hpm_spi_regs.h"
156 /* Address of SPI instances */
157 /* SPI0 base address */
158 #define HPM_SPI0_BASE (0xF0070000UL)
159 /* SPI0 base pointer */
160 #define HPM_SPI0 ((SPI_Type *) HPM_SPI0_BASE)
161 /* SPI1 base address */
162 #define HPM_SPI1_BASE (0xF0074000UL)
163 /* SPI1 base pointer */
164 #define HPM_SPI1 ((SPI_Type *) HPM_SPI1_BASE)
165 /* SPI2 base address */
166 #define HPM_SPI2_BASE (0xF0078000UL)
167 /* SPI2 base pointer */
168 #define HPM_SPI2 ((SPI_Type *) HPM_SPI2_BASE)
169 /* SPI3 base address */
170 #define HPM_SPI3_BASE (0xF007C000UL)
171 /* SPI3 base pointer */
172 #define HPM_SPI3 ((SPI_Type *) HPM_SPI3_BASE)
173 
174 #include "hpm_crc_regs.h"
175 /* Address of CRC instances */
176 /* CRC base address */
177 #define HPM_CRC_BASE (0xF0080000UL)
178 /* CRC base pointer */
179 #define HPM_CRC ((CRC_Type *) HPM_CRC_BASE)
180 
181 #include "hpm_tsns_regs.h"
182 /* Address of TSNS instances */
183 /* TSNS base address */
184 #define HPM_TSNS_BASE (0xF0090000UL)
185 /* TSNS base pointer */
186 #define HPM_TSNS ((TSNS_Type *) HPM_TSNS_BASE)
187 
188 #include "hpm_mbx_regs.h"
189 /* Address of MBX instances */
190 /* MBX0A base address */
191 #define HPM_MBX0A_BASE (0xF00A0000UL)
192 /* MBX0A base pointer */
193 #define HPM_MBX0A ((MBX_Type *) HPM_MBX0A_BASE)
194 /* MBX0B base address */
195 #define HPM_MBX0B_BASE (0xF00A4000UL)
196 /* MBX0B base pointer */
197 #define HPM_MBX0B ((MBX_Type *) HPM_MBX0B_BASE)
198 
199 #include "hpm_ewdg_regs.h"
200 /* Address of EWDG instances */
201 /* EWDG0 base address */
202 #define HPM_EWDG0_BASE (0xF00B0000UL)
203 /* EWDG0 base pointer */
204 #define HPM_EWDG0 ((EWDG_Type *) HPM_EWDG0_BASE)
205 /* EWDG1 base address */
206 #define HPM_EWDG1_BASE (0xF00B4000UL)
207 /* EWDG1 base pointer */
208 #define HPM_EWDG1 ((EWDG_Type *) HPM_EWDG1_BASE)
209 /* PEWDG base address */
210 #define HPM_PEWDG_BASE (0xF4128000UL)
211 /* PEWDG base pointer */
212 #define HPM_PEWDG ((EWDG_Type *) HPM_PEWDG_BASE)
213 
214 #include "hpm_dmamux_regs.h"
215 /* Address of DMAMUX instances */
216 /* DMAMUX base address */
217 #define HPM_DMAMUX_BASE (0xF00C4000UL)
218 /* DMAMUX base pointer */
219 #define HPM_DMAMUX ((DMAMUX_Type *) HPM_DMAMUX_BASE)
220 
221 #include "hpm_dmav2_regs.h"
222 /* Address of DMAV2 instances */
223 /* HDMA base address */
224 #define HPM_HDMA_BASE (0xF00C8000UL)
225 /* HDMA base pointer */
226 #define HPM_HDMA ((DMAV2_Type *) HPM_HDMA_BASE)
227 
228 #include "hpm_gpiom_regs.h"
229 /* Address of GPIOM instances */
230 /* GPIOM base address */
231 #define HPM_GPIOM_BASE (0xF00D8000UL)
232 /* GPIOM base pointer */
233 #define HPM_GPIOM ((GPIOM_Type *) HPM_GPIOM_BASE)
234 
235 #include "hpm_usb_regs.h"
236 /* Address of USB instances */
237 /* USB0 base address */
238 #define HPM_USB0_BASE (0xF300C000UL)
239 /* USB0 base pointer */
240 #define HPM_USB0 ((USB_Type *) HPM_USB0_BASE)
241 
242 /* Address of ROMC instances */
243 /* ROMC base address */
244 #define HPM_ROMC_BASE (0xF3014000UL)
245 
246 #include "hpm_sec_regs.h"
247 /* Address of SEC instances */
248 /* SEC base address */
249 #define HPM_SEC_BASE (0xF3044000UL)
250 /* SEC base pointer */
251 #define HPM_SEC ((SEC_Type *) HPM_SEC_BASE)
252 
253 #include "hpm_mon_regs.h"
254 /* Address of MON instances */
255 /* MON base address */
256 #define HPM_MON_BASE (0xF3048000UL)
257 /* MON base pointer */
258 #define HPM_MON ((MON_Type *) HPM_MON_BASE)
259 
260 #include "hpm_otp_regs.h"
261 /* Address of OTP instances */
262 /* OTP base address */
263 #define HPM_OTP_BASE (0xF3050000UL)
264 /* OTP base pointer */
265 #define HPM_OTP ((OTP_Type *) HPM_OTP_BASE)
266 
267 #include "hpm_keym_regs.h"
268 /* Address of KEYM instances */
269 /* KEYM base address */
270 #define HPM_KEYM_BASE (0xF3054000UL)
271 /* KEYM base pointer */
272 #define HPM_KEYM ((KEYM_Type *) HPM_KEYM_BASE)
273 
274 #include "hpm_adc16_regs.h"
275 /* Address of ADC16 instances */
276 /* ADC0 base address */
277 #define HPM_ADC0_BASE (0xF3080000UL)
278 /* ADC0 base pointer */
279 #define HPM_ADC0 ((ADC16_Type *) HPM_ADC0_BASE)
280 
281 #include "hpm_acmp_regs.h"
282 /* Address of ACMP instances */
283 /* ACMP base address */
284 #define HPM_ACMP_BASE (0xF30B0000UL)
285 /* ACMP base pointer */
286 #define HPM_ACMP ((ACMP_Type *) HPM_ACMP_BASE)
287 
288 #include "hpm_sysctl_regs.h"
289 /* Address of SYSCTL instances */
290 /* SYSCTL base address */
291 #define HPM_SYSCTL_BASE (0xF4000000UL)
292 /* SYSCTL base pointer */
293 #define HPM_SYSCTL ((SYSCTL_Type *) HPM_SYSCTL_BASE)
294 
295 #include "hpm_ioc_regs.h"
296 /* Address of IOC instances */
297 /* IOC base address */
298 #define HPM_IOC_BASE (0xF4040000UL)
299 /* IOC base pointer */
300 #define HPM_IOC ((IOC_Type *) HPM_IOC_BASE)
301 /* PIOC base address */
302 #define HPM_PIOC_BASE (0xF4118000UL)
303 /* PIOC base pointer */
304 #define HPM_PIOC ((IOC_Type *) HPM_PIOC_BASE)
305 
306 #include "hpm_pllctlv2_regs.h"
307 /* Address of PLLCTLV2 instances */
308 /* PLLCTLV2 base address */
309 #define HPM_PLLCTLV2_BASE (0xF40C0000UL)
310 /* PLLCTLV2 base pointer */
311 #define HPM_PLLCTLV2 ((PLLCTLV2_Type *) HPM_PLLCTLV2_BASE)
312 
313 #include "hpm_ppor_regs.h"
314 /* Address of PPOR instances */
315 /* PPOR base address */
316 #define HPM_PPOR_BASE (0xF4100000UL)
317 /* PPOR base pointer */
318 #define HPM_PPOR ((PPOR_Type *) HPM_PPOR_BASE)
319 
320 #include "hpm_pcfg_regs.h"
321 /* Address of PCFG instances */
322 /* PCFG base address */
323 #define HPM_PCFG_BASE (0xF4104000UL)
324 /* PCFG base pointer */
325 #define HPM_PCFG ((PCFG_Type *) HPM_PCFG_BASE)
326 
327 #include "hpm_pgpr_regs.h"
328 /* Address of PGPR instances */
329 /* PGPR0 base address */
330 #define HPM_PGPR0_BASE (0xF4110000UL)
331 /* PGPR0 base pointer */
332 #define HPM_PGPR0 ((PGPR_Type *) HPM_PGPR0_BASE)
333 /* PGPR1 base address */
334 #define HPM_PGPR1_BASE (0xF4114000UL)
335 /* PGPR1 base pointer */
336 #define HPM_PGPR1 ((PGPR_Type *) HPM_PGPR1_BASE)
337 
338 #include "hpm_pdgo_regs.h"
339 /* Address of PDGO instances */
340 /* PDGO base address */
341 #define HPM_PDGO_BASE (0xF4134000UL)
342 /* PDGO base pointer */
343 #define HPM_PDGO ((PDGO_Type *) HPM_PDGO_BASE)
344 
345 
346 #include "riscv/riscv_core.h"
347 #include "hpm_csr_regs.h"
348 #include "hpm_interrupt.h"
349 #include "hpm_misc.h"
350 #include "hpm_otp_table.h"
351 #include "hpm_dmamux_src.h"
352 #include "hpm_iomux.h"
353 #include "hpm_pmic_iomux.h"
354 #endif /* HPM_SOC_H */