diff options
author | Karl Kurbjun <kkurbjun@gmail.com> | 2007-05-08 06:45:38 +0000 |
---|---|---|
committer | Karl Kurbjun <kkurbjun@gmail.com> | 2007-05-08 06:45:38 +0000 |
commit | 6f95ab7de7370bc8d5c803d22984908f6174a0e3 (patch) | |
tree | b69ab3bb886ca4ad5d17cd3283ee21aa19751533 /firmware/target/arm | |
parent | 830576bb0b08dca0f5e9a90bf0526505b1c34a0a (diff) | |
download | rockbox-6f95ab7de7370bc8d5c803d22984908f6174a0e3.tar.gz rockbox-6f95ab7de7370bc8d5c803d22984908f6174a0e3.zip |
Add in buttonlight brightness setting for the Gigabeat, and setup the framework for future players that have adjustable button light brightness settings. Also fixed a bug in the backlight code when the brightness was set to 0.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13356 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c | 39 |
1 files changed, 34 insertions, 5 deletions
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 7b7e8518ec..40b093c689 100644 --- a/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c +++ b/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c | |||
@@ -31,6 +31,7 @@ | |||
31 | 31 | ||
32 | static void led_control_service(void); | 32 | static void led_control_service(void); |
33 | static unsigned short backlight_brightness; | 33 | static unsigned short backlight_brightness; |
34 | static unsigned short buttonlight_brightness; | ||
34 | static unsigned short backlight_target; | 35 | static unsigned short backlight_target; |
35 | static unsigned short buttonlight_target; | 36 | static unsigned short buttonlight_target; |
36 | 37 | ||
@@ -57,6 +58,7 @@ enum buttonlight_states | |||
57 | BUTTONLIGHT_CONTROL_IDLE, | 58 | BUTTONLIGHT_CONTROL_IDLE, |
58 | BUTTONLIGHT_CONTROL_OFF, | 59 | BUTTONLIGHT_CONTROL_OFF, |
59 | BUTTONLIGHT_CONTROL_ON, | 60 | BUTTONLIGHT_CONTROL_ON, |
61 | BUTTONLIGHT_CONTROL_SET, | ||
60 | BUTTONLIGHT_CONTROL_FADE, | 62 | BUTTONLIGHT_CONTROL_FADE, |
61 | } buttonlight_control; | 63 | } buttonlight_control; |
62 | 64 | ||
@@ -214,10 +216,15 @@ static void led_control_service(void) | |||
214 | break; | 216 | break; |
215 | case BUTTONLIGHT_CONTROL_ON: | 217 | case BUTTONLIGHT_CONTROL_ON: |
216 | sc606_changed=true; | 218 | sc606_changed=true; |
217 | sc606regBval=sc606regCval=backlight_brightness; | 219 | sc606regBval=sc606regCval=buttonlight_brightness; |
218 | sc606regCONFval |= 0x3C; | 220 | sc606regCONFval |= 0x3C; |
219 | buttonlight_control=BUTTONLIGHT_CONTROL_IDLE; | 221 | buttonlight_control=BUTTONLIGHT_CONTROL_IDLE; |
220 | break; | 222 | break; |
223 | case BUTTONLIGHT_CONTROL_SET: | ||
224 | sc606regBval=sc606regCval=buttonlight_brightness; | ||
225 | sc606_changed=true; | ||
226 | buttonlight_control = BUTTONLIGHT_CONTROL_ON; | ||
227 | break; | ||
221 | case BUTTONLIGHT_CONTROL_FADE: | 228 | case BUTTONLIGHT_CONTROL_FADE: |
222 | /* Was this mode set while the button light is already on/off? */ | 229 | /* Was this mode set while the button light is already on/off? */ |
223 | if(buttonlight_target==sc606regBval) | 230 | if(buttonlight_target==sc606regBval) |
@@ -288,15 +295,21 @@ static void led_control_service(void) | |||
288 | void __button_backlight_on(void) | 295 | void __button_backlight_on(void) |
289 | { | 296 | { |
290 | buttonlight_control = BUTTONLIGHT_CONTROL_IDLE; | 297 | buttonlight_control = BUTTONLIGHT_CONTROL_IDLE; |
291 | buttonlight_target = backlight_brightness; | 298 | buttonlight_target = buttonlight_brightness; |
292 | buttonlight_control = BUTTONLIGHT_CONTROL_FADE; | 299 | if(buttonlight_brightness==0) |
300 | buttonlight_control = BUTTONLIGHT_CONTROL_ON; | ||
301 | else | ||
302 | buttonlight_control = BUTTONLIGHT_CONTROL_FADE; | ||
293 | } | 303 | } |
294 | 304 | ||
295 | void __button_backlight_off(void) | 305 | void __button_backlight_off(void) |
296 | { | 306 | { |
297 | buttonlight_control = BUTTONLIGHT_CONTROL_IDLE; | 307 | buttonlight_control = BUTTONLIGHT_CONTROL_IDLE; |
298 | buttonlight_target = 0; | 308 | buttonlight_target = 0; |
299 | buttonlight_control = BUTTONLIGHT_CONTROL_FADE; | 309 | if(buttonlight_brightness==0) |
310 | buttonlight_control = BUTTONLIGHT_CONTROL_OFF; | ||
311 | else | ||
312 | buttonlight_control = BUTTONLIGHT_CONTROL_FADE; | ||
300 | } | 313 | } |
301 | 314 | ||
302 | void __backlight_dim(bool dim_now) | 315 | void __backlight_dim(bool dim_now) |
@@ -304,5 +317,21 @@ void __backlight_dim(bool dim_now) | |||
304 | /* dont let the interrupt tick happen */ | 317 | /* dont let the interrupt tick happen */ |
305 | backlight_control = BACKLIGHT_CONTROL_IDLE; | 318 | backlight_control = BACKLIGHT_CONTROL_IDLE; |
306 | backlight_target = (dim_now == true) ? 0 : backlight_brightness; | 319 | backlight_target = (dim_now == true) ? 0 : backlight_brightness; |
307 | backlight_control = BACKLIGHT_CONTROL_FADE; | 320 | if(backlight_target==0 && backlight_brightness==0) |
321 | { | ||
322 | if(dim_now == false) | ||
323 | backlight_control = BACKLIGHT_CONTROL_ON; | ||
324 | else | ||
325 | backlight_control = BACKLIGHT_CONTROL_OFF; | ||
326 | } | ||
327 | else | ||
328 | backlight_control = BACKLIGHT_CONTROL_FADE; | ||
329 | } | ||
330 | |||
331 | void __buttonlight_set_brightness(int brightness) | ||
332 | { | ||
333 | /* stop the interrupt from messing us up */ | ||
334 | buttonlight_control = BUTTONLIGHT_CONTROL_IDLE; | ||
335 | buttonlight_brightness = brightness; | ||
336 | buttonlight_control = BUTTONLIGHT_CONTROL_SET; | ||
308 | } | 337 | } |