linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Framebuffer and non-PCI devices
@ 2005-02-19 18:25 Jon Smirl
  2005-02-19 18:40 ` Geert Uytterhoeven
  0 siblings, 1 reply; 7+ messages in thread
From: Jon Smirl @ 2005-02-19 18:25 UTC (permalink / raw)
  To: fbdev

Are any of the framebuffers non-PCI devices?

Looking through the code fb_info->device appears to be filled in by
only a subset of the drivers. Can fb_info->device be converted to a
pci device? I would also add it as a parameter to register_fb() in
order to make sure it gets filled in. Are all of the drivers converted
to register_fb()?

-- 
Jon Smirl
jonsmirl@gmail.com


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Framebuffer and non-PCI devices
  2005-02-19 18:25 Framebuffer and non-PCI devices Jon Smirl
@ 2005-02-19 18:40 ` Geert Uytterhoeven
  2005-02-19 21:59   ` Jon Smirl
  0 siblings, 1 reply; 7+ messages in thread
From: Geert Uytterhoeven @ 2005-02-19 18:40 UTC (permalink / raw)
  To: fbdev

On Sat, 19 Feb 2005, Jon Smirl wrote:
> Are any of the framebuffers non-PCI devices?

Yes.

> Looking through the code fb_info->device appears to be filled in by
> only a subset of the drivers. Can fb_info->device be converted to a
> pci device? I would also add it as a parameter to register_fb() in

Hence, no, it cannot be a converted to a pci_dev in all cases.

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Framebuffer and non-PCI devices
  2005-02-19 18:40 ` Geert Uytterhoeven
@ 2005-02-19 21:59   ` Jon Smirl
  2005-02-19 23:38     ` Antonino A. Daplas
  2005-02-20  0:05     ` Kronos
  0 siblings, 2 replies; 7+ messages in thread
From: Jon Smirl @ 2005-02-19 21:59 UTC (permalink / raw)
  To: linux-fbdev-devel

I started editing all of the drivers to make assigning fb_info->device
explicit.  Does this look like it is useful? I was surprised some
architectures don't make use of 'struct device'. If this is
interesting there are about ten more drivers that I need to patch.  I
did find several drivers which have device struct's that are not
assigning them to fb_info->device.

-- 
Jon Smirl
jonsmirl@gmail.com


===== drivers/video/68328fb.c 1.8 vs edited =====
--- 1.8/drivers/video/68328fb.c	2004-09-22 16:28:16 -04:00
+++ edited/drivers/video/68328fb.c	2005-02-19 15:12:20 -05:00
@@ -477,7 +477,7 @@
 
 	fb_alloc_cmap(&fb_info.cmap, 256, 0);
 
-	if (register_framebuffer(&fb_info) < 0) {
+	if (register_framebuffer(&fb_info, NULL) < 0) {
 		return -EINVAL;
 	}
 
===== drivers/video/acornfb.c 1.34 vs edited =====
--- 1.34/drivers/video/acornfb.c	2004-11-07 21:13:25 -05:00
+++ edited/drivers/video/acornfb.c	2005-02-19 15:12:55 -05:00
@@ -1449,7 +1449,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, dev) < 0)
 		return -EINVAL;
 	return 0;
 }
===== drivers/video/amba-clcd.c 1.5 vs edited =====
--- 1.5/drivers/video/amba-clcd.c	2004-12-30 19:00:46 -05:00
+++ edited/drivers/video/amba-clcd.c	2005-02-19 15:16:50 -05:00
@@ -414,7 +414,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, &fb->dev.dev);
 	if (ret == 0)
 		goto out;
 
===== drivers/video/amifb.c 1.38 vs edited =====
--- 1.38/drivers/video/amifb.c	2004-11-11 03:39:04 -05:00
+++ edited/drivers/video/amifb.c	2005-02-19 15:18:36 -05:00
@@ -2438,7 +2438,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;
 	}
===== drivers/video/asiliantfb.c 1.6 vs edited =====
--- 1.6/drivers/video/asiliantfb.c	2004-10-29 04:13:41 -04:00
+++ edited/drivers/video/asiliantfb.c	2005-02-19 14:35:18 -05:00
@@ -528,11 +528,6 @@
 
 	fb_alloc_cmap(&p->cmap, 256, 0);
 
-	if (register_framebuffer(p) < 0) {
-		printk(KERN_ERR "C&T 69000 framebuffer failed to register\n");
-		return;
-	}
-
 	printk(KERN_INFO "fb%d: Asiliant 69000 frame buffer (%dK RAM detected)\n",
 		p->node, p->fix.smem_len / 1024);
 
@@ -573,6 +568,10 @@
 	pci_write_config_dword(dp, 4, 0x02800083);
 	writeb(3, p->screen_base + 0x400784);
 
+	if (register_framebuffer(p, &dp->dev) < 0) {
+		printk(KERN_ERR "C&T 69000 framebuffer failed to register\n");
+		return -ENODEV;
+	}
 	init_asiliant(p, addr);
 
 	pci_set_drvdata(dp, p);
===== drivers/video/atafb.c 1.23 vs edited =====
--- 1.23/drivers/video/atafb.c	2004-05-10 07:25:55 -04:00
+++ edited/drivers/video/atafb.c	2005-02-19 15:19:34 -05:00
@@ -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",
===== drivers/video/au1100fb.c 1.1 vs edited =====
--- 1.1/drivers/video/au1100fb.c	2005-01-31 01:33:41 -05:00
+++ edited/drivers/video/au1100fb.c	2005-02-19 15:20:23 -05:00
@@ -596,7 +596,7 @@
 	fbgen_do_set_var(&disp.var, 1, &fb_info.gen);
 	fbgen_set_disp(-1, &fb_info.gen);
 	fbgen_install_cmap(0, &fb_info.gen);
-	if (register_framebuffer(&fb_info.gen.info) < 0)
+	if (register_framebuffer(&fb_info.gen.info, NULL) < 0)
 		return -EINVAL;
 	printk(KERN_INFO "fb%d: %s frame buffer device\n",
 			GET_FB_IDX(fb_info.gen.info.node),
===== drivers/video/bw2.c 1.16 vs edited =====
--- 1.16/drivers/video/bw2.c	2004-11-27 09:52:46 -05:00
+++ edited/drivers/video/bw2.c	2005-02-19 15:20:59 -05:00
@@ -366,7 +366,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;
===== drivers/video/cg14.c 1.17 vs edited =====
--- 1.17/drivers/video/cg14.c	2005-02-05 00:32:58 -05:00
+++ edited/drivers/video/cg14.c	2005-02-19 15:21:40 -05:00
@@ -573,7 +573,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);
===== drivers/video/cg3.c 1.17 vs edited =====
--- 1.17/drivers/video/cg3.c	2005-02-15 10:40:51 -05:00
+++ edited/drivers/video/cg3.c	2005-02-19 15:22:26 -05:00
@@ -426,7 +426,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);
===== drivers/video/cg6.c 1.13 vs edited =====
--- 1.13/drivers/video/cg6.c	2005-01-02 04:37:36 -05:00
+++ edited/drivers/video/cg6.c	2005-02-19 15:22:14 -05:00
@@ -738,7 +738,7 @@
 	fb_set_cmap(&all->info.cmap, &all->info);
 	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);
===== drivers/video/chipsfb.c 1.25 vs edited =====
--- 1.25/drivers/video/chipsfb.c	2004-10-19 05:40:21 -04:00
+++ edited/drivers/video/chipsfb.c	2005-02-19 16:03:45 -05:00
@@ -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, struct pci_dev *dp,
unsigned long addr)
 {
 	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, &dp->dev) < 0) {
 		printk(KERN_ERR "C&T 65550 framebuffer failed to register\n");
 		return;
 	}
@@ -417,7 +417,7 @@
 		return -ENOMEM;
 	}
 	p->device = &dp->dev;
-	init_chips(p, addr);
+	init_chips(p, dp, addr);
 
 #ifdef CONFIG_PMAC_PBOOK
 	pmu_register_sleep_notifier(&chips_sleep_notifier);
===== drivers/video/cirrusfb.c 1.37 vs edited =====
--- 1.37/drivers/video/cirrusfb.c	2004-11-11 03:39:04 -05:00
+++ edited/drivers/video/cirrusfb.c	2005-02-19 14:57:36 -05:00
@@ -2294,7 +2294,7 @@
 	return 0;
 }
 
-static int cirrusfb_register(struct cirrusfb_info *cinfo)
+static int cirrusfb_register(struct cirrusfb_info *cinfo, struct
device *device)
 {
 	struct fb_info *info;
 	int err;
@@ -2327,7 +2327,7 @@
 	/* set all the vital stuff */
 	cirrusfb_set_fbinfo(cinfo);
 
-	err = register_framebuffer(info);
+	err = register_framebuffer(info, device);
 	if (err < 0) {
 		printk (KERN_ERR "cirrusfb: could not register fb device; err = %d!\n", err);
 		goto err_dealloc_cmap;
@@ -2441,7 +2441,7 @@
 	printk ("Cirrus Logic chipset on PCI bus\n");
 	pci_set_drvdata(pdev, info);
 
-	return cirrusfb_register(cinfo);
+	return cirrusfb_register(cinfo, &pdev->dev);
 
 err_release_legacy:
 	if (release_io_ports)
@@ -2574,7 +2574,7 @@
 	printk (KERN_INFO "Cirrus Logic chipset on Zorro bus\n");
 	zorro_set_drvdata(z, info);
 
-	return cirrusfb_register(cinfo);
+	return cirrusfb_register(cinfo, NULL);
 
 err_unmap_regbase:
 	/* Parental advisory: explicit hack */
===== drivers/video/clps711xfb.c 1.23 vs edited =====
--- 1.23/drivers/video/clps711xfb.c	2004-09-22 16:28:16 -04:00
+++ edited/drivers/video/clps711xfb.c	2005-02-19 16:05:29 -05:00
@@ -416,7 +416,7 @@
 		clps_writeb(clps_readb(PDDR) | EDB_PD3_LCDBL, PDDR);
 	}
 
-	err = register_framebuffer(cfb);
+	err = register_framebuffer(cfb, NULL);
 
 out:	return err;
 }
===== drivers/video/controlfb.c 1.32 vs edited =====
--- 1.32/drivers/video/controlfb.c	2004-11-27 09:53:02 -05:00
+++ edited/drivers/video/controlfb.c	2005-02-19 16:06:13 -05:00
@@ -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);	
===== drivers/video/cyber2000fb.c 1.41 vs edited =====
--- 1.41/drivers/video/cyber2000fb.c	2005-01-08 00:44:25 -05:00
+++ edited/drivers/video/cyber2000fb.c	2005-02-19 14:47:46 -05:00
@@ -1399,9 +1399,7 @@
 		cfb->fb.var.xres, cfb->fb.var.yres,
 		h_sync / 1000, h_sync % 1000, v_sync);
 
-	if (cfb->dev)
-		cfb->fb.device = &cfb->dev->dev;
-	err = register_framebuffer(&cfb->fb);
+	err = register_framebuffer(&cfb->fb, (cfb->dev ? &cfb->dev->dev : NULL));
 
 failed:
 	return err;
===== drivers/video/cyberfb.c 1.17 vs edited =====
--- 1.17/drivers/video/cyberfb.c	2004-05-10 07:25:55 -04:00
+++ edited/drivers/video/cyberfb.c	2005-02-19 16:06:51 -05:00
@@ -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);
===== drivers/video/dnfb.c 1.28 vs edited =====
--- 1.28/drivers/video/dnfb.c	2004-09-22 16:28:16 -04:00
+++ edited/drivers/video/dnfb.c	2005-02-19 16:07:31 -05:00
@@ -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);
===== drivers/video/epson1355fb.c 1.18 vs edited =====
--- 1.18/drivers/video/epson1355fb.c	2004-11-11 03:39:04 -05:00
+++ edited/drivers/video/epson1355fb.c	2005-02-19 16:08:07 -05:00
@@ -705,7 +705,7 @@
 	backlight_enable(1);
 	lcd_enable(default_par, 1);
 
-	if (register_framebuffer(info) < 0) {
+	if (register_framebuffer(info, device) < 0) {
 		rc = -EINVAL;
 		goto bail;
 	}
===== drivers/video/fbmem.c 1.151 vs edited =====
--- 1.151/drivers/video/fbmem.c	2005-02-17 19:03:05 -05:00
+++ edited/drivers/video/fbmem.c	2005-02-19 14:14:59 -05:00
@@ -1055,7 +1055,7 @@
  */
 
 int
-register_framebuffer(struct fb_info *fb_info)
+register_framebuffer(struct fb_info *fb_info, struct device *device)
 {
 	int i;
 	struct class_device *c;
@@ -1068,6 +1068,7 @@
 		if (!registered_fb[i])
 			break;
 	fb_info->node = i;
+	fb_info->device = device;
 
 	c = class_simple_device_add(fb_class, MKDEV(FB_MAJOR, i),
 				    fb_info->device, "fb%d", i);
===== drivers/video/ffb.c 1.16 vs edited =====
--- 1.16/drivers/video/ffb.c	2004-11-11 03:39:04 -05:00
+++ edited/drivers/video/ffb.c	2005-02-19 16:08:41 -05:00
@@ -1017,7 +1017,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);
===== drivers/video/fm2fb.c 1.30 vs edited =====
--- 1.30/drivers/video/fm2fb.c	2004-11-19 02:03:13 -05:00
+++ edited/drivers/video/fm2fb.c	2005-02-19 16:10:27 -05:00
@@ -282,7 +282,7 @@
 	info->fix = fb_fix;
 	info->flags = FBINFO_DEFAULT;
 
-	if (register_framebuffer(info) < 0) {
+	if (register_framebuffer(info, &z->dev) < 0) {
 		fb_dealloc_cmap(&info->cmap);
 		framebuffer_release(info);
 		zorro_release_device(z);
===== drivers/video/g364fb.c 1.25 vs edited =====
--- 1.25/drivers/video/g364fb.c	2005-01-31 01:33:42 -05:00
+++ edited/drivers/video/g364fb.c	2005-02-19 16:11:05 -05:00
@@ -249,7 +249,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;
 }
===== drivers/video/gbefb.c 1.9 vs edited =====
--- 1.9/drivers/video/gbefb.c	2005-01-31 01:33:42 -05:00
+++ edited/drivers/video/gbefb.c	2005-02-19 16:11:47 -05:00
@@ -1193,7 +1193,7 @@
 	gbefb_check_var(&par->var, info);
 	gbefb_encode_fix(&info->fix, &info->var);
 
-	if (register_framebuffer(info) < 0) {
+	if (register_framebuffer(info, dev) < 0) {
 		printk(KERN_ERR "gbefb: couldn't register framebuffer\n");
 		ret = -ENXIO;
 		goto out_gbe_unmap;
===== drivers/video/hgafb.c 1.35 vs edited =====
--- 1.35/drivers/video/hgafb.c	2005-01-21 00:02:09 -05:00
+++ edited/drivers/video/hgafb.c	2005-02-19 14:52:45 -05:00
@@ -577,7 +577,7 @@
 	fb_info.fbops = &hgafb_ops;
 	fb_info.screen_base = hga_vram;
 
-        if (register_framebuffer(&fb_info) < 0) {
+        if (register_framebuffer(&fb_info, NULL) < 0) {
 		iounmap(hga_vram);
 		return -EINVAL;
 	}
===== drivers/video/hitfb.c 1.26 vs edited =====
--- 1.26/drivers/video/hitfb.c	2004-09-22 16:28:16 -04:00
+++ edited/drivers/video/hitfb.c	2005-02-19 16:12:29 -05:00
@@ -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",
===== drivers/video/hpfb.c 1.25 vs edited =====
--- 1.25/drivers/video/hpfb.c	2004-10-06 16:47:54 -04:00
+++ edited/drivers/video/hpfb.c	2005-02-19 16:14:34 -05:00
@@ -210,7 +210,7 @@
 #define HPFB_FBOMSB	0x5d	/* Frame buffer offset		*/
 #define HPFB_FBOLSB	0x5f
 
-static int __init hpfb_init_one(unsigned long phys_base, unsigned
long virt_base)
+static int __init hpfb_init_one(unsigned long phys_base, struct
dio_dev * d, unsigned long virt_base)
 {
 	unsigned long fboff, fb_width, fb_height, fb_start;
 
@@ -295,7 +295,7 @@
 
 	fb_alloc_cmap(&fb_info.cmap, 1 << hpfb_defined.bits_per_pixel, 0);
 
-	if (register_framebuffer(&fb_info) < 0) {
+	if (register_framebuffer(&fb_info, &d->dev) < 0) {
 		fb_dealloc_cmap(&fb_info.cmap);
 		return 1;
 	}
@@ -332,7 +332,7 @@
 	}
 	printk(KERN_INFO "Topcat found at DIO select code %d "
 	       "(secondary id %02x)\n", d->scode, (d->id >> 8) & 0xff);
-	if (hpfb_init_one(paddr, vaddr)) {
+	if (hpfb_init_one(paddr, d, vaddr)) {
 		if (d->scode >= DIOII_SCBASE)
 			iounmap((void *)vaddr);
 		return -ENOMEM;
@@ -398,7 +398,7 @@
 		if (!request_mem_region(INTFBPADDR, DIO_DEVSIZE, "Internal Topcat"))
 			return -EBUSY;
 		printk(KERN_INFO "Internal Topcat found (secondary id %02x)\n", sid);
-		if (hpfb_init_one(INTFBPADDR, INTFBVADDR)) {
+		if (hpfb_init_one(INTFBPADDR, NULL, INTFBVADDR)) {
 			return -ENOMEM;
 		}
 	}
===== drivers/video/igafb.c 1.24 vs edited =====
--- 1.24/drivers/video/igafb.c	2004-10-20 04:37:06 -04:00
+++ edited/drivers/video/igafb.c	2005-02-19 16:17:19 -05:00
@@ -361,9 +361,6 @@
 
 	fb_alloc_cmap(&info->cmap, video_cmap_len, 0);
 
-	if (register_framebuffer(info) < 0)
-		return 0;
-
 	printk("fb%d: %s frame buffer device at 0x%08lx [%dMB VRAM]\n",
 	       info->node, info->fix.id, 
 	       par->frame_buffer_phys, info->fix.smem_len >> 20);
@@ -533,7 +530,7 @@
 	info->pseudo_palette = (void *)(par + 1);
 	info->device = &pdev->dev;
 
-	if (!iga_init(info, par)) {
+	if (!(register_framebuffer(info, &pdev->dev) < 0) || (!iga_init(info, par))) {
 		iounmap((void *)par->io_base);
 		iounmap(info->screen_base);
 		if (par->mmap_map)
===== drivers/video/imsttfb.c 1.38 vs edited =====
--- 1.38/drivers/video/imsttfb.c	2004-11-21 05:51:36 -05:00
+++ edited/drivers/video/imsttfb.c	2005-02-19 14:33:32 -05:00
@@ -1449,11 +1449,6 @@
 
 	fb_alloc_cmap(&info->cmap, 0, 0);
 
-	if (register_framebuffer(info) < 0) {
-		kfree(info);
-		return;
-	}
-
 	tmp = (read_reg_le32(par->dc_regs, SSTATUS) & 0x0f00) >> 8;
 	printk("fb%u: %s frame buffer; %uMB vram; chip version %u\n",
 		info->node, info->fix.id, info->fix.smem_len >> 20, tmp);
@@ -1524,7 +1519,10 @@
 	par->cmap_regs = (__u8 *)ioremap(addr + 0x840000, 0x1000);
 	info->par = par;
 	info->pseudo_palette = (void *) (par + 1);
-	info->device = &pdev->dev;
+	if (register_framebuffer(info, &pdev->dev) < 0) {
+		kfree(info);
+		return -ENODEV;
+	}
 	init_imstt(info);
 
 	pci_set_drvdata(pdev, info);
===== drivers/video/leo.c 1.12 vs edited =====
--- 1.12/drivers/video/leo.c	2004-11-27 09:53:11 -05:00
+++ edited/drivers/video/leo.c	2005-02-19 16:19:30 -05:00
@@ -605,7 +605,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);
===== drivers/video/macfb.c 1.32 vs edited =====
--- 1.32/drivers/video/macfb.c	2004-09-22 16:28:16 -04:00
+++ edited/drivers/video/macfb.c	2005-02-19 16:20:13 -05:00
@@ -959,7 +959,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",
===== drivers/video/maxinefb.c 1.23 vs edited =====
--- 1.23/drivers/video/maxinefb.c	2005-01-31 01:33:42 -05:00
+++ edited/drivers/video/maxinefb.c	2005-02-19 16:23:18 -05:00
@@ -162,7 +162,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;
 }
===== drivers/video/neofb.c 1.42 vs edited =====
--- 1.42/drivers/video/neofb.c	2005-01-08 00:44:32 -05:00
+++ edited/drivers/video/neofb.c	2005-02-19 14:50:06 -05:00
@@ -2133,7 +2133,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;
 
===== drivers/video/offb.c 1.34 vs edited =====
--- 1.34/drivers/video/offb.c	2004-11-27 09:53:14 -05:00
+++ edited/drivers/video/offb.c	2005-02-19 16:25:36 -05:00
@@ -515,7 +515,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;
===== drivers/video/p9100.c 1.12 vs edited =====
--- 1.12/drivers/video/p9100.c	2004-11-27 09:53:18 -05:00
+++ edited/drivers/video/p9100.c	2005-02-19 16:26:14 -05:00
@@ -317,7 +317,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);
===== drivers/video/platinumfb.c 1.27 vs edited =====
--- 1.27/drivers/video/platinumfb.c	2004-11-27 09:53:22 -05:00
+++ edited/drivers/video/platinumfb.c	2005-02-19 16:27:05 -05:00
@@ -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;
 
===== drivers/video/pm2fb.c 1.39 vs edited =====
--- 1.39/drivers/video/pm2fb.c	2005-01-08 00:44:32 -05:00
+++ edited/drivers/video/pm2fb.c	2005-02-19 14:48:29 -05:00
@@ -1170,7 +1170,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",
===== drivers/video/pm3fb.c 1.10 vs edited =====
--- 1.10/drivers/video/pm3fb.c	2003-09-29 20:23:11 -04:00
+++ edited/drivers/video/pm3fb.c	2005-02-19 16:29:02 -05:00
@@ -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, NULL) < 0) {
 		DPRINTK(1, "Couldn't register framebuffer\n");
 		return;
 	}
===== drivers/video/pmag-aa-fb.c 1.1 vs edited =====
--- 1.1/drivers/video/pmag-aa-fb.c	2005-01-31 01:33:42 -05:00
+++ edited/drivers/video/pmag-aa-fb.c	2005-02-19 16:30:22 -05:00
@@ -459,7 +459,7 @@
 	/* Clear the screen. */
 	memset ((void *)ip->fb_start, 0, ip->fb_size);
 
-	if (register_framebuffer(&ip->info) < 0)
+	if (register_framebuffer(&ip->info, NULL) < 0)
 		return -EINVAL;
 
 	printk(KERN_INFO "fb%d: %s frame buffer in TC slot %d\n",
===== drivers/video/pmag-ba-fb.c 1.21 vs edited =====
--- 1.21/drivers/video/pmag-ba-fb.c	2005-01-31 01:33:42 -05:00
+++ edited/drivers/video/pmag-ba-fb.c	2005-02-19 16:30:18 -05:00
@@ -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;
 }
===== drivers/video/pmagb-b-fb.c 1.20 vs edited =====
--- 1.20/drivers/video/pmagb-b-fb.c	2005-01-31 01:33:42 -05:00
+++ edited/drivers/video/pmagb-b-fb.c	2005-02-19 16:30:21 -05:00
@@ -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;
 }
===== drivers/video/radeonfb.c 1.50 vs edited =====
--- 1.50/drivers/video/radeonfb.c	2005-02-11 01:57:44 -05:00
+++ edited/drivers/video/radeonfb.c	2005-02-19 14:49:17 -05:00
@@ -3017,8 +3017,7 @@
 	pci_set_drvdata(pdev, rinfo);
 	rinfo->next = board_list;
 	board_list = rinfo;
-	((struct fb_info *) rinfo)->device = &pdev->dev;
-	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(rinfo->fb_base);
 		iounmap(rinfo->mmio_base);
===== drivers/video/skeletonfb.c 1.27 vs edited =====
--- 1.27/drivers/video/skeletonfb.c	2004-10-25 15:56:29 -04:00
+++ edited/drivers/video/skeletonfb.c	2005-02-19 14:16:31 -05:00
@@ -550,6 +550,7 @@
 int __init xxxfb_init(void)
 {
     int cmap_len, retval;	
+    struct device *device = NULL; /* pointer to device structure */
    
     /*
      *  For kernel boot options (in 'video=xxxfb:<options>' format)
@@ -602,7 +603,7 @@
      */	
     info.var = xxxfb_var;
 	
-    if (register_framebuffer(&info) < 0)
+    if (register_framebuffer(&info, device) < 0)
 	return -EINVAL;
     printk(KERN_INFO "fb%d: %s frame buffer device\n", info.node,
 	   info.fix.id);
===== drivers/video/sstfb.c 1.37 vs edited =====
--- 1.37/drivers/video/sstfb.c	2005-01-08 00:44:25 -05:00
+++ edited/drivers/video/sstfb.c	2005-02-19 14:53:51 -05:00
@@ -1502,8 +1502,7 @@
 	fb_alloc_cmap(&info->cmap, 256, 0);
 
 	/* register fb */
-	info->device = &pdev->dev;
-	if (register_framebuffer(info) < 0) {
+	if (register_framebuffer(info, &pdev->dev) < 0) {
 		eprintk("can't register framebuffer.\n");
 		goto fail;
 	}
===== drivers/video/tdfxfb.c 1.56 vs edited =====
--- 1.56/drivers/video/tdfxfb.c	2005-01-08 00:44:32 -05:00
+++ edited/drivers/video/tdfxfb.c	2005-02-19 14:50:58 -05:00
@@ -4,7 +4,7 @@
  *
  * Author: Hannu Mallat <hmallat@cc.hut.fi>
  *
- * Copyright © 1999 Hannu Mallat
+ * Copyright  1999 Hannu Mallat
  * All rights reserved
  *
  * Created      : Thu Sep 23 18:17:43 1999, hmallat
@@ -1269,7 +1269,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;
===== drivers/video/tridentfb.c 1.23 vs edited =====
--- 1.23/drivers/video/tridentfb.c	2005-01-08 00:44:32 -05:00
+++ edited/drivers/video/tridentfb.c	2005-02-19 14:51:35 -05:00
@@ -1161,8 +1161,7 @@
 		default_var.accel_flags &= ~FB_ACCELF_TEXT;
 	default_var.activate |= FB_ACTIVATE_NOW;
 	fb_info.var = default_var;
-	fb_info.device = &dev->dev;
-	if (register_framebuffer(&fb_info) < 0) {
+	if (register_framebuffer(&fb_info, &dev->dev) < 0) {
 		output("Could not register Trident framebuffer\n");
 		return -EINVAL;
 	}
===== drivers/video/vesafb.c 1.46 vs edited =====
--- 1.46/drivers/video/vesafb.c	2005-01-25 16:50:28 -05:00
+++ edited/drivers/video/vesafb.c	2005-02-19 14:44:40 -05:00
@@ -410,7 +410,7 @@
 		err = -ENOMEM;
 		goto err;
 	}
-	if (register_framebuffer(info)<0) {
+	if (register_framebuffer(info, device) < 0) {
 		err = -EINVAL;
 		fb_dealloc_cmap(&info->cmap);
 		goto err;
@@ -424,10 +424,17 @@
 	return err;
 }
 
+static int __devexit vesafb_remove(struct device *device)
+{
+	printk(KERN_WARNING "vesafb: implement a remove function\n");
+	return 0;
+}
+
 static struct device_driver vesafb_driver = {
 	.name	= "vesafb",
 	.bus	= &platform_bus_type,
 	.probe	= vesafb_probe,
+	.remove = vesafb_remove,
 };
 
 static struct platform_device vesafb_device = {
===== drivers/video/vfb.c 1.32 vs edited =====
--- 1.32/drivers/video/vfb.c	2005-01-08 00:44:25 -05:00
+++ edited/drivers/video/vfb.c	2005-02-19 14:59:30 -05:00
@@ -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);
===== drivers/video/vga16fb.c 1.47 vs edited =====
--- 1.47/drivers/video/vga16fb.c	2005-01-04 21:48:33 -05:00
+++ edited/drivers/video/vga16fb.c	2005-02-19 14:58:56 -05:00
@@ -1400,7 +1400,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;
===== drivers/video/w100fb.c 1.1 vs edited =====
--- 1.1/drivers/video/w100fb.c	2005-01-15 17:31:05 -05:00
+++ edited/drivers/video/w100fb.c	2005-02-19 14:17:38 -05:00
@@ -605,7 +605,6 @@
 		return -ENOMEM;
 	}
 
-	info->device=dev;
 	par = info->par;
 	current_par=info->par;
 	dev_set_drvdata(dev, info);
@@ -658,7 +657,7 @@
 	w100fb_check_var(&info->var, info);
 	w100fb_set_par(info);
 
-	if (register_framebuffer(info) < 0) {
+	if (register_framebuffer(info, dev) < 0) {
 		kfree(info->pseudo_palette);
 		iounmap(remapped_base);
 		iounmap(remapped_regs);
===== drivers/video/aty/aty128fb.c 1.56 vs edited =====
--- 1.56/drivers/video/aty/aty128fb.c	2005-02-11 01:57:44 -05:00
+++ edited/drivers/video/aty/aty128fb.c	2005-02-19 14:19:01 -05:00
@@ -1845,7 +1845,7 @@
 
 	aty128_init_engine(par);
 
-	if (register_framebuffer(info) < 0)
+	if (register_framebuffer(info, &pdev->dev) < 0)
 		return 0;
 
 #ifdef CONFIG_PMAC_BACKLIGHT
===== drivers/video/aty/atyfb_base.c 1.83 vs edited =====
--- 1.83/drivers/video/aty/atyfb_base.c	2005-02-15 11:22:09 -05:00
+++ edited/drivers/video/aty/atyfb_base.c	2005-02-19 14:25:02 -05:00
@@ -2551,9 +2551,6 @@
 
 	fb_alloc_cmap(&info->cmap, 256, 0);
 
-	if (register_framebuffer(info) < 0)
-		goto aty_init_exit;
-
 	fb_list = info;
 
 	PRINTKI("fb%d: %s frame buffer device on %s\n",
@@ -3383,7 +3380,6 @@
 	}
 	par = info->par;
 	info->fix = atyfb_fix;
-	info->device = &pdev->dev;
 	par->pci_id = aty_chips[i].pci_id;
 	par->res_start = res_start;
 	par->res_size = res_size;
@@ -3399,6 +3395,9 @@
 		goto err_release_mem;
 
 	pci_set_drvdata(pdev, info);
+	
+	if (register_framebuffer(info, &pdev->dev) < 0)
+		goto err_release_io;
 
 	/* Init chip & register framebuffer */
 	if (aty_init(info, "PCI"))
===== drivers/video/aty/radeon_base.c 1.40 vs edited =====
--- 1.40/drivers/video/aty/radeon_base.c	2005-02-15 21:25:30 -05:00
+++ edited/drivers/video/aty/radeon_base.c	2005-02-19 14:20:02 -05:00
@@ -2362,7 +2362,7 @@
 	pci_set_drvdata(pdev, info);
 
 	/* Register with fbdev layer */
-	ret = register_framebuffer(info);
+	ret = register_framebuffer(info, &pdev->dev);
 	if (ret < 0) {
 		printk (KERN_ERR "radeonfb (%s): could not register framebuffer\n",
 			pci_name(rinfo->pdev));
===== drivers/video/i810/i810_main.c 1.29 vs edited =====
--- 1.29/drivers/video/i810/i810_main.c	2005-01-15 17:31:04 -05:00
+++ edited/drivers/video/i810/i810_main.c	2005-02-19 15:00:37 -05:00
@@ -1902,7 +1902,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");
===== drivers/video/intelfb/intelfbdrv.c 1.9 vs edited =====
--- 1.9/drivers/video/intelfb/intelfbdrv.c	2005-01-04 21:48:33 -05:00
+++ edited/drivers/video/intelfb/intelfbdrv.c	2005-02-19 15:01:34 -05:00
@@ -837,7 +837,7 @@
 	if (noregister)
 		bailout(dinfo);
 
-	if (register_framebuffer(dinfo->info) < 0) {
+	if (register_framebuffer(dinfo->info, &pdev->dev) < 0) {
 		ERR_MSG("Cannot register framebuffer.\n");
 		cleanup(dinfo);
 		return -ENODEV;
===== drivers/video/kyro/fbdev.c 1.10 vs edited =====
--- 1.10/drivers/video/kyro/fbdev.c	2004-10-20 09:47:58 -04:00
+++ edited/drivers/video/kyro/fbdev.c	2005-02-19 14:26:04 -05:00
@@ -735,8 +735,7 @@
 
 	fb_memset(info->screen_base, 0, size);
 
-	info->device = &pdev->dev;
-	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",
===== drivers/video/matrox/matroxfb_base.c 1.57 vs edited =====
--- 1.57/drivers/video/matrox/matroxfb_base.c	2005-02-02 03:12:10 -05:00
+++ edited/drivers/video/matrox/matroxfb_base.c	2005-02-19 14:27:10 -05:00
@@ -1876,8 +1876,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 */
 
-	ACCESS_FBINFO(fbcon).device = &ACCESS_FBINFO(pcidev)->dev;
-	if (register_framebuffer(&ACCESS_FBINFO(fbcon)) < 0) {
+	if (register_framebuffer(&ACCESS_FBINFO(fbcon),
&ACCESS_FBINFO(pcidev)->dev) < 0) {
 		goto failVideoIO;
 	}
 	printk("fb%d: %s frame buffer device\n",
===== drivers/video/matrox/matroxfb_crtc2.c 1.34 vs edited =====
--- 1.34/drivers/video/matrox/matroxfb_crtc2.c	2005-01-08 00:44:25 -05:00
+++ edited/drivers/video/matrox/matroxfb_crtc2.c	2005-02-19 16:22:35 -05:00
@@ -631,7 +631,7 @@
 	m2info->mmio.len = ACCESS_FBINFO(mmio.len);
 
 	matroxfb_dh_init_fix(m2info);
-	if (register_framebuffer(&m2info->fbcon)) {
+	if (register_framebuffer(&m2info->fbcon, m2info->fbcon.device)) {
 		return -ENXIO;
 	}
 	if (!m2info->initialized)
===== drivers/video/riva/fbdev.c 1.84 vs edited =====
--- 1.84/drivers/video/riva/fbdev.c	2005-01-08 00:44:07 -05:00
+++ edited/drivers/video/riva/fbdev.c	2005-02-19 14:28:53 -05:00
@@ -2053,7 +2053,7 @@
 
 	fb_destroy_modedb(info->monspecs.modedb);
 	info->monspecs.modedb = NULL;
-	ret = register_framebuffer(info);
+	ret = register_framebuffer(info, &pd->dev);
 	if (ret < 0) {
 		printk(KERN_ERR PFX
 			"error registering riva framebuffer\n");
===== drivers/video/savage/savagefb.c 1.5 vs edited =====
--- 1.5/drivers/video/savage/savagefb.c	2004-11-21 17:44:00 -05:00
+++ edited/drivers/video/savage/savagefb.c	2005-02-19 14:29:43 -05:00
@@ -2033,7 +2033,7 @@
 	fb_destroy_modedb(info->monspecs.modedb);
 	info->monspecs.modedb = NULL;
 
-	err = register_framebuffer (info);
+	err = register_framebuffer (info, &dev->dev);
 	if (err < 0)
 		goto failed;
 
===== drivers/video/sis/sis_main.c 1.34 vs edited =====
--- 1.34/drivers/video/sis/sis_main.c	2005-02-16 20:32:38 -05:00
+++ edited/drivers/video/sis/sis_main.c	2005-02-19 14:31:06 -05:00
@@ -5587,7 +5587,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(ivideo->video_vbase);
 			iounmap(ivideo->mmio_vbase);
===== include/linux/fb.h 1.95 vs edited =====
--- 1.95/include/linux/fb.h	2005-02-15 12:38:28 -05:00
+++ edited/include/linux/fb.h	2005-02-19 14:12:00 -05:00
@@ -803,7 +803,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 *device);
 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);


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_ide95&alloc_id\x14396&op=click

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Framebuffer and non-PCI devices
  2005-02-19 21:59   ` Jon Smirl
@ 2005-02-19 23:38     ` Antonino A. Daplas
  2005-02-20  1:17       ` Jon Smirl
  2005-02-22  4:01       ` James Simmons
  2005-02-20  0:05     ` Kronos
  1 sibling, 2 replies; 7+ messages in thread
From: Antonino A. Daplas @ 2005-02-19 23:38 UTC (permalink / raw)
  To: linux-fbdev-devel, Jon Smirl

On Sunday 20 February 2005 05:59, Jon Smirl wrote:
> I started editing all of the drivers to make assigning fb_info->device
> explicit.  Does this look like it is useful? I was surprised some
> architectures don't make use of 'struct device'. If this is
> interesting there are about ten more drivers that I need to patch.  I
> did find several drivers which have device struct's that are not
> assigning them to fb_info->device.

No, don't do this.  Either convert the driver to use framebuffer_alloc()/
framebuffer_release(), or let the driver explicitly set info->device.

Tony




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Framebuffer and non-PCI devices
  2005-02-19 21:59   ` Jon Smirl
  2005-02-19 23:38     ` Antonino A. Daplas
@ 2005-02-20  0:05     ` Kronos
  1 sibling, 0 replies; 7+ messages in thread
From: Kronos @ 2005-02-20  0:05 UTC (permalink / raw)
  To: linux-fbdev-devel

Il Sat, Feb 19, 2005 at 04:59:46PM -0500, Jon Smirl ha scritto: 
> I started editing all of the drivers to make assigning fb_info->device
> explicit.  Does this look like it is useful?

Look at framebuffer_alloc ;)

Luca
-- 
Home: http://kronoz.cjb.net
Windows NT: Designed for the Internet. The Internet: Designed for Unix.


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Framebuffer and non-PCI devices
  2005-02-19 23:38     ` Antonino A. Daplas
@ 2005-02-20  1:17       ` Jon Smirl
  2005-02-22  4:01       ` James Simmons
  1 sibling, 0 replies; 7+ messages in thread
From: Jon Smirl @ 2005-02-20  1:17 UTC (permalink / raw)
  To: adaplas; +Cc: linux-fbdev-devel

On Sun, 20 Feb 2005 07:38:29 +0800, Antonino A. Daplas
<adaplas@hotpop.com> wrote:
> No, don't do this.  Either convert the driver to use framebuffer_alloc()/
> framebuffer_release(), or let the driver explicitly set info->device.

I'll take a new tactic then. I'm trying to figure out how to wire my
VGA routing code into framebuffer. Only PCI devices need the routing
so I'm trying to come up with a way to identify them and not the other
devices. I have another idea now that is simpler, I'll code some of it
up and post it.

-- 
Jon Smirl
jonsmirl@gmail.com


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Framebuffer and non-PCI devices
  2005-02-19 23:38     ` Antonino A. Daplas
  2005-02-20  1:17       ` Jon Smirl
@ 2005-02-22  4:01       ` James Simmons
  1 sibling, 0 replies; 7+ messages in thread
From: James Simmons @ 2005-02-22  4:01 UTC (permalink / raw)
  To: linux-fbdev-devel; +Cc: Jon Smirl


> On Sunday 20 February 2005 05:59, Jon Smirl wrote:
> > I started editing all of the drivers to make assigning fb_info->device
> > explicit.  Does this look like it is useful? I was surprised some
> > architectures don't make use of 'struct device'. If this is
> > interesting there are about ten more drivers that I need to patch.  I
> > did find several drivers which have device struct's that are not
> > assigning them to fb_info->device.
> 
> No, don't do this.  Either convert the driver to use framebuffer_alloc()/
> framebuffer_release(), or let the driver explicitly set info->device.

Ug. Most fbdev drivers are not PCI devices.



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2005-02-22  4:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-02-19 18:25 Framebuffer and non-PCI devices Jon Smirl
2005-02-19 18:40 ` Geert Uytterhoeven
2005-02-19 21:59   ` Jon Smirl
2005-02-19 23:38     ` Antonino A. Daplas
2005-02-20  1:17       ` Jon Smirl
2005-02-22  4:01       ` James Simmons
2005-02-20  0:05     ` Kronos

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).