diff -Naur linux-2.6.32.2-orig/drivers/video/via/accel.c linux-2.6.32.2/drivers/video/via/accel.c --- linux-2.6.32.2-orig/drivers/video/via/accel.c 2009-12-31 00:38:03.000000000 +0100 +++ linux-2.6.32.2/drivers/video/via/accel.c 2009-12-31 00:38:23.000000000 +0100 @@ -137,7 +137,7 @@ tmp, dst_pitch); return -EINVAL; } - tmp = (tmp >> 3) | (dst_pitch << (16 - 3)); + tmp = VIA_PITCH_ENABLE | (tmp >> 3) | (dst_pitch << (16 - 3)); writel(tmp, engine + 0x38); if (op == VIA_BITBLT_FILL) @@ -352,6 +352,9 @@ viapar->shared->vq_vram_addr = viapar->fbmem_free; viapar->fbmem_used += VQ_SIZE; + /* Init 2D engine reg to reset 2D engine */ + writel(0x0, engine + VIA_REG_KEYCONTROL); + /* Init AGP and VQ regs */ switch (chip_name) { case UNICHROME_K8M890: diff -Naur linux-2.6.32.2-orig/drivers/video/via/hw.c linux-2.6.32.2/drivers/video/via/hw.c --- linux-2.6.32.2-orig/drivers/video/via/hw.c 2009-12-18 23:27:07.000000000 +0100 +++ linux-2.6.32.2/drivers/video/via/hw.c 2010-01-01 19:04:30.000000000 +0100 @@ -2348,6 +2348,7 @@ } } + viafb_update_fix(viafbinfo); viafb_set_primary_pitch(viafbinfo->fix.line_length); viafb_set_secondary_pitch(viafb_dual_fb ? viafbinfo1->fix.line_length : viafbinfo->fix.line_length); diff -Naur linux-2.6.32.2-orig/drivers/video/via/viafbdev.c linux-2.6.32.2/drivers/video/via/viafbdev.c --- linux-2.6.32.2-orig/drivers/video/via/viafbdev.c 2009-12-18 23:27:07.000000000 +0100 +++ linux-2.6.32.2/drivers/video/via/viafbdev.c 2010-01-01 19:03:21.000000000 +0100 @@ -54,7 +54,7 @@ static struct fb_ops viafb_ops; -static void viafb_update_fix(struct fb_info *info) +void viafb_update_fix(struct fb_info *info) { u32 bpp = info->var.bits_per_pixel; diff -Naur linux-2.6.32.2-orig/drivers/video/via/viafbdev.h linux-2.6.32.2/drivers/video/via/viafbdev.h --- linux-2.6.32.2-orig/drivers/video/via/viafbdev.h 2009-12-18 23:27:07.000000000 +0100 +++ linux-2.6.32.2/drivers/video/via/viafbdev.h 2010-01-01 19:03:42.000000000 +0100 @@ -99,6 +99,7 @@ void viafb_fill_var_timing_info(struct fb_var_screeninfo *var, int refresh, int mode_index); int viafb_get_mode_index(int hres, int vres); +void viafb_update_fix(struct fb_info *info); u8 viafb_gpio_i2c_read_lvds(struct lvds_setting_information *plvds_setting_info, struct lvds_chip_information *plvds_chip_info, u8 index);