diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2013-09-09 19:19:52 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2013-09-11 11:44:39 -0400 |
commit | 11877060e602d08a5ec8b127c273423d45ddabd9 (patch) | |
tree | b788424cccf771511076c1497a5c4a2264eaf6b1 /drivers | |
parent | 1c71bda097f797820e246dc9e38f0bda817d0818 (diff) |
drm/radeon/dpm: add bapm callback for trinity
This adds the enable_bapm callback for trinity.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/trinity_dpm.c | 14 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/trinity_dpm.h | 1 |
4 files changed, 17 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c index 7b0917082925..283951467ace 100644 --- a/drivers/gpu/drm/radeon/radeon_asic.c +++ b/drivers/gpu/drm/radeon/radeon_asic.c | |||
@@ -1794,6 +1794,7 @@ static struct radeon_asic trinity_asic = { | |||
1794 | .print_power_state = &trinity_dpm_print_power_state, | 1794 | .print_power_state = &trinity_dpm_print_power_state, |
1795 | .debugfs_print_current_performance_level = &trinity_dpm_debugfs_print_current_performance_level, | 1795 | .debugfs_print_current_performance_level = &trinity_dpm_debugfs_print_current_performance_level, |
1796 | .force_performance_level = &trinity_dpm_force_performance_level, | 1796 | .force_performance_level = &trinity_dpm_force_performance_level, |
1797 | .enable_bapm = &trinity_dpm_enable_bapm, | ||
1797 | }, | 1798 | }, |
1798 | .pflip = { | 1799 | .pflip = { |
1799 | .pre_page_flip = &evergreen_pre_page_flip, | 1800 | .pre_page_flip = &evergreen_pre_page_flip, |
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h index 71b0f0dc2328..7221bb05b51c 100644 --- a/drivers/gpu/drm/radeon/radeon_asic.h +++ b/drivers/gpu/drm/radeon/radeon_asic.h | |||
@@ -628,6 +628,7 @@ void trinity_dpm_debugfs_print_current_performance_level(struct radeon_device *r | |||
628 | struct seq_file *m); | 628 | struct seq_file *m); |
629 | int trinity_dpm_force_performance_level(struct radeon_device *rdev, | 629 | int trinity_dpm_force_performance_level(struct radeon_device *rdev, |
630 | enum radeon_dpm_forced_level level); | 630 | enum radeon_dpm_forced_level level); |
631 | void trinity_dpm_enable_bapm(struct radeon_device *rdev, bool enable); | ||
631 | 632 | ||
632 | /* DCE6 - SI */ | 633 | /* DCE6 - SI */ |
633 | void dce6_bandwidth_update(struct radeon_device *rdev); | 634 | void dce6_bandwidth_update(struct radeon_device *rdev); |
diff --git a/drivers/gpu/drm/radeon/trinity_dpm.c b/drivers/gpu/drm/radeon/trinity_dpm.c index b1b5b3f5e07b..4beb9992294a 100644 --- a/drivers/gpu/drm/radeon/trinity_dpm.c +++ b/drivers/gpu/drm/radeon/trinity_dpm.c | |||
@@ -1068,6 +1068,17 @@ static void trinity_update_requested_ps(struct radeon_device *rdev, | |||
1068 | pi->requested_rps.ps_priv = &pi->requested_ps; | 1068 | pi->requested_rps.ps_priv = &pi->requested_ps; |
1069 | } | 1069 | } |
1070 | 1070 | ||
1071 | void trinity_dpm_enable_bapm(struct radeon_device *rdev, bool enable) | ||
1072 | { | ||
1073 | struct trinity_power_info *pi = trinity_get_pi(rdev); | ||
1074 | |||
1075 | if (pi->enable_bapm) { | ||
1076 | trinity_acquire_mutex(rdev); | ||
1077 | trinity_dpm_bapm_enable(rdev, enable); | ||
1078 | trinity_release_mutex(rdev); | ||
1079 | } | ||
1080 | } | ||
1081 | |||
1071 | int trinity_dpm_enable(struct radeon_device *rdev) | 1082 | int trinity_dpm_enable(struct radeon_device *rdev) |
1072 | { | 1083 | { |
1073 | struct trinity_power_info *pi = trinity_get_pi(rdev); | 1084 | struct trinity_power_info *pi = trinity_get_pi(rdev); |
@@ -1214,6 +1225,8 @@ int trinity_dpm_set_power_state(struct radeon_device *rdev) | |||
1214 | 1225 | ||
1215 | trinity_acquire_mutex(rdev); | 1226 | trinity_acquire_mutex(rdev); |
1216 | if (pi->enable_dpm) { | 1227 | if (pi->enable_dpm) { |
1228 | if (pi->enable_bapm) | ||
1229 | trinity_dpm_bapm_enable(rdev, rdev->pm.dpm.ac_power); | ||
1217 | trinity_set_uvd_clock_before_set_eng_clock(rdev, new_ps, old_ps); | 1230 | trinity_set_uvd_clock_before_set_eng_clock(rdev, new_ps, old_ps); |
1218 | trinity_enable_power_level_0(rdev); | 1231 | trinity_enable_power_level_0(rdev); |
1219 | trinity_force_level_0(rdev); | 1232 | trinity_force_level_0(rdev); |
@@ -1856,6 +1869,7 @@ int trinity_dpm_init(struct radeon_device *rdev) | |||
1856 | for (i = 0; i < SUMO_MAX_HARDWARE_POWERLEVELS; i++) | 1869 | for (i = 0; i < SUMO_MAX_HARDWARE_POWERLEVELS; i++) |
1857 | pi->at[i] = TRINITY_AT_DFLT; | 1870 | pi->at[i] = TRINITY_AT_DFLT; |
1858 | 1871 | ||
1872 | pi->enable_bapm = true; | ||
1859 | pi->enable_nbps_policy = true; | 1873 | pi->enable_nbps_policy = true; |
1860 | pi->enable_sclk_ds = true; | 1874 | pi->enable_sclk_ds = true; |
1861 | pi->enable_gfx_power_gating = true; | 1875 | pi->enable_gfx_power_gating = true; |
diff --git a/drivers/gpu/drm/radeon/trinity_dpm.h b/drivers/gpu/drm/radeon/trinity_dpm.h index 259d9e817c96..c261657750ca 100644 --- a/drivers/gpu/drm/radeon/trinity_dpm.h +++ b/drivers/gpu/drm/radeon/trinity_dpm.h | |||
@@ -108,6 +108,7 @@ struct trinity_power_info { | |||
108 | bool enable_auto_thermal_throttling; | 108 | bool enable_auto_thermal_throttling; |
109 | bool enable_dpm; | 109 | bool enable_dpm; |
110 | bool enable_sclk_ds; | 110 | bool enable_sclk_ds; |
111 | bool enable_bapm; | ||
111 | bool uvd_dpm; | 112 | bool uvd_dpm; |
112 | struct radeon_ps current_rps; | 113 | struct radeon_ps current_rps; |
113 | struct trinity_ps current_ps; | 114 | struct trinity_ps current_ps; |