diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/console/fbcon.c | 27 | ||||
-rw-r--r-- | drivers/video/console/fbcon_rotate.h | 2 |
2 files changed, 11 insertions, 18 deletions
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index 4f6fc785e95f..041d06987861 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c | |||
@@ -687,13 +687,12 @@ static int con2fb_acquire_newinfo(struct vc_data *vc, struct fb_info *info, | |||
687 | err = -ENODEV; | 687 | err = -ENODEV; |
688 | 688 | ||
689 | if (!err) { | 689 | if (!err) { |
690 | ops = kmalloc(sizeof(struct fbcon_ops), GFP_KERNEL); | 690 | ops = kzalloc(sizeof(struct fbcon_ops), GFP_KERNEL); |
691 | if (!ops) | 691 | if (!ops) |
692 | err = -ENOMEM; | 692 | err = -ENOMEM; |
693 | } | 693 | } |
694 | 694 | ||
695 | if (!err) { | 695 | if (!err) { |
696 | memset(ops, 0, sizeof(struct fbcon_ops)); | ||
697 | info->fbcon_par = ops; | 696 | info->fbcon_par = ops; |
698 | set_blitting_type(vc, info); | 697 | set_blitting_type(vc, info); |
699 | } | 698 | } |
@@ -919,13 +918,12 @@ static const char *fbcon_startup(void) | |||
919 | return NULL; | 918 | return NULL; |
920 | } | 919 | } |
921 | 920 | ||
922 | ops = kmalloc(sizeof(struct fbcon_ops), GFP_KERNEL); | 921 | ops = kzalloc(sizeof(struct fbcon_ops), GFP_KERNEL); |
923 | if (!ops) { | 922 | if (!ops) { |
924 | module_put(owner); | 923 | module_put(owner); |
925 | return NULL; | 924 | return NULL; |
926 | } | 925 | } |
927 | 926 | ||
928 | memset(ops, 0, sizeof(struct fbcon_ops)); | ||
929 | ops->currcon = -1; | 927 | ops->currcon = -1; |
930 | ops->graphics = 1; | 928 | ops->graphics = 1; |
931 | ops->cur_rotate = -1; | 929 | ops->cur_rotate = -1; |
@@ -1408,16 +1406,13 @@ static __inline__ void ypan_up_redraw(struct vc_data *vc, int t, int count) | |||
1408 | struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; | 1406 | struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
1409 | struct fbcon_ops *ops = info->fbcon_par; | 1407 | struct fbcon_ops *ops = info->fbcon_par; |
1410 | struct display *p = &fb_display[vc->vc_num]; | 1408 | struct display *p = &fb_display[vc->vc_num]; |
1411 | int redraw = 0; | ||
1412 | 1409 | ||
1413 | p->yscroll += count; | 1410 | p->yscroll += count; |
1411 | |||
1414 | if (p->yscroll > p->vrows - vc->vc_rows) { | 1412 | if (p->yscroll > p->vrows - vc->vc_rows) { |
1415 | p->yscroll -= p->vrows - vc->vc_rows; | 1413 | p->yscroll -= p->vrows - vc->vc_rows; |
1416 | redraw = 1; | ||
1417 | } | ||
1418 | |||
1419 | if (redraw) | ||
1420 | fbcon_redraw_move(vc, p, t + count, vc->vc_rows - count, t); | 1414 | fbcon_redraw_move(vc, p, t + count, vc->vc_rows - count, t); |
1415 | } | ||
1421 | 1416 | ||
1422 | ops->var.xoffset = 0; | 1417 | ops->var.xoffset = 0; |
1423 | ops->var.yoffset = p->yscroll * vc->vc_font.height; | 1418 | ops->var.yoffset = p->yscroll * vc->vc_font.height; |
@@ -1459,16 +1454,13 @@ static __inline__ void ypan_down_redraw(struct vc_data *vc, int t, int count) | |||
1459 | struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; | 1454 | struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
1460 | struct fbcon_ops *ops = info->fbcon_par; | 1455 | struct fbcon_ops *ops = info->fbcon_par; |
1461 | struct display *p = &fb_display[vc->vc_num]; | 1456 | struct display *p = &fb_display[vc->vc_num]; |
1462 | int redraw = 0; | ||
1463 | 1457 | ||
1464 | p->yscroll -= count; | 1458 | p->yscroll -= count; |
1459 | |||
1465 | if (p->yscroll < 0) { | 1460 | if (p->yscroll < 0) { |
1466 | p->yscroll += p->vrows - vc->vc_rows; | 1461 | p->yscroll += p->vrows - vc->vc_rows; |
1467 | redraw = 1; | ||
1468 | } | ||
1469 | |||
1470 | if (redraw) | ||
1471 | fbcon_redraw_move(vc, p, t, vc->vc_rows - count, t + count); | 1462 | fbcon_redraw_move(vc, p, t, vc->vc_rows - count, t + count); |
1463 | } | ||
1472 | 1464 | ||
1473 | ops->var.xoffset = 0; | 1465 | ops->var.xoffset = 0; |
1474 | ops->var.yoffset = p->yscroll * vc->vc_font.height; | 1466 | ops->var.yoffset = p->yscroll * vc->vc_font.height; |
@@ -2105,8 +2097,11 @@ static int fbcon_switch(struct vc_data *vc) | |||
2105 | info->flags & FBINFO_MISC_ALWAYS_SETPAR)) { | 2097 | info->flags & FBINFO_MISC_ALWAYS_SETPAR)) { |
2106 | if (info->fbops->fb_set_par) | 2098 | if (info->fbops->fb_set_par) |
2107 | info->fbops->fb_set_par(info); | 2099 | info->fbops->fb_set_par(info); |
2108 | fbcon_del_cursor_timer(old_info); | 2100 | |
2109 | fbcon_add_cursor_timer(info); | 2101 | if (old_info != info) { |
2102 | fbcon_del_cursor_timer(old_info); | ||
2103 | fbcon_add_cursor_timer(info); | ||
2104 | } | ||
2110 | } | 2105 | } |
2111 | 2106 | ||
2112 | set_blitting_type(vc, info); | 2107 | set_blitting_type(vc, info); |
diff --git a/drivers/video/console/fbcon_rotate.h b/drivers/video/console/fbcon_rotate.h index 1b8f92fdc6a8..75be5ce53dc5 100644 --- a/drivers/video/console/fbcon_rotate.h +++ b/drivers/video/console/fbcon_rotate.h | |||
@@ -11,8 +11,6 @@ | |||
11 | #ifndef _FBCON_ROTATE_H | 11 | #ifndef _FBCON_ROTATE_H |
12 | #define _FBCON_ROTATE_H | 12 | #define _FBCON_ROTATE_H |
13 | 13 | ||
14 | #define FNTCHARCNT(fd) (((int *)(fd))[-3]) | ||
15 | |||
16 | #define GETVYRES(s,i) ({ \ | 14 | #define GETVYRES(s,i) ({ \ |
17 | (s == SCROLL_REDRAW || s == SCROLL_MOVE) ? \ | 15 | (s == SCROLL_REDRAW || s == SCROLL_MOVE) ? \ |
18 | (i)->var.yres : (i)->var.yres_virtual; }) | 16 | (i)->var.yres : (i)->var.yres_virtual; }) |