Use the default refresh rate if the monitor limits aren't set (either using
data from the EDID block, or explicitly by the user).
Signed-off-by: Michal Januszewski <[email protected]>
---
diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c
index 2f1e5af..2e5f1b5 100644
--- a/drivers/video/uvesafb.c
+++ b/drivers/video/uvesafb.c
@@ -689,10 +689,13 @@ static void __devinit uvesafb_vbe_getmonspecs(struct uvesafb_ktask *task,
/*
* If we don't get all necessary data from the EDID block,
- * mark it as incompatible with the GTF.
+ * mark it as incompatible with the GTF and set nocrtc so
+ * that we always use the default BIOS refresh rate.
*/
- if (uvesafb_vbe_getedid(task, info))
+ if (uvesafb_vbe_getedid(task, info)) {
info->monspecs.gtf = 0;
+ par->nocrtc = 1;
+ }
/* Kernel command line overrides. */
if (maxclk)
@@ -711,6 +714,7 @@ static void __devinit uvesafb_vbe_getmonspecs(struct uvesafb_ktask *task,
info->monspecs.vfmin = 60;
info->monspecs.hfmin = 29000;
info->monspecs.gtf = 1;
+ par->nocrtc = 0;
}
if (info->monspecs.gtf)
@@ -720,7 +724,8 @@ static void __devinit uvesafb_vbe_getmonspecs(struct uvesafb_ktask *task,
(int)(info->monspecs.hfmax / 1000),
(int)(info->monspecs.dclkmax / 1000000));
else
- printk(KERN_INFO "uvesafb: no monitor limits have been set\n");
+ printk(KERN_INFO "uvesafb: no monitor limits have been set, "
+ "default refresh rate will be used\n");
/* Add VBE modes to the modelist. */
for (i = 0; i < par->vbe_modes_cnt; i++) {