From 9b113d5ac310ff1353318723bbc6150699c42209 Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Fri, 26 Apr 2002 09:05:36 +0000 Subject: Simpler API and remove interrupt code git-svn-id: svn://svn.rockbox.org/rockbox/trunk@250 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/led.c | 61 ++++++++++++-------------------------------------- 1 file changed, 14 insertions(+), 47 deletions(-) (limited to 'firmware/drivers/led.c') diff --git a/firmware/drivers/led.c b/firmware/drivers/led.c index d01c9de612..efc7123ffd 100644 --- a/firmware/drivers/led.c +++ b/firmware/drivers/led.c @@ -17,54 +17,21 @@ * ****************************************************************************/ -#include "config.h" +#include "types.h" +#include "sh7034.h" +#include "led.h" -#include - -#define turn_on() \ - set_bit (LEDB,PBDR_ADDR+1) - -#define turn_off() \ - clear_bit (LEDB,PBDR_ADDR+1) - -#define start_timer() \ - set_bit (2,TSTR_ADDR) - -#define stop_timer() \ - clear_bit (2,TSTR_ADDR) - -#define eoi(subinterrupt) \ - clear_bit (subinterrupt,TSR2_ADDR) - -#define set_volume(volume) \ - GRA2 = volume & 0x7FFF - - -void led_set_volume (unsigned short volume) +void led(bool on) { - volume <<= 10; - if (volume == 0) - led_turn_off (); - else if (volume == 0x8000) - led_turn_on (); +#ifdef ASM_IMPLEMENTATION + if ( on ) + asm("or.b %0, @(r0,gbr)" : : "I"(0x40), "z"(PBDR_ADDR+1)); else - { - set_volume (volume); - start_timer (); - } -} - -#pragma interrupt -void IMIA2 (void) -{ - turn_off (); - eoi (0); -} - -#pragma interrupt -void OVI2 (void) -{ - turn_on (); - eoi (2); + asm("and.b %0, @(r0,gbr)" : : "I"(~0x40), "z"(PBDR_ADDR+1)); +#else + if ( on ) + PBDR |= 0x40; + else + PBDR &= ~0x40; +#endif } - -- cgit v1.2.3