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 <tzimmerm...@suse.de>
---
 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

Reply via email to