diff -uNr linux-2.6.3-love3/drivers/video/68328fb.c linux-2.6.3-love3_chris/drivers/video/68328fb.c
--- linux-2.6.3-love3/drivers/video/68328fb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/68328fb.c	2004-02-21 16:21:19.000000000 -0600
@@ -429,7 +429,7 @@
 		fix->visual = FB_VISUAL_DIRECTCOLOR;
 	info->screen_base = (u_char *) mc68328_fix.smem_start;
 	
-	if (register_framebuffer(&fb_info) < 0)
+	if (register_framebuffer(&fb_info, NULL) < 0)
 		panic("Cannot register frame buffer\n");
 	return 0;
 }
diff -uNr linux-2.6.3-love3/drivers/video/aty/aty128fb.c linux-2.6.3-love3_chris/drivers/video/aty/aty128fb.c
--- linux-2.6.3-love3/drivers/video/aty/aty128fb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/aty/aty128fb.c	2004-02-21 16:23:10.000000000 -0600
@@ -1856,7 +1856,7 @@
 
 	aty128_init_engine(par);
 
-	if (register_framebuffer(info) < 0)
+	if (register_framebuffer(info, &pdev->dev) < 0)
 		return 0;
 
 #ifdef CONFIG_PMAC_BACKLIGHT
diff -uNr linux-2.6.3-love3/drivers/video/aty/atyfb_base.c linux-2.6.3-love3_chris/drivers/video/aty/atyfb_base.c
--- linux-2.6.3-love3/drivers/video/aty/atyfb_base.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/aty/atyfb_base.c	2004-02-21 16:24:19.000000000 -0600
@@ -1895,7 +1895,7 @@
 
 	fb_alloc_cmap(&info->cmap, 256, 0);
 
-	if (register_framebuffer(info) < 0)
+	if (register_framebuffer(info, NULL) < 0)
 		return 0;
 
 	fb_list = info;
diff -uNr linux-2.6.3-love3/drivers/video/cirrusfb.c linux-2.6.3-love3_chris/drivers/video/cirrusfb.c
--- linux-2.6.3-love3/drivers/video/cirrusfb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/cirrusfb.c	2004-02-21 16:25:55.000000000 -0600
@@ -2817,7 +2817,7 @@
 	fbgen_set_disp (-1, &fb_info->gen);
 	do_install_cmap (0, &fb_info->gen.info);
 
-	err = register_framebuffer (&fb_info->gen.info);
+	err = register_framebuffer (&fb_info->gen.info, fb_info->pdev);
 	if (err) {
 		printk (KERN_ERR "clgen: ERROR - could not register fb device; err = %d!\n", err);
 		DPRINTK ("EXIT, returning -EINVAL\n");
diff -uNr linux-2.6.3-love3/drivers/video/cyber2000fb.c linux-2.6.3-love3_chris/drivers/video/cyber2000fb.c
--- linux-2.6.3-love3/drivers/video/cyber2000fb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/cyber2000fb.c	2004-02-21 16:27:26.000000000 -0600
@@ -1399,7 +1399,7 @@
 		cfb->fb.var.xres, cfb->fb.var.yres,
 		h_sync / 1000, h_sync % 1000, v_sync);
 
-	err = register_framebuffer(&cfb->fb);
+	err = register_framebuffer(&cfb->fb, &cfb->dev->dev);
 
 failed:
 	return err;
diff -uNr linux-2.6.3-love3/drivers/video/fbmem.c linux-2.6.3-love3_chris/drivers/video/fbmem.c
--- linux-2.6.3-love3/drivers/video/fbmem.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/fbmem.c	2004-02-21 17:10:33.000000000 -0600
@@ -32,7 +32,7 @@
 #include <linux/kmod.h>
 #endif
 #include <linux/devfs_fs_kernel.h>
-
+#include <linux/device.h>
 #if defined(__mc68000__) || defined(CONFIG_APUS)
 #include <asm/setup.h>
 #endif
@@ -1250,6 +1250,83 @@
 #endif
 };
 
+struct fb_dev {
+	struct list_head node;
+	dev_t dev;
+	struct class_device class_dev;
+};
+#define to_fb_dev(d) container_of(d, struct fb_dev, class_dev)
+
+static void release_fb_dev(struct class_device *class_dev)
+{
+	struct fb_dev *fb_dev = to_fb_dev(class_dev);
+	kfree(fb_dev);
+}
+
+static struct class fb_class = {
+	.name		= "video",
+	.release	= &release_fb_dev,
+};
+
+static LIST_HEAD(fb_dev_list);
+static spinlock_t fb_dev_list_lock = SPIN_LOCK_UNLOCKED;
+
+static ssize_t show_dev(struct class_device *class_dev, char *buf)
+{
+	struct fb_dev *fb_dev = to_fb_dev(class_dev);
+	return print_dev_t(buf, fb_dev->dev);
+}
+static CLASS_DEVICE_ATTR(dev, S_IRUGO, show_dev, NULL);
+
+static void fb_add_class_device(int minor, struct device *device)
+{
+	struct fb_dev *fb_dev = NULL;
+	int retval;
+
+	fb_dev = kmalloc(sizeof(*fb_dev), GFP_KERNEL);
+	if (!fb_dev)
+		return;
+	memset(fb_dev, 0x00, sizeof(*fb_dev));
+
+	fb_dev->dev = MKDEV(FB_MAJOR, minor);
+	fb_dev->class_dev.dev = device;
+	fb_dev->class_dev.class = &fb_class;
+	snprintf(fb_dev->class_dev.class_id, BUS_ID_SIZE, "fb%d", minor);
+	retval = class_device_register(&fb_dev->class_dev);
+	if (retval)
+		goto error;
+	class_device_create_file(&fb_dev->class_dev, &class_device_attr_dev);
+	spin_lock(&fb_dev_list_lock);
+	list_add(&fb_dev->node, &fb_dev_list);
+	spin_unlock(&fb_dev_list_lock);
+	return;
+	error:
+	kfree(fb_dev);
+}
+
+void fb_remove_class_device(int minor)
+{
+	struct fb_dev *fb_dev = NULL;
+	struct list_head *tmp;
+	int found = 0;
+
+	spin_lock(&fb_dev_list_lock);
+	list_for_each(tmp, &fb_dev_list) {
+		fb_dev = list_entry(tmp, struct fb_dev, node);
+		if ((MINOR(fb_dev->dev) == minor)) {
+			found = 1;
+			break;
+		}
+	}
+	if (found) {
+		list_del(&fb_dev->node);
+		spin_unlock(&fb_dev_list_lock);
+		class_device_unregister(&fb_dev->class_dev);
+	} else {
+		spin_unlock(&fb_dev_list_lock);
+	}
+}
+
 /**
  *	register_framebuffer - registers a frame buffer device
  *	@fb_info: frame buffer info structure
@@ -1261,7 +1338,7 @@
  */
 
 int
-register_framebuffer(struct fb_info *fb_info)
+register_framebuffer(struct fb_info *fb_info, struct device *dev)
 {
 	int i;
 
@@ -1307,6 +1384,8 @@
 
 	devfs_mk_cdev(MKDEV(FB_MAJOR, i),
 			S_IFCHR | S_IRUGO | S_IWUGO, "fb/%d", i);
+
+	fb_add_class_device(i, dev);
 	return 0;
 }
 
@@ -1337,6 +1416,7 @@
 		kfree(fb_info->sprite.addr);
 	registered_fb[i]=NULL;
 	num_registered_fb--;
+	fb_remove_class_device(i);
 	return 0;
 }
 
@@ -1398,6 +1478,8 @@
 	if (register_chrdev(FB_MAJOR,"fb",&fb_fops))
 		printk("unable to get major %d for fb devs\n", FB_MAJOR);
 
+	class_register(&fb_class);
+
 #ifdef CONFIG_FB_OF
 	if (ofonly) {
 		offb_init();
diff -uNr linux-2.6.3-love3/drivers/video/hgafb.c linux-2.6.3-love3_chris/drivers/video/hgafb.c
--- linux-2.6.3-love3/drivers/video/hgafb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/hgafb.c	2004-02-21 16:39:35.000000000 -0600
@@ -560,7 +560,7 @@
 	fb_info.fbops = &hgafb_ops;
 	fb_info.screen_base = (char *)hga_fix.smem_start;
 
-        if (register_framebuffer(&fb_info) < 0)
+        if (register_framebuffer(&fb_info, NULL) < 0)
                 return -EINVAL;
 
         printk(KERN_INFO "fb%d: %s frame buffer device\n",
diff -uNr linux-2.6.3-love3/drivers/video/hitfb.c linux-2.6.3-love3_chris/drivers/video/hitfb.c
--- linux-2.6.3-love3/drivers/video/hitfb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/hitfb.c	2004-02-21 16:40:17.000000000 -0600
@@ -331,7 +331,7 @@
 	size = (fb_info.var.bits_per_pixel == 8) ? 256 : 16;
 	fb_alloc_cmap(&fb_info.cmap, size, 0); 	
 
-	if (register_framebuffer(&fb_info) < 0)
+	if (register_framebuffer(&fb_info, NULL) < 0)
 		return -EINVAL;
     
 	printk(KERN_INFO "fb%d: %s frame buffer device\n",
diff -uNr linux-2.6.3-love3/drivers/video/hpfb.c linux-2.6.3-love3_chris/drivers/video/hpfb.c
--- linux-2.6.3-love3/drivers/video/hpfb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/hpfb.c	2004-02-21 16:40:53.000000000 -0600
@@ -158,7 +158,7 @@
 
 	fb_alloc_cmap(&fb_info.cmap, 256, 0);
 
-	if (register_framebuffer(&fb_info) < 0)
+	if (register_framebuffer(&fb_info, NULL) < 0)
 		return 1;
 	return 0;
 }
diff -uNr linux-2.6.3-love3/drivers/video/i810/i810_main.c linux-2.6.3-love3_chris/drivers/video/i810/i810_main.c
--- linux-2.6.3-love3/drivers/video/i810/i810_main.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/i810/i810_main.c	2004-02-21 16:41:45.000000000 -0600
@@ -1890,7 +1890,7 @@
 	encode_fix(&info->fix, info); 
 	 	    
 	i810fb_init_ringbuffer(info);
-	err = register_framebuffer(info);
+	err = register_framebuffer(info, &dev->dev);
 	if (err < 0) {
     		i810fb_release_resource(info, par); 
 		printk("i810fb_init: cannot register framebuffer device\n");
diff -uNr linux-2.6.3-love3/drivers/video/igafb.c linux-2.6.3-love3_chris/drivers/video/igafb.c
--- linux-2.6.3-love3/drivers/video/igafb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/igafb.c	2004-02-21 16:44:35.000000000 -0600
@@ -332,7 +332,7 @@
 #endif
 };
 
-static int __init iga_init(struct fb_info *info, struct iga_par *par)
+static int __init iga_init(struct fb_info *info, struct iga_par *par, struct pci_dev *dev)
 {
         char vramsz = iga_inb(par, IGA_EXT_CNTRL, IGA_IDX_EXT_BUS_CNTL) 
 		                                         & MEM_SIZE_ALIAS;
@@ -361,7 +361,7 @@
 
 	fb_alloc_cmap(&info->cmap, video_cmap_len, 0);
 
-	if (register_framebuffer(info) < 0)
+	if (register_framebuffer(info, &dev->dev) < 0)
 		return 0;
 
 	printk("fb%d: %s frame buffer device at 0x%08lx [%dMB VRAM]\n",
@@ -529,7 +529,7 @@
 	info->fix = igafb_fix;
 	info->pseudo_palette = (void *)(par + 1);
 
-	if (!iga_init(info, par)) {
+	if (!iga_init(info, par, pdev)) {
 		iounmap((void *)par->io_base);
 		iounmap(info->screen_base);
 		if (par->mmap_map)
diff -uNr linux-2.6.3-love3/drivers/video/imsttfb.c linux-2.6.3-love3_chris/drivers/video/imsttfb.c
--- linux-2.6.3-love3/drivers/video/imsttfb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/imsttfb.c	2004-02-21 16:46:34.000000000 -0600
@@ -1348,7 +1348,7 @@
 };
 
 static void __init 
-init_imstt(struct fb_info *info)
+init_imstt(struct fb_info *info, struct pci_dev *pdev)
 {
 	struct imstt_par *par = (struct imstt_par *) info->par;
 	__u32 i, tmp, *ip, *end;
@@ -1445,7 +1445,7 @@
 
 	fb_alloc_cmap(&info->cmap, 0, 0);
 
-	if (register_framebuffer(info) < 0) {
+	if (register_framebuffer(info, &pdev->dev) < 0) {
 		kfree(info);
 		return;
 	}
@@ -1520,7 +1520,7 @@
 	par->cmap_regs = (__u8 *)ioremap(addr + 0x840000, 0x1000);
 	info->par = par;
 	info->pseudo_palette = (void *) (par + 1);
-	init_imstt(info);
+	init_imstt(info, pdev);
 
 	pci_set_drvdata(pdev, info);
 	return 0;
diff -uNr linux-2.6.3-love3/drivers/video/matrox/matroxfb_base.c linux-2.6.3-love3_chris/drivers/video/matrox/matroxfb_base.c
--- linux-2.6.3-love3/drivers/video/matrox/matroxfb_base.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/matrox/matroxfb_base.c	2004-02-21 16:47:54.000000000 -0600
@@ -1824,7 +1824,7 @@
 /* We do not have to set currcon to 0... register_framebuffer do it for us on first console
  * and we do not want currcon == 0 for subsequent framebuffers */
 
-	if (register_framebuffer(&ACCESS_FBINFO(fbcon)) < 0) {
+	if (register_framebuffer(&ACCESS_FBINFO(fbcon), NULL) < 0) {
 		goto failVideoIO;
 	}
 	printk("fb%d: %s frame buffer device\n",
diff -uNr linux-2.6.3-love3/drivers/video/matrox/matroxfb_crtc2.c linux-2.6.3-love3_chris/drivers/video/matrox/matroxfb_crtc2.c
--- linux-2.6.3-love3/drivers/video/matrox/matroxfb_crtc2.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/matrox/matroxfb_crtc2.c	2004-02-21 16:50:03.000000000 -0600
@@ -638,7 +638,7 @@
 	}
 
 	matroxfb_dh_init_fix(m2info);
-	if (register_framebuffer(&m2info->fbcon)) {
+	if (register_framebuffer(&m2info->fbcon, &m2info->primary_dev->pcidev->dev)) {
 		return -ENXIO;
 	}
 	if (m2info->fbcon.currcon < 0) {
diff -uNr linux-2.6.3-love3/drivers/video/neofb.c linux-2.6.3-love3_chris/drivers/video/neofb.c
--- linux-2.6.3-love3/drivers/video/neofb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/neofb.c	2004-02-21 16:51:02.000000000 -0600
@@ -2014,7 +2014,7 @@
 	       info->var.yres, h_sync / 1000, h_sync % 1000, v_sync);
 
 
-	err = register_framebuffer(info);
+	err = register_framebuffer(info, &dev->dev);
 	if (err < 0)
 		goto failed;
 
diff -uNr linux-2.6.3-love3/drivers/video/pmag-ba-fb.c linux-2.6.3-love3_chris/drivers/video/pmag-ba-fb.c
--- linux-2.6.3-love3/drivers/video/pmag-ba-fb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/pmag-ba-fb.c	2004-02-21 16:51:43.000000000 -0600
@@ -146,7 +146,7 @@
 
 	fb_alloc_cmap(&fb_info.cmap, 256, 0);
 	
-	if (register_framebuffer(info) < 0)
+	if (register_framebuffer(info, NULL) < 0)
 		return 1;
 	return 0;
 }
diff -uNr linux-2.6.3-love3/drivers/video/radeonfb.c linux-2.6.3-love3_chris/drivers/video/radeonfb.c
--- linux-2.6.3-love3/drivers/video/radeonfb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/radeonfb.c	2004-02-21 16:52:45.000000000 -0600
@@ -3042,7 +3042,7 @@
 	rinfo->next = board_list;
 	board_list = rinfo;
 
-	if (register_framebuffer ((struct fb_info *) rinfo) < 0) {
+	if (register_framebuffer ((struct fb_info *) rinfo, &pdev->dev) < 0) {
 		printk ("radeonfb: could not register framebuffer\n");
 		iounmap ((void*)rinfo->fb_base);
 		iounmap ((void*)rinfo->mmio_base);
diff -uNr linux-2.6.3-love3/drivers/video/retz3fb.c linux-2.6.3-love3_chris/drivers/video/retz3fb.c
--- linux-2.6.3-love3/drivers/video/retz3fb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/retz3fb.c	2004-02-21 16:53:40.000000000 -0600
@@ -1424,7 +1424,7 @@
 
 		do_install_cmap(0, fb_info);
 
-		if (register_framebuffer(fb_info) < 0)
+		if (register_framebuffer(fb_info, NULL) < 0)
 			return -EINVAL;
 
 		printk(KERN_INFO "fb%d: %s frame buffer device, using %ldK of "
diff -uNr linux-2.6.3-love3/drivers/video/riva/fbdev.c linux-2.6.3-love3_chris/drivers/video/riva/fbdev.c
--- linux-2.6.3-love3/drivers/video/riva/fbdev.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/riva/fbdev.c	2004-02-21 16:54:40.000000000 -0600
@@ -1875,7 +1875,7 @@
 		goto err_out_iounmap_fb;
 	}
 
-	if (register_framebuffer(info) < 0) {
+	if (register_framebuffer(info, &pd->dev) < 0) {
 		printk(KERN_ERR PFX
 			"error registering riva framebuffer\n");
 		goto err_out_iounmap_fb;
diff -uNr linux-2.6.3-love3/drivers/video/sis/sis_main.c linux-2.6.3-love3_chris/drivers/video/sis/sis_main.c
--- linux-2.6.3-love3/drivers/video/sis/sis_main.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/sis/sis_main.c	2004-02-21 16:58:23.000000000 -0600
@@ -4945,7 +4945,7 @@
 		vc_resize_con(1, 1, 0);
 #endif
 
-		if(register_framebuffer(sis_fb_info) < 0) {
+		if(register_framebuffer(sis_fb_info, &pdev->dev) < 0) {
 			vfree(sishw_ext.pSR);
 			vfree(sishw_ext.pCR);
 			release_mem_region(ivideo.video_base, ivideo.video_size);
diff -uNr linux-2.6.3-love3/drivers/video/skeletonfb.c linux-2.6.3-love3_chris/drivers/video/skeletonfb.c
--- linux-2.6.3-love3/drivers/video/skeletonfb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/skeletonfb.c	2004-02-21 16:59:45.000000000 -0600
@@ -562,8 +562,12 @@
      * mode. If we are setting the mode ourselves we don't call this. 
      */	
     info.var = xxxfb_var;
-	
-    if (register_framebuffer(&info) < 0)
+
+    /*
+     * Pass in a pointer to the struct device that this framebuffer is
+     * associated with.  If there is no struct device available, use NULL.
+     */
+    if (register_framebuffer(&info, NULL) < 0)	
 	return -EINVAL;
     printk(KERN_INFO "fb%d: %s frame buffer device\n", info.node,
 	   info.fix.id);
diff -uNr linux-2.6.3-love3/drivers/video/sstfb.c linux-2.6.3-love3_chris/drivers/video/sstfb.c
--- linux-2.6.3-love3/drivers/video/sstfb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/sstfb.c	2004-02-21 17:00:48.000000000 -0600
@@ -1507,7 +1507,7 @@
 	fb_alloc_cmap(&info->cmap, 256, 0);
 
 	/* register fb */
-	if (register_framebuffer(info) < 0) {
+	if (register_framebuffer(info, &pdev->dev) < 0) {
 		eprintk("can't register framebuffer.\n");
 		goto fail;
 	}
diff -uNr linux-2.6.3-love3/drivers/video/stifb.c linux-2.6.3-love3_chris/drivers/video/stifb.c
--- linux-2.6.3-love3/drivers/video/stifb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/stifb.c	2004-02-21 17:01:29.000000000 -0600
@@ -1343,7 +1343,7 @@
 		goto out_err2;
 	}
 
-	if (register_framebuffer(&fb->info) < 0)
+	if (register_framebuffer(&fb->info, NULL) < 0)
 		goto out_err3;
 
 	sti->info = info; /* save for unregister_framebuffer() */
diff -uNr linux-2.6.3-love3/drivers/video/tdfxfb.c linux-2.6.3-love3_chris/drivers/video/tdfxfb.c
--- linux-2.6.3-love3/drivers/video/tdfxfb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/tdfxfb.c	2004-02-21 17:02:16.000000000 -0600
@@ -1261,7 +1261,7 @@
 	size = (info->var.bits_per_pixel == 8) ? 256 : 16;
 	fb_alloc_cmap(&info->cmap, size, 0);  
 
-	if (register_framebuffer(info) < 0) {
+	if (register_framebuffer(info, &pdev->dev) < 0) {
 		printk("tdfxfb: can't register framebuffer\n");
 		goto out_err;
 	}
diff -uNr linux-2.6.3-love3/drivers/video/tgafb.c linux-2.6.3-love3_chris/drivers/video/tgafb.c
--- linux-2.6.3-love3/drivers/video/tgafb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/tgafb.c	2004-02-21 17:03:12.000000000 -0600
@@ -1451,7 +1451,7 @@
 	tgafb_set_par(&all->info);
 	tgafb_init_fix(&all->info);
 
-	if (register_framebuffer(&all->info) < 0) {
+	if (register_framebuffer(&all->info, &pdev->dev) < 0) {
 		printk(KERN_ERR "tgafb: Could not register framebuffer\n");
 		ret = -EINVAL;
 		goto err1;
diff -uNr linux-2.6.3-love3/drivers/video/tridentfb.c linux-2.6.3-love3_chris/drivers/video/tridentfb.c
--- linux-2.6.3-love3/drivers/video/tridentfb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/tridentfb.c	2004-02-21 17:04:14.000000000 -0600
@@ -1156,7 +1156,7 @@
 		default_var.accel_flags &= ~FB_ACCELF_TEXT;
 	default_var.activate |= FB_ACTIVATE_NOW;
 	fb_info.var = default_var;
-	if (register_framebuffer(&fb_info) < 0) {
+	if (register_framebuffer(&fb_info, NULL) < 0) {
 		output("Could not register Trident framebuffer\n");
 		return -EINVAL;
 	}
diff -uNr linux-2.6.3-love3/drivers/video/vesafb.c linux-2.6.3-love3_chris/drivers/video/vesafb.c
--- linux-2.6.3-love3/drivers/video/vesafb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/vesafb.c	2004-02-21 17:04:50.000000000 -0600
@@ -369,7 +369,7 @@
 
 	fb_alloc_cmap(&fb_info.cmap, video_cmap_len, 0);
 
-	if (register_framebuffer(&fb_info)<0)
+	if (register_framebuffer(&fb_info, NULL)<0)
 		return -EINVAL;
 
 	printk(KERN_INFO "fb%d: %s frame buffer device\n",
diff -uNr linux-2.6.3-love3/drivers/video/vfb.c linux-2.6.3-love3_chris/drivers/video/vfb.c
--- linux-2.6.3-love3/drivers/video/vfb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/vfb.c	2004-02-21 17:05:14.000000000 -0600
@@ -439,7 +439,7 @@
 
 	fb_alloc_cmap(&fb_info.cmap, 256, 0);
 
-	if (register_framebuffer(&fb_info) < 0) {
+	if (register_framebuffer(&fb_info, NULL) < 0) {
 		vfree(videomemory);
 		return -EINVAL;
 	}
diff -uNr linux-2.6.3-love3/drivers/video/vga16fb.c linux-2.6.3-love3_chris/drivers/video/vga16fb.c
--- linux-2.6.3-love3/drivers/video/vga16fb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/vga16fb.c	2004-02-21 17:05:50.000000000 -0600
@@ -1388,7 +1388,7 @@
 
 	vga16fb_update_fix(&vga16fb);
 
-	if (register_framebuffer(&vga16fb) < 0) {
+	if (register_framebuffer(&vga16fb, NULL) < 0) {
 		printk(KERN_ERR "vga16fb: unable to register framebuffer\n");
 		ret = -EINVAL;
 		goto err_check_var;
diff -uNr linux-2.6.3-love3/drivers/video/virgefb.c linux-2.6.3-love3_chris/drivers/video/virgefb.c
--- linux-2.6.3-love3/drivers/video/virgefb.c	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/drivers/video/virgefb.c	2004-02-21 17:06:12.000000000 -0600
@@ -1797,7 +1797,7 @@
 	virgefb_set_disp(-1, &fb_info);
 	do_install_cmap(0, &fb_info);
 
-	if (register_framebuffer(&fb_info) < 0) {
+	if (register_framebuffer(&fb_info, NULL) < 0) {
 		#warning release resources
 		printk(KERN_ERR "virgefb.c: register_framebuffer failed\n");
 		DPRINTK("EXIT\n");
diff -uNr linux-2.6.3-love3/include/linux/fb.h linux-2.6.3-love3_chris/include/linux/fb.h
--- linux-2.6.3-love3/include/linux/fb.h	2004-02-21 17:23:00.000000000 -0600
+++ linux-2.6.3-love3_chris/include/linux/fb.h	2004-02-21 17:07:43.000000000 -0600
@@ -532,7 +532,7 @@
 extern void cfb_imageblit(struct fb_info *info, const struct fb_image *image);
 
 /* drivers/video/fbmem.c */
-extern int register_framebuffer(struct fb_info *fb_info);
+extern int register_framebuffer(struct fb_info *fb_info, struct device *dev);
 extern int unregister_framebuffer(struct fb_info *fb_info);
 extern int fb_prepare_logo(struct fb_info *fb_info);
 extern int fb_show_logo(struct fb_info *fb_info);
