summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Grzelak <michal.grzelak@intel.com>2026-05-09 19:40:46 +0300
committerVille Syrjälä <ville.syrjala@linux.intel.com>2026-05-21 02:55:15 +0300
commitfadb1ef10db1bccf3bd402734dd97e6344192c0b (patch)
tree8826d09ca637f26307bd8059ed13514b12e1c078
parentb8ccfbc01d71eb794829ebdb7a3b1f203b7865b3 (diff)
downloadlinux-fadb1ef10db1bccf3bd402734dd97e6344192c0b.tar.xz
drm/i915/scaler: unloop scaler readout that is run once
Most of the loop's code is run once because of the continue statement at it's start and break statement at it's end. Kick it out of the loop. While at it, skl_scaler_get_config()'s loop is skipped when specified condition is met and broken when the condition is not met. Equivalently, invert the condition and break the loop. Changelog: v2->v3 - keep ctl inside the loop (Ville) Cc: Nemesa Garg <nemesa.garg@intel.com> Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Michał Grzelak <michal.grzelak@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patch.msgid.link/20260509164048.627399-8-michal.grzelak@intel.com
-rw-r--r--drivers/gpu/drm/i915/display/skl_scaler.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
index 6d9080ec74ce..4e2f4c4ffc45 100644
--- a/drivers/gpu/drm/i915/display/skl_scaler.c
+++ b/drivers/gpu/drm/i915/display/skl_scaler.c
@@ -951,35 +951,35 @@ void skl_scaler_get_config(struct intel_crtc_state *crtc_state)
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
int scaler_id;
+ u32 pos, size;
/* find scaler attached to this pipe */
for (scaler_id = 0; scaler_id < crtc->num_scalers; scaler_id++) {
- u32 ctl, pos, size;
+ u32 ctl;
ctl = intel_de_read(display, SKL_PS_CTRL(crtc->pipe, scaler_id));
- if ((ctl & (PS_SCALER_EN | PS_BINDING_MASK)) != (PS_SCALER_EN | PS_BINDING_PIPE))
- continue;
+ if ((ctl & (PS_SCALER_EN | PS_BINDING_MASK)) == (PS_SCALER_EN | PS_BINDING_PIPE))
+ break;
+ }
- if (scaler_has_casf(display, scaler_id))
- intel_casf_sharpness_get_config(crtc_state);
+ if (scaler_id == crtc->num_scalers)
+ return;
- crtc_state->pch_pfit.enabled = true;
+ if (scaler_has_casf(display, scaler_id))
+ intel_casf_sharpness_get_config(crtc_state);
- pos = intel_de_read(display, SKL_PS_WIN_POS(crtc->pipe, scaler_id));
- size = intel_de_read(display, SKL_PS_WIN_SZ(crtc->pipe, scaler_id));
+ crtc_state->pch_pfit.enabled = true;
- drm_rect_init(&crtc_state->pch_pfit.dst,
- REG_FIELD_GET(PS_WIN_XPOS_MASK, pos),
- REG_FIELD_GET(PS_WIN_YPOS_MASK, pos),
- REG_FIELD_GET(PS_WIN_XSIZE_MASK, size),
- REG_FIELD_GET(PS_WIN_YSIZE_MASK, size));
+ pos = intel_de_read(display, SKL_PS_WIN_POS(crtc->pipe, scaler_id));
+ size = intel_de_read(display, SKL_PS_WIN_SZ(crtc->pipe, scaler_id));
- scaler_state->scalers[scaler_id].in_use = true;
- break;
- }
+ drm_rect_init(&crtc_state->pch_pfit.dst,
+ REG_FIELD_GET(PS_WIN_XPOS_MASK, pos),
+ REG_FIELD_GET(PS_WIN_YPOS_MASK, pos),
+ REG_FIELD_GET(PS_WIN_XSIZE_MASK, size),
+ REG_FIELD_GET(PS_WIN_YSIZE_MASK, size));
- if (scaler_id == crtc->num_scalers)
- return;
+ scaler_state->scalers[scaler_id].in_use = true;
scaler_state->scaler_id = scaler_id;
if (scaler_id >= 0)