xref: /optee_os/core/include/drivers/plic.h (revision 12438b45828c39f1b816212497ec95bf938859bf)
1*12438b45SMarouene Boubakri /* SPDX-License-Identifier: BSD-2-Clause */
2*12438b45SMarouene Boubakri /*
3*12438b45SMarouene Boubakri  * Copyright 2022-2023 NXP
4*12438b45SMarouene Boubakri  */
5*12438b45SMarouene Boubakri 
6*12438b45SMarouene Boubakri #ifndef DRIVERS_PLIC_H
7*12438b45SMarouene Boubakri #define DRIVERS_PLIC_H
8*12438b45SMarouene Boubakri 
9*12438b45SMarouene Boubakri #include <kernel/interrupt.h>
10*12438b45SMarouene Boubakri #include <kernel/misc.h>
11*12438b45SMarouene Boubakri #include <platform_config.h>
12*12438b45SMarouene Boubakri 
13*12438b45SMarouene Boubakri struct plic_data {
14*12438b45SMarouene Boubakri 	vaddr_t plic_base;
15*12438b45SMarouene Boubakri 	size_t max_it;
16*12438b45SMarouene Boubakri 	struct itr_chip chip;
17*12438b45SMarouene Boubakri };
18*12438b45SMarouene Boubakri 
19*12438b45SMarouene Boubakri void plic_init(struct plic_data *pd, paddr_t plic_base_pa);
20*12438b45SMarouene Boubakri void plic_init_base_addr(struct plic_data *pd, paddr_t plic_base_pa);
21*12438b45SMarouene Boubakri void plic_hart_init(struct plic_data *pd);
22*12438b45SMarouene Boubakri void plic_it_handle(struct plic_data *pd);
23*12438b45SMarouene Boubakri void plic_dump_state(struct plic_data *pd);
24*12438b45SMarouene Boubakri 
25*12438b45SMarouene Boubakri #endif /*DRIVERS_PLIC_H*/
26