HPM SDK
HPMicro Software Development Kit
hpm_soc.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2025 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 #include "hpm_soc_irq.h"
14 #include "hpm_common.h"
15 
16 #include "hpm_gpio_regs.h"
17 /* Address of GPIO instances */
18 /* FGPIO base address */
19 #define HPM_FGPIO_BASE (0x300000UL)
20 /* FGPIO base pointer */
21 #define HPM_FGPIO ((GPIO_Type *) HPM_FGPIO_BASE)
22 /* GPIO0 base address */
23 #define HPM_GPIO0_BASE (0xF00D0000UL)
24 /* GPIO0 base pointer */
25 #define HPM_GPIO0 ((GPIO_Type *) HPM_GPIO0_BASE)
26 /* PGPIO base address */
27 #define HPM_PGPIO_BASE (0xF411C000UL)
28 /* PGPIO base pointer */
29 #define HPM_PGPIO ((GPIO_Type *) HPM_PGPIO_BASE)
30 
31 /* Address of TFA instances */
32 /* TFA base address */
33 #define HPM_TFA_BASE (0x400000UL)
34 
35 /* Address of DM instances */
36 /* DM base address */
37 #define HPM_DM_BASE (0x30000000UL)
38 
39 #include "hpm_plic_regs.h"
40 /* Address of PLIC instances */
41 /* PLIC base address */
42 #define HPM_PLIC_BASE (0xE4000000UL)
43 /* PLIC base pointer */
44 #define HPM_PLIC ((PLIC_Type *) HPM_PLIC_BASE)
45 
46 #include "hpm_mchtmr_regs.h"
47 /* Address of MCHTMR instances */
48 /* MCHTMR base address */
49 #define HPM_MCHTMR_BASE (0xE6000000UL)
50 /* MCHTMR base pointer */
51 #define HPM_MCHTMR ((MCHTMR_Type *) HPM_MCHTMR_BASE)
52 
53 #include "hpm_plic_sw_regs.h"
54 /* Address of PLICSW instances */
55 /* PLICSW base address */
56 #define HPM_PLICSW_BASE (0xE6400000UL)
57 /* PLICSW base pointer */
58 #define HPM_PLICSW ((PLIC_SW_Type *) HPM_PLICSW_BASE)
59 
60 #include "hpm_gptmr_regs.h"
61 /* Address of GPTMR instances */
62 /* GPTMR0 base address */
63 #define HPM_GPTMR0_BASE (0xF0000000UL)
64 /* GPTMR0 base pointer */
65 #define HPM_GPTMR0 ((GPTMR_Type *) HPM_GPTMR0_BASE)
66 /* GPTMR1 base address */
67 #define HPM_GPTMR1_BASE (0xF0004000UL)
68 /* GPTMR1 base pointer */
69 #define HPM_GPTMR1 ((GPTMR_Type *) HPM_GPTMR1_BASE)
70 /* GPTMR2 base address */
71 #define HPM_GPTMR2_BASE (0xF0008000UL)
72 /* GPTMR2 base pointer */
73 #define HPM_GPTMR2 ((GPTMR_Type *) HPM_GPTMR2_BASE)
74 /* GPTMR3 base address */
75 #define HPM_GPTMR3_BASE (0xF000C000UL)
76 /* GPTMR3 base pointer */
77 #define HPM_GPTMR3 ((GPTMR_Type *) HPM_GPTMR3_BASE)
78 /* NTMR0 base address */
79 #define HPM_NTMR0_BASE (0xF1410000UL)
80 /* NTMR0 base pointer */
81 #define HPM_NTMR0 ((GPTMR_Type *) HPM_NTMR0_BASE)
82 /* PTMR base address */
83 #define HPM_PTMR_BASE (0xF4120000UL)
84 /* PTMR base pointer */
85 #define HPM_PTMR ((GPTMR_Type *) HPM_PTMR_BASE)
86 
87 #include "hpm_owr_regs.h"
88 /* Address of OWR instances */
89 /* OWR0 base address */
90 #define HPM_OWR0_BASE (0xF0030000UL)
91 /* OWR0 base pointer */
92 #define HPM_OWR0 ((OWR_Type *) HPM_OWR0_BASE)
93 /* OWR1 base address */
94 #define HPM_OWR1_BASE (0xF0034000UL)
95 /* OWR1 base pointer */
96 #define HPM_OWR1 ((OWR_Type *) HPM_OWR1_BASE)
97 
98 #include "hpm_eui_regs.h"
99 /* Address of EUI instances */
100 /* EUI0 base address */
101 #define HPM_EUI0_BASE (0xF0038000UL)
102 /* EUI0 base pointer */
103 #define HPM_EUI0 ((EUI_Type *) HPM_EUI0_BASE)
104 /* EUI1 base address */
105 #define HPM_EUI1_BASE (0xF003C000UL)
106 /* EUI1 base pointer */
107 #define HPM_EUI1 ((EUI_Type *) HPM_EUI1_BASE)
108 
109 #include "hpm_uart_regs.h"
110 /* Address of UART instances */
111 /* UART0 base address */
112 #define HPM_UART0_BASE (0xF0040000UL)
113 /* UART0 base pointer */
114 #define HPM_UART0 ((UART_Type *) HPM_UART0_BASE)
115 /* UART1 base address */
116 #define HPM_UART1_BASE (0xF0044000UL)
117 /* UART1 base pointer */
118 #define HPM_UART1 ((UART_Type *) HPM_UART1_BASE)
119 /* UART2 base address */
120 #define HPM_UART2_BASE (0xF0048000UL)
121 /* UART2 base pointer */
122 #define HPM_UART2 ((UART_Type *) HPM_UART2_BASE)
123 /* UART3 base address */
124 #define HPM_UART3_BASE (0xF004C000UL)
125 /* UART3 base pointer */
126 #define HPM_UART3 ((UART_Type *) HPM_UART3_BASE)
127 /* UART4 base address */
128 #define HPM_UART4_BASE (0xF0050000UL)
129 /* UART4 base pointer */
130 #define HPM_UART4 ((UART_Type *) HPM_UART4_BASE)
131 /* UART5 base address */
132 #define HPM_UART5_BASE (0xF0054000UL)
133 /* UART5 base pointer */
134 #define HPM_UART5 ((UART_Type *) HPM_UART5_BASE)
135 /* UART6 base address */
136 #define HPM_UART6_BASE (0xF0058000UL)
137 /* UART6 base pointer */
138 #define HPM_UART6 ((UART_Type *) HPM_UART6_BASE)
139 /* UART7 base address */
140 #define HPM_UART7_BASE (0xF005C000UL)
141 /* UART7 base pointer */
142 #define HPM_UART7 ((UART_Type *) HPM_UART7_BASE)
143 /* PUART base address */
144 #define HPM_PUART_BASE (0xF4124000UL)
145 /* PUART base pointer */
146 #define HPM_PUART ((UART_Type *) HPM_PUART_BASE)
147 
148 #include "hpm_i2c_regs.h"
149 /* Address of I2C instances */
150 /* I2C0 base address */
151 #define HPM_I2C0_BASE (0xF0060000UL)
152 /* I2C0 base pointer */
153 #define HPM_I2C0 ((I2C_Type *) HPM_I2C0_BASE)
154 /* I2C1 base address */
155 #define HPM_I2C1_BASE (0xF0064000UL)
156 /* I2C1 base pointer */
157 #define HPM_I2C1 ((I2C_Type *) HPM_I2C1_BASE)
158 /* I2C2 base address */
159 #define HPM_I2C2_BASE (0xF0068000UL)
160 /* I2C2 base pointer */
161 #define HPM_I2C2 ((I2C_Type *) HPM_I2C2_BASE)
162 /* I2C3 base address */
163 #define HPM_I2C3_BASE (0xF006C000UL)
164 /* I2C3 base pointer */
165 #define HPM_I2C3 ((I2C_Type *) HPM_I2C3_BASE)
166 
167 #include "hpm_spi_regs.h"
168 /* Address of SPI instances */
169 /* SPI0 base address */
170 #define HPM_SPI0_BASE (0xF0070000UL)
171 /* SPI0 base pointer */
172 #define HPM_SPI0 ((SPI_Type *) HPM_SPI0_BASE)
173 /* SPI1 base address */
174 #define HPM_SPI1_BASE (0xF0074000UL)
175 /* SPI1 base pointer */
176 #define HPM_SPI1 ((SPI_Type *) HPM_SPI1_BASE)
177 /* SPI2 base address */
178 #define HPM_SPI2_BASE (0xF0078000UL)
179 /* SPI2 base pointer */
180 #define HPM_SPI2 ((SPI_Type *) HPM_SPI2_BASE)
181 /* SPI3 base address */
182 #define HPM_SPI3_BASE (0xF007C000UL)
183 /* SPI3 base pointer */
184 #define HPM_SPI3 ((SPI_Type *) HPM_SPI3_BASE)
185 
186 #include "hpm_crc_regs.h"
187 /* Address of CRC instances */
188 /* CRC base address */
189 #define HPM_CRC_BASE (0xF0080000UL)
190 /* CRC base pointer */
191 #define HPM_CRC ((CRC_Type *) HPM_CRC_BASE)
192 
193 #include "hpm_tsns_regs.h"
194 /* Address of TSNS instances */
195 /* TSNS base address */
196 #define HPM_TSNS_BASE (0xF0090000UL)
197 /* TSNS base pointer */
198 #define HPM_TSNS ((TSNS_Type *) HPM_TSNS_BASE)
199 
200 #include "hpm_mbx_regs.h"
201 /* Address of MBX instances */
202 /* MBX0A base address */
203 #define HPM_MBX0A_BASE (0xF00A0000UL)
204 /* MBX0A base pointer */
205 #define HPM_MBX0A ((MBX_Type *) HPM_MBX0A_BASE)
206 /* MBX0B base address */
207 #define HPM_MBX0B_BASE (0xF00A4000UL)
208 /* MBX0B base pointer */
209 #define HPM_MBX0B ((MBX_Type *) HPM_MBX0B_BASE)
210 
211 #include "hpm_ewdg_regs.h"
212 /* Address of EWDG instances */
213 /* EWDG0 base address */
214 #define HPM_EWDG0_BASE (0xF00B0000UL)
215 /* EWDG0 base pointer */
216 #define HPM_EWDG0 ((EWDG_Type *) HPM_EWDG0_BASE)
217 /* EWDG1 base address */
218 #define HPM_EWDG1_BASE (0xF00B4000UL)
219 /* EWDG1 base pointer */
220 #define HPM_EWDG1 ((EWDG_Type *) HPM_EWDG1_BASE)
221 /* PEWDG base address */
222 #define HPM_PEWDG_BASE (0xF4128000UL)
223 /* PEWDG base pointer */
224 #define HPM_PEWDG ((EWDG_Type *) HPM_PEWDG_BASE)
225 
226 #include "hpm_dmamux_regs.h"
227 /* Address of DMAMUX instances */
228 /* DMAMUX base address */
229 #define HPM_DMAMUX_BASE (0xF00C4000UL)
230 /* DMAMUX base pointer */
231 #define HPM_DMAMUX ((DMAMUX_Type *) HPM_DMAMUX_BASE)
232 
233 #include "hpm_dmav2_regs.h"
234 /* Address of DMAV2 instances */
235 /* HDMA base address */
236 #define HPM_HDMA_BASE (0xF00C8000UL)
237 /* HDMA base pointer */
238 #define HPM_HDMA ((DMAV2_Type *) HPM_HDMA_BASE)
239 /* XDMA base address */
240 #define HPM_XDMA_BASE (0xF3100000UL)
241 /* XDMA base pointer */
242 #define HPM_XDMA ((DMAV2_Type *) HPM_XDMA_BASE)
243 
244 #include "hpm_ppi_regs.h"
245 /* Address of PPI instances */
246 /* PPI base address */
247 #define HPM_PPI_BASE (0xF00CC000UL)
248 /* PPI base pointer */
249 #define HPM_PPI ((PPI_Type *) HPM_PPI_BASE)
250 
251 #include "hpm_gpiom_regs.h"
252 /* Address of GPIOM instances */
253 /* GPIOM base address */
254 #define HPM_GPIOM_BASE (0xF00D8000UL)
255 /* GPIOM base pointer */
256 #define HPM_GPIOM ((GPIOM_Type *) HPM_GPIOM_BASE)
257 
258 #include "hpm_lobs_regs.h"
259 /* Address of LOBS instances */
260 /* LOBS base address */
261 #define HPM_LOBS_BASE (0xF00DC000UL)
262 /* LOBS base pointer */
263 #define HPM_LOBS ((LOBS_Type *) HPM_LOBS_BASE)
264 
265 #include "hpm_adc16_regs.h"
266 /* Address of ADC16 instances */
267 /* ADC0 base address */
268 #define HPM_ADC0_BASE (0xF0100000UL)
269 /* ADC0 base pointer */
270 #define HPM_ADC0 ((ADC16_Type *) HPM_ADC0_BASE)
271 /* ADC1 base address */
272 #define HPM_ADC1_BASE (0xF0104000UL)
273 /* ADC1 base pointer */
274 #define HPM_ADC1 ((ADC16_Type *) HPM_ADC1_BASE)
275 
276 #include "hpm_acmp_regs.h"
277 /* Address of ACMP instances */
278 /* ACMP0 base address */
279 #define HPM_ACMP0_BASE (0xF0130000UL)
280 /* ACMP0 base pointer */
281 #define HPM_ACMP0 ((ACMP_Type *) HPM_ACMP0_BASE)
282 
283 #include "hpm_mcan_regs.h"
284 /* Address of MCAN instances */
285 /* MCAN0 base address */
286 #define HPM_MCAN0_BASE (0xF0300000UL)
287 /* MCAN0 base pointer */
288 #define HPM_MCAN0 ((MCAN_Type *) HPM_MCAN0_BASE)
289 /* MCAN1 base address */
290 #define HPM_MCAN1_BASE (0xF0304000UL)
291 /* MCAN1 base pointer */
292 #define HPM_MCAN1 ((MCAN_Type *) HPM_MCAN1_BASE)
293 /* MCAN2 base address */
294 #define HPM_MCAN2_BASE (0xF0308000UL)
295 /* MCAN2 base pointer */
296 #define HPM_MCAN2 ((MCAN_Type *) HPM_MCAN2_BASE)
297 /* MCAN3 base address */
298 #define HPM_MCAN3_BASE (0xF030C000UL)
299 /* MCAN3 base pointer */
300 #define HPM_MCAN3 ((MCAN_Type *) HPM_MCAN3_BASE)
301 
302 #include "hpm_ptpc_regs.h"
303 /* Address of PTPC instances */
304 /* PTPC base address */
305 #define HPM_PTPC_BASE (0xF037C000UL)
306 /* PTPC base pointer */
307 #define HPM_PTPC ((PTPC_Type *) HPM_PTPC_BASE)
308 
309 #include "hpm_qeiv2_regs.h"
310 /* Address of QEIV2 instances */
311 /* QEI0 base address */
312 #define HPM_QEI0_BASE (0xF0400000UL)
313 /* QEI0 base pointer */
314 #define HPM_QEI0 ((QEIV2_Type *) HPM_QEI0_BASE)
315 /* QEI1 base address */
316 #define HPM_QEI1_BASE (0xF0404000UL)
317 /* QEI1 base pointer */
318 #define HPM_QEI1 ((QEIV2_Type *) HPM_QEI1_BASE)
319 
320 #include "hpm_qeov2_regs.h"
321 /* Address of QEOV2 instances */
322 /* QEO0 base address */
323 #define HPM_QEO0_BASE (0xF0410000UL)
324 /* QEO0 base pointer */
325 #define HPM_QEO0 ((QEOV2_Type *) HPM_QEO0_BASE)
326 /* QEO1 base address */
327 #define HPM_QEO1_BASE (0xF0414000UL)
328 /* QEO1 base pointer */
329 #define HPM_QEO1 ((QEOV2_Type *) HPM_QEO1_BASE)
330 
331 #include "hpm_pwmv2_regs.h"
332 /* Address of PWMV2 instances */
333 /* PWM0 base address */
334 #define HPM_PWM0_BASE (0xF0420000UL)
335 /* PWM0 base pointer */
336 #define HPM_PWM0 ((PWMV2_Type *) HPM_PWM0_BASE)
337 /* PWM1 base address */
338 #define HPM_PWM1_BASE (0xF0424000UL)
339 /* PWM1 base pointer */
340 #define HPM_PWM1 ((PWMV2_Type *) HPM_PWM1_BASE)
341 
342 #include "hpm_sdm_regs.h"
343 /* Address of SDM instances */
344 /* SDM0 base address */
345 #define HPM_SDM0_BASE (0xF0450000UL)
346 /* SDM0 base pointer */
347 #define HPM_SDM0 ((SDM_Type *) HPM_SDM0_BASE)
348 
349 #include "hpm_plb_regs.h"
350 /* Address of PLB instances */
351 /* PLB base address */
352 #define HPM_PLB_BASE (0xF0460000UL)
353 /* PLB base pointer */
354 #define HPM_PLB ((PLB_Type *) HPM_PLB_BASE)
355 
356 #include "hpm_synt_regs.h"
357 /* Address of SYNT instances */
358 /* SYNT base address */
359 #define HPM_SYNT_BASE (0xF0464000UL)
360 /* SYNT base pointer */
361 #define HPM_SYNT ((SYNT_Type *) HPM_SYNT_BASE)
362 
363 #include "hpm_trgm_regs.h"
364 /* Address of TRGM instances */
365 /* TRGM0 base address */
366 #define HPM_TRGM0_BASE (0xF047C000UL)
367 /* TRGM0 base pointer */
368 #define HPM_TRGM0 ((TRGM_Type *) HPM_TRGM0_BASE)
369 
370 #include "hpm_enet_regs.h"
371 /* Address of ENET instances */
372 /* ENET0 base address */
373 #define HPM_ENET0_BASE (0xF1400000UL)
374 /* ENET0 base pointer */
375 #define HPM_ENET0 ((ENET_Type *) HPM_ENET0_BASE)
376 
377 #include "hpm_usb_regs.h"
378 /* Address of USB instances */
379 /* USB0 base address */
380 #define HPM_USB0_BASE (0xF1420000UL)
381 /* USB0 base pointer */
382 #define HPM_USB0 ((USB_Type *) HPM_USB0_BASE)
383 
384 #include "hpm_esc_regs.h"
385 /* Address of ESC instances */
386 /* ESC base address */
387 #define HPM_ESC_BASE (0xF1700000UL)
388 /* ESC base pointer */
389 #define HPM_ESC ((ESC_Type *) HPM_ESC_BASE)
390 
391 #include "hpm_otp_regs.h"
392 /* Address of OTP instances */
393 /* OTP base address */
394 #define HPM_OTP_BASE (0xF3158000UL)
395 /* OTP base pointer */
396 #define HPM_OTP ((OTP_Type *) HPM_OTP_BASE)
397 
398 #include "hpm_sysctl_regs.h"
399 /* Address of SYSCTL instances */
400 /* SYSCTL base address */
401 #define HPM_SYSCTL_BASE (0xF4000000UL)
402 /* SYSCTL base pointer */
403 #define HPM_SYSCTL ((SYSCTL_Type *) HPM_SYSCTL_BASE)
404 
405 #include "hpm_ioc_regs.h"
406 /* Address of IOC instances */
407 /* IOC base address */
408 #define HPM_IOC_BASE (0xF4040000UL)
409 /* IOC base pointer */
410 #define HPM_IOC ((IOC_Type *) HPM_IOC_BASE)
411 /* PIOC base address */
412 #define HPM_PIOC_BASE (0xF4118000UL)
413 /* PIOC base pointer */
414 #define HPM_PIOC ((IOC_Type *) HPM_PIOC_BASE)
415 
416 #include "hpm_pllctlv2_regs.h"
417 /* Address of PLLCTLV2 instances */
418 /* PLLCTLV2 base address */
419 #define HPM_PLLCTLV2_BASE (0xF40C0000UL)
420 /* PLLCTLV2 base pointer */
421 #define HPM_PLLCTLV2 ((PLLCTLV2_Type *) HPM_PLLCTLV2_BASE)
422 
423 #include "hpm_ppor_regs.h"
424 /* Address of PPOR instances */
425 /* PPOR base address */
426 #define HPM_PPOR_BASE (0xF4100000UL)
427 /* PPOR base pointer */
428 #define HPM_PPOR ((PPOR_Type *) HPM_PPOR_BASE)
429 
430 #include "hpm_pcfg_regs.h"
431 /* Address of PCFG instances */
432 /* PCFG base address */
433 #define HPM_PCFG_BASE (0xF4104000UL)
434 /* PCFG base pointer */
435 #define HPM_PCFG ((PCFG_Type *) HPM_PCFG_BASE)
436 
437 #include "hpm_pdgo_regs.h"
438 /* Address of PDGO instances */
439 /* PDGO base address */
440 #define HPM_PDGO_BASE (0xF4134000UL)
441 /* PDGO base pointer */
442 #define HPM_PDGO ((PDGO_Type *) HPM_PDGO_BASE)
443 
444 #include "hpm_pgpr_regs.h"
445 /* Address of PGPR instances */
446 /* PGPR0 base address */
447 #define HPM_PGPR0_BASE (0xF4138000UL)
448 /* PGPR0 base pointer */
449 #define HPM_PGPR0 ((PGPR_Type *) HPM_PGPR0_BASE)
450 /* PGPR1 base address */
451 #define HPM_PGPR1_BASE (0xF413C000UL)
452 /* PGPR1 base pointer */
453 #define HPM_PGPR1 ((PGPR_Type *) HPM_PGPR1_BASE)
454 
455 
456 #include "riscv/riscv_core.h"
457 #include "hpm_csr_regs.h"
458 #include "hpm_interrupt.h"
459 #include "hpm_misc.h"
460 #include "hpm_otp_table.h"
461 #include "hpm_dmamux_src.h"
462 #include "hpm_trgmmux_src.h"
463 #include "hpm_iomux.h"
464 #endif /* HPM_SOC_H */