Honor the drrs deactivate coming from debugfs and keep it disabled until
the same is enabled from the user.

Signed-off-by: Arun R Murthy <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_display_types.h |  2 ++
 drivers/gpu/drm/i915/display/intel_drrs.c          | 10 ++++++++++
 2 files changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
b/drivers/gpu/drm/i915/display/intel_display_types.h
index 84bd0d993197..709595bde8d3 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1537,6 +1537,8 @@ struct intel_crtc {
                unsigned int busy_frontbuffer_bits;
                enum transcoder cpu_transcoder;
                struct intel_link_m_n m_n, m2_n2;
+               /* Runtime override; set to keep DRRS off across commits. */
+               bool force_disabled;
        } drrs;
 
        struct {
diff --git a/drivers/gpu/drm/i915/display/intel_drrs.c 
b/drivers/gpu/drm/i915/display/intel_drrs.c
index 0fdb32ef241c..6bebb04034e6 100644
--- a/drivers/gpu/drm/i915/display/intel_drrs.c
+++ b/drivers/gpu/drm/i915/display/intel_drrs.c
@@ -165,6 +165,12 @@ void intel_drrs_activate(const struct intel_crtc_state 
*crtc_state)
 
        mutex_lock(&crtc->drrs.mutex);
 
+       /* don't re-arm DRRS if forcefully disabled by debugfs */
+       if (crtc->drrs.force_disabled) {
+               mutex_unlock(&crtc->drrs.mutex);
+               return;
+       }
+
        crtc->drrs.cpu_transcoder = crtc_state->cpu_transcoder;
        crtc->drrs.m_n = crtc_state->dp_m_n;
        crtc->drrs.m2_n2 = crtc_state->dp_m2_n2;
@@ -376,6 +382,10 @@ static int intel_drrs_debugfs_ctl_set(void *data, u64 val)
 
        drm_dbg_kms(display->drm, "Manually %sactivating DRRS\n", val ? "" : 
"de");
 
+       mutex_lock(&crtc->drrs.mutex);
+       crtc->drrs.force_disabled = !val;
+       mutex_unlock(&crtc->drrs.mutex);
+
        if (val)
                intel_drrs_activate(crtc_state);
        else
-- 
2.25.1

Reply via email to