From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/edid: compare actual vrefresh for all modes for quirks Date: Mon, 14 Oct 2013 19:58:57 +0300 Message-ID: <20131014165857.GG13047@intel.com> References: <1376581693-6539-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 38081E5C11 for ; Mon, 14 Oct 2013 09:59:02 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Alex Deucher Cc: Alex Deucher , Maling list - DRI developers List-Id: dri-devel@lists.freedesktop.org On Mon, Oct 14, 2013 at 12:50:41PM -0400, Alex Deucher wrote: > On Fri, Sep 20, 2013 at 6:32 PM, Alex Deucher wro= te: > > On Thu, Aug 15, 2013 at 11:48 AM, Alex Deucher = wrote: > >> The vrefresh field of the mode is 0 for most modes > >> fetched from the EDID (e.g., established timings). > >> When dealing with monitors that have a bogus preferred > >> mode, we may not always select the mode we want because > >> we compare the target refresh to the mode's vrefresh which > >> is 0 in a lot of cases. > >> > >> Signed-off-by: Alex Deucher > > > > Ping? Any objections? > = > Anyone? Without this quirking doesn't work unless the quirked mode > happens to have the vrefesh field filled in which most modes don't. Yeah, seems saner than comparing against 0. Reviewed-by: Ville Syrj=E4l=E4 > = > Alex > = > = > > > > Alex > > > >> --- > >> drivers/gpu/drm/drm_edid.c | 11 ++++++++--- > >> 1 file changed, 8 insertions(+), 3 deletions(-) > >> > >> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > >> index 58b4882..c3095e0 100644 > >> --- a/drivers/gpu/drm/drm_edid.c > >> +++ b/drivers/gpu/drm/drm_edid.c > >> @@ -1278,7 +1278,7 @@ static u32 edid_get_quirks(struct edid *edid) > >> } > >> > >> #define MODE_SIZE(m) ((m)->hdisplay * (m)->vdisplay) > >> -#define MODE_REFRESH_DIFF(m,r) (abs((m)->vrefresh - target_refresh)) > >> +#define MODE_REFRESH_DIFF(c,t) (abs((c) - (t))) > >> > >> /** > >> * edid_fixup_preferred - set preferred modes based on quirk list > >> @@ -1293,6 +1293,7 @@ static void edid_fixup_preferred(struct drm_conn= ector *connector, > >> { > >> struct drm_display_mode *t, *cur_mode, *preferred_mode; > >> int target_refresh =3D 0; > >> + int cur_vrefresh, preferred_vrefresh; > >> > >> if (list_empty(&connector->probed_modes)) > >> return; > >> @@ -1315,10 +1316,14 @@ static void edid_fixup_preferred(struct drm_co= nnector *connector, > >> if (MODE_SIZE(cur_mode) > MODE_SIZE(preferred_mode)) > >> preferred_mode =3D cur_mode; > >> > >> + cur_vrefresh =3D cur_mode->vrefresh ? > >> + cur_mode->vrefresh : drm_mode_vrefresh(cur_mod= e); > >> + preferred_vrefresh =3D preferred_mode->vrefresh ? > >> + preferred_mode->vrefresh : drm_mode_vrefresh(p= referred_mode); > >> /* At a given size, try to get closest to target refre= sh */ > >> if ((MODE_SIZE(cur_mode) =3D=3D MODE_SIZE(preferred_mo= de)) && > >> - MODE_REFRESH_DIFF(cur_mode, target_refresh) < > >> - MODE_REFRESH_DIFF(preferred_mode, target_refresh))= { > >> + MODE_REFRESH_DIFF(cur_vrefresh, target_refresh) < > >> + MODE_REFRESH_DIFF(preferred_vrefresh, target_refre= sh)) { > >> preferred_mode =3D cur_mode; > >> } > >> } > >> -- > >> 1.8.3.1 > >> > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel -- = Ville Syrj=E4l=E4 Intel OTC