summaryrefslogtreecommitdiff
path: root/firmware/backlight.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/backlight.c')
-rw-r--r--firmware/backlight.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/firmware/backlight.c b/firmware/backlight.c
index 7e7f745298..07c55c6bca 100644
--- a/firmware/backlight.c
+++ b/firmware/backlight.c
@@ -210,7 +210,7 @@ static int lcd_sleep_timeout = 10*HZ;
210 210
211static int lcd_sleep_timer SHAREDDATA_ATTR = 0; 211static int lcd_sleep_timer SHAREDDATA_ATTR = 0;
212 212
213void backlight_lcd_sleep_countdown(bool start) 213static void backlight_lcd_sleep_countdown(bool start)
214{ 214{
215 if (!start) 215 if (!start)
216 { 216 {
@@ -223,8 +223,8 @@ void backlight_lcd_sleep_countdown(bool start)
223 if (lcd_sleep_timeout < 0) 223 if (lcd_sleep_timeout < 0)
224 { 224 {
225 lcd_sleep_timer = 0; /* Setting == Always */ 225 lcd_sleep_timer = 0; /* Setting == Always */
226#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_PWM)
227 /* Ensure lcd_sleep() is called from backlight_thread() */ 226 /* Ensure lcd_sleep() is called from backlight_thread() */
227#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_PWM)
228 queue_post(&backlight_queue, LCD_SLEEP, 0); 228 queue_post(&backlight_queue, LCD_SLEEP, 0);
229#else 229#else
230 lcd_sleep(); 230 lcd_sleep();
@@ -504,11 +504,19 @@ static void backlight_update_state(void)
504 queue_post(&backlight_queue, SYS_TIMEOUT, 0); 504 queue_post(&backlight_queue, SYS_TIMEOUT, 0);
505#else 505#else
506 _backlight_off(); 506 _backlight_off();
507#ifdef HAVE_LCD_SLEEP
508 backlight_lcd_sleep_countdown(true); /* start sleep countdown */
509#endif
507#endif 510#endif
508 } 511 }
509 else 512 else
510 { 513 {
511 backlight_timer = timeout; 514 backlight_timer = timeout;
515
516#ifdef HAVE_LCD_SLEEP
517 backlight_lcd_sleep_countdown(false); /* wake up lcd */
518#endif
519
512#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \ 520#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
513 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG) 521 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
514 backlight_setup_fade_up(); 522 backlight_setup_fade_up();
@@ -670,7 +678,15 @@ void backlight_thread(void)
670 if (backlight_fading_state != NOT_FADING) 678 if (backlight_fading_state != NOT_FADING)
671 { 679 {
672 if ((_backlight_fade_step(backlight_fading_state))) 680 if ((_backlight_fade_step(backlight_fading_state)))
673 backlight_fading_state = NOT_FADING; /* finished fading */ 681 { /* finished fading */
682#ifdef HAVE_LCD_SLEEP
683 if (backlight_fading_state == FADING_DOWN)
684 { /* start sleep countdown */
685 backlight_lcd_sleep_countdown(true);
686 }
687#endif
688 backlight_fading_state = NOT_FADING;
689 }
674 } 690 }
675 else 691 else
676#endif /* CONFIG_BACKLIGHT_FADING */ 692#endif /* CONFIG_BACKLIGHT_FADING */