diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2014-07-31 18:07:17 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2014-08-05 08:53:47 -0400 |
commit | 6b57f20cb5b708415fbab63847f8f8429b051af8 (patch) | |
tree | 9403ce7ea142d1d6d1cdf72d06fa60a9ad580b26 | |
parent | e9f274b2a1bd4ecc569b823b1e7942e9bf92593e (diff) |
drm/radeon/dpm: handle voltage info fetching on hawaii
Some hawaii cards use a different method to fetch the
voltage info from the vbios.
bug:
https://bugs.freedesktop.org/show_bug.cgi?id=74250
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
-rw-r--r-- | drivers/gpu/drm/radeon/ci_dpm.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/ci_dpm.c b/drivers/gpu/drm/radeon/ci_dpm.c index 584090ac3eb9..022561e28707 100644 --- a/drivers/gpu/drm/radeon/ci_dpm.c +++ b/drivers/gpu/drm/radeon/ci_dpm.c | |||
@@ -940,7 +940,18 @@ static void ci_get_leakage_voltages(struct radeon_device *rdev) | |||
940 | pi->vddc_leakage.count = 0; | 940 | pi->vddc_leakage.count = 0; |
941 | pi->vddci_leakage.count = 0; | 941 | pi->vddci_leakage.count = 0; |
942 | 942 | ||
943 | if (radeon_atom_get_leakage_id_from_vbios(rdev, &leakage_id) == 0) { | 943 | if (rdev->pm.dpm.platform_caps & ATOM_PP_PLATFORM_CAP_EVV) { |
944 | for (i = 0; i < CISLANDS_MAX_LEAKAGE_COUNT; i++) { | ||
945 | virtual_voltage_id = ATOM_VIRTUAL_VOLTAGE_ID0 + i; | ||
946 | if (radeon_atom_get_voltage_evv(rdev, virtual_voltage_id, &vddc) != 0) | ||
947 | continue; | ||
948 | if (vddc != 0 && vddc != virtual_voltage_id) { | ||
949 | pi->vddc_leakage.actual_voltage[pi->vddc_leakage.count] = vddc; | ||
950 | pi->vddc_leakage.leakage_id[pi->vddc_leakage.count] = virtual_voltage_id; | ||
951 | pi->vddc_leakage.count++; | ||
952 | } | ||
953 | } | ||
954 | } else if (radeon_atom_get_leakage_id_from_vbios(rdev, &leakage_id) == 0) { | ||
944 | for (i = 0; i < CISLANDS_MAX_LEAKAGE_COUNT; i++) { | 955 | for (i = 0; i < CISLANDS_MAX_LEAKAGE_COUNT; i++) { |
945 | virtual_voltage_id = ATOM_VIRTUAL_VOLTAGE_ID0 + i; | 956 | virtual_voltage_id = ATOM_VIRTUAL_VOLTAGE_ID0 + i; |
946 | if (radeon_atom_get_leakage_vddc_based_on_leakage_params(rdev, &vddc, &vddci, | 957 | if (radeon_atom_get_leakage_vddc_based_on_leakage_params(rdev, &vddc, &vddci, |