* for more details.
*
*/
+#include <linux/tty.h>
#include <linux/fb.h>
#include <linux/module.h>
-#include <linux/pci.h>
#include <video/edid.h>
#ifdef CONFIG_PPC_OF
+#include <linux/pci.h>
#include <asm/prom.h>
#include <asm/pci-bridge.h>
#endif
block = edid + DETAILED_TIMING_DESCRIPTIONS_START;
DPRINTK(" Monitor Operating Limits: ");
-
for (i = 0; i < 4; i++, block += DETAILED_TIMING_DESCRIPTION_SIZE) {
if (edid_is_limits_block(block)) {
specs->hfmin = H_MIN_RATE * 1000;
break;
}
}
-
+
/* estimate monitor limits based on modes supported */
if (retval) {
- struct fb_videomode *modes, *mode;
+ struct fb_videomode *modes;
int num_modes, i, hz, hscan, pixclock;
- int vtotal, htotal;
modes = fb_create_modedb(edid, &num_modes);
if (!modes) {
retval = 0;
for (i = 0; i < num_modes; i++) {
- mode = &modes[i];
+ hz = modes[i].refresh;
pixclock = PICOS2KHZ(modes[i].pixclock) * 1000;
- htotal = mode->xres + mode->right_margin + mode->hsync_len
- + mode->left_margin;
- vtotal = mode->yres + mode->lower_margin + mode->vsync_len
- + mode->upper_margin;
-
- if (mode->vmode & FB_VMODE_INTERLACED)
- vtotal /= 2;
-
- if (mode->vmode & FB_VMODE_DOUBLE)
- vtotal *= 2;
-
- hscan = (pixclock + htotal / 2) / htotal;
- hscan = (hscan + 500) / 1000 * 1000;
- hz = (hscan + vtotal / 2) / vtotal;
+ hscan = (modes[i].yres * 105 * hz + 5000)/100;
if (specs->dclkmax == 0 || specs->dclkmax < pixclock)
specs->dclkmax = pixclock;
-
if (specs->dclkmin == 0 || specs->dclkmin > pixclock)
specs->dclkmin = pixclock;
-
if (specs->hfmax == 0 || specs->hfmax < hscan)
specs->hfmax = hscan;
-
if (specs->hfmin == 0 || specs->hfmin > hscan)
specs->hfmin = hscan;
-
if (specs->vfmax == 0 || specs->vfmax < hz)
specs->vfmax = hz;
-
if (specs->vfmin == 0 || specs->vfmin > hz)
specs->vfmin = hz;
}
-EINVAL : 0;
}
-#if defined(CONFIG_FIRMWARE_EDID) && defined(CONFIG_X86)
+#if defined(__i386__)
+#include <linux/pci.h>
/*
* We need to ensure that the EDID block is only returned for
{
return NULL;
}
-#endif
-EXPORT_SYMBOL(fb_firmware_edid);
+#endif /* _i386_ */
EXPORT_SYMBOL(fb_parse_edid);
EXPORT_SYMBOL(fb_edid_to_monspecs);
+EXPORT_SYMBOL(fb_firmware_edid);
EXPORT_SYMBOL(fb_get_mode);
EXPORT_SYMBOL(fb_validate_mode);
EXPORT_SYMBOL(fb_destroy_modedb);