aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2013-09-09 19:19:52 -0400
committerAlex Deucher <alexander.deucher@amd.com>2013-09-11 11:44:39 -0400
commit11877060e602d08a5ec8b127c273423d45ddabd9 (patch)
treeb788424cccf771511076c1497a5c4a2264eaf6b1 /drivers
parent1c71bda097f797820e246dc9e38f0bda817d0818 (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.c1
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.h1
-rw-r--r--drivers/gpu/drm/radeon/trinity_dpm.c14
-rw-r--r--drivers/gpu/drm/radeon/trinity_dpm.h1
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);
629int trinity_dpm_force_performance_level(struct radeon_device *rdev, 629int trinity_dpm_force_performance_level(struct radeon_device *rdev,
630 enum radeon_dpm_forced_level level); 630 enum radeon_dpm_forced_level level);
631void trinity_dpm_enable_bapm(struct radeon_device *rdev, bool enable);
631 632
632/* DCE6 - SI */ 633/* DCE6 - SI */
633void dce6_bandwidth_update(struct radeon_device *rdev); 634void 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
1071void 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
1071int trinity_dpm_enable(struct radeon_device *rdev) 1082int 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;