Applied. Thanks. Alex
On Thu, Oct 9, 2025 at 8:51 AM Matthew Schwartz <[email protected]> wrote: > > This fix regressed the original issue that commit d83c747a1225 > ("drm/amd/display: Fix brightness level not retained over reboot") solved, > so revert it until a different approach to solve the regression that > it caused with AMD_PRIVATE_COLOR is found. > > Fixes: a490c8d77d50 ("drm/amd/display: Only restore backlight after > amdgpu_dm_init or dm_resume") > Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4620 > Cc: [email protected] > Signed-off-by: Matthew Schwartz <[email protected]> > --- > v1 -> v2: > - Fix missing stable tag > --- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 12 ++++-------- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 7 ------- > 2 files changed, 4 insertions(+), 15 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 8e1622bf7a42..21281e684b84 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -2081,8 +2081,6 @@ static int amdgpu_dm_init(struct amdgpu_device *adev) > > dc_hardware_init(adev->dm.dc); > > - adev->dm.restore_backlight = true; > - > adev->dm.hpd_rx_offload_wq = hpd_rx_irq_create_workqueue(adev); > if (!adev->dm.hpd_rx_offload_wq) { > drm_err(adev_to_drm(adev), "failed to create hpd rx offload > workqueue.\n"); > @@ -3438,7 +3436,6 @@ static int dm_resume(struct amdgpu_ip_block *ip_block) > dc_set_power_state(dm->dc, DC_ACPI_CM_POWER_STATE_D0); > > dc_resume(dm->dc); > - adev->dm.restore_backlight = true; > > amdgpu_dm_irq_resume_early(adev); > > @@ -9965,6 +9962,7 @@ static void amdgpu_dm_commit_streams(struct > drm_atomic_state *state, > bool mode_set_reset_required = false; > u32 i; > struct dc_commit_streams_params params = {dc_state->streams, > dc_state->stream_count}; > + bool set_backlight_level = false; > > /* Disable writeback */ > for_each_old_connector_in_state(state, connector, old_con_state, i) { > @@ -10084,6 +10082,7 @@ static void amdgpu_dm_commit_streams(struct > drm_atomic_state *state, > acrtc->hw_mode = new_crtc_state->mode; > crtc->hwmode = new_crtc_state->mode; > mode_set_reset_required = true; > + set_backlight_level = true; > } else if (modereset_required(new_crtc_state)) { > drm_dbg_atomic(dev, > "Atomic commit: RESET. crtc id > %d:[%p]\n", > @@ -10140,16 +10139,13 @@ static void amdgpu_dm_commit_streams(struct > drm_atomic_state *state, > * to fix a flicker issue. > * It will cause the dm->actual_brightness is not the current panel > brightness > * level. (the dm->brightness is the correct panel level) > - * So we set the backlight level with dm->brightness value after > initial > - * set mode. Use restore_backlight flag to avoid setting backlight > level > - * for every subsequent mode set. > + * So we set the backlight level with dm->brightness value after set > mode > */ > - if (dm->restore_backlight) { > + if (set_backlight_level) { > for (i = 0; i < dm->num_of_edps; i++) { > if (dm->backlight_dev[i]) > amdgpu_dm_backlight_set_level(dm, i, > dm->brightness[i]); > } > - dm->restore_backlight = false; > } > } > > 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 009f206226f0..db75e991ac7b 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h > @@ -630,13 +630,6 @@ struct amdgpu_display_manager { > */ > u32 actual_brightness[AMDGPU_DM_MAX_NUM_EDP]; > > - /** > - * @restore_backlight: > - * > - * Flag to indicate whether to restore backlight after modeset. > - */ > - bool restore_backlight; > - > /** > * @aux_hpd_discon_quirk: > * > -- > 2.51.0 >
