]> git.sur5r.net Git - u-boot/blobdiff - common/lcd.c
imx: iomux-v3: cosmetic: Reorganize definitions
[u-boot] / common / lcd.c
index 195f1de617c07a508f579c70b5df57e53e013562..edae835fb0be1e6eb1fccdbf373b42dfc588ee31 100644 (file)
@@ -411,8 +411,6 @@ int drv_lcd_init(void)
 
        lcd_base = (void *) gd->fb_base;
 
-       lcd_get_size(&lcd_line_length);
-
        lcd_init(lcd_base);             /* LCD initialization */
 
        /* Device initialization */
@@ -495,6 +493,20 @@ static int lcd_init(void *lcdbase)
        debug("[LCD] Initializing LCD frambuffer at %p\n", lcdbase);
 
        lcd_ctrl_init(lcdbase);
+
+       /*
+        * lcd_ctrl_init() of some drivers (i.e. bcm2835 on rpi_b) ignores
+        * the 'lcdbase' argument and uses custom lcd base address
+        * by setting up gd->fb_base. Check for this condition and fixup
+        * 'lcd_base' address.
+        */
+       if ((unsigned long)lcdbase != gd->fb_base)
+               lcd_base = (void *)gd->fb_base;
+
+       debug("[LCD] Using LCD frambuffer at %p\n", lcd_base);
+
+       lcd_get_size(&lcd_line_length);
+       lcd_line_length = (panel_info.vl_col * NBITS(panel_info.vl_bpix)) / 8;
        lcd_is_enabled = 1;
        lcd_clear();
        lcd_enable();