uboot/board/omap3/zoom2/led.c
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2009 Wind River Systems, Inc.
   3 * Tom Rix <Tom.Rix@windriver.com>
   4 *
   5 * This program is free software; you can redistribute it and/or
   6 * modify it under the terms of the GNU General Public License as
   7 * published by the Free Software Foundation; either version 2 of
   8 * the License, or (at your option) any later version.
   9 *
  10 * This program is distributed in the hope that it will be useful,
  11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13 * GNU General Public License for more details.
  14 *
  15 * You should have received a copy of the GNU General Public License
  16 * along with this program; if not, write to the Free Software
  17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  18 * MA 02111-1307 USA
  19 */
  20#include <common.h>
  21#include <status_led.h>
  22#include <asm/arch/cpu.h>
  23#include <asm/io.h>
  24#include <asm/arch/sys_proto.h>
  25#include <asm/arch/gpio.h>
  26
  27static unsigned int saved_state[2] = {STATUS_LED_OFF, STATUS_LED_OFF};
  28
  29/*
  30 * GPIO LEDs
  31 * 173 red
  32 * 154 blue
  33 * 61  blue2
  34 */
  35#define ZOOM2_LED_RED   173
  36#define ZOOM2_LED_BLUE  154
  37#define ZOOM2_LED_BLUE2 61
  38
  39void red_LED_off (void)
  40{
  41        /* red */
  42        if (!omap_request_gpio(ZOOM2_LED_RED)) {
  43                omap_set_gpio_direction(ZOOM2_LED_RED, 0);
  44                omap_set_gpio_dataout(ZOOM2_LED_RED, 0);
  45        }
  46        saved_state[STATUS_LED_RED] = STATUS_LED_OFF;
  47}
  48
  49void blue_LED_off (void)
  50{
  51        /* blue */
  52        if (!omap_request_gpio(ZOOM2_LED_BLUE)) {
  53                omap_set_gpio_direction(ZOOM2_LED_BLUE, 0);
  54                omap_set_gpio_dataout(ZOOM2_LED_BLUE, 0);
  55        }
  56
  57        /* blue 2 */
  58        if (!omap_request_gpio(ZOOM2_LED_BLUE2)) {
  59                omap_set_gpio_direction(ZOOM2_LED_BLUE2, 0);
  60                omap_set_gpio_dataout(ZOOM2_LED_BLUE2, 0);
  61        }
  62        saved_state[STATUS_LED_BLUE] = STATUS_LED_OFF;
  63}
  64
  65void red_LED_on (void)
  66{
  67        blue_LED_off ();
  68
  69        /* red */
  70        if (!omap_request_gpio(ZOOM2_LED_RED)) {
  71                omap_set_gpio_direction(ZOOM2_LED_RED, 0);
  72                omap_set_gpio_dataout(ZOOM2_LED_RED, 1);
  73        }
  74        saved_state[STATUS_LED_RED] = STATUS_LED_ON;
  75}
  76
  77void blue_LED_on (void)
  78{
  79        red_LED_off ();
  80
  81        /* blue */
  82        if (!omap_request_gpio(ZOOM2_LED_BLUE)) {
  83                omap_set_gpio_direction(ZOOM2_LED_BLUE, 0);
  84                omap_set_gpio_dataout(ZOOM2_LED_BLUE, 1);
  85        }
  86
  87        /* blue 2 */
  88        if (!omap_request_gpio(ZOOM2_LED_BLUE2)) {
  89                omap_set_gpio_direction(ZOOM2_LED_BLUE2, 0);
  90                omap_set_gpio_dataout(ZOOM2_LED_BLUE2, 1);
  91        }
  92
  93        saved_state[STATUS_LED_BLUE] = STATUS_LED_ON;
  94}
  95
  96void __led_init (led_id_t mask, int state)
  97{
  98        __led_set (mask, state);
  99}
 100
 101void __led_toggle (led_id_t mask)
 102{
 103        if (STATUS_LED_BLUE == mask) {
 104                if (STATUS_LED_ON == saved_state[STATUS_LED_BLUE])
 105                        blue_LED_off ();
 106                else
 107                        blue_LED_on ();
 108        } else if (STATUS_LED_RED == mask) {
 109                if (STATUS_LED_ON == saved_state[STATUS_LED_RED])
 110                        red_LED_off ();
 111                else
 112                        red_LED_on ();
 113        }
 114}
 115
 116void __led_set (led_id_t mask, int state)
 117{
 118        if (STATUS_LED_BLUE == mask) {
 119                if (STATUS_LED_ON == state)
 120                        blue_LED_on ();
 121                else
 122                        blue_LED_off ();
 123        } else if (STATUS_LED_RED == mask) {
 124                if (STATUS_LED_ON == state)
 125                        red_LED_on ();
 126                else
 127                        red_LED_off ();
 128        }
 129}
 130