};
 
 #ifdef CONFIG_EXYNOS_MIPI_DSIM
-int exynos_mipi_dsi_init(void);
+int exynos_mipi_dsi_init(struct exynos_platform_mipi_dsim *dsim_pd);
 #else
-static inline int exynos_mipi_dsi_init(void)
+static inline int exynos_mipi_dsi_init(
+                       struct exynos_platform_mipi_dsim *dsim_pd)
 {
        return 0;
 }
 
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static struct exynos_platform_mipi_dsim *dsim_pd;
-static struct exynos_platform_mipi_dsim dsim_platform_data_dt;
 static struct mipi_dsim_lcd_device mipi_lcd_device_dt;
 
 struct mipi_dsim_ddi {
        .clear_dsim_frame_done          = exynos_mipi_dsi_clear_frame_done,
 };
 
-int exynos_mipi_dsi_init(void)
+int exynos_mipi_dsi_init(struct exynos_platform_mipi_dsim *dsim_pd)
 {
        struct mipi_dsim_device *dsim;
        struct mipi_dsim_config *dsim_config;
        return 0;
 }
 
-void exynos_set_dsim_platform_data(struct exynos_platform_mipi_dsim *pd)
-{
-       if (pd == NULL) {
-               debug("pd is NULL\n");
-               return;
-       }
-
-       dsim_pd = pd;
-}
-
 int exynos_dsim_config_parse_dt(const void *blob, struct mipi_dsim_config *dt)
 {
        int node;
 
 void exynos_init_dsim_platform_data(vidinfo_t *vid)
 {
-       struct mipi_dsim_config dsim_config_dt;
+       static struct mipi_dsim_config dsim_config_dt;
+       static struct exynos_platform_mipi_dsim dsim_platform_data_dt;
 
        if (exynos_dsim_config_parse_dt(gd->fdt_blob, &dsim_config_dt))
                debug("Can't get proper dsim config.\n");
        mipi_lcd_device_dt.platform_data = (void *)&dsim_platform_data_dt;
        exynos_mipi_dsi_register_lcd_device(&mipi_lcd_device_dt);
 
-       dsim_pd = &dsim_platform_data_dt;
+       vid->dsim_platform_data_dt = &dsim_platform_data_dt;
 }