[PATCH 1/2] drm/amd/display: Fix the brightness read via aux

Alex Deucher alexdeucher at gmail.com
Fri Feb 5 16:36:44 UTC 2021


On Wed, Feb 3, 2021 at 7:42 AM Takashi Iwai <tiwai at suse.de> wrote:
>
> The current code tries to read the brightness value via
> dc_link_get_backlight_level() no matter whether it's controlled via
> aux or not, and this results in a bogus value returned.
> Fix it to read the current value via
> dc_link_get_backlight_level_nits() for the aux.
>
> BugLink: https://bugzilla.opensuse.org/show_bug.cgi?id=1180749
> BugLink: https://gitlab.freedesktop.org/drm/amd/-/issues/1438
> Signed-off-by: Takashi Iwai <tiwai at suse.de>

This looks fine to me.  FWIW, I have a similar patch set here:
https://cgit.freedesktop.org/~agd5f/linux/log/?h=backlight_wip

Alex

> ---
>  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c   | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
>
> 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 c6da89df055d..fb62886ae013 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -3140,6 +3140,16 @@ static int set_backlight_via_aux(struct dc_link *link, uint32_t brightness)
>         return rc ? 0 : 1;
>  }
>
> +static int get_backlight_via_aux(struct dc_link *link)
> +{
> +       uint32_t avg, peak;
> +
> +       if (!link ||
> +           !dc_link_get_backlight_level_nits(link, &avg, &peak))
> +               return DC_ERROR_UNEXPECTED;
> +       return avg;
> +}
> +
>  static int get_brightness_range(const struct amdgpu_dm_backlight_caps *caps,
>                                 unsigned *min, unsigned *max)
>  {
> @@ -3212,8 +3222,13 @@ static int amdgpu_dm_backlight_update_status(struct backlight_device *bd)
>  static int amdgpu_dm_backlight_get_brightness(struct backlight_device *bd)
>  {
>         struct amdgpu_display_manager *dm = bl_get_data(bd);
> -       int ret = dc_link_get_backlight_level(dm->backlight_link);
> +       struct dc_link *link = (struct dc_link *)dm->backlight_link;
> +       int ret;
>
> +       if (dm->backlight_caps.aux_support)
> +               ret = get_backlight_via_aux(link);
> +       else
> +               ret = dc_link_get_backlight_level(link);
>         if (ret == DC_ERROR_UNEXPECTED)
>                 return bd->props.brightness;
>         return convert_brightness_to_user(&dm->backlight_caps, ret);
> --
> 2.26.2
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list