summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c')
-rw-r--r--firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c44
1 files changed, 25 insertions, 19 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 40b093c689..7e2ec5c6b9 100644
--- a/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c
+++ b/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c
@@ -69,6 +69,7 @@ unsigned char charging_leds[] = { 0x00, 0x20, 0x38, 0x3C };
69 69
70bool __backlight_init(void) 70bool __backlight_init(void)
71{ 71{
72 buttonlight_brightness=DEFAULT_BRIGHTNESS_SETTING;
72 backlight_brightness=DEFAULT_BRIGHTNESS_SETTING; 73 backlight_brightness=DEFAULT_BRIGHTNESS_SETTING;
73 backlight_control = BACKLIGHT_CONTROL_IDLE; 74 backlight_control = BACKLIGHT_CONTROL_IDLE;
74 75
@@ -152,9 +153,9 @@ static void led_control_service(void)
152 sc606regAval=DEFAULT_BRIGHTNESS_SETTING, 153 sc606regAval=DEFAULT_BRIGHTNESS_SETTING,
153 sc606regBval=DEFAULT_BRIGHTNESS_SETTING, 154 sc606regBval=DEFAULT_BRIGHTNESS_SETTING,
154 sc606regCval=DEFAULT_BRIGHTNESS_SETTING, 155 sc606regCval=DEFAULT_BRIGHTNESS_SETTING,
155 sc606regCONFval=3; 156 sc606regCONFval=0x03;
156 157
157 static bool sc606_changed=true; 158 static bool sc606_changed=false;
158 159
159 if(sc606_changed==false) 160 if(sc606_changed==false)
160 { 161 {
@@ -174,9 +175,9 @@ static void led_control_service(void)
174 backlight_control = BACKLIGHT_CONTROL_IDLE; 175 backlight_control = BACKLIGHT_CONTROL_IDLE;
175 break; 176 break;
176 case BACKLIGHT_CONTROL_SET: 177 case BACKLIGHT_CONTROL_SET:
177 sc606regAval=backlight_brightness;
178 sc606_changed=true; 178 sc606_changed=true;
179 backlight_control = BACKLIGHT_CONTROL_ON; 179 sc606regAval=backlight_brightness;
180 backlight_control = BACKLIGHT_CONTROL_IDLE;
180 break; 181 break;
181 case BACKLIGHT_CONTROL_FADE: 182 case BACKLIGHT_CONTROL_FADE:
182 /* Was this mode set while the backlight is already on/off? */ 183 /* Was this mode set while the backlight is already on/off? */
@@ -212,24 +213,25 @@ static void led_control_service(void)
212 case BUTTONLIGHT_CONTROL_OFF: 213 case BUTTONLIGHT_CONTROL_OFF:
213 sc606_changed=true; 214 sc606_changed=true;
214 sc606regCONFval &= ~0x3C; 215 sc606regCONFval &= ~0x3C;
216 sc606regBval=sc606regCval=0;
215 buttonlight_control=BUTTONLIGHT_CONTROL_IDLE; 217 buttonlight_control=BUTTONLIGHT_CONTROL_IDLE;
216 break; 218 break;
217 case BUTTONLIGHT_CONTROL_ON: 219 case BUTTONLIGHT_CONTROL_ON:
218 sc606_changed=true; 220 sc606_changed=true;
219 sc606regBval=sc606regCval=buttonlight_brightness;
220 sc606regCONFval |= 0x3C; 221 sc606regCONFval |= 0x3C;
222 sc606regBval=sc606regCval=buttonlight_brightness;
221 buttonlight_control=BUTTONLIGHT_CONTROL_IDLE; 223 buttonlight_control=BUTTONLIGHT_CONTROL_IDLE;
222 break; 224 break;
223 case BUTTONLIGHT_CONTROL_SET: 225 case BUTTONLIGHT_CONTROL_SET:
224 sc606regBval=sc606regCval=buttonlight_brightness;
225 sc606_changed=true; 226 sc606_changed=true;
226 buttonlight_control = BUTTONLIGHT_CONTROL_ON; 227 sc606regBval=sc606regCval=buttonlight_brightness;
228 buttonlight_control = BUTTONLIGHT_CONTROL_IDLE;
227 break; 229 break;
228 case BUTTONLIGHT_CONTROL_FADE: 230 case BUTTONLIGHT_CONTROL_FADE:
229 /* Was this mode set while the button light is already on/off? */ 231 /* Was this mode set while the button light is already on/off? */
230 if(buttonlight_target==sc606regBval) 232 if(buttonlight_target==sc606regBval)
231 { 233 {
232 buttonlight_control=BUTTONLIGHT_CONTROL_IDLE; 234 buttonlight_control = BUTTONLIGHT_CONTROL_IDLE;
233 break; 235 break;
234 } 236 }
235 sc606_changed=true; 237 sc606_changed=true;
@@ -243,7 +245,7 @@ static void led_control_service(void)
243 else 245 else
244 { 246 {
245 sc606regCval=--sc606regBval; 247 sc606regCval=--sc606regBval;
246 if(buttonlight_target==sc606regBval) 248 if(sc606regBval==0)
247 buttonlight_control = BUTTONLIGHT_CONTROL_OFF; 249 buttonlight_control = BUTTONLIGHT_CONTROL_OFF;
248 } 250 }
249 251
@@ -294,20 +296,25 @@ static void led_control_service(void)
294 296
295void __button_backlight_on(void) 297void __button_backlight_on(void)
296{ 298{
297 buttonlight_control = BUTTONLIGHT_CONTROL_IDLE; 299 buttonlight_control = BUTTONLIGHT_CONTROL_ON;
298 buttonlight_target = buttonlight_brightness;
299 if(buttonlight_brightness==0)
300 buttonlight_control = BUTTONLIGHT_CONTROL_ON;
301 else
302 buttonlight_control = BUTTONLIGHT_CONTROL_FADE;
303} 300}
304 301
305void __button_backlight_off(void) 302void __button_backlight_off(void)
306{ 303{
304 buttonlight_control = BUTTONLIGHT_CONTROL_OFF;
305}
306
307void __button_backlight_dim(bool dim_now)
308{
307 buttonlight_control = BUTTONLIGHT_CONTROL_IDLE; 309 buttonlight_control = BUTTONLIGHT_CONTROL_IDLE;
308 buttonlight_target = 0; 310 buttonlight_target = (dim_now == true) ? 0 : buttonlight_brightness;
309 if(buttonlight_brightness==0) 311 if(buttonlight_target==0 && buttonlight_brightness==0)
310 buttonlight_control = BUTTONLIGHT_CONTROL_OFF; 312 {
313 if(dim_now == false)
314 buttonlight_control = BUTTONLIGHT_CONTROL_ON;
315 else
316 buttonlight_control = BUTTONLIGHT_CONTROL_OFF;
317 }
311 else 318 else
312 buttonlight_control = BUTTONLIGHT_CONTROL_FADE; 319 buttonlight_control = BUTTONLIGHT_CONTROL_FADE;
313} 320}
@@ -330,7 +337,6 @@ void __backlight_dim(bool dim_now)
330 337
331void __buttonlight_set_brightness(int brightness) 338void __buttonlight_set_brightness(int brightness)
332{ 339{
333 /* stop the interrupt from messing us up */
334 buttonlight_control = BUTTONLIGHT_CONTROL_IDLE; 340 buttonlight_control = BUTTONLIGHT_CONTROL_IDLE;
335 buttonlight_brightness = brightness; 341 buttonlight_brightness = brightness;
336 buttonlight_control = BUTTONLIGHT_CONTROL_SET; 342 buttonlight_control = BUTTONLIGHT_CONTROL_SET;