diff options
author | Leandro Belli <leandro.belli@arm.com> | 2020-07-22 00:31:11 +0000 |
---|---|---|
committer | jimqui01 <54316584+jimqui01@users.noreply.github.com> | 2020-08-06 09:53:14 +0100 |
commit | 87144e89c4a54a83a029d95cd5fc8d525323b98b (patch) | |
tree | a0b2f16328d1d7497554e89f9777b3b10c2f8dd2 /product/sgm775 | |
parent | abf948935da0c046908b15a73dc7caeb8040eaf0 (diff) |
DVFS/SCMI-perf: Abstract performance levels.
This patch replace explicit frequency by an abstract
performance level.
All platforms were updated to use abstract
performance levels.
Change-Id: I6a7d8c4e12a593880275e95f27306b53ce96b2a8
Signed-off-by: Leandro Belli <leandro.belli@arm.com>
Diffstat (limited to 'product/sgm775')
-rw-r--r-- | product/sgm775/scp_ramfw/config_dvfs.c | 168 |
1 files changed, 92 insertions, 76 deletions
diff --git a/product/sgm775/scp_ramfw/config_dvfs.c b/product/sgm775/scp_ramfw/config_dvfs.c index bd0bed1b..a7b31ac3 100644 --- a/product/sgm775/scp_ramfw/config_dvfs.c +++ b/product/sgm775/scp_ramfw/config_dvfs.c @@ -25,109 +25,125 @@ static const struct mod_dvfs_domain_config cpu_group_little = { .psu_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_PSU, 0), .clock_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, 1), - .alarm_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_TIMER, 0, + .alarm_id = FWK_ID_SUB_ELEMENT_INIT( + FWK_MODULE_IDX_TIMER, + 0, CONFIG_TIMER_DVFS_CPU_GROUP_LITTLE), .notification_id = FWK_ID_MODULE_INIT(FWK_MODULE_IDX_SCMI_PERF), - .notification_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_SCMI_PERF, + .notification_api_id = FWK_ID_API_INIT( + FWK_MODULE_IDX_SCMI_PERF, MOD_SCMI_PERF_DVFS_NOTIFICATION_API), .retry_ms = 1, .latency = 1200, .sustained_idx = 2, - .opps = (struct mod_dvfs_opp[]) { - { - .frequency = 665 * FWK_MHZ, - .voltage = 800, - }, - { - .frequency = 998 * FWK_MHZ, - .voltage = 850, - }, - { - .frequency = 1330 * FWK_MHZ, - .voltage = 900, - }, - { - .frequency = 1463 * FWK_MHZ, - .voltage = 950, - }, - { - .frequency = 1596 * FWK_MHZ, - .voltage = 1000, - }, - { 0 } - } + .opps = (struct mod_dvfs_opp[]){ { + .level = 665 * 1000000UL, + .frequency = 665 * FWK_MHZ, + .voltage = 800, + }, + { + .level = 998 * 1000000UL, + .frequency = 998 * FWK_MHZ, + .voltage = 850, + }, + { + .level = 1330 * 1000000UL, + .frequency = 1330 * FWK_MHZ, + .voltage = 900, + }, + { + .level = 1463 * 1000000UL, + .frequency = 1463 * FWK_MHZ, + .voltage = 950, + }, + { + .level = 1596 * 1000000UL, + .frequency = 1596 * FWK_MHZ, + .voltage = 1000, + }, + { 0 } } }; static const struct mod_dvfs_domain_config cpu_group_big = { .psu_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_PSU, 1), .clock_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, 0), - .alarm_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_TIMER, 0, + .alarm_id = FWK_ID_SUB_ELEMENT_INIT( + FWK_MODULE_IDX_TIMER, + 0, CONFIG_TIMER_DVFS_CPU_GROUP_BIG), .notification_id = FWK_ID_MODULE_INIT(FWK_MODULE_IDX_SCMI_PERF), - .notification_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_SCMI_PERF, + .notification_api_id = FWK_ID_API_INIT( + FWK_MODULE_IDX_SCMI_PERF, MOD_SCMI_PERF_DVFS_NOTIFICATION_API), .retry_ms = 1, .latency = 1200, .sustained_idx = 2, - .opps = (struct mod_dvfs_opp[]) { - { - .frequency = 1313 * FWK_MHZ, - .voltage = 800, - }, - { - .frequency = 1531 * FWK_MHZ, - .voltage = 850, - }, - { - .frequency = 1750 * FWK_MHZ, - .voltage = 900, - }, - { - .frequency = 2100 * FWK_MHZ, - .voltage = 950, - }, - { - .frequency = 2450 * FWK_MHZ, - .voltage = 1000, - }, - { 0 } - } + .opps = (struct mod_dvfs_opp[]){ { + .level = 1313 * 1000000UL, + .frequency = 1313 * FWK_MHZ, + .voltage = 800, + }, + { + .level = 1531 * 1000000UL, + .frequency = 1531 * FWK_MHZ, + .voltage = 850, + }, + { + .level = 1750 * 1000000UL, + .frequency = 1750 * FWK_MHZ, + .voltage = 900, + }, + { + .level = 2100 * 1000000UL, + .frequency = 2100 * FWK_MHZ, + .voltage = 950, + }, + { + .level = 2450 * 1000000UL, + .frequency = 2450 * FWK_MHZ, + .voltage = 1000, + }, + { 0 } } }; static const struct mod_dvfs_domain_config gpu = { .psu_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_PSU, 2), .clock_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CLOCK, 2), - .alarm_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_TIMER, 0, - CONFIG_TIMER_DVFS_GPU), + .alarm_id = + FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_TIMER, 0, CONFIG_TIMER_DVFS_GPU), .notification_id = FWK_ID_MODULE_INIT(FWK_MODULE_IDX_SCMI_PERF), - .notification_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_SCMI_PERF, + .notification_api_id = FWK_ID_API_INIT( + FWK_MODULE_IDX_SCMI_PERF, MOD_SCMI_PERF_DVFS_NOTIFICATION_API), .retry_ms = 1, .latency = 1200, .sustained_idx = 4, - .opps = (struct mod_dvfs_opp[]) { - { - .frequency = 450 * FWK_MHZ, - .voltage = 800, - }, - { - .frequency = 487500 * FWK_KHZ, - .voltage = 850, - }, - { - .frequency = 525 * FWK_MHZ, - .voltage = 900, - }, - { - .frequency = 562500 * FWK_KHZ, - .voltage = 950, - }, - { - .frequency = 600 * FWK_MHZ, - .voltage = 1000, - }, - { 0 } - } + .opps = (struct mod_dvfs_opp[]){ { + .level = 450 * 1000000UL, + .frequency = 450 * FWK_MHZ, + .voltage = 800, + }, + { + .level = 487500 * 1000UL, + .frequency = 487500 * FWK_KHZ, + .voltage = 850, + }, + { + .level = 525 * 1000000UL, + .frequency = 525 * FWK_MHZ, + .voltage = 900, + }, + { + .level = 562500 * 1000UL, + .frequency = 562500 * FWK_KHZ, + .voltage = 950, + }, + { + .level = 600 * 1000000UL, + .frequency = 600 * FWK_MHZ, + .voltage = 1000, + }, + { 0 } } }; static const struct fwk_element element_table[] = { |