diff options
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.c | 44 |
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 | ||
70 | bool __backlight_init(void) | 70 | bool __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 | ||
295 | void __button_backlight_on(void) | 297 | void __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 | ||
305 | void __button_backlight_off(void) | 302 | void __button_backlight_off(void) |
306 | { | 303 | { |
304 | buttonlight_control = BUTTONLIGHT_CONTROL_OFF; | ||
305 | } | ||
306 | |||
307 | void __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 | ||
331 | void __buttonlight_set_brightness(int brightness) | 338 | void __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; |