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, |
