From: Nigel Cunningham <ncunningham@linuxmail.org>
To: linux-fbdev-devel@lists.sourceforge.net
Cc: adaplas@pol.net
Subject: [PATCH] Re: Devices don't get linked to their class.
Date: Mon, 06 Sep 2004 13:38:16 +1000 [thread overview]
Message-ID: <1094441896.19674.24.camel@laptop.cunninghams> (raw)
In-Reply-To: <200409051840.27452.adaplas@hotpop.com>
[-- Attachment #1: Type: text/plain, Size: 820 bytes --]
Hi.
On Sun, 2004-09-05 at 20:40, Antonino A. Daplas wrote:
> Frankly, I don't know a thing about this stuff. Just let me know what you
> need and where you need them, and I'll see what I can do.
It did turn out to just need the dev parameter to be non null. I've gone
through all the frame buffer drivers and done what I believe to be the
right thing; if they're PCI based, they get the struct device pointer
passed through, otherwise NULL is sent.
The attached patch is against 2.6.9-rc1, and (combined with other code)
allows the driver to remain active while we're suspending to disk.
Regards,
Nigel
--
Nigel Cunningham
Pastoral Worker
Christian Reformed Church of Tuggeranong
PO Box 1004, Tuggeranong, ACT 2901
Many today claim to be tolerant. True tolerance, however, can cope with others
being intolerant.
[-- Attachment #2: drivers-video-device-class-support.patch --]
[-- Type: text/x-patch, Size: 44261 bytes --]
diff -ruN linux-2.6.9-rc1/drivers/video/68328fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/68328fb.c
--- linux-2.6.9-rc1/drivers/video/68328fb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/68328fb.c 2004-09-06 13:11:51.266503032 +1000
@@ -470,7 +470,7 @@
fb_alloc_cmap(&fb_info.cmap, 256, 0);
- if (register_framebuffer(&fb_info) < 0) {
+ if (register_framebuffer(&fb_info, NULL) < 0) {
return -EINVAL;
}
diff -ruN linux-2.6.9-rc1/drivers/video/acornfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/acornfb.c
--- linux-2.6.9-rc1/drivers/video/acornfb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/acornfb.c 2004-09-06 13:11:51.267502880 +1000
@@ -1451,7 +1451,7 @@
if (fb_set_var(&fb_info, &fb_info.var))
printk(KERN_ERR "Acornfb: unable to set display parameters\n");
- if (register_framebuffer(&fb_info) < 0)
+ if (register_framebuffer(&fb_info, NULL) < 0)
return -EINVAL;
return 0;
}
diff -ruN linux-2.6.9-rc1/drivers/video/amba-clcd.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/amba-clcd.c
--- linux-2.6.9-rc1/drivers/video/amba-clcd.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/amba-clcd.c 2004-09-06 13:11:51.267502880 +1000
@@ -396,7 +396,7 @@
printk(KERN_INFO "CLCD: %s hardware, %s display\n",
fb->board->name, fb->panel->mode.name);
- ret = register_framebuffer(&fb->fb);
+ ret = register_framebuffer(&fb->fb, NULL);
if (ret == 0)
goto out;
diff -ruN linux-2.6.9-rc1/drivers/video/amifb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/amifb.c
--- linux-2.6.9-rc1/drivers/video/amifb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/amifb.c 2004-09-06 13:11:51.270502424 +1000
@@ -2444,7 +2444,7 @@
fb_alloc_cmap(&fb_info.cmap, 1<<fb_info.var.bits_per_pixel, 0);
- if (register_framebuffer(&fb_info) < 0) {
+ if (register_framebuffer(&fb_info, NULL) < 0) {
err = -EINVAL;
goto amifb_error;
}
diff -ruN linux-2.6.9-rc1/drivers/video/asiliantfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/asiliantfb.c
--- linux-2.6.9-rc1/drivers/video/asiliantfb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/asiliantfb.c 2004-09-06 13:11:51.271502272 +1000
@@ -518,7 +518,8 @@
.vsync_len = 2,
};
-static void __init init_asiliant(struct fb_info *p, unsigned long addr)
+static void __init init_asiliant(struct fb_info *p, unsigned long addr,
+ struct device * dev)
{
p->fix = asiliantfb_fix;
p->fix.smem_start = addr;
@@ -528,7 +529,7 @@
fb_alloc_cmap(&p->cmap, 256, 0);
- if (register_framebuffer(p) < 0) {
+ if (register_framebuffer(p, dev) < 0) {
printk(KERN_ERR "C&T 69000 framebuffer failed to register\n");
return;
}
@@ -573,7 +574,7 @@
pci_write_config_dword(dp, 4, 0x02800083);
writeb(3, p->screen_base + 0x400784);
- init_asiliant(p, addr);
+ init_asiliant(p, addr, &dp->dev);
/* Clear the entire framebuffer */
memset(p->screen_base, 0, 0x200000);
diff -ruN linux-2.6.9-rc1/drivers/video/atafb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/atafb.c
--- linux-2.6.9-rc1/drivers/video/atafb.c 2004-06-18 12:44:12.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/atafb.c 2004-09-06 13:11:51.273501968 +1000
@@ -2806,7 +2806,7 @@
atafb_set_disp(-1, &fb_info);
do_install_cmap(0, &fb_info);
- if (register_framebuffer(&fb_info) < 0)
+ if (register_framebuffer(&fb_info, NULL) < 0)
return -EINVAL;
printk("Determined %dx%d, depth %d\n",
diff -ruN linux-2.6.9-rc1/drivers/video/aty/aty128fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/aty/aty128fb.c
--- linux-2.6.9-rc1/drivers/video/aty/aty128fb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/aty/aty128fb.c 2004-09-06 13:11:51.274501816 +1000
@@ -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 -ruN linux-2.6.9-rc1/drivers/video/aty/atyfb_base.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/aty/atyfb_base.c
--- linux-2.6.9-rc1/drivers/video/aty/atyfb_base.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/aty/atyfb_base.c 2004-09-06 13:11:51.276501512 +1000
@@ -161,7 +161,8 @@
* Internal routines
*/
-static int aty_init(struct fb_info *info, const char *name);
+static int aty_init(struct fb_info *info, const char *name,
+ struct device * dev);
#ifdef CONFIG_ATARI
static int store_video_par(char *videopar, unsigned char m64_num);
#endif
@@ -1499,7 +1500,8 @@
static struct fb_info *fb_list = NULL;
-static int __init aty_init(struct fb_info *info, const char *name)
+static int __init aty_init(struct fb_info *info, const char *name,
+ struct device * dev)
{
struct atyfb_par *par = (struct atyfb_par *) info->par;
const char *chipname = NULL, *ramname = NULL, *xtal;
@@ -1892,7 +1894,7 @@
fb_alloc_cmap(&info->cmap, 256, 0);
- if (register_framebuffer(info) < 0)
+ if (register_framebuffer(info, dev) < 0)
return 0;
fb_list = info;
@@ -2261,7 +2263,7 @@
}
#endif /* __sparc__ */
- if (!aty_init(info, "PCI")) {
+ if (!aty_init(info, "PCI", &pdev->dev)) {
#ifdef __sparc__
if (default_par->mmap_map)
kfree(default_par->mmap_map);
@@ -2366,7 +2368,7 @@
break;
}
- if (!aty_init(info, "ISA bus")) {
+ if (!aty_init(info, "ISA bus", NULL)) {
kfree(default_par);
kfree(info);
/* This is insufficient! kernel_map has added two large chunks!! */
diff -ruN linux-2.6.9-rc1/drivers/video/aty/radeon_base.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/aty/radeon_base.c
--- linux-2.6.9-rc1/drivers/video/aty/radeon_base.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/aty/radeon_base.c 2004-09-06 13:11:51.279501056 +1000
@@ -2326,7 +2326,7 @@
printk("radeonfb: Power Management enabled for Mobility chipsets\n");
}
- ret = register_framebuffer(info);
+ ret = register_framebuffer(info, &pdev->dev);
if (ret < 0) {
printk (KERN_ERR "radeonfb: could not register framebuffer\n");
goto err_unmap_fb;
diff -ruN linux-2.6.9-rc1/drivers/video/bw2.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/bw2.c
--- linux-2.6.9-rc1/drivers/video/bw2.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/bw2.c 2004-09-06 13:11:51.280500904 +1000
@@ -368,7 +368,7 @@
bw2_init_fix(&all->info, linebytes);
- if (register_framebuffer(&all->info) < 0) {
+ if (register_framebuffer(&all->info, NULL) < 0) {
printk(KERN_ERR "bw2: Could not register framebuffer.\n");
kfree(all);
return;
diff -ruN linux-2.6.9-rc1/drivers/video/cg14.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/cg14.c
--- linux-2.6.9-rc1/drivers/video/cg14.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/cg14.c 2004-09-06 13:11:51.282500600 +1000
@@ -565,7 +565,7 @@
cg14_init_fix(&all->info, linebytes);
- if (register_framebuffer(&all->info) < 0) {
+ if (register_framebuffer(&all->info, NULL) < 0) {
printk(KERN_ERR "cg14: Could not register framebuffer.\n");
fb_dealloc_cmap(&all->info.cmap);
kfree(all);
diff -ruN linux-2.6.9-rc1/drivers/video/cg3.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/cg3.c
--- linux-2.6.9-rc1/drivers/video/cg3.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/cg3.c 2004-09-06 13:11:51.283500448 +1000
@@ -424,7 +424,7 @@
cg3_init_fix(&all->info, linebytes);
- if (register_framebuffer(&all->info) < 0) {
+ if (register_framebuffer(&all->info, NULL) < 0) {
printk(KERN_ERR "cg3: Could not register framebuffer.\n");
fb_dealloc_cmap(&all->info.cmap);
kfree(all);
diff -ruN linux-2.6.9-rc1/drivers/video/cg6.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/cg6.c
--- linux-2.6.9-rc1/drivers/video/cg6.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/cg6.c 2004-09-06 13:11:51.284500296 +1000
@@ -740,7 +740,7 @@
cg6_init_fix(&all->info, linebytes);
- if (register_framebuffer(&all->info) < 0) {
+ if (register_framebuffer(&all->info, NULL) < 0) {
printk(KERN_ERR "cg6: Could not register framebuffer.\n");
fb_dealloc_cmap(&all->info.cmap);
kfree(all);
diff -ruN linux-2.6.9-rc1/drivers/video/chipsfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/chipsfb.c
--- linux-2.6.9-rc1/drivers/video/chipsfb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/chipsfb.c 2004-09-06 13:11:51.285500144 +1000
@@ -354,7 +354,7 @@
.vsync_len = 8,
};
-static void __init init_chips(struct fb_info *p, unsigned long addr)
+static void __init init_chips(struct fb_info *p, unsigned long addr, struct device * dev)
{
p->fix = chipsfb_fix;
p->fix.smem_start = addr;
@@ -366,7 +366,7 @@
fb_alloc_cmap(&p->cmap, 256, 0);
- if (register_framebuffer(p) < 0) {
+ if (register_framebuffer(p, dev) < 0) {
printk(KERN_ERR "C&T 65550 framebuffer failed to register\n");
return;
}
@@ -417,7 +417,7 @@
return -ENOMEM;
}
- init_chips(p, addr);
+ init_chips(p, addr, &dp->dev);
#ifdef CONFIG_PMAC_PBOOK
pmu_register_sleep_notifier(&chips_sleep_notifier);
diff -ruN linux-2.6.9-rc1/drivers/video/cirrusfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/cirrusfb.c
--- linux-2.6.9-rc1/drivers/video/cirrusfb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/cirrusfb.c 2004-09-06 13:11:51.287499840 +1000
@@ -2296,6 +2296,7 @@
struct fb_info *info;
int err;
cirrusfb_board_t btype;
+ struct device * dev = NULL;
DPRINTK ("ENTER\n");
@@ -2324,7 +2325,10 @@
/* set all the vital stuff */
cirrusfb_set_fbinfo(cinfo);
- err = register_framebuffer(info);
+ if (cinfo->pdev)
+ dev = &cinfo->pdev->dev;
+
+ err = register_framebuffer(info, dev);
if (err < 0) {
printk (KERN_ERR "cirrusfb: could not register fb device; err = %d!\n", err);
goto err_dealloc_cmap;
diff -ruN linux-2.6.9-rc1/drivers/video/clps711xfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/clps711xfb.c
--- linux-2.6.9-rc1/drivers/video/clps711xfb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/clps711xfb.c 2004-09-06 13:11:51.287499840 +1000
@@ -413,7 +413,7 @@
clps_writeb(clps_readb(PDDR) | EDB_PD3_LCDBL, PDDR);
}
- err = register_framebuffer(cfb);
+ err = register_framebuffer(cfb, NULL);
out: return err;
}
diff -ruN linux-2.6.9-rc1/drivers/video/controlfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/controlfb.c
--- linux-2.6.9-rc1/drivers/video/controlfb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/controlfb.c 2004-09-06 13:11:51.288499688 +1000
@@ -480,7 +480,7 @@
goto try_again;
/* Register with fbdev layer */
- if (register_framebuffer(&p->info) < 0)
+ if (register_framebuffer(&p->info, NULL) < 0)
return -ENXIO;
printk(KERN_INFO "fb%d: control display adapter\n", p->info.node);
diff -ruN linux-2.6.9-rc1/drivers/video/cyber2000fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/cyber2000fb.c
--- linux-2.6.9-rc1/drivers/video/cyber2000fb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/cyber2000fb.c 2004-09-06 13:11:51.290499384 +1000
@@ -1342,6 +1342,7 @@
u_long smem_size;
u_int h_sync, v_sync;
int err;
+ struct device * dev = NULL;
cyberpro_init_hw(cfb);
@@ -1399,7 +1400,9 @@
cfb->fb.var.xres, cfb->fb.var.yres,
h_sync / 1000, h_sync % 1000, v_sync);
- err = register_framebuffer(&cfb->fb);
+ if (cfb->dev)
+ dev = &cfb->dev->dev;
+ err = register_framebuffer(&cfb->fb, dev);
failed:
return err;
diff -ruN linux-2.6.9-rc1/drivers/video/cyberfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/cyberfb.c
--- linux-2.6.9-rc1/drivers/video/cyberfb.c 2004-06-18 12:44:12.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/cyberfb.c 2004-09-06 13:11:51.291499232 +1000
@@ -1054,7 +1054,7 @@
cyberfb_set_disp(-1, &fb_info);
do_install_cmap(0, &fb_info);
- if (register_framebuffer(&fb_info) < 0) {
+ if (register_framebuffer(&fb_info, NULL) < 0) {
DPRINTK("EXIT - register_framebuffer failed\n");
release_mem_region(CyberMem_phys, 0x400000);
release_mem_region(CyberRegs_phys, 0x10000);
diff -ruN linux-2.6.9-rc1/drivers/video/dnfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/dnfb.c
--- linux-2.6.9-rc1/drivers/video/dnfb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/dnfb.c 2004-09-06 13:11:51.292499080 +1000
@@ -250,7 +250,7 @@
return err;
}
- err = register_framebuffer(info);
+ err = register_framebuffer(info, device);
if (err < 0) {
fb_dealloc_cmap(&info->cmap);
framebuffer_release(info);
diff -ruN linux-2.6.9-rc1/drivers/video/epson1355fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/epson1355fb.c
--- linux-2.6.9-rc1/drivers/video/epson1355fb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/epson1355fb.c 2004-09-06 13:11:51.293498928 +1000
@@ -702,7 +702,7 @@
backlight_enable(1);
lcd_enable(default_par, 1);
- if (register_framebuffer(info) < 0) {
+ if (register_framebuffer(info, NULL) < 0) {
rc = -EINVAL;
goto bail;
}
diff -ruN linux-2.6.9-rc1/drivers/video/fbmem.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/fbmem.c
--- linux-2.6.9-rc1/drivers/video/fbmem.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/fbmem.c 2004-09-06 13:11:51.294498776 +1000
@@ -1431,7 +1431,7 @@
*/
int
-register_framebuffer(struct fb_info *fb_info)
+register_framebuffer(struct fb_info *fb_info, struct device * dev)
{
int i;
struct class_device *c;
@@ -1444,7 +1444,7 @@
break;
fb_info->node = i;
- c = class_simple_device_add(fb_class, MKDEV(FB_MAJOR, i), NULL, "fb%d", i);
+ c = class_simple_device_add(fb_class, MKDEV(FB_MAJOR, i), dev, "fb%d", i);
if (IS_ERR(c)) {
/* Not fatal */
printk(KERN_WARNING "Unable to create class_device for framebuffer %d; errno = %ld\n", i, PTR_ERR(c));
diff -ruN linux-2.6.9-rc1/drivers/video/ffb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/ffb.c
--- linux-2.6.9-rc1/drivers/video/ffb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/ffb.c 2004-09-06 13:11:51.295498624 +1000
@@ -1079,7 +1079,7 @@
ffb_init_fix(&all->info);
- if (register_framebuffer(&all->info) < 0) {
+ if (register_framebuffer(&all->info, NULL) < 0) {
printk(KERN_ERR "ffb: Could not register framebuffer.\n");
fb_dealloc_cmap(&all->info.cmap);
kfree(all);
diff -ruN linux-2.6.9-rc1/drivers/video/fm2fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/fm2fb.c
--- linux-2.6.9-rc1/drivers/video/fm2fb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/fm2fb.c 2004-09-06 13:11:51.296498472 +1000
@@ -282,7 +282,7 @@
info->fix = fb_fix;
info->flags = FBINFO_DEFAULT;
- if (register_framebuffer(info) < 0) {
+ if (register_framebuffer(info, NULL) < 0) {
fb_dealloc_cmap(&info->cmap);
framebuffer_release(info);
zorro_release_device(z);
diff -ruN linux-2.6.9-rc1/drivers/video/g364fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/g364fb.c
--- linux-2.6.9-rc1/drivers/video/g364fb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/g364fb.c 2004-09-06 13:11:51.296498472 +1000
@@ -245,7 +245,7 @@
fb_alloc_cmap(&fb_info.cmap, 255, 0);
- if (register_framebuffer(&fb_info) < 0)
+ if (register_framebuffer(&fb_info, NULL) < 0)
return -EINVAL;
return 0;
}
diff -ruN linux-2.6.9-rc1/drivers/video/gbefb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/gbefb.c
--- linux-2.6.9-rc1/drivers/video/gbefb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/gbefb.c 2004-09-06 13:11:51.297498320 +1000
@@ -1151,7 +1151,7 @@
gbefb_encode_fix(&fb_info.fix, &fb_info.var);
fb_info.par = &par_current;
- if (register_framebuffer(&fb_info) < 0) {
+ if (register_framebuffer(&fb_info, NULL) < 0) {
ret = -ENXIO;
printk(KERN_ERR "gbefb: couldn't register framebuffer\n");
goto out_gbe_unmap;
diff -ruN linux-2.6.9-rc1/drivers/video/hgafb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/hgafb.c
--- linux-2.6.9-rc1/drivers/video/hgafb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/hgafb.c 2004-09-06 13:11:51.298498168 +1000
@@ -569,7 +569,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 -ruN linux-2.6.9-rc1/drivers/video/hitfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/hitfb.c
--- linux-2.6.9-rc1/drivers/video/hitfb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/hitfb.c 2004-09-06 13:11:51.299498016 +1000
@@ -328,7 +328,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 -ruN linux-2.6.9-rc1/drivers/video/hpfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/hpfb.c
--- linux-2.6.9-rc1/drivers/video/hpfb.c 2004-08-30 16:01:10.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/hpfb.c 2004-09-06 13:11:51.299498016 +1000
@@ -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 -ruN linux-2.6.9-rc1/drivers/video/i810/i810_main.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/i810/i810_main.c
--- linux-2.6.9-rc1/drivers/video/i810/i810_main.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/i810/i810_main.c 2004-09-06 13:11:51.301497712 +1000
@@ -1905,7 +1905,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 -ruN linux-2.6.9-rc1/drivers/video/igafb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/igafb.c
--- linux-2.6.9-rc1/drivers/video/igafb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/igafb.c 2004-09-06 13:11:51.302497560 +1000
@@ -332,7 +332,8 @@
#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 device * dev)
{
char vramsz = iga_inb(par, IGA_EXT_CNTRL, IGA_IDX_EXT_BUS_CNTL)
& MEM_SIZE_ALIAS;
@@ -361,7 +362,7 @@
fb_alloc_cmap(&info->cmap, video_cmap_len, 0);
- if (register_framebuffer(info) < 0)
+ if (register_framebuffer(info, dev) < 0)
return 0;
printk("fb%d: %s frame buffer device at 0x%08lx [%dMB VRAM]\n",
@@ -529,7 +530,7 @@
info->fix = igafb_fix;
info->pseudo_palette = (void *)(par + 1);
- if (!iga_init(info, par)) {
+ if (!iga_init(info, par, &pdev->dev)) {
iounmap((void *)par->io_base);
iounmap(info->screen_base);
if (par->mmap_map)
diff -ruN linux-2.6.9-rc1/drivers/video/imsttfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/imsttfb.c
--- linux-2.6.9-rc1/drivers/video/imsttfb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/imsttfb.c 2004-09-06 13:11:51.303497408 +1000
@@ -1349,7 +1349,7 @@
};
static void __init
-init_imstt(struct fb_info *info)
+init_imstt(struct fb_info *info, struct device * dev)
{
struct imstt_par *par = (struct imstt_par *) info->par;
__u32 i, tmp, *ip, *end;
@@ -1449,7 +1449,7 @@
fb_alloc_cmap(&info->cmap, 0, 0);
- if (register_framebuffer(info) < 0) {
+ if (register_framebuffer(info, dev) < 0) {
kfree(info);
return;
}
@@ -1524,7 +1524,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->dev);
pci_set_drvdata(pdev, info);
return 0;
diff -ruN linux-2.6.9-rc1/drivers/video/kyro/fbdev.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/kyro/fbdev.c
--- linux-2.6.9-rc1/drivers/video/kyro/fbdev.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/kyro/fbdev.c 2004-09-06 13:11:51.304497256 +1000
@@ -735,7 +735,7 @@
fb_memset(info->screen_base, 0, size);
- if (register_framebuffer(info) < 0)
+ if (register_framebuffer(info, &pdev->dev) < 0)
goto out_unmap;
printk("fb%d: %s frame buffer device, at %dx%d@%d using %ldk/%ldk of VRAM\n",
diff -ruN linux-2.6.9-rc1/drivers/video/leo.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/leo.c
--- linux-2.6.9-rc1/drivers/video/leo.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/leo.c 2004-09-06 13:11:51.304497256 +1000
@@ -606,7 +606,7 @@
leo_init_fix(&all->info);
- if (register_framebuffer(&all->info) < 0) {
+ if (register_framebuffer(&all->info, NULL) < 0) {
printk(KERN_ERR "leo: Could not register framebuffer.\n");
fb_dealloc_cmap(&all->info.cmap);
kfree(all);
diff -ruN linux-2.6.9-rc1/drivers/video/macfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/macfb.c
--- linux-2.6.9-rc1/drivers/video/macfb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/macfb.c 2004-09-06 13:11:51.305497104 +1000
@@ -954,7 +954,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;
printk("fb%d: %s frame buffer device\n",
diff -ruN linux-2.6.9-rc1/drivers/video/matrox/matroxfb_base.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/matrox/matroxfb_base.c
--- linux-2.6.9-rc1/drivers/video/matrox/matroxfb_base.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/matrox/matroxfb_base.c 2004-09-06 13:11:51.307496800 +1000
@@ -1572,7 +1572,8 @@
outputs[0] = 0;
}
-static int initMatrox2(WPMINFO struct board* b){
+static int initMatrox2(WPMINFO struct board* b,
+ struct device * dev){
unsigned long ctrlptr_phys = 0;
unsigned long video_base_phys = 0;
unsigned int memsize;
@@ -1864,7 +1865,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), dev) < 0) {
goto failVideoIO;
}
printk("fb%d: %s frame buffer device\n",
@@ -2056,7 +2057,7 @@
init_waitqueue_head(&ACCESS_FBINFO(crtc2.vsync.wait));
ACCESS_FBINFO(crtc1.panpos) = -1;
- err = initMatrox2(PMINFO b);
+ err = initMatrox2(PMINFO b, &pdev->dev);
if (!err) {
#ifndef CONFIG_FB_MATROX_MULTIHEAD
registered = 1;
diff -ruN linux-2.6.9-rc1/drivers/video/matrox/matroxfb_crtc2.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/matrox/matroxfb_crtc2.c
--- linux-2.6.9-rc1/drivers/video/matrox/matroxfb_crtc2.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/matrox/matroxfb_crtc2.c 2004-09-06 13:11:51.308496648 +1000
@@ -629,7 +629,7 @@
m2info->mmio.len = ACCESS_FBINFO(mmio.len);
matroxfb_dh_init_fix(m2info);
- if (register_framebuffer(&m2info->fbcon)) {
+ if (register_framebuffer(&m2info->fbcon, NULL)) {
return -ENXIO;
}
if (m2info->fbcon.currcon < 0) {
diff -ruN linux-2.6.9-rc1/drivers/video/maxinefb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/maxinefb.c
--- linux-2.6.9-rc1/drivers/video/maxinefb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/maxinefb.c 2004-09-06 13:11:51.309496496 +1000
@@ -163,7 +163,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 -ruN linux-2.6.9-rc1/drivers/video/neofb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/neofb.c
--- linux-2.6.9-rc1/drivers/video/neofb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/neofb.c 2004-09-06 13:11:51.320494824 +1000
@@ -2139,7 +2139,7 @@
if (fb_alloc_cmap(&info->cmap, 256, 0) < 0)
goto err_map_video;
- err = register_framebuffer(info);
+ err = register_framebuffer(info, &dev->dev);
if (err < 0)
goto err_reg_fb;
diff -ruN linux-2.6.9-rc1/drivers/video/offb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/offb.c
--- linux-2.6.9-rc1/drivers/video/offb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/offb.c 2004-09-06 13:11:51.321494672 +1000
@@ -531,7 +531,7 @@
fb_alloc_cmap(&info->cmap, 256, 0);
- if (register_framebuffer(info) < 0) {
+ if (register_framebuffer(info, NULL) < 0) {
kfree(info);
release_mem_region(res_start, res_size);
return;
diff -ruN linux-2.6.9-rc1/drivers/video/p9100.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/p9100.c
--- linux-2.6.9-rc1/drivers/video/p9100.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/p9100.c 2004-09-06 13:11:51.321494672 +1000
@@ -320,7 +320,7 @@
p9100_init_fix(&all->info, linebytes);
- if (register_framebuffer(&all->info) < 0) {
+ if (register_framebuffer(&all->info, NULL) < 0) {
printk(KERN_ERR "p9100: Could not register framebuffer.\n");
fb_dealloc_cmap(&all->info.cmap);
kfree(all);
diff -ruN linux-2.6.9-rc1/drivers/video/platinumfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/platinumfb.c
--- linux-2.6.9-rc1/drivers/video/platinumfb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/platinumfb.c 2004-09-06 13:11:51.322494520 +1000
@@ -388,7 +388,7 @@
goto try_again;
/* Register with fbdev layer */
- rc = register_framebuffer(info);
+ rc = register_framebuffer(info, NULL);
if (rc < 0)
return rc;
diff -ruN linux-2.6.9-rc1/drivers/video/pm2fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/pm2fb.c
--- linux-2.6.9-rc1/drivers/video/pm2fb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/pm2fb.c 2004-09-06 13:11:51.323494368 +1000
@@ -1139,7 +1139,7 @@
if (fb_alloc_cmap(&info->cmap, 256, 0) < 0)
goto err_exit_all;
- if (register_framebuffer(info) < 0)
+ if (register_framebuffer(info, &pdev->dev) < 0)
goto err_exit_both;
printk(KERN_INFO "fb%d: %s frame buffer device, memory = %dK.\n",
diff -ruN linux-2.6.9-rc1/drivers/video/pm3fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/pm3fb.c
--- linux-2.6.9-rc1/drivers/video/pm3fb.c 2004-01-13 14:18:03.000000000 +1100
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/pm3fb.c 2004-09-06 13:11:51.326493912 +1000
@@ -1631,7 +1631,7 @@
do_install_cmap(0, &l_fb_info->gen.info);
- if (register_framebuffer(&l_fb_info->gen.info) < 0) {
+ if (register_framebuffer(&l_fb_info->gen.info, &l_fb_info->dev->dev) < 0) {
DPRINTK(1, "Couldn't register framebuffer\n");
return;
}
@@ -3494,7 +3494,7 @@
#endif /* KERNEL_2_4 or KERNEL_2_5 */
if (forcesize[l_fb_info->board_num])
l_fb_info->fb_size = forcesize[l_fb_info->board_num];
-
+
l_fb_info->fb_size =
pm3fb_size_memory(l_fb_info);
diff -ruN linux-2.6.9-rc1/drivers/video/pmag-ba-fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/pmag-ba-fb.c
--- linux-2.6.9-rc1/drivers/video/pmag-ba-fb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/pmag-ba-fb.c 2004-09-06 13:11:51.326493912 +1000
@@ -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 -ruN linux-2.6.9-rc1/drivers/video/pmagb-b-fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/pmagb-b-fb.c
--- linux-2.6.9-rc1/drivers/video/pmagb-b-fb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/pmagb-b-fb.c 2004-09-06 13:11:51.327493760 +1000
@@ -149,7 +149,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 -ruN linux-2.6.9-rc1/drivers/video/pvr2fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/pvr2fb.c
--- linux-2.6.9-rc1/drivers/video/pvr2fb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/pvr2fb.c 2004-09-06 13:11:51.328493608 +1000
@@ -766,7 +766,7 @@
* in for flexibility anyways. Who knows, maybe someone has tv-out on a
* PCI-based version of these things ;-)
*/
-static int __init pvr2fb_common_init(void)
+static int __init pvr2fb_common_init(struct device * dev)
{
struct pvr2fb_par *par = currentpar;
unsigned long modememused, rev;
@@ -809,7 +809,7 @@
fb_alloc_cmap(&fb_info->cmap, 256, 0);
- if (register_framebuffer(fb_info) < 0)
+ if (register_framebuffer(fb_info, dev) < 0)
goto out_err;
modememused = get_line_length(fb_info->var.xres_virtual,
@@ -901,7 +901,7 @@
}
#endif
- return pvr2fb_common_init();
+ return pvr2fb_common_init(NULL);
}
static void pvr2fb_dc_exit(void)
@@ -940,7 +940,7 @@
pvr2_fix.mmio_start = pci_resource_start(pdev, 1);
pvr2_fix.mmio_len = pci_resource_len(pdev, 1);
- return pvr2fb_common_init();
+ return pvr2fb_common_init(&pdev->dev);
}
static void __devexit pvr2fb_pci_remove(struct pci_dev *pdev)
diff -ruN linux-2.6.9-rc1/drivers/video/pxafb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/pxafb.c
--- linux-2.6.9-rc1/drivers/video/pxafb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/pxafb.c 2004-09-06 13:11:51.329493456 +1000
@@ -1318,7 +1318,7 @@
dev_set_drvdata(dev, fbi);
- ret = register_framebuffer(&fbi->fb);
+ ret = register_framebuffer(&fbi->fb, dev);
if (ret < 0) {
dev_err(dev, "Failed to register framebuffer device: %d\n", ret);
goto failed;
diff -ruN linux-2.6.9-rc1/drivers/video/q40fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/q40fb.c
--- linux-2.6.9-rc1/drivers/video/q40fb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/q40fb.c 2004-09-06 13:11:51.330493304 +1000
@@ -117,7 +117,7 @@
master_outb(3, DISPLAY_CONTROL_REG);
- if (register_framebuffer(info) < 0) {
+ if (register_framebuffer(info, device) < 0) {
printk(KERN_ERR "Unable to register Q40 frame buffer\n");
fb_dealloc_cmap(&info->cmap);
framebuffer_release(info);
diff -ruN linux-2.6.9-rc1/drivers/video/radeonfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/radeonfb.c
--- linux-2.6.9-rc1/drivers/video/radeonfb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/radeonfb.c 2004-09-06 13:11:51.332493000 +1000
@@ -3041,7 +3041,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 -ruN linux-2.6.9-rc1/drivers/video/retz3fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/retz3fb.c
--- linux-2.6.9-rc1/drivers/video/retz3fb.c 2004-06-18 12:44:12.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/retz3fb.c 2004-09-06 13:11:51.333492848 +1000
@@ -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 -ruN linux-2.6.9-rc1/drivers/video/riva/fbdev.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/riva/fbdev.c
--- linux-2.6.9-rc1/drivers/video/riva/fbdev.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/riva/fbdev.c 2004-09-06 13:11:51.335492544 +1000
@@ -1995,7 +1995,7 @@
info->monspecs.modedb_len = 0;
info->monspecs.modedb = NULL;
- 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 -ruN linux-2.6.9-rc1/drivers/video/S3triofb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/S3triofb.c
--- linux-2.6.9-rc1/drivers/video/S3triofb.c 2004-01-13 14:24:00.000000000 +1100
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/S3triofb.c 2004-09-06 13:11:51.336492392 +1000
@@ -537,7 +537,7 @@
#endif
fb_info.flags = FBINFO_FLAG_DEFAULT;
- if (register_framebuffer(&fb_info) < 0)
+ if (register_framebuffer(&fb_info, NULL) < 0)
return;
printk("fb%d: S3 Trio frame buffer device on %s\n",
diff -ruN linux-2.6.9-rc1/drivers/video/sa1100fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/sa1100fb.c
--- linux-2.6.9-rc1/drivers/video/sa1100fb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/sa1100fb.c 2004-09-06 13:11:51.337492240 +1000
@@ -1772,7 +1772,7 @@
dev_set_drvdata(dev, fbi);
- ret = register_framebuffer(&fbi->fb);
+ ret = register_framebuffer(&fbi->fb, NULL);
if (ret < 0)
goto failed;
diff -ruN linux-2.6.9-rc1/drivers/video/sgivwfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/sgivwfb.c
--- linux-2.6.9-rc1/drivers/video/sgivwfb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/sgivwfb.c 2004-09-06 13:11:51.338492088 +1000
@@ -811,7 +811,7 @@
if (fb_alloc_cmap(&info->cmap, 256, 0) < 0)
goto fail_color_map;
- if (register_framebuffer(info) < 0) {
+ if (register_framebuffer(info, device) < 0) {
printk(KERN_ERR "sgivwfb: couldn't register framebuffer\n");
goto fail_register_framebuffer;
}
diff -ruN linux-2.6.9-rc1/drivers/video/sis/sis_main.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/sis/sis_main.c
--- linux-2.6.9-rc1/drivers/video/sis/sis_main.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/sis/sis_main.c 2004-09-06 13:11:51.342491480 +1000
@@ -5572,7 +5572,7 @@
vc_resize_con(1, 1, 0);
#endif
- if(register_framebuffer(sis_fb_info) < 0) {
+ if(register_framebuffer(sis_fb_info, &pdev->dev) < 0) {
printk(KERN_ERR "sisfb: Fatal error: Failed to register framebuffer\n");
iounmap((void *)ivideo->video_vbase);
iounmap((void *)ivideo->mmio_vbase);
diff -ruN linux-2.6.9-rc1/drivers/video/skeletonfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/skeletonfb.c
--- linux-2.6.9-rc1/drivers/video/skeletonfb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/skeletonfb.c 2004-09-06 13:11:51.343491328 +1000
@@ -569,7 +569,14 @@
*/
info.var = xxxfb_var;
- if (register_framebuffer(&info) < 0)
+ /*
+ * The second parameter is the struct device. If your framebuffer
+ * is a PCI device or otherwise maps to the device tree, you
+ * should send the struct device to register_framebuffer. Code such
+ * as suspend2 will then be able to keep your device enabled while
+ * suspending other devices. (Nigel Cunningham)
+ */
+ if (register_framebuffer(&info, NULL) < 0)
return -EINVAL;
printk(KERN_INFO "fb%d: %s frame buffer device\n", info.node,
info.fix.id);
diff -ruN linux-2.6.9-rc1/drivers/video/sstfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/sstfb.c
--- linux-2.6.9-rc1/drivers/video/sstfb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/sstfb.c 2004-09-06 13:11:51.345491024 +1000
@@ -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 -ruN linux-2.6.9-rc1/drivers/video/stifb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/stifb.c
--- linux-2.6.9-rc1/drivers/video/stifb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/stifb.c 2004-09-06 13:11:51.346490872 +1000
@@ -1344,7 +1344,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 -ruN linux-2.6.9-rc1/drivers/video/sun3fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/sun3fb.c
--- linux-2.6.9-rc1/drivers/video/sun3fb.c 2004-01-13 14:18:05.000000000 +1100
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/sun3fb.c 2004-09-06 13:11:51.348490568 +1000
@@ -641,7 +641,7 @@
sun3fb_set_var(var, -1, &fb->info);
- if (register_framebuffer(&fb->info) < 0) {
+ if (register_framebuffer(&fb->info, NULL) < 0) {
kfree(fb);
return -EINVAL;
}
diff -ruN linux-2.6.9-rc1/drivers/video/tcx.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/tcx.c
--- linux-2.6.9-rc1/drivers/video/tcx.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/tcx.c 2004-09-06 13:11:51.349490416 +1000
@@ -447,7 +447,7 @@
tcx_init_fix(&all->info, linebytes);
- if (register_framebuffer(&all->info) < 0) {
+ if (register_framebuffer(&all->info, NULL) < 0) {
printk(KERN_ERR "tcx: Could not register framebuffer.\n");
fb_dealloc_cmap(&all->info.cmap);
kfree(all);
diff -ruN linux-2.6.9-rc1/drivers/video/tdfxfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/tdfxfb.c
--- linux-2.6.9-rc1/drivers/video/tdfxfb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/tdfxfb.c 2004-09-06 13:11:51.351490112 +1000
@@ -1293,7 +1293,7 @@
goto out_err;
}
- if (register_framebuffer(info) < 0) {
+ if (register_framebuffer(info, &pdev->dev) < 0) {
printk("tdfxfb: can't register framebuffer\n");
fb_dealloc_cmap(&info->cmap);
goto out_err;
diff -ruN linux-2.6.9-rc1/drivers/video/tgafb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/tgafb.c
--- linux-2.6.9-rc1/drivers/video/tgafb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/tgafb.c 2004-09-06 13:11:51.354489656 +1000
@@ -1454,7 +1454,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 -ruN linux-2.6.9-rc1/drivers/video/tridentfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/tridentfb.c
--- linux-2.6.9-rc1/drivers/video/tridentfb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/tridentfb.c 2004-09-06 13:11:51.355489504 +1000
@@ -1164,7 +1164,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, &dev->dev) < 0) {
output("Could not register Trident framebuffer\n");
return -EINVAL;
}
diff -ruN linux-2.6.9-rc1/drivers/video/tx3912fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/tx3912fb.c
--- linux-2.6.9-rc1/drivers/video/tx3912fb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/tx3912fb.c 2004-09-06 13:11:51.356489352 +1000
@@ -307,7 +307,7 @@
fb_alloc_cmap(&info->cmap, size, 0);
- if (register_framebuffer(&fb_info) < 0)
+ if (register_framebuffer(&fb_info, NULL) < 0)
return -1;
printk(KERN_INFO "fb%d: TX3912 frame buffer using %uKB.\n",
diff -ruN linux-2.6.9-rc1/drivers/video/valkyriefb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/valkyriefb.c
--- linux-2.6.9-rc1/drivers/video/valkyriefb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/valkyriefb.c 2004-09-06 13:11:51.356489352 +1000
@@ -385,7 +385,7 @@
/* "can't happen" */
printk(KERN_ERR "valkyriefb: can't set default video mode\n");
- if ((err = register_framebuffer(&p->info)) != 0)
+ if ((err = register_framebuffer(&p->info, NULL)) != 0)
goto out_free;
printk(KERN_INFO "fb%d: valkyrie frame buffer device\n", p->info.node);
diff -ruN linux-2.6.9-rc1/drivers/video/vesafb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/vesafb.c
--- linux-2.6.9-rc1/drivers/video/vesafb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/vesafb.c 2004-09-06 13:11:51.357489200 +1000
@@ -383,7 +383,7 @@
err = -ENXIO;
goto err;
}
- if (register_framebuffer(info)<0) {
+ if (register_framebuffer(info, device)<0) {
err = -EINVAL;
fb_dealloc_cmap(&info->cmap);
goto err;
diff -ruN linux-2.6.9-rc1/drivers/video/vfb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/vfb.c
--- linux-2.6.9-rc1/drivers/video/vfb.c 2004-06-18 12:44:12.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/vfb.c 2004-09-06 13:11:51.362488440 +1000
@@ -447,7 +447,7 @@
if (retval < 0)
goto err1;
- retval = register_framebuffer(info);
+ retval = register_framebuffer(info, device);
if (retval < 0)
goto err2;
dev_set_drvdata(&dev->dev, info);
diff -ruN linux-2.6.9-rc1/drivers/video/vga16fb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/vga16fb.c
--- linux-2.6.9-rc1/drivers/video/vga16fb.c 2004-08-30 16:01:11.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/vga16fb.c 2004-09-06 13:11:51.363488288 +1000
@@ -1389,7 +1389,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 -ruN linux-2.6.9-rc1/drivers/video/virgefb.c software-suspend-linux-2.6.9-rc1-rev3/drivers/video/virgefb.c
--- linux-2.6.9-rc1/drivers/video/virgefb.c 2004-06-18 12:44:12.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/drivers/video/virgefb.c 2004-09-06 13:11:51.365487984 +1000
@@ -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 -ruN linux-2.6.9-rc1/include/linux/fb.h software-suspend-linux-2.6.9-rc1-rev3/include/linux/fb.h
--- linux-2.6.9-rc1/include/linux/fb.h 2004-08-30 16:01:16.000000000 +1000
+++ software-suspend-linux-2.6.9-rc1-rev3/include/linux/fb.h 2004-09-06 13:11:51.394483576 +1000
@@ -681,7 +681,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);
next prev parent reply other threads:[~2004-09-06 3:41 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-03 5:02 Devices don't get linked to their class Nigel Cunningham
2004-09-04 12:41 ` Antonino A. Daplas
2004-09-05 6:21 ` Nigel Cunningham
2004-09-05 10:40 ` Antonino A. Daplas
2004-09-05 21:45 ` Nigel Cunningham
2004-09-06 3:38 ` Nigel Cunningham [this message]
[not found] ` <32016.10.250.10.1.1094456212.squirrel@sq04.pol.net>
2004-09-06 21:56 ` [PATCH] " Nigel Cunningham
2004-09-07 19:50 ` Kronos
2004-09-08 0:55 ` Antonino A. Daplas
2004-09-08 3:21 ` Nigel Cunningham
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1094441896.19674.24.camel@laptop.cunninghams \
--to=ncunningham@linuxmail.org \
--cc=adaplas@pol.net \
--cc=linux-fbdev-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).