summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2002-10-01 10:59:36 +0000
committerDaniel Stenberg <daniel@haxx.se>2002-10-01 10:59:36 +0000
commitb95fe1afc694ab97b6f39fc4bd0baa238e687a8f (patch)
treece8a338e130571604693bf28cfcdcfbf72e5f0d9 /firmware
parent180485c30496314ba25b3cdcf59c665bf8d11c0a (diff)
downloadrockbox-b95fe1afc694ab97b6f39fc4bd0baa238e687a8f.tar.gz
rockbox-b95fe1afc694ab97b6f39fc4bd0baa238e687a8f.zip
Mark A. Hillebrand's patch that offers a new setting that if enabled, keeps
the backlight on all the time while the charger is connected. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2464 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/backlight.c40
-rw-r--r--firmware/backlight.h3
2 files changed, 39 insertions, 4 deletions
diff --git a/firmware/backlight.c b/firmware/backlight.c
index 4dcdea917c..8a7c4ceb76 100644
--- a/firmware/backlight.c
+++ b/firmware/backlight.c
@@ -25,6 +25,7 @@
25#include "debug.h" 25#include "debug.h"
26#include "rtc.h" 26#include "rtc.h"
27#include "usb.h" 27#include "usb.h"
28#include "power.h"
28 29
29#define BACKLIGHT_ON 1 30#define BACKLIGHT_ON 1
30#define BACKLIGHT_OFF 2 31#define BACKLIGHT_OFF 2
@@ -34,6 +35,11 @@ static char backlight_stack[DEFAULT_STACK_SIZE];
34static char backlight_thread_name[] = "backlight"; 35static char backlight_thread_name[] = "backlight";
35static struct event_queue backlight_queue; 36static struct event_queue backlight_queue;
36 37
38#ifdef HAVE_CHARGE_CTRL
39static bool charger_was_inserted = 0;
40static bool backlight_on_when_charging = 0;
41#endif
42
37static int backlight_timer; 43static int backlight_timer;
38static int backlight_timeout = 5; 44static int backlight_timeout = 5;
39 45
@@ -52,9 +58,22 @@ void backlight_thread(void)
52 switch(ev.id) 58 switch(ev.id)
53 { 59 {
54 case BACKLIGHT_ON: 60 case BACKLIGHT_ON:
61#ifdef HAVE_CHARGE_CTRL
62 if( backlight_on_when_charging && charger_inserted() )
63 {
64 /* Forcing to zero keeps the lights on */
65 backlight_timer = 0;
66 }
67 else
68 {
69 backlight_timer = HZ*timeout_value[backlight_timeout];
70 }
71#else
55 backlight_timer = HZ*timeout_value[backlight_timeout]; 72 backlight_timer = HZ*timeout_value[backlight_timeout];
73#endif
56 if(backlight_timer < 0) 74 if(backlight_timer < 0)
57 { 75 {
76 backlight_timer = 0; /* timer value 0 will not get ticked */
58#ifdef HAVE_RTC 77#ifdef HAVE_RTC
59 /* Disable square wave */ 78 /* Disable square wave */
60 rtc_write(0x0a, rtc_read(0x0a) & ~0x40); 79 rtc_write(0x0a, rtc_read(0x0a) & ~0x40);
@@ -62,7 +81,8 @@ void backlight_thread(void)
62 PADR |= 0x4000; 81 PADR |= 0x4000;
63#endif 82#endif
64 } 83 }
65 else if(backlight_timer) 84 /* else if(backlight_timer) */
85 else
66 { 86 {
67#ifdef HAVE_RTC 87#ifdef HAVE_RTC
68 /* Enable square wave */ 88 /* Enable square wave */
@@ -105,14 +125,28 @@ void backlight_off(void)
105 queue_post(&backlight_queue, BACKLIGHT_OFF, NULL); 125 queue_post(&backlight_queue, BACKLIGHT_OFF, NULL);
106} 126}
107 127
108void backlight_time(int value) 128void backlight_set_timeout(int seconds)
129{
130 backlight_timeout = seconds;
131 backlight_on();
132}
133
134void backlight_set_on_when_charging(bool yesno)
109{ 135{
110 backlight_timeout = value; 136 backlight_on_when_charging = yesno;
111 backlight_on(); 137 backlight_on();
112} 138}
113 139
114void backlight_tick(void) 140void backlight_tick(void)
115{ 141{
142#ifdef HAVE_CHARGE_CTRL
143 bool charger_is_inserted = charger_inserted();
144 if( backlight_on_when_charging && (charger_was_inserted != charger_is_inserted) )
145 {
146 backlight_on();
147 }
148 charger_was_inserted = charger_is_inserted;
149#endif
116 if(backlight_timer) 150 if(backlight_timer)
117 { 151 {
118 backlight_timer--; 152 backlight_timer--;
diff --git a/firmware/backlight.h b/firmware/backlight.h
index dca1f214f3..77049e3ce8 100644
--- a/firmware/backlight.h
+++ b/firmware/backlight.h
@@ -23,6 +23,7 @@ void backlight_init(void);
23void backlight_on(void); 23void backlight_on(void);
24void backlight_off(void); 24void backlight_off(void);
25void backlight_tick(void); 25void backlight_tick(void);
26void backlight_time(int seconds); 26void backlight_set_timeout(int seconds);
27void backlight_set_on_when_charging(bool yesno);
27 28
28#endif 29#endif