summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-03-27 16:17:23 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-03-27 16:17:23 +0000
commitedbc078badbeefcdc65ebde8e66ea0d519e05a04 (patch)
treef82f35fab8ffdf51da22eddbf3a5a20f83f1a806
parentc36e183aa7872e0df15ee2581f86c026c6107031 (diff)
downloadnuttx-edbc078badbeefcdc65ebde8e66ea0d519e05a04.tar.gz
nuttx-edbc078badbeefcdc65ebde8e66ea0d519e05a04.tar.bz2
nuttx-edbc078badbeefcdc65ebde8e66ea0d519e05a04.zip
Add DM320 LED support
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@157 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r--nuttx/arch/dm320/src/Makefile20
-rw-r--r--nuttx/arch/dm320/src/up_head.S5
-rw-r--r--nuttx/arch/dm320/src/up_internal.h12
-rw-r--r--nuttx/configs/ntosd-dm320/src/Makefile4
-rw-r--r--nuttx/configs/ntosd-dm320/src/up_leds.c109
5 files changed, 146 insertions, 4 deletions
diff --git a/nuttx/arch/dm320/src/Makefile b/nuttx/arch/dm320/src/Makefile
index 6ee4d4a9c..702d57951 100644
--- a/nuttx/arch/dm320/src/Makefile
+++ b/nuttx/arch/dm320/src/Makefile
@@ -63,6 +63,8 @@ LINKLIBS =
LDPATHES = $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS)))
LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS))))
+BOARDDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
+
LIBGCC = ${shell $(CC) -print-libgcc-file-name}
all: up_head.o libarch$(LIBEXT)
@@ -79,9 +81,12 @@ libarch$(LIBEXT): $(OBJS)
{ echo "$(AR) $@ $obj FAILED!" ; exit 1 ; } ; \
done ; )
-nuttx: $(LINKOBJS)
- $(LD) --entry=__start $(LDFLAGS) $(LDPATHES) -o $(TOPDIR)/$@ $(LINKOBJS) \
- --start-group $(LDLIBS) --end-group $(EXTRA_LIBS) $(LIBGCC)
+board/libboard$(LIBEXT):
+ $(MAKE) -C board TOPDIR=$(TOPDIR) libboard$(LIBEXT)
+
+nuttx: $(LINKOBJS) board/libboard$(LIBEXT)
+ $(LD) --entry=__start $(LDFLAGS) $(LDPATHES) -L$(BOARDDIR) -o $(TOPDIR)/$@ $(LINKOBJS) \
+ --start-group $(LDLIBS) -lboard --end-group $(EXTRA_LIBS) $(LIBGCC)
@$(NM) $(TOPDIR)/$@ | \
grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
sort > $(TOPDIR)/System.map
@@ -98,15 +103,24 @@ ifeq ($(CONFIG_RRLOAD_BINARY),y)
endif
.depend: Makefile $(SRCS)
+ @if [ -e board/Makefile ]; then \
+ $(MAKE) -C board TOPDIR=$(TOPDIR) depend ; \
+ if
$(MKDEP) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep
touch $@
depend: .depend
clean:
+ @if [ -e board/Makefile ]; then \
+ $(MAKE) -C board TOPDIR=$(TOPDIR) clean ; \
+ fi
rm -f libarch$(LIBEXT) *.o *~
distclean: clean
+ @if [ -e board/Makefile ]; then \
+ $(MAKE) -C board TOPDIR=$(TOPDIR) distclean ; \
+ fi
rm -f Make.dep .depend
-include Make.dep
diff --git a/nuttx/arch/dm320/src/up_head.S b/nuttx/arch/dm320/src/up_head.S
index a00e615c3..387541079 100644
--- a/nuttx/arch/dm320/src/up_head.S
+++ b/nuttx/arch/dm320/src/up_head.S
@@ -277,6 +277,11 @@ __start:
bl up_boot
+ /* Set up the LEDs */
+
+#ifdef CONFIG_ARCH_LEDS
+ bl up_ledinit
+#endif
/* Perform early serial initialization */
#ifdef CONFIG_DEV_CONSOLE
diff --git a/nuttx/arch/dm320/src/up_internal.h b/nuttx/arch/dm320/src/up_internal.h
index 2c3461697..6360d552b 100644
--- a/nuttx/arch/dm320/src/up_internal.h
+++ b/nuttx/arch/dm320/src/up_internal.h
@@ -144,6 +144,18 @@ extern void up_timerinit(void);
extern void up_maskack_irq(int irq);
+/* Defined in board/up_leds.c */
+
+#ifdef CONFIG_ARCH_LEDS
+extern void up_ledinit(void);
+extern void up_ledon(int led);
+extern void up_ledoff(int led);
+#else
+# define up_ledinit()
+# define up_ledon(led)
+# define up_ledoff(led)
+#endif
+
#endif /* __ASSEMBLY__ */
#endif /* __UP_INTERNAL_H */
diff --git a/nuttx/configs/ntosd-dm320/src/Makefile b/nuttx/configs/ntosd-dm320/src/Makefile
index 5f2bd8083..177328576 100644
--- a/nuttx/configs/ntosd-dm320/src/Makefile
+++ b/nuttx/configs/ntosd-dm320/src/Makefile
@@ -40,12 +40,14 @@ CFLAGS += -I$(TOPDIR)/sched
ASRCS =
AOBJS = $(ASRCS:.S=$(OBJEXT))
-CSRCS =
+CSRCS = up_leds.c
COBJS = $(CSRCS:.c=$(OBJEXT))
SRCS = $(ASRCS) $(CSRCS)
OBJS = $(AOBJS) $(COBJS)
+CFLAGS += -I $(TOPDIR)/arch/$(CONFIG_ARCH)/src
+
all: libboard$(LIBEXT)
$(AOBJS): %$(OBJEXT): %.S
diff --git a/nuttx/configs/ntosd-dm320/src/up_leds.c b/nuttx/configs/ntosd-dm320/src/up_leds.c
new file mode 100644
index 000000000..d9581fae5
--- /dev/null
+++ b/nuttx/configs/ntosd-dm320/src/up_leds.c
@@ -0,0 +1,109 @@
+/************************************************************
+ * up_leds.c
+ *
+ * Copyright (C) 2007 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+ *
+ * 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 Gregory Nutt 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.
+ *
+ ************************************************************/
+
+/************************************************************
+ * Included Files
+ ************************************************************/
+
+#include <nuttx/config.h>
+#include <sys/types.h>
+#include "up_internal.h"
+
+/************************************************************
+ * Definitions
+ ************************************************************/
+
+#define CS2 *(volatile uint32*)0xffff2e08
+#define LEDS *(volatile uint32*)0x01000000
+
+/************************************************************
+ * Private Data
+ ************************************************************/
+
+static uint32 g_ledstate;
+
+/************************************************************
+ * Private Functions
+ ************************************************************/
+
+/************************************************************
+ * Public Funtions
+ ************************************************************/
+
+/************************************************************
+ * Name: up_ledinit
+ ************************************************************/
+
+#ifdef CONFIG_ARCH_LEDS
+void up_ledinit(void)
+{
+ GIO_OUTPUT(GIO_LED_GREEN);
+ GIO_OUTPUT(GIO_LED_RED);
+ GIO_SET_OUTPUT(GIO_LED_GREEN);
+ GIO_CLEAR_OUTPUT(GIO_LED_RED);
+}
+
+/************************************************************
+ * Name: up_ledon
+ ************************************************************/
+
+void up_ledon(int led)
+{
+ if (led == GIO_LED_GREEN)
+ {
+ GIO_SET_OUTPUT(GIO_LED_GREEN);
+ }
+ else if (led == GIO_LED_RED)
+ {
+ GIO_SET_OUTPUT(GIO_LED_RED);
+ }
+}
+
+/************************************************************
+ * Name: up_ledoff
+ ************************************************************/
+
+void up_ledoff(int led)
+{
+ if (led == GIO_LED_GREEN)
+ {
+ GIO_CLEAR_OUTPUT(GIO_LED_GREEN);
+ }
+ else if (led == GIO_LED_RED)
+ {
+ GIO_CLEAR_OUTPUT(GIO_LED_RED);
+ }
+}
+#endif /* CONFIG_ARCH_LEDS */