]> git.sur5r.net Git - u-boot/blobdiff - drivers/video/exynos_fb.c
Merge branch 'u-boot-imx/master' into 'u-boot-arm/master'
[u-boot] / drivers / video / exynos_fb.c
index e31a0fd500abef1bc46c9e0518e7bc2e8639db3d..ee0ed06d6fe60d711a420b8710e996cb487fa9e8 100644 (file)
@@ -63,19 +63,35 @@ static void exynos_lcd_init_mem(void *lcdbase, vidinfo_t *vid)
 static void exynos_lcd_init(vidinfo_t *vid)
 {
        exynos_fimd_lcd_init(vid);
+
+       /* Enable flushing after LCD writes if requested */
+       lcd_set_flush_dcache(1);
 }
 
+#ifdef CONFIG_CMD_BMP
 static void draw_logo(void)
 {
        int x, y;
        ulong addr;
 
-       x = ((panel_width - panel_info.logo_width) >> 1);
-       y = ((panel_height - panel_info.logo_height) >> 1) - 4;
+       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
 
 static void lcd_panel_on(vidinfo_t *vid)
 {
@@ -134,7 +150,9 @@ void lcd_enable(void)
        if (panel_info.logo_on) {
                memset(lcd_base, 0, panel_width * panel_height *
                                (NBITS(panel_info.vl_bpix) >> 3));
+#ifdef CONFIG_CMD_BMP
                draw_logo();
+#endif
        }
 
        lcd_panel_on(&panel_info);