mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
drm/amd/pm: Skip redundant UCLK restore in smu_v13_0_6
Only reapply UCLK soft limits during PP_OD_RESTORE_DEFAULT when the current max differs from the DPM table max. This avoids redundant SMC updates and prevents -EINVAL on restore when no change is needed. Fixes:b7a9003445("drm/amd/pm: Allow setting max UCLK on SMU v13.0.6") Signed-off-by: Asad Kamal <asad.kamal@amd.com> Reviewed-by: Lijo Lazar <lijo.lazar@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit17f11bbbc7)
This commit is contained in:
parent
37c2caa167
commit
cdbc3b62cf
|
|
@ -2122,6 +2122,7 @@ static int smu_v13_0_6_usr_edit_dpm_table(struct smu_context *smu,
|
|||
{
|
||||
struct smu_dpm_context *smu_dpm = &(smu->smu_dpm);
|
||||
struct smu_13_0_dpm_context *dpm_context = smu_dpm->dpm_context;
|
||||
struct smu_dpm_table *uclk_table = &dpm_context->dpm_tables.uclk_table;
|
||||
struct smu_umd_pstate_table *pstate_table = &smu->pstate_table;
|
||||
uint32_t min_clk;
|
||||
uint32_t max_clk;
|
||||
|
|
@ -2221,14 +2222,16 @@ static int smu_v13_0_6_usr_edit_dpm_table(struct smu_context *smu,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
min_clk = SMU_DPM_TABLE_MIN(
|
||||
&dpm_context->dpm_tables.uclk_table);
|
||||
max_clk = SMU_DPM_TABLE_MAX(
|
||||
&dpm_context->dpm_tables.uclk_table);
|
||||
ret = smu_v13_0_6_set_soft_freq_limited_range(
|
||||
smu, SMU_UCLK, min_clk, max_clk, false);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (SMU_DPM_TABLE_MAX(uclk_table) !=
|
||||
pstate_table->uclk_pstate.curr.max) {
|
||||
min_clk = SMU_DPM_TABLE_MIN(&dpm_context->dpm_tables.uclk_table);
|
||||
max_clk = SMU_DPM_TABLE_MAX(&dpm_context->dpm_tables.uclk_table);
|
||||
ret = smu_v13_0_6_set_soft_freq_limited_range(smu,
|
||||
SMU_UCLK, min_clk,
|
||||
max_clk, false);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
smu_v13_0_reset_custom_level(smu);
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user