diff options
author | Jonathan Gray <jsg@cvs.openbsd.org> | 2024-02-19 01:50:12 +0000 |
---|---|---|
committer | Jonathan Gray <jsg@cvs.openbsd.org> | 2024-02-19 01:50:12 +0000 |
commit | ae7e999d386640494ba3c57d56138ff768e24841 (patch) | |
tree | e4ff6f80978fd295f056dd90645fc6dfa186b39b | |
parent | d950f6c8ffc05700b07cd02b467e14c35fc4f90b (diff) |
drm/amd/display: Fix 'panel_cntl' could be null in 'dcn21_set_backlight_level()'
From Srinivasan Shanmugam
2e150ccea13129eb048679114808eb9770443e4d in linux-6.6.y/6.6.17
e96fddb32931d007db12b1fce9b5e8e4c080401b in mainline linux
-rw-r--r-- | sys/dev/pci/drm/amd/display/dc/dcn21/dcn21_hwseq.c | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/sys/dev/pci/drm/amd/display/dc/dcn21/dcn21_hwseq.c b/sys/dev/pci/drm/amd/display/dc/dcn21/dcn21_hwseq.c index f99b1bc4969..7238930e638 100644 --- a/sys/dev/pci/drm/amd/display/dc/dcn21/dcn21_hwseq.c +++ b/sys/dev/pci/drm/amd/display/dc/dcn21/dcn21_hwseq.c @@ -237,34 +237,35 @@ bool dcn21_set_backlight_level(struct pipe_ctx *pipe_ctx, { struct dc_context *dc = pipe_ctx->stream->ctx; struct abm *abm = pipe_ctx->stream_res.abm; + struct timing_generator *tg = pipe_ctx->stream_res.tg; struct panel_cntl *panel_cntl = pipe_ctx->stream->link->panel_cntl; + uint32_t otg_inst; + + if (!abm && !tg && !panel_cntl) + return false; + + otg_inst = tg->inst; if (dc->dc->res_pool->dmcu) { dce110_set_backlight_level(pipe_ctx, backlight_pwm_u16_16, frame_ramp); return true; } - if (abm != NULL) { - uint32_t otg_inst = pipe_ctx->stream_res.tg->inst; - - if (abm && panel_cntl) { - if (abm->funcs && abm->funcs->set_pipe_ex) { - abm->funcs->set_pipe_ex(abm, - otg_inst, - SET_ABM_PIPE_NORMAL, - panel_cntl->inst, - panel_cntl->pwrseq_inst); - } else { - dmub_abm_set_pipe(abm, - otg_inst, - SET_ABM_PIPE_NORMAL, - panel_cntl->inst, - panel_cntl->pwrseq_inst); - } - } + if (abm->funcs && abm->funcs->set_pipe_ex) { + abm->funcs->set_pipe_ex(abm, + otg_inst, + SET_ABM_PIPE_NORMAL, + panel_cntl->inst, + panel_cntl->pwrseq_inst); + } else { + dmub_abm_set_pipe(abm, + otg_inst, + SET_ABM_PIPE_NORMAL, + panel_cntl->inst, + panel_cntl->pwrseq_inst); } - if (abm && abm->funcs && abm->funcs->set_backlight_level_pwm) + if (abm->funcs && abm->funcs->set_backlight_level_pwm) abm->funcs->set_backlight_level_pwm(abm, backlight_pwm_u16_16, frame_ramp, 0, panel_cntl->inst); else |