git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
drivers
/
video
/
vfb.c
diff --git
a/drivers/video/vfb.c
b/drivers/video/vfb.c
index
8b01918
..
77eed1f
100644
(file)
--- a/
drivers/video/vfb.c
+++ b/
drivers/video/vfb.c
@@
-20,6
+20,8
@@
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+
#include <asm/uaccess.h>
#include <linux/fb.h>
#include <linux/init.h>
#include <asm/uaccess.h>
#include <linux/fb.h>
#include <linux/init.h>
@@
-35,7
+37,7
@@
static void *videomemory;
static u_long videomemorysize = VIDEOMEMSIZE;
static void *videomemory;
static u_long videomemorysize = VIDEOMEMSIZE;
-
MODULE_PARM(videomemorysize, "l"
);
+
module_param(videomemorysize, ulong, 0
);
static struct fb_var_screeninfo vfb_default __initdata = {
.xres = 640,
static struct fb_var_screeninfo vfb_default __initdata = {
.xres = 640,
@@
-70,13
+72,7
@@
static struct fb_fix_screeninfo vfb_fix __initdata = {
};
static int vfb_enable __initdata = 0; /* disabled by default */
};
static int vfb_enable __initdata = 0; /* disabled by default */
-MODULE_PARM(vfb_enable, "i");
-
- /*
- * Interface used by the world
- */
-int vfb_init(void);
-int vfb_setup(char *);
+module_param(vfb_enable, bool, 0);
static int vfb_check_var(struct fb_var_screeninfo *var,
struct fb_info *info);
static int vfb_check_var(struct fb_var_screeninfo *var,
struct fb_info *info);
@@
-85,7
+81,7
@@
static int vfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
u_int transp, struct fb_info *info);
static int vfb_pan_display(struct fb_var_screeninfo *var,
struct fb_info *info);
u_int transp, struct fb_info *info);
static int vfb_pan_display(struct fb_var_screeninfo *var,
struct fb_info *info);
-static int vfb_mmap(struct fb_info *info,
struct file *file,
+static int vfb_mmap(struct fb_info *info,
struct vm_area_struct *vma);
static struct fb_ops vfb_ops = {
struct vm_area_struct *vma);
static struct fb_ops vfb_ops = {
@@
-96,7
+92,6
@@
static struct fb_ops vfb_ops = {
.fb_fillrect = cfb_fillrect,
.fb_copyarea = cfb_copyarea,
.fb_imageblit = cfb_imageblit,
.fb_fillrect = cfb_fillrect,
.fb_copyarea = cfb_copyarea,
.fb_imageblit = cfb_imageblit,
- .fb_cursor = soft_cursor,
.fb_mmap = vfb_mmap,
};
.fb_mmap = vfb_mmap,
};
@@
-373,13
+368,14
@@
static int vfb_pan_display(struct fb_var_screeninfo *var,
* Most drivers don't need their own mmap function
*/
* Most drivers don't need their own mmap function
*/
-static int vfb_mmap(struct fb_info *info,
struct file *file,
+static int vfb_mmap(struct fb_info *info,
struct vm_area_struct *vma)
{
return -EINVAL;
}
struct vm_area_struct *vma)
{
return -EINVAL;
}
-int __init vfb_setup(char *options)
+#ifndef MODULE
+static int __init vfb_setup(char *options)
{
char *this_opt;
{
char *this_opt;
@@
-396,6
+392,7
@@
int __init vfb_setup(char *options)
}
return 1;
}
}
return 1;
}
+#endif /* MODULE */
/*
* Initialisation
/*
* Initialisation
@@
-404,11
+401,11
@@
int __init vfb_setup(char *options)
static void vfb_platform_release(struct device *device)
{
// This is called when the reference count goes to zero.
static void vfb_platform_release(struct device *device)
{
// This is called when the reference count goes to zero.
+ dev_err(device, "This driver is broken, please bug the authors so they will fix it.\n");
}
}
-static int __init vfb_probe(struct
device *device
)
+static int __init vfb_probe(struct
platform_device *dev
)
{
{
- struct platform_device *dev = to_platform_device(device);
struct fb_info *info;
int retval = -ENOMEM;
struct fb_info *info;
int retval = -ENOMEM;
@@
-430,7
+427,7
@@
static int __init vfb_probe(struct device *device)
if (!info)
goto err;
if (!info)
goto err;
- info->screen_base = videomemory;
+ info->screen_base =
(char __iomem *)
videomemory;
info->fbops = &vfb_ops;
retval = fb_find_mode(&info->var, info, NULL,
info->fbops = &vfb_ops;
retval = fb_find_mode(&info->var, info, NULL,
@@
-450,7
+447,7
@@
static int __init vfb_probe(struct device *device)
retval = register_framebuffer(info);
if (retval < 0)
goto err2;
retval = register_framebuffer(info);
if (retval < 0)
goto err2;
-
dev_set_drvdata(&dev->
dev, info);
+
platform_set_drvdata(
dev, info);
printk(KERN_INFO
"fb%d: Virtual frame buffer device, using %ldK of video memory\n",
printk(KERN_INFO
"fb%d: Virtual frame buffer device, using %ldK of video memory\n",
@@
-465,9
+462,9
@@
err:
return retval;
}
return retval;
}
-static int vfb_remove(struct
device *device
)
+static int vfb_remove(struct
platform_device *dev
)
{
{
- struct fb_info *info =
dev_get_drvdata(device
);
+ struct fb_info *info =
platform_get_drvdata(dev
);
if (info) {
unregister_framebuffer(info);
if (info) {
unregister_framebuffer(info);
@@
-477,11
+474,12
@@
static int vfb_remove(struct device *device)
return 0;
}
return 0;
}
-static struct device_driver vfb_driver = {
- .name = "vfb",
- .bus = &platform_bus_type,
+static struct platform_driver vfb_driver = {
.probe = vfb_probe,
.remove = vfb_remove,
.probe = vfb_probe,
.remove = vfb_remove,
+ .driver = {
+ .name = "vfb",
+ },
};
static struct platform_device vfb_device = {
};
static struct platform_device vfb_device = {
@@
-492,31
+490,40
@@
static struct platform_device vfb_device = {
}
};
}
};
-int __init vfb_init(void)
+
static
int __init vfb_init(void)
{
int ret = 0;
{
int ret = 0;
+#ifndef MODULE
+ char *option = NULL;
+
+ if (fb_get_options("vfb", &option))
+ return -ENODEV;
+ vfb_setup(option);
+#endif
+
if (!vfb_enable)
return -ENXIO;
if (!vfb_enable)
return -ENXIO;
- ret = driver_register(&vfb_driver);
+ ret =
platform_
driver_register(&vfb_driver);
if (!ret) {
ret = platform_device_register(&vfb_device);
if (ret)
if (!ret) {
ret = platform_device_register(&vfb_device);
if (ret)
- driver_unregister(&vfb_driver);
+
platform_
driver_unregister(&vfb_driver);
}
return ret;
}
}
return ret;
}
+module_init(vfb_init);
+
#ifdef MODULE
static void __exit vfb_exit(void)
{
platform_device_unregister(&vfb_device);
#ifdef MODULE
static void __exit vfb_exit(void)
{
platform_device_unregister(&vfb_device);
- driver_unregister(&vfb_driver);
+
platform_
driver_unregister(&vfb_driver);
}
}
-module_init(vfb_init);
module_exit(vfb_exit);
MODULE_LICENSE("GPL");
module_exit(vfb_exit);
MODULE_LICENSE("GPL");