summaryrefslogtreecommitdiff
path: root/nuttx/arch/arm/src/lpc17xx
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2013-04-07 08:43:08 -0600
committerGregory Nutt <gnutt@nuttx.org>2013-04-07 08:43:08 -0600
commitbbe3d97e75b74f59541726c74f7bb6376e24ddec (patch)
tree0cd17abe6c03a073a08ed02aa68ef7fbb5287326 /nuttx/arch/arm/src/lpc17xx
parent4251fd2dee3247355441558aa157a8777c63e5e3 (diff)
downloadpx4-nuttx-bbe3d97e75b74f59541726c74f7bb6376e24ddec.tar.gz
px4-nuttx-bbe3d97e75b74f59541726c74f7bb6376e24ddec.tar.bz2
px4-nuttx-bbe3d97e75b74f59541726c74f7bb6376e24ddec.zip
LPC178x GPIO update from Rommel Marcelo
Diffstat (limited to 'nuttx/arch/arm/src/lpc17xx')
-rw-r--r--nuttx/arch/arm/src/lpc17xx/chip/lpc178x_pinconfig.h122
-rwxr-xr-xnuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c127
-rw-r--r--nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.h9
3 files changed, 107 insertions, 151 deletions
diff --git a/nuttx/arch/arm/src/lpc17xx/chip/lpc178x_pinconfig.h b/nuttx/arch/arm/src/lpc17xx/chip/lpc178x_pinconfig.h
index 4131513c0..170d9ceee 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_PORT0 | GPIO_PIN4)
+#define GPIO_LCD_VD0_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | 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_PORT0 | GPIO_PIN5)
+#define GPIO_LCD_VD1_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | 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_PORT0 | GPIO_PIN6)
+#define GPIO_LCD_VD8_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | 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_PORT0 | GPIO_PIN7)
+#define GPIO_LCD_VD9_1 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | 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_PORT0 | GPIO_PIN8)
+#define GPIO_LCD_VD16 (GPIO_ALT7 | GPIO_FLOA | GPIO_HYSTERESIST | 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_PORT0 | GPIO_PIN9)
+#define GPIO_LCD_VD17 (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | 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)
@@ -117,11 +117,11 @@
#define GPIO_USB_PPWR2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN12)
#define GPIO_SSP1_MISO_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN12)
-#define GPIO_AD0p6 (GPIO_ALT3 | GPIO_PULLUP | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN12)
+#define GPIO_AD0p6 (GPIO_ALT3 | GPIO_FLOAT | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN12)
#define GPIO_USB_LED2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN13)
#define GPIO_SSP1_MOSI_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN13)
-#define GPIO_AD0p7 (GPIO_ALT3 | GPIO_PULLUP | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN13)
+#define GPIO_AD0p7 (GPIO_ALT3 | GPIO_FLOAT | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN13)
#define GPIO_USB_HSTEN2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN14)
#define GPIO_SSP1_SSEL_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN14)
@@ -163,20 +163,20 @@
#define GPIO_CAN1_TD_2 (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN22)
#define GPIO_SPIFI_SCLK (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN22)
-#define GPIO_AD0p0 (GPIO_ALT1 | GPIO_PULLUP | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN23)
+#define GPIO_AD0p0 (GPIO_ALT1 | GPIO_FLOAT | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN23)
#define GPIO_I2S_RXCLK_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN23)
#define GPIO_CAP3p0_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN23)
-#define GPIO_AD0p1 (GPIO_ALT1 | GPIO_PULLUP | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN24)
+#define GPIO_AD0p1 (GPIO_ALT1 | GPIO_FLOAT | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN24)
#define GPIO_I2S_RXWS_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN24)
#define GPIO_CAP3p1_1 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN24)
-#define GPIO_AD0p2 (GPIO_ALT1 | GPIO_PULLUP | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN25)
+#define GPIO_AD0p2 (GPIO_ALT1 | GPIO_FLOAT | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN25)
#define GPIO_I2S_RXSDA_2 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN25)
#define GPIO_UART3_TXD_3 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN25)
-#define GPIO_AD0p3 (GPIO_ALT1 | GPIO_PULLUP | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN26)
-#define GPIO_AOUT (GPIO_ALT2 | GPIO_PULLUP | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN26)
+#define GPIO_AD0p3 (GPIO_ALT1 | GPIO_FLOAT | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN26)
+#define GPIO_AOUT (GPIO_ALT2 | GPIO_FLOAT | GPIO_ADMODE | GPIO_PORT0 | GPIO_PIN26)
#define GPIO_UART3_RXD_3 (GPIO_ALT3 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN26)
#define GPIO_I2C0_SDA_1 (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN27)
@@ -274,93 +274,93 @@
#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_PORT1 | GPIO_PIN20)
-#define GPIO_LCD_VD10_1 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT1 | GPIO_PIN21)
-#define GPIO_LCD_VD11_1 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT1 | GPIO_PIN22)
-#define GPIO_LCD_VD12_1 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT1 | GPIO_PIN23)
-#define GPIO_LCD_VD13_1 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT1 | GPIO_PIN24)
-#define GPIO_LCD_VD14_1 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT1 | GPIO_PIN25)
-#define GPIO_LCD_VD15_1 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT1 | GPIO_PIN26)
-#define GPIO_LCD_VD20 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT1 | GPIO_PIN27)
-#define GPIO_LCD_VD21 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT1 | GPIO_PIN28)
-#define GPIO_LCD_VD22 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT1 | GPIO_PIN29)
-#define GPIO_LCD_VD23 (GPIO_ALT7 | GPIO_FLOAT | 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_USB2_PWRD (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN30)
#define GPIO_USB_VBUS (GPIO_ALT2 | GPIO_FLOAT | GPIO_PORT1 | GPIO_PIN30)
-#define GPIO_AD0p4 (GPIO_ALT3 | GPIO_PULLUP | GPIO_ADMODE | GPIO_PORT1 | GPIO_PIN30)
+#define GPIO_AD0p4 (GPIO_ALT3 | GPIO_FLOAT | GPIO_ADMODE | GPIO_PORT1 | GPIO_PIN30)
#define GPIO_I2C0_SDA_2 (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN30)
#define GPIO_UART3_OE (GPIO_ALT5 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN30)
#define GPIO_USB2_OVRCR (GPIO_ALT1 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN31)
#define GPIO_SSP1_SCK_3 (GPIO_ALT2 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN31)
-#define GPIO_AD0p5 (GPIO_ALT3 | GPIO_PULLUP | GPIO_ADMODE | GPIO_PORT1 | GPIO_PIN31)
+#define GPIO_AD0p5 (GPIO_ALT3 | GPIO_FLOAT | GPIO_ADMODE | GPIO_PORT1 | GPIO_PIN31)
#define GPIO_I2C0_SCL_2 (GPIO_ALT4 | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN31)
#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_PORT2 | GPIO_PIN0)
+#define GPIO_LCD_PWR (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | 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_PORT2 | GPIO_PIN2)
+#define GPIO_LCD_DCLK (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | 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_PORT2 | GPIO_PIN3)
+#define GPIO_LCD_FP (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | 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_PORT2 | GPIO_PIN4)
+#define GPIO_LCD_ENABM (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | 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_PORT2 | GPIO_PIN5)
+#define GPIO_LCD_LP (GPIO_ALT7 | GPIO_FLOAT | GPIO_HYSTERESIS | 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_PORT2 | GPIO_PIN6)
-#define GPIO_LCD_VD4_1 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT2 | GPIO_PIN7)
-#define GPIO_LCD_VD5_1 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT2 | GPIO_PIN8)
-#define GPIO_LCD_VD6_2 (GPIO_ALT7 | 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_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_PORT2 | GPIO_PIN9)
-#define GPIO_LCD_VD7_2 (GPIO_ALT7 | 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_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_PORT2 | GPIO_PIN12)
-#define GPIO_LCD_VD3_2 (GPIO_ALT5 | GPIO_FLOAT | GPIO_PORT2 | GPIO_PIN12)
-#define GPIO_LCD_VD8_3 (GPIO_ALT6 | GPIO_FLOAT | GPIO_PORT2 | GPIO_PIN12)
-#define GPIO_LCD_VD18 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT2 | GPIO_PIN13)
-#define GPIO_LCD_VD9_3 (GPIO_ALT6 | GPIO_FLOAT | GPIO_PORT2 | GPIO_PIN13)
-#define GPIO_LCD_VD19 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT4 | GPIO_PIN28)
-#define GPIO_LCD_VD10_3 (GPIO_ALT6 | GPIO_FLOAT | GPIO_PORT4 | GPIO_PIN28)
-#define GPIO_LCD_VD2_2 (GPIO_ALT7 | GPIO_FLOAT | 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_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_PORT4 | GPIO_PIN29)
-#define GPIO_LCD_VD11_3 (GPIO_ALT6 | GPIO_FLOAT | GPIO_PORT4 | GPIO_PIN29)
-#define GPIO_LCD_VD3_3 (GPIO_ALT7 | GPIO_FLOAT | 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_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/lpc178x_gpio.c b/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c
index 2272858a2..2e72d7a22 100755
--- a/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c
+++ b/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c
@@ -278,33 +278,26 @@ static void lpc17_setinvertinput(unsigned int port, unsigned int pin)
*
****************************************************************************/
-static void lpc17_setslewfast(unsigned int port, unsigned int pin)
+static void lpc17_setslewmode(lpc17_pinset_t cfgset, unsigned int port,
+ unsigned int pin)
{
uint32_t regaddr;
uint32_t regval;
+ uint32_t value;
- regaddr = LPC17_IOCON_P(port, pin);
- regval = getreg32(regaddr);
- regval |= IOCON_SLEW_MASK;
- putreg32(regval, regaddr);
-}
+ /* Decode the request output slew rate */
-/****************************************************************************
- * Name: lpc17_setslewnormal
- *
- * Description:
- * Configure pin mode slew rate drive. Applies to Type D and Type W pins
- *
- ****************************************************************************/
+ value = ((cfgset & GPIO_SLEW) >> GPIO_SLEW_SHIFT);
-static void lpc17_setslewnormal(unsigned int port, unsigned int pin)
-{
- uint32_t regaddr;
- uint32_t regval;
+ /* Get the current IOCON register contents */
regaddr = LPC17_IOCON_P(port, pin);
regval = getreg32(regaddr);
+
+ /* Set the driver slew rate */
+
regval &= ~IOCON_SLEW_MASK;
+ regval |= ((value << IOCON_SLEW_SHIFT) & IOCON_SLEW_MASK);
putreg32(regval, regaddr);
}
@@ -396,37 +389,28 @@ static void lpc17_setdacdisable(unsigned int port, unsigned int pin)
*
****************************************************************************/
-static void lpc17_setfilter(unsigned int port, unsigned int pin)
+static void lpc17_setfilter(lpc17_pinset_t cfgset, unsigned int port,
+ unsigned int pin)
{
uint32_t regaddr;
uint32_t regval;
+ uint32_t value;
- regaddr = LPC17_IOCON_P(port, pin);
- regval = getreg32(regaddr);
- regval &= ~IOCON_FILTER_MASK;
- putreg32(regval, regaddr);
-}
+ /* Decode the request input filter */
-/****************************************************************************
- * Name: lpc17_clrfilter
- *
- * Description:
- * Configure analog pin's glitch filter. Applies to Type A and Type W pins
- *
- ****************************************************************************/
+ value = ((cfgset & GPIO_FILTER) >> GPIO_FILTER_SHIFT);
-#if 0 /* Not used */
-static void lpc17_clrfilter(unsigned int port, unsigned int pin)
-{
- uint32_t regaddr;
- uint32_t regval;
+ /* Get the current IOCON register contents */
regaddr = LPC17_IOCON_P(port, pin);
regval = getreg32(regaddr);
- regval |= IOCON_FILTER_MASK;
+
+ /* Set the input filter enable bit */
+
+ regval &= ~IOCON_FILTER_MASK;
+ regval |= ((value << IOCON_FILTER_SHIFT) & IOCON_FILTER_MASK);
putreg32(regval, regaddr);
}
-#endif
/****************************************************************************
* Name: lpc17_setopendrain
@@ -469,7 +453,7 @@ static void lpc17_clropendrain(unsigned int port, unsigned int pin)
}
/****************************************************************************
- * Name: lpc17_clrhysteresis
+ * Name: lpc17_sethysteresis
*
* Description:
* Configure a GPIO's hysteresis mode. Applies to Type D and Type W pins
@@ -477,36 +461,26 @@ static void lpc17_clropendrain(unsigned int port, unsigned int pin)
*
****************************************************************************/
-#if 0 /* Not used */
-static void lpc17_clrhysteresis(unsigned int port, unsigned int pin)
+static void lpc17_sethysteresis(lpc17_pinset_t cfgset, unsigned int port,
+ unsigned int pin)
{
uint32_t regaddr;
uint32_t regval;
+ uint32_t value;
- regaddr = LPC17_IOCON_P(port, pin);
- regval = getreg32(regaddr);
- regval &= ~IOCON_HYS_MASK;
- putreg32(regval, regaddr);
-}
-#endif
+ /* Decode the request input buffer */
-/****************************************************************************
- * Name: lpc17_sethysteresis
- *
- * Description:
- * Configure a GPIO's hysteresis mode. Applies to Type D and Type W pins
- * Default is enabled.
- *
- ****************************************************************************/
+ value = ((cfgset & GPIO_HYSTERESIS) >> GPIO_INBUFF_SHIFT);
-static void lpc17_sethysteresis(unsigned int port, unsigned int pin)
-{
- uint32_t regaddr;
- uint32_t regval;
+ /* Get the current IOCON register contents */
regaddr = LPC17_IOCON_P(port, pin);
regval = getreg32(regaddr);
- regval |= IOCON_HYS_MASK;
+
+ /* Set the input buffer enable bit */
+
+ regval &= ~IOCON_HYS_MASK;
+ regval |= ((value << IOCON_HYS_SHIFT) & IOCON_HYS_MASK);
putreg32(regval, regaddr);
}
@@ -538,7 +512,7 @@ static void lpc17_setpullup(lpc17_pinset_t cfgset, unsigned int port,
/* Set the new mode bits */
regval &= ~IOCON_MODE_MASK;
- regval |= (pinmode << IOCON_MODE_SHIFT);
+ regval |= ((pinmode << IOCON_MODE_SHIFT) & IOCON_MODE_MASK);
putreg32(regval, regaddr);
}
@@ -646,21 +620,13 @@ static inline int lpc17_configinput(lpc17_pinset_t cfgset, unsigned int port,
lpc17_setinvertinput(port, pin);
}
- /* Set hysteresis */
+ /* Set input hysteresis */
- if ((cfgset & GPIO_HYSTERESIS) != 0)
- {
- lpc17_sethysteresis(port, pin);
- }
+ lpc17_sethysteresis(cfgset, port, pin);
- /* Set filtering */
-
- if ((cfgset & GPIO_FILTER) != 0)
- {
- /* Slew rate is normal mode at reset */
+ /* Set input filtering */
- lpc17_setfilter(port, pin);
- }
+ lpc17_setfilter(cfgset, port, pin);
/* Configure as GPIO */
@@ -737,22 +703,9 @@ static inline int lpc17_configoutput(lpc17_pinset_t cfgset, unsigned int port,
lpc17_setopendrain(port, pin);
}
- /* Check for slew rate output */
-
- if ((cfgset & GPIO_SLEW) != 0)
- {
- /* Slew rate is normal mode at reset */
+ /* Set output slew rate */
- lpc17_setslewfast(port, pin);
- }
- else
- {
- /* But we still may need to set the normal mode because we may
- * be reconfiguring the GPIO pin.
- */
-
- lpc17_setslewnormal(port, pin);
- }
+ lpc17_setslewmode(cfgset, port, pin);
/* Set the initial value of the output */
diff --git a/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.h b/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.h
index 2e80b0de1..953f5d843 100644
--- a/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.h
+++ b/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.h
@@ -61,11 +61,14 @@
*/
#define GPIO_IOCON_MASK (0x00ff0000)
-# define GPIO_HYSTERESIS (1 << 16) /* Bit 16: HYSTERESIS: 0-Disable, 1-Enabled */
+# define GPIO_INBUFF_SHIFT (16)
+# define GPIO_HYSTERESIS (1 << GPIO_INBUFF_SHIFT) /* Bit 16: HYSTERESIS: 0-Disable, 1-Enabled */
# define GPIO_INVERT (1 << 17) /* Bit 17: Input: 0-Not Inverted, 1-Inverted */
-# define GPIO_SLEW (1 << 18) /* Bit 18: Rate Control: 0-Standard mode, 1-Fast mode */
+# define GPIO_SLEW_SHIFT (18) /* Bit 18: Rate Control: 0-Standard mode, 1-Fast mode */
+# define GPIO_SLEW (1 << GPIO_SLEW_SHIFT) /* Bit 18: Rate Control: 0-Standard mode, 1-Fast mode */
# define GPIO_ADMODE (1 << 19) /* Bit 19: A/D Modes: 0-Analog, 1-Digital */
-# define GPIO_FILTER (1 << 20) /* Bit 20: Filter: 0-Off, 1-ON */
+# define GPIO_FILTER_SHIFT (20)
+# define GPIO_FILTER (1 << GPIO_FILTER_SHIFT) /* Bit 20: Filter: 0-Off, 1-ON */
# define GPIO_DACEN (1 << 21) /* Bit 21: DAC: 0-Disabled, 1-Enabled, P0:26 only */
# define GPIO_I2CMODE_SHIFT (22) /* Bits 22-23: I2C mode */