summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2013-06-04 16:35:43 -0600
committerGregory Nutt <gnutt@nuttx.org>2013-06-04 16:35:43 -0600
commitf092889d19ae4cc2c0c35e8ffb70ebe024e36c75 (patch)
tree986e0434bbcd7733160deecf800c6d7637795209
parent44af85860981ee7408bbb65fe43baa8245a7e926 (diff)
downloadnuttx-f092889d19ae4cc2c0c35e8ffb70ebe024e36c75.tar.gz
nuttx-f092889d19ae4cc2c0c35e8ffb70ebe024e36c75.tar.bz2
nuttx-f092889d19ae4cc2c0c35e8ffb70ebe024e36c75.zip
Add configs/sam4l-xplained/src/up_userleds.c
-rw-r--r--nuttx/arch/arm/src/sam34/sam_clockconfig.c1
-rw-r--r--nuttx/configs/sam3u-ek/include/board.h1
-rw-r--r--nuttx/configs/sam3u-ek/src/up_lcd.c1
-rw-r--r--nuttx/configs/sam3u-ek/src/up_leds.c1
-rw-r--r--nuttx/configs/sam3u-ek/src/up_touchscreen.c1
-rw-r--r--nuttx/configs/sam4l-xplained/include/board.h30
-rw-r--r--nuttx/configs/sam4l-xplained/src/Makefile12
-rw-r--r--nuttx/configs/sam4l-xplained/src/sam_autoleds.c5
-rw-r--r--nuttx/configs/sam4l-xplained/src/sam_userleds.c141
9 files changed, 180 insertions, 13 deletions
diff --git a/nuttx/arch/arm/src/sam34/sam_clockconfig.c b/nuttx/arch/arm/src/sam34/sam_clockconfig.c
index 8a3988a40..051e22ac7 100644
--- a/nuttx/arch/arm/src/sam34/sam_clockconfig.c
+++ b/nuttx/arch/arm/src/sam34/sam_clockconfig.c
@@ -1,5 +1,4 @@
/****************************************************************************
- * arch/arm/src/sam34/sam_clockconfig.c
* arch/arm/src/chip/sam_clockconfig.c
*
* Copyright (C) 2010 Gregory Nutt. All rights reserved.
diff --git a/nuttx/configs/sam3u-ek/include/board.h b/nuttx/configs/sam3u-ek/include/board.h
index 213a6f4e4..b5e112479 100644
--- a/nuttx/configs/sam3u-ek/include/board.h
+++ b/nuttx/configs/sam3u-ek/include/board.h
@@ -1,6 +1,5 @@
/************************************************************************************
* configs/sam3u-ek/include/board.h
- * include/arch/board/board.h
*
* Copyright (C) 2009-2011, 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
diff --git a/nuttx/configs/sam3u-ek/src/up_lcd.c b/nuttx/configs/sam3u-ek/src/up_lcd.c
index 2190fb15e..ebeb35d91 100644
--- a/nuttx/configs/sam3u-ek/src/up_lcd.c
+++ b/nuttx/configs/sam3u-ek/src/up_lcd.c
@@ -1,6 +1,5 @@
/**************************************************************************************
* configs/sam3u-ek/src/up_lcd.c
- * arch/arm/src/board/up_lcd.c
*
* Copyright (C) 2010-2011, 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
diff --git a/nuttx/configs/sam3u-ek/src/up_leds.c b/nuttx/configs/sam3u-ek/src/up_leds.c
index 1c6c4aeb7..3a6d09a48 100644
--- a/nuttx/configs/sam3u-ek/src/up_leds.c
+++ b/nuttx/configs/sam3u-ek/src/up_leds.c
@@ -1,6 +1,5 @@
/****************************************************************************
* configs/sam3u-ek/src/up_leds.c
- * arch/arm/src/board/up_leds.c
*
* Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
diff --git a/nuttx/configs/sam3u-ek/src/up_touchscreen.c b/nuttx/configs/sam3u-ek/src/up_touchscreen.c
index 71b12f571..251d9b624 100644
--- a/nuttx/configs/sam3u-ek/src/up_touchscreen.c
+++ b/nuttx/configs/sam3u-ek/src/up_touchscreen.c
@@ -1,6 +1,5 @@
/************************************************************************************
* configs/sam3u-ek/src/up_touchscreen.c
- * arch/arm/src/board/up_touchscreen.c
*
* Copyright (C) 2011-2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
diff --git a/nuttx/configs/sam4l-xplained/include/board.h b/nuttx/configs/sam4l-xplained/include/board.h
index cb70aff04..ca7bb0ef1 100644
--- a/nuttx/configs/sam4l-xplained/include/board.h
+++ b/nuttx/configs/sam4l-xplained/include/board.h
@@ -115,8 +115,18 @@
*
* This LED is controlled by PC07 and LED0 can be activated by driving the
* PC07 to GND.
- *
- * When CONFIG_ARCH_LEDS is defined in the NuttX configuration, NuttX will
+ */
+
+/* LED index values for use with sam_setled() */
+
+#define BOARD_LED0 0
+#define BOARD_NLEDS 1
+
+/* LED bits for use with sam_setleds() */
+
+#define BOARD_LED0_BIT (1 << BOARD_LED0)
+
+/* When CONFIG_ARCH_LEDS is defined in the NuttX configuration, NuttX will
* control LED0 as defined below. Thus is LED0 is statically on, NuttX has
* successfully booted and is, apparently, running normmally. If LED0 is
* flashing at approximately 2Hz, then a fatal error has been detected and the
@@ -199,6 +209,22 @@ extern "C" {
void sam_boardinitialize(void);
/************************************************************************************
+ * Name: sam_ledinit, sam_setled, and sam_setleds
+ *
+ * Description:
+ * If CONFIG_ARCH_LEDS is defined, then NuttX will control the on-board LEDs. If
+ * CONFIG_ARCH_LEDS is not defined, then the following interfaces are available to
+ * control the LEDs from user applications.
+ *
+ ************************************************************************************/
+
+#ifndef CONFIG_ARCH_LEDS
+void sam_ledinit(void);
+void sam_setled(int led, bool ledon);
+void sam_setleds(uint8_t ledset);
+#endif
+
+/************************************************************************************
* Name: up_buttoninit
*
* Description:
diff --git a/nuttx/configs/sam4l-xplained/src/Makefile b/nuttx/configs/sam4l-xplained/src/Makefile
index 4b1efd0ce..15b5ff67e 100644
--- a/nuttx/configs/sam4l-xplained/src/Makefile
+++ b/nuttx/configs/sam4l-xplained/src/Makefile
@@ -40,7 +40,17 @@ CFLAGS += -I$(TOPDIR)/sched
ASRCS =
AOBJS = $(ASRCS:.S=$(OBJEXT))
-CSRCS = sam_boot.c sam_autoleds.c sam_buttons.c sam_spi.c
+CSRCS = sam_boot.c sam_spi.c
+
+ifeq ($(CONFIG_ARCH_LEDS),y)
+CSRCS += sam_autoleds.c
+else
+CSRCS += sam_userleds.c
+endif
+
+ifeq ($(CONFIG_ARCH_BUTTONS),y)
+CSRCS += sam_buttons.c
+endif
COBJS = $(CSRCS:.c=$(OBJEXT))
diff --git a/nuttx/configs/sam4l-xplained/src/sam_autoleds.c b/nuttx/configs/sam4l-xplained/src/sam_autoleds.c
index 1ea1afbe4..09b673a96 100644
--- a/nuttx/configs/sam4l-xplained/src/sam_autoleds.c
+++ b/nuttx/configs/sam4l-xplained/src/sam_autoleds.c
@@ -92,11 +92,6 @@
# define ledvdbg(x...)
#endif
-#define LED_OFF 0
-#define LED_ON 1
-#define LED_NOCHANGE 2
-#define LED_MASK 3
-
/****************************************************************************
* Private Data
****************************************************************************/
diff --git a/nuttx/configs/sam4l-xplained/src/sam_userleds.c b/nuttx/configs/sam4l-xplained/src/sam_userleds.c
new file mode 100644
index 000000000..bf77e2c7f
--- /dev/null
+++ b/nuttx/configs/sam4l-xplained/src/sam_userleds.c
@@ -0,0 +1,141 @@
+/****************************************************************************
+ * configs/sam4l-xplained/src/sam_userleds.c
+ *
+ * Copyright (C) 2013 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+/* There are three LEDs on board the SAM4L Xplained Pro board: The EDBG
+ * controls two of the LEDs, a power LED and a status LED. There is only
+ * one user controllable LED, a yellow LED labeled LED0 near the SAM4L USB
+ * connector.
+ *
+ * This LED is controlled by PC07 and LED0 can be activated by driving the
+ * PC07 to GND.
+ *
+ * When CONFIG_ARCH_LEDS is defined in the NuttX configuration, NuttX will
+ * control LED0. Otherwise, LED0 can be controlled from logic in this file.
+ */
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <debug.h>
+
+#include <arch/board/board.h>
+
+#include "sam_gpio.h"
+#include "sam4l-xplained.h"
+
+#ifndef CONFIG_ARCH_LEDS
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* CONFIG_DEBUG_LEDS enables debug output from this file (needs CONFIG_DEBUG
+ * with CONFIG_DEBUG_VERBOSE too)
+ */
+
+#ifdef CONFIG_DEBUG_LEDS
+# define leddbg lldbg
+# define ledvdbg llvdbg
+#else
+# define leddbg(x...)
+# define ledvdbg(x...)
+#endif
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: sam_ledinit
+ *
+ * Description:
+ * If CONFIG_ARCH_LEDS is defined, then NuttX will control the on-board
+ * LEDs. If CONFIG_ARCH_LEDS is not defined, then the sam_ledinit() is
+ * available to initialize the LED0 from user application logic.
+ *
+ ****************************************************************************/
+
+void sam_ledinit(void)
+{
+ (void)sam_configgpio(GPIO_LED0);
+}
+
+/****************************************************************************
+ * Name: sam_setled
+ *
+ * Description:
+ * If CONFIG_ARCH_LEDS is defined, then NuttX will control the on-board
+ * LEDs. If CONFIG_ARCH_LEDS is not defined, then the sam_setled() is
+ * available to control the LED0 from user application logic.
+ *
+ *****************************************************************************/
+
+void sam_setled(int led, bool ledon)
+{
+ if (led == BOARD_LED0)
+ {
+ sam_gpiowrite(GPIO_LED0, !ledon);
+ }
+}
+
+/****************************************************************************
+ * Name: sam_setled
+ *
+ * Description:
+ * If CONFIG_ARCH_LEDS is defined, then NuttX will control the on-board
+ * LEDs. If CONFIG_ARCH_LEDS is not defined, then the sam_setleds() is
+ * available to control the LED0 from user application logic. NOTE: since
+ * there is only a single LED on-board, this is function is not very useful.
+ *
+ *****************************************************************************/
+
+void sam_setleds(uint8_t ledset)
+{
+ sam_setled(BOARD_LED0, (ledset & BOARD_LED0_BIT) != 0);
+}
+
+#endif /* !CONFIG_ARCH_LEDS */