diff options
-rw-r--r-- | drivers/char/vt.c | 7 | ||||
-rw-r--r-- | drivers/video/console/fbcon.c | 8 | ||||
-rw-r--r-- | drivers/video/console/mdacon.c | 2 | ||||
-rw-r--r-- | drivers/video/console/sticon.c | 4 | ||||
-rw-r--r-- | drivers/video/console/vgacon.c | 4 | ||||
-rw-r--r-- | include/linux/console_struct.h | 1 |
6 files changed, 14 insertions, 12 deletions
diff --git a/drivers/char/vt.c b/drivers/char/vt.c index df4c3ead9e2b..1c2660477135 100644 --- a/drivers/char/vt.c +++ b/drivers/char/vt.c | |||
@@ -301,7 +301,7 @@ static void scrup(struct vc_data *vc, unsigned int t, unsigned int b, int nr) | |||
301 | d = (unsigned short *)(vc->vc_origin + vc->vc_size_row * t); | 301 | d = (unsigned short *)(vc->vc_origin + vc->vc_size_row * t); |
302 | s = (unsigned short *)(vc->vc_origin + vc->vc_size_row * (t + nr)); | 302 | s = (unsigned short *)(vc->vc_origin + vc->vc_size_row * (t + nr)); |
303 | scr_memmovew(d, s, (b - t - nr) * vc->vc_size_row); | 303 | scr_memmovew(d, s, (b - t - nr) * vc->vc_size_row); |
304 | scr_memsetw(d + (b - t - nr) * vc->vc_cols, vc->vc_video_erase_char, | 304 | scr_memsetw(d + (b - t - nr) * vc->vc_cols, vc->vc_scrl_erase_char, |
305 | vc->vc_size_row * nr); | 305 | vc->vc_size_row * nr); |
306 | } | 306 | } |
307 | 307 | ||
@@ -319,7 +319,7 @@ static void scrdown(struct vc_data *vc, unsigned int t, unsigned int b, int nr) | |||
319 | s = (unsigned short *)(vc->vc_origin + vc->vc_size_row * t); | 319 | s = (unsigned short *)(vc->vc_origin + vc->vc_size_row * t); |
320 | step = vc->vc_cols * nr; | 320 | step = vc->vc_cols * nr; |
321 | scr_memmovew(s + step, s, (b - t - nr) * vc->vc_size_row); | 321 | scr_memmovew(s + step, s, (b - t - nr) * vc->vc_size_row); |
322 | scr_memsetw(s, vc->vc_video_erase_char, 2 * step); | 322 | scr_memsetw(s, vc->vc_scrl_erase_char, 2 * step); |
323 | } | 323 | } |
324 | 324 | ||
325 | static void do_update_region(struct vc_data *vc, unsigned long start, int count) | 325 | static void do_update_region(struct vc_data *vc, unsigned long start, int count) |
@@ -400,7 +400,7 @@ static u8 build_attr(struct vc_data *vc, u8 _color, u8 _intensity, u8 _blink, | |||
400 | * Bit 7 : blink | 400 | * Bit 7 : blink |
401 | */ | 401 | */ |
402 | { | 402 | { |
403 | u8 a = vc->vc_color; | 403 | u8 a = _color; |
404 | if (!vc->vc_can_do_color) | 404 | if (!vc->vc_can_do_color) |
405 | return _intensity | | 405 | return _intensity | |
406 | (_italic ? 2 : 0) | | 406 | (_italic ? 2 : 0) | |
@@ -434,6 +434,7 @@ static void update_attr(struct vc_data *vc) | |||
434 | vc->vc_blink, vc->vc_underline, | 434 | vc->vc_blink, vc->vc_underline, |
435 | vc->vc_reverse ^ vc->vc_decscnm, vc->vc_italic); | 435 | vc->vc_reverse ^ vc->vc_decscnm, vc->vc_italic); |
436 | vc->vc_video_erase_char = (build_attr(vc, vc->vc_color, 1, vc->vc_blink, 0, vc->vc_decscnm, 0) << 8) | ' '; | 436 | vc->vc_video_erase_char = (build_attr(vc, vc->vc_color, 1, vc->vc_blink, 0, vc->vc_decscnm, 0) << 8) | ' '; |
437 | vc->vc_scrl_erase_char = (build_attr(vc, vc->vc_def_color, 1, false, false, false, false) << 8) | ' '; | ||
437 | } | 438 | } |
438 | 439 | ||
439 | /* Note: inverting the screen twice should revert to the original state */ | 440 | /* Note: inverting the screen twice should revert to the original state */ |
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index 8eda7b60df8f..ad31983b43eb 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c | |||
@@ -1881,7 +1881,7 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir, | |||
1881 | scr_memsetw((unsigned short *) (vc->vc_origin + | 1881 | scr_memsetw((unsigned short *) (vc->vc_origin + |
1882 | vc->vc_size_row * | 1882 | vc->vc_size_row * |
1883 | (b - count)), | 1883 | (b - count)), |
1884 | vc->vc_video_erase_char, | 1884 | vc->vc_scrl_erase_char, |
1885 | vc->vc_size_row * count); | 1885 | vc->vc_size_row * count); |
1886 | return 1; | 1886 | return 1; |
1887 | break; | 1887 | break; |
@@ -1953,7 +1953,7 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir, | |||
1953 | scr_memsetw((unsigned short *) (vc->vc_origin + | 1953 | scr_memsetw((unsigned short *) (vc->vc_origin + |
1954 | vc->vc_size_row * | 1954 | vc->vc_size_row * |
1955 | (b - count)), | 1955 | (b - count)), |
1956 | vc->vc_video_erase_char, | 1956 | vc->vc_scrl_erase_char, |
1957 | vc->vc_size_row * count); | 1957 | vc->vc_size_row * count); |
1958 | return 1; | 1958 | return 1; |
1959 | } | 1959 | } |
@@ -1972,7 +1972,7 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir, | |||
1972 | scr_memsetw((unsigned short *) (vc->vc_origin + | 1972 | scr_memsetw((unsigned short *) (vc->vc_origin + |
1973 | vc->vc_size_row * | 1973 | vc->vc_size_row * |
1974 | t), | 1974 | t), |
1975 | vc->vc_video_erase_char, | 1975 | vc->vc_scrl_erase_char, |
1976 | vc->vc_size_row * count); | 1976 | vc->vc_size_row * count); |
1977 | return 1; | 1977 | return 1; |
1978 | break; | 1978 | break; |
@@ -2042,7 +2042,7 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir, | |||
2042 | scr_memsetw((unsigned short *) (vc->vc_origin + | 2042 | scr_memsetw((unsigned short *) (vc->vc_origin + |
2043 | vc->vc_size_row * | 2043 | vc->vc_size_row * |
2044 | t), | 2044 | t), |
2045 | vc->vc_video_erase_char, | 2045 | vc->vc_scrl_erase_char, |
2046 | vc->vc_size_row * count); | 2046 | vc->vc_size_row * count); |
2047 | return 1; | 2047 | return 1; |
2048 | } | 2048 | } |
diff --git a/drivers/video/console/mdacon.c b/drivers/video/console/mdacon.c index bd8d995fe25d..38a296bbdfc9 100644 --- a/drivers/video/console/mdacon.c +++ b/drivers/video/console/mdacon.c | |||
@@ -531,7 +531,7 @@ static void mdacon_cursor(struct vc_data *c, int mode) | |||
531 | 531 | ||
532 | static int mdacon_scroll(struct vc_data *c, int t, int b, int dir, int lines) | 532 | static int mdacon_scroll(struct vc_data *c, int t, int b, int dir, int lines) |
533 | { | 533 | { |
534 | u16 eattr = mda_convert_attr(c->vc_video_erase_char); | 534 | u16 eattr = mda_convert_attr(c->vc_scrl_erase_char); |
535 | 535 | ||
536 | if (!lines) | 536 | if (!lines) |
537 | return 0; | 537 | return 0; |
diff --git a/drivers/video/console/sticon.c b/drivers/video/console/sticon.c index 67a682d6cc7b..a11cc2fdd4cd 100644 --- a/drivers/video/console/sticon.c +++ b/drivers/video/console/sticon.c | |||
@@ -170,12 +170,12 @@ static int sticon_scroll(struct vc_data *conp, int t, int b, int dir, int count) | |||
170 | switch (dir) { | 170 | switch (dir) { |
171 | case SM_UP: | 171 | case SM_UP: |
172 | sti_bmove(sti, t + count, 0, t, 0, b - t - count, conp->vc_cols); | 172 | sti_bmove(sti, t + count, 0, t, 0, b - t - count, conp->vc_cols); |
173 | sti_clear(sti, b - count, 0, count, conp->vc_cols, conp->vc_video_erase_char); | 173 | sti_clear(sti, b - count, 0, count, conp->vc_cols, conp->vc_scrl_erase_char); |
174 | break; | 174 | break; |
175 | 175 | ||
176 | case SM_DOWN: | 176 | case SM_DOWN: |
177 | sti_bmove(sti, t, 0, t + count, 0, b - t - count, conp->vc_cols); | 177 | sti_bmove(sti, t, 0, t + count, 0, b - t - count, conp->vc_cols); |
178 | sti_clear(sti, t, 0, count, conp->vc_cols, conp->vc_video_erase_char); | 178 | sti_clear(sti, t, 0, count, conp->vc_cols, conp->vc_scrl_erase_char); |
179 | break; | 179 | break; |
180 | } | 180 | } |
181 | 181 | ||
diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c index 6df29a62d720..bd1f57b259d9 100644 --- a/drivers/video/console/vgacon.c +++ b/drivers/video/console/vgacon.c | |||
@@ -1350,7 +1350,7 @@ static int vgacon_scroll(struct vc_data *c, int t, int b, int dir, | |||
1350 | } else | 1350 | } else |
1351 | c->vc_origin += delta; | 1351 | c->vc_origin += delta; |
1352 | scr_memsetw((u16 *) (c->vc_origin + c->vc_screenbuf_size - | 1352 | scr_memsetw((u16 *) (c->vc_origin + c->vc_screenbuf_size - |
1353 | delta), c->vc_video_erase_char, | 1353 | delta), c->vc_scrl_erase_char, |
1354 | delta); | 1354 | delta); |
1355 | } else { | 1355 | } else { |
1356 | if (oldo - delta < vga_vram_base) { | 1356 | if (oldo - delta < vga_vram_base) { |
@@ -1363,7 +1363,7 @@ static int vgacon_scroll(struct vc_data *c, int t, int b, int dir, | |||
1363 | } else | 1363 | } else |
1364 | c->vc_origin -= delta; | 1364 | c->vc_origin -= delta; |
1365 | c->vc_scr_end = c->vc_origin + c->vc_screenbuf_size; | 1365 | c->vc_scr_end = c->vc_origin + c->vc_screenbuf_size; |
1366 | scr_memsetw((u16 *) (c->vc_origin), c->vc_video_erase_char, | 1366 | scr_memsetw((u16 *) (c->vc_origin), c->vc_scrl_erase_char, |
1367 | delta); | 1367 | delta); |
1368 | } | 1368 | } |
1369 | c->vc_scr_end = c->vc_origin + c->vc_screenbuf_size; | 1369 | c->vc_scr_end = c->vc_origin + c->vc_screenbuf_size; |
diff --git a/include/linux/console_struct.h b/include/linux/console_struct.h index d71f7c0f931b..b03f80a078be 100644 --- a/include/linux/console_struct.h +++ b/include/linux/console_struct.h | |||
@@ -53,6 +53,7 @@ struct vc_data { | |||
53 | unsigned short vc_hi_font_mask; /* [#] Attribute set for upper 256 chars of font or 0 if not supported */ | 53 | unsigned short vc_hi_font_mask; /* [#] Attribute set for upper 256 chars of font or 0 if not supported */ |
54 | struct console_font vc_font; /* Current VC font set */ | 54 | struct console_font vc_font; /* Current VC font set */ |
55 | unsigned short vc_video_erase_char; /* Background erase character */ | 55 | unsigned short vc_video_erase_char; /* Background erase character */ |
56 | unsigned short vc_scrl_erase_char; /* Erase character for scroll */ | ||
56 | /* VT terminal data */ | 57 | /* VT terminal data */ |
57 | unsigned int vc_state; /* Escape sequence parser state */ | 58 | unsigned int vc_state; /* Escape sequence parser state */ |
58 | unsigned int vc_npar,vc_par[NPAR]; /* Parameters of current escape sequence */ | 59 | unsigned int vc_npar,vc_par[NPAR]; /* Parameters of current escape sequence */ |