From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michal Januszewski Subject: [PATCH] fbdev: find mode with highest refresh rate in fb_find_mode() Date: Wed, 18 Jul 2007 10:41:02 +0200 Message-ID: <20070718084102.GA22694@spock.one.pl> Reply-To: spock@gentoo.org Mime-Version: 1.0 Return-path: Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-Id: --- diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c index 3741ad7..f70143a 100644 --- a/drivers/video/modedb.c +++ b/drivers/video/modedb.c @@ -606,26 +606,29 @@ done: DPRINTK("Trying specified video mode%s %ix%i\n", refresh_specified ? "" : " (ignoring refresh rate)", xres, yres); - diff = refresh; + if (!refresh_specified) + diff = 0 + else + diff = refresh; + best = -1; for (i = 0; i < dbsize; i++) { - if (name_matches(db[i], name, namelen) || - (res_specified && res_matches(db[i], xres, yres))) { - if(!fb_try_mode(var, info, &db[i], bpp)) { - if(!refresh_specified || db[i].refresh == refresh) - return 1; - else { - if(diff > abs(db[i].refresh - refresh)) { - diff = abs(db[i].refresh - refresh); - best = i; - } + if ((name_matches(db[i], name, namelen) || + (res_specified && res_matches(db[i], xres, yres))) && + !fb_try_mode(var, info, &db[i], bpp)) { + if (refresh_specified && db[i].refresh == refresh) { + return 1; + } else { + if (diff < db[i].refresh) { + diff = db[i].refresh; + best = i; } } } } if (best != -1) { fb_try_mode(var, info, &db[best], bpp); - return 2; + return (refresh_specified) ? 2 : 1; } diff = xres + yres;