mirror of
https://gitee.com/openharmony/kernel_linux
synced 2025-05-28 18:16:56 +00:00
drm/radeon/dpm: fixup dynamic state adjust for sumo
Use a dedicated copy of the current power state since we may have to adjust it on the fly. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
5ca302f701
commit
7cf36de9eb
@ -1289,6 +1289,7 @@ struct radeon_dpm {
|
||||
struct radeon_ps *boot_ps;
|
||||
/* default uvd power state */
|
||||
struct radeon_ps *uvd_ps;
|
||||
struct radeon_ps hw_ps;
|
||||
enum radeon_pm_state_type state;
|
||||
enum radeon_pm_state_type user_state;
|
||||
u32 platform_caps;
|
||||
|
@ -684,6 +684,17 @@ restart_search:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void radeon_dpm_update_requested_ps(struct radeon_device *rdev,
|
||||
struct radeon_ps *ps)
|
||||
{
|
||||
/* copy the ps to the hw ps and point the requested ps
|
||||
* at the hw state in case the driver wants to modify
|
||||
* the state dynamically.
|
||||
*/
|
||||
rdev->pm.dpm.hw_ps = *ps;
|
||||
rdev->pm.dpm.requested_ps = &rdev->pm.dpm.hw_ps;
|
||||
}
|
||||
|
||||
static void radeon_dpm_change_power_state_locked(struct radeon_device *rdev)
|
||||
{
|
||||
int i;
|
||||
@ -704,7 +715,7 @@ static void radeon_dpm_change_power_state_locked(struct radeon_device *rdev)
|
||||
|
||||
ps = radeon_dpm_pick_power_state(rdev, dpm_state);
|
||||
if (ps)
|
||||
rdev->pm.dpm.requested_ps = ps;
|
||||
radeon_dpm_update_requested_ps(rdev, ps);
|
||||
else
|
||||
return;
|
||||
|
||||
|
@ -1072,6 +1072,11 @@ static void sumo_apply_state_adjust_rules(struct radeon_device *rdev)
|
||||
u32 sclk_in_sr = pi->sys_info.min_sclk; /* ??? */
|
||||
u32 i;
|
||||
|
||||
/* point to the hw copy since this function will modify the ps */
|
||||
pi->hw_ps = *ps;
|
||||
rdev->pm.dpm.hw_ps.ps_priv = &pi->hw_ps;
|
||||
ps = &pi->hw_ps;
|
||||
|
||||
if (rps->class & ATOM_PPLIB_CLASSIFICATION_THERMAL)
|
||||
return sumo_patch_thermal_state(rdev, ps, current_ps);
|
||||
|
||||
|
@ -129,6 +129,7 @@ struct sumo_power_info {
|
||||
bool enable_dynamic_patch_ps;
|
||||
bool enable_dpm;
|
||||
bool enable_boost;
|
||||
struct sumo_ps hw_ps;
|
||||
};
|
||||
|
||||
#define SUMO_UTC_DFLT_00 0x48
|
||||
|
Loading…
x
Reference in New Issue
Block a user