struct dc_power_profile dc_get_power_profile_for_dc_state(const struct dc_state *context)
{
struct dc_power_profile profile = { 0 };
- struct dc *dc = NULL;
- if (!context || !context->clk_mgr || !context->clk_mgr->ctx || !context->clk_mgr->ctx->dc)
- return profile;
-
- dc = context->clk_mgr->ctx->dc;
-
- if (dc->res_pool->funcs->get_power_profile)
- profile.power_level = dc->res_pool->funcs->get_power_profile(context);
+ profile.power_level += !context->bw_ctx.bw.dcn.clk.p_state_change_support;
return profile;
}
}
if (s->pmo_dcn4.num_pstate_candidates > 0) {
- s->pmo_dcn4.pstate_strategy_candidates[s->pmo_dcn4.num_pstate_candidates-1].allow_state_increase = true;
s->pmo_dcn4.cur_pstate_candidate = -1;
return true;
} else {
void (*get_panel_config_defaults)(struct dc_panel_config *panel_config);
void (*build_pipe_pix_clk_params)(struct pipe_ctx *pipe_ctx);
- /*
- * Get indicator of power from a context that went through full validation
- */
- int (*get_power_profile)(const struct dc_state *context);
};
struct audio_support{
*panel_config = panel_config_defaults;
}
-static int dcn315_get_power_profile(const struct dc_state *context)
-{
- return !context->bw_ctx.bw.dcn.clk.p_state_change_support;
-}
-
static struct dc_cap_funcs cap_funcs = {
.get_dcc_compression_cap = dcn20_get_dcc_compression_cap
};
.update_bw_bounding_box = dcn315_update_bw_bounding_box,
.patch_unknown_plane_state = dcn20_patch_unknown_plane_state,
.get_panel_config_defaults = dcn315_get_panel_config_defaults,
- .get_power_profile = dcn315_get_power_profile,
};
static bool dcn315_resource_construct(
}
}
-static int dcn401_get_power_profile(const struct dc_state *context)
-{
- int uclk_mhz = context->bw_ctx.bw.dcn.clk.dramclk_khz / 1000;
- int dpm_level = 0;
-
- for (int i = 0; i < context->clk_mgr->bw_params->clk_table.num_entries_per_clk.num_memclk_levels; i++) {
- if (context->clk_mgr->bw_params->clk_table.entries[i].memclk_mhz == 0 ||
- uclk_mhz < context->clk_mgr->bw_params->clk_table.entries[i].memclk_mhz)
- break;
- if (uclk_mhz > context->clk_mgr->bw_params->clk_table.entries[i].memclk_mhz)
- dpm_level++;
- }
-
- return dpm_level;
-}
-
static struct resource_funcs dcn401_res_pool_funcs = {
.destroy = dcn401_destroy_resource_pool,
.link_enc_create = dcn401_link_encoder_create,
.prepare_mcache_programming = dcn401_prepare_mcache_programming,
.build_pipe_pix_clk_params = dcn401_build_pipe_pix_clk_params,
.calculate_mall_ways_from_bytes = dcn32_calculate_mall_ways_from_bytes,
- .get_power_profile = dcn401_get_power_profile,
};
static uint32_t read_pipe_fuses(struct dc_context *ctx)