fbcon: Call set_par per fb_info once during init
Subsystems (2)
PATCH 3/7 fbcon: Call set_par per fb_info once during init
Currently, fbcon will unconditionally do set_par's on all info's mapped to each console. This results in repetetive hardware initialization when one is enough. Fix this by skipping all fbdev's that already underwent initialization.
From: Antonino Daplas <[email protected]>
Signed-off-by Antonino Daplas <[email protected]>
---
fbcon.c | 16 ++++++++++++---- fbcon.h | 3 +++ 2 files changed, 15 insertions(+), 4 deletions(-)
drivers/video/console/fbcon.c +12 -4
@@ -599,9 +599,10 @@ ops->currcon = fg_console; -if (info->fbops->fb_set_par) +if (info->fbops->fb_set_par && !(ops->flags &FBCON_FLAGS_INIT )) info->fbops->fb_set_par (info); + ops->flags |=FBCON_FLAGS_INIT ; ops->graphics =0 ;if (vc)
@@ -900,6 +901,7 @@static void fbcon_init (struct vc_data *vc,int init) {struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; +struct fbcon_ops *ops;struct vc_data **default_mode = vc->vc_display_fg;struct vc_data *svc = *default_mode;struct display *t, *p = &fb_display[vc->vc_num];
@@ -950,6 +952,8 @@ new_cols = info->var.xres / vc->vc_font.width; new_rows = info->var.yres / vc->vc_font.height;vc_resize (vc, new_cols, new_rows); + + ops = info->fbcon_par;/* * We must always set the mode. The mode of the previous console * driver could be in the same resolution but we are using different
@@ -957,10 +961,14 @@* * We need to do it in fbcon_init() to prevent screen corruption. */ -if (CON_IS_VISIBLE (vc) && info->fbops->fb_set_par) - info->fbops->fb_set_par (info); +if (CON_IS_VISIBLE (vc)) { +if (info->fbops->fb_set_par && + !(ops->flags &FBCON_FLAGS_INIT )) + info->fbops->fb_set_par (info); + ops->flags |=FBCON_FLAGS_INIT ; + } - ((struct fbcon_ops *) info->fbcon_par)->graphics =0 ; + ops->graphics =0 ;if ((cap &FBINFO_HWACCEL_COPYAREA ) && !(cap &FBINFO_HWACCEL_DISABLED ))
drivers/video/console/fbcon.h +3 -0
@@ -18,6 +18,8 @@#include <asm/io.h> +#define FBCON_FLAGS_INIT 1 +/* * This is the interface between the low-level console driver and the * low-level frame buffer device
@@ -69,6 +71,7 @@int cursor_reset;int blank_state;int graphics; +int flags;char *cursor_data; };/*
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click