From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757258Ab2FYP55 (ORCPT ); Mon, 25 Jun 2012 11:57:57 -0400 Received: from cantor2.suse.de ([195.135.220.15]:53379 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752928Ab2FYP54 (ORCPT ); Mon, 25 Jun 2012 11:57:56 -0400 Date: Mon, 25 Jun 2012 17:57:55 +0200 Message-ID: From: Takashi Iwai To: Adam Jackson Cc: Sven Joachim , dri-devel@lists.freedesktop.org, Rodrigo Vivi , Dave Airlie , linux-kernel@vger.kernel.org Subject: Re: Bogus video resolution in Linux 3.5-rc4 In-Reply-To: References: <874npzebev.fsf@turtle.gmx.de> User-Agent: Wanderlust/2.15.6 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.7 Emacs/23.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org At Mon, 25 Jun 2012 17:53:12 +0200, Takashi Iwai wrote: > > And, does the patch below help? BTW, the patch below contains the possible generic fix. It seems that EDID_QUIRK_FIRST_DETAILED_PREFERRED handling is missing from the beginning. So I wrote it just from what I can imagine from the comment: /* Monitor forgot to set the first detailed is preferred bit. */ #define EDID_QUIRK_FIRST_DETAILED_PREFERRED (1 << 5) Adam, is my interpretation correct? Takashi > > > Takashi > > --- > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index 5873e48..dab8580 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -116,6 +116,7 @@ static struct edid_quirk { > > /* Proview AY765C */ > { "PTS", 765, EDID_QUIRK_FIRST_DETAILED_PREFERRED }, > + { "PTS", 793, EDID_QUIRK_FIRST_DETAILED_PREFERRED }, > > /* Samsung SyncMaster 205BW. Note: irony */ > { "SAM", 541, EDID_QUIRK_DETAILED_SYNC_PP }, > @@ -1404,7 +1405,9 @@ do_detailed_mode(struct detailed_timing *timing, void *c) > if (!newmode) > return; > > - if (closure->preferred) > + if (closure->preferred || > + ((closure->quirks & EDID_QUIRK_FIRST_DETAILED_PREFERRED) && > + !closure->modes)) > newmode->type |= DRM_MODE_TYPE_PREFERRED; > > drm_mode_probed_add(closure->connector, newmode);