summaryrefslogtreecommitdiff
path: root/firmware/drivers/led.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/led.c')
-rw-r--r--firmware/drivers/led.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/firmware/drivers/led.c b/firmware/drivers/led.c
new file mode 100644
index 0000000000..d01c9de612
--- /dev/null
+++ b/firmware/drivers/led.c
@@ -0,0 +1,70 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2002 by Alan Korr
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20#include "config.h"
21
22#include <led.h>
23
24#define turn_on() \
25 set_bit (LEDB,PBDR_ADDR+1)
26
27#define turn_off() \
28 clear_bit (LEDB,PBDR_ADDR+1)
29
30#define start_timer() \
31 set_bit (2,TSTR_ADDR)
32
33#define stop_timer() \
34 clear_bit (2,TSTR_ADDR)
35
36#define eoi(subinterrupt) \
37 clear_bit (subinterrupt,TSR2_ADDR)
38
39#define set_volume(volume) \
40 GRA2 = volume & 0x7FFF
41
42
43void led_set_volume (unsigned short volume)
44{
45 volume <<= 10;
46 if (volume == 0)
47 led_turn_off ();
48 else if (volume == 0x8000)
49 led_turn_on ();
50 else
51 {
52 set_volume (volume);
53 start_timer ();
54 }
55}
56
57#pragma interrupt
58void IMIA2 (void)
59{
60 turn_off ();
61 eoi (0);
62}
63
64#pragma interrupt
65void OVI2 (void)
66{
67 turn_on ();
68 eoi (2);
69}
70