diff --git a/module/CMakeLists.txt b/module/CMakeLists.txt index af1d4ad5f7a38f9c19b8f3631cbe038bb8d07c25..b3b29e44ce2d617dfc8681a952af8ebe298ab4d5 100644 --- a/module/CMakeLists.txt +++ b/module/CMakeLists.txt @@ -51,6 +51,7 @@ list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/mock_ppu") list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/mock_psu") list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/mock_voltage_domain") list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/mpmm") +list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/mpmm_v2") list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/msg_smt") list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/msys_rom") list(APPEND SCP_MODULE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/noc_s3") diff --git a/module/mpmm_v2/CMakeLists.txt b/module/mpmm_v2/CMakeLists.txt index fc7f5db7dab2705dc2aaf2f753d988c51bee6ff2..903c9849aba9414633700439967b0a3d451e40c7 100644 --- a/module/mpmm_v2/CMakeLists.txt +++ b/module/mpmm_v2/CMakeLists.txt @@ -11,7 +11,7 @@ target_include_directories(${SCP_MODULE_TARGET} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_include_directories(${SCP_MODULE_TARGET} - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../amu/include" + PUBLIC "${CMAKE_SOURCE_DIR}/interface/amu" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../metrics_analyzer/include" PUBLIC "${CMAKE_SOURCE_DIR}/interface/power_management") @@ -19,3 +19,7 @@ target_sources(${SCP_MODULE_TARGET} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/mod_mpmm_v2.c") target_link_libraries(${SCP_MODULE_TARGET} PRIVATE module-power-domain) + +if(BUILD_HAS_MOD_PERF_CONTROLLER) +target_link_libraries(${SCP_MODULE_TARGET} PRIVATE module-perf-controller) +endif() diff --git a/module/mpmm_v2/src/mod_mpmm_v2.c b/module/mpmm_v2/src/mod_mpmm_v2.c index 668727518c10aeeaebb03660a0ef8872b6b9d906..eded9b1e790eb04926f632c2671ff0dfb661d4ae 100644 --- a/module/mpmm_v2/src/mod_mpmm_v2.c +++ b/module/mpmm_v2/src/mod_mpmm_v2.c @@ -27,6 +27,8 @@ #include #include +#include + static struct mod_mpmm_v2_ctx { /* Number of MPMM_V2 domains */ uint32_t mpmm_v2_domain_count; @@ -164,7 +166,7 @@ static void mpmm_v2_domain_set_gears(struct mod_mpmm_v2_domain_ctx *ctx) core_ctx = &ctx->core_ctx[core_idx]; if (core_ctx->online && core_ctx->needs_gear_update) { FWK_LOG_INFO( - "domain %d: core %d: setting gear to %d\n", + "domain %d: core %d: setting gear to %" PRIu32 "\n", ctx->domain_id.element.element_idx, core_ctx->core_id.sub_element.sub_element_idx, core_ctx->selected_gear & MPMM_MPMMCR_GEAR_MASK); diff --git a/product/totalcompute/tc3/scp_runtime/config_mpmm_v2.c b/product/totalcompute/tc3/scp_runtime/config_mpmm_v2.c index cffc25e84d0a54737b46cb0cf2953ab5bc2912cc..c6ebdb20069f15f93075f4bfcbf8ea9bf004ce8b 100644 --- a/product/totalcompute/tc3/scp_runtime/config_mpmm_v2.c +++ b/product/totalcompute/tc3/scp_runtime/config_mpmm_v2.c @@ -6,10 +6,10 @@ */ #include "scp_mmap.h" -#include "tc2_amu.h" -#include "tc2_core.h" -#include "tc2_dvfs.h" -#include "tc2_timer.h" +#include "tc3_core.h" +#include "tc3_dvfs.h" +#include "tc3_timer.h" +#include "tc_amu.h" #include #include @@ -19,9 +19,9 @@ #include enum mpmm_v2_domain_idx { - MPMM_V2_A520_DOM_IDX, - MPMM_V2_A720_DOM_IDX, - MPMM_V2_X4_DOM_IDX, + MPMM_V2_LITTLE_DOM_IDX, + MPMM_V2_MID_DOM_IDX, + MPMM_V2_BIG_DOM_IDX, MPMM_V2_DOM_COUNT, }; @@ -36,7 +36,7 @@ enum cpu_idx { CORE7_IDX }; -static const struct mod_mpmm_v2_core_config cortex_a520_core_config[] = { +static const struct mod_mpmm_v2_core_config little_core_config[] = { [CORE0_IDX] = { .pd_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_POWER_DOMAIN, CORE0_IDX), .mpmm_reg_base = SCP_MPMM_CORE_BASE(CORE0_IDX), @@ -67,7 +67,7 @@ static const struct mod_mpmm_v2_core_config cortex_a520_core_config[] = { }, }; -static const struct mod_mpmm_v2_core_config cortex_a720_core_config[] = { +static const struct mod_mpmm_v2_core_config mid_core_config[] = { [CORE0_IDX] = { .pd_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_POWER_DOMAIN, CORE4_IDX), .mpmm_reg_base = SCP_MPMM_CORE_BASE(CORE4_IDX), @@ -91,7 +91,7 @@ static const struct mod_mpmm_v2_core_config cortex_a720_core_config[] = { }, }; -static const struct mod_mpmm_v2_core_config cortex_x4_core_config[1] = { +static const struct mod_mpmm_v2_core_config big_core_config[1] = { [CORE0_IDX] = { .pd_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_POWER_DOMAIN, CORE7_IDX), .mpmm_reg_base = SCP_MPMM_CORE_BASE(CORE7_IDX), @@ -101,90 +101,90 @@ static const struct mod_mpmm_v2_core_config cortex_x4_core_config[1] = { }, }; -static const struct mod_mpmm_v2_domain_config cortex_a520_domain_conf[2] = { +static const struct mod_mpmm_v2_domain_config little_domain_conf[2] = { [0] = { #ifdef BUILD_HAS_MOD_PERF_CONTROLLER .perf_id = FWK_ID_ELEMENT_INIT( - FWK_MODULE_IDX_PERF_CONTROLLER, DVFS_ELEMENT_IDX_CORTEX_A520), + FWK_MODULE_IDX_PERF_CONTROLLER, DVFS_ELEMENT_IDX_GROUP_LITTLE), #else .perf_id = FWK_ID_ELEMENT_INIT( - FWK_MODULE_IDX_DVFS, DVFS_ELEMENT_IDX_CORTEX_A520), + FWK_MODULE_IDX_DVFS, DVFS_ELEMENT_IDX_GROUP_LITTLE), #endif .max_power = 447, .min_power = 112, - .gear_weights = (float[3]) { + .gear_weights = (uint32_t[3]) { [0] = 100, [1] = 93, [2] = 86, }, .base_throtl_count = 10, .num_of_gears = 3, - .core_config = cortex_a520_core_config, + .core_config = little_core_config, }, [1] = {0}, }; -static const struct mod_mpmm_v2_domain_config cortex_a720_domain_conf[2] = { +static const struct mod_mpmm_v2_domain_config mid_domain_conf[2] = { [0] = { #ifdef BUILD_HAS_MOD_PERF_CONTROLLER .perf_id = FWK_ID_ELEMENT_INIT( - FWK_MODULE_IDX_PERF_CONTROLLER, DVFS_ELEMENT_IDX_CORTEX_A720), + FWK_MODULE_IDX_PERF_CONTROLLER, DVFS_ELEMENT_IDX_GROUP_MID), #else .perf_id = FWK_ID_ELEMENT_INIT( - FWK_MODULE_IDX_DVFS, DVFS_ELEMENT_IDX_CORTEX_A720), + FWK_MODULE_IDX_DVFS, DVFS_ELEMENT_IDX_GROUP_MID), #endif .max_power = 1183, .min_power = 527, - .gear_weights = (float[3]) { + .gear_weights = (uint32_t[3]) { [0] = 100, [1] = 90, [2] = 84, }, .base_throtl_count = 10, .num_of_gears = 3, - .core_config = cortex_a720_core_config, + .core_config = mid_core_config, }, [1] = {0}, }; -static const struct mod_mpmm_v2_domain_config cortex_x4_domain_conf[2] = { +static const struct mod_mpmm_v2_domain_config big_domain_conf[2] = { [0] = { #ifdef BUILD_HAS_MOD_PERF_CONTROLLER .perf_id = FWK_ID_ELEMENT_INIT( - FWK_MODULE_IDX_PERF_CONTROLLER, DVFS_ELEMENT_IDX_CORTEX_X4), + FWK_MODULE_IDX_PERF_CONTROLLER, DVFS_ELEMENT_IDX_GROUP_BIG), #else .perf_id = FWK_ID_ELEMENT_INIT( - FWK_MODULE_IDX_DVFS, DVFS_ELEMENT_IDX_CORTEX_X4), + FWK_MODULE_IDX_DVFS, DVFS_ELEMENT_IDX_GROUP_BIG), #endif .max_power = 2898, .min_power = 1989, - .gear_weights = (float[3]) { + .gear_weights = (uint32_t[3]) { [0] = 100, [1] = 100, [2] = 70, }, .base_throtl_count = 10, .num_of_gears = 3, - .core_config = cortex_x4_core_config, + .core_config = big_core_config, }, [1] = {0}, }; static const struct fwk_element mpmm_v2_element_table[4] = { - [MPMM_V2_A520_DOM_IDX] = { - .name = "MPMM_CORTEX_A520_ELEM", + [MPMM_V2_LITTLE_DOM_IDX] = { + .name = "MPMM_LITTLE_ELEM", .sub_element_count = 4, - .data = cortex_a520_domain_conf, + .data = little_domain_conf, }, - [MPMM_V2_A720_DOM_IDX] = { - .name = "MPMM_HUNTER_ELEM", + [MPMM_V2_MID_DOM_IDX] = { + .name = "MPMM_MID_ELEM", .sub_element_count = 3, - .data = cortex_a720_domain_conf, + .data = mid_domain_conf, }, - [MPMM_V2_X4_DOM_IDX] = { - .name = "MPMM_CORTEX_X4_ELEM", + [MPMM_V2_BIG_DOM_IDX] = { + .name = "MPMM_BIG_ELEM", .sub_element_count = 1, - .data = cortex_x4_domain_conf, + .data = big_domain_conf, }, [MPMM_V2_DOM_COUNT] = { 0 }, };