Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1bae852f authored by Tormod Volden's avatar Tormod Volden Committed by Paul Mundt
Browse files

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: default avatarTormod Volden <debian.tormod@gmail.com>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 554cc102
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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);
+16 −0
Original line number Diff line number Diff line
@@ -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,