diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2013-09-09 19:33:08 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2013-09-11 11:44:40 -0400 |
commit | b7a5ae97502e104371c7eb3b7b17ae959e50d6f5 (patch) | |
tree | 8317e440ff72ade26aa1a57547bb1190818ba054 | |
parent | 11877060e602d08a5ec8b127c273423d45ddabd9 (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.c | 20 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.h | 1 |
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 | ||
1112 | void 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 | |||
1112 | int kv_dpm_enable(struct radeon_device *rdev) | 1124 | int 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, | |||
785 | int kv_dpm_force_performance_level(struct radeon_device *rdev, | 785 | int kv_dpm_force_performance_level(struct radeon_device *rdev, |
786 | enum radeon_dpm_forced_level level); | 786 | enum radeon_dpm_forced_level level); |
787 | void kv_dpm_powergate_uvd(struct radeon_device *rdev, bool gate); | 787 | void kv_dpm_powergate_uvd(struct radeon_device *rdev, bool gate); |
788 | void kv_dpm_enable_bapm(struct radeon_device *rdev, bool enable); | ||
788 | 789 | ||
789 | /* uvd v1.0 */ | 790 | /* uvd v1.0 */ |
790 | uint32_t uvd_v1_0_get_rptr(struct radeon_device *rdev, | 791 | uint32_t uvd_v1_0_get_rptr(struct radeon_device *rdev, |