summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2013-04-06 08:04:17 -0600
committerGregory Nutt <gnutt@nuttx.org>2013-04-06 08:04:17 -0600
commit734d1cef29e8333e423c6bf5829cd17677f419e0 (patch)
treef1e64d054d6e8ab8fdc62bbf7c141ef70b115dc9
parent7f43e2fbfdfb32ebc8cb96eed991131506e22587 (diff)
downloadnuttx-734d1cef29e8333e423c6bf5829cd17677f419e0.tar.gz
nuttx-734d1cef29e8333e423c6bf5829cd17677f419e0.tar.bz2
nuttx-734d1cef29e8333e423c6bf5829cd17677f419e0.zip
Fix LPC178x I2C mode GPIO configuration
-rwxr-xr-xnuttx/arch/arm/src/lpc17xx/chip/lpc178x_iocon.h16
-rwxr-xr-xnuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c4
-rw-r--r--nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.h7
3 files changed, 15 insertions, 12 deletions
diff --git a/nuttx/arch/arm/src/lpc17xx/chip/lpc178x_iocon.h b/nuttx/arch/arm/src/lpc17xx/chip/lpc178x_iocon.h
index 33e883c4e..ab93d08f9 100755
--- a/nuttx/arch/arm/src/lpc17xx/chip/lpc178x_iocon.h
+++ b/nuttx/arch/arm/src/lpc17xx/chip/lpc178x_iocon.h
@@ -348,17 +348,17 @@
/* Slew rate modes */
-#define IOCON_SLEWMODE_NORMAL (0 << IOCON_SLEW_SHIFT)
-#define IOCON_SLEWMODE_FAST (1 << IOCON_SLEW_SHIFT)
+#define IOCON_SLEWMODE_NORMAL (0 << IOCON_SLEW_SHIFT)
+#define IOCON_SLEWMODE_FAST (1 << IOCON_SLEW_SHIFT)
/* I2C modes */
-#define IOCON_I2CMODE_SHIFT (IOCON_I2CHS_SHIFT)
-#define IOCON_I2CMODE_MASK (3 << IOCON_I2CMODE_SHIFT)
-#define IOCON_I2CMODE_FAST (0 << IOCON_I2CMODE_SHIFT)
-#define IOCON_I2CMODE_FASTPLUS (1 << IOCON_I2CMODE_SHIFT)/* */
-#define IOCON_I2CMODE_HIOPENDRAIN (2 << IOCON_I2CMODE_SHIFT)/* */
-#define IOCON_I2CMODE_OPENDRAIN (3 << IOCON_I2CMODE_SHIFT)/* */
+#define IOCON_I2CMODE_SHIFT (IOCON_I2CHS_SHIFT)
+#define IOCON_I2CMODE_MASK (3 << IOCON_I2CMODE_SHIFT)
+# define IOCON_I2CMODE_FAST (0 << IOCON_I2CMODE_SHIFT)
+# define IOCON_I2CMODE_FASTPLUS (1 << IOCON_I2CMODE_SHIFT)/* */
+# define IOCON_I2CMODE_HIOPENDRAIN (2 << IOCON_I2CMODE_SHIFT)/* */
+# define IOCON_I2CMODE_OPENDRAIN (3 << IOCON_I2CMODE_SHIFT)/* */
/************************************************************************************
* Public Types
diff --git a/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c b/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c
index 34dcd0162..2272858a2 100755
--- a/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c
+++ b/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.c
@@ -803,9 +803,9 @@ static int lpc17_configalternate(lpc17_pinset_t cfgset, unsigned int port,
if ((cfgset & (GPIO_I2CHS | GPIO_HIDRIVE)) != 0)
{
- /* WARNING: Using literal values (14) is a maintenance problem */
+ /* Isolate the I2C mode bits */
- i2cmode = ((cfgset & (GPIO_I2CHS | GPIO_HIDRIVE)) >> 14);
+ i2cmode = ((cfgset & GPIO_I2CMODE_MASK) >> GPIO_I2CMODE_SHIFT);
/* Set I2C Modes */
diff --git a/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.h b/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.h
index 130bb3aa3..2e80b0de1 100644
--- a/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.h
+++ b/nuttx/arch/arm/src/lpc17xx/lpc178x_gpio.h
@@ -67,8 +67,11 @@
# 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_DACEN (1 << 21) /* Bit 21: DAC: 0-Disabled, 1-Enabled, P0:26 only */
-# define GPIO_I2CHS (1 << 22) /* Bit 22: Filter and Rate Control: 0-Enabled, 1-Disabled */
-# define GPIO_HIDRIVE (1 << 23) /* Bit 23: Current Sink: 0-4mA, 1-20mA P5:2 and P5:3 only,*/
+
+# define GPIO_I2CMODE_SHIFT (22) /* Bits 22-23: I2C mode */
+# define GPIO_I2CMODE_MASK (3 << GPIO_I2CMODE_SHIFT)
+# define GPIO_I2CHS (1 << 22) /* Bit 22: Filter and Rate Control: 0-Enabled, 1-Disabled */
+# define GPIO_HIDRIVE (1 << 23) /* Bit 23: Current Sink: 0-4mA, 1-20mA P5:2 and P5:3 only,*/
/* Pin Function bits: FFFF
* Only meaningful when the GPIO function is GPIO_PIN