From: Nemesa Garg <nemesa.garg@intel.com>
To: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
dri-devel@lists.freedesktop.org
Cc: Nemesa Garg <nemesa.garg@intel.com>,
Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Subject: [PATCH 09/10] drm/i915/display: Enable/disable casf
Date: Mon, 19 May 2025 17:56:43 +0530 [thread overview]
Message-ID: <20250519122644.3685679-10-nemesa.garg@intel.com> (raw)
In-Reply-To: <20250519122644.3685679-1-nemesa.garg@intel.com>
To enable or disable the sharpness check the
casf_enable flag. While enabling the sharpness
write the programmable coefficients, sharpness
register bits and also enable the scaler.
Load the filter lut value which needs to be done
one time while enabling the sharpness.
v2: Introduce casf_enable here[Ankit]
v3: Use is_disabling in casf_disabling[Ankit]
v4: Swap old_state and new_state param[Ankit]
v5: In disable fn move win_sz after sharpness_ctl.
Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_casf.c | 30 ++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_casf.h | 2 ++
drivers/gpu/drm/i915/display/intel_display.c | 26 +++++++++++++++++
3 files changed, 58 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index 0e52fd83b772..7f6407d6034e 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -258,3 +258,33 @@ void intel_casf_scaler_compute_config(struct intel_crtc_state *crtc_state)
filter_coeff[i]);
}
}
+
+void intel_casf_enable(struct intel_crtc_state *crtc_state)
+{
+ struct intel_display *display = to_intel_display(crtc_state);
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+ u32 sharpness_ctl;
+
+ intel_filter_lut_load(crtc, crtc_state);
+
+ intel_casf_write_coeff(crtc_state);
+
+ sharpness_ctl = FILTER_EN | FILTER_STRENGTH(crtc_state->hw.casf_params.strength);
+
+ sharpness_ctl |= crtc_state->hw.casf_params.win_size;
+
+ intel_de_write(display, SHARPNESS_CTL(crtc->pipe), sharpness_ctl);
+
+ skl_scaler_setup_casf(crtc_state);
+}
+
+void intel_casf_disable(const struct intel_crtc_state *crtc_state)
+{
+ struct intel_display *display = to_intel_display(crtc_state);
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+
+ intel_de_write(display, SKL_PS_CTRL(crtc->pipe, 1), 0);
+ intel_de_write(display, SKL_PS_WIN_POS(crtc->pipe, 1), 0);
+ intel_de_write(display, SHARPNESS_CTL(crtc->pipe), 0);
+ intel_de_write(display, SKL_PS_WIN_SZ(crtc->pipe, 1), 0);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
index 026a2b8348df..301a9fbd930f 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.h
+++ b/drivers/gpu/drm/i915/display/intel_casf.h
@@ -18,5 +18,7 @@ void intel_filter_lut_load(struct intel_crtc *crtc,
const struct intel_crtc_state *crtc_state);
void intel_casf_scaler_compute_config(struct intel_crtc_state *crtc_state);
bool intel_casf_needs_scaler(const struct intel_crtc_state *crtc_state);
+void intel_casf_enable(struct intel_crtc_state *crtc_state);
+void intel_casf_disable(const struct intel_crtc_state *crtc_state);
#endif /* __INTEL_CASF_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 1b2e848a1705..e76265e874bc 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -1038,6 +1038,24 @@ static bool audio_disabling(const struct intel_crtc_state *old_crtc_state,
memcmp(old_crtc_state->eld, new_crtc_state->eld, MAX_ELD_BYTES) != 0);
}
+static bool intel_casf_enabling(const struct intel_crtc_state *new_crtc_state,
+ const struct intel_crtc_state *old_crtc_state)
+{
+ if (!new_crtc_state->hw.active)
+ return false;
+
+ return is_enabling(hw.casf_params.casf_enable, old_crtc_state, new_crtc_state);
+}
+
+static bool intel_casf_disabling(const struct intel_crtc_state *old_crtc_state,
+ const struct intel_crtc_state *new_crtc_state)
+{
+ if (!new_crtc_state->hw.active)
+ return false;
+
+ return is_disabling(hw.casf_params.casf_enable, old_crtc_state, new_crtc_state);
+}
+
#undef is_disabling
#undef is_enabling
@@ -1188,6 +1206,9 @@ static void intel_pre_plane_update(struct intel_atomic_state *state,
if (audio_disabling(old_crtc_state, new_crtc_state))
intel_encoders_audio_disable(state, crtc);
+ if (intel_casf_disabling(old_crtc_state, new_crtc_state))
+ intel_casf_disable(new_crtc_state);
+
intel_drrs_deactivate(old_crtc_state);
if (hsw_ips_pre_update(state, crtc))
@@ -6726,6 +6747,11 @@ static void intel_pre_update_crtc(struct intel_atomic_state *state,
intel_vrr_set_transcoder_timings(new_crtc_state);
}
+ if (intel_casf_enabling(new_crtc_state, old_crtc_state))
+ intel_casf_enable(new_crtc_state);
+ else if (new_crtc_state->hw.casf_params.strength != old_crtc_state->hw.casf_params.strength)
+ intel_casf_update_strength(new_crtc_state);
+
intel_fbc_update(state, crtc);
drm_WARN_ON(display->drm, !intel_display_power_is_enabled(display, POWER_DOMAIN_DC_OFF));
--
2.25.1
next prev parent reply other threads:[~2025-05-19 12:32 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-19 12:26 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-05-19 12:26 ` [PATCH 01/10] drm/i915/display: Introduce sharpness strength property Nemesa Garg
2025-05-19 12:26 ` [PATCH 02/10] drm/i915/display: Introduce HAS_CASF for sharpness support Nemesa Garg
2025-05-19 12:26 ` [PATCH 03/10] drm/i915/display: Add strength and winsize register Nemesa Garg
2025-05-20 10:23 ` kernel test robot
2025-05-22 18:22 ` kernel test robot
2025-05-19 12:26 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
2025-05-19 12:45 ` Jani Nikula
2025-05-27 3:26 ` Garg, Nemesa
2025-05-19 12:26 ` [PATCH 05/10] drm/i915/display: Compute the scaler coefficients Nemesa Garg
2025-05-19 12:52 ` Jani Nikula
2025-05-27 4:56 ` Garg, Nemesa
2025-05-19 12:26 ` [PATCH 06/10] drm/i915/display: Add and compute scaler parameter Nemesa Garg
2025-05-19 12:26 ` [PATCH 07/10] drm/i915/display: Configure the second scaler Nemesa Garg
2025-05-19 12:26 ` [PATCH 08/10] drm/i915/display: Set and get the casf config Nemesa Garg
2025-05-19 12:26 ` Nemesa Garg [this message]
2025-05-19 12:26 ` [PATCH 10/10] drm/i915/display: Expose sharpness strength property Nemesa Garg
2025-05-19 12:54 ` ✓ CI.Patch_applied: success for Introduce drm sharpness property (rev15) Patchwork
2025-05-19 12:55 ` ✗ CI.checkpatch: warning " Patchwork
2025-05-19 12:56 ` ✓ CI.KUnit: success " Patchwork
2025-05-19 13:06 ` ✓ CI.Build: " Patchwork
2025-05-19 13:09 ` ✓ CI.Hooks: " Patchwork
2025-05-19 13:10 ` ✗ CI.checksparse: warning " Patchwork
2025-05-19 13:46 ` ✓ Xe.CI.BAT: success " Patchwork
2025-05-19 16:07 ` ✗ Xe.CI.Full: failure " Patchwork
2025-05-27 4:42 ` ✓ CI.Patch_applied: success " Patchwork
2025-05-27 4:43 ` ✗ CI.checkpatch: warning " Patchwork
2025-05-27 4:44 ` ✓ CI.KUnit: success " Patchwork
2025-05-27 4:54 ` ✓ CI.Build: " Patchwork
2025-07-23 15:25 ` [PATCH 00/10] Introduce drm sharpness property Xaver Hugl
2025-07-24 13:59 ` Garg, Nemesa
2025-08-11 10:23 ` Shankar, Uma
-- strict thread matches above, loose matches on Subject: below --
2025-10-26 17:26 Nemesa Garg
2025-10-26 17:26 ` [PATCH 09/10] drm/i915/display: Enable/disable casf Nemesa Garg
2025-10-01 6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-10-01 6:34 ` [PATCH 09/10] drm/i915/display: Enable/disable casf Nemesa Garg
2025-09-26 11:37 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-09-26 11:37 ` [PATCH 09/10] drm/i915/display: Enable/disable casf Nemesa Garg
2025-08-07 9:28 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-08-07 9:28 ` [PATCH 09/10] drm/i915/display: Enable/disable casf Nemesa Garg
2025-07-24 13:45 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-07-24 13:45 ` [PATCH 09/10] drm/i915/display: Enable/disable casf Nemesa Garg
2025-04-08 10:24 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-04-08 10:25 ` [PATCH 09/10] drm/i915/display: Enable/disable casf Nemesa Garg
2025-04-02 12:56 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-04-02 12:56 ` [PATCH 09/10] drm/i915/display: Enable/disable casf Nemesa Garg
2025-04-08 9:25 ` Nautiyal, Ankit K
2025-03-04 10:28 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-03-04 10:28 ` [PATCH 09/10] drm/i915/display: Enable/disable casf Nemesa Garg
2025-03-11 12:14 ` Nautiyal, Ankit K
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250519122644.3685679-10-nemesa.garg@intel.com \
--to=nemesa.garg@intel.com \
--cc=ankit.k.nautiyal@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox