Message ID | 20231024102219.4035939-4-imre.deak@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | None | expand |
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@intel.com> Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> > --- > 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 >
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
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@intel.com> --- drivers/gpu/drm/i915/display/intel_dp.c | 26 ++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-)