mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
drm/amd/pm: Initialize power profile mode
Refactor such that individual SMU IP versions can choose the startup power profile mode. If no preference, then use the generic default power profile selection logic. Signed-off-by: Lijo Lazar <lijo.lazar@amd.com> Reviewed-by: Yang Wang <kevinyang.wang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org # 6.11.x
This commit is contained in:
parent
47f402a3e0
commit
8eb966f240
|
|
@ -164,6 +164,7 @@ enum amd_pp_task {
|
|||
};
|
||||
|
||||
enum PP_SMC_POWER_PROFILE {
|
||||
PP_SMC_POWER_PROFILE_UNKNOWN = -1,
|
||||
PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT = 0x0,
|
||||
PP_SMC_POWER_PROFILE_FULLSCREEN3D = 0x1,
|
||||
PP_SMC_POWER_PROFILE_POWERSAVING = 0x2,
|
||||
|
|
|
|||
|
|
@ -764,6 +764,7 @@ static int smu_early_init(struct amdgpu_ip_block *ip_block)
|
|||
smu->smu_baco.platform_support = false;
|
||||
smu->smu_baco.maco_support = false;
|
||||
smu->user_dpm_profile.fan_mode = -1;
|
||||
smu->power_profile_mode = PP_SMC_POWER_PROFILE_UNKNOWN;
|
||||
|
||||
mutex_init(&smu->message_lock);
|
||||
|
||||
|
|
@ -1248,6 +1249,21 @@ static bool smu_is_workload_profile_available(struct smu_context *smu,
|
|||
return smu->workload_map && smu->workload_map[profile].valid_mapping;
|
||||
}
|
||||
|
||||
static void smu_init_power_profile(struct smu_context *smu)
|
||||
{
|
||||
if (smu->power_profile_mode == PP_SMC_POWER_PROFILE_UNKNOWN) {
|
||||
if (smu->is_apu ||
|
||||
!smu_is_workload_profile_available(
|
||||
smu, PP_SMC_POWER_PROFILE_FULLSCREEN3D))
|
||||
smu->power_profile_mode =
|
||||
PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT;
|
||||
else
|
||||
smu->power_profile_mode =
|
||||
PP_SMC_POWER_PROFILE_FULLSCREEN3D;
|
||||
}
|
||||
smu_power_profile_mode_get(smu, smu->power_profile_mode);
|
||||
}
|
||||
|
||||
static int smu_sw_init(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
|
@ -1269,13 +1285,7 @@ static int smu_sw_init(struct amdgpu_ip_block *ip_block)
|
|||
atomic_set(&smu->smu_power.power_gate.vpe_gated, 1);
|
||||
atomic_set(&smu->smu_power.power_gate.umsch_mm_gated, 1);
|
||||
|
||||
if (smu->is_apu ||
|
||||
!smu_is_workload_profile_available(smu, PP_SMC_POWER_PROFILE_FULLSCREEN3D))
|
||||
smu->power_profile_mode = PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT;
|
||||
else
|
||||
smu->power_profile_mode = PP_SMC_POWER_PROFILE_FULLSCREEN3D;
|
||||
smu_power_profile_mode_get(smu, smu->power_profile_mode);
|
||||
|
||||
smu_init_power_profile(smu);
|
||||
smu->display_config = &adev->pm.pm_display_cfg;
|
||||
|
||||
smu->smu_dpm.dpm_level = AMD_DPM_FORCED_LEVEL_AUTO;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user