[PATCH] amd/display: set backlight only if required
Paul Menzel
pmenzel at molgen.mpg.de
Tue Mar 29 05:54:20 UTC 2022
Dear Shirish,
Thank you for the patch.
Am 11.03.22 um 16:33 schrieb Shirish S:
> [Why]
> comparing pwm bl values (coverted) with user brightness(converted)
1. co*n*verted
2. Please add a space before the (.
> levels in commit_tail leads to continuous setting of backlight via dmub
> as they don't to match.
Maybe add a blank line between paragraphs.
> This leads overdrive in queuing of commands to DMCU that sometimes lead
What is “overdrive in queuing”?
lead*s*
> to depending on load on DMCU fw:
Leads to what? Words missing after *to*.
> "[drm:dc_dmub_srv_wait_idle] *ERROR* Error waiting for DMUB idle: status=3"
You could also add the example from your discussion with Harry.
> [How]
> Store last successfully set backlight value and compare with it instead
> of pwm reads which is not what we should compare with.
Maybe extend it with the information gotten from Harry, that this is
expected, when ABM is enabled.
Kind regards,
Paul
> Signed-off-by: Shirish S <shirish.s at amd.com>
> ---
> drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 7 ++++---
> drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 6 ++++++
> 2 files changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> index df0980ff9a63..2b8337e47861 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -3972,7 +3972,7 @@ static u32 convert_brightness_to_user(const struct amdgpu_dm_backlight_caps *cap
> max - min);
> }
>
> -static int amdgpu_dm_backlight_set_level(struct amdgpu_display_manager *dm,
> +static void amdgpu_dm_backlight_set_level(struct amdgpu_display_manager *dm,
> int bl_idx,
> u32 user_brightness)
> {
> @@ -4003,7 +4003,8 @@ static int amdgpu_dm_backlight_set_level(struct amdgpu_display_manager *dm,
> DRM_DEBUG("DM: Failed to update backlight on eDP[%d]\n", bl_idx);
> }
>
> - return rc ? 0 : 1;
> + if (rc)
> + dm->actual_brightness[bl_idx] = user_brightness;
> }
>
> static int amdgpu_dm_backlight_update_status(struct backlight_device *bd)
> @@ -9944,7 +9945,7 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
> /* restore the backlight level */
> for (i = 0; i < dm->num_of_edps; i++) {
> if (dm->backlight_dev[i] &&
> - (amdgpu_dm_backlight_get_level(dm, i) != dm->brightness[i]))
> + (dm->actual_brightness[i] != dm->brightness[i]))
> amdgpu_dm_backlight_set_level(dm, i, dm->brightness[i]);
> }
> #endif
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
> index 372f9adf091a..321279bc877b 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
> @@ -540,6 +540,12 @@ struct amdgpu_display_manager {
> * cached backlight values.
> */
> u32 brightness[AMDGPU_DM_MAX_NUM_EDP];
> + /**
> + * @actual_brightness:
> + *
> + * last successfully applied backlight values.
> + */
> + u32 actual_brightness[AMDGPU_DM_MAX_NUM_EDP];
> };
>
> enum dsc_clock_force_state {
More information about the amd-gfx
mailing list