2 * Copyright (c) 2009 Wind River Systems, Inc.
3 * Tom Rix <Tom.Rix@windriver.com>
5 * Eric Benard <eric@eukrea.com>
8 * Markus Hubig <mhubig@imko.de>
9 * IMKO GmbH <www.imko.de>
11 * SPDX-License-Identifier: GPL-2.0+
16 #include <asm/arch/gpio.h>
17 #include <asm/arch/at91_pmc.h>
18 #include <status_led.h>
20 static unsigned int saved_state[3] = {STATUS_LED_OFF,
21 STATUS_LED_OFF, STATUS_LED_OFF};
23 void coloured_LED_init(void)
25 struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
27 /* Enable the clock */
28 writel(ATMEL_ID_PIOC, &pmc->pcer);
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);
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);
41 at91_set_gpio_value(CONFIG_RED_LED, 1);
42 saved_state[STATUS_LED_RED] = STATUS_LED_ON;
45 void red_led_off(void)
47 at91_set_gpio_value(CONFIG_RED_LED, 0);
48 saved_state[STATUS_LED_RED] = STATUS_LED_OFF;
51 void green_led_on(void)
53 at91_set_gpio_value(CONFIG_GREEN_LED, 1);
54 saved_state[STATUS_LED_GREEN] = STATUS_LED_ON;
57 void green_led_off(void)
59 at91_set_gpio_value(CONFIG_GREEN_LED, 0);
60 saved_state[STATUS_LED_GREEN] = STATUS_LED_OFF;
63 void yellow_led_on(void)
65 at91_set_gpio_value(CONFIG_YELLOW_LED, 1);
66 saved_state[STATUS_LED_YELLOW] = STATUS_LED_ON;
69 void yellow_led_off(void)
71 at91_set_gpio_value(CONFIG_YELLOW_LED, 0);
72 saved_state[STATUS_LED_YELLOW] = STATUS_LED_OFF;
75 void __led_init(led_id_t mask, int state)
77 __led_set(mask, state);
80 void __led_toggle(led_id_t mask)
82 if (STATUS_LED_RED == mask) {
83 if (STATUS_LED_ON == saved_state[STATUS_LED_RED])
88 } else if (STATUS_LED_GREEN == mask) {
89 if (STATUS_LED_ON == saved_state[STATUS_LED_GREEN])
94 } else if (STATUS_LED_YELLOW == mask) {
95 if (STATUS_LED_ON == saved_state[STATUS_LED_YELLOW])
102 void __led_set(led_id_t mask, int state)
104 if (STATUS_LED_RED == mask) {
105 if (STATUS_LED_ON == state)
110 } else if (STATUS_LED_GREEN == mask) {
111 if (STATUS_LED_ON == state)
116 } else if (STATUS_LED_YELLOW == mask) {
117 if (STATUS_LED_ON == state)