diff options
Diffstat (limited to 'drivers/video/console/bitblit.c')
-rw-r--r-- | drivers/video/console/bitblit.c | 46 |
1 files changed, 17 insertions, 29 deletions
diff --git a/drivers/video/console/bitblit.c b/drivers/video/console/bitblit.c index 67857b3cfc8b..e65fc3ef7630 100644 --- a/drivers/video/console/bitblit.c +++ b/drivers/video/console/bitblit.c | |||
@@ -22,35 +22,6 @@ | |||
22 | /* | 22 | /* |
23 | * Accelerated handlers. | 23 | * Accelerated handlers. |
24 | */ | 24 | */ |
25 | #define FBCON_ATTRIBUTE_UNDERLINE 1 | ||
26 | #define FBCON_ATTRIBUTE_REVERSE 2 | ||
27 | #define FBCON_ATTRIBUTE_BOLD 4 | ||
28 | |||
29 | static inline int real_y(struct display *p, int ypos) | ||
30 | { | ||
31 | int rows = p->vrows; | ||
32 | |||
33 | ypos += p->yscroll; | ||
34 | return ypos < rows ? ypos : ypos - rows; | ||
35 | } | ||
36 | |||
37 | |||
38 | static inline int get_attribute(struct fb_info *info, u16 c) | ||
39 | { | ||
40 | int attribute = 0; | ||
41 | |||
42 | if (fb_get_color_depth(&info->var, &info->fix) == 1) { | ||
43 | if (attr_underline(c)) | ||
44 | attribute |= FBCON_ATTRIBUTE_UNDERLINE; | ||
45 | if (attr_reverse(c)) | ||
46 | attribute |= FBCON_ATTRIBUTE_REVERSE; | ||
47 | if (attr_bold(c)) | ||
48 | attribute |= FBCON_ATTRIBUTE_BOLD; | ||
49 | } | ||
50 | |||
51 | return attribute; | ||
52 | } | ||
53 | |||
54 | static inline void update_attr(u8 *dst, u8 *src, int attribute, | 25 | static inline void update_attr(u8 *dst, u8 *src, int attribute, |
55 | struct vc_data *vc) | 26 | struct vc_data *vc) |
56 | { | 27 | { |
@@ -418,6 +389,18 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, | |||
418 | ops->cursor_reset = 0; | 389 | ops->cursor_reset = 0; |
419 | } | 390 | } |
420 | 391 | ||
392 | static int bit_update_start(struct fb_info *info) | ||
393 | { | ||
394 | struct fbcon_ops *ops = info->fbcon_par; | ||
395 | int err; | ||
396 | |||
397 | err = fb_pan_display(info, &ops->var); | ||
398 | ops->var.xoffset = info->var.xoffset; | ||
399 | ops->var.yoffset = info->var.yoffset; | ||
400 | ops->var.vmode = info->var.vmode; | ||
401 | return err; | ||
402 | } | ||
403 | |||
421 | void fbcon_set_bitops(struct fbcon_ops *ops) | 404 | void fbcon_set_bitops(struct fbcon_ops *ops) |
422 | { | 405 | { |
423 | ops->bmove = bit_bmove; | 406 | ops->bmove = bit_bmove; |
@@ -425,6 +408,11 @@ void fbcon_set_bitops(struct fbcon_ops *ops) | |||
425 | ops->putcs = bit_putcs; | 408 | ops->putcs = bit_putcs; |
426 | ops->clear_margins = bit_clear_margins; | 409 | ops->clear_margins = bit_clear_margins; |
427 | ops->cursor = bit_cursor; | 410 | ops->cursor = bit_cursor; |
411 | ops->update_start = bit_update_start; | ||
412 | ops->rotate_font = NULL; | ||
413 | |||
414 | if (ops->rotate) | ||
415 | fbcon_set_rotate(ops); | ||
428 | } | 416 | } |
429 | 417 | ||
430 | EXPORT_SYMBOL(fbcon_set_bitops); | 418 | EXPORT_SYMBOL(fbcon_set_bitops); |