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