
On 10:41 Tue 28 Apr , Tom Rix wrote:
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
$() please
+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);
- }
it will be better to do this at the init of the led
- 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
please do not do clean up at the same time
otherwise fine
Best Regards, J.