Message ID | 20201126210314.7882-15-uma.shankar@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Enable HDR on MCA LSPCON based Gen9 devices | expand |
On Fri, Nov 27, 2020 at 02:33:13AM +0530, Uma Shankar wrote: > Non-HDMI sinks shouldn't be sent Dynamic Range and Mastering infoframes. > Check for that when using LSPCON. > > Signed-off-by: Uma Shankar <uma.shankar@intel.com> > --- > drivers/gpu/drm/i915/display/intel_ddi.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c > index 48da5dc59939..07bef90e149e 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -4118,6 +4118,7 @@ static void intel_enable_ddi_dp(struct intel_atomic_state *state, > { > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > struct intel_dp *intel_dp = enc_to_intel_dp(encoder); > + struct intel_digital_port *dig_port = enc_to_dig_port(encoder); > enum port port = encoder->port; > > if (port == PORT_A && INTEL_GEN(dev_priv) < 9) > @@ -4125,7 +4126,14 @@ static void intel_enable_ddi_dp(struct intel_atomic_state *state, > > intel_edp_backlight_on(crtc_state, conn_state); > intel_psr_enable(intel_dp, crtc_state, conn_state); > - intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); > + > + if (dig_port->lspcon.active) { > + if (dig_port->dp.has_hdmi_sink) > + intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); > + } else { > + intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); > + } Simplify to if (!lspcon || has_hdmi_sink) intel_dp_set_infoframes() ? Some time ago I was pondering if we should start to use crtc_state->has_hdmi_sink for DP too, but since we have no way to do readout for it I'm not sure it can be done in a sane way. I guess in the meantime I guess we need something like this. Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > + > intel_edp_drrs_enable(intel_dp, crtc_state); > > if (crtc_state->has_audio) > -- > 2.26.2
> -----Original Message----- > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > Sent: Friday, November 27, 2020 8:22 PM > To: Shankar, Uma <uma.shankar@intel.com> > Cc: intel-gfx@lists.freedesktop.org > Subject: Re: [v12 14/15] drm/i915/lspcon: Do not send DRM infoframes to non- > HDMI sinks > > On Fri, Nov 27, 2020 at 02:33:13AM +0530, Uma Shankar wrote: > > Non-HDMI sinks shouldn't be sent Dynamic Range and Mastering infoframes. > > Check for that when using LSPCON. > > > > Signed-off-by: Uma Shankar <uma.shankar@intel.com> > > --- > > drivers/gpu/drm/i915/display/intel_ddi.c | 10 +++++++++- > > 1 file changed, 9 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c > > b/drivers/gpu/drm/i915/display/intel_ddi.c > > index 48da5dc59939..07bef90e149e 100644 > > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > > @@ -4118,6 +4118,7 @@ static void intel_enable_ddi_dp(struct > > intel_atomic_state *state, { > > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > > struct intel_dp *intel_dp = enc_to_intel_dp(encoder); > > + struct intel_digital_port *dig_port = enc_to_dig_port(encoder); > > enum port port = encoder->port; > > > > if (port == PORT_A && INTEL_GEN(dev_priv) < 9) @@ -4125,7 +4126,14 > > @@ static void intel_enable_ddi_dp(struct intel_atomic_state *state, > > > > intel_edp_backlight_on(crtc_state, conn_state); > > intel_psr_enable(intel_dp, crtc_state, conn_state); > > - intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); > > + > > + if (dig_port->lspcon.active) { > > + if (dig_port->dp.has_hdmi_sink) > > + intel_dp_set_infoframes(encoder, true, crtc_state, > conn_state); > > + } else { > > + intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); > > + } > > Simplify to > if (!lspcon || has_hdmi_sink) > intel_dp_set_infoframes() > ? Sure, will update this. > Some time ago I was pondering if we should start to use crtc_state- > >has_hdmi_sink for DP too, but since we have no way to do readout for it I'm > not sure it can be done in a sane way. Yeah this is a bit convoluted to fit both. Can you please check 1 last remaining patch as well https://patchwork.freedesktop.org/patch/404605/?series=68081&rev=14 With that the series would be ready for merge, Thanks & Regards, Uma Shankar > I guess in the meantime I guess we need something like this. > > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > + > > intel_edp_drrs_enable(intel_dp, crtc_state); > > > > if (crtc_state->has_audio) > > -- > > 2.26.2 > > -- > Ville Syrjälä > Intel
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c index 48da5dc59939..07bef90e149e 100644 --- a/drivers/gpu/drm/i915/display/intel_ddi.c +++ b/drivers/gpu/drm/i915/display/intel_ddi.c @@ -4118,6 +4118,7 @@ static void intel_enable_ddi_dp(struct intel_atomic_state *state, { struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + struct intel_digital_port *dig_port = enc_to_dig_port(encoder); enum port port = encoder->port; if (port == PORT_A && INTEL_GEN(dev_priv) < 9) @@ -4125,7 +4126,14 @@ static void intel_enable_ddi_dp(struct intel_atomic_state *state, intel_edp_backlight_on(crtc_state, conn_state); intel_psr_enable(intel_dp, crtc_state, conn_state); - intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); + + if (dig_port->lspcon.active) { + if (dig_port->dp.has_hdmi_sink) + intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); + } else { + intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); + } + intel_edp_drrs_enable(intel_dp, crtc_state); if (crtc_state->has_audio)
Non-HDMI sinks shouldn't be sent Dynamic Range and Mastering infoframes. Check for that when using LSPCON. Signed-off-by: Uma Shankar <uma.shankar@intel.com> --- drivers/gpu/drm/i915/display/intel_ddi.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)