# HG changeset patch # User Mychaela Falconia # Date 1603572244 0 # Node ID 8697f358f505064925da0dcc510740ea3801e80f # Parent 03793f41f9bceee9e616870e916b700f5f866e5f backlight rework: Condat light driver accepts levels The present change is another intermediate step on the path toward new FreeCalypso backlight handling. At this intermediate step the Condat light driver accepts 0-255 backlight levels driven by MFW, and puts them out on PWL on Luna development boards. At the same time on C139 it is now possible to turn on the display backlight with or without the keypad bl - the lsb of the 0-255 backlight level controls the keypad bl. MFW presently drives only 0 and 255 backlight levels, thus there is no visible behavioral change yet - but the plan for subsequent stages of this backlight rework is to add a dimmed backlight state (no keypad bl on C139) during active calls. diff -r 03793f41f9bc -r 8697f358f505 src/condat/com/include/light.h --- a/src/condat/com/include/light.h Sat Oct 24 09:12:01 2020 +0000 +++ b/src/condat/com/include/light.h Sat Oct 24 20:44:04 2020 +0000 @@ -57,8 +57,9 @@ EXTERN UBYTE light_SetStatus (UBYTE in_DeviceID, UBYTE in_NewStatus); EXTERN UBYTE light_GetStatus (UBYTE in_DeviceID, UBYTE * in_StatusPtr); -void light_setBacklightOn( void ); -void light_setBacklightIdle( void ); -void light_setBacklightOff( void ); +void light_setBacklightOn (void); +void light_setBacklightOnLevel (UBYTE level); +void light_setBacklightIdle (void); +void light_setBacklightOff (void); #endif diff -r 03793f41f9bc -r 8697f358f505 src/condat/com/src/driver/light.c --- a/src/condat/com/src/driver/light.c Sat Oct 24 09:12:01 2020 +0000 +++ b/src/condat/com/src/driver/light.c Sat Oct 24 20:44:04 2020 +0000 @@ -59,25 +59,12 @@ #include "main/sys_types.h" #include "fc-target.h" #include "armio.h" +#include "lls/lls_api.h" /*==== EXPORT =====================================================*/ /*==== VARIABLES ==================================================*/ UBYTE backlight_status = LIGHT_STATUS_OFF; -/*==== FUNCTIONS ==================================================*/ -#if defined (_TMS470) -#ifndef FF_MMI_SERVICES_MIGRATION -EXTERN void LT_Disable (void); -EXTERN void LT_Enable (void); -EXTERN void LT_Level (UBYTE level); -#endif -#else - -LOCAL void LT_Disable (void); -LOCAL void LT_Enable (void); -LOCAL void LT_Level (UBYTE level); - -#endif /*==== CONSTANTS ==================================================*/ /* @@ -149,17 +136,9 @@ { case LIGHT_STATUS_OFF: light_setBacklightOff(); -/* ancient code for C-Sample and earlier removed in FreeCalypso */ -#if 0 - LT_Disable (); -#endif break; default: - light_setBacklightOn(); -#if 0 - LT_Enable (); - LT_Level (255); -#endif + light_setBacklightOnLevel(backlight_status); break; } return DRV_OK; @@ -196,53 +175,41 @@ } -#if defined (WIN32) - -LOCAL void LT_Disable (void) -{ -} - -LOCAL void LT_Enable (void) -{ -} - -LOCAL void LT_Level (UBYTE level) -{ -} - - -#endif - /******************************************************************************* -Code below added for D-sample backlight +Transitional FreeCalypso backlight driver *******************************************************************************/ -//June 03, 2005 REF: GSM-ENH-31636 xpradipg -//CRR 28825: xpradipg - 11 Feb 2005 -#if ((BOARD == 40) || (BOARD == 41) || (BOARD == 43) || (BOARD == 70) || (BOARD == 71)) -#define DSAMPLE_COLOUR -#include "lls/lls_api.h" -#else -/* Procedure stiubs added instead of disabling calls to the procedures. */ -/* So we will get duplicate procedures if the actual LLS procedures are present */ -#define LLS_BACKLIGHT 0x02 -int lls_switch_off(unsigned char equipment) + +static UBYTE keypad_bl_state; + +static void keypad_bl_on(void) { + if (!keypad_bl_state) { + #if defined(CONFIG_TARGET_C139) || defined(CONFIG_TARGET_PIRELLI) + lls_switch_on(LLS_BACKLIGHT); + #endif + keypad_bl_state = 1; + } } -int lls_switch_on(unsigned char equipment) +static void keypad_bl_off(void) { + if (keypad_bl_state) { + #if defined(CONFIG_TARGET_C139) || defined(CONFIG_TARGET_PIRELLI) + lls_switch_off(LLS_BACKLIGHT); + #endif + keypad_bl_state = 0; + } } -#endif - enum { BACKLIGHT_OFF, BACKLIGHT_ON, BACKLIGHT_IDLE1 }; -UBYTE backLightState= BACKLIGHT_OFF; +UBYTE backLightState = BACKLIGHT_OFF; + /******************************************************************************* $Function: setBacklightOn @@ -256,22 +223,30 @@ *******************************************************************************/ -void light_setBacklightOn( void ) +void light_setBacklightOnLevel (UBYTE level) { if (backLightState == BACKLIGHT_OFF) { #ifdef CONFIG_TARGET_LUNA /* turn on PWL */ - *(volatile SYS_UWORD8 *)0xFFFE8000 = 255; - #else - #ifdef CONFIG_TARGET_C139 - AI_SetBit(1); - #endif - lls_switch_on(LLS_BACKLIGHT); //Switch backlight on + *(volatile SYS_UWORD8 *)0xFFFE8000 = level; + #elif defined(CONFIG_TARGET_C139) + AI_SetBit(1); #endif + if (level & 1) + keypad_bl_on(); + else + keypad_bl_off(); } backLightState = BACKLIGHT_ON; } + +/* backward compatibility function */ +void light_setBacklightOn( void ) +{ + light_setBacklightOnLevel(255); +} + /******************************************************************************* $Function: setBacklightOff @@ -292,14 +267,13 @@ #ifdef CONFIG_TARGET_LUNA /* turn off PWL */ *(volatile SYS_UWORD8 *)0xFFFE8000 = 0; - #else - #ifdef CONFIG_TARGET_C139 - AI_ResetBit(1); - #endif - lls_switch_off(LLS_BACKLIGHT); //Switch backlight off + #elif defined(CONFIG_TARGET_C139) + AI_ResetBit(1); #endif + keypad_bl_off(); } } + /******************************************************************************* $Function: setBacklightIdle @@ -323,4 +297,3 @@ light_setBacklightOff(); } } -