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