From: Tom Rix <Tom.Rix@windriver.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 08/10] ZOOM2 Add led support.
Date: Tue, 14 Apr 2009 09:41:01 -0500 [thread overview]
Message-ID: <1239720063-20004-8-git-send-email-Tom.Rix@windriver.com> (raw)
In-Reply-To: <1239720063-20004-7-git-send-email-Tom.Rix@windriver.com>
This patch controls the large LED on the top left of the zoom2.
Signed-off-by: Tom Rix <Tom.Rix@windriver.com>
---
board/omap3/zoom2/Makefile | 8 ++-
board/omap3/zoom2/led.c | 125 +++++++++++++++++++++++++++++++++++++++++
board/omap3/zoom2/zoom2.c | 4 +-
include/configs/omap3_zoom2.h | 16 +++++
4 files changed, 149 insertions(+), 4 deletions(-)
create mode 100644 board/omap3/zoom2/led.c
diff --git a/board/omap3/zoom2/Makefile b/board/omap3/zoom2/Makefile
index d27990c..4a716da 100644
--- a/board/omap3/zoom2/Makefile
+++ b/board/omap3/zoom2/Makefile
@@ -25,10 +25,12 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).a
-COBJS := zoom2.o \
- debug_board.o \
- zoom2_serial.o
+COBJS-y := $(BOARD).o
+COBJS-y += debug_board.o
+COBJS-y += zoom2_serial.o
+COBJS-${CONFIG_STATUS_LED} += led.o
+COBJS := $(sort $(COBJS-y))
SRCS := $(COBJS:.o=.c)
OBJS := $(addprefix $(obj),$(COBJS))
diff --git a/board/omap3/zoom2/led.c b/board/omap3/zoom2/led.c
new file mode 100644
index 0000000..6f25eb7
--- /dev/null
+++ b/board/omap3/zoom2/led.c
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2009 Wind River Systems, Inc.
+ * Tom Rix <Tom.Rix@windriver.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+#include <common.h>
+#include <status_led.h>
+#include <asm/arch/cpu.h>
+#include <asm/io.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/gpio.h>
+
+static unsigned int saved_state[2] = {STATUS_LED_OFF, STATUS_LED_OFF};
+
+/*
+ * GPIO LEDs
+ * 173 red
+ * 154 blue
+ * 61 blue2
+ */
+void red_LED_off (void)
+{
+ /* red */
+ if (!omap_request_gpio(173)) {
+ omap_set_gpio_direction(173, 0);
+ omap_set_gpio_dataout(173, 0);
+ }
+ saved_state[STATUS_LED_RED] = STATUS_LED_OFF;
+}
+
+void blue_LED_off (void)
+{
+ /* blue */
+ if (!omap_request_gpio(154)) {
+ omap_set_gpio_direction(154, 0);
+ omap_set_gpio_dataout(154, 0);
+ }
+
+ /* blue 2 */
+ if (!omap_request_gpio(61)) {
+ omap_set_gpio_direction(61, 0);
+ omap_set_gpio_dataout(64, 0);
+ }
+ saved_state[STATUS_LED_BLUE] = STATUS_LED_OFF;
+}
+
+void red_LED_on (void)
+{
+ blue_LED_off ();
+
+ /* red */
+ if (!omap_request_gpio(173)) {
+ omap_set_gpio_direction(173, 0);
+ omap_set_gpio_dataout(173, 1);
+ }
+ saved_state[STATUS_LED_RED] = STATUS_LED_ON;
+}
+
+void blue_LED_on (void)
+{
+ red_LED_off ();
+
+ /* blue */
+ if (!omap_request_gpio(154)) {
+ omap_set_gpio_direction(154, 0);
+ omap_set_gpio_dataout(154, 1);
+ }
+
+ /* blue 2 */
+ if (!omap_request_gpio(61)) {
+ omap_set_gpio_direction(61, 0);
+ omap_set_gpio_dataout(64, 1);
+ }
+
+ saved_state[STATUS_LED_BLUE] = STATUS_LED_ON;
+}
+
+void __led_init (led_id_t mask, int state)
+{
+ __led_set (mask, state);
+}
+
+void __led_toggle (led_id_t mask)
+{
+ if (STATUS_LED_BLUE == mask) {
+ if (STATUS_LED_ON == saved_state[STATUS_LED_BLUE])
+ blue_LED_off ();
+ else
+ blue_LED_on ();
+ } else if (STATUS_LED_RED == mask) {
+ if (STATUS_LED_ON == saved_state[STATUS_LED_RED])
+ red_LED_off ();
+ else
+ red_LED_on ();
+ }
+}
+
+void __led_set (led_id_t mask, int state)
+{
+ if (STATUS_LED_BLUE == mask) {
+ if (STATUS_LED_ON == state)
+ blue_LED_on ();
+ else
+ blue_LED_off ();
+ } else if (STATUS_LED_RED == mask) {
+ if (STATUS_LED_ON == state)
+ red_LED_on ();
+ else
+ red_LED_off ();
+ }
+}
diff --git a/board/omap3/zoom2/zoom2.c b/board/omap3/zoom2/zoom2.c
index a2a5b5a..f58c8e6 100644
--- a/board/omap3/zoom2/zoom2.c
+++ b/board/omap3/zoom2/zoom2.c
@@ -29,6 +29,9 @@
* MA 02111-1307 USA
*/
#include <common.h>
+#ifdef CONFIG_STATUS_LED
+#include <status_led.h>
+#endif
#include <asm/io.h>
#include <asm/arch/mem.h>
#include <asm/arch/mux.h>
@@ -78,7 +81,6 @@ int board_init (void)
#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
status_led_set (STATUS_LED_BOOT, STATUS_LED_ON);
#endif
-
return 0;
}
diff --git a/include/configs/omap3_zoom2.h b/include/configs/omap3_zoom2.h
index 8f09dd8..459b994 100644
--- a/include/configs/omap3_zoom2.h
+++ b/include/configs/omap3_zoom2.h
@@ -93,6 +93,22 @@
#define CONFIG_OMAP3_MMC 1
#define CONFIG_DOS_PARTITION 1
+/* Status LED */
+#define CONFIG_STATUS_LED 1 /* Status LED enabled */
+#define CONFIG_BOARD_SPECIFIC_LED 1
+#define STATUS_LED_BLUE 0
+#define STATUS_LED_RED 1
+/* Blue */
+#define STATUS_LED_BIT STATUS_LED_BLUE
+#define STATUS_LED_STATE STATUS_LED_ON
+#define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2)
+/* Red */
+#define STATUS_LED_BIT1 STATUS_LED_RED
+#define STATUS_LED_STATE1 STATUS_LED_OFF
+#define STATUS_LED_PERIOD1 (CONFIG_SYS_HZ / 2)
+/* Optional value */
+#define STATUS_LED_BOOT STATUS_LED_BIT
+
/* commands to include */
#include <config_cmd_default.h>
--
1.6.0.5
next prev parent reply other threads:[~2009-04-14 14:41 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-14 14:40 [U-Boot] [PATCH 01/10] ZOOM2 Add initial support for Zoom2 Tom Rix
2009-04-14 14:40 ` [U-Boot] [PATCH 02/10] OMAP3 Port kernel omap gpio interface Tom Rix
2009-04-14 14:40 ` [U-Boot] [PATCH 03/10] ZOOM2 Add support for debug board detection Tom Rix
2009-04-14 14:40 ` [U-Boot] [PATCH 04/10] ZOOM2 Add serial support Tom Rix
2009-04-14 14:40 ` [U-Boot] [PATCH 05/10] ZOOM2: rename timer divisor Tom Rix
2009-04-14 14:40 ` [U-Boot] [PATCH 06/10] LED Add documentation describing the status_led and colour led API Tom Rix
2009-04-14 14:41 ` [U-Boot] [PATCH 07/10] ARM Add blue colour LED to status_led Tom Rix
2009-04-14 14:41 ` Tom Rix [this message]
2009-04-14 14:41 ` [U-Boot] [PATCH 09/10] ZOOM1 Remove more legacy NAND defines Tom Rix
2009-04-14 14:41 ` [U-Boot] [PATCH 10/10] OMAP Consolidate common u-boot.lds to cpu layer Tom Rix
2009-04-26 22:01 ` [U-Boot] [PATCH 09/10] ZOOM1 Remove more legacy NAND defines Jean-Christophe PLAGNIOL-VILLARD
2009-04-24 21:35 ` [U-Boot] [PATCH 08/10] ZOOM2 Add led support Jean-Christophe PLAGNIOL-VILLARD
2009-04-26 22:02 ` [U-Boot] [PATCH 07/10] ARM Add blue colour LED to status_led Jean-Christophe PLAGNIOL-VILLARD
2009-04-28 1:30 ` Tom
2009-04-26 22:01 ` [U-Boot] [PATCH 06/10] LED Add documentation describing the status_led and colour led API Jean-Christophe PLAGNIOL-VILLARD
2009-04-24 21:31 ` [U-Boot] [PATCH 05/10] ZOOM2: rename timer divisor Jean-Christophe PLAGNIOL-VILLARD
2009-04-24 21:26 ` [U-Boot] [PATCH 01/10] ZOOM2 Add initial support for Zoom2 Jean-Christophe PLAGNIOL-VILLARD
2009-04-24 21:38 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-24 22:10 ` Wolfgang Denk
2009-04-26 22:05 ` Jean-Christophe PLAGNIOL-VILLARD
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1239720063-20004-8-git-send-email-Tom.Rix@windriver.com \
--to=tom.rix@windriver.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.