set the workload based on MALL status Signed-off-by: Kenneth Feng <kenneth.feng@xxxxxxx> --- .../drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c index 8bc73922e3a6..c569c8b4bdf9 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c @@ -244,6 +244,8 @@ static void amdgpu_dm_crtc_vblank_control_worker(struct work_struct *work) struct vblank_control_work *vblank_work = container_of(work, struct vblank_control_work, work); struct amdgpu_display_manager *dm = vblank_work->dm; + struct amdgpu_device *adev = dm->adev; + int ret; mutex_lock(&dm->dc_lock); @@ -252,8 +254,14 @@ static void amdgpu_dm_crtc_vblank_control_worker(struct work_struct *work) else if (dm->active_vblank_irq_count) dm->active_vblank_irq_count--; - if (dm->active_vblank_irq_count > 0) + if (dm->active_vblank_irq_count > 0) { + ret = amdgpu_dpm_set_and_save_bootup_power_profile(adev, false); + if (ret) { + dev_err(adev->dev, "(%d) failed to exit bootup workload\n", ret); + return; + } dc_allow_idle_optimizations(dm->dc, false); + } /* * Control PSR based on vblank requirements from OS @@ -271,8 +279,14 @@ static void amdgpu_dm_crtc_vblank_control_worker(struct work_struct *work) vblank_work->acrtc->dm_irq_params.allow_sr_entry); } - if (dm->active_vblank_irq_count == 0) + if (dm->active_vblank_irq_count == 0) { + ret = amdgpu_dpm_set_and_save_bootup_power_profile(adev, true); + if (ret) { + dev_err(adev->dev, "(%d) failed to set bootup workload\n", ret); + return; + } dc_allow_idle_optimizations(dm->dc, true); + } mutex_unlock(&dm->dc_lock); -- 2.34.1