aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/console/fbcon.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/console/fbcon.c')
-rw-r--r--drivers/video/console/fbcon.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index 97aff8db10bf..c6299e8a041d 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
@@ -107,9 +107,7 @@ static struct display fb_display[MAX_NR_CONSOLES];
107 107
108static signed char con2fb_map[MAX_NR_CONSOLES]; 108static signed char con2fb_map[MAX_NR_CONSOLES];
109static signed char con2fb_map_boot[MAX_NR_CONSOLES]; 109static signed char con2fb_map_boot[MAX_NR_CONSOLES];
110#ifndef MODULE 110
111static int logo_height;
112#endif
113static int logo_lines; 111static int logo_lines;
114/* logo_shown is an index to vc_cons when >= 0; otherwise follows FBCON_LOGO 112/* logo_shown is an index to vc_cons when >= 0; otherwise follows FBCON_LOGO
115 enums. */ 113 enums. */
@@ -607,6 +605,7 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
607 struct fbcon_ops *ops = info->fbcon_par; 605 struct fbcon_ops *ops = info->fbcon_par;
608 int cnt, erase = vc->vc_video_erase_char, step; 606 int cnt, erase = vc->vc_video_erase_char, step;
609 unsigned short *save = NULL, *r, *q; 607 unsigned short *save = NULL, *r, *q;
608 int logo_height;
610 609
611 if (info->flags & FBINFO_MODULE) { 610 if (info->flags & FBINFO_MODULE) {
612 logo_shown = FBCON_LOGO_DONTSHOW; 611 logo_shown = FBCON_LOGO_DONTSHOW;
@@ -1312,6 +1311,9 @@ static void fbcon_clear(struct vc_data *vc, int sy, int sx, int height,
1312 if (!height || !width) 1311 if (!height || !width)
1313 return; 1312 return;
1314 1313
1314 if (sy < vc->vc_top && vc->vc_top == logo_lines)
1315 vc->vc_top = 0;
1316
1315 /* Split blits that cross physical y_wrap boundary */ 1317 /* Split blits that cross physical y_wrap boundary */
1316 1318
1317 y_break = p->vrows - p->yscroll; 1319 y_break = p->vrows - p->yscroll;
@@ -2516,7 +2518,7 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h,
2516 c = vc->vc_video_erase_char; 2518 c = vc->vc_video_erase_char;
2517 vc->vc_video_erase_char = 2519 vc->vc_video_erase_char =
2518 ((c & 0xfe00) >> 1) | (c & 0xff); 2520 ((c & 0xfe00) >> 1) | (c & 0xff);
2519 c = vc->vc_def_color; 2521 c = vc->vc_scrl_erase_char;
2520 vc->vc_scrl_erase_char = 2522 vc->vc_scrl_erase_char =
2521 ((c & 0xFE00) >> 1) | (c & 0xFF); 2523 ((c & 0xFE00) >> 1) | (c & 0xFF);
2522 vc->vc_attr >>= 1; 2524 vc->vc_attr >>= 1;
@@ -2549,7 +2551,7 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h,
2549 if (vc->vc_can_do_color) { 2551 if (vc->vc_can_do_color) {
2550 vc->vc_video_erase_char = 2552 vc->vc_video_erase_char =
2551 ((c & 0xff00) << 1) | (c & 0xff); 2553 ((c & 0xff00) << 1) | (c & 0xff);
2552 c = vc->vc_def_color; 2554 c = vc->vc_scrl_erase_char;
2553 vc->vc_scrl_erase_char = 2555 vc->vc_scrl_erase_char =
2554 ((c & 0xFF00) << 1) | (c & 0xFF); 2556 ((c & 0xFF00) << 1) | (c & 0xFF);
2555 vc->vc_attr <<= 1; 2557 vc->vc_attr <<= 1;
@@ -3586,7 +3588,8 @@ static int __init fb_console_init(void)
3586 3588
3587 acquire_console_sem(); 3589 acquire_console_sem();
3588 fb_register_client(&fbcon_event_notifier); 3590 fb_register_client(&fbcon_event_notifier);
3589 fbcon_device = device_create(fb_class, NULL, MKDEV(0, 0), "fbcon"); 3591 fbcon_device = device_create_drvdata(fb_class, NULL, MKDEV(0, 0),
3592 NULL, "fbcon");
3590 3593
3591 if (IS_ERR(fbcon_device)) { 3594 if (IS_ERR(fbcon_device)) {
3592 printk(KERN_WARNING "Unable to create device " 3595 printk(KERN_WARNING "Unable to create device "