Re: [Bugme-new] [Bug 9762] New: radeonfb and Xpress 200m 5955
From: Andrew Morton <akpm@linux-foundation.org>
Date: 2008-01-16 19:12:58
On Wed, 16 Jan 2008 16:23:22 +0100 (CET) Geert Uytterhoeven [off-list ref] wrote:
On Wed, 16 Jan 2008, Andrew Morton wrote:quoted
On Wed, 16 Jan 2008 01:33:25 -0800 (PST) bugme-daemon@bugzilla.kernel.org wrote:quoted
http://bugzilla.kernel.org/show_bug.cgi?id=9762 Summary: radeonfb and Xpress 200m 5955 Product: Drivers Version: 2.5 KernelVersion: >=2.6.23 Platform: All OS/Version: Linux Tree: Mainline Status: NEW Severity: normal Priority: P1 Component: Console/Framebuffers AssignedTo: jsimmons@infradead.org ReportedBy: alevkovich@tut.by Latest working kernel version: 2.6.23 Earliest failing kernel version: any Distribution: gentoo Hardware Environment: Radeon XPress 200m 5955 Software Environment: Problem Description: framebuffer is ok only with default parameters only (it is 1280x800-8@60). If parameters are video=radeonfb:1280x800-32@60 then xres, yres and xres_virtual are ok but yres_virtual is 1024. It can be corrected by fbset utility so I think it can be corrected in the driver code also. Steps to reproduce: video=radeonfb:1280x800-32@60 or video=radeonfb:1280x800-16@60damn, another post-2.6.2 regression. Does anyone know whether this is likely to be a radeonfb problem or an fbdev core problem?Perhaps commit 1c5dd170927b1aa8e3a01d43d611b840336cdaf2 Author: Michal Januszewski [off-list ref] Date: Tue Oct 16 01:29:19 2007 -0700 fbdev: find mode with the highest/safest refresh rate in fb_find_mode() Currently, if the refresh rate is not specified, fb_find_mode() returns the first known video mode with the requested resolution, which provides no guarantees wrt the refresh rate. Change this so that the mode with the highest refresh rate is returned when the driver provides a custom video mod e database and the monitor limits, and a mode with the safe 60 Hz refresh rate otherwise.
Thanks.
M. alevkovich, can you please try to back out that change?
Here's a patch against 2.6.24-rc8 which performs that reversion:
--- a/drivers/video/modedb.c~revert-1
+++ a/drivers/video/modedb.c@@ -608,43 +608,26 @@ done: DPRINTK("Trying specified video mode%s %ix%i\n", refresh_specified ? "" : " (ignoring refresh rate)", xres, yres); - if (!refresh_specified) { - /* - * If the caller has provided a custom mode database and a - * valid monspecs structure, we look for the mode with the - * highest refresh rate. Otherwise we play it safe it and - * try to find a mode with a refresh rate closest to the - * standard 60 Hz. - */ - if (db != modedb && - info->monspecs.vfmin && info->monspecs.vfmax && - info->monspecs.hfmin && info->monspecs.hfmax && - info->monspecs.dclkmax) { - refresh = 1000; - } else { - refresh = 60; - } - } - - diff = -1; + 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))) && - !fb_try_mode(var, info, &db[i], bpp)) { - if (refresh_specified && db[i].refresh == refresh) { - return 1; - } else { - if (abs(db[i].refresh - refresh) < diff) { - diff = abs(db[i].refresh - refresh); - best = 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 (best != -1) { fb_try_mode(var, info, &db[best], bpp); - return (refresh_specified) ? 2 : 1; + return 2; } diff = xres + yres;
_ ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/