changeset 72:7bf39f5e834d

backlight control on Luna: switch PWL instead of LEDB This change is preliminary toward upcoming rework of backlight control logic in our UI firmware. LEDB does not exist on Tango-based platforms (it is not brought out on Tango modules), thus turning it on and off produces absolutely no effect beyond making L1 disable deep sleep when LEDB is turned on. However, both iWOW DSK and our upcoming FC Caramel2 boards have a PWL LED, so let's switch that LED on and off to indicate the state of the UI firmware's backlight control. Note that we are NOT switching the actual Luna LCD backlight here, even though it is trivially controlled with a GPIO. The reason for this seemingly strange choice is that we don't want to turn this development board LCD backlight off until we bring the higher-level backlight control logic up to par, including new logic to "swallow" the first keypress that turns on the darkened LCD.
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 24 Oct 2020 07:39:54 +0000
parents 1876b5f8d922
children aee006f1d275
files src/condat/com/src/driver/light.c
diffstat 1 files changed, 26 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/condat/com/src/driver/light.c	Fri Oct 23 06:08:25 2020 +0000
+++ b/src/condat/com/src/driver/light.c	Sat Oct 24 07:39:54 2020 +0000
@@ -56,7 +56,9 @@
 
 #endif
 
+#include "main/sys_types.h"
 #include "fc-target.h"
+#include "armio.h"
 
 /*==== EXPORT =====================================================*/
 
@@ -97,6 +99,11 @@
 {
   backlight_status = LIGHT_STATUS_OFF;
 
+#ifdef CONFIG_TARGET_LUNA
+  /* PWL module clock enable */
+  *(volatile SYS_UWORD8 *)0xFFFE8001 = 0x01;
+#endif
+
   return DRV_OK;
 }
 
@@ -142,15 +149,14 @@
     {
       case LIGHT_STATUS_OFF:
         light_setBacklightOff();
-//  Apr 26, 2005   REF : CRR 30627 xpradipg
-#ifndef FF_MMI_SERVICES_MIGRATION       
+/* ancient code for C-Sample and earlier removed in FreeCalypso */
+#if 0
         LT_Disable ();
 #endif        
         break;
       default:
         light_setBacklightOn();
-//  Apr 26, 2005   REF : CRR 30627 xpradipg
-#ifndef FF_MMI_SERVICES_MIGRATION
+#if 0
         LT_Enable ();
         LT_Level (255);
 #endif
@@ -254,12 +260,15 @@
 {
     if (backLightState == BACKLIGHT_OFF)
     {
-      #ifdef CONFIG_TARGET_C139
-        AI_SetBit(1);
+      #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
       #endif
-      //#ifdef  DSAMPLE_COLOUR
-        lls_switch_on(LLS_BACKLIGHT); //Switch backlight on 
-      //#endif
     }
     backLightState = BACKLIGHT_ON;
 }
@@ -280,12 +289,15 @@
        (backLightState == BACKLIGHT_IDLE1))
     {
       backLightState = BACKLIGHT_OFF;
-      #ifdef CONFIG_TARGET_C139
-        AI_ResetBit(1);
+      #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
       #endif
-      //#ifdef  DSAMPLE_COLOUR
-        lls_switch_off(LLS_BACKLIGHT); //Switch backlight on    
-      //#endif
     }
 }
 /*******************************************************************************