Message ID | 20230210063055.1193675-3-koba.ko@canonical.com |
---|---|
State | New |
Headers | show |
Series | RaptorLake: Fix the Screen is shaking by onboard HDMI port in mirror mode | expand |
On Fri, Feb 10, 2023 at 02:30:54PM +0800, Koba Ko wrote: > From: Ankit Nautiyal <ankit.k.nautiyal@intel.com> > > BugLink: https://bugs.launchpad.net/bugs/1993561 > > Defeature Display Interlace support. > Support for interlace modes is removed from Gen 12 onwards. > Pruning the interlace modes for HDMI for Display >=12. > Bspec: 50490 > > v2: Add check for both DP and HDMI. (Ville) > Get rid of redundant check for interlace mode in modevalid. (Ville) > > v3: Simplify the condition to avoid interlace modes. (Jani) > > Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> > Reviewed-by: Jani Nikula <jani.nikula@intel.com> > Signed-off-by: Uma Shankar <uma.shankar@intel.com> > Link: https://patchwork.freedesktop.org/patch/msgid/20230105124125.1129653-1-ankit.k.nautiyal@intel.com > (cherry picked from commit f71c9b7bc35ff7c1fb68d114903876eec658439b) This looks more like a backport than a clean cherry pick, because the context is different (in fact this patch doesn't apply cleanly to lunar/linux-unstable). However the cherry-pick of the commit applies cleanly, so I've applied it to lunar/linux-unstable doing cherry-pick directly. -Andrea > Signed-off-by: Koba Ko <koba.ko@canonical.com> > --- > drivers/gpu/drm/i915/display/intel_dp.c | 4 ++-- > drivers/gpu/drm/i915/display/intel_hdmi.c | 11 +++++++++-- > 2 files changed, 11 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c > index 7360effb724eb..a912ef24be11f 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.c > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > @@ -1981,7 +1981,7 @@ intel_dp_compute_config(struct intel_encoder *encoder, > if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN) > return -EINVAL; > > - if (HAS_GMCH(dev_priv) && > + if (!connector->base.interlace_allowed && > adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) > return -EINVAL; > > @@ -5323,7 +5323,7 @@ intel_dp_init_connector(struct intel_digital_port *dig_port, > drm_connector_init(dev, connector, &intel_dp_connector_funcs, type); > drm_connector_helper_add(connector, &intel_dp_connector_helper_funcs); > > - if (!HAS_GMCH(dev_priv)) > + if (!HAS_GMCH(dev_priv) && DISPLAY_VER(dev_priv) < 12) > connector->interlace_allowed = true; > connector->doublescan_allowed = 0; > > diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c > index 0cff29ac3c2d1..894973d36d73a 100644 > --- a/drivers/gpu/drm/i915/display/intel_hdmi.c > +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c > @@ -2234,6 +2234,10 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder, > if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN) > return -EINVAL; > > + if (!connector->interlace_allowed && > + adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) > + return -EINVAL; > + > pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB; > pipe_config->has_hdmi_sink = intel_has_hdmi_sink(intel_hdmi, > conn_state); > @@ -2943,9 +2947,12 @@ void intel_hdmi_init_connector(struct intel_digital_port *dig_port, > ddc); > drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs); > > - connector->interlace_allowed = 1; > + if (DISPLAY_VER(dev_priv) < 12) > + connector->interlace_allowed = true; > + > connector->doublescan_allowed = 0; > - connector->stereo_allowed = 1; > + > + connector->stereo_allowed = true; > > if (DISPLAY_VER(dev_priv) >= 10) > connector->ycbcr_420_allowed = true; > -- > 2.25.1 > > > -- > kernel-team mailing list > kernel-team@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/kernel-team
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 7360effb724eb..a912ef24be11f 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -1981,7 +1981,7 @@ intel_dp_compute_config(struct intel_encoder *encoder, if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN) return -EINVAL; - if (HAS_GMCH(dev_priv) && + if (!connector->base.interlace_allowed && adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) return -EINVAL; @@ -5323,7 +5323,7 @@ intel_dp_init_connector(struct intel_digital_port *dig_port, drm_connector_init(dev, connector, &intel_dp_connector_funcs, type); drm_connector_helper_add(connector, &intel_dp_connector_helper_funcs); - if (!HAS_GMCH(dev_priv)) + if (!HAS_GMCH(dev_priv) && DISPLAY_VER(dev_priv) < 12) connector->interlace_allowed = true; connector->doublescan_allowed = 0; diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c index 0cff29ac3c2d1..894973d36d73a 100644 --- a/drivers/gpu/drm/i915/display/intel_hdmi.c +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c @@ -2234,6 +2234,10 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder, if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN) return -EINVAL; + if (!connector->interlace_allowed && + adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) + return -EINVAL; + pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB; pipe_config->has_hdmi_sink = intel_has_hdmi_sink(intel_hdmi, conn_state); @@ -2943,9 +2947,12 @@ void intel_hdmi_init_connector(struct intel_digital_port *dig_port, ddc); drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs); - connector->interlace_allowed = 1; + if (DISPLAY_VER(dev_priv) < 12) + connector->interlace_allowed = true; + connector->doublescan_allowed = 0; - connector->stereo_allowed = 1; + + connector->stereo_allowed = true; if (DISPLAY_VER(dev_priv) >= 10) connector->ycbcr_420_allowed = true;