Index: apps/settings.c =================================================================== --- apps/settings.c (Revision 19610) +++ apps/settings.c (Arbeitskopie) @@ -772,8 +772,8 @@ backlight_set_timeout_plugged(global_settings.backlight_timeout_plugged); #endif #if (defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR)) \ - || defined(USE_BACKLIGHT_SW_FADING) \ - || defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL) + || defined(HAVE_BACKLIGHT_SW_FADING) \ + || defined(HAVE_BACKLIGHT_CUSTOM_FADING_BOOL) backlight_set_fade_in(global_settings.backlight_fade_in); backlight_set_fade_out(global_settings.backlight_fade_out); #endif Index: apps/settings.h =================================================================== --- apps/settings.h (Revision 19610) +++ apps/settings.h (Arbeitskopie) @@ -431,8 +431,8 @@ #if defined(HAVE_BACKLIGHT_PWM_FADING) int backlight_fade_in; /* backlight fade in timing: 0..3 */ int backlight_fade_out; /* backlight fade in timing: 0..7 */ -#elif defined(USE_BACKLIGHT_SW_FADING) \ - || defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL) +#elif defined(HAVE_BACKLIGHT_SW_FADING) \ + || defined(HAVE_BACKLIGHT_CUSTOM_FADING_BOOL) bool backlight_fade_in; bool backlight_fade_out; #endif Index: apps/menus/display_menu.c =================================================================== --- apps/menus/display_menu.c (Revision 19610) +++ apps/menus/display_menu.c (Arbeitskopie) @@ -92,8 +92,8 @@ #endif MENUITEM_SETTING(caption_backlight, &global_settings.caption_backlight, NULL); #if (defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR)) || \ - defined(USE_BACKLIGHT_SW_FADING) || \ - defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL) + defined(HAVE_BACKLIGHT_SW_FADING) || \ + defined(HAVE_BACKLIGHT_CUSTOM_FADING_BOOL) MENUITEM_SETTING(backlight_fade_in, &global_settings.backlight_fade_in, NULL); MENUITEM_SETTING(backlight_fade_out, &global_settings.backlight_fade_out, NULL); #endif @@ -133,8 +133,8 @@ # endif ,&caption_backlight #if (defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR)) || \ - defined(USE_BACKLIGHT_SW_FADING) || \ - defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL) + defined(HAVE_BACKLIGHT_SW_FADING) || \ + defined(HAVE_BACKLIGHT_CUSTOM_FADING_BOOL) ,&backlight_fade_in, &backlight_fade_out #endif ,&bl_filter_first_keypress Index: apps/settings_list.c =================================================================== --- apps/settings_list.c (Revision 19610) +++ apps/settings_list.c (Arbeitskopie) @@ -688,8 +688,8 @@ UNIT_MS, formatter_unit_0_is_off, getlang_unit_0_is_off, backlight_set_fade_out, 10, 0,100,200,300,500,1000,2000,3000,5000,10000), -#elif defined(USE_BACKLIGHT_SW_FADING) \ - || defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL) +#elif defined(HAVE_BACKLIGHT_SW_FADING) \ + || defined(HAVE_BACKLIGHT_CUSTOM_FADING_BOOL) OFFON_SETTING(0, backlight_fade_in, LANG_BACKLIGHT_FADE_IN, true, "backlight fade in", backlight_set_fade_in), OFFON_SETTING(0, backlight_fade_out, LANG_BACKLIGHT_FADE_OUT, Index: apps/features.txt =================================================================== --- apps/features.txt (Revision 19610) +++ apps/features.txt (Arbeitskopie) @@ -22,9 +22,9 @@ #if defined(HAVE_BACKLIGHT_PWM_FADING) backlight_fade_pwm -#elif defined(USE_BACKLIGHT_SW_FADING) +#elif defined(HAVE_BACKLIGHT_SW_FADING) backlight_fade_sw -#elif defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL) +#elif defined(HAVE_BACKLIGHT_CUSTOM_FADING_BOOL) backlight_fade_custom_bool #endif Index: firmware/export/config-c200.h =================================================================== --- firmware/export/config-c200.h (Revision 19610) +++ firmware/export/config-c200.h (Arbeitskopie) @@ -110,6 +110,8 @@ /* Define this for LCD backlight available */ #define HAVE_BACKLIGHT #define HAVE_BACKLIGHT_BRIGHTNESS +/* this targets gets brightness from our settings after backlight_on */ +#define BACKLIGHT_ON_TYPE BACKLIGHT_ON_SETTING /* define this if you have a flash memory storage */ #define HAVE_FLASH_STORAGE @@ -140,7 +142,7 @@ /* define this if the backlight thread is used for fade, not for sim, needs * HAVE_BACKLIGHT_BRIGHTNESS */ #ifndef BOOTLOADER -#define USE_BACKLIGHT_SW_FADING +#define HAVE_BACKLIGHT_SW_FADING #endif /* Define this if you have a PortalPlayer PP5024 */ Index: firmware/export/config-e200.h =================================================================== --- firmware/export/config-e200.h (Revision 19610) +++ firmware/export/config-e200.h (Arbeitskopie) @@ -100,6 +100,8 @@ /* Define this for LCD backlight available */ #define HAVE_BACKLIGHT #define HAVE_BACKLIGHT_BRIGHTNESS +/* this targets gets brightness from our settings after backlight_on */ +#define BACKLIGHT_ON_TYPE BACKLIGHT_ON_SETTING /* define this if the unit uses a scrollwheel for navigation */ #define HAVE_SCROLLWHEEL @@ -137,7 +139,7 @@ /* define this if the backlight thread is used for fade, not for sim, needs * HAVE_BACKLIGHT_BRIGHTNESS */ #ifndef BOOTLOADER -#define USE_BACKLIGHT_SW_FADING +#define HAVE_BACKLIGHT_SW_FADING #endif /* Define this if you have a PortalPlayer PP5024 */ Index: firmware/export/backlight-thread-fading.h =================================================================== --- firmware/export/backlight-thread-fading.h (Revision 19610) +++ firmware/export/backlight-thread-fading.h (Arbeitskopie) @@ -7,7 +7,7 @@ * \/ \/ \/ \/ \/ * $Id$ * - * Copyright (C) 2007 by Will Robertson + * Copyright (C) 2008 by Thomas Martitz * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -24,12 +24,12 @@ #include "config.h" -#ifdef USE_BACKLIGHT_SW_FADING +#ifdef HAVE_BACKLIGHT_SW_FADING -/* delay supposed to be MAX_BRIGHTNESS_SETTING*2 rounded to the next multiple - * of 5, however not more than 40 */ -#define _FADE_DELAY (((MAX_BRIGHTNESS_SETTING*2+4)/5)*5) -#define FADE_DELAY (HZ/(MIN(_FADE_DELAY, 40))) +/* delay divider supposed to be MAX_BRIGHTNESS_SETTING*2 rounded to the next + * multiple of 5, however not more than 40 */ +#define FADE_DEVIDER (((MAX_BRIGHTNESS_SETTING*2+4)/5)*5) +#define FADE_DELAY (HZ/(MIN(FADE_DEVIDER, 40))) void _backlight_fade_update_state(int brightness); bool _backlight_fade_step(int direction); @@ -41,6 +41,6 @@ FADING_UP, FADING_DOWN, }; -#endif /* USE_BACKLIGHT_SW_FADING */ +#endif /* HAVE_BACKLIGHT_SW_FADING */ #endif /* _BACKLIGHT_THREAD_FADING_ */ Index: firmware/export/backlight.h =================================================================== --- firmware/export/backlight.h (Revision 19610) +++ firmware/export/backlight.h (Arbeitskopie) @@ -37,9 +37,8 @@ #if defined(HAVE_BACKLIGHT_PWM_FADING) void backlight_set_fade_in(int value); void backlight_set_fade_out(int value); -#endif -#if defined(USE_BACKLIGHT_SW_FADING) \ - || defined(USE_BACKLIGHT_CUSTOM_FADING_BOOL) +#elif defined(HAVE_BACKLIGHT_SW_FADING) \ + || defined(HAVE_BACKLIGHT_CUSTOM_FADING_BOOL) void backlight_set_fade_in(bool value); void backlight_set_fade_out(bool value); #endif Index: firmware/export/config-c200v2.h =================================================================== --- firmware/export/config-c200v2.h (Revision 19610) +++ firmware/export/config-c200v2.h (Arbeitskopie) @@ -114,6 +114,8 @@ /* Define this for LCD backlight available */ #define HAVE_BACKLIGHT #define HAVE_BACKLIGHT_BRIGHTNESS +/* this targets gets brightness from our settings after backlight_on */ +#define BACKLIGHT_ON_TYPE BACKLIGHT_ON_SETTING /* define this if you have a flash memory storage */ #define HAVE_FLASH_STORAGE @@ -139,7 +141,7 @@ /* define this if the backlight thread is used for fade, not for sim, needs * HAVE_BACKLIGHT_BRIGHTNESS */ #ifndef BOOTLOADER -#define USE_BACKLIGHT_SW_FADING +#define HAVE_BACKLIGHT_SW_FADING #endif /* Define this if you have a PortalPlayer PP5024 */ Index: firmware/export/config.h =================================================================== --- firmware/export/config.h (Revision 19610) +++ firmware/export/config.h (Arbeitskopie) @@ -113,6 +113,18 @@ #define H300_REMOTE 2 #define X5_REMOTE 3 +/* BACKLIGHT_ON_TYPE */ +/* defines whether a target gets the brightness from a hardware register + * or from our global settings after backlight_on + * for BACKLIGHT_ON_HARDWARE needs MIN_BRIGHTNESS_SETTING to be written into the + * register to keep sw fading up glitch free, + * for BACKLIGHT_ON_SETTING disabling setting the brightness in backlight_on + * is needed to keep sw fading up glitch free + * + * currently only interesting for targets with HAVE_BACKLIGHT_SW_FADING */ +#define BACKLIGHT_ON_HARDWARE 1 +#define BACKLIGHT_ON_SETTING 2 + /* CONFIG_CHARGING */ /* Generic types */ Index: firmware/export/config-sa9200.h =================================================================== --- firmware/export/config-sa9200.h (Revision 19610) +++ firmware/export/config-sa9200.h (Arbeitskopie) @@ -84,6 +84,8 @@ /* Define this for LCD backlight available */ #define HAVE_BACKLIGHT #define HAVE_BACKLIGHT_BRIGHTNESS +/* this targets gets brightness from our settings after backlight_on */ +#define BACKLIGHT_ON_TYPE BACKLIGHT_ON_SETTING /* Main LCD backlight brightness range and defaults */ #define MIN_BRIGHTNESS_SETTING 1 Index: firmware/export/config-h300.h =================================================================== --- firmware/export/config-h300.h (Revision 19610) +++ firmware/export/config-h300.h (Arbeitskopie) @@ -68,6 +68,8 @@ /* Define this for LCD backlight available */ #define HAVE_BACKLIGHT #define HAVE_BACKLIGHT_BRIGHTNESS +/* this target gets the brightness level from hardware after backlight_on */ +#define BACKLIGHT_ON_TYPE BACKLIGHT_ON_HARDWARE /* Define this if you have a software controlled poweroff */ #define HAVE_SW_POWEROFF @@ -128,7 +130,7 @@ /* define this if the backlight thread is used for fade, not for sim, needs * HAVE_BACKLIGHT_BRIGHTNESS */ #ifndef BOOTLOADER -#define USE_BACKLIGHT_SW_FADING +#define HAVE_BACKLIGHT_SW_FADING #endif /* Define this if your LCD can be enabled/disabled */ Index: firmware/export/config-iaudiox5.h =================================================================== --- firmware/export/config-iaudiox5.h (Revision 19610) +++ firmware/export/config-iaudiox5.h (Arbeitskopie) @@ -90,6 +90,8 @@ /* Define this for LCD backlight available */ #define HAVE_BACKLIGHT #define HAVE_BACKLIGHT_BRIGHTNESS +/* this target gets the brightness level from hardware after backlight_on */ +#define BACKLIGHT_ON_TYPE BACKLIGHT_ON_HARDWARE /* define this if you have a disk storage, i.e. something that needs spinups and can cause skips when shaked */ @@ -130,7 +132,7 @@ /* define this if the backlight thread is used for fade, not for sim, needs * HAVE_BACKLIGHT_BRIGHTNESS */ #ifndef BOOTLOADER -#define USE_BACKLIGHT_SW_FADING +#define HAVE_BACKLIGHT_SW_FADING #endif /* Define this if your LCD can set contrast */ Index: firmware/export/config-gigabeat-s.h =================================================================== --- firmware/export/config-gigabeat-s.h (Revision 19610) +++ firmware/export/config-gigabeat-s.h (Arbeitskopie) @@ -111,7 +111,7 @@ #ifndef SIMULATOR /* Implementation-defined fading type with bool settings */ -#define USE_BACKLIGHT_CUSTOM_FADING_BOOL +#define HAVE_BACKLIGHT_CUSTOM_FADING_BOOL /* The LCD on a Gigabeat is 240x320 - it is portrait */ #define HAVE_PORTRAIT_LCD Index: firmware/export/config-cowond2.h =================================================================== --- firmware/export/config-cowond2.h (Revision 19610) +++ firmware/export/config-cowond2.h (Arbeitskopie) @@ -111,6 +111,8 @@ /* Enable LCD brightness control */ #define HAVE_BACKLIGHT_BRIGHTNESS +/* this target gets the brightness level from hardware after backlight_on */ +#define BACKLIGHT_ON_TYPE BACKLIGHT_ON_HARDWARE /* Main LCD backlight brightness range and defaults */ #define MIN_BRIGHTNESS_SETTING 1 @@ -133,7 +135,7 @@ /* define this if the backlight thread is used for fade, not for sim, needs * HAVE_BACKLIGHT_BRIGHTNESS */ #ifndef BOOTLOADER -#define USE_BACKLIGHT_SW_FADING +#define HAVE_BACKLIGHT_SW_FADING #endif /* Define this if you have a TCC7801 */ Index: firmware/backlight-thread-fading.c =================================================================== --- firmware/backlight-thread-fading.c (Revision 19610) +++ firmware/backlight-thread-fading.c (Arbeitskopie) @@ -30,7 +30,7 @@ /* To adapt a target do: * - make sure _backlight_on doesn't set the brightness to something other than * the previous value (lowest brightness in most cases) - * - #define USE_BACKLIGHT_SW_FADING in config-.h + * - #define HAVE_BACKLIGHT_SW_FADING in config-.h */ /* can be MIN_BRIGHTNESS_SETTING-1 */ Index: firmware/backlight.c =================================================================== --- firmware/backlight.c (Revision 19610) +++ firmware/backlight.c (Arbeitskopie) @@ -52,7 +52,7 @@ int backlight_brightness = DEFAULT_BRIGHTNESS_SETTING; #endif -#ifdef USE_BACKLIGHT_SW_FADING +#ifdef HAVE_BACKLIGHT_SW_FADING #include "backlight-thread-fading.h" #endif #ifdef SIMULATOR @@ -230,7 +230,7 @@ } #endif /* HAVE_LCD_SLEEP */ -#ifdef USE_BACKLIGHT_SW_FADING +#ifdef HAVE_BACKLIGHT_SW_FADING static int backlight_fading_type = (FADING_UP|FADING_DOWN); static int backlight_fading_state = NOT_FADING; #endif @@ -412,7 +412,7 @@ } #endif /* defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR) */ -#ifdef USE_BACKLIGHT_SW_FADING +#ifdef HAVE_BACKLIGHT_SW_FADING void backlight_set_fade_out(bool value) { @@ -461,16 +461,14 @@ backlight_fading_state = NOT_FADING; _backlight_fade_update_state(MIN_BRIGHTNESS_SETTING-1); _backlight_off(); - /* h300/x5/d2 go to the last known brightness level at backight_on(),which - * should be the lowest level to keep fading up glitch free - * sansa e200/c200 make the backlight on only by setting the brightness, - * so this step would be noticeable */ -#if !defined(SANSA_E200) && !defined(SANSA_C200) +#if (BACKLIGHT_ON_TYPE == BACKLIGHT_ON_HARDWARE) + /* write the lowest brightness level to the hardware so that + * fading up is glitch free */ _backlight_set_brightness(MIN_BRIGHTNESS_SETTING); #endif } } -#endif /* USE_BACKLIGHT_SW_FADING */ +#endif /* HAVE_BACKLIGHT_SW_FADING */ /* Update state of backlight according to timeout setting */ static void backlight_update_state(void) @@ -498,7 +496,7 @@ if (UNLIKELY(backlight_timeout < 0)) { backlight_timer = 0; /* Disable the timeout */ -#ifdef USE_BACKLIGHT_SW_FADING +#ifdef HAVE_BACKLIGHT_SW_FADING backlight_set_up_fade_down(); /* necessary step to issue fading down when the setting is selected */ queue_post(&backlight_queue, SYS_TIMEOUT, 0); @@ -509,7 +507,7 @@ else { backlight_timer = backlight_timeout; -#if defined(USE_BACKLIGHT_SW_FADING) +#if defined(HAVE_BACKLIGHT_SW_FADING) backlight_set_up_fade_up(); #else _backlight_on(); @@ -555,7 +553,7 @@ while(1) { -#if defined(USE_BACKLIGHT_SW_FADING) +#if defined(HAVE_BACKLIGHT_SW_FADING) if (backlight_fading_state) queue_wait_w_tmo(&backlight_queue, &ev, FADE_DELAY); else @@ -643,11 +641,11 @@ case BACKLIGHT_OFF: backlight_timer = 0; /* Disable the timeout */ -#ifndef USE_BACKLIGHT_SW_FADING +#ifndef HAVE_BACKLIGHT_SW_FADING _backlight_off(); #else backlight_set_up_fade_down(); -#endif /* USE_BACKLIGHT_SW_FADING */ +#endif /* HAVE_BACKLIGHT_SW_FADING */ break; #ifdef HAVE_LCD_SLEEP case LCD_SLEEP: @@ -677,12 +675,12 @@ remote_backlight_update_state(); #endif break; -#if defined(USE_BACKLIGHT_SW_FADING) +#if defined(HAVE_BACKLIGHT_SW_FADING) case SYS_TIMEOUT: if ((_backlight_fade_step(backlight_fading_state))) backlight_fading_state = NOT_FADING; break; -#endif /* USE_BACKLIGHT_SW_FADING */ +#endif /* HAVE_BACKLIGHT_SW_FADING */ } } /* end while */ } @@ -922,7 +920,7 @@ backlight_brightness = val; _backlight_set_brightness(val); -#ifdef USE_BACKLIGHT_SW_FADING +#ifdef HAVE_BACKLIGHT_SW_FADING /* receive backlight brightness */ _backlight_fade_update_state(val); #endif Index: firmware/SOURCES =================================================================== --- firmware/SOURCES (Revision 19610) +++ firmware/SOURCES (Arbeitskopie) @@ -96,9 +96,9 @@ #endif /* LCD_REMOTE_DEPTH */ #endif /* HAVE_REMOTE_LCD */ -#ifdef USE_BACKLIGHT_SW_FADING +#ifdef HAVE_BACKLIGHT_SW_FADING backlight-thread-fading.c -#endif /* USE_BACKLIGHT_SW_FADING */ +#endif /* HAVE_BACKLIGHT_SW_FADING */ /* Misc. */ drivers/led.c Index: firmware/target/arm/sandisk/backlight-c200_e200.c =================================================================== --- firmware/target/arm/sandisk/backlight-c200_e200.c (Revision 19610) +++ firmware/target/arm/sandisk/backlight-c200_e200.c (Arbeitskopie) @@ -39,15 +39,17 @@ #ifdef HAVE_LCD_ENABLE lcd_enable(true); /* power on lcd + visible display */ #endif -#ifndef USE_BACKLIGHT_SW_FADING - /* that part ain't useful when fading */ +#if !defined(HAVE_BACKLIGHT_SW_FADING) \ + && (BACKLIGHT_ON_TYPE == BACKLIGHT_ON_SETTING) + /* if we set the brightness to the settings value, then fading up + * is glitchy */ _backlight_set_brightness(backlight_brightness); #endif } void _backlight_off(void) { - ascodec_write(AS3514_DCDC15, 0x0); + _backlight_set_brightness(0); #ifdef HAVE_LCD_ENABLE lcd_enable(false); /* power off visible display */ #endif Index: firmware/target/arm/philips/sa9200/backlight-sa9200.c =================================================================== --- firmware/target/arm/philips/sa9200/backlight-sa9200.c (Revision 19610) +++ firmware/target/arm/philips/sa9200/backlight-sa9200.c (Arbeitskopie) @@ -39,15 +39,17 @@ #ifdef HAVE_LCD_ENABLE lcd_enable(true); /* power on lcd + visible display */ #endif -#ifndef USE_BACKLIGHT_SW_FADING - /* that part ain't useful when fading */ +#ifndef HAVE_BACKLIGHT_SW_FADING \ + && (BACKLIGHT_ON_TYPE == BACKLIGHT_ON_SETTING) + /* if we set the brightness to the settings value, then fading up + * is glitchy */ _backlight_set_brightness(backlight_brightness); #endif } void _backlight_off(void) { - ascodec_write(AS3514_DCDC15, 0x0); + _backlight_set_brightness(0); #ifdef HAVE_LCD_ENABLE lcd_enable(false); /* power off visible display */ #endif