1 /* 2 * Arm SCP/MCP Software 3 * Copyright (c) 2022-2023, Arm Limited and Contributors. All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 */ 7 8 #include <mod_scmi_perf.h> 9 10 #include <fwk_id.h> 11 #include <fwk_macros.h> 12 #include <fwk_module.h> 13 #include <fwk_module_idx.h> 14 15 #include <stddef.h> 16 #include <stdint.h> 17 18 #define TEST_MODULE_IDX 0x5 19 #define TEST_SCMI_AGENT_IDX_0 0x1 20 21 #define TEST_OPP_COUNT 0x5 22 23 enum dvfs_element_idx { 24 DVFS_ELEMENT_IDX_0, 25 DVFS_ELEMENT_IDX_1, 26 DVFS_ELEMENT_IDX_2, 27 DVFS_ELEMENT_IDX_COUNT, 28 }; 29 30 static const struct mod_scmi_perf_domain_config domains[] = { 31 [DVFS_ELEMENT_IDX_0] = { 32 .fast_channels_addr_scp = 33 (uint64_t[]){ 34 [MOD_SCMI_PERF_FAST_CHANNEL_LEVEL_GET] = 1, 35 }, 36 .fast_channels_addr_ap = 37 (uint64_t[]){ 38 [MOD_SCMI_PERF_FAST_CHANNEL_LEVEL_GET] = 1, 39 }, 40 }, 41 [DVFS_ELEMENT_IDX_1] = {}, 42 [DVFS_ELEMENT_IDX_2] = {}, 43 }; 44 45 #ifdef BUILD_HAS_SCMI_PERF_PLUGIN_HANDLER 46 static const struct mod_scmi_plugin_config plugins_table[] = { 47 [0] = { 48 .id = FWK_ID_NONE_INIT, 49 .dom_type = PERF_PLUGIN_DOM_TYPE_PHYSICAL, 50 }, 51 }; 52 #endif 53 54 struct fwk_module_config config_scmi_perf = { 55 .data = &((struct mod_scmi_perf_config){ 56 .domains = &domains, 57 .perf_doms_count = FWK_ARRAY_SIZE(domains), 58 .fast_channels_alarm_id = FWK_ID_NONE_INIT, 59 #ifdef BUILD_HAS_SCMI_PERF_PLUGIN_HANDLER 60 .plugins = plugins_table, 61 .plugins_count = FWK_ARRAY_SIZE(plugins_table), 62 #endif 63 }), 64 }; 65 66 static const struct mod_dvfs_domain_config test_dvfs_config = { 67 .latency = 1200, 68 .sustained_idx = 2, 69 .opps = 70 (struct mod_dvfs_opp[]){ 71 { 72 .level = 100 * 1000000UL, 73 .frequency = 101 * FWK_KHZ, 74 .voltage = 102, 75 }, 76 { 77 .level = 200 * 1000000UL, 78 .frequency = 201 * FWK_KHZ, 79 .voltage = 202, 80 }, 81 { 82 .level = 300 * 1000000UL, 83 .frequency = 301 * FWK_KHZ, 84 .voltage = 302, 85 }, 86 { 87 .level = 400 * 1000000UL, 88 .frequency = 401 * FWK_KHZ, 89 .voltage = 402, 90 }, 91 { 92 .level = 500 * 1000000UL, 93 .frequency = 501 * FWK_KHZ, 94 .voltage = 502, 95 }, 96 { 0 }, 97 } 98 }; 99