struct tridentfb_par {
        void __iomem *io_virt;  /* iospace virtual memory address */
+       u32 pseudo_pal[16];
 };
 
 static unsigned char eng_oper; /* engine operation... */
 static struct fb_ops tridentfb_ops;
 
-/* FIXME:kmalloc these 3 instead */
-static u32 pseudo_pal[16];
-
-static struct fb_var_screeninfo default_var;
-
 static struct fb_fix_screeninfo tridentfb_fix = {
        .id = "Trident",
        .type = FB_TYPE_PACKED_PIXELS,
 #ifdef CONFIG_FB_TRIDENT_ACCEL
        info->flags |= FBINFO_HWACCEL_COPYAREA | FBINFO_HWACCEL_FILLRECT;
 #endif
-       info->pseudo_palette = pseudo_pal;
-
-       if (!fb_find_mode(&default_var, info,
+       if (!fb_find_mode(&info->var, info,
                          mode_option, NULL, 0, NULL, bpp)) {
                err = -EINVAL;
                goto out_unmap2;
                goto out_unmap2;
 
        if (defaultaccel && acc)
-               default_var.accel_flags |= FB_ACCELF_TEXT;
+               info->var.accel_flags |= FB_ACCELF_TEXT;
        else
-               default_var.accel_flags &= ~FB_ACCELF_TEXT;
-       default_var.activate |= FB_ACTIVATE_NOW;
-       info->var = default_var;
+               info->var.accel_flags &= ~FB_ACCELF_TEXT;
+       info->var.activate |= FB_ACTIVATE_NOW;
        info->device = &dev->dev;
        if (register_framebuffer(info) < 0) {
                printk(KERN_ERR "tridentfb: could not register Trident framebuffer\n");
                goto out_unmap2;
        }
        output("fb%d: %s frame buffer device %dx%d-%dbpp\n",
-          info->node, info->fix.id, default_var.xres,
-          default_var.yres, default_var.bits_per_pixel);
+          info->node, info->fix.id, info->var.xres,
+          info->var.yres, info->var.bits_per_pixel);
 
        pci_set_drvdata(dev, info);
        return 0;