Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: enable JPEG2.0 dpm

By using its own enabling function

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Leo Liu and committed by
Alex Deucher
474b6d29 0db2ab99

+22 -1
+12
drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
··· 2718 2718 2719 2719 } 2720 2720 2721 + void amdgpu_dpm_enable_jpeg(struct amdgpu_device *adev, bool enable) 2722 + { 2723 + int ret = 0; 2724 + 2725 + if (is_support_sw_smu(adev)) { 2726 + ret = smu_dpm_set_power_gate(&adev->smu, AMD_IP_BLOCK_TYPE_JPEG, enable); 2727 + if (ret) 2728 + DRM_ERROR("[SW SMU]: dpm enable jpeg failed, state = %s, ret = %d. \n", 2729 + enable ? "true" : "false", ret); 2730 + } 2731 + } 2732 + 2721 2733 int amdgpu_pm_virt_sysfs_init(struct amdgpu_device *adev) 2722 2734 { 2723 2735 int ret = 0;
+1
drivers/gpu/drm/amd/amdgpu/amdgpu_pm.h
··· 41 41 void amdgpu_dpm_thermal_work_handler(struct work_struct *work); 42 42 void amdgpu_dpm_enable_uvd(struct amdgpu_device *adev, bool enable); 43 43 void amdgpu_dpm_enable_vce(struct amdgpu_device *adev, bool enable); 44 + void amdgpu_dpm_enable_jpeg(struct amdgpu_device *adev, bool enable); 44 45 45 46 #endif
+9 -1
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c
··· 333 333 struct amdgpu_ring *ring = &adev->jpeg.inst->ring_dec; 334 334 int r; 335 335 336 + if (adev->pm.dpm_enabled) 337 + amdgpu_dpm_enable_jpeg(adev, true); 338 + 336 339 /* disable power gating */ 337 340 r = jpeg_v2_0_disable_power_gating(adev); 338 341 if (r) ··· 391 388 392 389 /* enable power gating */ 393 390 r = jpeg_v2_0_enable_power_gating(adev); 391 + if (r) 392 + return r; 394 393 395 - return r; 394 + if (adev->pm.dpm_enabled) 395 + amdgpu_dpm_enable_jpeg(adev, false); 396 + 397 + return 0; 396 398 } 397 399 398 400 /**