diff --git a/arch/arm/src/lpc17xx/Kconfig b/arch/arm/src/lpc17xx/Kconfig index 82b830a142..923964dadd 100644 --- a/arch/arm/src/lpc17xx/Kconfig +++ b/arch/arm/src/lpc17xx/Kconfig @@ -654,6 +654,14 @@ config LPC17_LCD_TFTPANEL display panels require the digital color value of each pixel to be applied to the display data inputs. +config LPC17_LCD_MONOCHROME + bool "Monochrome LCD" + default n + depends on !LPC17_LCD_TFTPANEL + ---help--- + STN LCD monochrome/color selection. Selects monochrome LCD. This + selection has no meaning for a TFT panel. + choice prompt "Bits per pixel" default LPC17_LCD_BPP24 if LPC17_LCD_TFTPANEL @@ -673,6 +681,7 @@ config LPC17_LCD_BPP8 config LPC17_LCD_BPP16 bool "16 bit per pixel" + depends on !LPC17_LCD_MONOCHROME config LPC17_LCD_BPP24 bool "24 bit per pixel" @@ -680,9 +689,11 @@ config LPC17_LCD_BPP24 config LPC17_LCD_BPP16_565 bool "16 bpp, 5:6:5 mode" + depends on !LPC17_LCD_MONOCHROME config LPC17_LCD_BPP12_444 bool "12 bpp, 4:4:4 mode" + depends on !LPC17_LCD_MONOCHROME endchoice diff --git a/arch/arm/src/lpc17xx/lpc17_lcd.c b/arch/arm/src/lpc17xx/lpc17_lcd.c index c10d8ade75..dccc10404c 100644 --- a/arch/arm/src/lpc17xx/lpc17_lcd.c +++ b/arch/arm/src/lpc17xx/lpc17_lcd.c @@ -563,6 +563,30 @@ int up_fbinitialize(void) regval &= ~LCD_CTRL_BGR; putreg32(regval, LPC17_LCD_CTRL); + /* Select monochrome or color LCD */ + +#ifdef CONFIG_LPC17_LCD_MONOCHROME + /* Select monochrome LCD */ + + regval &= ~LCD_CTRL_BGR; + putreg32(regval, LPC17_LCD_CTRL); + + /* Select 4- or 8-bit monochrome interface */ + +#if LPC17_BPP > 4 + regval |= LCD_CTRL_LCDMONO8; +#else + regval &= ~LCD_CTRL_LCDMONO8; +#endif + putreg32(regval, LPC17_LCD_CTRL); + +#else + /* Select color LCD */ + + regval &= ~(LCD_CTRL_LCDBW | LCD_CTRL_LCDMONO8); + putreg32(regval, LPC17_LCD_CTRL); +#endif + /* Little endian byte order */ regval &= ~LCD_CTRL_BEBO;