summaryrefslogtreecommitdiff
path: root/firmware/backlight.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/backlight.c')
-rw-r--r--firmware/backlight.c63
1 files changed, 33 insertions, 30 deletions
diff --git a/firmware/backlight.c b/firmware/backlight.c
index c598a9528f..9c153e885a 100644
--- a/firmware/backlight.c
+++ b/firmware/backlight.c
@@ -52,7 +52,8 @@
52int backlight_brightness = DEFAULT_BRIGHTNESS_SETTING; 52int backlight_brightness = DEFAULT_BRIGHTNESS_SETTING;
53#endif 53#endif
54 54
55#ifdef USE_BACKLIGHT_SW_FADING 55#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
56 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
56#include "backlight-sw-fading.h" 57#include "backlight-sw-fading.h"
57#endif 58#endif
58#ifdef SIMULATOR 59#ifdef SIMULATOR
@@ -230,14 +231,15 @@ void backlight_lcd_sleep_countdown(bool start)
230} 231}
231#endif /* HAVE_LCD_SLEEP */ 232#endif /* HAVE_LCD_SLEEP */
232 233
233#ifdef USE_BACKLIGHT_SW_FADING 234#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
235 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
234static int backlight_fading_type = (FADING_UP|FADING_DOWN); 236static int backlight_fading_type = (FADING_UP|FADING_DOWN);
235static int backlight_fading_state = NOT_FADING; 237static int backlight_fading_state = NOT_FADING;
236#endif 238#endif
237 239
238 240
239#if defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR)
240/* backlight fading */ 241/* backlight fading */
242#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_PWM)
241#define BL_PWM_INTERVAL 5 /* Cycle interval in ms */ 243#define BL_PWM_INTERVAL 5 /* Cycle interval in ms */
242#define BL_PWM_BITS 8 244#define BL_PWM_BITS 8
243#define BL_PWM_COUNT (1<<BL_PWM_BITS) 245#define BL_PWM_COUNT (1<<BL_PWM_BITS)
@@ -410,9 +412,9 @@ void backlight_set_fade_out(int value)
410 else 412 else
411 bl_fade_out_step = 0; 413 bl_fade_out_step = 0;
412} 414}
413#endif /* defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR) */
414 415
415#ifdef USE_BACKLIGHT_SW_FADING 416#elif (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
417 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
416 418
417void backlight_set_fade_out(bool value) 419void backlight_set_fade_out(bool value)
418{ 420{
@@ -430,7 +432,7 @@ void backlight_set_fade_in(bool value)
430 backlight_fading_type &= FADING_DOWN; 432 backlight_fading_type &= FADING_DOWN;
431} 433}
432 434
433static void backlight_set_up_fade_up(void) 435static void backlight_setup_fade_up(void)
434{ 436{
435 if (backlight_fading_type & FADING_UP) 437 if (backlight_fading_type & FADING_UP)
436 { 438 {
@@ -450,7 +452,7 @@ static void backlight_set_up_fade_up(void)
450 } 452 }
451} 453}
452 454
453static void backlight_set_up_fade_down(void) 455static void backlight_setup_fade_down(void)
454{ 456{
455 if (backlight_fading_type & FADING_DOWN) 457 if (backlight_fading_type & FADING_DOWN)
456 { 458 {
@@ -461,16 +463,14 @@ static void backlight_set_up_fade_down(void)
461 backlight_fading_state = NOT_FADING; 463 backlight_fading_state = NOT_FADING;
462 _backlight_fade_update_state(MIN_BRIGHTNESS_SETTING-1); 464 _backlight_fade_update_state(MIN_BRIGHTNESS_SETTING-1);
463 _backlight_off(); 465 _backlight_off();
464 /* h300/x5/d2 go to the last known brightness level at backight_on(),which 466#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
465 * should be the lowest level to keep fading up glitch free 467 /* write the lowest brightness level to the hardware so that
466 * targets which set brightness over AS3514 I2C make the backlight on only 468 * fading up is glitch free */
467 * by setting the brightness, so this step would be noticeable */
468#if !defined(HAVE_AS3514)
469 _backlight_set_brightness(MIN_BRIGHTNESS_SETTING); 469 _backlight_set_brightness(MIN_BRIGHTNESS_SETTING);
470#endif 470#endif
471 } 471 }
472} 472}
473#endif /* USE_BACKLIGHT_SW_FADING */ 473#endif /* CONFIG_BACKLIGHT_FADING */
474 474
475/* Update state of backlight according to timeout setting */ 475/* Update state of backlight according to timeout setting */
476static void backlight_update_state(void) 476static void backlight_update_state(void)
@@ -498,8 +498,9 @@ static void backlight_update_state(void)
498 if (UNLIKELY(backlight_timeout < 0)) 498 if (UNLIKELY(backlight_timeout < 0))
499 { 499 {
500 backlight_timer = 0; /* Disable the timeout */ 500 backlight_timer = 0; /* Disable the timeout */
501#ifdef USE_BACKLIGHT_SW_FADING 501#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
502 backlight_set_up_fade_down(); 502 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
503 backlight_setup_fade_down();
503 /* necessary step to issue fading down when the setting is selected */ 504 /* necessary step to issue fading down when the setting is selected */
504 queue_post(&backlight_queue, SYS_TIMEOUT, 0); 505 queue_post(&backlight_queue, SYS_TIMEOUT, 0);
505#else 506#else
@@ -509,8 +510,9 @@ static void backlight_update_state(void)
509 else 510 else
510 { 511 {
511 backlight_timer = backlight_timeout; 512 backlight_timer = backlight_timeout;
512#if defined(USE_BACKLIGHT_SW_FADING) 513#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
513 backlight_set_up_fade_up(); 514 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
515 backlight_setup_fade_up();
514#else 516#else
515 _backlight_on(); 517 _backlight_on();
516#endif 518#endif
@@ -555,15 +557,13 @@ void backlight_thread(void)
555 557
556 while(1) 558 while(1)
557 { 559 {
558#if defined(USE_BACKLIGHT_SW_FADING) 560#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
561 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
559 if (backlight_fading_state) 562 if (backlight_fading_state)
560 queue_wait_w_tmo(&backlight_queue, &ev, FADE_DELAY); 563 queue_wait_w_tmo(&backlight_queue, &ev, FADE_DELAY);
561 else 564 else
562#endif 565#endif
563 queue_wait(&backlight_queue, &ev); 566 queue_wait(&backlight_queue, &ev);
564/*
565#endif
566*/
567 switch(ev.id) 567 switch(ev.id)
568 { /* These events must always be processed */ 568 { /* These events must always be processed */
569#ifdef _BACKLIGHT_FADE_BOOST 569#ifdef _BACKLIGHT_FADE_BOOST
@@ -643,11 +643,12 @@ void backlight_thread(void)
643 643
644 case BACKLIGHT_OFF: 644 case BACKLIGHT_OFF:
645 backlight_timer = 0; /* Disable the timeout */ 645 backlight_timer = 0; /* Disable the timeout */
646#ifndef USE_BACKLIGHT_SW_FADING 646#if (CONFIG_BACKLIGHT_FADING != BACKLIGHT_FADING_SW_SETTING) \
647 && (CONFIG_BACKLIGHT_FADING != BACKLIGHT_FADING_SW_HW_REG)
647 _backlight_off(); 648 _backlight_off();
648#else 649#else
649 backlight_set_up_fade_down(); 650 backlight_setup_fade_down();
650#endif /* USE_BACKLIGHT_SW_FADING */ 651#endif /* CONFIG_BACKLIGHT_FADING */
651 break; 652 break;
652#ifdef HAVE_LCD_SLEEP 653#ifdef HAVE_LCD_SLEEP
653 case LCD_SLEEP: 654 case LCD_SLEEP:
@@ -677,12 +678,13 @@ void backlight_thread(void)
677 remote_backlight_update_state(); 678 remote_backlight_update_state();
678#endif 679#endif
679 break; 680 break;
680#if defined(USE_BACKLIGHT_SW_FADING) 681#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
682 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
681 case SYS_TIMEOUT: 683 case SYS_TIMEOUT:
682 if ((_backlight_fade_step(backlight_fading_state))) 684 if ((_backlight_fade_step(backlight_fading_state)))
683 backlight_fading_state = NOT_FADING; 685 backlight_fading_state = NOT_FADING; /* finished fading */
684 break; 686 break;
685#endif /* USE_BACKLIGHT_SW_FADING */ 687#endif /* CONFIG_BACKLIGHT_FADING */
686 } 688 }
687 } /* end while */ 689 } /* end while */
688} 690}
@@ -733,11 +735,11 @@ void backlight_init(void)
733#ifndef SIMULATOR 735#ifndef SIMULATOR
734 if (_backlight_init()) 736 if (_backlight_init())
735 { 737 {
736# ifdef HAVE_BACKLIGHT_PWM_FADING 738#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_PWM)
737 /* If backlight is already on, don't fade in. */ 739 /* If backlight is already on, don't fade in. */
738 bl_dim_target = BL_PWM_COUNT; 740 bl_dim_target = BL_PWM_COUNT;
739 bl_dim_fraction = (BL_PWM_COUNT<<16); 741 bl_dim_fraction = (BL_PWM_COUNT<<16);
740# endif 742#endif
741 } 743 }
742#endif 744#endif
743 /* Leave all lights as set by the bootloader here. The settings load will 745 /* Leave all lights as set by the bootloader here. The settings load will
@@ -922,7 +924,8 @@ void backlight_set_brightness(int val)
922 924
923 backlight_brightness = val; 925 backlight_brightness = val;
924 _backlight_set_brightness(val); 926 _backlight_set_brightness(val);
925#ifdef USE_BACKLIGHT_SW_FADING 927#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
928 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
926 /* receive backlight brightness */ 929 /* receive backlight brightness */
927 _backlight_fade_update_state(val); 930 _backlight_fade_update_state(val);
928#endif 931#endif