Display Stream Splitter registers need to be programmed to enable
the joiner if two DSC engines are used and also to enable
the left and the right DSC engines. This happens as part of
the DSC enabling routine in the source in atomic commit.

v2:
* Rebase (Manasi)

Cc: Jani Nikula <jani.nik...@linux.intel.com>
Cc: Ville Syrjala <ville.syrj...@linux.intel.com>
Cc: Anusha Srivatsa <anusha.sriva...@intel.com>
Signed-off-by: Manasi Navare <manasi.d.nav...@intel.com>
Reviewed-by: Anusha Srivatsa <anusha.srivatsa@intelcom>
---
 drivers/gpu/drm/i915/intel_vdsc.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_vdsc.c 
b/drivers/gpu/drm/i915/intel_vdsc.c
index 2011c3ea852e..c1874001ca67 100644
--- a/drivers/gpu/drm/i915/intel_vdsc.c
+++ b/drivers/gpu/drm/i915/intel_vdsc.c
@@ -1011,6 +1011,11 @@ void intel_dsc_enable(struct intel_encoder *encoder,
 {
        struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
        struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+       struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
+       enum pipe pipe = crtc->pipe;
+       i915_reg_t dss_ctl1_reg, dss_ctl2_reg;
+       u32 dss_ctl1_val = 0;
+       u32 dss_ctl2_val = 0;
 
        if (!crtc_state->dsc_params.compression_enable)
                return;
@@ -1023,5 +1028,21 @@ void intel_dsc_enable(struct intel_encoder *encoder,
 
        intel_dp_send_dsc_pps_sdp(encoder, crtc_state);
 
+       /* Configure DSS_CTL registers for DSC */
+       if (encoder->type == INTEL_OUTPUT_EDP) {
+               dss_ctl1_reg = DSS_CTL1;
+               dss_ctl2_reg = DSS_CTL2;
+       } else {
+               dss_ctl1_reg = ICL_PIPE_DSS_CTL1(pipe);
+               dss_ctl2_reg = ICL_PIPE_DSS_CTL2(pipe);
+       }
+       dss_ctl2_val |= LEFT_BRANCH_VDSC_ENABLE;
+       if (crtc_state->dsc_params.dsc_split) {
+               dss_ctl2_val |= RIGHT_BRANCH_VDSC_ENABLE;
+               dss_ctl1_val |= JOINER_ENABLE;
+       }
+       I915_WRITE(dss_ctl1_reg, dss_ctl1_val);
+       I915_WRITE(dss_ctl2_reg, dss_ctl2_val);
+
        return;
 }
-- 
2.18.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to