summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2009-01-26 23:21:49 +0000
committerThomas Martitz <kugel@rockbox.org>2009-01-26 23:21:49 +0000
commit12a0ed3b8dd5d8996abf827115f526e21e838872 (patch)
tree00ec62e04cf0e4bc4ea9c7bc0f5b8893e198c7cd
parent4e1b7bf7286c3994e34ca11f740a2165d9b5a001 (diff)
downloadrockbox-12a0ed3b8dd5d8996abf827115f526e21e838872.tar.gz
rockbox-12a0ed3b8dd5d8996abf827115f526e21e838872.zip
Commit FS#9724, which reworks the preprocessor defines related to backlight fading to a CONFIG_BACKLIGHT_FADING style. The apps/ code will only see which setting is supposed to be used, specific backlight fading handling is kept in firmware, slightly reword the manual text about software fading too with regards to the Gigabeat S
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19860 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/features.txt10
-rw-r--r--apps/menus/display_menu.c10
-rw-r--r--apps/settings.c5
-rw-r--r--apps/settings.h5
-rw-r--r--apps/settings_list.c7
-rw-r--r--firmware/SOURCES5
-rw-r--r--firmware/backlight-sw-fading.c2
-rw-r--r--firmware/backlight.c63
-rw-r--r--firmware/export/backlight-sw-fading.h5
-rw-r--r--firmware/export/backlight.h6
-rw-r--r--firmware/export/config-c200.h21
-rw-r--r--firmware/export/config-c200v2.h6
-rw-r--r--firmware/export/config-cowond2.h10
-rw-r--r--firmware/export/config-e200.h9
-rw-r--r--firmware/export/config-e200v2.h21
-rw-r--r--firmware/export/config-fuze.h21
-rw-r--r--firmware/export/config-gigabeat-s.h5
-rw-r--r--firmware/export/config-h100.h2
-rw-r--r--firmware/export/config-h120.h2
-rw-r--r--firmware/export/config-h300.h8
-rw-r--r--firmware/export/config-iaudiox5.h8
-rw-r--r--firmware/export/config-ipodmini.h2
-rw-r--r--firmware/export/config-ipodmini2g.h2
-rw-r--r--firmware/export/config-ipodnano.h5
-rw-r--r--firmware/export/config-ipodvideo.h5
-rw-r--r--firmware/export/config-mrobe100.h2
-rwxr-xr-xfirmware/export/config-sa9200.h3
-rw-r--r--firmware/export/config.h51
-rw-r--r--firmware/target/arm/as3525/backlight-e200v2-fuze.c4
-rw-r--r--firmware/target/arm/ipod/backlight-target.h3
-rw-r--r--firmware/target/arm/philips/sa9200/backlight-sa9200.c7
-rw-r--r--firmware/target/arm/sandisk/backlight-c200_e200.c7
-rw-r--r--manual/configure_rockbox/display_options.tex8
33 files changed, 169 insertions, 161 deletions
diff --git a/apps/features.txt b/apps/features.txt
index 4fbf427a23..4980944605 100644
--- a/apps/features.txt
+++ b/apps/features.txt
@@ -20,12 +20,10 @@ albumart
20backlight_brightness 20backlight_brightness
21#endif 21#endif
22 22
23#if defined(HAVE_BACKLIGHT_PWM_FADING) 23#if defined(HAVE_BACKLIGHT_FADING_INT_SETTING)
24backlight_fade_pwm 24backlight_fade_int
25#elif defined(USE_BACKLIGHT_SW_FADING) 25#elif defined(HAVE_BACKLIGHT_FADING_BOOL_SETTING)
26backlight_fade_sw 26backlight_fade_bool
27#elif defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL)
28backlight_fade_custom_bool
29#endif 27#endif
30 28
31#if BATTERY_TYPES_COUNT > 1 29#if BATTERY_TYPES_COUNT > 1
diff --git a/apps/menus/display_menu.c b/apps/menus/display_menu.c
index 488b0ff570..dbc7206b91 100644
--- a/apps/menus/display_menu.c
+++ b/apps/menus/display_menu.c
@@ -91,9 +91,8 @@ MENUITEM_SETTING(backlight_on_button_hold,
91 &global_settings.backlight_on_button_hold, NULL); 91 &global_settings.backlight_on_button_hold, NULL);
92#endif 92#endif
93MENUITEM_SETTING(caption_backlight, &global_settings.caption_backlight, NULL); 93MENUITEM_SETTING(caption_backlight, &global_settings.caption_backlight, NULL);
94#if (defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR)) || \ 94#if defined(HAVE_BACKLIGHT_FADING_INT_SETTING) \
95 defined(USE_BACKLIGHT_SW_FADING) || \ 95 || defined(HAVE_BACKLIGHT_FADING_BOOL_SETTING)
96 defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL)
97MENUITEM_SETTING(backlight_fade_in, &global_settings.backlight_fade_in, NULL); 96MENUITEM_SETTING(backlight_fade_in, &global_settings.backlight_fade_in, NULL);
98MENUITEM_SETTING(backlight_fade_out, &global_settings.backlight_fade_out, NULL); 97MENUITEM_SETTING(backlight_fade_out, &global_settings.backlight_fade_out, NULL);
99#endif 98#endif
@@ -132,9 +131,8 @@ MAKE_MENU(lcd_settings,ID2P(LANG_LCD_MENU),
132 ,&backlight_on_button_hold 131 ,&backlight_on_button_hold
133# endif 132# endif
134 ,&caption_backlight 133 ,&caption_backlight
135#if (defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR)) || \ 134#if defined(HAVE_BACKLIGHT_FADING_INT_SETTING) \
136 defined(USE_BACKLIGHT_SW_FADING) || \ 135 || defined(HAVE_BACKLIGHT_FADING_BOOL_SETTING)
137 defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL)
138 ,&backlight_fade_in, &backlight_fade_out 136 ,&backlight_fade_in, &backlight_fade_out
139#endif 137#endif
140 ,&bl_filter_first_keypress 138 ,&bl_filter_first_keypress
diff --git a/apps/settings.c b/apps/settings.c
index 42fb4dad5d..7bbbe92a9b 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -773,9 +773,8 @@ void settings_apply(bool read_disk)
773#if CONFIG_CHARGING 773#if CONFIG_CHARGING
774 backlight_set_timeout_plugged(global_settings.backlight_timeout_plugged); 774 backlight_set_timeout_plugged(global_settings.backlight_timeout_plugged);
775#endif 775#endif
776#if (defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR)) \ 776#if defined(HAVE_BACKLIGHT_FADING_INT_SETTING) \
777 || defined(USE_BACKLIGHT_SW_FADING) \ 777 || defined(HAVE_BACKLIGHT_FADING_BOOL_SETTING)
778 || defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL)
779 backlight_set_fade_in(global_settings.backlight_fade_in); 778 backlight_set_fade_in(global_settings.backlight_fade_in);
780 backlight_set_fade_out(global_settings.backlight_fade_out); 779 backlight_set_fade_out(global_settings.backlight_fade_out);
781#endif 780#endif
diff --git a/apps/settings.h b/apps/settings.h
index efa50f78dd..50c53718f7 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -681,11 +681,10 @@ struct user_settings
681 int lcd_sleep_after_backlight_off; /* when to put lcd to sleep after backlight 681 int lcd_sleep_after_backlight_off; /* when to put lcd to sleep after backlight
682 has turned off */ 682 has turned off */
683#endif 683#endif
684#if defined(HAVE_BACKLIGHT_PWM_FADING) 684#if defined(HAVE_BACKLIGHT_FADING_INT_SETTING)
685 int backlight_fade_in; /* backlight fade in timing: 0..3 */ 685 int backlight_fade_in; /* backlight fade in timing: 0..3 */
686 int backlight_fade_out; /* backlight fade in timing: 0..7 */ 686 int backlight_fade_out; /* backlight fade in timing: 0..7 */
687#elif defined(USE_BACKLIGHT_SW_FADING) \ 687#elif defined(HAVE_BACKLIGHT_FADING_BOOL_SETTING)
688 || defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL)
689 bool backlight_fade_in; 688 bool backlight_fade_in;
690 bool backlight_fade_out; 689 bool backlight_fade_out;
691#endif 690#endif
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 3618c16aa2..c855c70e10 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -671,15 +671,14 @@ const struct settings_list settings[] = {
671 OFFON_SETTING(0, remote_caption_backlight, LANG_CAPTION_BACKLIGHT, 671 OFFON_SETTING(0, remote_caption_backlight, LANG_CAPTION_BACKLIGHT,
672 false, "remote caption backlight", NULL), 672 false, "remote caption backlight", NULL),
673#endif 673#endif
674#endif /* HAVE_BACKLIGHT */
675#ifdef HAVE_BACKLIGHT_BRIGHTNESS 674#ifdef HAVE_BACKLIGHT_BRIGHTNESS
676 INT_SETTING(F_NO_WRAP, brightness, LANG_BRIGHTNESS, 675 INT_SETTING(F_NO_WRAP, brightness, LANG_BRIGHTNESS,
677 DEFAULT_BRIGHTNESS_SETTING, "brightness",UNIT_INT, 676 DEFAULT_BRIGHTNESS_SETTING, "brightness",UNIT_INT,
678 MIN_BRIGHTNESS_SETTING, MAX_BRIGHTNESS_SETTING, 1, 677 MIN_BRIGHTNESS_SETTING, MAX_BRIGHTNESS_SETTING, 1,
679 NULL, NULL, backlight_set_brightness), 678 NULL, NULL, backlight_set_brightness),
680#endif 679#endif
681#if defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR)
682 /* backlight fading */ 680 /* backlight fading */
681#if defined(HAVE_BACKLIGHT_FADING_INT_SETTING)
683 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, backlight_fade_in, 682 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, backlight_fade_in,
684 LANG_BACKLIGHT_FADE_IN, 300, "backlight fade in", "off", 683 LANG_BACKLIGHT_FADE_IN, 300, "backlight fade in", "off",
685 UNIT_MS, formatter_unit_0_is_off, getlang_unit_0_is_off, 684 UNIT_MS, formatter_unit_0_is_off, getlang_unit_0_is_off,
@@ -689,13 +688,13 @@ const struct settings_list settings[] = {
689 UNIT_MS, formatter_unit_0_is_off, getlang_unit_0_is_off, 688 UNIT_MS, formatter_unit_0_is_off, getlang_unit_0_is_off,
690 backlight_set_fade_out, 10, 689 backlight_set_fade_out, 10,
691 0,100,200,300,500,1000,2000,3000,5000,10000), 690 0,100,200,300,500,1000,2000,3000,5000,10000),
692#elif defined(USE_BACKLIGHT_SW_FADING) \ 691#elif defined(HAVE_BACKLIGHT_FADING_BOOL_SETTING)
693 || defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL)
694 OFFON_SETTING(0, backlight_fade_in, LANG_BACKLIGHT_FADE_IN, 692 OFFON_SETTING(0, backlight_fade_in, LANG_BACKLIGHT_FADE_IN,
695 true, "backlight fade in", backlight_set_fade_in), 693 true, "backlight fade in", backlight_set_fade_in),
696 OFFON_SETTING(0, backlight_fade_out, LANG_BACKLIGHT_FADE_OUT, 694 OFFON_SETTING(0, backlight_fade_out, LANG_BACKLIGHT_FADE_OUT,
697 true, "backlight fade out", backlight_set_fade_out), 695 true, "backlight fade out", backlight_set_fade_out),
698#endif 696#endif
697#endif /* HAVE_BACKLIGHT */
699 INT_SETTING(F_PADTITLE, scroll_speed, LANG_SCROLL_SPEED, 9,"scroll speed", 698 INT_SETTING(F_PADTITLE, scroll_speed, LANG_SCROLL_SPEED, 9,"scroll speed",
700 UNIT_INT, 0, 15, 1, NULL, NULL, lcd_scroll_speed), 699 UNIT_INT, 0, 15, 1, NULL, NULL, lcd_scroll_speed),
701 INT_SETTING(F_PADTITLE, scroll_delay, LANG_SCROLL_DELAY, 1000, 700 INT_SETTING(F_PADTITLE, scroll_delay, LANG_SCROLL_DELAY, 1000,
diff --git a/firmware/SOURCES b/firmware/SOURCES
index c8c38ceee2..8783c3a080 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -96,9 +96,10 @@ drivers/lcd-remote-2bit-vi.c
96#endif /* LCD_REMOTE_DEPTH */ 96#endif /* LCD_REMOTE_DEPTH */
97#endif /* HAVE_REMOTE_LCD */ 97#endif /* HAVE_REMOTE_LCD */
98 98
99#ifdef USE_BACKLIGHT_SW_FADING 99#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
100 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
100backlight-sw-fading.c 101backlight-sw-fading.c
101#endif /* USE_BACKLIGHT_SW_FADING */ 102#endif /* CONFIG_BACKLIGHT_FADING */
102 103
103/* Misc. */ 104/* Misc. */
104drivers/led.c 105drivers/led.c
diff --git a/firmware/backlight-sw-fading.c b/firmware/backlight-sw-fading.c
index d7987567ce..b9c9587cf4 100644
--- a/firmware/backlight-sw-fading.c
+++ b/firmware/backlight-sw-fading.c
@@ -30,7 +30,7 @@
30/* To adapt a target do: 30/* To adapt a target do:
31 * - make sure _backlight_on doesn't set the brightness to something other than 31 * - make sure _backlight_on doesn't set the brightness to something other than
32 * the previous value (lowest brightness in most cases) 32 * the previous value (lowest brightness in most cases)
33 * - #define USE_BACKLIGHT_SW_FADING in config-<target>.h 33 * add proper #defines for software fading
34 */ 34 */
35 35
36/* can be MIN_BRIGHTNESS_SETTING-1 */ 36/* can be MIN_BRIGHTNESS_SETTING-1 */
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
diff --git a/firmware/export/backlight-sw-fading.h b/firmware/export/backlight-sw-fading.h
index 54f732709a..8527fd0f99 100644
--- a/firmware/export/backlight-sw-fading.h
+++ b/firmware/export/backlight-sw-fading.h
@@ -22,10 +22,6 @@
22#ifndef BACKLIGHT_THREAD_FADING_H 22#ifndef BACKLIGHT_THREAD_FADING_H
23#define BACKLIGHT_THREAD_FADING_H 23#define BACKLIGHT_THREAD_FADING_H
24 24
25#include "config.h"
26
27#ifdef USE_BACKLIGHT_SW_FADING
28
29/* delay supposed to be MAX_BRIGHTNESS_SETTING*2 rounded to the next multiple 25/* delay supposed to be MAX_BRIGHTNESS_SETTING*2 rounded to the next multiple
30 * of 5, however not more than 40 */ 26 * of 5, however not more than 40 */
31#define _FADE_DELAY (((MAX_BRIGHTNESS_SETTING*2+4)/5)*5) 27#define _FADE_DELAY (((MAX_BRIGHTNESS_SETTING*2+4)/5)*5)
@@ -41,6 +37,5 @@ enum {
41 FADING_UP, 37 FADING_UP,
42 FADING_DOWN, 38 FADING_DOWN,
43}; 39};
44#endif /* USE_BACKLIGHT_SW_FADING */
45 40
46#endif /* _BACKLIGHT_THREAD_FADING_ */ 41#endif /* _BACKLIGHT_THREAD_FADING_ */
diff --git a/firmware/export/backlight.h b/firmware/export/backlight.h
index cb081a5301..f215e0faea 100644
--- a/firmware/export/backlight.h
+++ b/firmware/export/backlight.h
@@ -34,12 +34,10 @@ void backlight_close(void);
34 34
35int backlight_get_current_timeout(void); 35int backlight_get_current_timeout(void);
36 36
37#if defined(HAVE_BACKLIGHT_PWM_FADING) 37#if defined(HAVE_BACKLIGHT_FADING_INT_SETTING)
38void backlight_set_fade_in(int value); 38void backlight_set_fade_in(int value);
39void backlight_set_fade_out(int value); 39void backlight_set_fade_out(int value);
40#endif 40#elif defined(HAVE_BACKLIGHT_FADING_BOOL_SETTING)
41#if defined(USE_BACKLIGHT_SW_FADING) \
42 || defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL)
43void backlight_set_fade_in(bool value); 41void backlight_set_fade_in(bool value);
44void backlight_set_fade_out(bool value); 42void backlight_set_fade_out(bool value);
45#endif 43#endif
diff --git a/firmware/export/config-c200.h b/firmware/export/config-c200.h
index d68d21455f..cd9f5867dc 100644
--- a/firmware/export/config-c200.h
+++ b/firmware/export/config-c200.h
@@ -111,6 +111,14 @@
111#define HAVE_BACKLIGHT 111#define HAVE_BACKLIGHT
112#define HAVE_BACKLIGHT_BRIGHTNESS 112#define HAVE_BACKLIGHT_BRIGHTNESS
113 113
114/* Main LCD backlight brightness range and defaults */
115#define MIN_BRIGHTNESS_SETTING 1
116#define MAX_BRIGHTNESS_SETTING 12
117#define DEFAULT_BRIGHTNESS_SETTING 6
118
119/* Which backlight fading type? */
120#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING
121
114/* define this if you have a flash memory storage */ 122/* define this if you have a flash memory storage */
115#define HAVE_FLASH_STORAGE 123#define HAVE_FLASH_STORAGE
116 124
@@ -138,12 +146,6 @@
138/** Non-simulator section **/ 146/** Non-simulator section **/
139#ifndef SIMULATOR 147#ifndef SIMULATOR
140 148
141/* define this if the backlight thread is used for fade, not for sim, needs
142 * HAVE_BACKLIGHT_BRIGHTNESS */
143#ifndef BOOTLOADER
144#define USE_BACKLIGHT_SW_FADING
145#endif
146
147/* Define this if you have a PortalPlayer PP5024 */ 149/* Define this if you have a PortalPlayer PP5024 */
148#define CONFIG_CPU PP5022 150#define CONFIG_CPU PP5022
149 151
@@ -200,13 +202,6 @@
200 202
201#endif /* SIMULATOR */ 203#endif /* SIMULATOR */
202 204
203/** Port-specific settings **/
204
205/* Main LCD backlight brightness range and defaults */
206#define MIN_BRIGHTNESS_SETTING 1
207#define MAX_BRIGHTNESS_SETTING 12
208#define DEFAULT_BRIGHTNESS_SETTING 6
209
210/* Default recording levels */ 205/* Default recording levels */
211#define DEFAULT_REC_MIC_GAIN 23 206#define DEFAULT_REC_MIC_GAIN 23
212#define DEFAULT_REC_LEFT_GAIN 23 207#define DEFAULT_REC_LEFT_GAIN 23
diff --git a/firmware/export/config-c200v2.h b/firmware/export/config-c200v2.h
index 6ecb478c09..f6a386637c 100644
--- a/firmware/export/config-c200v2.h
+++ b/firmware/export/config-c200v2.h
@@ -136,12 +136,6 @@
136/** Non-simulator section **/ 136/** Non-simulator section **/
137#ifndef SIMULATOR 137#ifndef SIMULATOR
138 138
139/* define this if the backlight thread is used for fade, not for sim, needs
140 * HAVE_BACKLIGHT_BRIGHTNESS */
141#ifndef BOOTLOADER
142#define USE_BACKLIGHT_SW_FADING
143#endif
144
145/* Define this if you have a PortalPlayer PP5024 */ 139/* Define this if you have a PortalPlayer PP5024 */
146#define CONFIG_CPU AS3525 140#define CONFIG_CPU AS3525
147 141
diff --git a/firmware/export/config-cowond2.h b/firmware/export/config-cowond2.h
index edeb834ef7..2b3b09cb09 100644
--- a/firmware/export/config-cowond2.h
+++ b/firmware/export/config-cowond2.h
@@ -108,9 +108,10 @@
108 108
109/* Define this for LCD backlight available */ 109/* Define this for LCD backlight available */
110#define HAVE_BACKLIGHT 110#define HAVE_BACKLIGHT
111
112/* Enable LCD brightness control */ 111/* Enable LCD brightness control */
113#define HAVE_BACKLIGHT_BRIGHTNESS 112#define HAVE_BACKLIGHT_BRIGHTNESS
113/* Which backlight fading type? */
114#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_HW_REG
114 115
115/* Main LCD backlight brightness range and defaults */ 116/* Main LCD backlight brightness range and defaults */
116#define MIN_BRIGHTNESS_SETTING 1 117#define MIN_BRIGHTNESS_SETTING 1
@@ -129,13 +130,6 @@
129#define CONFIG_CHARGING CHARGING_SIMPLE 130#define CONFIG_CHARGING CHARGING_SIMPLE
130 131
131#ifndef SIMULATOR 132#ifndef SIMULATOR
132
133/* define this if the backlight thread is used for fade, not for sim, needs
134 * HAVE_BACKLIGHT_BRIGHTNESS */
135#ifndef BOOTLOADER
136#define USE_BACKLIGHT_SW_FADING
137#endif
138
139/* Define this if you have a TCC7801 */ 133/* Define this if you have a TCC7801 */
140#define CONFIG_CPU TCC7801 134#define CONFIG_CPU TCC7801
141 135
diff --git a/firmware/export/config-e200.h b/firmware/export/config-e200.h
index 2be64d95cc..7fba79679c 100644
--- a/firmware/export/config-e200.h
+++ b/firmware/export/config-e200.h
@@ -101,6 +101,9 @@
101#define HAVE_BACKLIGHT 101#define HAVE_BACKLIGHT
102#define HAVE_BACKLIGHT_BRIGHTNESS 102#define HAVE_BACKLIGHT_BRIGHTNESS
103 103
104/* Which backlight fading type? */
105#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING
106
104/* define this if the unit uses a scrollwheel for navigation */ 107/* define this if the unit uses a scrollwheel for navigation */
105#define HAVE_SCROLLWHEEL 108#define HAVE_SCROLLWHEEL
106/* define from which rotation speed [degree/sec] on the acceleration starts */ 109/* define from which rotation speed [degree/sec] on the acceleration starts */
@@ -135,12 +138,6 @@
135/** Non-simulator section **/ 138/** Non-simulator section **/
136#ifndef SIMULATOR 139#ifndef SIMULATOR
137 140
138/* define this if the backlight thread is used for fade, not for sim, needs
139 * HAVE_BACKLIGHT_BRIGHTNESS */
140#ifndef BOOTLOADER
141#define USE_BACKLIGHT_SW_FADING
142#endif
143
144/* Define this if you have a PortalPlayer PP5024 */ 141/* Define this if you have a PortalPlayer PP5024 */
145#define CONFIG_CPU PP5024 142#define CONFIG_CPU PP5024
146 143
diff --git a/firmware/export/config-e200v2.h b/firmware/export/config-e200v2.h
index 564916aea0..78246221be 100644
--- a/firmware/export/config-e200v2.h
+++ b/firmware/export/config-e200v2.h
@@ -106,6 +106,14 @@
106#define HAVE_BACKLIGHT 106#define HAVE_BACKLIGHT
107#define HAVE_BACKLIGHT_BRIGHTNESS 107#define HAVE_BACKLIGHT_BRIGHTNESS
108 108
109/* Main LCD backlight brightness range and defaults */
110#define MIN_BRIGHTNESS_SETTING 1
111#define MAX_BRIGHTNESS_SETTING 12
112#define DEFAULT_BRIGHTNESS_SETTING 6
113
114/* Which backlight fading type? */
115#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING
116
109/* define this if the unit uses a scrollwheel for navigation */ 117/* define this if the unit uses a scrollwheel for navigation */
110#define HAVE_SCROLLWHEEL 118#define HAVE_SCROLLWHEEL
111/* define from which rotation speed [degree/sec] on the acceleration starts */ 119/* define from which rotation speed [degree/sec] on the acceleration starts */
@@ -134,12 +142,6 @@
134/** Non-simulator section **/ 142/** Non-simulator section **/
135#ifndef SIMULATOR 143#ifndef SIMULATOR
136 144
137/* define this if the backlight thread is used for fade, not for sim, needs
138 * HAVE_BACKLIGHT_BRIGHTNESS */
139#ifndef BOOTLOADER
140#define USE_BACKLIGHT_SW_FADING
141#endif
142
143/* Define this if you have an AMS AS3525*/ 145/* Define this if you have an AMS AS3525*/
144#define CONFIG_CPU AS3525 146#define CONFIG_CPU AS3525
145 147
@@ -195,13 +197,6 @@
195 197
196#endif /* SIMULATOR */ 198#endif /* SIMULATOR */
197 199
198/** Port-specific settings **/
199
200/* Main LCD backlight brightness range and defaults */
201#define MIN_BRIGHTNESS_SETTING 1
202#define MAX_BRIGHTNESS_SETTING 12
203#define DEFAULT_BRIGHTNESS_SETTING 6
204
205/* Default recording levels */ 200/* Default recording levels */
206#define DEFAULT_REC_MIC_GAIN 23 201#define DEFAULT_REC_MIC_GAIN 23
207#define DEFAULT_REC_LEFT_GAIN 23 202#define DEFAULT_REC_LEFT_GAIN 23
diff --git a/firmware/export/config-fuze.h b/firmware/export/config-fuze.h
index 3e5880775b..0bc2d70bf7 100644
--- a/firmware/export/config-fuze.h
+++ b/firmware/export/config-fuze.h
@@ -106,6 +106,14 @@
106#define HAVE_BACKLIGHT 106#define HAVE_BACKLIGHT
107#define HAVE_BACKLIGHT_BRIGHTNESS 107#define HAVE_BACKLIGHT_BRIGHTNESS
108 108
109/* Main LCD backlight brightness range and defaults */
110#define MIN_BRIGHTNESS_SETTING 1
111#define MAX_BRIGHTNESS_SETTING 12
112#define DEFAULT_BRIGHTNESS_SETTING 6
113
114/* Which backlight fading type? */
115#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING
116
109/* define this if the unit uses a scrollwheel for navigation */ 117/* define this if the unit uses a scrollwheel for navigation */
110#define HAVE_SCROLLWHEEL 118#define HAVE_SCROLLWHEEL
111/* define from which rotation speed [degree/sec] on the acceleration starts */ 119/* define from which rotation speed [degree/sec] on the acceleration starts */
@@ -134,12 +142,6 @@
134/** Non-simulator section **/ 142/** Non-simulator section **/
135#ifndef SIMULATOR 143#ifndef SIMULATOR
136 144
137/* define this if the backlight thread is used for fade, not for sim, needs
138 * HAVE_BACKLIGHT_BRIGHTNESS */
139#ifndef BOOTLOADER
140#define USE_BACKLIGHT_SW_FADING
141#endif
142
143/* Define this if you have an AMS AS3525*/ 145/* Define this if you have an AMS AS3525*/
144#define CONFIG_CPU AS3525 146#define CONFIG_CPU AS3525
145 147
@@ -195,13 +197,6 @@
195 197
196#endif /* SIMULATOR */ 198#endif /* SIMULATOR */
197 199
198/** Port-specific settings **/
199
200/* Main LCD backlight brightness range and defaults */
201#define MIN_BRIGHTNESS_SETTING 1
202#define MAX_BRIGHTNESS_SETTING 12
203#define DEFAULT_BRIGHTNESS_SETTING 6
204
205/* Default recording levels */ 200/* Default recording levels */
206#define DEFAULT_REC_MIC_GAIN 23 201#define DEFAULT_REC_MIC_GAIN 23
207#define DEFAULT_REC_LEFT_GAIN 23 202#define DEFAULT_REC_LEFT_GAIN 23
diff --git a/firmware/export/config-gigabeat-s.h b/firmware/export/config-gigabeat-s.h
index 93068ae441..6b993b6082 100644
--- a/firmware/export/config-gigabeat-s.h
+++ b/firmware/export/config-gigabeat-s.h
@@ -117,15 +117,14 @@
117#define MAX_BRIGHTNESS_SETTING 24 117#define MAX_BRIGHTNESS_SETTING 24
118#define DEFAULT_BRIGHTNESS_SETTING 12 118#define DEFAULT_BRIGHTNESS_SETTING 12
119 119
120/* Implementation-defined fading type with bool settings */
121#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_TARGET
120 122
121#define HAVE_HEADPHONE_DETECTION 123#define HAVE_HEADPHONE_DETECTION
122#endif /* BOOTLOADER */ 124#endif /* BOOTLOADER */
123 125
124#ifndef SIMULATOR 126#ifndef SIMULATOR
125 127
126/* Implementation-defined fading type with bool settings */
127#define USE_BACKLIGHT_CUSTOM_FADING_BOOL
128
129/* The LCD on a Gigabeat is 240x320 - it is portrait */ 128/* The LCD on a Gigabeat is 240x320 - it is portrait */
130#define HAVE_PORTRAIT_LCD 129#define HAVE_PORTRAIT_LCD
131 130
diff --git a/firmware/export/config-h100.h b/firmware/export/config-h100.h
index be718259f8..6ca2a0701e 100644
--- a/firmware/export/config-h100.h
+++ b/firmware/export/config-h100.h
@@ -74,7 +74,7 @@
74#define HAVE_BACKLIGHT 74#define HAVE_BACKLIGHT
75 75
76/* We can fade the backlight by using PWM */ 76/* We can fade the backlight by using PWM */
77#define HAVE_BACKLIGHT_PWM_FADING 77#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_PWM
78 78
79/* Define this if you have a software controlled poweroff */ 79/* Define this if you have a software controlled poweroff */
80#define HAVE_SW_POWEROFF 80#define HAVE_SW_POWEROFF
diff --git a/firmware/export/config-h120.h b/firmware/export/config-h120.h
index 4757d7708c..74074e83e0 100644
--- a/firmware/export/config-h120.h
+++ b/firmware/export/config-h120.h
@@ -69,7 +69,7 @@
69#define HAVE_BACKLIGHT 69#define HAVE_BACKLIGHT
70 70
71/* We can fade the backlight by using PWM */ 71/* We can fade the backlight by using PWM */
72#define HAVE_BACKLIGHT_PWM_FADING 72#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_PWM
73 73
74/* Define this if you have a software controlled poweroff */ 74/* Define this if you have a software controlled poweroff */
75#define HAVE_SW_POWEROFF 75#define HAVE_SW_POWEROFF
diff --git a/firmware/export/config-h300.h b/firmware/export/config-h300.h
index 05d75fc4f0..037bb26b2d 100644
--- a/firmware/export/config-h300.h
+++ b/firmware/export/config-h300.h
@@ -68,6 +68,8 @@
68/* Define this for LCD backlight available */ 68/* Define this for LCD backlight available */
69#define HAVE_BACKLIGHT 69#define HAVE_BACKLIGHT
70#define HAVE_BACKLIGHT_BRIGHTNESS 70#define HAVE_BACKLIGHT_BRIGHTNESS
71/* Which backlight fading type? */
72#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_HW_REG
71 73
72/* Define this if you have a software controlled poweroff */ 74/* Define this if you have a software controlled poweroff */
73#define HAVE_SW_POWEROFF 75#define HAVE_SW_POWEROFF
@@ -125,12 +127,6 @@
125 127
126#ifndef SIMULATOR 128#ifndef SIMULATOR
127 129
128/* define this if the backlight thread is used for fade, not for sim, needs
129 * HAVE_BACKLIGHT_BRIGHTNESS */
130#ifndef BOOTLOADER
131#define USE_BACKLIGHT_SW_FADING
132#endif
133
134/* Define this if your LCD can be enabled/disabled */ 130/* Define this if your LCD can be enabled/disabled */
135#define HAVE_LCD_ENABLE 131#define HAVE_LCD_ENABLE
136 132
diff --git a/firmware/export/config-iaudiox5.h b/firmware/export/config-iaudiox5.h
index 8b1f9086bb..27bd2c523b 100644
--- a/firmware/export/config-iaudiox5.h
+++ b/firmware/export/config-iaudiox5.h
@@ -90,6 +90,8 @@
90/* Define this for LCD backlight available */ 90/* Define this for LCD backlight available */
91#define HAVE_BACKLIGHT 91#define HAVE_BACKLIGHT
92#define HAVE_BACKLIGHT_BRIGHTNESS 92#define HAVE_BACKLIGHT_BRIGHTNESS
93/* Which backlight fading type? */
94#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_HW_REG
93 95
94/* define this if you have a disk storage, i.e. something 96/* define this if you have a disk storage, i.e. something
95 that needs spinups and can cause skips when shaked */ 97 that needs spinups and can cause skips when shaked */
@@ -127,12 +129,6 @@
127 129
128#ifndef SIMULATOR 130#ifndef SIMULATOR
129 131
130/* define this if the backlight thread is used for fade, not for sim, needs
131 * HAVE_BACKLIGHT_BRIGHTNESS */
132#ifndef BOOTLOADER
133#define USE_BACKLIGHT_SW_FADING
134#endif
135
136/* Define this if your LCD can set contrast */ 132/* Define this if your LCD can set contrast */
137#define HAVE_LCD_CONTRAST 133#define HAVE_LCD_CONTRAST
138 134
diff --git a/firmware/export/config-ipodmini.h b/firmware/export/config-ipodmini.h
index 210eb1d717..bc59ededfe 100644
--- a/firmware/export/config-ipodmini.h
+++ b/firmware/export/config-ipodmini.h
@@ -101,7 +101,7 @@
101#define HAVE_BACKLIGHT 101#define HAVE_BACKLIGHT
102 102
103/* We can fade the backlight by using PWM */ 103/* We can fade the backlight by using PWM */
104#define HAVE_BACKLIGHT_PWM_FADING 104#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_PWM
105 105
106/* Define this if you can detect headphones */ 106/* Define this if you can detect headphones */
107#define HAVE_HEADPHONE_DETECTION 107#define HAVE_HEADPHONE_DETECTION
diff --git a/firmware/export/config-ipodmini2g.h b/firmware/export/config-ipodmini2g.h
index 49630d7b3d..4775350712 100644
--- a/firmware/export/config-ipodmini2g.h
+++ b/firmware/export/config-ipodmini2g.h
@@ -101,7 +101,7 @@
101#define HAVE_BACKLIGHT 101#define HAVE_BACKLIGHT
102 102
103/* We can fade the backlight by using PWM */ 103/* We can fade the backlight by using PWM */
104#define HAVE_BACKLIGHT_PWM_FADING 104#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_PWM
105 105
106/* define this if the unit uses a scrollwheel for navigation */ 106/* define this if the unit uses a scrollwheel for navigation */
107#define HAVE_SCROLLWHEEL 107#define HAVE_SCROLLWHEEL
diff --git a/firmware/export/config-ipodnano.h b/firmware/export/config-ipodnano.h
index 8752181bb9..1d82ec4428 100644
--- a/firmware/export/config-ipodnano.h
+++ b/firmware/export/config-ipodnano.h
@@ -81,15 +81,14 @@
81/* Define this for LCD backlight available */ 81/* Define this for LCD backlight available */
82#define HAVE_BACKLIGHT 82#define HAVE_BACKLIGHT
83#define HAVE_BACKLIGHT_BRIGHTNESS 83#define HAVE_BACKLIGHT_BRIGHTNESS
84/* We can fade the backlight by using PWM */
85#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_PWM
84 86
85/* Main LCD backlight brightness range and defaults */ 87/* Main LCD backlight brightness range and defaults */
86#define MIN_BRIGHTNESS_SETTING 1 88#define MIN_BRIGHTNESS_SETTING 1
87#define MAX_BRIGHTNESS_SETTING 32 89#define MAX_BRIGHTNESS_SETTING 32
88#define DEFAULT_BRIGHTNESS_SETTING 16 90#define DEFAULT_BRIGHTNESS_SETTING 16
89 91
90/* We can fade the backlight by using PWM */
91#define HAVE_BACKLIGHT_PWM_FADING
92
93/* define this if the unit uses a scrollwheel for navigation */ 92/* define this if the unit uses a scrollwheel for navigation */
94#define HAVE_SCROLLWHEEL 93#define HAVE_SCROLLWHEEL
95/* define from which rotation speed [degree/sec] on the acceleration starts */ 94/* define from which rotation speed [degree/sec] on the acceleration starts */
diff --git a/firmware/export/config-ipodvideo.h b/firmware/export/config-ipodvideo.h
index ab974dc236..b658a9b3f8 100644
--- a/firmware/export/config-ipodvideo.h
+++ b/firmware/export/config-ipodvideo.h
@@ -86,13 +86,14 @@
86#define HAVE_BACKLIGHT 86#define HAVE_BACKLIGHT
87#define HAVE_BACKLIGHT_BRIGHTNESS 87#define HAVE_BACKLIGHT_BRIGHTNESS
88 88
89/* We can fade the backlight by using PWM */
90#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_PWM
91
89/* Main LCD backlight brightness range and defaults */ 92/* Main LCD backlight brightness range and defaults */
90#define MIN_BRIGHTNESS_SETTING 1 93#define MIN_BRIGHTNESS_SETTING 1
91#define MAX_BRIGHTNESS_SETTING 32 94#define MAX_BRIGHTNESS_SETTING 32
92#define DEFAULT_BRIGHTNESS_SETTING 16 95#define DEFAULT_BRIGHTNESS_SETTING 16
93 96
94/* We can fade the backlight by using PWM */
95#define HAVE_BACKLIGHT_PWM_FADING
96 97
97/* define this if the unit uses a scrollwheel for navigation */ 98/* define this if the unit uses a scrollwheel for navigation */
98#define HAVE_SCROLLWHEEL 99#define HAVE_SCROLLWHEEL
diff --git a/firmware/export/config-mrobe100.h b/firmware/export/config-mrobe100.h
index 4ade179c04..f2fc5cb37a 100644
--- a/firmware/export/config-mrobe100.h
+++ b/firmware/export/config-mrobe100.h
@@ -70,7 +70,7 @@
70#define HAVE_BACKLIGHT 70#define HAVE_BACKLIGHT
71 71
72/* We can fade the backlight by using PWM */ 72/* We can fade the backlight by using PWM */
73#define HAVE_BACKLIGHT_PWM_FADING 73#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_PWM
74 74
75/* Main LCD backlight brightness range and defaults */ 75/* Main LCD backlight brightness range and defaults */
76#define MIN_BRIGHTNESS_SETTING 1 76#define MIN_BRIGHTNESS_SETTING 1
diff --git a/firmware/export/config-sa9200.h b/firmware/export/config-sa9200.h
index b9fd4575bc..624befcf12 100755
--- a/firmware/export/config-sa9200.h
+++ b/firmware/export/config-sa9200.h
@@ -90,6 +90,9 @@
90#define MAX_BRIGHTNESS_SETTING 12 90#define MAX_BRIGHTNESS_SETTING 12
91#define DEFAULT_BRIGHTNESS_SETTING 6 91#define DEFAULT_BRIGHTNESS_SETTING 6
92 92
93/* Which backlight fading type? */
94#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING
95
93/* define this if you have a flash memory storage */ 96/* define this if you have a flash memory storage */
94#define HAVE_FLASH_STORAGE 97#define HAVE_FLASH_STORAGE
95 98
diff --git a/firmware/export/config.h b/firmware/export/config.h
index 7fb41d8d83..58ae66d1cd 100644
--- a/firmware/export/config.h
+++ b/firmware/export/config.h
@@ -113,6 +113,24 @@
113#define H300_REMOTE 2 113#define H300_REMOTE 2
114#define X5_REMOTE 3 114#define X5_REMOTE 3
115 115
116/* CONFIG_BACKLIGHT_FADING */
117/* No fading capabilities at all (yet) */
118#define BACKLIGHT_NO_FADING 0x0
119/* Backlight fading is controlled using a hardware PWM mechanism */
120#define BACKLIGHT_FADING_PWM 0x1
121/* Backlight is controlled using a software implementation
122 * BACKLIGHT_FADING_SW_SETTING means that backlight is turned on by only setting
123 * the brightness (i.e. no real difference between backlight_on and
124 * backlight_set_brightness)
125 * BACKLIGHT_FADING_SW_SETTING means that backlight brightness is restored
126 * "in hardware", from a hardware register upon backlight_on
127 * Both types need to have minor adjustments in the software fading code */
128#define BACKLIGHT_FADING_SW_SETTING 0x2
129#define BACKLIGHT_FADING_SW_HW_REG 0x4
130/* Backlight fading is done in a target specific way
131 * for example in hardware, but not controllable*/
132#define BACKLIGHT_FADING_TARGET 0x8
133
116/* CONFIG_CHARGING */ 134/* CONFIG_CHARGING */
117 135
118/* Generic types */ 136/* Generic types */
@@ -348,7 +366,12 @@
348#include "config_caps.h" 366#include "config_caps.h"
349 367
350/* now set any CONFIG_ defines correctly if they are not used, 368/* now set any CONFIG_ defines correctly if they are not used,
351 No need to do this on CONFIG_'s which are compulsary (e.g CONFIG_CODEC ) */ 369 No need to do this on CONFIG_'s which are compulsory (e.g CONFIG_CODEC ) */
370
371#if !defined(CONFIG_BACKLIGHT_FADING)
372#define CONFIG_BACKLIGHT_FADING BACKLIGHT_NO_FADING
373#endif
374
352#ifndef CONFIG_TUNER 375#ifndef CONFIG_TUNER
353#define CONFIG_TUNER 0 376#define CONFIG_TUNER 0
354#endif 377#endif
@@ -413,6 +436,32 @@
413#define CONFIG_STORAGE_MULTI 436#define CONFIG_STORAGE_MULTI
414#endif 437#endif
415 438
439/* deactive fading in bootloader/sim */
440#if defined(BOOTLOADER) || defined(SIMULATOR)
441#undef CONFIG_BACKLIGHT_FADING
442#define CONFIG_BACKLIGHT_FADING BACKLIGHT_NO_FADING
443#endif
444
445/* determine which setting/manual text to use,
446 * possibly overridden in target config */
447#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_PWM)
448
449#ifndef HAVE_BACKLIGHT_FADING_INT_SETTING
450#define HAVE_BACKLIGHT_FADING_INT_SETTING
451#endif
452
453#elif (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
454 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG) \
455 || (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_TARGET)
456
457/* BACKLIGHT_FADING_TARGET may the setting to use */
458#if !defined(HAVE_BACKLIGHT_FADING_BOOL_SETTING) \
459 && !defined(HAVE_BACKLIGHT_FADING_INT_SETTING)
460#define HAVE_BACKLIGHT_FADING_BOOL_SETTING
461#endif
462
463#endif /* CONFIG_BACKLIGHT_FADING */
464
416#if defined(BOOTLOADER) && defined(HAVE_ADJUSTABLE_CPU_FREQ) 465#if defined(BOOTLOADER) && defined(HAVE_ADJUSTABLE_CPU_FREQ)
417/* Bootloaders don't use CPU frequency adjustment */ 466/* Bootloaders don't use CPU frequency adjustment */
418#undef HAVE_ADJUSTABLE_CPU_FREQ 467#undef HAVE_ADJUSTABLE_CPU_FREQ
diff --git a/firmware/target/arm/as3525/backlight-e200v2-fuze.c b/firmware/target/arm/as3525/backlight-e200v2-fuze.c
index c26d3919c3..465713a1fc 100644
--- a/firmware/target/arm/as3525/backlight-e200v2-fuze.c
+++ b/firmware/target/arm/as3525/backlight-e200v2-fuze.c
@@ -39,7 +39,9 @@ void _backlight_on(void)
39#ifdef HAVE_LCD_ENABLE 39#ifdef HAVE_LCD_ENABLE
40 lcd_enable(true); /* power on lcd + visible display */ 40 lcd_enable(true); /* power on lcd + visible display */
41#endif 41#endif
42#ifndef USE_BACKLIGHT_SW_FADING 42#if (CONFIG_BACKLIGHT_FADING != BACKLIGHT_FADING_SW_SETTING) /* in bootloader/sim */
43 /* if we set the brightness to the settings value, then fading up
44 * is glitchy */
43 ascodec_write(AS3514_DCDC15, backlight_brightness); 45 ascodec_write(AS3514_DCDC15, backlight_brightness);
44#endif 46#endif
45} 47}
diff --git a/firmware/target/arm/ipod/backlight-target.h b/firmware/target/arm/ipod/backlight-target.h
index 3c4bc04521..ce1b938526 100644
--- a/firmware/target/arm/ipod/backlight-target.h
+++ b/firmware/target/arm/ipod/backlight-target.h
@@ -50,7 +50,8 @@ bool _backlight_init(void);
50void _backlight_on(void); 50void _backlight_on(void);
51void _backlight_off(void); 51void _backlight_off(void);
52 52
53#elif defined HAVE_BACKLIGHT_PWM_FADING /* Mini G1, G2 */ 53/* Mini G1, G2, Video, Nano */
54#elif (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_PWM)
54 55
55#define _backlight_init() true 56#define _backlight_init() true
56void _backlight_hw_on(void); 57void _backlight_hw_on(void);
diff --git a/firmware/target/arm/philips/sa9200/backlight-sa9200.c b/firmware/target/arm/philips/sa9200/backlight-sa9200.c
index 4221959a0d..5c967a84ea 100644
--- a/firmware/target/arm/philips/sa9200/backlight-sa9200.c
+++ b/firmware/target/arm/philips/sa9200/backlight-sa9200.c
@@ -39,15 +39,16 @@ void _backlight_on(void)
39#ifdef HAVE_LCD_ENABLE 39#ifdef HAVE_LCD_ENABLE
40 lcd_enable(true); /* power on lcd + visible display */ 40 lcd_enable(true); /* power on lcd + visible display */
41#endif 41#endif
42#ifndef USE_BACKLIGHT_SW_FADING 42#if (CONFIG_BACKLIGHT_FADING != BACKLIGHT_FADING_SW_SETTING) /* in bootloader/sim */
43 /* that part ain't useful when fading */ 43 /* if we set the brightness to the settings value, then fading up
44 * is glitchy */
44 _backlight_set_brightness(backlight_brightness); 45 _backlight_set_brightness(backlight_brightness);
45#endif 46#endif
46} 47}
47 48
48void _backlight_off(void) 49void _backlight_off(void)
49{ 50{
50 ascodec_write(AS3514_DCDC15, 0x0); 51 _backlight_set_brightness(0);
51#ifdef HAVE_LCD_ENABLE 52#ifdef HAVE_LCD_ENABLE
52 lcd_enable(false); /* power off visible display */ 53 lcd_enable(false); /* power off visible display */
53#endif 54#endif
diff --git a/firmware/target/arm/sandisk/backlight-c200_e200.c b/firmware/target/arm/sandisk/backlight-c200_e200.c
index 67e0cddac9..5a2e98a278 100644
--- a/firmware/target/arm/sandisk/backlight-c200_e200.c
+++ b/firmware/target/arm/sandisk/backlight-c200_e200.c
@@ -39,15 +39,16 @@ void _backlight_on(void)
39#ifdef HAVE_LCD_ENABLE 39#ifdef HAVE_LCD_ENABLE
40 lcd_enable(true); /* power on lcd + visible display */ 40 lcd_enable(true); /* power on lcd + visible display */
41#endif 41#endif
42#ifndef USE_BACKLIGHT_SW_FADING 42#if (CONFIG_BACKLIGHT_FADING != BACKLIGHT_FADING_SW_SETTING) /* in bootloader/sim */
43 /* that part ain't useful when fading */ 43 /* if we set the brightness to the settings value, then fading up
44 * is glitchy */
44 _backlight_set_brightness(backlight_brightness); 45 _backlight_set_brightness(backlight_brightness);
45#endif 46#endif
46} 47}
47 48
48void _backlight_off(void) 49void _backlight_off(void)
49{ 50{
50 ascodec_write(AS3514_DCDC15, 0x0); 51 _backlight_set_brightness(0);
51#ifdef HAVE_LCD_ENABLE 52#ifdef HAVE_LCD_ENABLE
52 lcd_enable(false); /* power off visible display */ 53 lcd_enable(false); /* power off visible display */
53#endif 54#endif
diff --git a/manual/configure_rockbox/display_options.tex b/manual/configure_rockbox/display_options.tex
index 048d9b70b6..c5a76e9f0f 100644
--- a/manual/configure_rockbox/display_options.tex
+++ b/manual/configure_rockbox/display_options.tex
@@ -28,7 +28,7 @@
28 beginning so that the display can be read to see song information. The 28 beginning so that the display can be read to see song information. The
29 amount of time is determined by the value of the backlight timeout 29 amount of time is determined by the value of the backlight timeout
30 setting, but is no less than 5 seconds. 30 setting, but is no less than 5 seconds.
31 \opt{backlight_fade_pwm}{ 31 \opt{backlight_fade_int}{
32 \item[Backlight Fade In:] 32 \item[Backlight Fade In:]
33 The amount of time that the backlight will take to fade from off to on 33 The amount of time that the backlight will take to fade from off to on
34 after a button is pressed. If set to \setting{Off} the backlight will 34 after a button is pressed. If set to \setting{Off} the backlight will
@@ -41,14 +41,14 @@
41 fade out. Other valid values: \setting{500ms}, \setting{1s}, 41 fade out. Other valid values: \setting{500ms}, \setting{1s},
42 \setting{2s}, \setting{3s}, \setting{4s}, \setting{5s} or \setting{10s}. 42 \setting{2s}, \setting{3s}, \setting{4s}, \setting{5s} or \setting{10s}.
43 } 43 }
44 \opt{backlight_fade_sw}{ 44 \opt{backlight_fade_bool}{
45 \item[Backlight Fade In:] 45 \item[Backlight Fade In:]
46 This options turns on smooth backlight fading when the backlight is 46 This options turns on smooth backlight fading when the backlight is
47 activated. The fading time is dependent on the brightness level you 47 turning on. The fading time may dependent on the brightness level you
48 have chosen. If it is turned off, the backlight will turn on immediately. 48 have chosen. If it is turned off, the backlight will turn on immediately.
49 \item[Backlight Fade Out:] 49 \item[Backlight Fade Out:]
50 This options turns on smooth backlight fading when the backlight is 50 This options turns on smooth backlight fading when the backlight is
51 deactivated. The fading time is dependent on the brightness level you 51 turning off. The fading time may dependent on the brightness level you
52 have chosen. If it is turned off, the backlight will turn off immediately. 52 have chosen. If it is turned off, the backlight will turn off immediately.
53 } 53 }
54 \item[First Keypress Enables Backlight Only:] 54 \item[First Keypress Enables Backlight Only:]