summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorKarl Kurbjun <kkurbjun@gmail.com>2007-05-08 06:45:38 +0000
committerKarl Kurbjun <kkurbjun@gmail.com>2007-05-08 06:45:38 +0000
commit6f95ab7de7370bc8d5c803d22984908f6174a0e3 (patch)
treeb69ab3bb886ca4ad5d17cd3283ee21aa19751533 /firmware
parent830576bb0b08dca0f5e9a90bf0526505b1c34a0a (diff)
downloadrockbox-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')
-rw-r--r--firmware/backlight.c23
-rw-r--r--firmware/export/backlight.h4
-rw-r--r--firmware/export/config-gigabeat.h2
-rw-r--r--firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c39
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
63static 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
858void 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
872void backlight_set_brightness(int val) { (void)val; } 892void backlight_set_brightness(int val) { (void)val; }
873#endif 893#endif
894#ifdef HAVE_BUTTONLIGHT_BRIGHTNESS
895void 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);
80void backlight_set_brightness(int val); 80void backlight_set_brightness(int val);
81#endif /* HAVE_BACKLIGHT_BRIGHTNESS */ 81#endif /* HAVE_BACKLIGHT_BRIGHTNESS */
82 82
83#ifdef HAVE_BUTTONLIGHT_BRIGHTNESS
84void buttonlight_set_brightness(int val);
85#endif /* HAVE_BUTTONLIGHT_BRIGHTNESS */
86
83#ifdef HAVE_BUTTON_LIGHT 87#ifdef HAVE_BUTTON_LIGHT
84void button_backlight_on(void); 88void button_backlight_on(void);
85void button_backlight_off(void); 89void 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
32static void led_control_service(void); 32static void led_control_service(void);
33static unsigned short backlight_brightness; 33static unsigned short backlight_brightness;
34static unsigned short buttonlight_brightness;
34static unsigned short backlight_target; 35static unsigned short backlight_target;
35static unsigned short buttonlight_target; 36static 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)
288void __button_backlight_on(void) 295void __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
295void __button_backlight_off(void) 305void __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
302void __backlight_dim(bool dim_now) 315void __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
331void __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}