2 * Copyright (C) 2010, 2009 Matthias Kaehlcke <matthias@kaehlcke.net>
4 * SPDX-License-Identifier: GPL-2.0+
8 #include <asm/arch/ep93xx.h>
10 #include <status_led.h>
12 static uint8_t saved_state[2] = {STATUS_LED_OFF, STATUS_LED_OFF};
13 static uint32_t gpio_pin[2] = {1 << STATUS_LED_GREEN,
16 inline void switch_LED_on(uint8_t led)
18 register struct gpio_regs *gpio = (struct gpio_regs *)GPIO_BASE;
20 writel(readl(&gpio->pedr) | gpio_pin[led], &gpio->pedr);
21 saved_state[led] = STATUS_LED_ON;
24 inline void switch_LED_off(uint8_t led)
26 register struct gpio_regs *gpio = (struct gpio_regs *)GPIO_BASE;
28 writel(readl(&gpio->pedr) & ~gpio_pin[led], &gpio->pedr);
29 saved_state[led] = STATUS_LED_OFF;
34 switch_LED_on(STATUS_LED_RED);
37 void red_led_off(void)
39 switch_LED_off(STATUS_LED_RED);
42 void green_led_on(void)
44 switch_LED_on(STATUS_LED_GREEN);
47 void green_led_off(void)
49 switch_LED_off(STATUS_LED_GREEN);
52 void __led_init(led_id_t mask, int state)
54 __led_set(mask, state);
57 void __led_toggle(led_id_t mask)
59 if (STATUS_LED_RED == mask) {
60 if (STATUS_LED_ON == saved_state[STATUS_LED_RED])
64 } else if (STATUS_LED_GREEN == mask) {
65 if (STATUS_LED_ON == saved_state[STATUS_LED_GREEN])
72 void __led_set(led_id_t mask, int state)
74 if (STATUS_LED_RED == mask) {
75 if (STATUS_LED_ON == state)
79 } else if (STATUS_LED_GREEN == mask) {
80 if (STATUS_LED_ON == state)