1 /* 2 * Arm SCP/MCP Software 3 * Copyright (c) 2022-2023, Linaro Limited and Contributors. All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 */ 7 8 #include <fwk_module.h> 9 #include <fwk_module_idx.h> 10 #include <scmi_agents.h> 11 #include <mod_scmi_clock.h> 12 #include "clock_devices.h" 13 14 static const struct mod_scmi_clock_device agent_device_table_ospm[] = { 15 { 16 /* MOCK_0 */ 17 .element_id = 18 FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, CLOCK_DEV_IDX_MOCK_0), 19 .starts_enabled = true, 20 }, 21 { 22 /* MOCK_1 */ 23 .element_id = 24 FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, CLOCK_DEV_IDX_MOCK_1), 25 .starts_enabled = true, 26 }, 27 { 28 /* VPU */ 29 .element_id = 30 FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, CLOCK_DEV_IDX_VPU), 31 .starts_enabled = true, 32 }, 33 { 34 /* MOCK_3 */ 35 .element_id = 36 FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, CLOCK_DEV_IDX_MOCK_3), 37 .starts_enabled = true, 38 }, 39 { 40 /* DPU */ 41 .element_id = 42 FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, CLOCK_DEV_IDX_DPU), 43 .starts_enabled = true, 44 }, 45 { 46 /* PIXEL_0 */ 47 .element_id = 48 FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, CLOCK_DEV_IDX_PIXEL_0), 49 .starts_enabled = true, 50 }, 51 { 52 /* PIXEL_1 */ 53 .element_id = 54 FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, CLOCK_DEV_IDX_PIXEL_1), 55 .starts_enabled = true, 56 }, 57 }; 58 59 static const struct mod_scmi_clock_device agent_device_table_perf[] = { 60 { 61 /* MOCK_0 */ 62 .element_id = 63 FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, CLOCK_DEV_IDX_MOCK_0), 64 }, 65 { 66 /* MOCK_2 */ 67 .element_id = 68 FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, CLOCK_DEV_IDX_MOCK_2), 69 }, 70 { 71 /* MOCK_3 */ 72 .element_id = 73 FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, CLOCK_DEV_IDX_MOCK_3), 74 }, 75 { 76 /* PIXEL_0 */ 77 .element_id = 78 FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, CLOCK_DEV_IDX_PIXEL_0), 79 }, 80 { 81 /* PIXEL_1 */ 82 .element_id = 83 FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, CLOCK_DEV_IDX_PIXEL_1), 84 }, 85 }; 86 87 static const struct mod_scmi_clock_agent agent_table[SCMI_AGENT_ID_COUNT] = { 88 [SCMI_AGENT_ID_OSPM] = { 89 .device_table = agent_device_table_ospm, 90 .device_count = FWK_ARRAY_SIZE(agent_device_table_ospm), 91 }, 92 [SCMI_AGENT_ID_PSCI] = { 0 /* No access */ }, 93 [SCMI_AGENT_ID_PERF] = { 94 .device_table = agent_device_table_perf, 95 .device_count = FWK_ARRAY_SIZE(agent_device_table_perf), 96 }, 97 }; 98 99 struct fwk_module_config config_scmi_clock = { 100 .data = &((struct mod_scmi_clock_config) { 101 .max_pending_transactions = 0, 102 .agent_table = agent_table, 103 .agent_count = FWK_ARRAY_SIZE(agent_table), 104 }), 105 }; 106