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