summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2013-05-06 11:07:53 -0600
committerGregory Nutt <gnutt@nuttx.org>2013-05-06 11:07:53 -0600
commitb6d1d101fc17a7627ca5cc88366fd7a1904bf74e (patch)
treebfaa13406f44c39949b0b0c4e2a46b00f2ebb2fb
parente21898b25ae82d55bd2e80b86e3ad61c1ed56643 (diff)
downloadnuttx-b6d1d101fc17a7627ca5cc88366fd7a1904bf74e.tar.gz
nuttx-b6d1d101fc17a7627ca5cc88366fd7a1904bf74e.tar.bz2
nuttx-b6d1d101fc17a7627ca5cc88366fd7a1904bf74e.zip
Fixes LEDs on the Freedom KL25Z board
-rw-r--r--nuttx/ChangeLog6
-rw-r--r--nuttx/arch/arm/src/kl/kl_gpio.c7
-rw-r--r--nuttx/arch/arm/src/kl/kl_gpio.h18
-rw-r--r--nuttx/configs/freedom-kl25z/README.txt18
-rw-r--r--nuttx/configs/freedom-kl25z/src/freedom-kl25z.h6
-rw-r--r--nuttx/configs/freedom-kl25z/src/kl_led.c42
6 files changed, 63 insertions, 34 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index e7286abe0..5ece07698 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -4676,4 +4676,8 @@
kconfig-frontends tools (2013-5-5).
* drivers/lcd/mio283qt2.c: LCD was not being selected in setpower
method (also not being deselected in hwinitialize function)
- (2013-5-6).
+ (2013-5-6).
+ * arch/arm/src/kl/kl_gpio.c and .h, configs/freedom-kl25z/src/freedom-kl25z.h,
+ and configs/freedom-kl25z/src/kl_led.c: Fixes LEDs on the Freedom KL25Z
+ board (2013-5-6).
+
diff --git a/nuttx/arch/arm/src/kl/kl_gpio.c b/nuttx/arch/arm/src/kl/kl_gpio.c
index 78d49e0c9..58de0eea1 100644
--- a/nuttx/arch/arm/src/kl/kl_gpio.c
+++ b/nuttx/arch/arm/src/kl/kl_gpio.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/src/kl/kl_pin.c
*
- * Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2011, 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -103,7 +103,7 @@ int kl_configgpio(uint32_t cfgset)
* options are applicable.
*/
- if (mode == _PIN_MODE_ANALOG)
+ if (mode == PIN_MODE_ANALOG)
{
/* Set the analog mode with all digital options zeroed */
@@ -184,7 +184,7 @@ int kl_configgpio(uint32_t cfgset)
/* Additional configuration for the case of Alternative 1 (GPIO) modes */
- if (mode == _PIN_MODE_GPIO)
+ if (mode == PIN_MODE_GPIO)
{
/* Set the GPIO port direction */
@@ -213,6 +213,7 @@ int kl_configgpio(uint32_t cfgset)
return OK;
}
+
return -EINVAL;
}
diff --git a/nuttx/arch/arm/src/kl/kl_gpio.h b/nuttx/arch/arm/src/kl/kl_gpio.h
index 17f947a4f..647fbe45d 100644
--- a/nuttx/arch/arm/src/kl/kl_gpio.h
+++ b/nuttx/arch/arm/src/kl/kl_gpio.h
@@ -62,18 +62,26 @@
/* Bits 25-31: 7 bits are used to encode the basic pin configuration:
*
* oooo mmm- ---- ---- ---- ---- ---- ----
- * oooommm:
- * | `--- mmm: mode
+ * | `--- mmm: mode
* `------- oooo: options (may be combined)
*/
-#define _PIN_MODE_SHIFT (25) /* Bits 25-27: Pin mode */
+#define _PIN_MODE_SHIFT (25) /* Bits 25-27: Pin mode */
#define _PIN_MODE_MASK (7 << _PIN_MODE_SHIFT)
-#define _PIN_OPTIONS_SHIFT (28) /* Bits 28-31: Pin mode options */
+#define _PIN_OPTIONS_SHIFT (28) /* Bits 28-31: Pin mode options */
#define _PIN_OPTIONS_MASK (15 << _PIN_OPTIONS_SHIFT)
/* Port Modes */
+#define PIN_MODE_ANALOG (0) /* 000 Pin Disabled (Analog) */
+#define PIN_MODE_GPIO (1) /* 001 Alternative 1 (GPIO) */
+#define PIN_MODE_ALT2 (2) /* 010 Alternative 2 */
+#define PIN_MODE_ALT3 (3) /* 011 Alternative 3 */
+#define PIN_MODE_ALT4 (4) /* 100 Alternative 4 */
+#define PIN_MODE_ALT5 (5) /* 101 Alternative 5 */
+#define PIN_MODE_ALT6 (6) /* 110 Alternative 6 */
+#define PIN_MODE_ALT7 (7) /* 111 Alternative 7 */
+
#define _PIN_MODE_ANALOG (0 << _PIN_MODE_SHIFT) /* 000 Pin Disabled (Analog) */
#define _PIN_MODE_GPIO (1 << _PIN_MODE_SHIFT) /* 001 Alternative 1 (GPIO) */
#define _PIN_MODE_ALT2 (2 << _PIN_MODE_SHIFT) /* 010 Alternative 2 */
@@ -294,7 +302,7 @@
* Public Types
****************************************************************************/
-typedef uint16_t gpio_cfgset_t;
+typedef uint32_t gpio_cfgset_t;
/****************************************************************************
* Public Data
diff --git a/nuttx/configs/freedom-kl25z/README.txt b/nuttx/configs/freedom-kl25z/README.txt
index 00bb4640b..5a278d3fa 100644
--- a/nuttx/configs/freedom-kl25z/README.txt
+++ b/nuttx/configs/freedom-kl25z/README.txt
@@ -88,15 +88,15 @@ LEDs
SYMBOL Meaning LED state
Initially all LED is OFF
------------------- ----------------------- --------------------------
- LED_STARTED NuttX has been started
- LED_HEAPALLOCATE Heap has been allocated
- LED_IRQSENABLED Interrupts enabled
- LED_STACKCREATED Idle stack created
- LED_INIRQ In an interrupt
- LED_SIGNAL In a signal handler
- LED_ASSERTION An assertion failed
- LED_PANIC The system has crashed
- LED_IDLE K25Z1XX is in sleep mode (Optional, not used)
+ LED_STARTED NuttX has been started R=OFF G=OFF B=OFF
+ LED_HEAPALLOCATE Heap has been allocated (no change)
+ LED_IRQSENABLED Interrupts enabled (no change)
+ LED_STACKCREATED Idle stack created R=OFF G=OFF B=ON
+ LED_INIRQ In an interrupt (no change)
+ LED_SIGNAL In a signal handler (no change)
+ LED_ASSERTION An assertion failed (no change)
+ LED_PANIC The system has crashed R=FLASHING G=OFF B=OFF
+ LED_IDLE K25Z1XX is in sleep mode (Optional, not used)
Serial Console
==============
diff --git a/nuttx/configs/freedom-kl25z/src/freedom-kl25z.h b/nuttx/configs/freedom-kl25z/src/freedom-kl25z.h
index cc2f35a84..7638c4558 100644
--- a/nuttx/configs/freedom-kl25z/src/freedom-kl25z.h
+++ b/nuttx/configs/freedom-kl25z/src/freedom-kl25z.h
@@ -79,9 +79,9 @@
* LED_IDLE K25Z1XX is in sleep mode (Optional, not used)
*/
-#define GPIO_LED_R (GPIO_OUTPUT | PIN_PORTB | PIN18)
-#define GPIO_LED_G (GPIO_OUTPUT | PIN_PORTB | PIN19)
-#define GPIO_LED_B (GPIO_OUTPUT | PIN_PORTD | PIN1)
+#define GPIO_LED_R (GPIO_OUTPUT | GPIO_OUTPUT_ONE | PIN_PORTB | PIN18)
+#define GPIO_LED_G (GPIO_OUTPUT | GPIO_OUTPUT_ONE | PIN_PORTB | PIN19)
+#define GPIO_LED_B (GPIO_OUTPUT | GPIO_OUTPUT_ONE | PIN_PORTD | PIN1)
/* Button definitions ***************************************************************/
/* The Freedom KL25Z has no buttons */
diff --git a/nuttx/configs/freedom-kl25z/src/kl_led.c b/nuttx/configs/freedom-kl25z/src/kl_led.c
index a71c56638..1d54be45c 100644
--- a/nuttx/configs/freedom-kl25z/src/kl_led.c
+++ b/nuttx/configs/freedom-kl25z/src/kl_led.c
@@ -1,6 +1,6 @@
/****************************************************************************
- * configs/freedom-kl25z/src/up_autoleds.c
- * arch/arm/src/board/up_autoleds.c
+ * configs/freedom-kl25z/src/kl_led.c
+ * arch/arm/src/board/kl_led.c
*
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
@@ -48,15 +48,15 @@
* SYMBOL Meaning LED state
* Initially all LED is OFF
* ------------------- ----------------------- --------------------------
- * LED_STARTED NuttX has been started
- * LED_HEAPALLOCATE Heap has been allocated
- * LED_IRQSENABLED Interrupts enabled
- * LED_STACKCREATED Idle stack created
- * LED_INIRQ In an interrupt
- * LED_SIGNAL In a signal handler
- * LED_ASSERTION An assertion failed
- * LED_PANIC The system has crashed
- * LED_IDLE K25Z1XX is in sleep mode (Optional, not used)
+ * LED_STARTED NuttX has been started R=OFF G=OFF B=OFF
+ * LED_HEAPALLOCATE Heap has been allocated (no change)
+ * LED_IRQSENABLED Interrupts enabled (no change)
+ * LED_STACKCREATED Idle stack created R=OFF G=OFF B=ON
+ * LED_INIRQ In an interrupt (no change)
+ * LED_SIGNAL In a signal handler (no change)
+ * LED_ASSERTION An assertion failed (no change)
+ * LED_PANIC The system has crashed R=FLASHING G=OFF B=OFF
+ * LED_IDLE K25Z1XX is in sleep mode (Optional, not used)
*/
/****************************************************************************
@@ -138,7 +138,18 @@ void kl_ledinit(void)
void up_ledon(int led)
{
- kl_gpiowrite(GPIO_LED_B, false);
+ if (led == LED_STACKCREATED)
+ {
+ kl_gpiowrite(GPIO_LED_R, true);
+ kl_gpiowrite(GPIO_LED_G, true);
+ kl_gpiowrite(GPIO_LED_B, false);
+ }
+ else if (led == LED_PANIC)
+ {
+ kl_gpiowrite(GPIO_LED_R, false);
+ kl_gpiowrite(GPIO_LED_G, true);
+ kl_gpiowrite(GPIO_LED_B, true);
+ }
}
/****************************************************************************
@@ -147,7 +158,12 @@ void up_ledon(int led)
void up_ledoff(int led)
{
- kl_gpiowrite(GPIO_LED_B, true);
+ if (led == LED_PANIC)
+ {
+ kl_gpiowrite(GPIO_LED_R, true);
+ kl_gpiowrite(GPIO_LED_G, true);
+ kl_gpiowrite(GPIO_LED_B, true);
+ }
}
#endif /* CONFIG_ARCH_LEDS */