xref: /optee_os/core/include/drivers/aplic.h (revision 69e9ad1b8e9db39a5dce0e620ac5ea77fc93f5a5)
1*69e9ad1bSHuang Borong /* SPDX-License-Identifier: BSD-2-Clause */
2*69e9ad1bSHuang Borong /*
3*69e9ad1bSHuang Borong  * Copyright (c) 2025 Beijing Institute of Open Source Chip (BOSC)
4*69e9ad1bSHuang Borong  */
5*69e9ad1bSHuang Borong 
6*69e9ad1bSHuang Borong #ifndef __DRIVERS_APLIC_H
7*69e9ad1bSHuang Borong #define __DRIVERS_APLIC_H
8*69e9ad1bSHuang Borong 
9*69e9ad1bSHuang Borong #include <types_ext.h>
10*69e9ad1bSHuang Borong 
11*69e9ad1bSHuang Borong /*
12*69e9ad1bSHuang Borong  * The aplic_init() function initializes the struct aplic_data which
13*69e9ad1bSHuang Borong  * is then used by other functions. This function also initializes
14*69e9ad1bSHuang Borong  * the APLIC and should only be called from the primary boot hart.
15*69e9ad1bSHuang Borong  */
16*69e9ad1bSHuang Borong void aplic_init(paddr_t aplic_base_pa);
17*69e9ad1bSHuang Borong 
18*69e9ad1bSHuang Borong /*
19*69e9ad1bSHuang Borong  * Does per-hart specific APLIC initialization, should be called by all
20*69e9ad1bSHuang Borong  * secondary harts when booting.
21*69e9ad1bSHuang Borong  */
22*69e9ad1bSHuang Borong void aplic_init_per_hart(void);
23*69e9ad1bSHuang Borong 
24*69e9ad1bSHuang Borong /* Handle external interrupts */
25*69e9ad1bSHuang Borong void aplic_it_handle(void);
26*69e9ad1bSHuang Borong 
27*69e9ad1bSHuang Borong /* Print APLIC state to console */
28*69e9ad1bSHuang Borong void aplic_dump_state(void);
29*69e9ad1bSHuang Borong 
30*69e9ad1bSHuang Borong #endif /*__DRIVERS_APLIC_H*/
31