mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
drm/amdgpu/pm: add workload profile pause helper
To be used for display idle optimizations when we want to pause non-default profiles. Reviewed-by: Kenneth Feng <kenneth.feng@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
0e2ebfe276
commit
6dafb5d4c7
|
|
@ -429,6 +429,7 @@ struct amd_pm_funcs {
|
|||
int (*set_pp_table)(void *handle, const char *buf, size_t size);
|
||||
void (*debugfs_print_current_performance_level)(void *handle, struct seq_file *m);
|
||||
int (*switch_power_profile)(void *handle, enum PP_SMC_POWER_PROFILE type, bool en);
|
||||
int (*pause_power_profile)(void *handle, bool pause);
|
||||
/* export to amdgpu */
|
||||
struct amd_vce_state *(*get_vce_clock_state)(void *handle, u32 idx);
|
||||
int (*dispatch_tasks)(void *handle, enum amd_pp_task task_id,
|
||||
|
|
|
|||
|
|
@ -377,6 +377,25 @@ int amdgpu_dpm_switch_power_profile(struct amdgpu_device *adev,
|
|||
return ret;
|
||||
}
|
||||
|
||||
int amdgpu_dpm_pause_power_profile(struct amdgpu_device *adev,
|
||||
bool pause)
|
||||
{
|
||||
const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
|
||||
int ret = 0;
|
||||
|
||||
if (amdgpu_sriov_vf(adev))
|
||||
return 0;
|
||||
|
||||
if (pp_funcs && pp_funcs->pause_power_profile) {
|
||||
mutex_lock(&adev->pm.mutex);
|
||||
ret = pp_funcs->pause_power_profile(
|
||||
adev->powerplay.pp_handle, pause);
|
||||
mutex_unlock(&adev->pm.mutex);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int amdgpu_dpm_set_xgmi_pstate(struct amdgpu_device *adev,
|
||||
uint32_t pstate)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -410,6 +410,8 @@ int amdgpu_dpm_set_xgmi_pstate(struct amdgpu_device *adev,
|
|||
int amdgpu_dpm_switch_power_profile(struct amdgpu_device *adev,
|
||||
enum PP_SMC_POWER_PROFILE type,
|
||||
bool en);
|
||||
int amdgpu_dpm_pause_power_profile(struct amdgpu_device *adev,
|
||||
bool pause);
|
||||
|
||||
int amdgpu_dpm_baco_reset(struct amdgpu_device *adev);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user