aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2013-09-09 19:33:08 -0400
committerAlex Deucher <alexander.deucher@amd.com>2013-09-11 11:44:40 -0400
commitb7a5ae97502e104371c7eb3b7b17ae959e50d6f5 (patch)
tree8317e440ff72ade26aa1a57547bb1190818ba054
parent11877060e602d08a5ec8b127c273423d45ddabd9 (diff)
drm/radeon/dpm: add bapm callback for kb/kv
This adds the enable_bapm callback for kb/kv. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/radeon/kv_dpm.c20
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.c1
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.h1
3 files changed, 22 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/kv_dpm.c b/drivers/gpu/drm/radeon/kv_dpm.c
index 92bb998cc611..b98b9c97b732 100644
--- a/drivers/gpu/drm/radeon/kv_dpm.c
+++ b/drivers/gpu/drm/radeon/kv_dpm.c
@@ -1109,6 +1109,18 @@ static void kv_update_requested_ps(struct radeon_device *rdev,
1109 pi->requested_rps.ps_priv = &pi->requested_ps; 1109 pi->requested_rps.ps_priv = &pi->requested_ps;
1110} 1110}
1111 1111
1112void kv_dpm_enable_bapm(struct radeon_device *rdev, bool enable)
1113{
1114 struct kv_power_info *pi = kv_get_pi(rdev);
1115 int ret;
1116
1117 if (pi->bapm_enable) {
1118 ret = kv_smc_bapm_enable(rdev, enable);
1119 if (ret)
1120 DRM_ERROR("kv_smc_bapm_enable failed\n");
1121 }
1122}
1123
1112int kv_dpm_enable(struct radeon_device *rdev) 1124int kv_dpm_enable(struct radeon_device *rdev)
1113{ 1125{
1114 struct kv_power_info *pi = kv_get_pi(rdev); 1126 struct kv_power_info *pi = kv_get_pi(rdev);
@@ -1772,6 +1784,14 @@ int kv_dpm_set_power_state(struct radeon_device *rdev)
1772 RADEON_CG_BLOCK_BIF | 1784 RADEON_CG_BLOCK_BIF |
1773 RADEON_CG_BLOCK_HDP), false); 1785 RADEON_CG_BLOCK_HDP), false);
1774 1786
1787 if (pi->bapm_enable) {
1788 ret = kv_smc_bapm_enable(rdev, rdev->pm.dpm.ac_power);
1789 if (ret) {
1790 DRM_ERROR("kv_smc_bapm_enable failed\n");
1791 return ret;
1792 }
1793 }
1794
1775 if (rdev->family == CHIP_KABINI) { 1795 if (rdev->family == CHIP_KABINI) {
1776 if (pi->enable_dpm) { 1796 if (pi->enable_dpm) {
1777 kv_set_valid_clock_range(rdev, new_ps); 1797 kv_set_valid_clock_range(rdev, new_ps);
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c
index 283951467ace..5003385a7512 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.c
+++ b/drivers/gpu/drm/radeon/radeon_asic.c
@@ -2170,6 +2170,7 @@ static struct radeon_asic kv_asic = {
2170 .debugfs_print_current_performance_level = &kv_dpm_debugfs_print_current_performance_level, 2170 .debugfs_print_current_performance_level = &kv_dpm_debugfs_print_current_performance_level,
2171 .force_performance_level = &kv_dpm_force_performance_level, 2171 .force_performance_level = &kv_dpm_force_performance_level,
2172 .powergate_uvd = &kv_dpm_powergate_uvd, 2172 .powergate_uvd = &kv_dpm_powergate_uvd,
2173 .enable_bapm = &kv_dpm_enable_bapm,
2173 }, 2174 },
2174 .pflip = { 2175 .pflip = {
2175 .pre_page_flip = &evergreen_pre_page_flip, 2176 .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 7221bb05b51c..70c29d5e080d 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.h
+++ b/drivers/gpu/drm/radeon/radeon_asic.h
@@ -785,6 +785,7 @@ void kv_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev,
785int kv_dpm_force_performance_level(struct radeon_device *rdev, 785int kv_dpm_force_performance_level(struct radeon_device *rdev,
786 enum radeon_dpm_forced_level level); 786 enum radeon_dpm_forced_level level);
787void kv_dpm_powergate_uvd(struct radeon_device *rdev, bool gate); 787void kv_dpm_powergate_uvd(struct radeon_device *rdev, bool gate);
788void kv_dpm_enable_bapm(struct radeon_device *rdev, bool enable);
788 789
789/* uvd v1.0 */ 790/* uvd v1.0 */
790uint32_t uvd_v1_0_get_rptr(struct radeon_device *rdev, 791uint32_t uvd_v1_0_get_rptr(struct radeon_device *rdev,