mirror of
https://github.com/apache/nuttx.git
synced 2026-05-27 19:36:35 +08:00
SAMA5D4-EK LCDC: Adding a delay after enabling the LCD solves lots of start-up timing issues
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* arch/arm/src/sama5/sam_lcd.c
|
* arch/arm/src/sama5/sam_lcd.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2013-2014 Gregory Nutt. All rights reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* References:
|
* References:
|
||||||
@@ -2973,6 +2973,18 @@ int up_fbinitialize(void)
|
|||||||
sam_show_hcr();
|
sam_show_hcr();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(BOARD_LCDC_ENABLE_DELAY) && BOARD_LCDC_ENABLE_DELAY > 0
|
||||||
|
/* Delay a bit after enabling the LDC. I presume that a delay of a few
|
||||||
|
* frame times allows some unstable clocking to synchronize before we
|
||||||
|
* tart thrashing the framebuffer? But I am not sure why this is
|
||||||
|
* necessary and, in fact, is certainly not necessary in most LCDC
|
||||||
|
* configurations. Perhaps this delay would not be necessary if timings
|
||||||
|
* were more precise?
|
||||||
|
*/
|
||||||
|
|
||||||
|
usleep(BOARD_LCDC_ENABLE_DELAY);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Enable the backlight.
|
/* Enable the backlight.
|
||||||
*
|
*
|
||||||
* REVISIT: Backlight level could be dynamically adjustable
|
* REVISIT: Backlight level could be dynamically adjustable
|
||||||
|
|||||||
@@ -203,6 +203,17 @@
|
|||||||
#define BOARD_LCDC_PIXELCLOCK \
|
#define BOARD_LCDC_PIXELCLOCK \
|
||||||
(BOARD_LCDC_HSPERIOD * BOARD_LCDC_VSPERIOD * BOARD_LCDC_FRAMERATE)
|
(BOARD_LCDC_HSPERIOD * BOARD_LCDC_VSPERIOD * BOARD_LCDC_FRAMERATE)
|
||||||
|
|
||||||
|
/* This specifies a delay after enabling the LCDC. This was found
|
||||||
|
* experimentally and is very much a kludge. I presume that a delay of a
|
||||||
|
* couple of frame times allows some unstable clocking to synchronize before
|
||||||
|
* we start thrashing the framebuffer? But I am not sure why this is
|
||||||
|
* necessary and, in fact, is certainly not necessary in other LCDC
|
||||||
|
* configurations. Perhaps the delay would not be necessary if timings were
|
||||||
|
* more precise?
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define BOARD_LCDC_ENABLE_DELAY (50*1000)
|
||||||
|
|
||||||
/* Backlight prescaler value and PWM output polarity */
|
/* Backlight prescaler value and PWM output polarity */
|
||||||
|
|
||||||
#define BOARD_LCDC_PWMPS LCDC_LCDCFG6_PWMPS_DIV1
|
#define BOARD_LCDC_PWMPS LCDC_LCDCFG6_PWMPS_DIV1
|
||||||
|
|||||||
Reference in New Issue
Block a user