All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
To: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: ankit.k.nautiyal@intel.com, ville.syrjala@intel.com
Subject: [PATCH v5 16/17] drm/i915/display: Add function to configure PIPEDMC_EVT_CTL
Date: Tue, 13 May 2025 10:46:59 +0530	[thread overview]
Message-ID: <20250513051700.507389-17-mitulkumar.ajitkumar.golani@intel.com> (raw)
In-Reply-To: <20250513051700.507389-1-mitulkumar.ajitkumar.golani@intel.com>

Configure PIPEDMC_EVT_CTL_3 register with required event flags.

Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dmc.c | 20 ++++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_dmc.h |  2 ++
 drivers/gpu/drm/i915/display/intel_vrr.c | 11 +++++++++--
 3 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c
index 593f5140475b..077bb6bb0bb4 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc.c
@@ -534,6 +534,26 @@ void intel_dmc_block_pkgc(struct intel_display *display, enum pipe pipe,
 		     PIPEDMC_BLOCK_PKGC_SW_BLOCK_PKGC_ALWAYS : 0);
 }
 
+void intel_dmc_configure_dc_balance_ctl_regs(struct intel_display *display,
+					     enum pipe pipe, bool enable)
+{
+	u32 val;
+
+	if (enable)
+		val = DMC_EVT_CTL_ENABLE | DMC_EVT_CTL_RECURRING |
+			REG_FIELD_PREP(DMC_EVT_CTL_TYPE_MASK,
+				       DMC_EVT_CTL_TYPE_EDGE_0_1) |
+			REG_FIELD_PREP(DMC_EVT_CTL_EVENT_ID_MASK,
+				       DMC_EVT_CTL_EVENT_ID_ADAPTIVE_DC_BALANCE_TRIGGER);
+	else
+		val = REG_FIELD_PREP(DMC_EVT_CTL_EVENT_ID_MASK,
+				     DMC_EVT_CTL_EVENT_ID_FALSE) |
+		      REG_FIELD_PREP(DMC_EVT_CTL_TYPE_MASK,
+				     DMC_EVT_CTL_TYPE_EDGE_0_1);
+
+	intel_de_write(display, PIPEDMC_EVT_CTL_3(pipe), val);
+}
+
 /**
  * intel_dmc_start_pkgc_exit_at_start_of_undelayed_vblank() - start of PKG
  * C-state exit
diff --git a/drivers/gpu/drm/i915/display/intel_dmc.h b/drivers/gpu/drm/i915/display/intel_dmc.h
index 48869f19079a..a998c3614e1c 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc.h
+++ b/drivers/gpu/drm/i915/display/intel_dmc.h
@@ -22,6 +22,8 @@ void intel_dmc_enable_pipe(struct intel_display *display, enum pipe pipe);
 void intel_dmc_disable_pipe(struct intel_display *display, enum pipe pipe);
 void intel_dmc_block_pkgc(struct intel_display *display, enum pipe pipe,
 			  bool block);
+void intel_dmc_configure_dc_balance_ctl_regs(struct intel_display *display,
+					     enum pipe pipe, bool enable);
 void intel_dmc_start_pkgc_exit_at_start_of_undelayed_vblank(struct intel_display *display,
 							    enum pipe pipe, bool enable);
 void intel_dmc_fini(struct intel_display *display);
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
index cd14d7efb863..5ca71df79430 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -620,7 +620,9 @@ void intel_vrr_enable(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);
+	enum pipe pipe = crtc->pipe;
 	enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
+
 	u32 ctl;
 
 	if (!crtc_state->vrr.enable)
@@ -659,22 +661,27 @@ void intel_vrr_enable(const struct intel_crtc_state *crtc_state)
 
 	intel_de_write(display, TRANS_VRR_CTL(display, cpu_transcoder), ctl);
 
-	if (crtc_state->vrr.dc_balance.enable)
+	if (crtc_state->vrr.dc_balance.enable) {
+		intel_dmc_configure_dc_balance_ctl_regs(display, pipe, true);
 		intel_pipedmc_dcb_enable(NULL, crtc);
+	}
 }
 
 void intel_vrr_disable(const struct intel_crtc_state *old_crtc_state)
 {
 	struct intel_display *display = to_intel_display(old_crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->uapi.crtc);
+	enum pipe pipe = crtc->pipe;
 	enum transcoder cpu_transcoder = old_crtc_state->cpu_transcoder;
 	u32 ctl;
 
 	if (!old_crtc_state->vrr.enable)
 		return;
 
-	if (old_crtc_state->vrr.dc_balance.enable)
+	if (old_crtc_state->vrr.dc_balance.enable) {
 		intel_pipedmc_dcb_disable(NULL, crtc);
+		intel_dmc_configure_dc_balance_ctl_regs(display, pipe, false);
+	}
 
 	ctl = trans_vrr_ctl(old_crtc_state);
 	if (intel_vrr_always_use_vrr_tg(display))
-- 
2.48.1


  parent reply	other threads:[~2025-05-13  5:19 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-13  5:16 [PATCH v5 00/17] Enable/Disable DC balance along with VRR DSB Mitul Golani
2025-05-13  5:16 ` [PATCH v5 01/17] drm/i915/vrr: Refactor vmin/vmax stuff Mitul Golani
2025-05-13  5:16 ` [PATCH v5 02/17] drm/i915/display: Add source param for dc balance Mitul Golani
2025-05-13  5:16 ` [PATCH v5 03/17] drm/i915/display: Add pipe dmc registers and bits for DC Balance Mitul Golani
2025-05-30  6:22   ` Nautiyal, Ankit K
2025-05-13  5:16 ` [PATCH v5 04/17] drm/i915/display: Add VRR DC balance registers Mitul Golani
2025-05-13  7:15   ` Jani Nikula
2025-05-13  5:16 ` [PATCH v5 05/17] drm/i915/vrr: Add functions to read out vmin/vmax stuff Mitul Golani
2025-05-13  5:16 ` [PATCH v5 06/17] drm/i915/vrr: Add DC Balance params to crtc_state Mitul Golani
2025-05-13  5:16 ` [PATCH v5 07/17] drm/i915/vrr: Add state dump for DC Balance params Mitul Golani
2025-05-13  5:16 ` [PATCH v5 08/17] drm/i915/vrr: Add compute config " Mitul Golani
2025-05-13  5:16 ` [PATCH v5 09/17] drm/i915/vrr: Write DC balance params to hw registers Mitul Golani
2025-05-27  6:17   ` Nautiyal, Ankit K
2025-05-13  5:16 ` [PATCH v5 10/17] drm/i915: Extract vrr_vblank_start() Mitul Golani
2025-05-13  5:16 ` [PATCH v5 11/17] drm/i915/vrr: Implement vblank evasion with DC balancing Mitul Golani
2025-05-13  5:16 ` [PATCH v5 12/17] drm/i915/dsb: Add pipedmc dc balance enable/disable Mitul Golani
2025-05-13  5:16 ` [PATCH v5 13/17] drm/i915/vrr: Restructure VRR enablement bit Mitul Golani
2025-05-13  5:16 ` [PATCH v5 14/17] drm/i915/vrr: Pause DC Balancing for DSB commits Mitul Golani
2025-05-13  5:16 ` [PATCH v5 15/17] drm/i915/vrr: Add function to check if DC Balance Possible Mitul Golani
2025-05-13  5:16 ` Mitul Golani [this message]
2025-05-13  5:17 ` [PATCH v5 17/17] drm/i915/vrr: Enable DC Balance bit Mitul Golani
2025-05-13  5:24 ` ✓ CI.Patch_applied: success for Enable/Disable DC balance along with VRR DSB (rev5) Patchwork
2025-05-13  5:25 ` ✗ CI.checkpatch: warning " Patchwork
2025-05-13  5:26 ` ✓ CI.KUnit: success " Patchwork
2025-05-13  5:36 ` ✗ CI.Build: failure " Patchwork
2025-05-13  6:02 ` ✗ Fi.CI.CHECKPATCH: warning " Patchwork
2025-05-13  6:02 ` ✗ Fi.CI.SPARSE: " Patchwork
2025-05-13  6:26 ` ✗ i915.CI.BAT: failure " Patchwork
2025-05-15  7:55   ` Golani, Mitulkumar Ajitkumar
2025-05-13 15:51 ` ✓ CI.Patch_applied: success " Patchwork
2025-05-13 15:51 ` ✗ CI.checkpatch: warning " Patchwork
2025-05-13 15:52 ` ✓ CI.KUnit: success " Patchwork
2025-05-13 16:10 ` ✓ CI.Build: " Patchwork
2025-05-14 17:24 ` ✓ CI.Patch_applied: success for Enable/Disable DC balance along with VRR DSB (rev6) Patchwork
2025-05-14 17:24 ` ✗ CI.checkpatch: warning " Patchwork
2025-05-14 17:25 ` ✓ CI.KUnit: success " Patchwork
2025-05-14 17:36 ` ✓ CI.Build: " Patchwork
2025-05-14 17:38 ` ✓ CI.Hooks: " Patchwork
2025-05-14 17:40 ` ✗ CI.checksparse: warning " Patchwork
2025-05-14 18:02 ` ✓ Xe.CI.BAT: success " Patchwork
2025-05-15  1:36 ` ✓ Xe.CI.Full: " Patchwork
2025-05-15  8:20 ` ✓ i915.CI.BAT: success for Enable/Disable DC balance along with VRR DSB (rev5) Patchwork
2025-05-15  9:56 ` ✗ i915.CI.Full: failure " Patchwork
2025-05-27  0:39 ` ✗ CI.Patch_applied: failure for Enable/Disable DC balance along with VRR DSB (rev6) Patchwork

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=20250513051700.507389-17-mitulkumar.ajitkumar.golani@intel.com \
    --to=mitulkumar.ajitkumar.golani@intel.com \
    --cc=ankit.k.nautiyal@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=ville.syrjala@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.