Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git] / drivers / video / macfb.c
index 9baa40a..80a0438 100644 (file)
@@ -24,7 +24,6 @@
 #include <linux/errno.h>
 #include <linux/string.h>
 #include <linux/mm.h>
-#include <linux/tty.h>
 #include <linux/slab.h>
 #include <linux/delay.h>
 #include <linux/nubus.h>
@@ -589,7 +588,6 @@ static struct fb_ops macfb_ops = {
        .fb_fillrect    = cfb_fillrect,
        .fb_copyarea    = cfb_copyarea,
        .fb_imageblit   = cfb_imageblit,
-       .fb_cursor      = soft_cursor,
 };
 
 void __init macfb_setup(char *options)
@@ -610,13 +608,19 @@ void __init macfb_setup(char *options)
        }
 }
 
-void __init macfb_init(void)
+static int __init macfb_init(void)
 {
        int video_cmap_len, video_is_nubus = 0;
        struct nubus_dev* ndev = NULL;
+       char *option = NULL;
+       int err;
+
+       if (fb_get_options("macfb", &option))
+               return -ENODEV;
+       macfb_setup(option);
 
        if (!MACH_IS_MAC) 
-               return;
+               return -ENODEV;
 
        /* There can only be one internal video controller anyway so
           we're not too worried about this */
@@ -660,6 +664,9 @@ void __init macfb_init(void)
        case 1:
                /* XXX: I think this will catch any program that tries
                   to do FBIO_PUTCMAP when the visual is monochrome */
+               macfb_defined.red.length = macfb_defined.bits_per_pixel;
+               macfb_defined.green.length = macfb_defined.bits_per_pixel;
+               macfb_defined.blue.length = macfb_defined.bits_per_pixel;
                video_cmap_len = 0;
                macfb_fix.visual = FB_VISUAL_MONO01;
                break;
@@ -947,15 +954,16 @@ void __init macfb_init(void)
        fb_info.var             = macfb_defined;
        fb_info.fix             = macfb_fix;
        fb_info.pseudo_palette  = pseudo_palette;
-       fb_info.flags           = FBINFO_FLAG_DEFAULT;
+       fb_info.flags           = FBINFO_DEFAULT;
 
        fb_alloc_cmap(&fb_info.cmap, video_cmap_len, 0);
        
-       if (register_framebuffer(&fb_info) < 0)
-               return;
-
-       printk("fb%d: %s frame buffer device\n",
-              fb_info.node, fb_info.fix.id);
+       err = register_framebuffer(&fb_info);
+       if (!err)
+               printk("fb%d: %s frame buffer device\n",
+                      fb_info.node, fb_info.fix.id);
+       return err;
 }
 
+module_init(macfb_init);
 MODULE_LICENSE("GPL");