diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2013-10-11 17:12:35 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2013-10-11 17:12:35 -0600 |
commit | df14ab38da05fdd5798173e6d16a3d24eb170040 (patch) | |
tree | 1351923a55aec9d89b22ea589df062f8c31c8f02 | |
parent | 0e1920ff7418197abf2532dc2d28eafaf0065401 (diff) | |
download | nuttx-df14ab38da05fdd5798173e6d16a3d24eb170040.tar.gz nuttx-df14ab38da05fdd5798173e6d16a3d24eb170040.tar.bz2 nuttx-df14ab38da05fdd5798173e6d16a3d24eb170040.zip |
SAMA5 LCDC: Fixed backlight PWM divider. Backlight no longer flashes
-rw-r--r-- | nuttx/ChangeLog | 4 | ||||
-rw-r--r-- | nuttx/arch/arm/src/sama5/Kconfig | 18 | ||||
-rw-r--r-- | nuttx/arch/arm/src/sama5/sam_lcd.c | 156 | ||||
-rw-r--r-- | nuttx/configs/sama5d3x-ek/include/board.h | 32 | ||||
-rw-r--r-- | nuttx/configs/sama5d3x-ek/nx/defconfig | 2 |
5 files changed, 112 insertions, 100 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog index 26ce14a3e..09d8cc0b3 100644 --- a/nuttx/ChangeLog +++ b/nuttx/ChangeLog @@ -5754,3 +5754,7 @@ * drivers/net/encx24j600.c and Kconfig: ENCX24J600: Improved descriptor handling, free packets on rx abort interrupt. From Max Holtzberg (2013-10-11). + * arch/arm/src/sama4/sam_lcd.c and configs/sama5d3x-ek/include/board.h: + Fix PWM precealler divider. This eliminiates the backlight flicker + (2013-10-11). + diff --git a/nuttx/arch/arm/src/sama5/Kconfig b/nuttx/arch/arm/src/sama5/Kconfig index 6b051d355..0541ce2d8 100644 --- a/nuttx/arch/arm/src/sama5/Kconfig +++ b/nuttx/arch/arm/src/sama5/Kconfig @@ -327,24 +327,6 @@ config SAMA5_LCDC_BACKCOLOR default 0x0 choice - prompt "Output resolution" - default SAMA5_LCDC_OUTPUT_24BPP - -config SAMA5_LCDC_OUTPUT_12BPP - bool "12BPP" - -config SAMA5_LCDC_OUTPUT_16BPP - bool "16BPP" - -config SAMA5_LCDC_OUTPUT_18BPP - bool "18BPP" - -config SAMA5_LCDC_OUTPUT_24BPP - bool "24BPP" - -endchoice # Output resolution - -choice prompt "Frame buffer allocation strategy" default SAMA5_LCDC_FBALLOCATED diff --git a/nuttx/arch/arm/src/sama5/sam_lcd.c b/nuttx/arch/arm/src/sama5/sam_lcd.c index f28357f5e..28d3217e7 100644 --- a/nuttx/arch/arm/src/sama5/sam_lcd.c +++ b/nuttx/arch/arm/src/sama5/sam_lcd.c @@ -79,18 +79,6 @@ /* Color/video formats */ -#if defined(CONFIG_SAMA5_LCDC_OUTPUT_12BPP) -# define SAMA5_LCDC_OUTPUT_BPP 12 -#elif defined(CONFIG_SAMA5_LCDC_OUTPUT_16BPP) -# define SAMA5_LCDC_OUTPUT_BPP 16 -#elif defined(CONFIG_SAMA5_LCDC_OUTPUT_18BPP) -# define SAMA5_LCDC_OUTPUT_BPP 18 -#elif defined(CONFIG_SAMA5_LCDC_OUTPUT_24BPP) -# define SAMA5_LCDC_OUTPUT_BPP 24 -#else -# error No output resolution defined -#endif - #if defined(CONFIG_SAMA5_LCDC_BASE_RGB444) # define SAMA5_LCDC_BASE_BPP 16 /* 12BPP but must be 16-bit aligned */ # define SAMA5_LCDC_BASE_COLOR_FMT FB_FMT_RGB12_444 @@ -133,6 +121,8 @@ #elif defined(CONFIG_SAMA5_LCDC_BASE_RGBA8888) # define SAMA5_LCDC_BASE_BPP 32 # define SAMA5_LCDC_BASE_COLOR_FMT FB_FMT_RGBA32 +#else +# error Undefined or unrecognized base color format #endif #if defined(CONFIG_SAMA5_LCDC_OVR1_RGB444) @@ -177,6 +167,8 @@ #elif defined(CONFIG_SAMA5_LCDC_OVR1_RGBA8888) # define SAMA5_LCDC_OVR1_BPP 32 # define SAMA5_LCDC_OVR1_COLOR_FMT FB_FMT_RGBA32 +#elif defined(CONFIG_SAMA5_LCDC_OVR1) +# error Undefined or unrecognized overlay 1 color format #endif #if defined(CONFIG_SAMA5_LCDC_OVR2_RGB444) @@ -221,6 +213,8 @@ #elif defined(CONFIG_SAMA5_LCDC_OVR2_RGBA8888) # define SAMA5_LCDC_OVR2_BPP 32 # define SAMA5_LCDC_OVR2_COLOR_FMT FB_FMT_RGBA32 +#elif defined(CONFIG_SAMA5_LCDC_OVR2) +# error Undefined or unrecognized overlay 2 color format #endif #if defined(CONFIG_SAMA5_LCDC_HEO_RGB444) @@ -265,6 +259,8 @@ #elif defined(CONFIG_SAMA5_LCDC_HEO_RGBA8888) # define SAMA5_LCDC_HEO_BPP 32 # define SAMA5_LCDC_HEO_COLOR_FMT FB_FMT_RGBA32 +#elif defined(CONFIG_SAMA5_LCDC_HEO) +# error Undefined or unrecognized HEO color format #endif #if defined(CONFIG_SAMA5_LCDC_HCR_RGB444) @@ -309,41 +305,45 @@ #elif defined(CONFIG_SAMA5_LCDC_HCR_RGBA8888) # define SAMA5_LCDC_HCR_BPP 32 # define SAMA5_LCDC_HCR_COLOR_FMT FB_FMT_RGBA32 +#elif defined(CONFIG_SAMA5_LCDC_HCR) +# error Undefined or unrecognized cursor color format #endif /* Framebuffer sizes in bytes */ -#ifndef BOARD_LCD_WIDTH -# error BOARD_LCD_WIDTH must be defined in the board.h header file +#ifndef BOARD_LCDC_WIDTH +# error BOARD_LCDC_WIDTH must be defined in the board.h header file #endif -#ifndef BOARD_LCD_HEIGHT -# error BOARD_LCD_HEIGHT must be defined in the board.h header file +#ifndef BOARD_LCDC_HEIGHT +# error BOARD_LCDC_HEIGHT must be defined in the board.h header file #endif #if SAMA5_LCDC_BASE_BPP == 16 -# define SAMA5_BASE_STRIDE ((BOARD_LCD_WIDTH * 16 + 7) / 8) +# define SAMA5_BASE_STRIDE ((BOARD_LCDC_WIDTH * 16 + 7) / 8) #elif SAMA5_LCDC_BASE_BPP == 24 -# define SAMA5_BASE_STRIDE ((BOARD_LCD_WIDTH * 24 + 7) / 8) +# define SAMA5_BASE_STRIDE ((BOARD_LCDC_WIDTH * 24 + 7) / 8) #elif SAMA5_LCDC_BASE_BPP == 32 -# define SAMA5_BASE_STRIDE ((BOARD_LCD_WIDTH * 32 + 7) / 8) +# define SAMA5_BASE_STRIDE ((BOARD_LCDC_WIDTH * 32 + 7) / 8) +#else +# error Undefined or unrecognized base resolution #endif -#define SAMA5_BASE_FBSIZE (SAMA5_BASE_STRIDE * BOARD_LCD_HEIGHT) +#define SAMA5_BASE_FBSIZE (SAMA5_BASE_STRIDE * BOARD_LCDC_HEIGHT) #ifndef CONFIG_SAMA5_LCDC_OVR1_MAXWIDTH -# define CONFIG_SAMA5_LCDC_OVR1_MAXWIDTH BOARD_LCD_WIDTH +# define CONFIG_SAMA5_LCDC_OVR1_MAXWIDTH BOARD_LCDC_WIDTH #endif -#if CONFIG_SAMA5_LCDC_OVR1_MAXWIDTH > BOARD_LCD_WIDTH +#if CONFIG_SAMA5_LCDC_OVR1_MAXWIDTH > BOARD_LCDC_WIDTH # error Width of overlay 1 exceeds the width of the display #endif #ifndef CONFIG_SAMA5_LCDC_OVR1_MAXHEIGHT -# define CONFIG_SAMA5_LCDC_OVR1_MAXHEIGHT BOARD_LCD_HEIGHT +# define CONFIG_SAMA5_LCDC_OVR1_MAXHEIGHT BOARD_LCDC_HEIGHT #endif -#if CONFIG_SAMA5_LCDC_OVR1_MAXHEIGHT > BOARD_LCD_HEIGHT +#if CONFIG_SAMA5_LCDC_OVR1_MAXHEIGHT > BOARD_LCDC_HEIGHT # error Height of overlay 1 exceeds the height of the display #endif @@ -353,23 +353,25 @@ # define SAMA5_OVR1_STRIDE ((CONFIG_SAMA5_LCDC_OVR1_MAXWIDTH * 24 + 7) / 8) #elif SAMA5_LCDC_OVR1_BPP == 32 # define SAMA5_OVR1_STRIDE ((CONFIG_SAMA5_LCDC_OVR1_MAXWIDTH * 32 + 7) / 8) +#elif defined(CONFIG_SAMA5_LCDC_OVR1) +# error Undefined or unrecognized overlay 1 color resolution #endif #define SAMA5_OVR1_FBSIZE (SAMA5_OVR1_STRIDE * CONFIG_SAMA5_LCDC_OVR1_MAXHEIGHT) #ifndef CONFIG_SAMA5_LCDC_OVR2_MAXWIDTH -# define CONFIG_SAMA5_LCDC_OVR2_MAXWIDTH BOARD_LCD_WIDTH +# define CONFIG_SAMA5_LCDC_OVR2_MAXWIDTH BOARD_LCDC_WIDTH #endif -#if CONFIG_SAMA5_LCDC_OVR2_MAXWIDTH > BOARD_LCD_WIDTH +#if CONFIG_SAMA5_LCDC_OVR2_MAXWIDTH > BOARD_LCDC_WIDTH # error Width of overlay 2 exceeds the width of the display #endif #ifndef CONFIG_SAMA5_LCDC_OVR2_MAXHEIGHT -# define CONFIG_SAMA5_LCDC_OVR2_MAXHEIGHT BOARD_LCD_HEIGHT +# define CONFIG_SAMA5_LCDC_OVR2_MAXHEIGHT BOARD_LCDC_HEIGHT #endif -#if CONFIG_SAMA5_LCDC_OVR2_MAXHEIGHT > BOARD_LCD_HEIGHT +#if CONFIG_SAMA5_LCDC_OVR2_MAXHEIGHT > BOARD_LCDC_HEIGHT # error Height of overlay 2 exceeds the height of the display #endif @@ -379,23 +381,25 @@ # define SAMA5_OVR2_STRIDE ((CONFIG_SAMA5_LCDC_OVR2_MAXWIDTH * 24 + 7) / 8) #elif SAMA5_LCDC_OVR2_BPP == 32 # define SAMA5_OVR2_STRIDE ((CONFIG_SAMA5_LCDC_OVR2_MAXWIDTH * 32 + 7) / 8) +#elif defined(CONFIG_SAMA5_LCDC_OVR2) +# error Undefined or unrecognized overlay 2 color resolution #endif #define SAMA5_OVR2_FBSIZE (SAMA5_OVR2_STRIDE * CONFIG_SAMA5_LCDC_OVR2_MAXHEIGHT) #ifndef CONFIG_SAMA5_LCDC_HEO_MAXWIDTH -# define CONFIG_SAMA5_LCDC_HEO_MAXWIDTH BOARD_LCD_WIDTH +# define CONFIG_SAMA5_LCDC_HEO_MAXWIDTH BOARD_LCDC_WIDTH #endif -#if CONFIG_SAMA5_LCDC_HEO_MAXWIDTH > BOARD_LCD_WIDTH +#if CONFIG_SAMA5_LCDC_HEO_MAXWIDTH > BOARD_LCDC_WIDTH # error Width of HEO exceeds the width of the display #endif #ifndef CONFIG_SAMA5_LCDC_HEO_MAXHEIGHT -# define CONFIG_SAMA5_LCDC_HEO_MAXHEIGHT BOARD_LCD_HEIGHT +# define CONFIG_SAMA5_LCDC_HEO_MAXHEIGHT BOARD_LCDC_HEIGHT #endif -#if CONFIG_SAMA5_LCDC_HEO_MAXHEIGHT > BOARD_LCD_HEIGHT +#if CONFIG_SAMA5_LCDC_HEO_MAXHEIGHT > BOARD_LCDC_HEIGHT # error Height of HEO exceeds the height of the display #endif @@ -405,23 +409,25 @@ # define SAMA5_HEO_STRIDE ((CONFIG_SAMA5_LCDC_HEO_MAXWIDTH * 24 + 7) / 8) #elif SAMA5_LCDC_HEO_BPP == 32 # define SAMA5_HEO_STRIDE ((CONFIG_SAMA5_LCDC_HEO_MAXWIDTH * 32 + 7) / 8) +#elif defined(CONFIG_SAMA5_LCDC_HEO) +# error Undefined or unrecognized HEO color resolution #endif #define SAMA5_HEO_FBSIZE (SAMA5_HEO_STRIDE * CONFIG_SAMA5_LCDC_HEO_MAXHEIGHT) #ifndef CONFIG_SAMA5_LCDC_HCR_MAXWIDTH -# define CONFIG_SAMA5_LCDC_HCR_MAXWIDTH BOARD_LCD_WIDTH +# define CONFIG_SAMA5_LCDC_HCR_MAXWIDTH BOARD_LCDC_WIDTH #endif -#if CONFIG_SAMA5_LCDC_HCR_MAXWIDTH > BOARD_LCD_WIDTH +#if CONFIG_SAMA5_LCDC_HCR_MAXWIDTH > BOARD_LCDC_WIDTH # error Width of the hardware cursor exceeds the width of the display #endif #ifndef CONFIG_SAMA5_LCDC_HCR_MAXHEIGHT -# define CONFIG_SAMA5_LCDC_HCR_MAXHEIGHT BOARD_LCD_HEIGHT +# define CONFIG_SAMA5_LCDC_HCR_MAXHEIGHT BOARD_LCDC_HEIGHT #endif -#if CONFIG_SAMA5_LCDC_HCR_MAXHEIGHT > BOARD_LCD_HEIGHT +#if CONFIG_SAMA5_LCDC_HCR_MAXHEIGHT > BOARD_LCDC_HEIGHT # error Height of the hardware cursor exceeds the height of the display #endif @@ -431,6 +437,8 @@ # define SAMA5_HCR_STRIDE ((CONFIG_SAMA5_LCDC_HCR_MAXWIDTH * 24 + 7) / 8) #elif SAMA5_LCDC_HCR_BPP == 32 # define SAMA5_HCR_STRIDE ((CONFIG_SAMA5_LCDC_HCR_MAXWIDTH * 32 + 7) / 8) +#elif defined(CONFIG_SAMA5_LCDC_HCR) +# error Undefined or unrecognized cursor color resolution #endif #define SAMA5_HCR_FBSIZE (SAMA5_HCR_STRIDE * CONFIG_SAMA5_LCDC_HCR_MAXHEIGHT) @@ -682,8 +690,8 @@ static void sam_show_hcr(void); static const struct fb_videoinfo_s g_base_videoinfo = { .fmt = SAMA5_LCDC_BASE_COLOR_FMT, - .xres = BOARD_LCD_WIDTH, - .yres = BOARD_LCD_HEIGHT, + .xres = BOARD_LCDC_WIDTH, + .yres = BOARD_LCDC_HEIGHT, .nplanes = 1, }; @@ -715,12 +723,12 @@ static pio_pinset_t g_lcdcpins[] = PIO_LCD_DAT4, PIO_LCD_DAT5, PIO_LCD_DAT6, PIO_LCD_DAT7, PIO_LCD_DAT8, PIO_LCD_DAT9, PIO_LCD_DAT10, PIO_LCD_DAT11, -#if SAMA5_LCDC_OUTPUT_BPP > 12 +#if BOARD_LCDC_OUTPUT_BPP > 12 PIO_LCD_DAT12, PIO_LCD_DAT13, PIO_LCD_DAT14, PIO_LCD_DAT15, -#if SAMA5_LCDC_OUTPUT_BPP > 16 +#if BOARD_LCDC_OUTPUT_BPP > 16 PIO_LCD_DAT16, PIO_LCD_DAT17, -#if SAMA5_LCDC_OUTPUT_BPP > 18 +#if BOARD_LCDC_OUTPUT_BPP > 18 PIO_LCD_DAT18, PIO_LCD_DAT19, PIO_LCD_DAT20, PIO_LCD_DAT21, PIO_LCD_DAT22, PIO_LCD_DAT23, #endif @@ -1319,14 +1327,14 @@ static void sam_setposition(int lid, uint32_t x, uint32_t y) /* Clip the position so that the window lies on the physical display */ - if (x + w >= BOARD_LCD_WIDTH) + if (x + w >= BOARD_LCDC_WIDTH) { - x = BOARD_LCD_WIDTH - w; + x = BOARD_LCDC_WIDTH - w; } - if (y + h >= BOARD_LCD_HEIGHT) + if (y + h >= BOARD_LCDC_HEIGHT) { - y = BOARD_LCD_HEIGHT - h; + y = BOARD_LCDC_HEIGHT - h; } /* Set the new position of the layer */ @@ -2228,11 +2236,21 @@ static void sam_lcd_enable(void) /* 1. Configure LCD timing parameters, signal polarity and clock period. */ - div = (BOARD_MCK_FREQUENCY + (BOARD_LCD_PIXELCLOCK-1)) / BOARD_LCD_PIXELCLOCK; +#ifdef BOARD_LCDC_MCK_MUL2 + div = (2*BOARD_MCK_FREQUENCY + (BOARD_LCDC_PIXELCLOCK-1)) / BOARD_LCDC_PIXELCLOCK; +#else + div = (BOARD_MCK_FREQUENCY + (BOARD_LCDC_PIXELCLOCK-1)) / BOARD_LCDC_PIXELCLOCK; +#endif DEBUGASSERT(div > 1); - regval = LCDC_LCDCFG0_CLKPOL | LCDC_LCDCFG0_CGDISBASE | - LCDC_LCDCFG0_CLKDIV(div - 2); + regval = LCDC_LCDCFG0_CGDISBASE | LCDC_LCDCFG0_CLKDIV(div - 2); + +#ifdef BOARD_LCDC_PIXCLK_INV + regval |= LCDC_LCDCFG0_CLKPOL; +#endif +#ifdef BOARD_LCDC_MCK_MUL2 + regval |= LCDC_LCDCFG0_CLKSEL; +#endif #ifdef CONFIG_SAMA5_LCDC_OVR1 regval |= LCDC_LCDCFG0_CGDISOVR1; #endif @@ -2247,39 +2265,39 @@ static void sam_lcd_enable(void) #endif sam_putreg(SAM_LCDC_LCDCFG0, regval); - regval = LCDC_LCDCFG1_HSPW(BOARD_LCD_HSPW - 1) | - LCDC_LCDCFG1_VSPW(BOARD_LCD_VSPW - 1); + regval = LCDC_LCDCFG1_HSPW(BOARD_LCDC_HSPW - 1) | + LCDC_LCDCFG1_VSPW(BOARD_LCDC_VSPW - 1); sam_putreg(SAM_LCDC_LCDCFG1, regval); - regval = LCDC_LCDCFG2_VFPW(BOARD_LCD_VFPW - 1) | - LCDC_LCDCFG2_VBPW(BOARD_LCD_VBPW); + regval = LCDC_LCDCFG2_VFPW(BOARD_LCDC_VFPW - 1) | + LCDC_LCDCFG2_VBPW(BOARD_LCDC_VBPW); sam_putreg(SAM_LCDC_LCDCFG2, regval); - regval = LCDC_LCDCFG3_HFPW(BOARD_LCD_HFPW - 1) | - LCDC_LCDCFG3_HBPW(BOARD_LCD_HBPW - 1); + regval = LCDC_LCDCFG3_HFPW(BOARD_LCDC_HFPW - 1) | + LCDC_LCDCFG3_HBPW(BOARD_LCDC_HBPW - 1); sam_putreg(SAM_LCDC_LCDCFG3, regval); - regval = LCDC_LCDCFG4_PPL(BOARD_LCD_WIDTH - 1) | - LCDC_LCDCFG4_RPF(BOARD_LCD_HEIGHT - 1); + regval = LCDC_LCDCFG4_PPL(BOARD_LCDC_WIDTH - 1) | + LCDC_LCDCFG4_RPF(BOARD_LCDC_HEIGHT - 1); sam_putreg(SAM_LCDC_LCDCFG4, regval); regval = LCDC_LCDCFG5_HSPOL | LCDC_LCDCFG5_VSPOL | LCDC_LCDCFG5_VSPDLYS | LCDC_LCDCFG5_DISPDLY | LCDC_LCDCFG5_GUARDTIME(BOARD_LCDC_GUARDTIME); -#if defined(CONFIG_SAMA5_LCDC_OUTPUT_12BPP) +#if BOARD_LCDC_OUTPUT_BPP == 16 regval |= LCDC_LCDCFG5_MODE_12BPP; -#elif defined(CONFIG_SAMA5_LCDC_OUTPUT_16BPP) +#elif BOARD_LCDC_OUTPUT_BPP == 16 regval |= LCDC_LCDCFG5_MODE_16BPP; -#elif defined(CONFIG_SAMA5_LCDC_OUTPUT_18BPP) +#elif BOARD_LCDC_OUTPUT_BPP == 18 regval |= LCDC_LCDCFG5_MODE_18BPP; -#elif defined(CONFIG_SAMA5_LCDC_OUTPUT_24BPP) +#elif BOARD_LCDC_OUTPUT_BPP == 24 regval |= LCDC_LCDCFG5_MODE_24BPP; #else -# error Unknown output resolution +# error Unknown or undefined output resolution #endif sam_putreg(SAM_LCDC_LCDCFG5, regval); - regval = LCDC_LCDCFG6_PWMPS_DIV64 | LCDC_LCDCFG6_PWMPOL | + regval = BOARD_LCDC_PWMPS | BOARD_LCDC_PWMPOL | LCDC_LCDCFG6_PWMCVAL(CONFIG_SAMA5_LCDC_DEFBACKLIGHT); sam_putreg(SAM_LCDC_LCDCFG6, regval); @@ -2658,14 +2676,14 @@ static void sam_show_layer(struct sam_layer_s *layer, /* Windows position & size check */ - if (dispx + dispw > BOARD_LCD_WIDTH) + if (dispx + dispw > BOARD_LCDC_WIDTH) { - dispw = BOARD_LCD_WIDTH - dispx; + dispw = BOARD_LCDC_WIDTH - dispx; } - if (dispy + disph > BOARD_LCD_HEIGHT) + if (dispy + disph > BOARD_LCDC_HEIGHT) { - disph = BOARD_LCD_HEIGHT - dispy; + disph = BOARD_LCDC_HEIGHT - dispy; } if (dispw <= 0) @@ -3091,7 +3109,7 @@ static void sam_show_layer(struct sam_layer_s *layer, static void sam_show_base(void) { sam_show_layer(LAYER_BASE, 0, 0, - BOARD_LCD_WIDTH, BOARD_LCD_HEIGHT, BOARD_LCD_WIDTH, BOARD_LCD_HEIGHT); + BOARD_LCDC_WIDTH, BOARD_LCDC_HEIGHT, BOARD_LCDC_WIDTH, BOARD_LCDC_HEIGHT); } /**************************************************************************** @@ -3119,8 +3137,8 @@ static void sam_show_hcr(void) /* And show the hardware cursor layer */ sam_show_layer(&g_hcr.layer, - (BOARD_LCD_WIDTH - CONFIG_SAMA5_LCDC_HCR_MAXWIDTH) / 2, - (BOARD_LCD_HEIGHT - CONFIG_SAMA5_LCDC_HCR_MAXHEIGHT) / 2, + (BOARD_LCDC_WIDTH - CONFIG_SAMA5_LCDC_HCR_MAXWIDTH) / 2, + (BOARD_LCDC_HEIGHT - CONFIG_SAMA5_LCDC_HCR_MAXHEIGHT) / 2, CONFIG_SAMA5_LCDC_HCR_MAXWIDTH, CONFIG_SAMA5_LCDC_HCR_MAXHEIGHT, CONFIG_SAMA5_LCDC_HCR_MAXWIDTH, CONFIG_SAMA5_LCDC_HCR_MAXHEIGHT); } diff --git a/nuttx/configs/sama5d3x-ek/include/board.h b/nuttx/configs/sama5d3x-ek/include/board.h index cdba067c5..f810ead63 100644 --- a/nuttx/configs/sama5d3x-ek/include/board.h +++ b/nuttx/configs/sama5d3x-ek/include/board.h @@ -71,18 +71,26 @@ #endif -/* LCD Geometry and Timing */ - -#define BOARD_LCD_WIDTH 800 /* Display width (pixels) */ -#define BOARD_LCD_HEIGHT 480 /* Display height (pixels) */ -#define BOARD_LCD_PIXELCLOCK 33260000 /* Pixel clock */ -#define BOARD_LCDC_GUARDTIME 9 /* Guard time */ -#define BOARD_LCD_VSPW 2 /* Vertical pulse width (lines) */ -#define BOARD_LCD_HSPW 128 /* Horizontal pulse width (LCDDOTCLK) */ -#define BOARD_LCD_VFPW 37 /* Vertical front porch (lines) */ -#define BOARD_LCD_VBPW 8 /* Vertical back porch (lines) */ -#define BOARD_LCD_HFPW 168 /* Horizontal front porch (LCDDOTCLK cycles) */ -#define BOARD_LCD_HBPW 88 /* Horizontal back porch (LCDDOTCLK cycles) */ +/* LCD Interface, Geometry and Timing */ + +#define BOARD_LCDC_OUTPUT_BPP 24 /* Output format to H/W is 24BPP RGB */ +#define BOARD_LCDC_WIDTH 800 /* Display width (pixels) */ +#define BOARD_LCDC_HEIGHT 480 /* Display height (rows) */ +#undef BOARD_LCDC_MCK_MUL2 /* Source clock is Mck (vs 2*Mck) */ +#define BOARD_LCDC_PIXCLK_INV 1 /* Invert pixel clock, use falling edge */ +#define BOARD_LCDC_PIXELCLOCK 33260000 /* Pixel clock frequency */ +#define BOARD_LCDC_GUARDTIME 9 /* Guard time (frames) */ +#define BOARD_LCDC_VSPW 2 /* Vertical pulse width (lines) */ +#define BOARD_LCDC_HSPW 128 /* Horizontal pulse width (LCDDOTCLK) */ +#define BOARD_LCDC_VFPW 37 /* Vertical front porch (lines) */ +#define BOARD_LCDC_VBPW 8 /* Vertical back porch (lines) */ +#define BOARD_LCDC_HFPW 168 /* Horizontal front porch (LCDDOTCLK) */ +#define BOARD_LCDC_HBPW 88 /* Horizontal back porch (LCDDOTCLK) */ + +/* Backlight prescaler value and PWM output polarity */ + +#define BOARD_LCDC_PWMPS LCDC_LCDCFG6_PWMPS_DIV1 +#define BOARD_LCDC_PWMPOL LCDC_LCDCFG6_PWMPOL /* LED definitions ******************************************************************/ /* There are two LEDs on the SAMA5D3 series-CM board that can be controlled diff --git a/nuttx/configs/sama5d3x-ek/nx/defconfig b/nuttx/configs/sama5d3x-ek/nx/defconfig index 85a582144..bf0ac4be1 100644 --- a/nuttx/configs/sama5d3x-ek/nx/defconfig +++ b/nuttx/configs/sama5d3x-ek/nx/defconfig @@ -174,7 +174,7 @@ CONFIG_SAMA5_MPDDRC=y # LCDC Configuration # CONFIG_SAMA5_LCDC_BACKLIGHT=y -CONFIG_SAMA5_LCDC_DEFBACKLIGHT=0xf0 +CONFIG_SAMA5_LCDC_DEFBACKLIGHT=0xc8 CONFIG_SAMA5_LCDC_BACKCOLOR=0x7b5d # CONFIG_SAMA5_LCDC_OUTPUT_12BPP is not set # CONFIG_SAMA5_LCDC_OUTPUT_16BPP is not set |