From 7ef0af07f17a51ed814285847f55d8d12bef67c7 Mon Sep 17 00:00:00 2001 From: Karl Kurbjun Date: Tue, 8 May 2007 03:57:42 +0000 Subject: Faster/Smoother fading on the Gigabeat git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13354 a1c6a512-1295-4272-9138-f99709370657 --- .../arm/s3c2440/gigabeat-fx/backlight-meg-fx.c | 44 +++++++++++++--------- 1 file changed, 26 insertions(+), 18 deletions(-) (limited to 'firmware/target/arm') diff --git a/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c b/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c index a8f8ef5d85..7e143fee8e 100644 --- a/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c +++ b/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c @@ -188,17 +188,19 @@ static void led_control_service(void) case BACKLIGHT_CONTROL_FADE: sc606_changed=true; sc606regCONFval |= 0x03; - /* The SC606 LED driver can set the brightness in 64 steps */ - if(backlight_target==sc606regAval) - if(sc606regAval) + if(backlight_target>sc606regAval) + { + sc606regAval++; + if(backlight_target==sc606regAval) backlight_control = BACKLIGHT_CONTROL_ON; - else - backlight_control = BACKLIGHT_CONTROL_OFF; + } else - if(backlight_target>sc606regAval) - sc606regAval++; - else - sc606regAval--; + { + sc606regAval--; + if(backlight_target==sc606regAval) + backlight_control = BACKLIGHT_CONTROL_OFF; + } + break; default: break; @@ -222,16 +224,19 @@ static void led_control_service(void) case BUTTONLIGHT_CONTROL_FADE: sc606_changed=true; sc606regCONFval |= 0x3C; - if(buttonlight_target==sc606regBval) - if(sc606regBval) + if(buttonlight_target>sc606regBval) + { + sc606regCval=++sc606regBval; + if(buttonlight_target==sc606regBval) buttonlight_control = BUTTONLIGHT_CONTROL_ON; - else - buttonlight_control = BUTTONLIGHT_CONTROL_OFF; + } else - if(buttonlight_target>sc606regBval) - sc606regCval=++sc606regBval; - else - sc606regCval=--sc606regBval; + { + sc606regCval=--sc606regBval; + if(buttonlight_target==sc606regBval) + buttonlight_control = BUTTONLIGHT_CONTROL_OFF; + } + break; default: break; @@ -261,7 +266,10 @@ static void led_control_service(void) case SC606_CONTROL_CONF: sc606_write(SC606_REG_CONF , sc606regCONFval); sc606_changed=false; - sc606_control=SC606_CONTROL_IDLE; + if(backlight_control != BACKLIGHT_CONTROL_IDLE && buttonlight_control != BUTTONLIGHT_CONTROL_IDLE) + sc606_control=SC606_CONTROL_A12; + else + sc606_control=SC606_CONTROL_IDLE; break; default: sc606_control=SC606_CONTROL_A12; -- cgit v1.2.3