|
@@ -1068,6 +1068,17 @@ static void trinity_update_requested_ps(struct radeon_device *rdev,
|
|
|
pi->requested_rps.ps_priv = &pi->requested_ps;
|
|
|
}
|
|
|
|
|
|
+void trinity_dpm_enable_bapm(struct radeon_device *rdev, bool enable)
|
|
|
+{
|
|
|
+ struct trinity_power_info *pi = trinity_get_pi(rdev);
|
|
|
+
|
|
|
+ if (pi->enable_bapm) {
|
|
|
+ trinity_acquire_mutex(rdev);
|
|
|
+ trinity_dpm_bapm_enable(rdev, enable);
|
|
|
+ trinity_release_mutex(rdev);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
int trinity_dpm_enable(struct radeon_device *rdev)
|
|
|
{
|
|
|
struct trinity_power_info *pi = trinity_get_pi(rdev);
|
|
@@ -1214,6 +1225,8 @@ int trinity_dpm_set_power_state(struct radeon_device *rdev)
|
|
|
|
|
|
trinity_acquire_mutex(rdev);
|
|
|
if (pi->enable_dpm) {
|
|
|
+ if (pi->enable_bapm)
|
|
|
+ trinity_dpm_bapm_enable(rdev, rdev->pm.dpm.ac_power);
|
|
|
trinity_set_uvd_clock_before_set_eng_clock(rdev, new_ps, old_ps);
|
|
|
trinity_enable_power_level_0(rdev);
|
|
|
trinity_force_level_0(rdev);
|
|
@@ -1856,6 +1869,7 @@ int trinity_dpm_init(struct radeon_device *rdev)
|
|
|
for (i = 0; i < SUMO_MAX_HARDWARE_POWERLEVELS; i++)
|
|
|
pi->at[i] = TRINITY_AT_DFLT;
|
|
|
|
|
|
+ pi->enable_bapm = true;
|
|
|
pi->enable_nbps_policy = true;
|
|
|
pi->enable_sclk_ds = true;
|
|
|
pi->enable_gfx_power_gating = true;
|