mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
drm/i915/display: Set and get the casf config
Set the configuration for CASF and capture it in crtc_state and get the configuration by reading back. Add the support to compare the software and hardware state of CASF. v2: Update subject[Ankit] v3: Add the state compare[Ankit] Signed-off-by: Nemesa Garg <nemesa.garg@intel.com> Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> Link: https://patch.msgid.link/20251028120747.3027332-9-ankit.k.nautiyal@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
@@ -4228,6 +4228,10 @@ static int intel_crtc_atomic_check(struct intel_atomic_state *state,
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = intel_casf_compute_config(crtc_state);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (DISPLAY_VER(display) >= 9) {
|
||||
if (intel_crtc_needs_modeset(crtc_state) ||
|
||||
intel_crtc_needs_fastset(crtc_state) ||
|
||||
@@ -5294,6 +5298,9 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
|
||||
|
||||
PIPE_CONF_CHECK_I(scaler_state.scaler_id);
|
||||
PIPE_CONF_CHECK_I(pixel_rate);
|
||||
PIPE_CONF_CHECK_BOOL(hw.casf_params.casf_enable);
|
||||
PIPE_CONF_CHECK_I(hw.casf_params.win_size);
|
||||
PIPE_CONF_CHECK_I(hw.casf_params.strength);
|
||||
|
||||
PIPE_CONF_CHECK_X(gamma_mode);
|
||||
if (display->platform.cherryview)
|
||||
|
||||
@@ -981,16 +981,23 @@ void skl_scaler_get_config(struct intel_crtc_state *crtc_state)
|
||||
continue;
|
||||
|
||||
id = i;
|
||||
crtc_state->pch_pfit.enabled = true;
|
||||
|
||||
/* Read CASF regs for second scaler */
|
||||
if (HAS_CASF(display) && id == 1)
|
||||
intel_casf_sharpness_get_config(crtc_state);
|
||||
|
||||
if (!crtc_state->hw.casf_params.casf_enable)
|
||||
crtc_state->pch_pfit.enabled = true;
|
||||
|
||||
pos = intel_de_read(display, SKL_PS_WIN_POS(crtc->pipe, i));
|
||||
size = intel_de_read(display, SKL_PS_WIN_SZ(crtc->pipe, i));
|
||||
|
||||
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 (!crtc_state->hw.casf_params.casf_enable)
|
||||
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));
|
||||
|
||||
scaler_state->scalers[i].in_use = true;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user