obj-$(CONFIG_SOFT_I2C_MULTI_BUS) += multi_i2c.o
 obj-$(CONFIG_THOR_FUNCTION) += thor.o
 obj-$(CONFIG_CMD_USB_MASS_STORAGE) += ums.o
+obj-$(CONFIG_MISC_COMMON) += misc.o
 
 ifndef CONFIG_SPL_BUILD
 obj-$(CONFIG_BOARD_COMMON)     += board.o
 
--- /dev/null
+/*
+ * Copyright (C) 2013 Samsung Electronics
+ * Przemyslaw Marczak <p.marczak@samsung.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <lcd.h>
+#include <libtizen.h>
+#include <samsung/misc.h>
+
+#ifdef CONFIG_CMD_BMP
+void draw_logo(void)
+{
+       int x, y;
+       ulong addr;
+
+       addr = panel_info.logo_addr;
+       if (!addr) {
+               error("There is no logo data.");
+               return;
+       }
+
+       if (panel_info.vl_width >= panel_info.logo_width) {
+               x = ((panel_info.vl_width - panel_info.logo_width) >> 1);
+       } else {
+               x = 0;
+               printf("Warning: image width is bigger than display width\n");
+       }
+
+       if (panel_info.vl_height >= panel_info.logo_height) {
+               y = ((panel_info.vl_height - panel_info.logo_height) >> 1);
+       } else {
+               y = 0;
+               printf("Warning: image height is bigger than display height\n");
+       }
+
+       bmp_display(addr, x, y);
+}
+#endif /* CONFIG_CMD_BMP */
 
 
        setenv("lcdinfo", "lcd=s6e8ax0");
 }
+
+#ifdef CONFIG_MISC_INIT_R
+int misc_init_r(void)
+{
+#ifdef CONFIG_CMD_BMP
+       if (panel_info.logo_on)
+               draw_logo();
+#endif
+       return 0;
+}
+#endif
 
 #ifdef CONFIG_MISC_INIT_R
 int misc_init_r(void)
 {
+#ifdef CONFIG_CMD_BMP
+       if (panel_info.logo_on)
+               draw_logo();
+#endif
        return 0;
 }
 #endif
 
 
        return 0;
 }
+
+#ifdef CONFIG_MISC_INIT_R
+int misc_init_r(void)
+{
+#ifdef CONFIG_CMD_BMP
+       if (panel_info.logo_on)
+               draw_logo();
+#endif
+       return 0;
+}
+#endif
 
        lcd_set_flush_dcache(1);
 }
 
-#ifdef CONFIG_CMD_BMP
-static void draw_logo(void)
-{
-       int x, y;
-       ulong addr;
-
-       if (panel_width >= panel_info.logo_width) {
-               x = ((panel_width - panel_info.logo_width) >> 1);
-       } else {
-               x = 0;
-               printf("Warning: image width is bigger than display width\n");
-       }
-
-       if (panel_height >= panel_info.logo_height) {
-               y = ((panel_height - panel_info.logo_height) >> 1) - 4;
-       } else {
-               y = 0;
-               printf("Warning: image height is bigger than display height\n");
-       }
-
-       addr = panel_info.logo_addr;
-       bmp_display(addr, x, y);
-}
-#endif
-
 void __exynos_cfg_lcd_gpio(void)
 {
 }
        if (panel_info.logo_on) {
                memset((void *) gd->fb_base, 0, panel_width * panel_height *
                                (NBITS(panel_info.vl_bpix) >> 3));
-#ifdef CONFIG_CMD_BMP
-               draw_logo();
-#endif
        }
 
        lcd_panel_on(&panel_info);
 
 int universal_spi_read(void);
 #endif
 
+/* Common misc for Samsung */
+#define CONFIG_MISC_COMMON
+
+#define CONFIG_MISC_INIT_R
+
 /*
  * LCD Settings
  */
 
 #define CONFIG_USB_GADGET_VBUS_DRAW    2
 #define CONFIG_USB_CABLE_CHECK
 
+/* Common misc for Samsung */
+#define CONFIG_MISC_COMMON
+
+#define CONFIG_MISC_INIT_R
+
 /* LCD */
 #define CONFIG_EXYNOS_FB
 #define CONFIG_LCD
 
 #define CONFIG_EFI_PARTITION
 #define CONFIG_PARTITION_UUIDS
 
-#define CONFIG_MISC_INIT_R
 #define CONFIG_BOARD_EARLY_INIT_F
 
 /* I2C */
 #define CONFIG_USB_GADGET_VBUS_DRAW    2
 #define CONFIG_USB_CABLE_CHECK
 
+/* Common misc for Samsung */
+#define CONFIG_MISC_COMMON
+
+#define CONFIG_MISC_INIT_R
+
 /* LCD */
 #define CONFIG_EXYNOS_FB
 #define CONFIG_LCD
 
--- /dev/null
+#ifndef __SAMSUNG_MISC_COMMON_H__
+#define __SAMSUNG_MISC_COMMON_H__
+
+#ifdef CONFIG_CMD_BMP
+void draw_logo(void);
+#endif
+
+#endif /* __SAMSUNG_MISC_COMMON_H__ */