On 23/10/16 08:05 AM, Lucas Stach wrote: > The current default of always using the performance power state leads > to increased power consumption of mobile devices, which have a dedicated > battery power state. Switch between the performance and battery power > state automatically, dpending on the current AC power status, when the > user asked for the balanced power state. > > The user can still override this logic by asking for the performance > or battery power state explicitly. > > Signed-off-by: Lucas Stach <dev@xxxxxxxxxx> > --- > This saves about 1.2W on my Richland based laptop, whithout me having > to remember to ask for the battery state or have userspace set up in > a way to do this. > --- > drivers/gpu/drm/radeon/radeon_pm.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c > index 4b65425..326ad06 100644 > --- a/drivers/gpu/drm/radeon/radeon_pm.c > +++ b/drivers/gpu/drm/radeon/radeon_pm.c > @@ -47,6 +47,7 @@ static bool radeon_pm_in_vbl(struct radeon_device *rdev); > static bool radeon_pm_debug_check_in_vbl(struct radeon_device *rdev, bool finish); > static void radeon_pm_update_profile(struct radeon_device *rdev); > static void radeon_pm_set_clocks(struct radeon_device *rdev); > +static void radeon_pm_compute_clocks_dpm(struct radeon_device *rdev); > > int radeon_pm_get_type_index(struct radeon_device *rdev, > enum radeon_pm_state_type ps_type, > @@ -79,6 +80,8 @@ void radeon_pm_acpi_event_handler(struct radeon_device *rdev) > radeon_dpm_enable_bapm(rdev, rdev->pm.dpm.ac_power); > } > mutex_unlock(&rdev->pm.mutex); > + /* allow new DPM state to be picked */ > + radeon_pm_compute_clocks_dpm(rdev); > } else if (rdev->pm.pm_method == PM_METHOD_PROFILE) { > if (rdev->pm.profile == PM_PROFILE_AUTO) { > mutex_lock(&rdev->pm.mutex); > @@ -882,7 +885,8 @@ static struct radeon_ps *radeon_dpm_pick_power_state(struct radeon_device *rdev, > dpm_state = POWER_STATE_TYPE_INTERNAL_3DPERF; > /* balanced states don't exist at the moment */ > if (dpm_state == POWER_STATE_TYPE_BALANCED) > - dpm_state = POWER_STATE_TYPE_PERFORMANCE; > + dpm_state = rdev->pm.dpm.ac_power ? > + POWER_STATE_TYPE_PERFORMANCE : POWER_STATE_TYPE_BATTERY; > > restart_search: > /* Pick the best power state based on current conditions */ > I've been using this patch for a while on my Kaveri laptops and haven't noticed any issues with it. I haven't compared the power consumption in detail though. Tested-by: Michel Dänzer <michel.daenzer@xxxxxxx> -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer
Attachment:
signature.asc
Description: OpenPGP digital signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel