tcx: use standard fields for framebuffer physical address and length
[firefly-linux-kernel-4.4.55.git] / drivers / video / vesafb.c
index e16322d157d0b9446a9e9cf6d0c2a99cc2898c7e..bd37ee1f6a251bce027920a4eab805b0bbcfc3de 100644 (file)
@@ -174,8 +174,17 @@ static int vesafb_setcolreg(unsigned regno, unsigned red, unsigned green,
        return err;
 }
 
+static void vesafb_destroy(struct fb_info *info)
+{
+       if (info->screen_base)
+               iounmap(info->screen_base);
+       release_mem_region(info->aperture_base, info->aperture_size);
+       framebuffer_release(info);
+}
+
 static struct fb_ops vesafb_ops = {
        .owner          = THIS_MODULE,
+       .fb_destroy     = vesafb_destroy,
        .fb_setcolreg   = vesafb_setcolreg,
        .fb_pan_display = vesafb_pan_display,
        .fb_fillrect    = cfb_fillrect,
@@ -286,6 +295,10 @@ static int __init vesafb_probe(struct platform_device *dev)
        info->pseudo_palette = info->par;
        info->par = NULL;
 
+       /* set vesafb aperture size for generic probing */
+       info->aperture_base = screen_info.lfb_base;
+       info->aperture_size = size_total;
+
        info->screen_base = ioremap(vesafb_fix.smem_start, vesafb_fix.smem_len);
        if (!info->screen_base) {
                printk(KERN_ERR
@@ -437,8 +450,8 @@ static int __init vesafb_probe(struct platform_device *dev)
        info->fbops = &vesafb_ops;
        info->var = vesafb_defined;
        info->fix = vesafb_fix;
-       info->flags = FBINFO_FLAG_DEFAULT |
-               (ypan) ? FBINFO_HWACCEL_YPAN : 0;
+       info->flags = FBINFO_FLAG_DEFAULT | FBINFO_MISC_FIRMWARE |
+               (ypan ? FBINFO_HWACCEL_YPAN : 0);
 
        if (!ypan)
                info->fbops->fb_pan_display = NULL;