diff -Naur linux-2.6.11-gentoo-r2/Documentation/fb/splash.txt linux-2.6.11-gentoo-r2-fbsplash/Documentation/fb/splash.txt --- linux-2.6.11-gentoo-r2/Documentation/fb/splash.txt 2005-03-07 23:10:27.000000000 +0100 +++ linux-2.6.11-gentoo-r2-fbsplash/Documentation/fb/splash.txt 2005-03-07 23:26:08.000000000 +0100 @@ -2,15 +2,14 @@ ----------- The framebuffer splash is a kernel feature that allows displaying a background -picture on selected consoles and switching the first console to the so-called -silent mode, while booting/rebooting/shutting down the system. +picture on selected consoles. What do I need to get it to work? --------------------------------- To get fb splash up-and-running you will have to: - 1) get a copy of splashutils from (FIXME URL) - 2) get some splash themes (FIXME URL) + 1) get a copy of splashutils [1] or a similar program + 2) get some splash themes 3) build the kernel helper program 4) build your kernel with the FB_SPLASH option enabled. @@ -18,34 +17,8 @@ will have to include a theme and the kernel helper into your initramfs image. Please refer to splashutils documentation for instructions on how to do that. -Operation modes ---------------- - -The framebuffer splash can work in two modes: verbose and silent. The first -one means "console with a background image". The latter one is a concept -first introduced in bootsplash. When silent mode is active, the console is -switched to a graphic mode and no text is displayed. It's up to the userspace -programs to display something (a progress bar for example) on the screen. - -Kernel command line parameters ------------------------------- - -Framebuffer splash can be configured from the kernel command line by passing -options in the following way: "splash=option1,option2". - -The following options are recognized: - -off - do not enable fbsplash after fbcon initialization; this is - default behaviour -verbose - switch fbsplash to verbose mode after fbcon is initialized -silent - switch fbsplash to silent mode after fbcon is initialized - -theme: - use theme 'name' on the first console, default theme name - is 'default' (who'd have guessed?) - -Example - you want to get verbose splash with the theme 'tux' right after -fbcon is up: - splash=verbose,theme:tux +[1] The splashutils package can be downloaded from: + http://dev.gentoo.org/~spock/projects/splashutils/ The userspace helper -------------------- @@ -53,17 +26,17 @@ The userspace splash helper (by default: /sbin/splash_helper) is called by the kernel whenever an important event occurs and the kernel needs some kind of job to be carried out. Important events include console switches and graphic -mode switches (the kernel requests background images and config for the current -console). The splash helper must be accessible at all times. If it's not, -fbsplash will be switched off automatically. +mode switches (the kernel requests background images and configuration +parameters for the current console). The splash helper must be accessible at +all times. If it's not, fbsplash will be switched off automatically. It's possible to set path to the splash helper by writing it to /proc/sys/kernel/fbsplash. ***************************************************************************** -The information below is mostly technical stuff. If you don't plan to develop -something fbsplash-related, there's probably no need to read it. +The information below is mostly technical stuff. There's probably no need to +read it unless you plan to develop a userspace helper. The splash protocol ------------------- @@ -76,8 +49,8 @@ o rendering console text, using an image as a background (instead of a standard solid color fbcon uses), o accepting commands from the user via ioctls on the fbsplash device, - o calling the userspace helper to set things up as soon as the fb subsystem is - initialized. + o calling the userspace helper to set things up as soon as the fb subsystem + is initialized. The userspace helper is responsible for everything else, including parsing configuration files, decompressing the image files whenever the kernel needs @@ -90,18 +63,20 @@ ------------------- The kernel communicates with the userspace helper by calling it and specifying -the task that to be done in a series of arguments. +the task to be done in a series of arguments. The arguments follow the pattern: -All commands defined in splash protocol v1 have the following parameters: +All commands defined in splash protocol v2 have the following parameters: virtual console framebuffer number - splash mode - 'v' indicates verbose, 's' indicates silent theme -Splash protocol v1 specifies the following commands: +Splash protocol v1 specified an additional 'fbsplash mode' after the +framebuffer number. Splash protocol v1 is deprecated and should not be used. + +Splash protocol v2 specifies the following commands: getpic ------ @@ -112,17 +87,22 @@ init ---- - The kernel issues this command if either 'verbose' or 'silent' has been - specified in splash= on the kernel command line. Upon receiving this command, - the userspace helper should find a proper configuration file for the - specified theme and the current resolution, and issue the FBIOSPLASH_SETCFG. - FBIOSPLASH_SETPIC and FBIOSPLASH_SETSTATE commands. + The kernel issues this command after the fbsplash device is created and + the fbsplash interface is initialized. Upon receiving 'init', the userspace + helper should parse the kernel command line (/proc/cmdline) or otherwise + decide whether fbsplash is to be activated. + + To activate fbsplash on the first console the helper should issue the + FBIOSPLASH_SETCFG, FBIOSPLASH_SETPIC and FBIOSPLASH_SETSTATE commands, + in the above-mentioned order. When the userspace helper is called in an early phase of the boot process (right after the initialization of fbcon), no filesystems will be mounted. The helper program should mount sysfs and then create the appropriate framebuffer, fbsplash and tty0 devices (if they don't already exist) to get current display settings and to be able to communicate with the kernel side. + It should probably also mount the procfs to be able to parse the kernel + command line parameters. Note that the console sem is not held when the kernel calls splash_helper with the 'init' command. The splash helper should perform all ioctls with @@ -139,23 +119,22 @@ Userspace -> Kernel ------------------- -Userspace programs can communicate with the kernel side via ioctls on the -on the fbsplash device. These ioctls are to be used by both the userspace helper -(called only by the kernel) and userspace configuration tools (run by the users). -The splash helper should set the origin field to FB_SPLASH_IO_ORIG_KERNEL when -doing the appropriate ioctls. All userspace configuration tools should use -FB_SPLASH_IO_ORIG_USER. Failure to set the appropriate value in the origin -field when performing ioctls from the kernel helper may result in a deadlock. - -The framebuffer splash provides the following ioctls (all defined in linux/fb.h): - -FBIOSPLASH_SETMODE -description: sets the global fbsplash mode -argument: unsigned int; values: FB_SPLASH_MODE_VERBOSE, FB_SPLASH_MODE_SILENT - -FBIOSPLASH_GETMODE -description: gets the global fbsplash mode -argument: unsigned int*; values as in FBIOSPLASH_SETMODE +Userspace programs can communicate with fbsplash via ioctls on the fbsplash +device. These ioctls are to be used by both the userspace helper (called +only by the kernel) and userspace configuration tools (run by the users). + +The splash helper should set the origin field to FB_SPLASH_IO_ORIG_KERNEL +when doing the appropriate ioctls. All userspace configuration tools should +use FB_SPLASH_IO_ORIG_USER. Failure to set the appropriate value in the origin +field when performing ioctls from the kernel helper will most likely result +in a console deadlock. + +FB_SPLASH_IO_ORIG_KERNEL instructs fbsplash not to try to acquire the console +semaphore. Not surprisingly, FB_SPLASH_IO_ORIG_USER instructs it to acquire +the console sem. + +The framebuffer splash provides the following ioctls (all defined in +linux/fb.h): FBIOSPLASH_SETPIC description: loads a background picture for a virtual console @@ -165,15 +144,15 @@ will be ignored. If the current virtual console is running in a 8-bpp mode, the cmap substruct -of fb_image has to be filled appropriately: start should be set to 16 (first 16 -colors are reserved for fbcon), len to a value <= 240 and red, green and blue -should point to valid cmap data. The transp field is ingored. The fields dx, dy -bg_color, fg_color in fb_image are ignored as well. +of fb_image has to be filled appropriately: start should be set to 16 (first +16 colors are reserved for fbcon), len to a value <= 240 and red, green and +blue should point to valid cmap data. The transp field is ingored. The fields +dx, dy, bg_color, fg_color in fb_image are ignored as well. FBIOSPLASH_SETCFG description: sets the fbsplash config for a virtual console -argument: struct fb_splash_iowrapper*; data: struct vc_splash*; - the structure has to be filled with valid data. +argument: struct fb_splash_iowrapper*; data: struct vc_splash* +notes: The structure has to be filled with valid data. FBIOSPLASH_GETCFG description: gets the fbsplash config for a virtual console @@ -191,13 +170,13 @@ Info on used structures: -Definition of struct vc_splash can be found in linux/console_splash.h, it's -heavily commented, so no special descriptions are necessary. Note that -the 'theme' field should point to a string no longer than FB_SPLASH_THEME_LEN. -When FBIOSPLASH_GETCFG call is performed, the theme field should point to a -char buffer of length FB_SPLASH_THEME_LEN. +Definition of struct vc_splash can be found in linux/console_splash.h. It's +heavily commented. Note that the 'theme' field should point to a string +no longer than FB_SPLASH_THEME_LEN. When FBIOSPLASH_GETCFG call is +performed, the theme field should point to a char buffer of length +FB_SPLASH_THEME_LEN. -Definition of struct fb_splash_iowrapper can be found in linux/fb.h. +Definition of struct fb_splash_iowrapper can be found in linux/fb.h. The fields in this struct have the following meaning: vc: @@ -211,20 +190,18 @@ data: Pointer to a data structure appropriate for the performed ioctl. Type of -the data struct is specified in the ioctls description, for example 'data: -struct vc_splash*' means that the 'data' field should be a pointer to a -vc_splash struct. +the data struct is specified in the ioctls description. ***************************************************************************** Credit ------ -Original idea & implementation by: +Original 'bootsplash' project & implementation by: Volker Poplawski , Stefan Reinauer , Steffen Winterfeldt , Michael Schroeder , Ken Wimer . -Splash protocol redesign, current implementation, docs by: - Michal Januszewski +Fbsplash, splash protocol design, current implementation & docs by: + Michael Januszewski diff -Naur linux-2.6.11-gentoo-r2/drivers/char/keyboard.c linux-2.6.11-gentoo-r2-fbsplash/drivers/char/keyboard.c --- linux-2.6.11-gentoo-r2/drivers/char/keyboard.c 2005-03-07 23:10:27.000000000 +0100 +++ linux-2.6.11-gentoo-r2-fbsplash/drivers/char/keyboard.c 2005-03-07 23:25:59.000000000 +0100 @@ -40,8 +40,6 @@ #include #include -#include "../video/fbsplash.h" - #include @@ -1079,12 +1077,6 @@ if (keycode < BTN_MISC) printk(KERN_WARNING "keyboard.c: can't emulate rawmode for keycode %d\n", keycode); - /* switch splash to verbose mode if ESC or F2 is pressed */ - if (down == 1 && (keycode == KEY_ESC || keycode == KEY_F2)) { - if (fbsplash_verbose()) - return; - } - #ifdef CONFIG_MAGIC_SYSRQ /* Handle the SysRq Hack */ if (keycode == KEY_SYSRQ && (sysrq_down || (down == 1 && sysrq_alt))) { sysrq_down = down; diff -Naur linux-2.6.11-gentoo-r2/drivers/char/n_tty.c linux-2.6.11-gentoo-r2-fbsplash/drivers/char/n_tty.c --- linux-2.6.11-gentoo-r2/drivers/char/n_tty.c 2005-03-07 23:10:27.000000000 +0100 +++ linux-2.6.11-gentoo-r2-fbsplash/drivers/char/n_tty.c 2005-03-07 23:25:25.000000000 +0100 @@ -49,8 +49,6 @@ #include #include -#include "../video/fbsplash.h" - /* number of characters left in xmit buffer before select has we have room */ #define WAKEUP_CHARS 256 @@ -1179,15 +1177,6 @@ static int job_control(struct tty_struct *tty, struct file *file) { - /* automatically switch splash to verbose mode if someone tries to - read from tty0 */ - if (file->f_dentry->d_inode->i_rdev == MKDEV(TTY_MAJOR,0) || - file->f_dentry->d_inode->i_rdev == MKDEV(TTY_MAJOR,1) || - file->f_dentry->d_inode->i_rdev == MKDEV(TTYAUX_MAJOR,0) || - file->f_dentry->d_inode->i_rdev == MKDEV(TTYAUX_MAJOR,1)) { - fbsplash_verbose(); - } - /* Job control check -- must be done at start and after every sleep (POSIX.1 7.1.1.4). */ /* NOTE: not yet done after every sleep pending a thorough diff -Naur linux-2.6.11-gentoo-r2/drivers/video/console/fbcon.c linux-2.6.11-gentoo-r2-fbsplash/drivers/video/console/fbcon.c --- linux-2.6.11-gentoo-r2/drivers/video/console/fbcon.c 2005-03-07 23:10:27.000000000 +0100 +++ linux-2.6.11-gentoo-r2-fbsplash/drivers/video/console/fbcon.c 2005-03-07 23:26:08.000000000 +0100 @@ -271,7 +271,8 @@ if (!vc || !CON_IS_VISIBLE(vc) || fbcon_is_inactive(vc, info) || - registered_fb[con2fb_map[vc->vc_num]] != info) + registered_fb[con2fb_map[vc->vc_num]] != info || + vc_cons[ops->currcon].d->vc_deccm != 1) return; acquire_console_sem(); p = &fb_display[vc->vc_num]; @@ -1098,8 +1099,6 @@ if (!fbcon_is_inactive(vc, info)) { if (fbsplash_active(info, vc)) { - if (!fbsplash_isverbose) - return; fbsplash_clear_margins(vc, info, bottom_only); } else { ops->clear_margins(vc, info, bottom_only); @@ -1571,7 +1570,7 @@ int scroll_partial = info->flags & FBINFO_PARTIAL_PAN_OK; if (fbcon_is_inactive(vc, info)) - return (fbsplash_issilent) ? 0 : -EINVAL; + return -EINVAL; fbcon_cursor(vc, CM_ERASE); @@ -1999,6 +1998,11 @@ info->flags &= ~FBINFO_MISC_MODESWITCH; } + if (fbsplash_active_nores(info, vc) && !fbsplash_active(info, vc)) { + if (fbsplash_call_helper("modechange", vc->vc_num)) + fbsplash_disable(vc, 0); + } + set_blitting_type(vc, info, p); ((struct fbcon_ops *)info->fbcon_par)->cursor_reset = 1; @@ -2378,9 +2382,9 @@ int i, j, k, depth; u8 val; - if (fbcon_is_inactive(vc, info)) + if (fbcon_is_inactive(vc, info) || vc->vc_num != fg_console) return -EINVAL; - + depth = fb_get_color_depth(info); if (depth > 3) { for (i = j = 0; i < 16; i++) { @@ -2665,7 +2669,7 @@ cols = info->var.xres / vc->vc_font.width; rows = info->var.yres / vc->vc_font.height; - if (!fbsplash_active(info, vc)) { + if (!fbsplash_active_nores(info, vc)) { vc_resize(vc->vc_num, cols, rows); } else { if (fbsplash_call_helper("modechange", vc->vc_num)) diff -Naur linux-2.6.11-gentoo-r2/drivers/video/fbsplash.c linux-2.6.11-gentoo-r2-fbsplash/drivers/video/fbsplash.c --- linux-2.6.11-gentoo-r2/drivers/video/fbsplash.c 2005-03-07 23:10:27.000000000 +0100 +++ linux-2.6.11-gentoo-r2-fbsplash/drivers/video/fbsplash.c 2005-03-07 23:26:08.000000000 +0100 @@ -42,24 +42,11 @@ #include "console/fbcon.h" #include "fbsplash.h" -#define SPLASH_VERSION "0.9" - -#ifdef DEBUG -#define DPRINTK(fmt, args...) printk(KERN_DEBUG "%s: " fmt, __FUNCTION__ , ## args) -#else -#define DPRINTK(fmt, args...) -#endif +#define SPLASH_VERSION "0.9.2" extern signed char con2fb_map[]; - -static void splash_work_verbose(void *data); static int fbsplash_enable(struct vc_data *vc); - -DECLARE_WORK(splash_wq_verbose, splash_work_verbose, NULL); - -int fbsplash_mode = 0; char fbsplash_path[KMOD_PATH_LEN] = "/sbin/splash_helper"; -static char fbsplash_theme[FB_SPLASH_THEME_LEN] = "default"; int fbsplash_call_helper(char* cmd, unsigned short vc) { @@ -75,61 +62,18 @@ char *argv[] = { fbsplash_path, - "1", + "2", cmd, tcons, tfb, - (fbsplash_mode == FB_SPLASH_MODE_SILENT) ? "s" : "v", vc_cons[vc].d->vc_splash.theme, NULL }; snprintf(tfb,5,"%d",fb); snprintf(tcons,5,"%d",vc); - - return call_usermodehelper(fbsplash_path, argv, envp, 1); -} - -int fbsplash_verbose(void) -{ - if (fbsplash_mode == FB_SPLASH_MODE_VERBOSE) - return 0; - - fbsplash_mode = FB_SPLASH_MODE_VERBOSE; - - /* We have to do the switch from a workqueue helper, because chances are this - * function gets called from interrupt context, and we can't get hold of the - * console sem this way. */ - schedule_work(&splash_wq_verbose); - - return 1; -} - -/* Switches the first console to verbose mode. */ -static void splash_work_verbose(void *data) -{ - struct fb_info *info; - struct vc_data *vc; - - vc = vc_cons[0].d; - info = registered_fb[(int) con2fb_map[vc->vc_num]]; - - if (info == NULL) - return; - - printk(KERN_INFO "fbsplash: switching to verbose mode\n"); - vt_cons[0]->vc_mode = KD_TEXT; - - acquire_console_sem(); - do_unblank_screen(0); - - if (info->splash.data) { - fbsplash_enable(vc); - } else { - fbsplash_disable(vc, 1); - } - release_console_sem(); + return call_usermodehelper(fbsplash_path, argv, envp, 1); } /* Disables fbsplash on a virtual console; called with console sem held. */ @@ -170,7 +114,8 @@ info = registered_fb[(int) con2fb_map[vc->vc_num]]; if (vc->vc_splash.twidth == 0 || vc->vc_splash.theight == 0 || - info == NULL || !info->splash.data || vc->vc_splash.state) + info == NULL || vc->vc_splash.state || (!info->splash.data && + vc->vc_num == fg_console)) return -EINVAL; vc->vc_splash.state = 1; @@ -191,42 +136,6 @@ return 0; } -static int __init splash_setup(char *options) -{ - char *this_opt; - - while ((this_opt = strsep(&options, ",")) != NULL) { - - if (!strcmp(this_opt, "silent")) { - fbsplash_mode = FB_SPLASH_MODE_SILENT; - printk(KERN_INFO "fbsplash: silent\n"); - } else if (!strcmp(this_opt, "verbose")) { - fbsplash_mode = FB_SPLASH_MODE_VERBOSE; - printk(KERN_INFO "fbsplash: verbose\n"); - } else if (!strcmp(this_opt, "off")) { - fbsplash_mode = 0; - } else if (!strncmp(this_opt, "theme:", 6)) { - strncpy(fbsplash_theme, this_opt+6, 64); - printk(KERN_INFO "fbsplash: theme %s\n", fbsplash_theme); - } else { - printk(KERN_WARNING "fbsplash: unrecognized option %s\n", this_opt); - } - } - return 0; -} - -__setup("splash=", splash_setup); - -static int splash_get_info(char *buf, char **start, off_t fpos, int length) -{ - char *p = buf; - - p += sprintf(p, "Framebuffer splash v%s, mode: %s\n", SPLASH_VERSION, - ((fbsplash_mode == 2) ? "silent" : (fbsplash_mode == 1) ? "verbose" : "off")); - - return p - buf; -} - static inline int fbsplash_ioctl_dosetstate(struct vc_data *vc, unsigned int __user* state, unsigned char origin) { int tmp, ret; @@ -423,38 +332,20 @@ unsigned char origin = 0; void __user *data = NULL; - if (cmd != FBIOSPLASH_SETMODE && cmd != FBIOSPLASH_GETMODE) - { - if (verify_area(VERIFY_READ, wrapper, - sizeof(struct fb_splash_iowrapper))) - return -EFAULT; + if (verify_area(VERIFY_READ, wrapper, + sizeof(struct fb_splash_iowrapper))) + return -EFAULT; - __get_user(vc_num, &wrapper->vc); - __get_user(origin, &wrapper->origin); - __get_user(data, &wrapper->data); + __get_user(vc_num, &wrapper->vc); + __get_user(origin, &wrapper->origin); + __get_user(data, &wrapper->data); - if (!vc_cons_allocated(vc_num)) - return -EINVAL; + if (!vc_cons_allocated(vc_num)) + return -EINVAL; - vc = vc_cons[vc_num].d; - } + vc = vc_cons[vc_num].d; switch (cmd) { - - case FBIOSPLASH_SETMODE: - if (arg != FB_SPLASH_MODE_SILENT && arg != FB_SPLASH_MODE_VERBOSE) - return -EINVAL; - - if (fbsplash_mode == arg) - return 0; - - fbsplash_mode = arg; - if (arg == FB_SPLASH_MODE_VERBOSE) - splash_work_verbose(NULL); - return 0; - - case FBIOSPLASH_GETMODE: - return put_user(fbsplash_mode, (unsigned int __user *)arg); case FBIOSPLASH_SETPIC: return fbsplash_ioctl_dosetpic(vc, (struct fb_image __user*)data, origin); case FBIOSPLASH_SETCFG: @@ -483,7 +374,6 @@ int fbsplash_init(void) { - struct proc_dir_entry *splash_proc; struct fb_info *info; struct vc_data *vc; int i; @@ -508,26 +398,8 @@ return i; } -#ifdef CONFIG_PROC_FS - splash_proc = create_proc_info_entry("fbsplash", 0, NULL, splash_get_info); - if (splash_proc) - splash_proc->owner = THIS_MODULE; -#endif - - if (fbsplash_mode && info) { - vc->vc_splash.theme = kmalloc((strlen(fbsplash_theme)+1) * sizeof(char), GFP_KERNEL); - if (!vc->vc_splash.theme) { - misc_deregister(&splash_dev); - return -ENOMEM; - } - - strcpy(vc->vc_splash.theme, fbsplash_theme); - if (fbsplash_call_helper("init", 0)) - fbsplash_mode = FB_SPLASH_MODE_VERBOSE; - } else { - fbsplash_mode = FB_SPLASH_MODE_VERBOSE; - } - + fbsplash_call_helper("init", 0); + return 0; } diff -Naur linux-2.6.11-gentoo-r2/drivers/video/fbsplash.h linux-2.6.11-gentoo-r2-fbsplash/drivers/video/fbsplash.h --- linux-2.6.11-gentoo-r2/drivers/video/fbsplash.h 2005-03-07 23:10:27.000000000 +0100 +++ linux-2.6.11-gentoo-r2-fbsplash/drivers/video/fbsplash.h 2005-03-07 23:26:08.000000000 +0100 @@ -22,7 +22,6 @@ #ifdef CONFIG_FB_SPLASH /* fbsplash.c */ int fbsplash_init(void); -int fbsplash_verbose(void); int fbsplash_call_helper(char* cmd, unsigned short cons); int fbsplash_disable(struct vc_data *vc, unsigned char redraw); @@ -41,19 +40,19 @@ void release_console_sem(void); void do_unblank_screen(int entering_gfx); -extern int fbsplash_mode; -#define fbsplash_isverbose (fbsplash_mode == FB_SPLASH_MODE_VERBOSE) -#define fbsplash_issilent (fbsplash_mode == FB_SPLASH_MODE_SILENT) - /* struct vc_data *y */ #define fbsplash_active_vc(y) (y->vc_splash.state && y->vc_splash.theme) /* struct fb_info *x, struct vc_data *y */ -#define fbsplash_active(x,y) (x->splash.data && fbsplash_active_vc(y) && \ - x->splash.width == x->var.xres && \ - x->splash.height == x->var.yres && \ +#define fbsplash_active_nores(x,y) (x->splash.data && fbsplash_active_vc(y)) + +/* struct fb_info *x, struct vc_data *y */ +#define fbsplash_active(x,y) (fbsplash_active_nores(x,y) && \ + x->splash.width == x->var.xres && \ + x->splash.height == x->var.yres && \ x->splash.depth == x->var.bits_per_pixel) + #else /* CONFIG_FB_SPLASH */ static inline void fbsplash_putcs(struct vc_data *vc, struct fb_info *info, const unsigned short *s, int count, int yy, int xx) {} @@ -65,12 +64,10 @@ static inline void fbsplash_bmove_redraw(struct vc_data *vc, struct fb_info *info, int y, int sx, int dx, int width) {} static inline int fbsplash_call_helper(char* cmd, unsigned short cons) { return 0; } static inline int fbsplash_init(void) { return 0; } -static inline int fbsplash_verbose(void) { return 0; } static inline int fbsplash_disable(struct vc_data *vc, unsigned char redraw) { return 0; } -#define fbsplash_issilent (0) -#define fbsplash_isverbose (1) #define fbsplash_active_vc(y) (0) +#define fbsplash_active_nores(x,y) (0) #define fbsplash_active(x,y) (0) #endif /* CONFIG_FB_SPLASH */ diff -Naur linux-2.6.11-gentoo-r2/drivers/video/Kconfig linux-2.6.11-gentoo-r2-fbsplash/drivers/video/Kconfig --- linux-2.6.11-gentoo-r2/drivers/video/Kconfig 2005-03-07 23:10:27.000000000 +0100 +++ linux-2.6.11-gentoo-r2-fbsplash/drivers/video/Kconfig 2005-03-07 23:26:08.000000000 +0100 @@ -1189,8 +1189,8 @@ ---help--- This option enables support for the Linux boot-up splash screen and graphical backgrounds on consoles. Note that you will need userspace - splashutils in order to take advantage of these features. Refer to - Documentation/fb/splash.txt for more information. + splash utilities in order to take advantage of these features. Refer + to Documentation/fb/splash.txt for more information. If unsure, say N. endmenu diff -Naur linux-2.6.11-gentoo-r2/include/linux/fb.h linux-2.6.11-gentoo-r2-fbsplash/include/linux/fb.h --- linux-2.6.11-gentoo-r2/include/linux/fb.h 2005-03-07 23:10:27.000000000 +0100 +++ linux-2.6.11-gentoo-r2-fbsplash/include/linux/fb.h 2005-03-07 23:26:08.000000000 +0100 @@ -46,12 +46,8 @@ #define FBIOSPLASH_GETCFG _IOR('F', 0x1A, struct fb_splash_iowrapper) #define FBIOSPLASH_SETSTATE _IOWR('F', 0x1B, struct fb_splash_iowrapper) #define FBIOSPLASH_GETSTATE _IOR('F', 0x1C, struct fb_splash_iowrapper) -#define FBIOSPLASH_SETMODE _IOWR('F', 0x1D, unsigned int) -#define FBIOSPLASH_GETMODE _IOR('F', 0x1E, unsigned int) -#define FBIOSPLASH_SETPIC _IOWR('F', 0x1F, struct fb_splash_iowrapper) +#define FBIOSPLASH_SETPIC _IOWR('F', 0x1D, struct fb_splash_iowrapper) -#define FB_SPLASH_MODE_VERBOSE 1 /* Verbose mode */ -#define FB_SPLASH_MODE_SILENT 2 /* Silent mode */ #define FB_SPLASH_THEME_LEN 128 /* Maximum lenght of a theme name */ #define FB_SPLASH_IO_ORIG_KERNEL 0 /* Kernel ioctl origin */ #define FB_SPLASH_IO_ORIG_USER 1 /* User ioctl origin */ diff -Naur linux-2.6.11-gentoo-r2/include/linux/sysctl.h linux-2.6.11-gentoo-r2-fbsplash/include/linux/sysctl.h --- linux-2.6.11-gentoo-r2/include/linux/sysctl.h 2005-03-07 23:10:27.000000000 +0100 +++ linux-2.6.11-gentoo-r2-fbsplash/include/linux/sysctl.h 2005-03-07 23:26:41.000000000 +0100 @@ -135,10 +135,10 @@ KERN_HZ_TIMER=65, /* int: hz timer on or off */ KERN_UNKNOWN_NMI_PANIC=66, /* int: unknown nmi panic flag */ KERN_BOOTLOADER_TYPE=67, /* int: boot loader type */ - KERN_FBSPLASH=68, #ifdef CONFIG_ALPHA_UAC_SYSCTL - KERN_UAC_POLICY=69, /* int: Alpha unaligned access control policy flags */ + KERN_UAC_POLICY=68, /* int: Alpha unaligned access control policy flags */ #endif /* CONFIG_ALPHA_UAC_SYSCTL */ + KERN_FBSPLASH=69, /* string: path to fbsplash helper */ }; diff -Naur linux-2.6.11-gentoo-r2/kernel/panic.c linux-2.6.11-gentoo-r2-fbsplash/kernel/panic.c --- linux-2.6.11-gentoo-r2/kernel/panic.c 2005-03-07 23:10:27.000000000 +0100 +++ linux-2.6.11-gentoo-r2-fbsplash/kernel/panic.c 2005-03-07 23:25:26.000000000 +0100 @@ -18,7 +18,6 @@ #include #include #include -#include "../drivers/video/fbsplash.h" int panic_timeout; int panic_on_oops; @@ -88,8 +87,6 @@ * We can't use the "normal" timers since we just panicked.. */ printk(KERN_EMERG "Rebooting in %d seconds..",panic_timeout); - fbsplash_verbose(); - for (i = 0; i < panic_timeout*1000; ) { touch_nmi_watchdog(); i += panic_blink(i); @@ -115,8 +112,6 @@ disabled_wait(caller); #endif local_irq_enable(); - fbsplash_verbose(); - for (i = 0;;) { i += panic_blink(i); mdelay(1); diff -Naur linux-2.6.11-gentoo-r2/kernel/power/console.c linux-2.6.11-gentoo-r2-fbsplash/kernel/power/console.c --- linux-2.6.11-gentoo-r2/kernel/power/console.c 2005-03-07 23:10:27.000000000 +0100 +++ linux-2.6.11-gentoo-r2-fbsplash/kernel/power/console.c 2005-03-07 23:25:26.000000000 +0100 @@ -9,8 +9,6 @@ #include #include "power.h" -#include "../drivers/video/fbsplash.h" - static int new_loglevel = 10; static int orig_loglevel; #ifdef SUSPEND_CONSOLE @@ -23,9 +21,6 @@ console_loglevel = new_loglevel; #ifdef SUSPEND_CONSOLE - if (fbsplash_issilent) - fbsplash_verbose(); - acquire_console_sem(); orig_fgconsole = fg_console;