SOURCES: kernel-desktop-fbsplash.patch - updated to fbsplash-0.9.2...

sparky sparky at pld-linux.org
Sun Nov 19 00:16:52 CET 2006


Author: sparky                       Date: Sat Nov 18 23:16:52 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- updated to fbsplash-0.9.2-r5-2.6.18-rc4.patch

---- Files affected:
SOURCES:
   kernel-desktop-fbsplash.patch (1.2 -> 1.3) 

---- Diffs:

================================================================
Index: SOURCES/kernel-desktop-fbsplash.patch
diff -u SOURCES/kernel-desktop-fbsplash.patch:1.2 SOURCES/kernel-desktop-fbsplash.patch:1.3
--- SOURCES/kernel-desktop-fbsplash.patch:1.2	Mon May  1 18:13:09 2006
+++ SOURCES/kernel-desktop-fbsplash.patch	Sun Nov 19 00:16:47 2006
@@ -13,7 +13,7 @@
  vesafb.txt
 diff --git a/Documentation/fb/splash.txt b/Documentation/fb/splash.txt
 new file mode 100644
-index 0000000..5e3b009
+index 0000000..6b281c9
 --- /dev/null
 +++ b/Documentation/fb/splash.txt
 @@ -0,0 +1,207 @@
@@ -32,7 +32,7 @@
 + 3) build the kernel helper program
 + 4) build your kernel with the FB_SPLASH option enabled.
 +
-+To get fb splash operational right after fbcon initialization is finished, you
++To get fbsplash operational right after fbcon initialization is finished, you
 +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.
 +
@@ -44,31 +44,31 @@
 +
 +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
++job to be carried out. Important events include console switches and video
 +mode switches (the kernel requests background images and configuration
-+parameters for the current console). The splash helper must be accessible at 
++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 
++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. There's probably no need to 
++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
 +-------------------
 +
-+The splash protocol defines a communication interface between the kernel and 
++The splash protocol defines a communication interface between the kernel and
 +the userspace splash helper.
 +
 +The kernel side is responsible for:
 +
-+ o rendering console text, using an image as a background (instead of a
++ * 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 
++ * accepting commands from the user via ioctls on the fbsplash device,
++ * 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
@@ -92,24 +92,24 @@
 + framebuffer number
 + theme
 +
-+Splash protocol v1 specified an additional 'fbsplash mode' after the 
++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
 +------
-+ The kernel issues this command to request image data. It's up to the userspace
-+ helper to find a background image appropriate for the specified theme and the 
-+ current resolution. The userspace helper should respond by issuing the
-+ FBIOSPLASH_SETPIC ioctl.
++ The kernel issues this command to request image data. It's up to the 
++ userspace  helper to find a background image appropriate for the specified 
++ theme and the current resolution. The userspace helper should respond by 
++ issuing the FBIOSPLASH_SETPIC ioctl.
 +
 +init
 +----
 + The kernel issues this command after the fbsplash device is created and
-+ the fbsplash interface is initialized. Upon receiving 'init', the userspace 
++ 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. 
++ 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,
@@ -117,10 +117,10 @@
 +
 + 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 
++ 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 
++ 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
@@ -138,14 +138,14 @@
 +Userspace -> Kernel
 +-------------------
 +
-+Userspace programs can communicate with fbsplash via ioctls on the fbsplash 
-+device. These ioctls are to be used by both the userspace helper (called 
++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 
++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 
++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
@@ -159,11 +159,11 @@
 +description: loads a background picture for a virtual console
 +argument: struct fb_splash_iowrapper*; data: struct fb_image*
 +notes: 
-+If called for consoles other than the current foreground one, the picture data 
++If called for consoles other than the current foreground one, the picture data
 +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 
++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.
@@ -180,7 +180,7 @@
 +FBIOSPLASH_SETSTATE
 +description: sets the fbsplash state for a virtual console
 +argument: struct fb_splash_iowrapper*; data: unsigned int*
-+	  values: 0 = disabled, 1 = enabled.
++          values: 0 = disabled, 1 = enabled.
 +
 +FBIOSPLASH_GETSTATE
 +description: gets the fbsplash state for a virtual console
@@ -191,7 +191,7 @@
 +
 +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 
++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.
 +
@@ -222,13 +222,13 @@
 +  Ken Wimer <wimer at suse.de>.
 +
 +Fbsplash, splash protocol design, current implementation & docs by:
-+  Michael Januszewski <spock at gentoo.org>
++  Michal Januszewski <spock at gentoo.org>
 +
 diff --git a/drivers/Makefile b/drivers/Makefile
-index 5c69b86..fa098bb 100644
+index fc2d744..7e09d12 100644
 --- a/drivers/Makefile
 +++ b/drivers/Makefile
-@@ -8,6 +8,9 @@
+@@ -8,6 +8,9 @@ #
  obj-$(CONFIG_PCI)		+= pci/
  obj-$(CONFIG_PARISC)		+= parisc/
  obj-$(CONFIG_RAPIDIO)		+= rapidio/
@@ -238,7 +238,7 @@
  obj-y				+= video/
  obj-$(CONFIG_ACPI)		+= acpi/
  # PnP must come after ACPI since it will eventually need to check if acpi
-@@ -15,10 +18,6 @@ obj-$(CONFIG_ACPI)		+= acpi/
+@@ -15,10 +18,6 @@ # was used and do nothing if so
  obj-$(CONFIG_PNP)		+= pnp/
  obj-$(CONFIG_ARM_AMBA)		+= amba/
  
@@ -250,18 +250,10 @@
  
  # i810fb and intelfb depend on char/agp/
 diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
-index f5079c7..f4cb4a7 100644
+index c40b9b8..375597a 100644
 --- a/drivers/video/Kconfig
 +++ b/drivers/video/Kconfig
-@@ -754,7 +754,6 @@ config FB_MATROX
- 	select FB_CFB_FILLRECT
- 	select FB_CFB_COPYAREA
- 	select FB_CFB_IMAGEBLIT
--	select FB_TILEBLITTING
- 	select FB_MACMODES if PPC_PMAC
- 	---help---
- 	  Say Y here if you have a Matrox Millennium, Matrox Millennium II,
-@@ -1458,5 +1457,15 @@ if FB && SYSFS
+@@ -1616,5 +1616,15 @@ if SYSFS
  	source "drivers/video/backlight/Kconfig"
  endif
  
@@ -279,17 +271,17 @@
 +	  If unsure, say N.
 +endmenu
 diff --git a/drivers/video/Makefile b/drivers/video/Makefile
-index aa434e7..8a74fce 100644
+index 481c6c9..ccb5f64 100644
 --- a/drivers/video/Makefile
 +++ b/drivers/video/Makefile
-@@ -7,6 +7,7 @@
+@@ -13,6 +13,7 @@ fb-objs                           := $(f
  obj-$(CONFIG_VT)		  += console/
  obj-$(CONFIG_LOGO)		  += logo/
  obj-$(CONFIG_SYSFS)		  += backlight/
 +obj-$(CONFIG_FB_SPLASH)           += fbsplash.o cfbsplash.o
  
- obj-$(CONFIG_FB)                  += fb.o
- fb-y                              := fbmem.o fbmon.o fbcmap.o fbsysfs.o \
+ obj-$(CONFIG_FB_CFB_FILLRECT)  += cfbfillrect.o
+ obj-$(CONFIG_FB_CFB_COPYAREA)  += cfbcopyarea.o
 diff --git a/drivers/video/cfbsplash.c b/drivers/video/cfbsplash.c
 new file mode 100644
 index 0000000..4adeb2e
@@ -769,10 +761,10 @@
 +}
 +
 diff --git a/drivers/video/console/bitblit.c b/drivers/video/console/bitblit.c
-index eea422e..f7eb288 100644
+index 308850d..36a885c 100644
 --- a/drivers/video/console/bitblit.c
 +++ b/drivers/video/console/bitblit.c
-@@ -18,6 +18,7 @@
+@@ -17,6 +17,7 @@ #include <linux/vt_kern.h>
  #include <linux/console.h>
  #include <asm/types.h>
  #include "fbcon.h"
@@ -780,7 +772,7 @@
  
  /*
   * Accelerated handlers.
-@@ -55,6 +56,13 @@ static void bit_bmove(struct vc_data *vc
+@@ -54,6 +55,13 @@ static void bit_bmove(struct vc_data *vc
  	area.height = height * vc->vc_font.height;
  	area.width = width * vc->vc_font.width;
  
@@ -794,7 +786,7 @@
  	info->fbops->fb_copyarea(info, &area);
  }
  
-@@ -380,11 +388,15 @@ static void bit_cursor(struct vc_data *v
+@@ -379,11 +387,15 @@ static void bit_cursor(struct vc_data *v
  	cursor.image.depth = 1;
  	cursor.rop = ROP_XOR;
  
@@ -815,10 +807,10 @@
  	ops->cursor_reset = 0;
  }
 diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
-index 041d069..945b5b0 100644
+index 390439b..279850b 100644
 --- a/drivers/video/console/fbcon.c
 +++ b/drivers/video/console/fbcon.c
-@@ -93,6 +93,7 @@
+@@ -91,6 +91,7 @@ #include <asm/setup.h>
  #endif
  
  #include "fbcon.h"
@@ -826,7 +818,7 @@
  
  #ifdef FBCONDEBUG
  #  define DPRINTK(fmt, args...) printk(KERN_DEBUG "%s: " fmt, __FUNCTION__ , ## args)
-@@ -108,7 +109,7 @@ enum {
+@@ -106,7 +107,7 @@ enum {
  
  static struct display fb_display[MAX_NR_CONSOLES];
  
@@ -835,7 +827,7 @@
  static signed char con2fb_map_boot[MAX_NR_CONSOLES];
  static int logo_height;
  static int logo_lines;
-@@ -298,7 +299,7 @@ static inline int fbcon_is_inactive(stru
+@@ -300,7 +301,7 @@ static inline int fbcon_is_inactive(stru
  		vc->vc_mode != KD_TEXT || ops->graphics);
  }
  
@@ -844,7 +836,7 @@
  	      u16 c, int is_fg)
  {
  	int depth = fb_get_color_depth(&info->var, &info->fix);
-@@ -404,6 +405,7 @@ static void fb_flashcursor(void *private
+@@ -409,6 +410,7 @@ static void fb_flashcursor(void *private
  		CM_ERASE : CM_DRAW;
  	ops->cursor(vc, info, mode, softback_lines, get_color(vc, info, c, 1),
  		    get_color(vc, info, c, 0));
@@ -852,7 +844,7 @@
  	release_console_sem();
  }
  
-@@ -568,6 +570,8 @@ static int fbcon_takeover(int show_logo)
+@@ -574,6 +576,8 @@ static int fbcon_takeover(int show_logo)
  		info_idx = -1;
  	}
  
@@ -861,7 +853,7 @@
  	return err;
  }
  
-@@ -971,6 +975,12 @@ static const char *fbcon_startup(void)
+@@ -980,6 +984,12 @@ static const char *fbcon_startup(void)
  	rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
  	cols /= vc->vc_font.width;
  	rows /= vc->vc_font.height;
@@ -874,7 +866,7 @@
  	vc_resize(vc, cols, rows);
  
  	DPRINTK("mode:   %s\n", info->fix.id);
-@@ -1053,7 +1063,7 @@ static void fbcon_init(struct vc_data *v
+@@ -1063,7 +1073,7 @@ static void fbcon_init(struct vc_data *v
  	cap = info->flags;
  
  	if (vc != svc || logo_shown == FBCON_LOGO_DONTSHOW ||
@@ -883,7 +875,7 @@
  		logo = 0;
  
  	if (var_to_display(p, &info->var, info))
-@@ -1193,6 +1203,11 @@ static void fbcon_clear(struct vc_data *
+@@ -1257,6 +1267,11 @@ static void fbcon_clear(struct vc_data *
  	if (!height || !width)
  		return;
  
@@ -895,7 +887,7 @@
  	/* Split blits that cross physical y_wrap boundary */
  
  	y_break = p->vrows - p->yscroll;
-@@ -1212,10 +1227,15 @@ static void fbcon_putcs(struct vc_data *
+@@ -1276,10 +1291,15 @@ static void fbcon_putcs(struct vc_data *
  	struct display *p = &fb_display[vc->vc_num];
  	struct fbcon_ops *ops = info->fbcon_par;
  
@@ -915,7 +907,7 @@
  }
  
  static void fbcon_putc(struct vc_data *vc, int c, int ypos, int xpos)
-@@ -1231,8 +1251,13 @@ static void fbcon_clear_margins(struct v
+@@ -1295,8 +1315,13 @@ static void fbcon_clear_margins(struct v
  	struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]];
  	struct fbcon_ops *ops = info->fbcon_par;
  
@@ -931,7 +923,7 @@
  }
  
  static void fbcon_cursor(struct vc_data *vc, int mode)
-@@ -1705,7 +1730,7 @@ static int fbcon_scroll(struct vc_data *
+@@ -1769,7 +1794,7 @@ static int fbcon_scroll(struct vc_data *
  			count = vc->vc_rows;
  		if (softback_top)
  			fbcon_softback_note(vc, t, count);
@@ -940,7 +932,7 @@
  			goto redraw_up;
  		switch (p->scrollmode) {
  		case SCROLL_MOVE:
-@@ -1793,6 +1818,8 @@ static int fbcon_scroll(struct vc_data *
+@@ -1857,6 +1882,8 @@ static int fbcon_scroll(struct vc_data *
  			count = vc->vc_rows;
  		if (logo_shown >= 0)
  			goto redraw_down;
@@ -949,7 +941,7 @@
  		switch (p->scrollmode) {
  		case SCROLL_MOVE:
  			ops->bmove(vc, info, t, 0, t + count, 0,
-@@ -1935,6 +1962,13 @@ static void fbcon_bmove_rec(struct vc_da
+@@ -1999,6 +2026,13 @@ static void fbcon_bmove_rec(struct vc_da
  		}
  		return;
  	}
@@ -963,7 +955,7 @@
  	ops->bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx,
  		   height, width);
  }
-@@ -2005,8 +2039,9 @@ static int fbcon_resize(struct vc_data *
+@@ -2069,8 +2103,9 @@ static int fbcon_resize(struct vc_data *
  	var.yres = virt_h * virt_fh;
  	x_diff = info->var.xres - var.xres;
  	y_diff = info->var.yres - var.yres;
@@ -975,15 +967,14 @@
  		struct fb_videomode *mode;
  
  		DPRINTK("attempting resize %ix%i\n", var.xres, var.yres);
-@@ -2042,7 +2077,26 @@ static int fbcon_switch(struct vc_data *
+@@ -2106,6 +2141,25 @@ static int fbcon_switch(struct vc_data *
  
  	info = registered_fb[con2fb_map[vc->vc_num]];
  	ops = info->fbcon_par;
--
 +	prev_console = ops->currcon;
 +	if (prev_console != -1)
 +		old_info = registered_fb[con2fb_map[prev_console]];
-+	
++
 +	if (fbsplash_active_vc(vc)) {
 +		struct vc_data *vc_curr = vc_cons[prev_console].d;
 +		if (!vc_curr->vc_splash.theme || strcmp(vc->vc_splash.theme, vc_curr->vc_splash.theme)) {
@@ -999,11 +990,10 @@
 +			       0, info->var.yres * info->fix.line_length);
 +		}
 +	}
-+	
+ 
  	if (softback_top) {
  		if (softback_lines)
- 			fbcon_set_origin(vc);
-@@ -2060,9 +2114,6 @@ static int fbcon_switch(struct vc_data *
+@@ -2124,9 +2178,6 @@ static int fbcon_switch(struct vc_data *
  		logo_shown = FBCON_LOGO_CANSHOW;
  	}
  
@@ -1013,19 +1003,19 @@
  	/*
  	 * FIXME: If we have multiple fbdev's loaded, we need to
  	 * update all info->currcon.  Perhaps, we can place this
-@@ -2104,6 +2155,11 @@ static int fbcon_switch(struct vc_data *
- 		}
+@@ -2165,6 +2216,11 @@ static int fbcon_switch(struct vc_data *
+ 		if (old_info != info)
+ 			fbcon_del_cursor_timer(old_info);
  	}
- 
++	
 +	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);
- 	ops->cursor_reset = 1;
  
-@@ -2205,8 +2261,12 @@ static int fbcon_blank(struct vc_data *v
+ 	fbcon_add_cursor_timer(info);
+ 	set_blitting_type(vc, info);
+@@ -2268,8 +2324,12 @@ static int fbcon_blank(struct vc_data *v
  			fbcon_cursor(vc, blank ? CM_ERASE : CM_DRAW);
  			ops->cursor_flash = (!blank);
  
@@ -1040,7 +1030,7 @@
  		}
  
  		if (!blank)
-@@ -2364,13 +2424,22 @@ static int fbcon_do_set_font(struct vc_d
+@@ -2419,13 +2479,22 @@ static int fbcon_do_set_font(struct vc_d
  	}
  
  	if (resize) {
@@ -1063,7 +1053,7 @@
  		if (CON_IS_VISIBLE(vc) && softback_buf)
  			fbcon_update_softback(vc);
  	} else if (CON_IS_VISIBLE(vc)
-@@ -2488,7 +2557,7 @@ static int fbcon_set_palette(struct vc_d
+@@ -2543,7 +2612,7 @@ static int fbcon_set_palette(struct vc_d
  	int i, j, k, depth;
  	u8 val;
  
@@ -1072,7 +1062,7 @@
  		return -EINVAL;
  
  	if (!CON_IS_VISIBLE(vc))
-@@ -2514,7 +2583,49 @@ static int fbcon_set_palette(struct vc_d
+@@ -2569,7 +2638,49 @@ static int fbcon_set_palette(struct vc_d
  	} else
  		fb_copy_cmap(fb_default_cmap(1 << depth), &palette_cmap);
  
@@ -1123,7 +1113,7 @@
  }
  
  static u16 *fbcon_screen_pos(struct vc_data *vc, int offset)
-@@ -2740,7 +2851,14 @@ static void fbcon_modechanged(struct fb_
+@@ -2795,7 +2906,14 @@ static void fbcon_modechanged(struct fb_
  		rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
  		cols /= vc->vc_font.width;
  		rows /= vc->vc_font.height;
@@ -1139,19 +1129,27 @@
  		updatescrollmode(p, info, vc);
  		scrollback_max = 0;
  		scrollback_current = 0;
+@@ -3235,6 +3353,7 @@ #endif
+ 		}
+ 	}
+ 
++	fbsplash_exit();
+ 	fbcon_has_exited = 1;
+ }
+ 
 diff --git a/drivers/video/fbcmap.c b/drivers/video/fbcmap.c
-index c32a2a5..3a227fa 100644
+index e8b135f..8622d74 100644
 --- a/drivers/video/fbcmap.c
 +++ b/drivers/video/fbcmap.c
-@@ -16,6 +16,7 @@
- #include <linux/tty.h>
+@@ -15,6 +15,7 @@ #include <linux/string.h>
+ #include <linux/module.h>
  #include <linux/fb.h>
  #include <linux/slab.h>
 +#include "fbsplash.h"
  
  #include <asm/uaccess.h>
  
-@@ -235,14 +236,17 @@ int fb_set_cmap(struct fb_cmap *cmap, st
+@@ -234,14 +235,17 @@ int fb_set_cmap(struct fb_cmap *cmap, st
  			if (transp)
  				htransp = *transp++;
  			if (info->fbops->fb_setcolreg(start++,
@@ -1172,7 +1170,7 @@
  	return rc;
  }
  
-@@ -250,7 +254,7 @@ int fb_set_user_cmap(struct fb_cmap_user
+@@ -249,7 +253,7 @@ int fb_set_user_cmap(struct fb_cmap_user
  {
  	int rc, size = cmap->len * sizeof(u16);
  	struct fb_cmap umap;
@@ -1183,10 +1181,10 @@
  		return -EINVAL;
 diff --git a/drivers/video/fbsplash.c b/drivers/video/fbsplash.c
 new file mode 100644
-index 0000000..a12d5b8
+index 0000000..e22e544
 --- /dev/null
 +++ b/drivers/video/fbsplash.c
-@@ -0,0 +1,406 @@
+@@ -0,0 +1,425 @@
 +/* 
 + *  linux/drivers/video/fbsplash.c -- Framebuffer splash routines
 + *
@@ -1236,6 +1234,7 @@
 +extern signed char con2fb_map[];
 +static int fbsplash_enable(struct vc_data *vc);
 +char fbsplash_path[KMOD_PATH_LEN] = "/sbin/splash_helper";
++static int initialized = 0;
 +
 +int fbsplash_call_helper(char* cmd, unsigned short vc)
 +{
@@ -1561,12 +1560,12 @@
 +	.fops = &splash_ops
 +};
 +
-+int fbsplash_init(void)
++void fbsplash_reset(void)
 +{
 +	struct fb_info *info;
 +	struct vc_data *vc;
 +	int i;
-+	
++
 +	vc = vc_cons[0].d;
 +	info = registered_fb[0];
 +
@@ -1581,6 +1580,18 @@
 +		vc_cons[i].d->vc_splash.theme = NULL;
 +	}
 +
++	return;
++}
++
++int fbsplash_init(void)
++{
++	int i;
++
++	fbsplash_reset();
++
++	if (initialized)
++		return 0;
++
 +	i = misc_register(&splash_dev);
 +	if (i) {
 +		printk(KERN_ERR "fbsplash: failed to register device\n");
@@ -1588,17 +1599,23 @@
 +	}
 +
 +	fbsplash_call_helper("init", 0);
-+	
++	initialized = 1;
++	return 0;
++}
++
++int fbsplash_exit(void)
++{
++	fbsplash_reset();
 +	return 0;
 +}
 +
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/SOURCES/kernel-desktop-fbsplash.patch?r1=1.2&r2=1.3&f=u



More information about the pld-cvs-commit mailing list