info->var.xoffset = 0; info->var.yoffset = offset * vc->vc_font.height; update_var(vc->vc_num, info);
ops->var.xoffset = 0; ops->var.yoffset = offset * vc->vc_font.height; ops->update_start(info);
static int fbcon_scrolldelta(struct vc_data *vc, int lines){	struct fb_info *info = registered_fb[con2fb_map[fg_console]];	struct display *p = &fb_display[fg_console];	int offset, limit, scrollback_old;	if (softback_top) {		if (vc->vc_num != fg_console)			return 0;		if (vc->vc_mode != KD_TEXT || !lines)			return 0;		if (logo_shown >= 0) {			struct vc_data *conp2 = vc_cons[logo_shown].d;			if (conp2->vc_top == logo_lines			    && conp2->vc_bottom == conp2->vc_rows)				conp2->vc_top = 0;			if (logo_shown == vc->vc_num) {				unsigned long p, q;				int i;				p = softback_in;				q = vc->vc_origin +				    logo_lines * vc->vc_size_row;				for (i = 0; i < logo_lines; i++) {					if (p == softback_top)						break;					if (p == softback_buf)						p = softback_end;					p -= vc->vc_size_row;					q -= vc->vc_size_row;					scr_memcpyw((u16 *) q, (u16 *) p,						    vc->vc_size_row);				}				softback_in = p;				update_region(vc, vc->vc_origin,					      logo_lines * vc->vc_cols);			}			logo_shown = FBCON_LOGO_CANSHOW;		}		fbcon_cursor(vc, CM_ERASE | CM_SOFTBACK);		fbcon_redraw_softback(vc, p, lines);		fbcon_cursor(vc, CM_DRAW | CM_SOFTBACK);		return 0;	}	if (!scrollback_phys_max)		return -ENOSYS;	scrollback_old = scrollback_current;	scrollback_current -= lines;	if (scrollback_current < 0)		scrollback_current = 0;	else if (scrollback_current > scrollback_max)		scrollback_current = scrollback_max;	if (scrollback_current == scrollback_old)		return 0;	if (fbcon_is_inactive(vc, info))		return 0;	fbcon_cursor(vc, CM_ERASE);	offset = p->yscroll - scrollback_current;	limit = p->vrows;	switch (p->scrollmode) {	case SCROLL_WRAP_MOVE:		info->var.vmode |= FB_VMODE_YWRAP;		break;	case SCROLL_PAN_MOVE:	case SCROLL_PAN_REDRAW:		limit -= vc->vc_rows;		info->var.vmode &= ~FB_VMODE_YWRAP;		break;	}	if (offset < 0)		offset += limit;	else if (offset >= limit)		offset -= limit;	info->var.xoffset = 0;	info->var.yoffset = offset * vc->vc_font.height;	update_var(vc->vc_num, info);	if (!scrollback_current)		fbcon_cursor(vc, CM_DRAW);	return 0;}