aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2013-07-05 13:14:30 -0400
committerAlex Deucher <alexander.deucher@amd.com>2013-07-05 18:08:54 -0400
commitc6cf7777a32da874fabec4fd1c2a579f0ba4e4dd (patch)
tree22a8b1f3b98714760a24b69f7d45d56c716dcfe0 /drivers/gpu
parent338a95a95508537e23c82d59a2d87be6fde4b6ff (diff)
drm/radeon: set default clocks for SI when DPM is disabled
Fix patching of vddc values for SI and enable manually forcing clocks to default levels as per NI. This improves the out of the box performance with SI asics. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/radeon/evergreen.c8
-rw-r--r--drivers/gpu/drm/radeon/radeon_atombios.c4
-rw-r--r--drivers/gpu/drm/radeon/radeon_pm.c8
3 files changed, 12 insertions, 8 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
index 2e1de4fd2975..e49059dc9b8f 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -1504,8 +1504,8 @@ void evergreen_pm_misc(struct radeon_device *rdev)
1504 struct radeon_voltage *voltage = &ps->clock_info[req_cm_idx].voltage; 1504 struct radeon_voltage *voltage = &ps->clock_info[req_cm_idx].voltage;
1505 1505
1506 if (voltage->type == VOLTAGE_SW) { 1506 if (voltage->type == VOLTAGE_SW) {
1507 /* 0xff01 is a flag rather then an actual voltage */ 1507 /* 0xff0x are flags rather then an actual voltage */
1508 if (voltage->voltage == 0xff01) 1508 if ((voltage->voltage & 0xff00) == 0xff00)
1509 return; 1509 return;
1510 if (voltage->voltage && (voltage->voltage != rdev->pm.current_vddc)) { 1510 if (voltage->voltage && (voltage->voltage != rdev->pm.current_vddc)) {
1511 radeon_atom_set_voltage(rdev, voltage->voltage, SET_VOLTAGE_TYPE_ASIC_VDDC); 1511 radeon_atom_set_voltage(rdev, voltage->voltage, SET_VOLTAGE_TYPE_ASIC_VDDC);
@@ -1525,8 +1525,8 @@ void evergreen_pm_misc(struct radeon_device *rdev)
1525 voltage = &rdev->pm.power_state[req_ps_idx]. 1525 voltage = &rdev->pm.power_state[req_ps_idx].
1526 clock_info[rdev->pm.profiles[PM_PROFILE_HIGH_MH_IDX].dpms_on_cm_idx].voltage; 1526 clock_info[rdev->pm.profiles[PM_PROFILE_HIGH_MH_IDX].dpms_on_cm_idx].voltage;
1527 1527
1528 /* 0xff01 is a flag rather then an actual voltage */ 1528 /* 0xff0x are flags rather then an actual voltage */
1529 if (voltage->vddci == 0xff01) 1529 if ((voltage->vddci & 0xff00) == 0xff00)
1530 return; 1530 return;
1531 if (voltage->vddci && (voltage->vddci != rdev->pm.current_vddci)) { 1531 if (voltage->vddci && (voltage->vddci != rdev->pm.current_vddci)) {
1532 radeon_atom_set_voltage(rdev, voltage->vddci, SET_VOLTAGE_TYPE_ASIC_VDDCI); 1532 radeon_atom_set_voltage(rdev, voltage->vddci, SET_VOLTAGE_TYPE_ASIC_VDDCI);
diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
index b1777d10d0b5..fbdaff55556b 100644
--- a/drivers/gpu/drm/radeon/radeon_atombios.c
+++ b/drivers/gpu/drm/radeon/radeon_atombios.c
@@ -2441,6 +2441,10 @@ static bool radeon_atombios_parse_pplib_clock_info(struct radeon_device *rdev,
2441 case ATOM_VIRTUAL_VOLTAGE_ID1: 2441 case ATOM_VIRTUAL_VOLTAGE_ID1:
2442 case ATOM_VIRTUAL_VOLTAGE_ID2: 2442 case ATOM_VIRTUAL_VOLTAGE_ID2:
2443 case ATOM_VIRTUAL_VOLTAGE_ID3: 2443 case ATOM_VIRTUAL_VOLTAGE_ID3:
2444 case ATOM_VIRTUAL_VOLTAGE_ID4:
2445 case ATOM_VIRTUAL_VOLTAGE_ID5:
2446 case ATOM_VIRTUAL_VOLTAGE_ID6:
2447 case ATOM_VIRTUAL_VOLTAGE_ID7:
2444 if (radeon_atom_get_max_vddc(rdev, VOLTAGE_TYPE_VDDC, 2448 if (radeon_atom_get_max_vddc(rdev, VOLTAGE_TYPE_VDDC,
2445 rdev->pm.power_state[state_index].clock_info[mode_index].voltage.voltage, 2449 rdev->pm.power_state[state_index].clock_info[mode_index].voltage.voltage,
2446 &vddc) == 0) 2450 &vddc) == 0)
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
index ebbdb477745a..c3e5e119702d 100644
--- a/drivers/gpu/drm/radeon/radeon_pm.c
+++ b/drivers/gpu/drm/radeon/radeon_pm.c
@@ -852,7 +852,7 @@ static void radeon_pm_resume_old(struct radeon_device *rdev)
852{ 852{
853 /* set up the default clocks if the MC ucode is loaded */ 853 /* set up the default clocks if the MC ucode is loaded */
854 if ((rdev->family >= CHIP_BARTS) && 854 if ((rdev->family >= CHIP_BARTS) &&
855 (rdev->family <= CHIP_CAYMAN) && 855 (rdev->family <= CHIP_HAINAN) &&
856 rdev->mc_fw) { 856 rdev->mc_fw) {
857 if (rdev->pm.default_vddc) 857 if (rdev->pm.default_vddc)
858 radeon_atom_set_voltage(rdev, rdev->pm.default_vddc, 858 radeon_atom_set_voltage(rdev, rdev->pm.default_vddc,
@@ -896,7 +896,7 @@ static void radeon_pm_resume_dpm(struct radeon_device *rdev)
896 if (ret) { 896 if (ret) {
897 DRM_ERROR("radeon: dpm resume failed\n"); 897 DRM_ERROR("radeon: dpm resume failed\n");
898 if ((rdev->family >= CHIP_BARTS) && 898 if ((rdev->family >= CHIP_BARTS) &&
899 (rdev->family <= CHIP_CAYMAN) && 899 (rdev->family <= CHIP_HAINAN) &&
900 rdev->mc_fw) { 900 rdev->mc_fw) {
901 if (rdev->pm.default_vddc) 901 if (rdev->pm.default_vddc)
902 radeon_atom_set_voltage(rdev, rdev->pm.default_vddc, 902 radeon_atom_set_voltage(rdev, rdev->pm.default_vddc,
@@ -947,7 +947,7 @@ static int radeon_pm_init_old(struct radeon_device *rdev)
947 radeon_pm_init_profile(rdev); 947 radeon_pm_init_profile(rdev);
948 /* set up the default clocks if the MC ucode is loaded */ 948 /* set up the default clocks if the MC ucode is loaded */
949 if ((rdev->family >= CHIP_BARTS) && 949 if ((rdev->family >= CHIP_BARTS) &&
950 (rdev->family <= CHIP_CAYMAN) && 950 (rdev->family <= CHIP_HAINAN) &&
951 rdev->mc_fw) { 951 rdev->mc_fw) {
952 if (rdev->pm.default_vddc) 952 if (rdev->pm.default_vddc)
953 radeon_atom_set_voltage(rdev, rdev->pm.default_vddc, 953 radeon_atom_set_voltage(rdev, rdev->pm.default_vddc,
@@ -1032,7 +1032,7 @@ static int radeon_pm_init_dpm(struct radeon_device *rdev)
1032 if (ret) { 1032 if (ret) {
1033 rdev->pm.dpm_enabled = false; 1033 rdev->pm.dpm_enabled = false;
1034 if ((rdev->family >= CHIP_BARTS) && 1034 if ((rdev->family >= CHIP_BARTS) &&
1035 (rdev->family <= CHIP_CAYMAN) && 1035 (rdev->family <= CHIP_HAINAN) &&
1036 rdev->mc_fw) { 1036 rdev->mc_fw) {
1037 if (rdev->pm.default_vddc) 1037 if (rdev->pm.default_vddc)
1038 radeon_atom_set_voltage(rdev, rdev->pm.default_vddc, 1038 radeon_atom_set_voltage(rdev, rdev->pm.default_vddc,