1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2015-2022, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  *
7  * Description:
8  *     Interrupt management.
9  */
10 
11 #include <fwk_arch.h>
12 #include <fwk_status.h>
13 
14 #include <stdbool.h>
15 #include <stdint.h>
16 
global_enable(void)17 static int global_enable(void)
18 {
19     return FWK_E_SUPPORT;
20 }
21 
global_disable(void)22 static int global_disable(void)
23 {
24     return FWK_E_SUPPORT;
25 }
26 
is_enabled(unsigned int interrupt,bool * state)27 static int is_enabled(unsigned int interrupt, bool *state)
28 {
29     return FWK_E_SUPPORT;
30 }
31 
enable(unsigned int interrupt)32 static int enable(unsigned int interrupt)
33 {
34     return FWK_E_SUPPORT;
35 }
36 
disable(unsigned int interrupt)37 static int disable(unsigned int interrupt)
38 {
39     return FWK_E_SUPPORT;
40 }
41 
is_pending(unsigned int interrupt,bool * state)42 static int is_pending(unsigned int interrupt, bool *state)
43 {
44     return FWK_E_SUPPORT;
45 }
46 
set_pending(unsigned int interrupt)47 static int set_pending(unsigned int interrupt)
48 {
49     return FWK_E_SUPPORT;
50 }
51 
clear_pending(unsigned int interrupt)52 static int clear_pending(unsigned int interrupt)
53 {
54     return FWK_E_SUPPORT;
55 }
56 
set_isr_irq(unsigned int interrupt,void (* isr)(void))57 static int set_isr_irq(unsigned int interrupt, void (*isr)(void))
58 {
59     return FWK_E_SUPPORT;
60 }
61 
set_isr_irq_param(unsigned int interrupt,void (* isr)(uintptr_t param),uintptr_t parameter)62 static int set_isr_irq_param(
63     unsigned int interrupt,
64     void (*isr)(uintptr_t param),
65     uintptr_t parameter)
66 {
67     return FWK_E_SUPPORT;
68 }
69 
set_isr_nmi(void (* isr)(void))70 static int set_isr_nmi(void (*isr)(void))
71 {
72     return FWK_E_SUPPORT;
73 }
74 
set_isr_nmi_param(void (* isr)(uintptr_t param),uintptr_t parameter)75 static int set_isr_nmi_param(void (*isr)(uintptr_t param), uintptr_t parameter)
76 {
77     return FWK_E_SUPPORT;
78 }
79 
set_isr_fault(void (* isr)(void))80 static int set_isr_fault(void (*isr)(void))
81 {
82     return FWK_E_SUPPORT;
83 }
84 
get_current(unsigned int * interrupt)85 static int get_current(unsigned int *interrupt)
86 {
87     return FWK_E_SUPPORT;
88 }
89 
is_interrupt_context(void)90 static bool is_interrupt_context(void)
91 {
92     return false;
93 }
94 
95 static const struct fwk_arch_interrupt_driver driver = {
96     .global_enable = global_enable,
97     .global_disable = global_disable,
98     .is_enabled = is_enabled,
99     .enable = enable,
100     .disable = disable,
101     .is_pending = is_pending,
102     .set_pending = set_pending,
103     .clear_pending = clear_pending,
104     .set_isr_irq = set_isr_irq,
105     .set_isr_irq_param = set_isr_irq_param,
106     .set_isr_nmi = set_isr_nmi,
107     .set_isr_nmi_param = set_isr_nmi_param,
108     .set_isr_fault = set_isr_fault,
109     .get_current = get_current,
110     .is_interrupt_context = is_interrupt_context,
111 };
112 
arch_interrupt_init(const struct fwk_arch_interrupt_driver ** _driver)113 int arch_interrupt_init(const struct fwk_arch_interrupt_driver **_driver)
114 {
115     if (_driver == NULL)
116         return FWK_E_PARAM;
117 
118     *_driver = &driver;
119     return FWK_SUCCESS;
120 }
121