Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7cf36de9 authored by Alex Deucher's avatar Alex Deucher
Browse files

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: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 5ca302f7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+12 −1
Original line number Diff line number Diff line
@@ -684,6 +684,17 @@ static struct radeon_ps *radeon_dpm_pick_power_state(struct radeon_device *rdev,
	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;

+5 −0
Original line number Diff line number Diff line
@@ -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);

+1 −0
Original line number Diff line number Diff line
@@ -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