summaryrefslogtreecommitdiff
path: root/firmware/backlight.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/backlight.c')
-rw-r--r--firmware/backlight.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/firmware/backlight.c b/firmware/backlight.c
index 63bde6a868..d621aa42d1 100644
--- a/firmware/backlight.c
+++ b/firmware/backlight.c
@@ -152,8 +152,8 @@ static int fade_in_count = 1;
152static int fade_out_count = 4; 152static int fade_out_count = 4;
153 153
154static bool bl_timer_active = false; 154static bool bl_timer_active = false;
155static int bl_dim_current = BL_PWM_COUNT; 155static int bl_dim_current = 0;
156static int bl_dim_target = BL_PWM_COUNT; 156static int bl_dim_target = 0;
157static int bl_pwm_counter = 0; 157static int bl_pwm_counter = 0;
158static volatile int bl_cycle_counter = 0; 158static volatile int bl_cycle_counter = 0;
159static enum {DIM_STATE_START, DIM_STATE_MAIN} bl_dim_state = DIM_STATE_START; 159static enum {DIM_STATE_START, DIM_STATE_MAIN} bl_dim_state = DIM_STATE_START;
@@ -556,17 +556,21 @@ static void backlight_tick(void)
556void backlight_init(void) 556void backlight_init(void)
557{ 557{
558 queue_init(&backlight_queue, true); 558 queue_init(&backlight_queue, true);
559 create_thread(backlight_thread, backlight_stack, 559
560 sizeof(backlight_stack), backlight_thread_name
561 IF_PRIO(, PRIORITY_SYSTEM));
562 tick_add_task(backlight_tick);
563#ifdef SIMULATOR 560#ifdef SIMULATOR
564 /* do nothing */ 561 /* do nothing */
565#elif defined(__BACKLIGHT_INIT) 562#elif defined(__BACKLIGHT_INIT)
566 /* Remove the __BACKLIGHT_INIT references when __backlight_init is 563 /* Remove the __BACKLIGHT_INIT references when __backlight_init is
567 available on all backlighted targets. Take them out of the 564 available on all backlighted targets. Take them out of the
568 backlight-target.h files as well */ 565 backlight-target.h files as well */
569 __backlight_init(); 566 if (__backlight_init())
567 {
568# if defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR)
569 /* If backlight is already on, don't fade in. */
570 bl_dim_current = BL_PWM_COUNT;
571 bl_dim_target = BL_PWM_COUNT;
572# endif
573 }
570#elif CONFIG_BACKLIGHT == BL_PA14_LO || CONFIG_BACKLIGHT == BL_PA14_HI 574#elif CONFIG_BACKLIGHT == BL_PA14_LO || CONFIG_BACKLIGHT == BL_PA14_HI
571 PACR1 &= ~0x3000; /* Set PA14 (backlight control) to GPIO */ 575 PACR1 &= ~0x3000; /* Set PA14 (backlight control) to GPIO */
572 or_b(0x40, &PAIORH); /* ..and output */ 576 or_b(0x40, &PAIORH); /* ..and output */
@@ -575,6 +579,11 @@ void backlight_init(void)
575#ifdef HAVE_REMOTE_LCD 579#ifdef HAVE_REMOTE_LCD
576 remote_backlight_on(); 580 remote_backlight_on();
577#endif 581#endif
582
583 create_thread(backlight_thread, backlight_stack,
584 sizeof(backlight_stack), backlight_thread_name
585 IF_PRIO(, PRIORITY_SYSTEM));
586 tick_add_task(backlight_tick);
578} 587}
579 588
580#ifdef X5_BACKLIGHT_SHUTDOWN 589#ifdef X5_BACKLIGHT_SHUTDOWN
@@ -803,6 +812,7 @@ void backlight_init(void)
803{ 812{
804#ifdef __BACKLIGHT_INIT 813#ifdef __BACKLIGHT_INIT
805 __backlight_init(); 814 __backlight_init();
815 __backlight_on();
806#endif 816#endif
807} 817}
808#endif 818#endif