xres, yres, xres_virtual, yres_virtual, is_color, is_dual, is_tft);
 }
 
-
-static int
-s1d13xxxfb_remove(struct platform_device *pdev)
+static void __s1d13xxxfb_remove(struct platform_device *pdev)
 {
        struct fb_info *info = platform_get_drvdata(pdev);
        struct s1d13xxxfb_par *par = NULL;
                           resource_size(&pdev->resource[0]));
        release_mem_region(pdev->resource[1].start,
                           resource_size(&pdev->resource[1]));
+}
+
+static int s1d13xxxfb_remove(struct platform_device *pdev)
+{
+       struct fb_info *info = platform_get_drvdata(pdev);
+
+       unregister_framebuffer(info);
+       __s1d13xxxfb_remove(pdev);
        return 0;
 }
 
        return 0;
 
 bail:
-       s1d13xxxfb_remove(pdev);
+       __s1d13xxxfb_remove(pdev);
        return ret;
 
 }