diff options
author | Guttula, Suresh <Suresh.Guttula@amd.com> | 2018-11-16 01:50:37 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-11-26 15:47:34 -0500 |
commit | 8ca606de76a212b8c2b8212f82a13f8201cc3117 (patch) | |
tree | 81f08b2232d824d2fc5d9e31da0c68450686c7bb /drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | |
parent | e5bbf0e9ef0d1875050201eeb0239b040f09ed5b (diff) |
drm/amd:Enable/Disable NBPSTATE on On/OFF of UVD
We observe black lines (underflow) on display when playing a
4K video with UVD. On Disabling Low memory P state this issue is
not seen.
In this patch ,disabling low memory P state only when video
size >= 4k.
Multiple runs of power measurement shows no impact
Signed-off-by: suresh guttula <suresh.guttula@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c index 7235cd0b0fa9..0de8650c5d6e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | |||
@@ -33,6 +33,8 @@ | |||
33 | #include <linux/hwmon.h> | 33 | #include <linux/hwmon.h> |
34 | #include <linux/hwmon-sysfs.h> | 34 | #include <linux/hwmon-sysfs.h> |
35 | #include <linux/nospec.h> | 35 | #include <linux/nospec.h> |
36 | #include "hwmgr.h" | ||
37 | #define WIDTH_4K 3840 | ||
36 | 38 | ||
37 | static int amdgpu_debugfs_pm_init(struct amdgpu_device *adev); | 39 | static int amdgpu_debugfs_pm_init(struct amdgpu_device *adev); |
38 | 40 | ||
@@ -1956,6 +1958,17 @@ void amdgpu_dpm_enable_uvd(struct amdgpu_device *adev, bool enable) | |||
1956 | amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_UVD, !enable); | 1958 | amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_UVD, !enable); |
1957 | mutex_unlock(&adev->pm.mutex); | 1959 | mutex_unlock(&adev->pm.mutex); |
1958 | } | 1960 | } |
1961 | /* enable/disable Low Memory PState for UVD (4k videos) */ | ||
1962 | if (adev->asic_type == CHIP_STONEY && | ||
1963 | adev->uvd.decode_image_width >= WIDTH_4K) { | ||
1964 | struct pp_hwmgr *hwmgr = adev->powerplay.pp_handle; | ||
1965 | |||
1966 | if (hwmgr && hwmgr->hwmgr_func && | ||
1967 | hwmgr->hwmgr_func->update_nbdpm_pstate) | ||
1968 | hwmgr->hwmgr_func->update_nbdpm_pstate(hwmgr, | ||
1969 | !enable, | ||
1970 | true); | ||
1971 | } | ||
1959 | } | 1972 | } |
1960 | 1973 | ||
1961 | void amdgpu_dpm_enable_vce(struct amdgpu_device *adev, bool enable) | 1974 | void amdgpu_dpm_enable_vce(struct amdgpu_device *adev, bool enable) |