aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2013-05-06 11:31:04 -0400
committerAlex Deucher <alexander.deucher@amd.com>2013-08-30 16:30:17 -0400
commitef976ec4e2ae6d91a9aab5714071d1eed0115ed6 (patch)
treef13bc3f84f7f858e43e631529c60c060ffd918e6 /drivers/gpu/drm
parent9dd9333b2fac7b0ff00574693f3192926e3466fe (diff)
drm/radeon/dpm: update cac leakage table parsing for CI
Uses a different table format if the board supports EVV. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/radeon/r600_dpm.c17
-rw-r--r--drivers/gpu/drm/radeon/radeon.h15
2 files changed, 24 insertions, 8 deletions
diff --git a/drivers/gpu/drm/radeon/r600_dpm.c b/drivers/gpu/drm/radeon/r600_dpm.c
index d54a83864ad4..ccdf770dd770 100644
--- a/drivers/gpu/drm/radeon/r600_dpm.c
+++ b/drivers/gpu/drm/radeon/r600_dpm.c
@@ -956,10 +956,19 @@ int r600_parse_extended_power_table(struct radeon_device *rdev)
956 return -ENOMEM; 956 return -ENOMEM;
957 } 957 }
958 for (i = 0; i < cac_table->ucNumEntries; i++) { 958 for (i = 0; i < cac_table->ucNumEntries; i++) {
959 rdev->pm.dpm.dyn_state.cac_leakage_table.entries[i].vddc = 959 if (rdev->pm.dpm.platform_caps & ATOM_PP_PLATFORM_CAP_EVV) {
960 le16_to_cpu(cac_table->entries[i].usVddc); 960 rdev->pm.dpm.dyn_state.cac_leakage_table.entries[i].vddc1 =
961 rdev->pm.dpm.dyn_state.cac_leakage_table.entries[i].leakage = 961 le16_to_cpu(cac_table->entries[i].usVddc1);
962 le32_to_cpu(cac_table->entries[i].ulLeakageValue); 962 rdev->pm.dpm.dyn_state.cac_leakage_table.entries[i].vddc2 =
963 le16_to_cpu(cac_table->entries[i].usVddc2);
964 rdev->pm.dpm.dyn_state.cac_leakage_table.entries[i].vddc3 =
965 le16_to_cpu(cac_table->entries[i].usVddc3);
966 } else {
967 rdev->pm.dpm.dyn_state.cac_leakage_table.entries[i].vddc =
968 le16_to_cpu(cac_table->entries[i].usVddc);
969 rdev->pm.dpm.dyn_state.cac_leakage_table.entries[i].leakage =
970 le32_to_cpu(cac_table->entries[i].ulLeakageValue);
971 }
963 } 972 }
964 rdev->pm.dpm.dyn_state.cac_leakage_table.count = cac_table->ucNumEntries; 973 rdev->pm.dpm.dyn_state.cac_leakage_table.count = cac_table->ucNumEntries;
965 } 974 }
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index d1f5f7bb052c..3376107f3b1e 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -1256,14 +1256,21 @@ struct radeon_clock_voltage_dependency_table {
1256 struct radeon_clock_voltage_dependency_entry *entries; 1256 struct radeon_clock_voltage_dependency_entry *entries;
1257}; 1257};
1258 1258
1259struct radeon_cac_leakage_entry { 1259union radeon_cac_leakage_entry {
1260 u16 vddc; 1260 struct {
1261 u32 leakage; 1261 u16 vddc;
1262 u32 leakage;
1263 };
1264 struct {
1265 u16 vddc1;
1266 u16 vddc2;
1267 u16 vddc3;
1268 };
1262}; 1269};
1263 1270
1264struct radeon_cac_leakage_table { 1271struct radeon_cac_leakage_table {
1265 u32 count; 1272 u32 count;
1266 struct radeon_cac_leakage_entry *entries; 1273 union radeon_cac_leakage_entry *entries;
1267}; 1274};
1268 1275
1269struct radeon_phase_shedding_limits_entry { 1276struct radeon_phase_shedding_limits_entry {