From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [Intel-gfx] [PATCH] drm/i915: Allow user modes to exceed DVI 165MHz limit Date: Fri, 11 Apr 2014 17:28:25 +0300 Message-ID: <87sipklz3q.fsf@intel.com> References: <1395911325-4981-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: In-Reply-To: <1395911325-4981-1-git-send-email-ville.syrjala@linux.intel.com> Sender: stable-owner@vger.kernel.org To: ville.syrjala@linux.intel.com, intel-gfx@lists.freedesktop.org Cc: stable@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org Pushed to -fixes, thanks for the patch and Daniel's r-b on IRC. BR, Jani. On Thu, 27 Mar 2014, ville.syrjala@linux.intel.com wrote: > From: Ville Syrj=C3=A4l=C3=A4 > > In commit > commit 6375b768a9850b6154478993e5fb566fa4614a9c > Author: Ville Syrj=C3=A4l=C3=A4 > Date: Mon Mar 3 11:33:36 2014 +0200 > > drm/i915: Reject >165MHz modes w/ DVI monitors > > the driver started to filter out display modes which exceed the > single-link DVI 165Mz dotclock limits when the monitor doesn't report > itself as being HDMI compliant. The intent was to filter out all > EDID derived modes that require dual-link DVI to operate since we > don't support dual-link. > > However the patch went a bit too far and also causes the driver to re= ject > such modes even when specified by the user. Normally we don't check t= he > sink limitations when setting a mode from the user. This allows the u= ser > to specify any mode whether the sink reports to support it or not. Th= is > can be useful since often the sinks support more modes than they repo= rt > in the EDID. > > So relax the checks a bit, and apply the single-link DVI dotclock lim= it > only when filtering the mode list, and ignore the limit when setting > a user specified mode. > > Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=3D72961 > Tested-by: Nicholas Vinson > Cc: stable@vger.kernel.org > Signed-off-by: Ville Syrj=C3=A4l=C3=A4 > --- > drivers/gpu/drm/i915/intel_hdmi.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915= /intel_hdmi.c > index ee3181e..ca5d23d 100644 > --- a/drivers/gpu/drm/i915/intel_hdmi.c > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > @@ -841,11 +841,11 @@ static void intel_disable_hdmi(struct intel_enc= oder *encoder) > } > } > =20 > -static int hdmi_portclock_limit(struct intel_hdmi *hdmi) > +static int hdmi_portclock_limit(struct intel_hdmi *hdmi, bool respec= t_dvi_limit) > { > struct drm_device *dev =3D intel_hdmi_to_dev(hdmi); > =20 > - if (!hdmi->has_hdmi_sink || IS_G4X(dev)) > + if ((respect_dvi_limit && !hdmi->has_hdmi_sink) || IS_G4X(dev)) > return 165000; > else if (IS_HASWELL(dev) || INTEL_INFO(dev)->gen >=3D 8) > return 300000; > @@ -857,7 +857,8 @@ static enum drm_mode_status > intel_hdmi_mode_valid(struct drm_connector *connector, > struct drm_display_mode *mode) > { > - if (mode->clock > hdmi_portclock_limit(intel_attached_hdmi(connecto= r))) > + if (mode->clock > hdmi_portclock_limit(intel_attached_hdmi(connecto= r), > + true)) > return MODE_CLOCK_HIGH; > if (mode->clock < 20000) > return MODE_CLOCK_LOW; > @@ -875,7 +876,7 @@ bool intel_hdmi_compute_config(struct intel_encod= er *encoder, > struct drm_device *dev =3D encoder->base.dev; > struct drm_display_mode *adjusted_mode =3D &pipe_config->adjusted_m= ode; > int clock_12bpc =3D pipe_config->adjusted_mode.crtc_clock * 3 / 2; > - int portclock_limit =3D hdmi_portclock_limit(intel_hdmi); > + int portclock_limit =3D hdmi_portclock_limit(intel_hdmi, false); > int desired_bpp; > =20 > if (intel_hdmi->color_range_auto) { > --=20 > 1.8.3.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx --=20 Jani Nikula, Intel Open Source Technology Center