summaryrefslogtreecommitdiff
path: root/nuttx/arch
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2013-04-08 18:35:51 -0600
committerGregory Nutt <gnutt@nuttx.org>2013-04-08 18:35:51 -0600
commit06f824b36d8f1accc00cd66cb06697a9fe25b0b2 (patch)
tree393a0552778a3fe9af7ba0ee0d82021edb75f133 /nuttx/arch
parent35c1e939e6378761a187a4aff65e7e6e4e51bc90 (diff)
downloadpx4-nuttx-06f824b36d8f1accc00cd66cb06697a9fe25b0b2.tar.gz
px4-nuttx-06f824b36d8f1accc00cd66cb06697a9fe25b0b2.tar.bz2
px4-nuttx-06f824b36d8f1accc00cd66cb06697a9fe25b0b2.zip
LPC1788 framebuffer LCD now works! From Rommel Marcelo
Diffstat (limited to 'nuttx/arch')
-rw-r--r--nuttx/arch/arm/src/lpc17xx/chip/lpc178x_pinconfig.h104
-rw-r--r--nuttx/arch/arm/src/lpc17xx/chip/lpc17_lcd.h8
-rwxr-xr-xnuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c10
-rw-r--r--nuttx/arch/arm/src/lpc17xx/lpc17_lcd.c133
4 files changed, 131 insertions, 124 deletions
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;
}