altos: Add bit-bang i2c driver
[fw/altos] / src / kernel / ao_led.h
1 /*
2  * Copyright © 2012 Keith Packard <keithp@keithp.com>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License along
15  * with this program; if not, write to the Free Software Foundation, Inc.,
16  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
17  */
18
19 #ifndef _AO_LED_H_
20 #define _AO_LED_H_
21
22 /*
23  * ao_led.c
24  */
25
26 #define AO_LED_NONE     0
27
28 #ifndef AO_LED_TYPE
29 #define AO_LED_TYPE uint32_t
30 #endif
31
32 /* Turn on the specified LEDs */
33 void
34 ao_led_on(AO_LED_TYPE colors);
35
36 /* Turn off the specified LEDs */
37 void
38 ao_led_off(AO_LED_TYPE colors);
39
40 /* Set all of the LEDs to the specified state */
41 void
42 ao_led_set(AO_LED_TYPE colors);
43
44 /* Set all LEDs in 'mask' to the specified state */
45 void
46 ao_led_set_mask(AO_LED_TYPE colors, AO_LED_TYPE mask);
47
48 /* Turn on the specified LEDs for the indicated interval */
49 void
50 ao_led_for(AO_LED_TYPE colors, AO_TICK_TYPE ticks);
51
52 /* Initialize the LEDs */
53 void
54 ao_led_init(void);
55
56 #ifdef LED_0_PORT
57 #define AO_LED_0 (1 << 0)
58 #else
59 #define AO_LED_0 0
60 #endif
61 #ifdef LED_1_PORT
62 #define AO_LED_1 (1 << 1)
63 #else
64 #define AO_LED_1 0
65 #endif
66 #ifdef LED_2_PORT
67 #define AO_LED_2 (1 << 2)
68 #else
69 #define AO_LED_2 0
70 #endif
71 #ifdef LED_3_PORT
72 #define AO_LED_3 (1 << 3)
73 #else
74 #define AO_LED_3 0
75 #endif
76 #ifdef LED_4_PORT
77 #define AO_LED_4 (1 << 4)
78 #else
79 #define AO_LED_4 0
80 #endif
81 #ifdef LED_5_PORT
82 #define AO_LED_5 (1 << 5)
83 #else
84 #define AO_LED_5 0
85 #endif
86 #ifdef LED_6_PORT
87 #define AO_LED_6 (1 << 6)
88 #else
89 #define AO_LED_6 0
90 #endif
91 #ifdef LED_7_PORT
92 #define AO_LED_7 (1 << 7)
93 #else
94 #define AO_LED_7 0
95 #endif
96 #ifdef LED_8_PORT
97 #define AO_LED_8 (1 << 8)
98 #else
99 #define AO_LED_8 0
100 #endif
101 #ifdef LED_9_PORT
102 #define AO_LED_9 (1 << 9)
103 #else
104 #define AO_LED_9 0
105 #endif
106 #ifdef LED_10_PORT
107 #define AO_LED_10 (1 << 10)
108 #else
109 #define AO_LED_10 0
110 #endif
111 #ifdef LED_11_PORT
112 #define AO_LED_11 (1 << 11)
113 #else
114 #define AO_LED_11 0
115 #endif
116 #ifdef LED_12_PORT
117 #define AO_LED_12 (1 << 12)
118 #else
119 #define AO_LED_12 0
120 #endif
121 #ifdef LED_13_PORT
122 #define AO_LED_13 (1 << 13)
123 #else
124 #define AO_LED_13 0
125 #endif
126 #ifdef LED_14_PORT
127 #define AO_LED_14 (1 << 14)
128 #else
129 #define AO_LED_14 0
130 #endif
131 #ifdef LED_15_PORT
132 #define AO_LED_15 (1 << 15)
133 #else
134 #define AO_LED_15 0
135 #endif
136 #ifdef LED_16_PORT
137 #define AO_LED_16 (1 << 16)
138 #else
139 #define AO_LED_16 0
140 #endif
141 #ifdef LED_17_PORT
142 #define AO_LED_17 (1 << 17)
143 #else
144 #define AO_LED_17 0
145 #endif
146 #ifdef LED_18_PORT
147 #define AO_LED_18 (1 << 18)
148 #else
149 #define AO_LED_18 0
150 #endif
151 #ifdef LED_19_PORT
152 #define AO_LED_19 (1 << 19)
153 #else
154 #define AO_LED_19 0
155 #endif
156 #ifdef LED_20_PORT
157 #define AO_LED_20 (1 << 20)
158 #else
159 #define AO_LED_20 0
160 #endif
161 #ifdef LED_21_PORT
162 #define AO_LED_21 (1 << 21)
163 #else
164 #define AO_LED_21 0
165 #endif
166 #ifdef LED_22_PORT
167 #define AO_LED_22 (1 << 22)
168 #else
169 #define AO_LED_22 0
170 #endif
171 #ifdef LED_23_PORT
172 #define AO_LED_23 (1 << 23)
173 #else
174 #define AO_LED_23 0
175 #endif
176 #ifdef LED_24_PORT
177 #define AO_LED_24 (1 << 24)
178 #else
179 #define AO_LED_24 0
180 #endif
181 #ifdef LED_25_PORT
182 #define AO_LED_25 (1 << 25)
183 #else
184 #define AO_LED_25 0
185 #endif
186 #ifdef LED_26_PORT
187 #define AO_LED_26 (1 << 26)
188 #else
189 #define AO_LED_26 0
190 #endif
191 #ifdef LED_27_PORT
192 #define AO_LED_27 (1 << 27)
193 #else
194 #define AO_LED_27 0
195 #endif
196 #ifdef LED_28_PORT
197 #define AO_LED_28 (1 << 28)
198 #else
199 #define AO_LED_28 0
200 #endif
201 #ifdef LED_29_PORT
202 #define AO_LED_29 (1 << 29)
203 #else
204 #define AO_LED_29 0
205 #endif
206 #ifdef LED_30_PORT
207 #define AO_LED_30 (1 << 30)
208 #else
209 #define AO_LED_30 0
210 #endif
211 #ifdef LED_31_PORT
212 #define AO_LED_31 (1 << 31)
213 #else
214 #define AO_LED_31 0
215 #endif
216
217 #define AO_LEDS_AVAILABLE (AO_LED_0 |           \
218                            AO_LED_1 |           \
219                            AO_LED_2 |           \
220                            AO_LED_3 |           \
221                            AO_LED_4 |           \
222                            AO_LED_5 |           \
223                            AO_LED_6 |           \
224                            AO_LED_7 |           \
225                            AO_LED_8 |           \
226                            AO_LED_9 |           \
227                            AO_LED_10 |          \
228                            AO_LED_11 |          \
229                            AO_LED_12 |          \
230                            AO_LED_13 |          \
231                            AO_LED_14 |          \
232                            AO_LED_15 |          \
233                            AO_LED_16 |          \
234                            AO_LED_17 |          \
235                            AO_LED_18 |          \
236                            AO_LED_19 |          \
237                            AO_LED_20 |          \
238                            AO_LED_21 |          \
239                            AO_LED_22 |          \
240                            AO_LED_23 |          \
241                            AO_LED_24 |          \
242                            AO_LED_25 |          \
243                            AO_LED_26 |          \
244                            AO_LED_27 |          \
245                            AO_LED_28 |          \
246                            AO_LED_29 |          \
247                            AO_LED_30 |          \
248                            AO_LED_31)
249
250 #ifndef LEDS_AVAILABLE
251 #define LEDS_AVAILABLE AO_LEDS_AVAILABLE
252 #endif
253
254 #endif /* _AO_LED_H_ */