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