1 /*
2  * Renesas SCP/MCP Software
3  * Copyright (c) 2020-2021, Renesas Electronics Corporation. All rights
4  * reserved.
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  */
8 
9 #include <clock_devices.h>
10 #include <clock_mstp_devices.h>
11 #include <clock_sd_devices.h>
12 #include <rcar_core.h>
13 #include <config_rcar_pd_pmic_bd9571.h>
14 
15 #include <mod_clock.h>
16 #include <mod_rcar_clock.h>
17 #include <mod_rcar_system.h>
18 #include <mod_reg_sensor.h>
19 #include <mod_rcar_scif.h>
20 #include <mod_rcar_pd_sysc.h>
21 #include <mod_rcar_pd_pmic_bd9571.h>
22 
23 #include <fwk_element.h>
24 #include <fwk_module.h>
25 #include <fwk_module_idx.h>
26 
27 #include <stddef.h>
28 
29 static struct fwk_element rcar_system_element_table[] = {
30     {
31         .name = "sd_closk",
32         .data = &((struct mod_rcar_system_dev_config){
33             .driver_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_RCAR_SD_CLOCK, 0),
34             .api_id = FWK_ID_API_INIT(
35                 FWK_MODULE_IDX_RCAR_SD_CLOCK,
36                 MOD_RCAR_CLOCK_API_TYPE_SYSTEM),
37         }),
38     },
39     {
40         .name = "mstp_clock",
41         .data = &((struct mod_rcar_system_dev_config){
42             .driver_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_RCAR_MSTP_CLOCK, 0),
43             .api_id = FWK_ID_API_INIT(
44                 FWK_MODULE_IDX_RCAR_MSTP_CLOCK,
45                 MOD_RCAR_CLOCK_API_TYPE_SYSTEM),
46         }),
47     },
48     {
49         .name = "scif",
50         .data = &((struct mod_rcar_system_dev_config) {
51             .driver_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_RCAR_SCIF, 0),
52             .api_id = FWK_ID_API_INIT(
53                 FWK_MODULE_IDX_RCAR_SCIF,
54                 MOD_RCAR_SCIF_API_TYPE_SYSTEM),
55         }),
56     },
57     {
58         .name = "sensor",
59         .data = &((struct mod_rcar_system_dev_config) {
60             .driver_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_REG_SENSOR, 0),
61             .api_id = FWK_ID_API_INIT(
62                 FWK_MODULE_IDX_REG_SENSOR,
63                 MOD_RCAR_REG_SENSOR_API_TYPE_SYSTEM),
64         }),
65     },
66     {
67         .name = "pmic",
68         .data = &((struct mod_rcar_system_dev_config) {
69             .driver_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_RCAR_PD_PMIC_BD9571,
70                 RCAR_PD_PMIC_ELEMENT_IDX_PMIC_DDR_BKUP),
71             .api_id = FWK_ID_API_INIT(
72                 FWK_MODULE_IDX_RCAR_PD_PMIC_BD9571,
73                 MOD_RCAR_PD_PMIC_API_TYPE_SYSTEM),
74         }),
75     },
76     {
77         .name = "pd_sysc",
78         .data = &((struct mod_rcar_system_dev_config) {
79             .driver_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_RCAR_PD_SYSC, 0),
80             .api_id = FWK_ID_API_INIT(
81                 FWK_MODULE_IDX_RCAR_PD_SYSC,
82                 MOD_RCAR_PD_SYSC_API_TYPE_SYSTEM),
83         }),
84     },
85     { 0 }, /* Termination description. */
86 };
87 
get_element_table(fwk_id_t module_id)88 static const struct fwk_element *get_element_table(fwk_id_t module_id)
89 {
90     return rcar_system_element_table;
91 }
92 
93 struct fwk_module_config config_rcar_system = {
94     .elements = FWK_MODULE_DYNAMIC_ELEMENTS(get_element_table),
95     .data = NULL,
96 };
97