diff options
Diffstat (limited to 'firmware/backlight.c')
-rw-r--r-- | firmware/backlight.c | 63 |
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 @@ | |||
52 | int backlight_brightness = DEFAULT_BRIGHTNESS_SETTING; | 52 | int 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) | ||
234 | static int backlight_fading_type = (FADING_UP|FADING_DOWN); | 236 | static int backlight_fading_type = (FADING_UP|FADING_DOWN); |
235 | static int backlight_fading_state = NOT_FADING; | 237 | static 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 | ||
417 | void backlight_set_fade_out(bool value) | 419 | void 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 | ||
433 | static void backlight_set_up_fade_up(void) | 435 | static 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 | ||
453 | static void backlight_set_up_fade_down(void) | 455 | static 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 */ |
476 | static void backlight_update_state(void) | 476 | static 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 |