Move vgag16fb's option parsing into the driver's probe function and generate the rest of the module's init/exit functions from macros. Keep the options code, although there are no options defined. Signed-off-by: Thomas Zimmermann <tzimmermann@xxxxxxx> --- drivers/video/fbdev/vga16fb.c | 35 ++++++++++------------------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/drivers/video/fbdev/vga16fb.c b/drivers/video/fbdev/vga16fb.c index f7c1bb018843..e7767ed50c5b 100644 --- a/drivers/video/fbdev/vga16fb.c +++ b/drivers/video/fbdev/vga16fb.c @@ -1321,12 +1321,21 @@ static int __init vga16fb_setup(char *options) static int vga16fb_probe(struct platform_device *dev) { +#ifndef MODULE + char *option = NULL; +#endif struct screen_info *si; struct fb_info *info; struct vga16fb_par *par; int i; int ret = 0; +#ifndef MODULE + if (fb_get_options("vga16fb", &option)) + return -ENODEV; + vga16fb_setup(option); +#endif + si = dev_get_platdata(&dev->dev); if (!si) return -ENODEV; @@ -1449,31 +1458,7 @@ static struct platform_driver vga16fb_driver = { .id_table = vga16fb_driver_id_table, }; -static int __init vga16fb_init(void) -{ - int ret; -#ifndef MODULE - char *option = NULL; - - if (fb_get_options("vga16fb", &option)) - return -ENODEV; - - vga16fb_setup(option); -#endif - - ret = platform_driver_register(&vga16fb_driver); - if (ret) - return ret; - - return 0; -} - -static void __exit vga16fb_exit(void) -{ - platform_driver_unregister(&vga16fb_driver); -} +module_platform_driver(vga16fb_driver); MODULE_DESCRIPTION("Legacy VGA framebuffer device driver"); MODULE_LICENSE("GPL"); -module_init(vga16fb_init); -module_exit(vga16fb_exit); -- 2.36.1