1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2019-2021, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #include "juno_mhu.h"
9 #include "system_mmap.h"
10 
11 #include <mod_mhu.h>
12 
13 #include <fwk_element.h>
14 #include <fwk_id.h>
15 #include <fwk_module.h>
16 
17 #include <fmw_cmsis.h>
18 
19 #include <stddef.h>
20 
21 static const struct fwk_element element_table[] = {
22     [JUNO_MHU_DEVICE_IDX_S] = {
23         .name = "",
24         .sub_element_count = 1,
25         .data = &(struct mod_mhu_device_config) {
26             .irq = (unsigned int) MHU_SECURE_IRQ,
27             .in = MHU_CPU_INTR_S_BASE,
28             .out = MHU_SCP_INTR_S_BASE,
29         },
30     },
31     [JUNO_MHU_DEVICE_IDX_NS_H] = {
32         .name = "",
33         .sub_element_count = 2,
34         .data = &(struct mod_mhu_device_config) {
35             .irq = (unsigned int) MHU_HIGH_PRIO_IRQ,
36             .in = MHU_CPU_INTR_H_BASE,
37             .out = MHU_SCP_INTR_H_BASE,
38         },
39     },
40     [JUNO_MHU_DEVICE_IDX_NS_L] = {
41         .name = "",
42         .sub_element_count = 1,
43         .data = &(struct mod_mhu_device_config) {
44             .irq = (unsigned int) MHU_LOW_PRIO_IRQ,
45             .in = MHU_CPU_INTR_L_BASE,
46             .out = MHU_SCP_INTR_L_BASE,
47         },
48     },
49     [JUNO_MHU_DEVICE_IDX_COUNT] = { 0 },
50 };
51 
get_element_table(fwk_id_t module_id)52 static const struct fwk_element *get_element_table(fwk_id_t module_id)
53 {
54     return element_table;
55 }
56 
57 struct fwk_module_config config_mhu = {
58     .elements = FWK_MODULE_DYNAMIC_ELEMENTS(get_element_table),
59 };
60