From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jean-Christophe PLAGNIOL-VILLARD Date: Wed, 29 Apr 2009 22:56:42 +0200 Subject: [U-Boot] [PATCH 5/5] ZOOM2 Add led support. In-Reply-To: <1240933314-12769-5-git-send-email-Tom.Rix@windriver.com> References: <1240933314-12769-1-git-send-email-Tom.Rix@windriver.com> <1240933314-12769-2-git-send-email-Tom.Rix@windriver.com> <1240933314-12769-3-git-send-email-Tom.Rix@windriver.com> <1240933314-12769-4-git-send-email-Tom.Rix@windriver.com> <1240933314-12769-5-git-send-email-Tom.Rix@windriver.com> Message-ID: <20090429205642.GD522@game.jcrosoft.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > --- > 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 > + * > + * 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 > +#include > +#include > +#include > +#include > +#include > + > +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 > +#ifdef CONFIG_STATUS_LED > +#include > +#endif > #include > #include > #include > @@ -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.