diff options
Diffstat (limited to 'drivers/video/console/fbcon.h')
-rw-r--r-- | drivers/video/console/fbcon.h | 62 |
1 files changed, 58 insertions, 4 deletions
diff --git a/drivers/video/console/fbcon.h b/drivers/video/console/fbcon.h index b68e0e2c2d16..accfd7bd8e93 100644 --- a/drivers/video/console/fbcon.h +++ b/drivers/video/console/fbcon.h | |||
@@ -27,15 +27,15 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | struct display { | 29 | struct display { |
30 | /* Filled in by the frame buffer device */ | ||
31 | u_short inverse; /* != 0 text black on white as default */ | ||
32 | /* Filled in by the low-level console driver */ | 30 | /* Filled in by the low-level console driver */ |
33 | const u_char *fontdata; | 31 | const u_char *fontdata; |
34 | int userfont; /* != 0 if fontdata kmalloc()ed */ | 32 | int userfont; /* != 0 if fontdata kmalloc()ed */ |
35 | u_short scrollmode; /* Scroll Method */ | 33 | u_short scrollmode; /* Scroll Method */ |
34 | u_short inverse; /* != 0 text black on white as default */ | ||
36 | short yscroll; /* Hardware scrolling */ | 35 | short yscroll; /* Hardware scrolling */ |
37 | int vrows; /* number of virtual rows */ | 36 | int vrows; /* number of virtual rows */ |
38 | int cursor_shape; | 37 | int cursor_shape; |
38 | int con_rotate; | ||
39 | u32 xres_virtual; | 39 | u32 xres_virtual; |
40 | u32 yres_virtual; | 40 | u32 yres_virtual; |
41 | u32 height; | 41 | u32 height; |
@@ -52,6 +52,8 @@ struct display { | |||
52 | struct fb_videomode *mode; | 52 | struct fb_videomode *mode; |
53 | }; | 53 | }; |
54 | 54 | ||
55 | extern struct display fb_display[]; | ||
56 | |||
55 | struct fbcon_ops { | 57 | struct fbcon_ops { |
56 | void (*bmove)(struct vc_data *vc, struct fb_info *info, int sy, | 58 | void (*bmove)(struct vc_data *vc, struct fb_info *info, int sy, |
57 | int sx, int dy, int dx, int height, int width); | 59 | int sx, int dy, int dx, int height, int width); |
@@ -63,8 +65,12 @@ struct fbcon_ops { | |||
63 | void (*clear_margins)(struct vc_data *vc, struct fb_info *info, | 65 | void (*clear_margins)(struct vc_data *vc, struct fb_info *info, |
64 | int bottom_only); | 66 | int bottom_only); |
65 | void (*cursor)(struct vc_data *vc, struct fb_info *info, | 67 | void (*cursor)(struct vc_data *vc, struct fb_info *info, |
66 | struct display *p, int mode, int softback_lines, int fg, int bg); | 68 | struct display *p, int mode, int softback_lines, |
67 | 69 | int fg, int bg); | |
70 | int (*update_start)(struct fb_info *info); | ||
71 | int (*rotate_font)(struct fb_info *info, struct vc_data *vc, | ||
72 | struct display *p); | ||
73 | struct fb_var_screeninfo var; /* copy of the current fb_var_screeninfo */ | ||
68 | struct timer_list cursor_timer; /* Cursor timer */ | 74 | struct timer_list cursor_timer; /* Cursor timer */ |
69 | struct fb_cursor cursor_state; | 75 | struct fb_cursor cursor_state; |
70 | int currcon; /* Current VC. */ | 76 | int currcon; /* Current VC. */ |
@@ -73,7 +79,12 @@ struct fbcon_ops { | |||
73 | int blank_state; | 79 | int blank_state; |
74 | int graphics; | 80 | int graphics; |
75 | int flags; | 81 | int flags; |
82 | int rotate; | ||
83 | int cur_rotate; | ||
76 | char *cursor_data; | 84 | char *cursor_data; |
85 | u8 *fontbuffer; | ||
86 | u8 *fontdata; | ||
87 | u32 fd_size; | ||
77 | }; | 88 | }; |
78 | /* | 89 | /* |
79 | * Attribute Decoding | 90 | * Attribute Decoding |
@@ -168,4 +179,47 @@ extern void fbcon_set_tileops(struct vc_data *vc, struct fb_info *info, | |||
168 | #endif | 179 | #endif |
169 | extern void fbcon_set_bitops(struct fbcon_ops *ops); | 180 | extern void fbcon_set_bitops(struct fbcon_ops *ops); |
170 | extern int soft_cursor(struct fb_info *info, struct fb_cursor *cursor); | 181 | extern int soft_cursor(struct fb_info *info, struct fb_cursor *cursor); |
182 | |||
183 | #define FBCON_ATTRIBUTE_UNDERLINE 1 | ||
184 | #define FBCON_ATTRIBUTE_REVERSE 2 | ||
185 | #define FBCON_ATTRIBUTE_BOLD 4 | ||
186 | |||
187 | static inline int real_y(struct display *p, int ypos) | ||
188 | { | ||
189 | int rows = p->vrows; | ||
190 | |||
191 | ypos += p->yscroll; | ||
192 | return ypos < rows ? ypos : ypos - rows; | ||
193 | } | ||
194 | |||
195 | |||
196 | static inline int get_attribute(struct fb_info *info, u16 c) | ||
197 | { | ||
198 | int attribute = 0; | ||
199 | |||
200 | if (fb_get_color_depth(&info->var, &info->fix) == 1) { | ||
201 | if (attr_underline(c)) | ||
202 | attribute |= FBCON_ATTRIBUTE_UNDERLINE; | ||
203 | if (attr_reverse(c)) | ||
204 | attribute |= FBCON_ATTRIBUTE_REVERSE; | ||
205 | if (attr_bold(c)) | ||
206 | attribute |= FBCON_ATTRIBUTE_BOLD; | ||
207 | } | ||
208 | |||
209 | return attribute; | ||
210 | } | ||
211 | |||
212 | #define FBCON_SWAP(i,r,v) ({ \ | ||
213 | typeof(r) _r = (r); \ | ||
214 | typeof(v) _v = (v); \ | ||
215 | (void) (&_r == &_v); \ | ||
216 | (i == FB_ROTATE_UR || i == FB_ROTATE_UD) ? _r : _v; }) | ||
217 | |||
218 | #ifdef CONFIG_FRAMEBUFFER_CONSOLE_ROTATION | ||
219 | extern void fbcon_set_rotate(struct fbcon_ops *ops); | ||
220 | #else | ||
221 | #define fbcon_set_rotate(x) do {} while(0) | ||
222 | #endif /* CONFIG_FRAMEBUFFER_CONSOLE_ROTATION */ | ||
223 | |||
171 | #endif /* _VIDEO_FBCON_H */ | 224 | #endif /* _VIDEO_FBCON_H */ |
225 | |||