1 /*
2  * Copyright 2021 The Hafnium Authors.
3  *
4  * Use of this source code is governed by a BSD-style
5  * license that can be found in the LICENSE file or at
6  * https://opensource.org/licenses/BSD-3-Clause.
7  */
8 
9 #pragma once
10 
11 #include "hf/fdt.h"
12 #include "hf/manifest.h"
13 #include "hf/vm.h"
14 
15 #define DEFERRED_INT_ID 0xFFFF
16 
17 bool plat_interrupts_controller_driver_init(
18 	const struct fdt *fdt, struct mm_stage1_locked stage1_locked,
19 	struct mpool *ppool);
20 void plat_interrupts_controller_hw_init(struct cpu *c);
21 void plat_interrupts_set_priority_mask(uint8_t min_priority);
22 uint8_t plat_interrupts_get_priority_mask(void);
23 void plat_interrupts_set_priority(uint32_t id, uint32_t core_pos,
24 				  uint32_t priority);
25 void plat_interrupts_enable(uint32_t id, uint32_t core_pos);
26 void plat_interrupts_disable(uint32_t id, uint32_t core_pos);
27 void plat_interrupts_set_type(uint32_t id, uint32_t type);
28 uint32_t plat_interrupts_get_type(uint32_t id);
29 uint32_t plat_interrupts_get_pending_interrupt_id(void);
30 void plat_interrupts_end_of_interrupt(uint32_t id);
31 void plat_interrupts_configure_interrupt(struct interrupt_descriptor int_desc);
32 void plat_interrupts_send_sgi(uint32_t id, struct cpu *cpu,
33 			      bool to_this_security_state);
34