diff -urN linux-2.4.24.org/drivers/char/console.c linux-2.4.24/drivers/char/console.c --- linux-2.4.24.org/drivers/char/console.c 2004-01-19 21:00:14.495123806 +0100 +++ linux-2.4.24/drivers/char/console.c 2004-01-19 21:03:48.017721428 +0100 @@ -3025,6 +3025,31 @@ return 0; } +#ifdef CONFIG_FBCON_SPLASHSCREEN +void con_remap_def_color(int currcons, int new_color) +{ + unsigned short *sbuf = screenbuf; + unsigned c, len = screenbuf_size >> 1; + int old_color; + + if (sbuf) { + old_color = def_color << 8; + new_color <<= 8; + while(len--) { + c = *sbuf; + if (((c ^ old_color) & 0xf000) == 0) + *sbuf ^= (old_color ^ new_color) & 0xf000; + if (((c ^ old_color) & 0x0f00) == 0) + *sbuf ^= (old_color ^ new_color) & 0x0f00; + sbuf++; + } + new_color >>= 8; + } + def_color = color = new_color; + update_attr(currcons); +} +#endif + /* * Visible symbols for modules */ diff -urN linux-2.4.24.org/drivers/char/keyboard.c linux-2.4.24/drivers/char/keyboard.c --- linux-2.4.24.org/drivers/char/keyboard.c 2004-01-19 21:00:14.168191795 +0100 +++ linux-2.4.24/drivers/char/keyboard.c 2004-01-19 21:03:48.066711241 +0100 @@ -263,6 +263,15 @@ } else rep = test_and_set_bit(keycode, key_down); +#ifdef CONFIG_FBCON_SPLASHSCREEN + /* This code has to be redone for some non-x86 platforms */ + if (keycode == 0x3c || keycode == 0x01) { /* F2 and ESC on a PC keyboard */ + extern int splash_verbose(void); + if (splash_verbose()) + goto out; + } +#endif + #ifdef CONFIG_MAGIC_SYSRQ /* Handle the SysRq Hack */ if (keycode == SYSRQ_KEY) { sysrq_pressed = !up_flag; --- linux-2.4.29/drivers/char/n_tty.c.orig 2005-01-20 16:15:28.000000000 +0100 +++ linux-2.4.29/drivers/char/n_tty.c 2005-01-20 16:18:59.000000000 +0100 @@ -47,6 +47,7 @@ #include #include #include +#include #include #include @@ -1186,6 +1187,16 @@ return -EIO; } +#ifdef CONFIG_FBCON_SPLASHSCREEN + if (file->f_dentry->d_inode->i_rdev == CONSOLE_DEV || + file->f_dentry->d_inode->i_rdev == SYSCONS_DEV || + file->f_dentry->d_inode->i_rdev == MKDEV(TTYAUX_MAJOR,0) || + file->f_dentry->d_inode->i_rdev == MKDEV(TTY_MAJOR,1)) { + extern int splash_verbose(void); + (void)splash_verbose(); + } +#endif + c = job_control(tty, file); if(c < 0) return c; diff -urN linux-2.4.24.org/drivers/video/Config.in linux-2.4.24/drivers/video/Config.in --- linux-2.4.24.org/drivers/video/Config.in 2004-01-19 21:01:12.428076192 +0100 +++ linux-2.4.24/drivers/video/Config.in 2004-01-19 21:05:33.568745824 +0100 @@ -243,13 +243,20 @@ tristate ' Virtual Frame Buffer support (ONLY FOR TESTING!) (EXPERIMENTAL)' CONFIG_FB_VIRTUAL fi + dep_bool ' Use splash screen instead of boot logo' CONFIG_FBCON_SPLASHSCREEN $CONFIG_BLK_DEV_INITRD + if [ "$CONFIG_FBCON_SPLASHSCREEN" = "y" ]; then + define_bool CONFIG_FBCON_CFB16 y + fi + bool ' Advanced low level driver options' CONFIG_FBCON_ADVANCED if [ "$CONFIG_FBCON_ADVANCED" = "y" ]; then tristate ' Monochrome support' CONFIG_FBCON_MFB tristate ' 2 bpp packed pixels support' CONFIG_FBCON_CFB2 tristate ' 4 bpp packed pixels support' CONFIG_FBCON_CFB4 tristate ' 8 bpp packed pixels support' CONFIG_FBCON_CFB8 - tristate ' 16 bpp packed pixels support' CONFIG_FBCON_CFB16 + if [ "$CONFIG_FBCON_SPLASHSCREEN" != "y" ]; then + tristate ' 16 bpp packed pixels support' CONFIG_FBCON_CFB16 + fi tristate ' 24 bpp packed pixels support' CONFIG_FBCON_CFB24 tristate ' 32 bpp packed pixels support' CONFIG_FBCON_CFB32 tristate ' Amiga bitplanes support' CONFIG_FBCON_AFB @@ -361,7 +368,9 @@ "$CONFIG_FB_PVR2" = "y" -o "$CONFIG_FB_VOODOO1" = "y" -o \ "$CONFIG_FB_NEOMAGIC" = "y" -o "$CONFIG_FB_INTEL" = "y" -o \ "$CONFIG_FB_I810" = "y" ]; then - define_tristate CONFIG_FBCON_CFB16 y + if [ "$CONFIG_FBCON_CFB16" != "m" ]; then + define_tristate CONFIG_FBCON_CFB16 y + fi else if [ "$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_ATY" = "m" -o \ "$CONFIG_FB_MAC" = "m" -o "$CONFIG_FB_VESA" = "m" -o \ @@ -380,7 +389,9 @@ "$CONFIG_FB_PVR2" = "m" -o "$CONFIG_FB_VOODOO1" = "m" -o \ "$CONFIG_FB_NEOMAGIC" = "m" -o "$CONFIG_FB_INTEL" = "m" -o \ "$CONFIG_FB_I810" = "m" ]; then - define_tristate CONFIG_FBCON_CFB16 m + if [ "$CONFIG_FBCON_CFB16" != "y" ]; then + define_tristate CONFIG_FBCON_CFB16 m + fi fi fi if [ "$CONFIG_FB_ATY" = "y" -o "$CONFIG_FB_VIRTUAL" = "y" -o \ diff -urN linux-2.4.24.org/drivers/video/fbcon.c linux-2.4.24/drivers/video/fbcon.c --- linux-2.4.24.org/drivers/video/fbcon.c 2004-01-19 21:01:12.383085548 +0100 +++ linux-2.4.24/drivers/video/fbcon.c 2004-01-19 21:03:48.196684214 +0100 @@ -76,6 +76,7 @@ #include #include #include +#include #include #include @@ -104,6 +105,23 @@ #include