summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/backlight.c62
1 files changed, 36 insertions, 26 deletions
diff --git a/firmware/backlight.c b/firmware/backlight.c
index 9575ecdc22..9ee84b0ca4 100644
--- a/firmware/backlight.c
+++ b/firmware/backlight.c
@@ -123,7 +123,7 @@ static int backlight_timeout_plugged = 5*HZ;
123#ifdef HAS_BUTTON_HOLD 123#ifdef HAS_BUTTON_HOLD
124static int backlight_on_button_hold = 0; 124static int backlight_on_button_hold = 0;
125#endif 125#endif
126static void backlight_timeout_handler(void); 126static void backlight_handle_timeout(void);
127 127
128#ifdef HAVE_BUTTON_LIGHT 128#ifdef HAVE_BUTTON_LIGHT
129static int buttonlight_timer; 129static int buttonlight_timer;
@@ -551,6 +551,17 @@ static void remote_backlight_update_state(void)
551} 551}
552#endif /* HAVE_REMOTE_LCD */ 552#endif /* HAVE_REMOTE_LCD */
553 553
554static void backlight_queue_wait(struct queue_event *ev)
555{
556#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
557 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
558 if (backlight_fading_state != NOT_FADING)
559 queue_wait_w_tmo(&backlight_queue, ev, FADE_DELAY);
560 else
561#endif
562 queue_wait_w_tmo(&backlight_queue, ev, BACKLIGHT_THREAD_TIMEOUT);
563}
564
554void backlight_thread(void) 565void backlight_thread(void)
555{ 566{
556 struct queue_event ev; 567 struct queue_event ev;
@@ -558,13 +569,7 @@ void backlight_thread(void)
558 569
559 while(1) 570 while(1)
560 { 571 {
561#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \ 572 backlight_queue_wait(&ev);
562 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
563 if (backlight_fading_state != NOT_FADING)
564 queue_wait_w_tmo(&backlight_queue, &ev, FADE_DELAY);
565 else
566#endif
567 queue_wait_w_tmo(&backlight_queue, &ev, BACKLIGHT_THREAD_TIMEOUT);
568 switch(ev.id) 573 switch(ev.id)
569 { /* These events must always be processed */ 574 { /* These events must always be processed */
570#ifdef _BACKLIGHT_FADE_BOOST 575#ifdef _BACKLIGHT_FADE_BOOST
@@ -686,24 +691,7 @@ void backlight_thread(void)
686#endif 691#endif
687 break; 692 break;
688 case SYS_TIMEOUT: 693 case SYS_TIMEOUT:
689#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \ 694 backlight_handle_timeout();
690 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
691 if (backlight_fading_state != NOT_FADING)
692 {
693 if ((_backlight_fade_step(backlight_fading_state)))
694 { /* finished fading */
695#ifdef HAVE_LCD_SLEEP
696 if (backlight_fading_state == FADING_DOWN)
697 { /* start sleep countdown */
698 backlight_lcd_sleep_countdown(true);
699 }
700#endif
701 backlight_fading_state = NOT_FADING;
702 }
703 }
704 else
705#endif /* CONFIG_BACKLIGHT_FADING */
706 backlight_timeout_handler();
707 break; 695 break;
708 } 696 }
709 } /* end while */ 697 } /* end while */
@@ -763,6 +751,28 @@ static void backlight_timeout_handler(void)
763 } 751 }
764} 752}
765 753
754static void backlight_handle_timeout(void)
755{
756#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
757 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
758 if (backlight_fading_state != NOT_FADING)
759 {
760 if ((_backlight_fade_step(backlight_fading_state)))
761 { /* finished fading */
762#ifdef HAVE_LCD_SLEEP
763 if (backlight_fading_state == FADING_DOWN)
764 { /* start sleep countdown */
765 backlight_lcd_sleep_countdown(true);
766 }
767#endif
768 backlight_fading_state = NOT_FADING;
769 }
770 }
771 else
772#endif /* CONFIG_BACKLIGHT_FADING */
773 backlight_timeout_handler();
774}
775
766void backlight_init(void) 776void backlight_init(void)
767{ 777{
768 queue_init(&backlight_queue, true); 778 queue_init(&backlight_queue, true);