diff options
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.30/030-dont-override-logo-with-early-printks.patch')
-rw-r--r-- | target/linux/s3c24xx/patches-2.6.30/030-dont-override-logo-with-early-printks.patch | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.30/030-dont-override-logo-with-early-printks.patch b/target/linux/s3c24xx/patches-2.6.30/030-dont-override-logo-with-early-printks.patch new file mode 100644 index 000000000..3aa1a0be5 --- /dev/null +++ b/target/linux/s3c24xx/patches-2.6.30/030-dont-override-logo-with-early-printks.patch @@ -0,0 +1,79 @@ +diff -ruN linux-2.6.29.orig/drivers/video/console/fbcon.c linux-2.6.29/drivers/video/console/fbcon.c +--- linux-2.6.29.orig/drivers/video/console/fbcon.c 2009-05-14 22:21:12.000000000 +0200 ++++ linux-2.6.29/drivers/video/console/fbcon.c 2009-05-15 01:45:36.000000000 +0200 +@@ -562,7 +562,7 @@ + /* Need to make room for the logo */ + struct fbcon_ops *ops = info->fbcon_par; + int cnt, erase = vc->vc_video_erase_char, step; +- unsigned short *save = NULL, *r, *q; ++ unsigned short *r, *q; + int logo_height; + + if (info->flags & FBINFO_MODULE) { +@@ -581,37 +581,18 @@ + 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) { +- int lines; +- if (vc->vc_y + logo_lines >= rows) +- lines = rows - vc->vc_y - 1; +- else +- lines = logo_lines; +- vc->vc_y += lines; +- vc->vc_pos += lines * vc->vc_size_row; +- } +- } ++ r = q - step - cols; ++ for (cnt = rows - logo_lines; cnt > 0; cnt--) { ++ scr_memcpyw(r + step, r, vc->vc_size_row); ++ r -= cols; ++ } ++ int lines; ++ if (vc->vc_y + logo_lines >= rows) ++ lines = rows - vc->vc_y - 1; ++ else ++ lines = logo_lines; ++ vc->vc_y += lines; ++ vc->vc_pos += lines * vc->vc_size_row; + scr_memsetw((unsigned short *) vc->vc_origin, + erase, + vc->vc_size_row * logo_lines); +@@ -621,16 +602,6 @@ + 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 |