diff options
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/radeon/ci_dpm.c | 58 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/ci_smc.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_pm.c | 1 |
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 | ||
43 | static 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 | |||
50 | static 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 | |||
43 | static const struct ci_pt_defaults defaults_bonaire_xt = | 57 | static 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; |