提交 97293de9 编写于 作者: J Jiri Slaby 提交者: Greg Kroah-Hartman

tty: vt, consw->con_scrolldelta cleanup

* allow NULL consw->con_scrolldelta (some consoles define an empty
  hook)
* => remove empty hooks now
* return value of consw->con_scrolldelta is never checked => make the
  function void
* document consw->con_scrolldelta a bit
Signed-off-by: NJiri Slaby <jslaby@suse.cz>
Cc: Thomas Winischhofer <thomas@winischhofer.net>
Cc: linux-usb@vger.kernel.org
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
Cc: Helge Deller <deller@gmx.de>
Cc: linux-fbdev@vger.kernel.org
Cc: linux-parisc@vger.kernel.org
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 3cc5be77
...@@ -2468,7 +2468,7 @@ static void console_callback(struct work_struct *ignored) ...@@ -2468,7 +2468,7 @@ static void console_callback(struct work_struct *ignored)
if (scrollback_delta) { if (scrollback_delta) {
struct vc_data *vc = vc_cons[fg_console].d; struct vc_data *vc = vc_cons[fg_console].d;
clear_selection(); clear_selection();
if (vc->vc_mode == KD_TEXT) if (vc->vc_mode == KD_TEXT && vc->vc_sw->con_scrolldelta)
vc->vc_sw->con_scrolldelta(vc, scrollback_delta); vc->vc_sw->con_scrolldelta(vc, scrollback_delta);
scrollback_delta = 0; scrollback_delta = 0;
} }
......
...@@ -717,24 +717,22 @@ sisusbcon_blank(struct vc_data *c, int blank, int mode_switch) ...@@ -717,24 +717,22 @@ sisusbcon_blank(struct vc_data *c, int blank, int mode_switch)
} }
/* interface routine */ /* interface routine */
static int static void
sisusbcon_scrolldelta(struct vc_data *c, int lines) sisusbcon_scrolldelta(struct vc_data *c, int lines)
{ {
struct sisusb_usb_data *sisusb; struct sisusb_usb_data *sisusb;
int margin = c->vc_size_row * 4; int margin = c->vc_size_row * 4;
int ul, we, p, st; int ul, we, p, st;
/* The return value does not seem to be used */
sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num); sisusb = sisusb_get_sisusb_lock_and_check(c->vc_num);
if (!sisusb) if (!sisusb)
return 0; return;
/* sisusb->lock is down */ /* sisusb->lock is down */
if (sisusb_is_inactive(c, sisusb)) { if (sisusb_is_inactive(c, sisusb)) {
mutex_unlock(&sisusb->lock); mutex_unlock(&sisusb->lock);
return 0; return;
} }
if (!lines) /* Turn scrollback off */ if (!lines) /* Turn scrollback off */
...@@ -774,8 +772,6 @@ sisusbcon_scrolldelta(struct vc_data *c, int lines) ...@@ -774,8 +772,6 @@ sisusbcon_scrolldelta(struct vc_data *c, int lines)
sisusbcon_set_start_address(sisusb, c); sisusbcon_set_start_address(sisusb, c);
mutex_unlock(&sisusb->lock); mutex_unlock(&sisusb->lock);
return 1;
} }
/* Interface routine */ /* Interface routine */
...@@ -1433,7 +1429,6 @@ static const struct consw sisusb_dummy_con = { ...@@ -1433,7 +1429,6 @@ static const struct consw sisusb_dummy_con = {
.con_font_default = SISUSBCONDUMMY, .con_font_default = SISUSBCONDUMMY,
.con_font_copy = SISUSBCONDUMMY, .con_font_copy = SISUSBCONDUMMY,
.con_set_palette = SISUSBCONDUMMY, .con_set_palette = SISUSBCONDUMMY,
.con_scrolldelta = SISUSBCONDUMMY,
}; };
int int
......
...@@ -72,6 +72,5 @@ const struct consw dummy_con = { ...@@ -72,6 +72,5 @@ const struct consw dummy_con = {
.con_font_default = DUMMY, .con_font_default = DUMMY,
.con_font_copy = DUMMY, .con_font_copy = DUMMY,
.con_set_palette = DUMMY, .con_set_palette = DUMMY,
.con_scrolldelta = DUMMY,
}; };
EXPORT_SYMBOL_GPL(dummy_con); EXPORT_SYMBOL_GPL(dummy_con);
...@@ -171,7 +171,6 @@ static void fbcon_bmove(struct vc_data *vc, int sy, int sx, int dy, int dx, ...@@ -171,7 +171,6 @@ static void fbcon_bmove(struct vc_data *vc, int sy, int sx, int dy, int dx,
static int fbcon_switch(struct vc_data *vc); static int fbcon_switch(struct vc_data *vc);
static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch); static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch);
static int fbcon_set_palette(struct vc_data *vc, const unsigned char *table); static int fbcon_set_palette(struct vc_data *vc, const unsigned char *table);
static int fbcon_scrolldelta(struct vc_data *vc, int lines);
/* /*
* Internal routines * Internal routines
...@@ -2765,7 +2764,7 @@ static void fbcon_invert_region(struct vc_data *vc, u16 * p, int cnt) ...@@ -2765,7 +2764,7 @@ static void fbcon_invert_region(struct vc_data *vc, u16 * p, int cnt)
} }
} }
static int fbcon_scrolldelta(struct vc_data *vc, int lines) static void fbcon_scrolldelta(struct vc_data *vc, int lines)
{ {
struct fb_info *info = registered_fb[con2fb_map[fg_console]]; struct fb_info *info = registered_fb[con2fb_map[fg_console]];
struct fbcon_ops *ops = info->fbcon_par; struct fbcon_ops *ops = info->fbcon_par;
...@@ -2774,9 +2773,9 @@ static int fbcon_scrolldelta(struct vc_data *vc, int lines) ...@@ -2774,9 +2773,9 @@ static int fbcon_scrolldelta(struct vc_data *vc, int lines)
if (softback_top) { if (softback_top) {
if (vc->vc_num != fg_console) if (vc->vc_num != fg_console)
return 0; return;
if (vc->vc_mode != KD_TEXT || !lines) if (vc->vc_mode != KD_TEXT || !lines)
return 0; return;
if (logo_shown >= 0) { if (logo_shown >= 0) {
struct vc_data *conp2 = vc_cons[logo_shown].d; struct vc_data *conp2 = vc_cons[logo_shown].d;
...@@ -2809,11 +2808,11 @@ static int fbcon_scrolldelta(struct vc_data *vc, int lines) ...@@ -2809,11 +2808,11 @@ static int fbcon_scrolldelta(struct vc_data *vc, int lines)
fbcon_cursor(vc, CM_ERASE | CM_SOFTBACK); fbcon_cursor(vc, CM_ERASE | CM_SOFTBACK);
fbcon_redraw_softback(vc, disp, lines); fbcon_redraw_softback(vc, disp, lines);
fbcon_cursor(vc, CM_DRAW | CM_SOFTBACK); fbcon_cursor(vc, CM_DRAW | CM_SOFTBACK);
return 0; return;
} }
if (!scrollback_phys_max) if (!scrollback_phys_max)
return -ENOSYS; return;
scrollback_old = scrollback_current; scrollback_old = scrollback_current;
scrollback_current -= lines; scrollback_current -= lines;
...@@ -2822,10 +2821,10 @@ static int fbcon_scrolldelta(struct vc_data *vc, int lines) ...@@ -2822,10 +2821,10 @@ static int fbcon_scrolldelta(struct vc_data *vc, int lines)
else if (scrollback_current > scrollback_max) else if (scrollback_current > scrollback_max)
scrollback_current = scrollback_max; scrollback_current = scrollback_max;
if (scrollback_current == scrollback_old) if (scrollback_current == scrollback_old)
return 0; return;
if (fbcon_is_inactive(vc, info)) if (fbcon_is_inactive(vc, info))
return 0; return;
fbcon_cursor(vc, CM_ERASE); fbcon_cursor(vc, CM_ERASE);
...@@ -2852,7 +2851,6 @@ static int fbcon_scrolldelta(struct vc_data *vc, int lines) ...@@ -2852,7 +2851,6 @@ static int fbcon_scrolldelta(struct vc_data *vc, int lines)
if (!scrollback_current) if (!scrollback_current)
fbcon_cursor(vc, CM_DRAW); fbcon_cursor(vc, CM_DRAW);
return 0;
} }
static int fbcon_set_origin(struct vc_data *vc) static int fbcon_set_origin(struct vc_data *vc)
......
...@@ -505,11 +505,6 @@ static int mdacon_blank(struct vc_data *c, int blank, int mode_switch) ...@@ -505,11 +505,6 @@ static int mdacon_blank(struct vc_data *c, int blank, int mode_switch)
} }
} }
static int mdacon_scrolldelta(struct vc_data *c, int lines)
{
return 0;
}
static void mdacon_cursor(struct vc_data *c, int mode) static void mdacon_cursor(struct vc_data *c, int mode)
{ {
if (mode == CM_ERASE) { if (mode == CM_ERASE) {
...@@ -578,7 +573,6 @@ static const struct consw mda_con = { ...@@ -578,7 +573,6 @@ static const struct consw mda_con = {
.con_switch = mdacon_switch, .con_switch = mdacon_switch,
.con_blank = mdacon_blank, .con_blank = mdacon_blank,
.con_set_palette = mdacon_set_palette, .con_set_palette = mdacon_set_palette,
.con_scrolldelta = mdacon_scrolldelta,
.con_build_attr = mdacon_build_attr, .con_build_attr = mdacon_build_attr,
.con_invert_region = mdacon_invert_region, .con_invert_region = mdacon_invert_region,
}; };
......
...@@ -579,12 +579,6 @@ static int newport_set_palette(struct vc_data *vc, const unsigned char *table) ...@@ -579,12 +579,6 @@ static int newport_set_palette(struct vc_data *vc, const unsigned char *table)
return -EINVAL; return -EINVAL;
} }
static int newport_scrolldelta(struct vc_data *vc, int lines)
{
/* there is (nearly) no off-screen memory, so we can't scroll back */
return 0;
}
static int newport_scroll(struct vc_data *vc, int t, int b, int dir, static int newport_scroll(struct vc_data *vc, int t, int b, int dir,
int lines) int lines)
{ {
...@@ -735,7 +729,6 @@ const struct consw newport_con = { ...@@ -735,7 +729,6 @@ const struct consw newport_con = {
.con_font_set = newport_font_set, .con_font_set = newport_font_set,
.con_font_default = newport_font_default, .con_font_default = newport_font_default,
.con_set_palette = newport_set_palette, .con_set_palette = newport_set_palette,
.con_scrolldelta = newport_scrolldelta,
.con_set_origin = DUMMY, .con_set_origin = DUMMY,
.con_save_screen = DUMMY .con_save_screen = DUMMY
}; };
......
...@@ -256,11 +256,6 @@ static int sticon_blank(struct vc_data *c, int blank, int mode_switch) ...@@ -256,11 +256,6 @@ static int sticon_blank(struct vc_data *c, int blank, int mode_switch)
return 1; return 1;
} }
static int sticon_scrolldelta(struct vc_data *conp, int lines)
{
return 0;
}
static u16 *sticon_screen_pos(struct vc_data *conp, int offset) static u16 *sticon_screen_pos(struct vc_data *conp, int offset)
{ {
int line; int line;
...@@ -359,7 +354,6 @@ static const struct consw sti_con = { ...@@ -359,7 +354,6 @@ static const struct consw sti_con = {
.con_switch = sticon_switch, .con_switch = sticon_switch,
.con_blank = sticon_blank, .con_blank = sticon_blank,
.con_set_palette = sticon_set_palette, .con_set_palette = sticon_set_palette,
.con_scrolldelta = sticon_scrolldelta,
.con_set_origin = sticon_set_origin, .con_set_origin = sticon_set_origin,
.con_save_screen = sticon_save_screen, .con_save_screen = sticon_save_screen,
.con_build_attr = sticon_build_attr, .con_build_attr = sticon_build_attr,
......
...@@ -80,7 +80,7 @@ static void vgacon_deinit(struct vc_data *c); ...@@ -80,7 +80,7 @@ static void vgacon_deinit(struct vc_data *c);
static void vgacon_cursor(struct vc_data *c, int mode); static void vgacon_cursor(struct vc_data *c, int mode);
static int vgacon_switch(struct vc_data *c); static int vgacon_switch(struct vc_data *c);
static int vgacon_blank(struct vc_data *c, int blank, int mode_switch); static int vgacon_blank(struct vc_data *c, int blank, int mode_switch);
static int vgacon_scrolldelta(struct vc_data *c, int lines); static void vgacon_scrolldelta(struct vc_data *c, int lines);
static int vgacon_set_origin(struct vc_data *c); static int vgacon_set_origin(struct vc_data *c);
static void vgacon_save_screen(struct vc_data *c); static void vgacon_save_screen(struct vc_data *c);
static int vgacon_scroll(struct vc_data *c, int t, int b, int dir, static int vgacon_scroll(struct vc_data *c, int t, int b, int dir,
...@@ -248,18 +248,18 @@ static void vgacon_restore_screen(struct vc_data *c) ...@@ -248,18 +248,18 @@ static void vgacon_restore_screen(struct vc_data *c)
} }
} }
static int vgacon_scrolldelta(struct vc_data *c, int lines) static void vgacon_scrolldelta(struct vc_data *c, int lines)
{ {
int start, end, count, soff; int start, end, count, soff;
if (!lines) { if (!lines) {
c->vc_visible_origin = c->vc_origin; c->vc_visible_origin = c->vc_origin;
vga_set_mem_top(c); vga_set_mem_top(c);
return 1; return;
} }
if (!vgacon_scrollback) if (!vgacon_scrollback)
return 1; return;
if (!vgacon_scrollback_save) { if (!vgacon_scrollback_save) {
vgacon_cursor(c, CM_ERASE); vgacon_cursor(c, CM_ERASE);
...@@ -320,8 +320,6 @@ static int vgacon_scrolldelta(struct vc_data *c, int lines) ...@@ -320,8 +320,6 @@ static int vgacon_scrolldelta(struct vc_data *c, int lines)
scr_memcpyw(d, s, diff * c->vc_size_row); scr_memcpyw(d, s, diff * c->vc_size_row);
} else } else
vgacon_cursor(c, CM_MOVE); vgacon_cursor(c, CM_MOVE);
return 1;
} }
#else #else
#define vgacon_scrollback_startup(...) do { } while (0) #define vgacon_scrollback_startup(...) do { } while (0)
...@@ -334,7 +332,7 @@ static void vgacon_restore_screen(struct vc_data *c) ...@@ -334,7 +332,7 @@ static void vgacon_restore_screen(struct vc_data *c)
vgacon_scrolldelta(c, 0); vgacon_scrolldelta(c, 0);
} }
static int vgacon_scrolldelta(struct vc_data *c, int lines) static void vgacon_scrolldelta(struct vc_data *c, int lines)
{ {
if (!lines) /* Turn scrollback off */ if (!lines) /* Turn scrollback off */
c->vc_visible_origin = c->vc_origin; c->vc_visible_origin = c->vc_origin;
...@@ -362,7 +360,6 @@ static int vgacon_scrolldelta(struct vc_data *c, int lines) ...@@ -362,7 +360,6 @@ static int vgacon_scrolldelta(struct vc_data *c, int lines)
c->vc_visible_origin = vga_vram_base + (p + ul) % we; c->vc_visible_origin = vga_vram_base + (p + ul) % we;
} }
vga_set_mem_top(c); vga_set_mem_top(c);
return 1;
} }
#endif /* CONFIG_VGACON_SOFT_SCROLLBACK */ #endif /* CONFIG_VGACON_SOFT_SCROLLBACK */
......
...@@ -28,6 +28,12 @@ struct tty_struct; ...@@ -28,6 +28,12 @@ struct tty_struct;
#define VT100ID "\033[?1;2c" #define VT100ID "\033[?1;2c"
#define VT102ID "\033[?6c" #define VT102ID "\033[?6c"
/**
* struct consw - callbacks for consoles
*
* @con_scrolldelta: the contents of the console should be scrolled by @lines.
* Invoked by user. (optional)
*/
struct consw { struct consw {
struct module *owner; struct module *owner;
const char *(*con_startup)(void); const char *(*con_startup)(void);
...@@ -48,7 +54,7 @@ struct consw { ...@@ -48,7 +54,7 @@ struct consw {
int (*con_resize)(struct vc_data *, unsigned int, unsigned int, int (*con_resize)(struct vc_data *, unsigned int, unsigned int,
unsigned int); unsigned int);
int (*con_set_palette)(struct vc_data *, const unsigned char *); int (*con_set_palette)(struct vc_data *, const unsigned char *);
int (*con_scrolldelta)(struct vc_data *, int); void (*con_scrolldelta)(struct vc_data *, int lines);
int (*con_set_origin)(struct vc_data *); int (*con_set_origin)(struct vc_data *);
void (*con_save_screen)(struct vc_data *); void (*con_save_screen)(struct vc_data *);
u8 (*con_build_attr)(struct vc_data *, u8, u8, u8, u8, u8, u8); u8 (*con_build_attr)(struct vc_data *, u8, u8, u8, u8, u8, u8);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册