1 /*
2  * Copyright (c) 2006-2021, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2013-07-20     Bernard      first version
9  */
10 
11 #ifndef __GIC_H__
12 #define __GIC_H__
13 
14 #include <rthw.h>
15 #include <board.h>
16 
17 int arm_gic_get_active_irq(rt_uint32_t index);
18 void arm_gic_ack(rt_uint32_t index, int irq);
19 
20 void arm_gic_mask(rt_uint32_t index, int irq);
21 void arm_gic_umask(rt_uint32_t index, int irq);
22 
23 rt_uint32_t arm_gic_get_pending_irq(rt_uint32_t index, int irq);
24 void arm_gic_set_pending_irq(rt_uint32_t index, int irq);
25 void arm_gic_clear_pending_irq(rt_uint32_t index, int irq);
26 
27 void arm_gic_set_configuration(rt_uint32_t index, int irq, rt_uint32_t config);
28 rt_uint32_t arm_gic_get_configuration(rt_uint32_t index, int irq);
29 
30 void arm_gic_clear_active(rt_uint32_t index, int irq);
31 
32 void arm_gic_set_cpu(rt_uint32_t index, int irq, unsigned int cpumask);
33 rt_uint32_t arm_gic_get_target_cpu(rt_uint32_t index, int irq);
34 
35 void arm_gic_set_priority(rt_uint32_t index, int irq, rt_uint32_t priority);
36 rt_uint32_t arm_gic_get_priority(rt_uint32_t index, int irq);
37 
38 void arm_gic_set_interface_prior_mask(rt_uint32_t index, rt_uint32_t priority);
39 rt_uint32_t arm_gic_get_interface_prior_mask(rt_uint32_t index);
40 
41 void arm_gic_set_binary_point(rt_uint32_t index, rt_uint32_t binary_point);
42 rt_uint32_t arm_gic_get_binary_point(rt_uint32_t index);
43 
44 rt_uint32_t arm_gic_get_irq_status(rt_uint32_t index, int irq);
45 
46 void arm_gic_send_sgi(rt_uint32_t index, int irq, rt_uint32_t target_list, rt_uint32_t filter_list);
47 
48 rt_uint32_t arm_gic_get_high_pending_irq(rt_uint32_t index);
49 
50 rt_uint32_t arm_gic_get_interface_id(rt_uint32_t index);
51 
52 void arm_gic_set_group(rt_uint32_t index, int irq, rt_uint32_t group);
53 rt_uint32_t arm_gic_get_group(rt_uint32_t index, int irq);
54 
55 int arm_gic_dist_init(rt_uint32_t index, rt_uint32_t dist_base, int irq_start);
56 int arm_gic_cpu_init(rt_uint32_t index, rt_uint32_t cpu_base);
57 
58 void arm_gic_dump_type(rt_uint32_t index);
59 void arm_gic_dump(rt_uint32_t index);
60 
61 #endif
62 
63