hgafb: convert to new platform driver API
authorKrzysztof Helt <krzysztof.h1@wp.pl>
Thu, 24 Jul 2008 04:31:26 +0000 (21:31 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 24 Jul 2008 17:47:39 +0000 (10:47 -0700)
Convert the hgafb driver to use new platform driver API.

Addresses http://bugzilla.kernel.org/show_bug.cgi?id=9689

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Cc: Anton Vorontsov <avorontsov@ru.mvista.com>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/video/hgafb.c

index c18880d..0129c04 100644 (file)
@@ -551,7 +551,7 @@ static struct fb_ops hgafb_ops = {
         *  Initialization
         */
 
-static int __init hgafb_probe(struct device *device)
+static int __init hgafb_probe(struct platform_device *pdev)
 {
        struct fb_info *info;
 
@@ -565,7 +565,7 @@ static int __init hgafb_probe(struct device *device)
        printk(KERN_INFO "hgafb: %s with %ldK of memory detected.\n",
                hga_type_name, hga_vram_len/1024);
 
-       info = framebuffer_alloc(0, NULL);
+       info = framebuffer_alloc(0, &pdev->dev);
        if (!info) {
                iounmap(hga_vram);
                return -ENOMEM;
@@ -593,13 +593,13 @@ static int __init hgafb_probe(struct device *device)
 
         printk(KERN_INFO "fb%d: %s frame buffer device\n",
                info->node, info->fix.id);
-       dev_set_drvdata(device, info);
+       platform_set_drvdata(pdev, info);
        return 0;
 }
 
-static int hgafb_remove(struct device *device)
+static int hgafb_remove(struct platform_device *pdev)
 {
-       struct fb_info *info = dev_get_drvdata(device);
+       struct fb_info *info = platform_get_drvdata(pdev);
 
        hga_txt_mode();
        hga_clear_screen();
@@ -620,16 +620,15 @@ static int hgafb_remove(struct device *device)
        return 0;
 }
 
-static struct device_driver hgafb_driver = {
-       .name = "hgafb",
-       .bus  = &platform_bus_type,
+static struct platform_driver hgafb_driver = {
        .probe = hgafb_probe,
        .remove = hgafb_remove,
+       .driver = {
+               .name = "hgafb",
+       },
 };
 
-static struct platform_device hgafb_device = {
-       .name = "hgafb",
-};
+static struct platform_device *hgafb_device;
 
 static int __init hgafb_init(void)
 {
@@ -638,12 +637,15 @@ static int __init hgafb_init(void)
        if (fb_get_options("hgafb", NULL))
                return -ENODEV;
 
-       ret = driver_register(&hgafb_driver);
+       ret = platform_driver_register(&hgafb_driver);
 
        if (!ret) {
-               ret = platform_device_register(&hgafb_device);
-               if (ret)
-                       driver_unregister(&hgafb_driver);
+               hgafb_device = platform_device_register_simple("hgafb", 0, NULL, 0);
+
+               if (IS_ERR(hgafb_device)) {
+                       platform_driver_unregister(&hgafb_driver);
+                       ret = PTR_ERR(hgafb_device);
+               }
        }
 
        return ret;
@@ -651,8 +653,8 @@ static int __init hgafb_init(void)
 
 static void __exit hgafb_exit(void)
 {
-       platform_device_unregister(&hgafb_device);
-       driver_unregister(&hgafb_driver);
+       platform_device_unregister(hgafb_device);
+       platform_driver_unregister(&hgafb_driver);
 }
 
 /* -------------------------------------------------------------------------