savagefb: Use panel CVT mode as default
If there is no EDID but an LCD panel is detected, generate a CVT mode from the panel resolution (at 60 Hz), and use this as a default mode instead of the hardcoded 800x600x8 mode. Signed-off-by: Tormod Volden <debian.tormod@gmail.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
554cc10286
commit
1bae852fb0
2 changed files with 17 additions and 0 deletions
|
@ -1128,3 +1128,4 @@ EXPORT_SYMBOL(fb_find_best_mode);
|
|||
EXPORT_SYMBOL(fb_find_nearest_mode);
|
||||
EXPORT_SYMBOL(fb_videomode_to_modelist);
|
||||
EXPORT_SYMBOL(fb_find_mode);
|
||||
EXPORT_SYMBOL(fb_find_mode_cvt);
|
||||
|
|
|
@ -2237,6 +2237,22 @@ static int __devinit savagefb_probe(struct pci_dev* dev,
|
|||
&info->modelist);
|
||||
#endif
|
||||
info->var = savagefb_var800x600x8;
|
||||
/* if a panel was detected, default to a CVT mode instead */
|
||||
if (par->SavagePanelWidth) {
|
||||
struct fb_videomode cvt_mode;
|
||||
|
||||
memset(&cvt_mode, 0, sizeof(cvt_mode));
|
||||
cvt_mode.xres = par->SavagePanelWidth;
|
||||
cvt_mode.yres = par->SavagePanelHeight;
|
||||
cvt_mode.refresh = 60;
|
||||
/* FIXME: if we know there is only the panel
|
||||
* we can enable reduced blanking as well */
|
||||
if (fb_find_mode_cvt(&cvt_mode, 0, 0))
|
||||
printk(KERN_WARNING "No CVT mode found for panel\n");
|
||||
else if (fb_find_mode(&info->var, info, NULL, NULL, 0,
|
||||
&cvt_mode, 0) != 3)
|
||||
info->var = savagefb_var800x600x8;
|
||||
}
|
||||
|
||||
if (mode_option) {
|
||||
fb_find_mode(&info->var, info, mode_option,
|
||||
|
|
Loading…
Reference in a new issue