clps711xfb: convert to proc_fops
[safe/jmp/linux-2.6] / drivers / video / sgivwfb.c
index ebb6756..f860122 100644 (file)
@@ -21,8 +21,7 @@
 
 #include <asm/io.h>
 #include <asm/mtrr.h>
-
-#include <setup_arch.h>
+#include <asm/visws/sgivw.h>
 
 #define INCLUDE_TIMING_TABLE_DATA
 #define DBE_REG_BASE par->regs
@@ -261,13 +260,13 @@ static int sgivwfb_check_var(struct fb_var_screeninfo *var,
        var->grayscale = 0;     /* No grayscale for now */
 
        /* determine valid resolution and timing */
-       for (min_mode = 0; min_mode < DBE_VT_SIZE; min_mode++) {
+       for (min_mode = 0; min_mode < ARRAY_SIZE(dbeVTimings); min_mode++) {
                if (dbeVTimings[min_mode].width >= var->xres &&
                    dbeVTimings[min_mode].height >= var->yres)
                        break;
        }
 
-       if (min_mode == DBE_VT_SIZE)
+       if (min_mode == ARRAY_SIZE(dbeVTimings))
                return -EINVAL; /* Resolution to high */
 
        /* XXX FIXME - should try to pick best refresh rate */
@@ -752,7 +751,7 @@ static int __init sgivwfb_probe(struct platform_device *dev)
        struct fb_info *info;
        char *monitor;
 
-       info = framebuffer_alloc(sizeof(struct sgivw_par) + sizeof(u32) * 256, &dev->dev);
+       info = framebuffer_alloc(sizeof(struct sgivw_par) + sizeof(u32) * 16, &dev->dev);
        if (!info)
                return -ENOMEM;
        par = info->par;
@@ -838,6 +837,8 @@ static int sgivwfb_remove(struct platform_device *dev)
                iounmap(par->regs);
                iounmap(info->screen_base);
                release_mem_region(DBE_REG_PHYS, DBE_REG_SIZE);
+               fb_dealloc_cmap(&info->cmap);
+               framebuffer_release(info);
        }
        return 0;
 }