From 06f824b36d8f1accc00cd66cb06697a9fe25b0b2 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Mon, 8 Apr 2013 18:35:51 -0600 Subject: LPC1788 framebuffer LCD now works! From Rommel Marcelo --- .../arch/arm/src/lpc17xx/chip/lpc178x_pinconfig.h | 104 ++++++++-------- nuttx/arch/arm/src/lpc17xx/chip/lpc17_lcd.h | 8 ++ nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c | 10 +- nuttx/arch/arm/src/lpc17xx/lpc17_lcd.c | 133 ++++++++++----------- 4 files changed, 131 insertions(+), 124 deletions(-) (limited to 'nuttx/arch') diff --git a/nuttx/arch/arm/src/lpc17xx/chip/lpc178x_pinconfig.h b/nuttx/arch/arm/src/lpc17xx/chip/lpc178x_pinconfig.h index be749e8c4..40a083e87 100644 --- a/nuttx/arch/arm/src/lpc17xx/chip/lpc178x_pinconfig.h +++ b/nuttx/arch/arm/src/lpc17xx/chip/lpc178x_pinconfig.h @@ -76,36 +76,36 @@ #define GPIO_I2S_RXCLK_1 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN4) #define GPIO_CAN2_RD_1 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN4) #define GPIO_CAP2p0_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN4) -#define GPIO_LCD_VD0_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT0 | GPIO_PIN4) +#define GPIO_LCD_VD0_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT0 | GPIO_PIN4) #define GPIO_I2S_RXWS_1 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN5) #define GPIO_CAN2_TD_1 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN5) #define GPIO_CAP2p1_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN5) -#define GPIO_LCD_VD1_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT0 | GPIO_PIN5) +#define GPIO_LCD_VD1_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT0 | GPIO_PIN5) #define GPIO_I2S_RXSDA_1 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN6) #define GPIO_SSP1_SSEL_1 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN6) #define GPIO_MAT2p0_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN6) #define GPIO_UART1_RTS_1 (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN6) -#define GPIO_LCD_VD8_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT0 | GPIO_PIN6) +#define GPIO_LCD_VD8_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT0 | GPIO_PIN6) #define GPIO_I2S_TXCLK_1 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN7) #define GPIO_SSP1_SCK_1 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN7) #define GPIO_MAT2p1_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN7) #define GPIO_RTC_EV0_1 (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN7) -#define GPIO_LCD_VD9_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT0 | GPIO_PIN7) +#define GPIO_LCD_VD9_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT0 | GPIO_PIN7) #define GPIO_I2S_TXWS_1 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN8) #define GPIO_SSP1_MISO_1 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN8) #define GPIO_MAT2p2_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN8) #define GPIO_RTC_EV1_1 (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN8) -#define GPIO_LCD_VD16 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT0 | GPIO_PIN8) +#define GPIO_LCD_VD16 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT0 | GPIO_PIN8) #define GPIO_I2S_TXSDA_1 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN9) #define GPIO_SSP1_MOSI_1 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN9) #define GPIO_MAT2p3_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN9) #define GPIO_RTC_EV2_1 (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN9) -#define GPIO_LCD_VD17 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT0 | GPIO_PIN9) +#define GPIO_LCD_VD17 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT0 | GPIO_PIN9) #define GPIO_UART2_TXD_1 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN10) #define GPIO_I2C2_SDA_1 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN10) @@ -274,78 +274,78 @@ #define GPIO_QEI_PHA (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN20) #define GPIO_MCPWM_MCFB0 (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN20) #define GPIO_SSP0_SCK_2 (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN20) -#define GPIO_LCD_VD6_1 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN20) -#define GPIO_LCD_VD10_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN20) +#define GPIO_LCD_VD6_1 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN20) +#define GPIO_LCD_VD10_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN20) #define GPIO_USB1_TXDM (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN21) #define GPIO_PWM1p3_1 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN21) #define GPIO_SSP0_SSEL_2 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN21) #define GPIO_MCPWM_ABORT (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN21) -#define GPIO_LCD_VD7_1 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN21) -#define GPIO_LCD_VD11_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN21) +#define GPIO_LCD_VD7_1 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN21) +#define GPIO_LCD_VD11_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN21) #define GPIO_USB1_RCV (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN22) #define GPIO_USB1_PWRD (GPIO_ALT2 | GPIO_PULLDN | GPIO_PORT1 | GPIO_PIN22) #define GPIO_MAT1p0_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN22) #define GPIO_MCPWM_MCOB (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN22) #define GPIO_SSP1_MOSI_3 (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN22) -#define GPIO_LCD_VD8_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN22) -#define GPIO_LCD_VD12_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN22) +#define GPIO_LCD_VD8_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN22) +#define GPIO_LCD_VD12_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN22) #define GPIO_USB1_RXDP (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN23) #define GPIO_PWM1p4_1 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN23) #define GPIO_QEI_PHB (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN23) #define GPIO_MCPWM_MCFB1 (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN23) #define GPIO_SSP0_MOSI_2 (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN23) -#define GPIO_LCD_VD9_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN23) -#define GPIO_LCD_VD13_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN23) +#define GPIO_LCD_VD9_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN23) +#define GPIO_LCD_VD13_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN23) #define GPIO_USB1_RXDM (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN24) #define GPIO_PWM1p5_1 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN24) #define GPIO_QEI_IDX (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN24) #define GPIO_MCPWM_MCFB2 (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN24) #define GPIO_SSP0_MOSI_3 (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN24) -#define GPIO_LCD_VD10_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN24) -#define GPIO_LCD_VD14_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN24) +#define GPIO_LCD_VD10_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN24) +#define GPIO_LCD_VD14_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN24) #define GPIO_USB1_LS (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN25) #define GPIO_USB1_HSTEN (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN25) #define GPIO_MAT1p1_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN25) #define GPIO_MCPWM_MC1A (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN25) #define GPIO_CLKOUT_ (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN25) -#define GPIO_LCD_VD11_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN25) -#define GPIO_LCD_VD15_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN25) +#define GPIO_LCD_VD11_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN25) +#define GPIO_LCD_VD15_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN25) #define GPIO_USB1_SSPND (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN26) #define GPIO_PWM1p6_1 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN26) #define GPIO_CAP0p0_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN26) #define GPIO_MCPWM_MC1B (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN26) #define GPIO_SSP1_SSEL_3 (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN26) -#define GPIO_LCD_VD12_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN26) -#define GPIO_LCD_VD20 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN26) +#define GPIO_LCD_VD12_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN26) +#define GPIO_LCD_VD20 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN26) #define GPIO_USB1_INT (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN27) #define GPIO_USB1_OVRCR (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN27) #define GPIO_CAP0p1_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN27) #define GPIO_CLKOUT_2 (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN27) -#define GPIO_LCD_VD13_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN27) -#define GPIO_LCD_VD21 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN27) +#define GPIO_LCD_VD13_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN27) +#define GPIO_LCD_VD21 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN27) #define GPIO_USB1_SCL (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN28) #define GPIO_PCAP1p0_1 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN28) #define GPIO_MAT0p0_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN28) #define GPIO_MCPWM_MC2A (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN28) #define GPIO_SSP0_SSEL_3 (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN28) -#define GPIO_LCD_VD14_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN28) -#define GPIO_LCD_VD22 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN28) +#define GPIO_LCD_VD14_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN28) +#define GPIO_LCD_VD22 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN28) #define GPIO_USB1_SDA (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN29) #define GPIO_PCAP1p1 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN29) #define GPIO_MAT0p1_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN29) #define GPIO_MCPWM_MC2B (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN29) #define GPIO_UART4_TXD_2 (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN29) -#define GPIO_LCD_VD15_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN29) -#define GPIO_LCD_VD23 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT1 | GPIO_PIN29) +#define GPIO_LCD_VD15_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN29) +#define GPIO_LCD_VD23 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT1 | GPIO_PIN29) #define GPIO_USB2_PWRD (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN30) #define GPIO_USB_VBUS (GPIO_ALT2 | GPIO_FLOAT | GPIO_PORT1 | GPIO_PIN30) @@ -360,7 +360,7 @@ #define GPIO_PWM1p1_2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN0) #define GPIO_UART1_TXD_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN0) -#define GPIO_LCD_PWR (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN0) +#define GPIO_LCD_PWR (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN0) #define GPIO_PWM1p2_2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN1) #define GPIO_UART1_RXD_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN1) @@ -370,53 +370,53 @@ #define GPIO_UART1_CTS_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN2) #define GPIO_MAT2p3_2 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN2) #define GPIO_TRACEDATA3 (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN2) -#define GPIO_LCD_DCLK (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN2 ) +#define GPIO_LCD_DCLK (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN2 ) #define GPIO_PWM1p4_2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN3) #define GPIO_UART1_DCD_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN3) #define GPIO_MAT2p2_2 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN3) #define GPIO_TRACEDATA2 (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN3) -#define GPIO_LCD_FP (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN3) +#define GPIO_LCD_FP (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN3) #define GPIO_PWM1p5_2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN4) #define GPIO_UART1_DSR_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN4) #define GPIO_MAT2p1_2 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN4) #define GPIO_TRACEDATA1 (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN4) -#define GPIO_LCD_ENABM (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN4) +#define GPIO_LCD_ENABM (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN4) #define GPIO_PWM1p6_2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN5) #define GPIO_UART1_DTR_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN5) #define GPIO_MAT2p0_2 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN5) #define GPIO_TRACEDATA0 (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN5) -#define GPIO_LCD_LP (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN5) +#define GPIO_LCD_LP (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN5) #define GPIO_PCAP1p0_2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN6) #define GPIO_UART1_RI_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN6) #define GPIO_CAP2p0_3 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN6) #define GPIO_UART2_OE_2 (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN6) #define GPIO_TRACECLK (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN6) -#define GPIO_LCD_VD0_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN6) -#define GPIO_LCD_VD4_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN6) +#define GPIO_LCD_VD0_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN6) +#define GPIO_LCD_VD4_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN6) #define GPIO_CAN2_RD_2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN7) #define GPIO_UART1_RTS_3 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN7) #define GPIO_SPIFI_CS (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN7) -#define GPIO_LCD_VD1_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN7) -#define GPIO_LCD_VD5_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN7) +#define GPIO_LCD_VD1_2 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN7) +#define GPIO_LCD_VD5_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN7) #define GPIO_CAN2_TD_2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN8) #define GPIO_UART2_TXD_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN8) #define GPIO_UART1_CTS_3 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN8) #define GPIO_ENET_MDC_2 (GPIO_ALT4 | GPIO_FLOAT | GPIO_PORT2 | GPIO_PIN8) -#define GPIO_LCD_VD2_1 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN8) -#define GPIO_LCD_VD6_2 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN8) +#define GPIO_LCD_VD2_1 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN8) +#define GPIO_LCD_VD6_2 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN8) #define GPIO_USB1_CONNECT (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN9) #define GPIO_UART2_RXD_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN9) #define GPIO_UART4_RXD_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN9) #define GPIO_ENET_MDIO_2 (GPIO_ALT4 | GPIO_FLOAT | GPIO_PORT2 | GPIO_PIN9) -#define GPIO_LCD_VD3_1 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN9) -#define GPIO_LCD_VD7_2 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN9) +#define GPIO_LCD_VD3_1 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN9) +#define GPIO_LCD_VD7_2 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN9) #define GPIO_EINT0_2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN10) #define GPIO_NMI (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN10) @@ -429,17 +429,17 @@ #define GPIO_EINT2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN12) #define GPIO_SD_DAT2_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN12) #define GPIO_I2S_TXWS_2 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN12) -#define GPIO_LCD_VD4_2 (GPIO_ALT4 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN12) -#define GPIO_LCD_VD3_2 (GPIO_ALT5 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN12) -#define GPIO_LCD_VD8_3 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN12) -#define GPIO_LCD_VD18 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN12) +#define GPIO_LCD_VD4_2 (GPIO_ALT4 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN12) +#define GPIO_LCD_VD3_2 (GPIO_ALT5 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN12) +#define GPIO_LCD_VD8_3 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN12) +#define GPIO_LCD_VD18 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN12) #define GPIO_EINT3 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN13) #define GPIO_SD_DAT3_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN13) #define GPIO_I2S_TXSDA_2 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN13) -#define GPIO_LCD_VD5_2 (GPIO_ALT5 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN13) -#define GPIO_LCD_VD9_3 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN13) -#define GPIO_LCD_VD19 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT2 | GPIO_PIN13) +#define GPIO_LCD_VD5_2 (GPIO_ALT5 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN13) +#define GPIO_LCD_VD9_3 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN13) +#define GPIO_LCD_VD19 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT2 | GPIO_PIN13) #define GPIO_EMC_CS2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN14) #define GPIO_I2C1_SDA_3 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN14) @@ -613,17 +613,17 @@ #define GPIO_EMC_BLS2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT4 | GPIO_PIN28) #define GPIO_UART3_TXD_4 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT4 | GPIO_PIN28) #define GPIO_MAT2p0_3 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT4 | GPIO_PIN28) -#define GPIO_LCD_VD6_3 (GPIO_ALT5 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT4 | GPIO_PIN28) -#define GPIO_LCD_VD10_3 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT4 | GPIO_PIN28) -#define GPIO_LCD_VD2_2 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT4 | GPIO_PIN28) +#define GPIO_LCD_VD6_3 (GPIO_ALT5 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT4 | GPIO_PIN28) +#define GPIO_LCD_VD10_3 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT4 | GPIO_PIN28) +#define GPIO_LCD_VD2_2 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT4 | GPIO_PIN28) #define GPIO_EMC_BLS3 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT4 | GPIO_PIN29) #define GPIO_UART3_RXD_4 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT4 | GPIO_PIN29) #define GPIO_MAT2p1_3 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT4 | GPIO_PIN29) #define GPIO_I2C2_SCL_3 (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT4 | GPIO_PIN29) -#define GPIO_LCD_VD7_3 (GPIO_ALT5 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT4 | GPIO_PIN29) -#define GPIO_LCD_VD11_3 (GPIO_ALT6 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT4 | GPIO_PIN29) -#define GPIO_LCD_VD3_3 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | GPIO_PORT4 | GPIO_PIN29) +#define GPIO_LCD_VD7_3 (GPIO_ALT5 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT4 | GPIO_PIN29) +#define GPIO_LCD_VD11_3 (GPIO_ALT6 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT4 | GPIO_PIN29) +#define GPIO_LCD_VD3_3 (GPIO_ALT7 | GPIO_FLOAT | GPIO_SLEW | GPIO_PORT4 | GPIO_PIN29) #define GPIO_EMC_CS0 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT4 | GPIO_PIN30) #define GPIO_EMC_CS1 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT4 | GPIO_PIN31) diff --git a/nuttx/arch/arm/src/lpc17xx/chip/lpc17_lcd.h b/nuttx/arch/arm/src/lpc17xx/chip/lpc17_lcd.h index 7ac1d3a61..d7b919cb6 100644 --- a/nuttx/arch/arm/src/lpc17xx/chip/lpc17_lcd.h +++ b/nuttx/arch/arm/src/lpc17xx/chip/lpc17_lcd.h @@ -206,6 +206,8 @@ #define LCD_INTMSK_VCOMPIM (1 << 3) /* Bit 3: Vertical compare interrupt enable */ #define LCD_INTMSK_BERIM (1 << 4) /* Bit 4: AHB Master error interrupt enable */ /* Bits 5-31: Reserved */ +#define LCD_INTMSK_ALL (0x1e) + /* LCD_INTRAW - Raw Interrupt Status Register */ /* Bits 0: Reserved */ #define LCD_INTRAW_FUFRIS (1 << 1) /* Bit 1: FIFO Undeflow raw interrupt status */ @@ -213,6 +215,8 @@ #define LCD_INTRAW_VCOMPRIS (1 << 3) /* Bit 3: Vertical compare interrupt status */ #define LCD_INTRAW_BERRAW (1 << 4) /* Bit 4: AHB Master bus error interrupt status */ /* Bits 5-31: Reserved */ +#define LCD_INTRAW_ALL (0x1e) + /* LCD_INTSTAT - Masked Interrupt Status Register */ /* Bits 0: Reserved */ #define LCD_INTSTAT_FUFMIS (1 << 1) /* Bit 1: FIFO Undeflow raw interrupt status */ @@ -220,6 +224,8 @@ #define LCD_INTSTAT_VCOMPMIS (1 << 3) /* Bit 3: Vertical compare interrupt status */ #define LCD_INTSTAT_BERMIS (1 << 4) /* Bit 4: AHB Master bus error interrupt status */ /* Bits 15-31: Reserved */ +#define LCD_INTSTAT_ALL (0x1e) + /* LCD_INTCLR - Interrupt Clear Register */ /* Bits 0: Reserved */ #define LCD_INTCLR_FUFIC (1 << 1) /* Bit 1: FIFO Undeflow raw interrupt clear */ @@ -227,6 +233,8 @@ #define LCD_INTCLR_VCOMPIC (1 << 3) /* Bit 3: Vertical compare interrupt clear */ #define LCD_INTCLR_BERIC (1 << 4) /* Bit 4: AHB Master bus error interrupt clear */ /* Bits 15-31: Reserved */ +#define LCD_INTCLR_ALL (0x1e) + /* Upper and Lower Panel Address register has no bitfields */ /* * Upper Panel Current Address register (LCDUPCURR) diff --git a/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c b/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c index 2e72d7a22..11a22bed5 100755 --- a/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c +++ b/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c @@ -132,7 +132,6 @@ const uint32_t g_intbase[GPIO_NPORTS] = * ****************************************************************************/ -#if 0 /* Not used */ static uint32_t lpc17_getioconmask(unsigned int port, unsigned int pin) { uint32_t typemask = IOCON_TYPE_D_MASK; @@ -207,7 +206,7 @@ static uint32_t lpc17_getioconmask(unsigned int port, unsigned int pin) return typemask; } -#endif + /**************************************************************************** * Name: lpc17_seti2cmode @@ -242,12 +241,15 @@ static void lpc17_setpinfunction(unsigned int port, unsigned int pin, { uint32_t regaddr; uint32_t regval; + uint32_t typemask; + typemask= lpc17_getioconmask(port,pin); regaddr = LPC17_IOCON_P(port, pin); regval = getreg32(regaddr); regval &= ~IOCON_FUNC_MASK; regval |= ((value << IOCON_FUNC_SHIFT) & IOCON_FUNC_MASK); + regval &= typemask; putreg32(regval, regaddr); } @@ -774,6 +776,10 @@ static int lpc17_configalternate(lpc17_pinset_t cfgset, unsigned int port, lpc17_setopendrain(port, pin); } + /* Set output slew rate */ + + lpc17_setslewmode(cfgset, port, pin); + /* Select the alternate pin */ lpc17_setpinfunction(port, pin, alt); diff --git a/nuttx/arch/arm/src/lpc17xx/lpc17_lcd.c b/nuttx/arch/arm/src/lpc17xx/lpc17_lcd.c index cf326ea5f..4050356e4 100644 --- a/nuttx/arch/arm/src/lpc17xx/lpc17_lcd.c +++ b/nuttx/arch/arm/src/lpc17xx/lpc17_lcd.c @@ -466,16 +466,12 @@ int up_fbinitialize(void) gvdbg("Entry\n"); - /* Disable LCD controller */ + /* Give LCD bus priority */ - regval = getreg32(LPC17_LCD_CTRL); - regval &= ~LCD_CTRL_LCDPWR; - putreg32(regval, LPC17_LCD_CTRL); - - for (i = LPC17_LCD_PWRDIS_DELAY; i; i--); - - regval &= ~LCD_CTRL_LCDEN; - putreg32(regval, LPC17_LCD_CTRL); + regval = ((SYSCON_MATRIXARB_PRI_ICODE(SYSCON_MATRIXARB_PRI_LOW)) | + (SYSCON_MATRIXARB_PRI_DCODE(SYSCON_MATRIXARB_PRI_HIGHEST)) | + (SYSCON_MATRIXARB_PRI_LCD(SYSCON_MATRIXARB_PRI_HIGHEST))); + putreg32(regval, LPC17_SYSCON_MATRIXARB); /* Configure pins */ /* Video data */ @@ -519,22 +515,31 @@ int up_fbinitialize(void) lpc17_configgpio(GPIO_LCD_ENABM); lpc17_configgpio(GPIO_LCD_PWR); - gvdbg("Configuring the LCD controller\n"); - /* Turn on LCD clock */ modifyreg32(LPC17_SYSCON_PCONP, 0, SYSCON_PCONP_PCLCD); + gvdbg("Configuring the LCD controller\n"); + /* Disable the cursor */ regval = getreg32(LPC17_LCD_CRSR_CRTL); regval &= ~LCD_CRSR_CTRL_CRSON; putreg32(regval, LPC17_LCD_CRSR_CRTL); + /* Clear any pending interrupts */ + + putreg32(LCD_INTCLR_ALL, LPC17_LCD_INTCLR); + /* Disable GLCD controller */ putreg32(0, LPC17_LCD_CTRL); + /* Initialize pixel clock (assuming clock source is the peripheral clock) */ + + putreg32(((uint32_t)BOARD_PCLK_FREQUENCY / (uint32_t)LPC17_LCD_PIXEL_CLOCK)+1, + LPC17_SYSCON_LCDCFG); + /* Set the bits per pixel */ regval = getreg32(LPC17_LCD_CTRL); @@ -558,24 +563,19 @@ int up_fbinitialize(void) regval |= LCD_CTRL_LCDBPP_444; /* 12 bpp, 4:4:4 mode */ #endif - putreg32(regval, LPC17_LCD_CTRL); - /* TFT panel */ #if CONFIG_LPC17_LCD_TFTPANEL regval |= LCD_CTRL_LCDTFT; - putreg32(regval, LPC17_LCD_CTRL); #endif - /* Single panel */ + /* Swap red and blue */ - regval &= ~LCD_CTRL_LCDDUAL; - putreg32(regval, LPC17_LCD_CTRL); + regval |= LCD_CTRL_BGR; - /* Normal RGB output */ + /* Single panel */ - regval &= ~LCD_CTRL_BGR; - putreg32(regval, LPC17_LCD_CTRL); + regval &= ~LCD_CTRL_LCDDUAL; /* Select monochrome or color LCD */ @@ -583,96 +583,83 @@ int up_fbinitialize(void) /* Select monochrome LCD */ regval &= ~LCD_CTRL_BGR; - putreg32(regval, LPC17_LCD_CTRL); /* Select 4- or 8-bit monochrome interface */ -#if LPC17_BPP > 4 +# if LPC17_BPP > 4 regval |= LCD_CTRL_LCDMONO8; -#else +# else regval &= ~LCD_CTRL_LCDMONO8; -#endif - putreg32(regval, LPC17_LCD_CTRL); +# endif #else /* Select color LCD */ regval &= ~(LCD_CTRL_LCDBW | LCD_CTRL_LCDMONO8); - putreg32(regval, LPC17_LCD_CTRL); -#endif + +#endif /* CONFIG_LPC17_LCD_MONOCHROME */ /* Little endian byte order */ regval &= ~LCD_CTRL_BEBO; - putreg32(regval, LPC17_LCD_CTRL); /* Little endian pixel order */ regval &= ~LCD_CTRL_BEPO; putreg32(regval, LPC17_LCD_CTRL); - /* Disable power */ + /* Initialize horizontal timing */ - regval &= ~LCD_CTRL_LCDPWR; - putreg32(regval, LPC17_LCD_CTRL); + putreg32(0, LPC17_LCD_TIMH); - /* Initialize pixel clock (assuming clock source is the peripheral clock) */ + regval = (((CONFIG_LPC17_LCD_HWIDTH/16) - 1) << LCD_TIMH_PPL_SHIFT | + (CONFIG_LPC17_LCD_HPULSE - 1) << LCD_TIMH_HSW_SHIFT | + (CONFIG_LPC17_LCD_HFRONTPORCH - 1) << LCD_TIMH_HFP_SHIFT | + (CONFIG_LPC17_LCD_HBACKPORCH - 1) << LCD_TIMH_HBP_SHIFT); + putreg32(regval, LPC17_LCD_TIMH); - putreg32(BOARD_PCLK_FREQUENCY / LPC17_LCD_PIXEL_CLOCK, LPC17_SYSCON_LCDCFG); + /* Initialize vertical timing */ - /* Bypass internal pixel clock divider */ + putreg32(0, LPC17_LCD_TIMV); - regval = getreg32(LPC17_LCD_POL); - regval |= LCD_POL_BCD; - putreg32(regval, LPC17_LCD_POL); + regval = ((CONFIG_LPC17_LCD_VHEIGHT - 1) << LCD_TIMV_LPP_SHIFT | + (CONFIG_LPC17_LCD_VPULSE - 1) << LCD_TIMV_VSW_SHIFT | + (CONFIG_LPC17_LCD_VFRONTPORCH) << LCD_TIMV_VFP_SHIFT | + (CONFIG_LPC17_LCD_VBACKPORCH) << LCD_TIMV_VBP_SHIFT); + putreg32(regval, LPC17_LCD_TIMV); - /* Select the PCLK for the LCD block clock source */ + /* Initialize clock and signal polarity */ - regval &= ~LCD_POL_CLKSEL; - putreg32(regval, LPC17_LCD_POL); + regval = getreg32(LPC17_LCD_POL); /* LCDFP pin is active LOW and inactive HIGH */ regval |= LCD_POL_IVS; - putreg32(regval, LPC17_LCD_POL); /* LCDLP pin is active LOW and inactive HIGH */ regval |= LCD_POL_IHS; - putreg32(regval, LPC17_LCD_POL); /* Data is driven out into the LCD on the falling edge */ regval &= ~LCD_POL_IPC; - putreg32(regval, LPC17_LCD_POL); - - /* Active high */ - regval &= ~LCD_POL_IOE; - putreg32(regval, LPC17_LCD_POL); + /* Set number of clocks per line */ - regval &= ~LCD_POL_CPL_MASK; - regval |= (CONFIG_LPC17_LCD_HWIDTH-1) << LCD_POL_CPL_SHIFT; - putreg32(regval, LPC17_LCD_POL); + regval |= ((CONFIG_LPC17_LCD_HWIDTH-1) << LCD_POL_CPL_SHIFT); - /* Initialize horizontal timing */ + /* Bypass internal pixel clock divider */ - putreg32(0, LPC17_LCD_TIMH); + regval |= LCD_POL_BCD; - regval = (((CONFIG_LPC17_LCD_HWIDTH/16) - 1) << LCD_TIMH_PPL_SHIFT | - (CONFIG_LPC17_LCD_HPULSE - 1) << LCD_TIMH_HSW_SHIFT | - (CONFIG_LPC17_LCD_HFRONTPORCH - 1) << LCD_TIMH_HFP_SHIFT | - (CONFIG_LPC17_LCD_HBACKPORCH - 1) << LCD_TIMH_HBP_SHIFT); - putreg32(regval, LPC17_LCD_TIMH); + /* LCD_ENAB_M is active high */ - /* Initialize vertical timing */ + regval &= ~LCD_POL_IOE; - putreg32(0, LPC17_LCD_TIMV); + /* Select CCLK for the LCD block clock source */ - regval = ((CONFIG_LPC17_LCD_VHEIGHT - 1) << LCD_TIMV_LPP_SHIFT | - (CONFIG_LPC17_LCD_VPULSE - 1) << LCD_TIMV_VSW_SHIFT | - (CONFIG_LPC17_LCD_VFRONTPORCH) << LCD_TIMV_VFP_SHIFT | - (CONFIG_LPC17_LCD_VBACKPORCH) << LCD_TIMV_VBP_SHIFT); + regval &= ~LCD_POL_CLKSEL; + putreg32(regval, LPC17_LCD_POL); /* Frame base address doubleword aligned */ @@ -682,26 +669,32 @@ int up_fbinitialize(void) /* Clear the display */ lpc17_lcdclear(CONFIG_LPC17_LCD_BACKCOLOR); - for (i = LPC17_LCD_PWREN_DELAY; i; i--); - /* Enable LCD */ +#ifdef CONFIG_LPC17_LCD_BACKLIGHT + /* Turn on the back light */ + + lpc17_backlight(true); +#endif + putreg32(0, LPC17_LCD_INTMSK); gvdbg("Enabling the display\n"); + for (i = LPC17_LCD_PWREN_DELAY; i; i--); + + /* Enable LCD */ + regval = getreg32(LPC17_LCD_CTRL); regval |= LCD_CTRL_LCDEN; putreg32(regval, LPC17_LCD_CTRL); + /* Enable LCD power */ + for (i = LPC17_LCD_PWREN_DELAY; i; i--); + regval = getreg32(LPC17_LCD_CTRL); regval |= LCD_CTRL_LCDPWR; putreg32(regval, LPC17_LCD_CTRL); -#ifdef CONFIG_LPC17_LCD_BACKLIGHT - /* Turn on the back light */ - - lpc17_backlight(true); -#endif return OK; } -- cgit v1.2.3