diff options
Diffstat (limited to 'firmware/backlight.c')
-rw-r--r-- | firmware/backlight.c | 24 |
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; | |||
152 | static int fade_out_count = 4; | 152 | static int fade_out_count = 4; |
153 | 153 | ||
154 | static bool bl_timer_active = false; | 154 | static bool bl_timer_active = false; |
155 | static int bl_dim_current = BL_PWM_COUNT; | 155 | static int bl_dim_current = 0; |
156 | static int bl_dim_target = BL_PWM_COUNT; | 156 | static int bl_dim_target = 0; |
157 | static int bl_pwm_counter = 0; | 157 | static int bl_pwm_counter = 0; |
158 | static volatile int bl_cycle_counter = 0; | 158 | static volatile int bl_cycle_counter = 0; |
159 | static enum {DIM_STATE_START, DIM_STATE_MAIN} bl_dim_state = DIM_STATE_START; | 159 | static enum {DIM_STATE_START, DIM_STATE_MAIN} bl_dim_state = DIM_STATE_START; |
@@ -556,17 +556,21 @@ static void backlight_tick(void) | |||
556 | void backlight_init(void) | 556 | void 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 |