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 
17 #include <arch_interrupt.h>
18 
global_enable(void)19 static int global_enable(void)
20 {
21     return FWK_E_SUPPORT;
22 }
23 
global_disable(void)24 static int global_disable(void)
25 {
26     return FWK_E_SUPPORT;
27 }
28 
is_enabled(unsigned int interrupt,bool * state)29 static int is_enabled(unsigned int interrupt, bool *state)
30 {
31     return FWK_E_SUPPORT;
32 }
33 
enable(unsigned int interrupt)34 static int enable(unsigned int interrupt)
35 {
36     return FWK_E_SUPPORT;
37 }
38 
disable(unsigned int interrupt)39 static int disable(unsigned int interrupt)
40 {
41     return FWK_E_SUPPORT;
42 }
43 
is_pending(unsigned int interrupt,bool * state)44 static int is_pending(unsigned int interrupt, bool *state)
45 {
46     return FWK_E_SUPPORT;
47 }
48 
set_pending(unsigned int interrupt)49 static int set_pending(unsigned int interrupt)
50 {
51     return FWK_E_SUPPORT;
52 }
53 
clear_pending(unsigned int interrupt)54 static int clear_pending(unsigned int interrupt)
55 {
56     return FWK_E_SUPPORT;
57 }
58 
set_isr_irq(unsigned int interrupt,void (* isr)(void))59 static int set_isr_irq(unsigned int interrupt, void (*isr)(void))
60 {
61     return FWK_E_SUPPORT;
62 }
63 
set_isr_irq_param(unsigned int interrupt,void (* isr)(uintptr_t param),uintptr_t parameter)64 static int set_isr_irq_param(
65     unsigned int interrupt,
66     void (*isr)(uintptr_t param),
67     uintptr_t parameter)
68 {
69     return FWK_E_SUPPORT;
70 }
71 
set_isr_nmi(void (* isr)(void))72 static int set_isr_nmi(void (*isr)(void))
73 {
74     return FWK_E_SUPPORT;
75 }
76 
set_isr_nmi_param(void (* isr)(uintptr_t param),uintptr_t parameter)77 static int set_isr_nmi_param(void (*isr)(uintptr_t param), uintptr_t parameter)
78 {
79     return FWK_E_SUPPORT;
80 }
81 
set_isr_fault(void (* isr)(void))82 static int set_isr_fault(void (*isr)(void))
83 {
84     return FWK_E_SUPPORT;
85 }
86 
get_current(unsigned int * interrupt)87 static int get_current(unsigned int *interrupt)
88 {
89     return FWK_E_SUPPORT;
90 }
91 
is_interrupt_context(void)92 static bool is_interrupt_context(void)
93 {
94     return false;
95 }
96 
97 static const struct fwk_arch_interrupt_driver driver = {
98     .global_enable = global_enable,
99     .global_disable = global_disable,
100     .is_enabled = is_enabled,
101     .enable = enable,
102     .disable = disable,
103     .is_pending = is_pending,
104     .set_pending = set_pending,
105     .clear_pending = clear_pending,
106     .set_isr_irq = set_isr_irq,
107     .set_isr_irq_param = set_isr_irq_param,
108     .set_isr_nmi = set_isr_nmi,
109     .set_isr_nmi_param = set_isr_nmi_param,
110     .set_isr_fault = set_isr_fault,
111     .get_current = get_current,
112     .is_interrupt_context = is_interrupt_context,
113 };
114 
arch_interrupt_init(const struct fwk_arch_interrupt_driver ** _driver)115 int arch_interrupt_init(const struct fwk_arch_interrupt_driver **_driver)
116 {
117     if (_driver == NULL)
118         return FWK_E_PARAM;
119 
120     *_driver = &driver;
121     return FWK_SUCCESS;
122 }
123