2007-08-11 14:43:13

by Michal Januszewski

[permalink] [raw]
Subject: [PATCH 6/7] uvesafb: use the default refresh rate if the monitor limits are not set

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++) {