summaryrefslogtreecommitdiff
path: root/nuttx
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2014-12-10 13:56:00 -0600
committerGregory Nutt <gnutt@nuttx.org>2014-12-10 13:56:00 -0600
commit428e4d0f62d5bc8becce4f695f30d6f6f7f14dc0 (patch)
tree3e453b1c2e95fc0bdc72297cf0dc14592e860ecf /nuttx
parent8a40d2184703e8ace4e3d0a5b3b86783987d197c (diff)
downloadnuttx-428e4d0f62d5bc8becce4f695f30d6f6f7f14dc0.tar.gz
nuttx-428e4d0f62d5bc8becce4f695f30d6f6f7f14dc0.tar.bz2
nuttx-428e4d0f62d5bc8becce4f695f30d6f6f7f14dc0.zip
Tiva I2C: Add I2C options to Kconfig
Diffstat (limited to 'nuttx')
-rw-r--r--nuttx/arch/arm/src/tiva/Kconfig40
-rw-r--r--nuttx/arch/arm/src/tiva/tiva_i2c.c32
2 files changed, 56 insertions, 16 deletions
diff --git a/nuttx/arch/arm/src/tiva/Kconfig b/nuttx/arch/arm/src/tiva/Kconfig
index 1e90a40d5..016bd8bd0 100644
--- a/nuttx/arch/arm/src/tiva/Kconfig
+++ b/nuttx/arch/arm/src/tiva/Kconfig
@@ -318,6 +318,46 @@ config TIVA_DISABLE_GPIOQ_IRQS
endmenu
+if TIVA_I2C
+
+menu "I2C Configuration"
+
+config TIVA_I2C_DYNTIMEO
+ bool "Use dynamic timeouts"
+ default n
+
+if TIVA_I2C_DYNTIMEO
+
+config TIVA_I2C_DYNTIMEO_USECPERBYTE
+ int "Timeout Microseconds per Byte"
+ default 500
+
+config TIVA_I2C_DYNTIMEO_STARTSTOP
+ int "Timeout for Start/Stop (Milliseconds)"
+ default 1000
+
+endif # TIVA_I2C_DYNTIMEO
+
+config TIVA_I2C_TIMEOSEC
+ int "Timeout seconds"
+ default 0
+
+if !TIVA_I2C_DYNTIMEO
+
+config TIVA_I2C_TIMEOMS
+ int "Timeout Milliseconds"
+ default 500
+ depends on !TIVA_I2C_DYNTIMEO
+
+config TIVA_I2C_TIMEOTICKS
+ int "Timeout for Done and Stop (ticks)"
+ default 500
+ depends on !TIVA_I2C_DYNTIMEO
+
+endif # !TIVA_I2C_DYNTIMEO
+endmenu # I2C Configuration
+endif # TIVA_I2C
+
if TIVA_ETHERNET
menu "Tiva/Stellaris Ethernet Configuration"
diff --git a/nuttx/arch/arm/src/tiva/tiva_i2c.c b/nuttx/arch/arm/src/tiva/tiva_i2c.c
index 152d8c02b..383a3a745 100644
--- a/nuttx/arch/arm/src/tiva/tiva_i2c.c
+++ b/nuttx/arch/arm/src/tiva/tiva_i2c.c
@@ -85,24 +85,24 @@
/* Interrupt wait timeout in seconds and milliseconds */
-#if !defined(CONFIG_TIVA_I2CTIMEOSEC) && !defined(CONFIG_TIVA_I2CTIMEOMS)
-# define CONFIG_TIVA_I2CTIMEOSEC 0
-# define CONFIG_TIVA_I2CTIMEOMS 500 /* Default is 500 milliseconds */
-#elif !defined(CONFIG_TIVA_I2CTIMEOSEC)
-# define CONFIG_TIVA_I2CTIMEOSEC 0 /* User provided milliseconds */
-#elif !defined(CONFIG_TIVA_I2CTIMEOMS)
-# define CONFIG_TIVA_I2CTIMEOMS 0 /* User provided seconds */
+#if !defined(CONFIG_TIVA_I2C_TIMEOSEC) && !defined(CONFIG_TIVA_I2C_TIMEOMS)
+# define CONFIG_TIVA_I2C_TIMEOSEC 0
+# define CONFIG_TIVA_I2C_TIMEOMS 500 /* Default is 500 milliseconds */
+#elif !defined(CONFIG_TIVA_I2C_TIMEOSEC)
+# define CONFIG_TIVA_I2C_TIMEOSEC 0 /* User provided milliseconds */
+#elif !defined(CONFIG_TIVA_I2C_TIMEOMS)
+# define CONFIG_TIVA_I2C_TIMEOMS 0 /* User provided seconds */
#endif
/* Interrupt wait time timeout in system timer ticks */
-#ifndef CONFIG_TIVA_I2CTIMEOTICKS
-# define CONFIG_TIVA_I2CTIMEOTICKS \
- (SEC2TICK(CONFIG_TIVA_I2CTIMEOSEC) + MSEC2TICK(CONFIG_TIVA_I2CTIMEOMS))
+#ifndef CONFIG_TIVA_I2C_TIMEOTICKS
+# define CONFIG_TIVA_I2C_TIMEOTICKS \
+ (SEC2TICK(CONFIG_TIVA_I2C_TIMEOSEC) + MSEC2TICK(CONFIG_TIVA_I2C_TIMEOMS))
#endif
#ifndef CONFIG_TIVA_I2C_DYNTIMEO_STARTSTOP
-# define CONFIG_TIVA_I2C_DYNTIMEO_STARTSTOP TICK2USEC(CONFIG_TIVA_I2CTIMEOTICKS)
+# define CONFIG_TIVA_I2C_DYNTIMEO_STARTSTOP TICK2USEC(CONFIG_TIVA_I2C_TIMEOTICKS)
#endif
/* Macros to convert a I2C pin to a GPIO output */
@@ -588,8 +588,8 @@ static inline int tiva_i2c_sem_waitdone(struct tiva_i2c_priv_s *priv)
/* Calculate a time in the future */
-#if CONFIG_TIVA_I2CTIMEOSEC > 0
- abstime.tv_sec += CONFIG_TIVA_I2CTIMEOSEC;
+#if CONFIG_TIVA_I2C_TIMEOSEC > 0
+ abstime.tv_sec += CONFIG_TIVA_I2C_TIMEOSEC;
#endif
/* Add a value proportional to the number of bytes in the transfer */
@@ -602,8 +602,8 @@ static inline int tiva_i2c_sem_waitdone(struct tiva_i2c_priv_s *priv)
abstime.tv_nsec -= 1000 * 1000 * 1000;
}
-#elif CONFIG_TIVA_I2CTIMEOMS > 0
- abstime.tv_nsec += CONFIG_TIVA_I2CTIMEOMS * 1000 * 1000;
+#elif CONFIG_TIVA_I2C_TIMEOMS > 0
+ abstime.tv_nsec += CONFIG_TIVA_I2C_TIMEOMS * 1000 * 1000;
if (abstime.tv_nsec > 1000 * 1000 * 1000)
{
abstime.tv_sec++;
@@ -654,7 +654,7 @@ static inline int tiva_i2c_sem_waitdone(struct tiva_i2c_priv_s *priv)
#ifdef CONFIG_TIVA_I2C_DYNTIMEO
timeout = USEC2TICK(tiva_i2c_tousecs(priv->msgc, priv->msgv));
#else
- timeout = CONFIG_TIVA_I2CTIMEOTICKS;
+ timeout = CONFIG_TIVA_I2C_TIMEOTICKS;
#endif
/* Signal the interrupt handler that we are waiting. NOTE: Interrupts