aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/radeon/ci_dpm.c58
-rw-r--r--drivers/gpu/drm/radeon/ci_smc.c4
-rw-r--r--drivers/gpu/drm/radeon/radeon_pm.c1
3 files changed, 52 insertions, 11 deletions
diff --git a/drivers/gpu/drm/radeon/ci_dpm.c b/drivers/gpu/drm/radeon/ci_dpm.c
index 51e947a97edf..1ed479976358 100644
--- a/drivers/gpu/drm/radeon/ci_dpm.c
+++ b/drivers/gpu/drm/radeon/ci_dpm.c
@@ -40,6 +40,20 @@
40#define VOLTAGE_VID_OFFSET_SCALE1 625 40#define VOLTAGE_VID_OFFSET_SCALE1 625
41#define VOLTAGE_VID_OFFSET_SCALE2 100 41#define VOLTAGE_VID_OFFSET_SCALE2 100
42 42
43static const struct ci_pt_defaults defaults_hawaii_xt =
44{
45 1, 0xF, 0xFD, 0x19, 5, 0x14, 0, 0xB0000,
46 { 0x84, 0x0, 0x0, 0x7F, 0x0, 0x0, 0x5A, 0x60, 0x51, 0x8E, 0x79, 0x6B, 0x5F, 0x90, 0x79 },
47 { 0x1EA, 0x1EA, 0x1EA, 0x224, 0x224, 0x224, 0x24F, 0x24F, 0x24F, 0x28E, 0x28E, 0x28E, 0x2BC, 0x2BC, 0x2BC }
48};
49
50static const struct ci_pt_defaults defaults_hawaii_pro =
51{
52 1, 0xF, 0xFD, 0x19, 5, 0x14, 0, 0x65062,
53 { 0x93, 0x0, 0x0, 0x97, 0x0, 0x0, 0x6B, 0x60, 0x51, 0x95, 0x79, 0x6B, 0x5F, 0x90, 0x79 },
54 { 0x1EA, 0x1EA, 0x1EA, 0x224, 0x224, 0x224, 0x24F, 0x24F, 0x24F, 0x28E, 0x28E, 0x28E, 0x2BC, 0x2BC, 0x2BC }
55};
56
43static const struct ci_pt_defaults defaults_bonaire_xt = 57static const struct ci_pt_defaults defaults_bonaire_xt =
44{ 58{
45 1, 0xF, 0xFD, 0x19, 5, 45, 0, 0xB0000, 59 1, 0xF, 0xFD, 0x19, 5, 45, 0, 0xB0000,
@@ -187,22 +201,38 @@ static void ci_initialize_powertune_defaults(struct radeon_device *rdev)
187 struct ci_power_info *pi = ci_get_pi(rdev); 201 struct ci_power_info *pi = ci_get_pi(rdev);
188 202
189 switch (rdev->pdev->device) { 203 switch (rdev->pdev->device) {
190 case 0x6650: 204 case 0x6650:
191 case 0x6658: 205 case 0x6658:
192 case 0x665C: 206 case 0x665C:
193 default: 207 default:
194 pi->powertune_defaults = &defaults_bonaire_xt; 208 pi->powertune_defaults = &defaults_bonaire_xt;
195 break; 209 break;
196 case 0x6651: 210 case 0x6651:
197 case 0x665D: 211 case 0x665D:
198 pi->powertune_defaults = &defaults_bonaire_pro; 212 pi->powertune_defaults = &defaults_bonaire_pro;
199 break; 213 break;
200 case 0x6640: 214 case 0x6640:
201 pi->powertune_defaults = &defaults_saturn_xt; 215 pi->powertune_defaults = &defaults_saturn_xt;
202 break; 216 break;
203 case 0x6641: 217 case 0x6641:
204 pi->powertune_defaults = &defaults_saturn_pro; 218 pi->powertune_defaults = &defaults_saturn_pro;
205 break; 219 break;
220 case 0x67B8:
221 case 0x67B0:
222 case 0x67A0:
223 case 0x67A1:
224 case 0x67A2:
225 case 0x67A8:
226 case 0x67A9:
227 case 0x67AA:
228 case 0x67B9:
229 case 0x67BE:
230 pi->powertune_defaults = &defaults_hawaii_xt;
231 break;
232 case 0x67BA:
233 case 0x67B1:
234 pi->powertune_defaults = &defaults_hawaii_pro;
235 break;
206 } 236 }
207 237
208 pi->dte_tj_offset = 0; 238 pi->dte_tj_offset = 0;
@@ -5142,9 +5172,15 @@ int ci_dpm_init(struct radeon_device *rdev)
5142 rdev->pm.dpm.dyn_state.valid_mclk_values.count = 0; 5172 rdev->pm.dpm.dyn_state.valid_mclk_values.count = 0;
5143 rdev->pm.dpm.dyn_state.valid_mclk_values.values = NULL; 5173 rdev->pm.dpm.dyn_state.valid_mclk_values.values = NULL;
5144 5174
5145 pi->thermal_temp_setting.temperature_low = 99500; 5175 if (rdev->family == CHIP_HAWAII) {
5146 pi->thermal_temp_setting.temperature_high = 100000; 5176 pi->thermal_temp_setting.temperature_low = 94500;
5147 pi->thermal_temp_setting.temperature_shutdown = 104000; 5177 pi->thermal_temp_setting.temperature_high = 95000;
5178 pi->thermal_temp_setting.temperature_shutdown = 104000;
5179 } else {
5180 pi->thermal_temp_setting.temperature_low = 99500;
5181 pi->thermal_temp_setting.temperature_high = 100000;
5182 pi->thermal_temp_setting.temperature_shutdown = 104000;
5183 }
5148 5184
5149 pi->uvd_enabled = false; 5185 pi->uvd_enabled = false;
5150 5186
diff --git a/drivers/gpu/drm/radeon/ci_smc.c b/drivers/gpu/drm/radeon/ci_smc.c
index 252e10a41cf5..9c745dd22438 100644
--- a/drivers/gpu/drm/radeon/ci_smc.c
+++ b/drivers/gpu/drm/radeon/ci_smc.c
@@ -217,6 +217,10 @@ int ci_load_smc_ucode(struct radeon_device *rdev, u32 limit)
217 ucode_start_address = BONAIRE_SMC_UCODE_START; 217 ucode_start_address = BONAIRE_SMC_UCODE_START;
218 ucode_size = BONAIRE_SMC_UCODE_SIZE; 218 ucode_size = BONAIRE_SMC_UCODE_SIZE;
219 break; 219 break;
220 case CHIP_HAWAII:
221 ucode_start_address = HAWAII_SMC_UCODE_START;
222 ucode_size = HAWAII_SMC_UCODE_SIZE;
223 break;
220 default: 224 default:
221 DRM_ERROR("unknown asic in smc ucode loader\n"); 225 DRM_ERROR("unknown asic in smc ucode loader\n");
222 BUG(); 226 BUG();
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
index 00bdcd3e47ba..866ace070b91 100644
--- a/drivers/gpu/drm/radeon/radeon_pm.c
+++ b/drivers/gpu/drm/radeon/radeon_pm.c
@@ -1256,6 +1256,7 @@ int radeon_pm_init(struct radeon_device *rdev)
1256 case CHIP_BONAIRE: 1256 case CHIP_BONAIRE:
1257 case CHIP_KABINI: 1257 case CHIP_KABINI:
1258 case CHIP_KAVERI: 1258 case CHIP_KAVERI:
1259 case CHIP_HAWAII:
1259 /* DPM requires the RLC, RV770+ dGPU requires SMC */ 1260 /* DPM requires the RLC, RV770+ dGPU requires SMC */
1260 if (!rdev->rlc_fw) 1261 if (!rdev->rlc_fw)
1261 rdev->pm.pm_method = PM_METHOD_PROFILE; 1262 rdev->pm.pm_method = PM_METHOD_PROFILE;