mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
drm/radeon: fix multi-head power profile stability on BTC+ asics
vddci needs to track mclk for multi-head. Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
This commit is contained in:
parent
0e3d50bfcb
commit
7ae764b11e
2 changed files with 14 additions and 1 deletions
|
@ -403,6 +403,19 @@ void evergreen_pm_misc(struct radeon_device *rdev)
|
||||||
rdev->pm.current_vddc = voltage->voltage;
|
rdev->pm.current_vddc = voltage->voltage;
|
||||||
DRM_DEBUG("Setting: vddc: %d\n", voltage->voltage);
|
DRM_DEBUG("Setting: vddc: %d\n", voltage->voltage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* starting with BTC, there is one state that is used for both
|
||||||
|
* MH and SH. Difference is that we always use the high clock index for
|
||||||
|
* mclk and vddci.
|
||||||
|
*/
|
||||||
|
if ((rdev->pm.pm_method == PM_METHOD_PROFILE) &&
|
||||||
|
(rdev->family >= CHIP_BARTS) &&
|
||||||
|
rdev->pm.active_crtc_count &&
|
||||||
|
((rdev->pm.profile_index == PM_PROFILE_MID_MH_IDX) ||
|
||||||
|
(rdev->pm.profile_index == PM_PROFILE_LOW_MH_IDX)))
|
||||||
|
voltage = &rdev->pm.power_state[req_ps_idx].
|
||||||
|
clock_info[rdev->pm.profiles[PM_PROFILE_HIGH_MH_IDX].dpms_on_cm_idx].voltage;
|
||||||
|
|
||||||
/* 0xff01 is a flag rather then an actual voltage */
|
/* 0xff01 is a flag rather then an actual voltage */
|
||||||
if (voltage->vddci == 0xff01)
|
if (voltage->vddci == 0xff01)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -169,7 +169,7 @@ static void radeon_set_power_state(struct radeon_device *rdev)
|
||||||
|
|
||||||
/* starting with BTC, there is one state that is used for both
|
/* starting with BTC, there is one state that is used for both
|
||||||
* MH and SH. Difference is that we always use the high clock index for
|
* MH and SH. Difference is that we always use the high clock index for
|
||||||
* mclk.
|
* mclk and vddci.
|
||||||
*/
|
*/
|
||||||
if ((rdev->pm.pm_method == PM_METHOD_PROFILE) &&
|
if ((rdev->pm.pm_method == PM_METHOD_PROFILE) &&
|
||||||
(rdev->family >= CHIP_BARTS) &&
|
(rdev->family >= CHIP_BARTS) &&
|
||||||
|
|
Loading…
Add table
Reference in a new issue