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

Commit 3f086fe9 authored by Florian Tobias Schandinat's avatar Florian Tobias Schandinat
Browse files

viafb: initialize margins correct



This patch initializes the margins for the initial mode correct.
This is required to get the desired initial refresh rate. Also do
more verbose sanity checking to prevent misbehavior.

Signed-off-by: default avatarFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>
parent 726abbc7
Loading
Loading
Loading
Loading
+11 −20
Original line number Diff line number Diff line
@@ -1806,14 +1806,9 @@ int __devinit via_fb_pci_probe(struct viafb_dev *vdev)
	default_var.xres_virtual = default_xres;
	default_var.yres_virtual = default_yres;
	default_var.bits_per_pixel = viafb_bpp;
	default_var.pixclock =
	    viafb_get_pixclock(default_xres, default_yres, viafb_refresh);
	default_var.left_margin = (default_xres >> 3) & 0xf8;
	default_var.right_margin = 32;
	default_var.upper_margin = 16;
	default_var.lower_margin = 4;
	default_var.hsync_len = default_var.left_margin;
	default_var.vsync_len = 4;
	viafb_fill_var_timing_info(&default_var, viafb_get_refresh(
		default_var.xres, default_var.yres, viafb_refresh),
		viafb_get_mode(default_var.xres, default_var.yres));
	viafb_setup_fixinfo(&viafbinfo->fix, viaparinfo);
	viafbinfo->var = default_var;

@@ -1852,15 +1847,9 @@ int __devinit via_fb_pci_probe(struct viafb_dev *vdev)
		default_var.xres_virtual = viafb_second_virtual_xres;
		default_var.yres_virtual = viafb_second_virtual_yres;
		default_var.bits_per_pixel = viafb_bpp1;
		default_var.pixclock =
		    viafb_get_pixclock(viafb_second_xres, viafb_second_yres,
		    viafb_refresh1);
		default_var.left_margin = (viafb_second_xres >> 3) & 0xf8;
		default_var.right_margin = 32;
		default_var.upper_margin = 16;
		default_var.lower_margin = 4;
		default_var.hsync_len = default_var.left_margin;
		default_var.vsync_len = 4;
		viafb_fill_var_timing_info(&default_var, viafb_get_refresh(
			default_var.xres, default_var.yres, viafb_refresh1),
			viafb_get_mode(default_var.xres, default_var.yres));

		viafb_setup_fixinfo(&viafbinfo1->fix, viaparinfo1);
		viafb_check_var(&default_var, viafbinfo1);
@@ -2015,15 +2004,17 @@ static int __init viafb_setup(char *options)
 */
int __init viafb_init(void)
{
	u32 dummy;
	u32 dummy_x, dummy_y;
#ifndef MODULE
	char *option = NULL;
	if (fb_get_options("viafb", &option))
		return -ENODEV;
	viafb_setup(option);
#endif
	if (parse_mode(viafb_mode, &dummy, &dummy)
		|| parse_mode(viafb_mode1, &dummy, &dummy)
	if (parse_mode(viafb_mode, &dummy_x, &dummy_y)
		|| !viafb_get_mode(dummy_x, dummy_y)
		|| parse_mode(viafb_mode1, &dummy_x, &dummy_y)
		|| !viafb_get_mode(dummy_x, dummy_y)
		|| viafb_bpp < 0 || viafb_bpp > 32
		|| viafb_bpp1 < 0 || viafb_bpp1 > 32
		|| parse_active_dev())