On Tue, Oct 24, 2023 at 01:22:19PM +0300, Imre Deak wrote: > Enable passing through DSC streams to the sink in last branch devices. > > v2: > - Fix the DPCD register address while setting/clearing the passthrough > flag. > > Signed-off-by: Imre Deak <imre.deak@xxxxxxxxx> Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_dp.c | 26 ++++++++++++++++++++++++- > 1 file changed, 25 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c > index 0101e17515b33..51d6ab170a894 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.c > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > @@ -2968,6 +2968,24 @@ intel_dp_sink_set_dsc_decompression(struct intel_connector *connector, > str_enable_disable(enable)); > } > > +static void > +intel_dp_sink_set_dsc_passthrough(const struct intel_connector *connector, > + bool enable) > +{ > + struct drm_i915_private *i915 = to_i915(connector->base.dev); > + struct drm_dp_aux *aux = connector->port ? > + connector->port->passthrough_aux : NULL; > + > + if (!aux) > + return; > + > + if (write_dsc_decompression_flag(aux, > + DP_DSC_PASSTHROUGH_EN, enable) < 0) > + drm_dbg_kms(&i915->drm, > + "Failed to %s sink compression passthrough state\n", > + str_enable_disable(enable)); > +} > + > void intel_dp_sink_set_decompression_state(struct intel_connector *connector, > const struct intel_crtc_state *crtc_state, > bool enable) > @@ -2980,7 +2998,13 @@ void intel_dp_sink_set_decompression_state(struct intel_connector *connector, > if (drm_WARN_ON(&i915->drm, !connector->dp.dsc_decompression_aux)) > return; > > - intel_dp_sink_set_dsc_decompression(connector, enable); > + if (enable) { > + intel_dp_sink_set_dsc_passthrough(connector, true); > + intel_dp_sink_set_dsc_decompression(connector, true); > + } else { > + intel_dp_sink_set_dsc_decompression(connector, false); > + intel_dp_sink_set_dsc_passthrough(connector, false); > + } > } > > static void > -- > 2.39.2 >