diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/backlight.c | 23 | ||||
-rw-r--r-- | firmware/export/backlight.h | 4 | ||||
-rw-r--r-- | firmware/export/config-gigabeat.h | 2 | ||||
-rw-r--r-- | firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c | 39 |
4 files changed, 63 insertions, 5 deletions
diff --git a/firmware/backlight.c b/firmware/backlight.c index a7fab787e8..d695d1ee19 100644 --- a/firmware/backlight.c +++ b/firmware/backlight.c | |||
@@ -58,6 +58,14 @@ static inline void __backlight_set_brightness(int val) | |||
58 | (void)val; | 58 | (void)val; |
59 | } | 59 | } |
60 | #endif | 60 | #endif |
61 | |||
62 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS | ||
63 | static inline void __buttonlight_set_brightness(int val) | ||
64 | { | ||
65 | (void)val; | ||
66 | } | ||
67 | #endif | ||
68 | |||
61 | #endif /* SIMULATOR */ | 69 | #endif /* SIMULATOR */ |
62 | 70 | ||
63 | #if defined(HAVE_BACKLIGHT) && !defined(BOOTLOADER) | 71 | #if defined(HAVE_BACKLIGHT) && !defined(BOOTLOADER) |
@@ -846,6 +854,18 @@ void backlight_set_brightness(int val) | |||
846 | } | 854 | } |
847 | #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ | 855 | #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ |
848 | 856 | ||
857 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS | ||
858 | void buttonlight_set_brightness(int val) | ||
859 | { | ||
860 | if (val < MIN_BRIGHTNESS_SETTING) | ||
861 | val = MIN_BRIGHTNESS_SETTING; | ||
862 | else if (val > MAX_BRIGHTNESS_SETTING) | ||
863 | val = MAX_BRIGHTNESS_SETTING; | ||
864 | |||
865 | __buttonlight_set_brightness(val); | ||
866 | } | ||
867 | #endif /* HAVE_BUTTONLIGHT_BRIGHTNESS */ | ||
868 | |||
849 | #else /* !defined(HAVE_BACKLIGHT) || defined(BOOTLOADER) | 869 | #else /* !defined(HAVE_BACKLIGHT) || defined(BOOTLOADER) |
850 | -- no backlight, empty dummy functions */ | 870 | -- no backlight, empty dummy functions */ |
851 | 871 | ||
@@ -871,4 +891,7 @@ bool is_remote_backlight_on(void) {return true;} | |||
871 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS | 891 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS |
872 | void backlight_set_brightness(int val) { (void)val; } | 892 | void backlight_set_brightness(int val) { (void)val; } |
873 | #endif | 893 | #endif |
894 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS | ||
895 | void buttonlight_set_brightness(int val) { (void)val; } | ||
896 | #endif | ||
874 | #endif /* defined(HAVE_BACKLIGHT) && !defined(BOOTLOADER) */ | 897 | #endif /* defined(HAVE_BACKLIGHT) && !defined(BOOTLOADER) */ |
diff --git a/firmware/export/backlight.h b/firmware/export/backlight.h index 9bcb6e9d1d..15dfbf1ddf 100644 --- a/firmware/export/backlight.h +++ b/firmware/export/backlight.h | |||
@@ -80,6 +80,10 @@ void sim_remote_backlight(int value); | |||
80 | void backlight_set_brightness(int val); | 80 | void backlight_set_brightness(int val); |
81 | #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ | 81 | #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ |
82 | 82 | ||
83 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS | ||
84 | void buttonlight_set_brightness(int val); | ||
85 | #endif /* HAVE_BUTTONLIGHT_BRIGHTNESS */ | ||
86 | |||
83 | #ifdef HAVE_BUTTON_LIGHT | 87 | #ifdef HAVE_BUTTON_LIGHT |
84 | void button_backlight_on(void); | 88 | void button_backlight_on(void); |
85 | void button_backlight_off(void); | 89 | void button_backlight_off(void); |
diff --git a/firmware/export/config-gigabeat.h b/firmware/export/config-gigabeat.h index a83dc55fd8..5f45bdbff0 100644 --- a/firmware/export/config-gigabeat.h +++ b/firmware/export/config-gigabeat.h | |||
@@ -49,6 +49,8 @@ | |||
49 | 49 | ||
50 | #define HAVE_BACKLIGHT_BRIGHTNESS | 50 | #define HAVE_BACKLIGHT_BRIGHTNESS |
51 | 51 | ||
52 | #define HAVE_BUTTONLIGHT_BRIGHTNESS | ||
53 | |||
52 | /* Main LCD backlight brightness range and defaults */ | 54 | /* Main LCD backlight brightness range and defaults */ |
53 | #define MIN_BRIGHTNESS_SETTING 0 /* 0.5 mA */ | 55 | #define MIN_BRIGHTNESS_SETTING 0 /* 0.5 mA */ |
54 | #define MAX_DIM_BRIGHTNESS_SETTING 15 /* highest 'dimness' */ | 56 | #define MAX_DIM_BRIGHTNESS_SETTING 15 /* highest 'dimness' */ |
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 | } |