]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - board/eukrea/cpu9260/led.c
Merge git://git.denx.de/u-boot-arm
[karo-tx-uboot.git] / board / eukrea / cpu9260 / led.c
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  * SPDX-License-Identifier:     GPL-2.0+
8  */
9
10 #include <common.h>
11 #include <status_led.h>
12 #include <asm/arch/at91sam9260.h>
13 #include <asm/arch/at91_pmc.h>
14 #include <asm/arch/gpio.h>
15 #include <asm/io.h>
16
17 static unsigned int saved_state[4] = {STATUS_LED_OFF, STATUS_LED_OFF,
18                 STATUS_LED_OFF, STATUS_LED_OFF};
19
20 void coloured_LED_init(void)
21 {
22         at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
23
24         /* Enable clock */
25         writel(1 << ATMEL_ID_PIOC, &pmc->pcer);
26
27         at91_set_pio_output(CONFIG_RED_LED, 1);
28         at91_set_pio_output(CONFIG_GREEN_LED, 1);
29         at91_set_pio_output(CONFIG_YELLOW_LED, 1);
30         at91_set_pio_output(CONFIG_BLUE_LED, 1);
31
32         at91_set_pio_value(CONFIG_RED_LED, 1);
33         at91_set_pio_value(CONFIG_GREEN_LED, 1);
34         at91_set_pio_value(CONFIG_YELLOW_LED, 1);
35         at91_set_pio_value(CONFIG_BLUE_LED, 1);
36 }
37
38 void red_led_off(void)
39 {
40         at91_set_pio_value(CONFIG_RED_LED, 1);
41         saved_state[STATUS_LED_RED] = STATUS_LED_OFF;
42 }
43
44 void green_led_off(void)
45 {
46         at91_set_pio_value(CONFIG_GREEN_LED, 1);
47         saved_state[STATUS_LED_GREEN] = STATUS_LED_OFF;
48 }
49
50 void yellow_led_off(void)
51 {
52         at91_set_pio_value(CONFIG_YELLOW_LED, 1);
53         saved_state[STATUS_LED_YELLOW] = STATUS_LED_OFF;
54 }
55
56 void blue_led_off(void)
57 {
58         at91_set_pio_value(CONFIG_BLUE_LED, 1);
59         saved_state[STATUS_LED_BLUE] = STATUS_LED_OFF;
60 }
61
62 void red_led_on(void)
63 {
64         at91_set_pio_value(CONFIG_RED_LED, 0);
65         saved_state[STATUS_LED_RED] = STATUS_LED_ON;
66 }
67
68 void green_led_on(void)
69 {
70         at91_set_pio_value(CONFIG_GREEN_LED, 0);
71         saved_state[STATUS_LED_GREEN] = STATUS_LED_ON;
72 }
73
74 void yellow_led_on(void)
75 {
76         at91_set_pio_value(CONFIG_YELLOW_LED, 0);
77         saved_state[STATUS_LED_YELLOW] = STATUS_LED_ON;
78 }
79
80 void blue_led_on(void)
81 {
82         at91_set_pio_value(CONFIG_BLUE_LED, 0);
83         saved_state[STATUS_LED_BLUE] = STATUS_LED_ON;
84 }
85
86 void __led_init(led_id_t mask, int state)
87 {
88         __led_set(mask, state);
89 }
90
91 void __led_toggle(led_id_t mask)
92 {
93         if (STATUS_LED_BLUE == mask) {
94                 if (STATUS_LED_ON == saved_state[STATUS_LED_BLUE])
95                         blue_led_off();
96                 else
97                         blue_led_on();
98         } else if (STATUS_LED_RED == mask) {
99                 if (STATUS_LED_ON == saved_state[STATUS_LED_RED])
100                         red_led_off();
101                 else
102                         red_led_on();
103         } else if (STATUS_LED_GREEN == mask) {
104                 if (STATUS_LED_ON == saved_state[STATUS_LED_GREEN])
105                         green_led_off();
106                 else
107                         green_led_on();
108         } else if (STATUS_LED_YELLOW == mask) {
109                 if (STATUS_LED_ON == saved_state[STATUS_LED_YELLOW])
110                         yellow_led_off();
111                 else
112                         yellow_led_on();
113         }
114 }
115
116 void __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         } else if (STATUS_LED_GREEN == mask) {
129                 if (STATUS_LED_ON == state)
130                         green_led_on();
131                 else
132                         green_led_off();
133         } else if (STATUS_LED_YELLOW == mask) {
134                 if (STATUS_LED_ON == state)
135                         yellow_led_on();
136                 else
137                         yellow_led_off();
138         }
139 }