提交 564f1807 编写于 作者: M Mikulas Patocka 提交者: Bartlomiej Zolnierkiewicz

udlfb: don't switch if we are switching to the same videomode

The udlfb driver reprograms the hardware everytime the user switches the
console, that makes quite unusable when working on the console.

This patch makes the driver remember the videomode we are in and avoid
reprogramming the hardware if we switch to the same videomode.

We mask the "activate" field and the "FB_VMODE_SMOOTH_XPAN" flag when
comparing the videomode, because they cause spurious switches when
switching to and from the Xserver.
Signed-off-by: NMikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
上级 4e705e17
......@@ -1041,10 +1041,24 @@ static int dlfb_ops_set_par(struct fb_info *info)
int result;
u16 *pix_framebuffer;
int i;
struct fb_var_screeninfo fvs;
/* clear the activate field because it causes spurious miscompares */
fvs = info->var;
fvs.activate = 0;
fvs.vmode &= ~FB_VMODE_SMOOTH_XPAN;
if (!memcmp(&dlfb->current_mode, &fvs, sizeof(struct fb_var_screeninfo)))
return 0;
result = dlfb_set_video_mode(dlfb, &info->var);
if ((result == 0) && (dlfb->fb_count == 0)) {
if (result)
return result;
dlfb->current_mode = fvs;
if (dlfb->fb_count == 0) {
/* paint greenscreen */
......@@ -1056,7 +1070,7 @@ static int dlfb_ops_set_par(struct fb_info *info)
info->screen_base);
}
return result;
return 0;
}
/* To fonzi the jukebox (e.g. make blanking changes take effect) */
......
......@@ -56,6 +56,7 @@ struct dlfb_data {
atomic_t bytes_identical; /* saved effort with backbuffer comparison */
atomic_t bytes_sent; /* to usb, after compression including overhead */
atomic_t cpu_kcycles_used; /* transpired during pixel processing */
struct fb_var_screeninfo current_mode;
};
#define NR_USB_REQUEST_I2C_SUB_IO 0x02
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册