logo_height = fb_prepare_logo(info); 
logo_height = fb_prepare_logo(info, ops->rotate); 
static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,			       int cols, int rows, int new_cols, int new_rows){	/* Need to make room for the logo */	int cnt, erase = vc->vc_video_erase_char, step;	unsigned short *save = NULL, *r, *q;	/*	 * remove underline attribute from erase character	 * if black and white framebuffer.	 */	if (fb_get_color_depth(&info->var, &info->fix) == 1)		erase &= ~0x400;	logo_height = fb_prepare_logo(info);	logo_lines = (logo_height + vc->vc_font.height - 1) /		vc->vc_font.height;	q = (unsigned short *) (vc->vc_origin +				vc->vc_size_row * rows);	step = logo_lines * cols;	for (r = q - logo_lines * cols; r < q; r++)		if (scr_readw(r) != vc->vc_video_erase_char)			break;	if (r != q && new_rows >= rows + logo_lines) {		save = kmalloc(logo_lines * new_cols * 2, GFP_KERNEL);		if (save) {			int i = cols < new_cols ? cols : new_cols;			scr_memsetw(save, erase, logo_lines * new_cols * 2);			r = q - step;			for (cnt = 0; cnt < logo_lines; cnt++, r += i)				scr_memcpyw(save + cnt * new_cols, r, 2 * i);			r = q;		}	}	if (r == q) {		/* We can scroll screen down */		r = q - step - cols;		for (cnt = rows - logo_lines; cnt > 0; cnt--) {			scr_memcpyw(r + step, r, vc->vc_size_row);			r -= cols;		}		if (!save) {			vc->vc_y += logo_lines;			vc->vc_pos += logo_lines * vc->vc_size_row;		}	}	scr_memsetw((unsigned short *) vc->vc_origin,		    erase,		    vc->vc_size_row * logo_lines);	if (CON_IS_VISIBLE(vc) && vc->vc_mode == KD_TEXT) {		fbcon_clear_margins(vc, 0);		update_screen(vc);	}	if (save) {		q = (unsigned short *) (vc->vc_origin +					vc->vc_size_row *					rows);		scr_memcpyw(q, save, logo_lines * new_cols * 2);		vc->vc_y += logo_lines;		vc->vc_pos += logo_lines * vc->vc_size_row;		kfree(save);	}	if (logo_lines > vc->vc_bottom) {		logo_shown = FBCON_LOGO_CANSHOW;		printk(KERN_INFO		       "fbcon_init: disable boot-logo (boot-logo bigger than screen).\n");	} else if (logo_shown != FBCON_LOGO_DONTSHOW) {		logo_shown = FBCON_LOGO_DRAW;		vc->vc_top = logo_lines;	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/9c44e5f6c211a9b7313ded897f3135ef7d9ad3e2/fbcon.c/clean/drivers/video/console/fbcon.c