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>
This commit is contained in:
@@ -1794,6 +1794,7 @@ static struct radeon_asic trinity_asic = {
|
|||||||
.print_power_state = &trinity_dpm_print_power_state,
|
.print_power_state = &trinity_dpm_print_power_state,
|
||||||
.debugfs_print_current_performance_level = &trinity_dpm_debugfs_print_current_performance_level,
|
.debugfs_print_current_performance_level = &trinity_dpm_debugfs_print_current_performance_level,
|
||||||
.force_performance_level = &trinity_dpm_force_performance_level,
|
.force_performance_level = &trinity_dpm_force_performance_level,
|
||||||
|
.enable_bapm = &trinity_dpm_enable_bapm,
|
||||||
},
|
},
|
||||||
.pflip = {
|
.pflip = {
|
||||||
.pre_page_flip = &evergreen_pre_page_flip,
|
.pre_page_flip = &evergreen_pre_page_flip,
|
||||||
|
|||||||
@@ -628,6 +628,7 @@ void trinity_dpm_debugfs_print_current_performance_level(struct radeon_device *r
|
|||||||
struct seq_file *m);
|
struct seq_file *m);
|
||||||
int trinity_dpm_force_performance_level(struct radeon_device *rdev,
|
int trinity_dpm_force_performance_level(struct radeon_device *rdev,
|
||||||
enum radeon_dpm_forced_level level);
|
enum radeon_dpm_forced_level level);
|
||||||
|
void trinity_dpm_enable_bapm(struct radeon_device *rdev, bool enable);
|
||||||
|
|
||||||
/* DCE6 - SI */
|
/* DCE6 - SI */
|
||||||
void dce6_bandwidth_update(struct radeon_device *rdev);
|
void dce6_bandwidth_update(struct radeon_device *rdev);
|
||||||
|
|||||||
@@ -1068,6 +1068,17 @@ static void trinity_update_requested_ps(struct radeon_device *rdev,
|
|||||||
pi->requested_rps.ps_priv = &pi->requested_ps;
|
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)
|
int trinity_dpm_enable(struct radeon_device *rdev)
|
||||||
{
|
{
|
||||||
struct trinity_power_info *pi = trinity_get_pi(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);
|
trinity_acquire_mutex(rdev);
|
||||||
if (pi->enable_dpm) {
|
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_set_uvd_clock_before_set_eng_clock(rdev, new_ps, old_ps);
|
||||||
trinity_enable_power_level_0(rdev);
|
trinity_enable_power_level_0(rdev);
|
||||||
trinity_force_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++)
|
for (i = 0; i < SUMO_MAX_HARDWARE_POWERLEVELS; i++)
|
||||||
pi->at[i] = TRINITY_AT_DFLT;
|
pi->at[i] = TRINITY_AT_DFLT;
|
||||||
|
|
||||||
|
pi->enable_bapm = true;
|
||||||
pi->enable_nbps_policy = true;
|
pi->enable_nbps_policy = true;
|
||||||
pi->enable_sclk_ds = true;
|
pi->enable_sclk_ds = true;
|
||||||
pi->enable_gfx_power_gating = true;
|
pi->enable_gfx_power_gating = true;
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ struct trinity_power_info {
|
|||||||
bool enable_auto_thermal_throttling;
|
bool enable_auto_thermal_throttling;
|
||||||
bool enable_dpm;
|
bool enable_dpm;
|
||||||
bool enable_sclk_ds;
|
bool enable_sclk_ds;
|
||||||
|
bool enable_bapm;
|
||||||
bool uvd_dpm;
|
bool uvd_dpm;
|
||||||
struct radeon_ps current_rps;
|
struct radeon_ps current_rps;
|
||||||
struct trinity_ps current_ps;
|
struct trinity_ps current_ps;
|
||||||
|
|||||||
Reference in New Issue
Block a user