uboot/board/taskit/stamp9g20/led.c
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2009 Wind River Systems, Inc.
   3 * Tom Rix <Tom.Rix@windriver.com>
   4 * (C) Copyright 2009
   5 * Eric Benard <eric@eukrea.com>
   6 *
   7 * (C) Copyright 2012
   8 * Markus Hubig <mhubig@imko.de>
   9 * IMKO GmbH <www.imko.de>
  10 *
  11 * SPDX-License-Identifier:     GPL-2.0+
  12 */
  13
  14#include <common.h>
  15#include <asm/io.h>
  16#include <asm/arch/gpio.h>
  17#include <asm/arch/at91_pmc.h>
  18#include <status_led.h>
  19
  20static unsigned int saved_state[3] = {STATUS_LED_OFF,
  21        STATUS_LED_OFF, STATUS_LED_OFF};
  22
  23void coloured_LED_init(void)
  24{
  25        struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
  26
  27        /* Enable the clock */
  28        writel(ATMEL_ID_PIOC, &pmc->pcer);
  29
  30        at91_set_gpio_output(CONFIG_RED_LED, 1);
  31        at91_set_gpio_output(CONFIG_GREEN_LED, 1);
  32        at91_set_gpio_output(CONFIG_YELLOW_LED, 1);
  33
  34        at91_set_gpio_value(CONFIG_RED_LED, 0);
  35        at91_set_gpio_value(CONFIG_GREEN_LED, 1);
  36        at91_set_gpio_value(CONFIG_YELLOW_LED, 0);
  37}
  38
  39void red_led_on(void)
  40{
  41        at91_set_gpio_value(CONFIG_RED_LED, 1);
  42        saved_state[STATUS_LED_RED] = STATUS_LED_ON;
  43}
  44
  45void red_led_off(void)
  46{
  47        at91_set_gpio_value(CONFIG_RED_LED, 0);
  48        saved_state[STATUS_LED_RED] = STATUS_LED_OFF;
  49}
  50
  51void green_led_on(void)
  52{
  53        at91_set_gpio_value(CONFIG_GREEN_LED, 1);
  54        saved_state[STATUS_LED_GREEN] = STATUS_LED_ON;
  55}
  56
  57void green_led_off(void)
  58{
  59        at91_set_gpio_value(CONFIG_GREEN_LED, 0);
  60        saved_state[STATUS_LED_GREEN] = STATUS_LED_OFF;
  61}
  62
  63void yellow_led_on(void)
  64{
  65        at91_set_gpio_value(CONFIG_YELLOW_LED, 1);
  66        saved_state[STATUS_LED_YELLOW] = STATUS_LED_ON;
  67}
  68
  69void yellow_led_off(void)
  70{
  71        at91_set_gpio_value(CONFIG_YELLOW_LED, 0);
  72        saved_state[STATUS_LED_YELLOW] = STATUS_LED_OFF;
  73}
  74
  75void __led_init(led_id_t mask, int state)
  76{
  77        __led_set(mask, state);
  78}
  79
  80void __led_toggle(led_id_t mask)
  81{
  82        if (STATUS_LED_RED == mask) {
  83                if (STATUS_LED_ON == saved_state[STATUS_LED_RED])
  84                        red_led_off();
  85                else
  86                        red_led_on();
  87
  88        } else if (STATUS_LED_GREEN == mask) {
  89                if (STATUS_LED_ON == saved_state[STATUS_LED_GREEN])
  90                        green_led_off();
  91                else
  92                        green_led_on();
  93
  94        } else if (STATUS_LED_YELLOW == mask) {
  95                if (STATUS_LED_ON == saved_state[STATUS_LED_YELLOW])
  96                        yellow_led_off();
  97                else
  98                        yellow_led_on();
  99        }
 100}
 101
 102void __led_set(led_id_t mask, int state)
 103{
 104        if (STATUS_LED_RED == mask) {
 105                if (STATUS_LED_ON == state)
 106                        red_led_on();
 107                else
 108                        red_led_off();
 109
 110        } else if (STATUS_LED_GREEN == mask) {
 111                if (STATUS_LED_ON == state)
 112                        green_led_on();
 113                else
 114                        green_led_off();
 115
 116        } else if (STATUS_LED_YELLOW == mask) {
 117                if (STATUS_LED_ON == state)
 118                        yellow_led_on();
 119                else
 120                        yellow_led_off();
 121        }
 122}
 123