diff options
Diffstat (limited to 'firmware/backlight.c')
-rw-r--r-- | firmware/backlight.c | 22 |
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 | ||
211 | static int lcd_sleep_timer SHAREDDATA_ATTR = 0; | 211 | static int lcd_sleep_timer SHAREDDATA_ATTR = 0; |
212 | 212 | ||
213 | void backlight_lcd_sleep_countdown(bool start) | 213 | static 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 */ |