#include <linux/serial_8250.h>
 #include <linux/sm501.h>
 #include <linux/pm.h>
+#include <linux/fb.h>
 #include <asm/machvec.h>
 #include <asm/rts7751r2d.h>
 #include <asm/voyagergx.h>
        },
 };
 
+static struct fb_videomode sm501_default_mode = {
+       .pixclock       = 35714,
+       .xres           = 640,
+       .yres           = 480,
+       .left_margin    = 105,
+       .right_margin   = 50,
+       .upper_margin   = 35,
+       .lower_margin   = 0,
+       .hsync_len      = 96,
+       .vsync_len      = 2,
+       .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+};
+
+static struct sm501_platdata_fbsub sm501_pdata_fbsub_pnl = {
+       .def_bpp        = 16,
+       .def_mode       = &sm501_default_mode,
+       .flags          = SM501FB_FLAG_USE_INIT_MODE |
+                         SM501FB_FLAG_USE_HWCURSOR |
+                         SM501FB_FLAG_USE_HWACCEL |
+                         SM501FB_FLAG_DISABLE_AT_EXIT,
+};
+
+static struct sm501_platdata_fbsub sm501_pdata_fbsub_crt = {
+       .flags          = (SM501FB_FLAG_USE_INIT_MODE |
+                          SM501FB_FLAG_USE_HWCURSOR |
+                          SM501FB_FLAG_USE_HWACCEL |
+                          SM501FB_FLAG_DISABLE_AT_EXIT),
+
+};
+
+static struct sm501_platdata_fb sm501_fb_pdata = {
+       .fb_route       = SM501_FB_OWN,
+       .fb_crt         = &sm501_pdata_fbsub_crt,
+       .fb_pnl         = &sm501_pdata_fbsub_pnl,
+       .flags          = SM501_FBPD_SWAP_FB_ENDIAN,
+};
+
+static struct sm501_platdata sm501_platform_data = {
+       .fb             = &sm501_fb_pdata,
+};
+
 static struct platform_device sm501_device = {
        .name           = "sm501",
        .id             = -1,
+       .dev            = {
+               .platform_data  = &sm501_platform_data,
+       },
        .num_resources  = ARRAY_SIZE(sm501_resources),
        .resource       = sm501_resources,
 };