Often on boards exists a circuit which switches power on/off to LCD display.
Due to the need of limiting the in-rush current the output voltage from this
circuit rises "slowly", so it is necessary to wait a bit (VCC ramp up time)
before starting output on LCD-pins.
This time is specified in <n> ms within the panel-settings, called "pup_delay"

Further some LCDs need a couple of frames to stabilize the image on it.
We have now the possibility to wait some time after starting output on LCD.
This time is also specified in <n> ms within panel-settings, called "pon_delay"

Signed-off-by: Hannes Petermaier <oe5...@oevsv.at>
---
 drivers/video/am335x-fb.c |   13 ++++++++-----
 drivers/video/am335x-fb.h |    9 +++++++--
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/drivers/video/am335x-fb.c b/drivers/video/am335x-fb.c
index ab98941..6f95649 100644
--- a/drivers/video/am335x-fb.c
+++ b/drivers/video/am335x-fb.c
@@ -127,6 +127,12 @@ int am335xfb_init(struct am335x_lcdpanel *panel)
        memset((void *)gd->fb_base, 0, 0x20);
        *(unsigned int *)gd->fb_base = 0x4000;
 
+       /* turn ON display through powercontrol function if accessible */
+       if (0 != panel->panel_power_ctrl)
+               panel->panel_power_ctrl(1);
+
+       debug("am335x-fb: wait for stable power ...\n");
+       mdelay(panel->pup_delay);
        lcdhw->clkc_enable = LCD_CORECLKEN | LCD_LIDDCLKEN | LCD_DMACLKEN;
        lcdhw->raster_ctrl = 0;
        lcdhw->ctrl = LCD_CLK_DIVISOR(panel->pxl_clk_div) | LCD_RASTER_MODE;
@@ -159,11 +165,8 @@ int am335xfb_init(struct am335x_lcdpanel *panel)
 
        gd->fb_base += 0x20;    /* point fb behind palette */
 
-       /* turn ON display through powercontrol function if accessible */
-       if (0 != panel->panel_power_ctrl) {
-               mdelay(panel->pon_delay);
-               panel->panel_power_ctrl(1);
-       }
+       debug("am335x-fb: waiting picture to be stable.\n.");
+       mdelay(panel->pon_delay);
 
        return 0;
 }
diff --git a/drivers/video/am335x-fb.h b/drivers/video/am335x-fb.h
index 8a0b131..7f799d1 100644
--- a/drivers/video/am335x-fb.h
+++ b/drivers/video/am335x-fb.h
@@ -55,9 +55,14 @@ struct am335x_lcdpanel {
        unsigned int    vsw;            /* Vertical Sync Pulse Width */
        unsigned int    pxl_clk_div;    /* Pixel clock divider*/
        unsigned int    pol;            /* polarity of sync, clock signals */
+       unsigned int    pup_delay;      /*
+                                        * time in ms after power on to
+                                        * initialization of lcd-controller
+                                        * (VCC ramp up time)
+                                        */
        unsigned int    pon_delay;      /*
-                                        * time in ms for turning on lcd after
-                                        * initializing lcd-controller
+                                        * time in ms after initialization of
+                                        * lcd-controller (pic stabilization)
                                         */
        void (*panel_power_ctrl)(int);  /* fp for power on/off display */
 };
-- 
1.7.9.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to