]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/display: Add function to configure event for dc balance
authorMitul Golani <mitulkumar.ajitkumar.golani@intel.com>
Tue, 23 Dec 2025 10:45:39 +0000 (16:15 +0530)
committerAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Tue, 30 Dec 2025 04:32:21 +0000 (10:02 +0530)
Configure pipe dmc event for dc balance enable/disable.

--v2:
- Keeping function and removing unnecessary comments. (Jani, Nikula)

Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Link: https://patch.msgid.link/20251223104542.2688548-18-mitulkumar.ajitkumar.golani@intel.com
drivers/gpu/drm/i915/display/intel_dmc.c
drivers/gpu/drm/i915/display/intel_dmc.h
drivers/gpu/drm/i915/display/intel_vrr.c

index e076ba7e0f28e847b7f3cdd988d1bb2cd0064e01..1182bc9a2e6dda75030b76190044a0714346042d 100644 (file)
@@ -859,6 +859,14 @@ static void dmc_configure_event(struct intel_display *display,
                      dmc_id, num_handlers, event_id);
 }
 
+void intel_dmc_configure_dc_balance_event(struct intel_display *display,
+                                         enum pipe pipe, bool enable)
+{
+       enum intel_dmc_id dmc_id = PIPE_TO_DMC_ID(pipe);
+
+       dmc_configure_event(display, dmc_id, PIPEDMC_EVENT_ADAPTIVE_DCB_TRIGGER, enable);
+}
+
 /**
  * intel_dmc_block_pkgc() - block PKG C-state
  * @display: display instance
index 9c6a42fc820e6499ab14c1f5bfd4a05d0e2998df..3d8a9a593319b2b452dfe801d4d58a3f4968b30a 100644 (file)
@@ -25,6 +25,8 @@ void intel_dmc_enable_pipe(const struct intel_crtc_state *crtc_state);
 void intel_dmc_disable_pipe(const struct intel_crtc_state *crtc_state);
 void intel_dmc_block_pkgc(struct intel_display *display, enum pipe pipe,
                          bool block);
+void intel_dmc_configure_dc_balance_event(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);
index ac612cf08d9859516bc390cf7000976f7c8443ac..1522ec3a98b8fef7b5f961d0d6bec5b9c2b386d2 100644 (file)
@@ -823,6 +823,7 @@ intel_vrr_enable_dc_balancing(const struct intel_crtc_state *crtc_state)
                       crtc_state->vrr.dc_balance.slope);
        intel_de_write(display, PIPEDMC_DCB_VBLANK(pipe),
                       crtc_state->vrr.dc_balance.vblank_target);
+       intel_dmc_configure_dc_balance_event(display, pipe, true);
        intel_de_write(display, TRANS_ADAPTIVE_SYNC_DCB_CTL(cpu_transcoder),
                       ADAPTIVE_SYNC_COUNTER_EN);
        intel_pipedmc_dcb_enable(NULL, crtc);
@@ -840,6 +841,7 @@ intel_vrr_disable_dc_balancing(const struct intel_crtc_state *old_crtc_state)
                return;
 
        intel_pipedmc_dcb_disable(NULL, crtc);
+       intel_dmc_configure_dc_balance_event(display, pipe, false);
        intel_de_write(display, TRANS_ADAPTIVE_SYNC_DCB_CTL(cpu_transcoder), 0);
        intel_de_write(display, PIPEDMC_DCB_VMIN(pipe), 0);
        intel_de_write(display, PIPEDMC_DCB_VMAX(pipe), 0);