changeset 129:419f638cf03b

l1_pwmgr.c: l1s_sleep_manager(): logic apparently reconstructed, but the compiler's register allocation still does not match
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Sat, 14 May 2016 06:28:44 +0000
parents a2f9560c1cf1
children c4b922f2b593
files chipsetsw/layer1/cfile/l1_pwmgr.c
diffstat 1 files changed, 13 insertions(+), 163 deletions(-) [+]
line wrap: on
line diff
--- a/chipsetsw/layer1/cfile/l1_pwmgr.c	Fri May 13 19:18:35 2016 +0000
+++ b/chipsetsw/layer1/cfile/l1_pwmgr.c	Sat May 14 06:28:44 2016 +0000
@@ -775,26 +775,12 @@
     UWORD32 sleep_time = l1s.actual_time.fn;
   #endif
 
-#if (GSM_IDLE_RAM != 0)
-    T_L1S_GSM_IDLE_INTRAM * gsm_idle_ram_ctl;
-    BOOL flag_traffic_controller_state = 0;
-    gsm_idle_ram_ctl = &(l1s.gsm_idle_ram_ctl);
-
-    #if (AUDIO_TASK == 1)
-        gsm_idle_ram_ctl->l1s_full_exec = l1s.l1_audio_it_com;
-    #endif
-
-    if (gsm_idle_ram_ctl->l1s_full_exec == TRUE)
-      return;
-#endif
-
   if (l1_config.pwr_mngt == PWR_MNGT)
   {
 // Power management is enabled
-    WORD32   min_time, OSload, HWtimer,wake_up_time,min_time_gauging;
+    WORD32   min_time, HWtimer,wake_up_time,min_time_gauging;
     UWORD32  sleep_mode;
     WORD32   afc_fix;
-    UWORD32  uw32_store_next_time;
     static UWORD32 previous_sleep = FRAME_STOP;
     #if (W_A_CALYPSO_PLUS_SPR_19599 == 1)
       BOOL     extended_page_mode_state = 0;       //Store state of extended page mode
@@ -816,21 +802,8 @@
     //=================================================
     sleep_mode =  Cust_check_system();
 
-    #if (GSM_IDLE_RAM != 0)
-    //=================================================
-    // check System (SIM, UART, LDC ..... )
-    //=================================================
-    gsm_idle_ram_ctl->sleep_mode = sleep_mode;
-    #endif
-
     if (sleep_mode == DO_NOT_SLEEP)
-    {
-      #if (GSM_IDLE_RAM != 0)
-        gsm_idle_ram_ctl->os_load = 0;
-        gsm_idle_ram_ctl->hw_timer = 0;
-      #endif // GSM_IDLE_RAM
       return;
-    }
 
     #if (CODE_VERSION != SIMULATION)
 	      //=================================================
@@ -845,45 +818,15 @@
 	      INT_DisableIRQ();
     #endif // NOT SIMULATION
 
-#if (OP_L1_STANDALONE == 0)
-    /*GC_Sleep(); 	OMAPS00134004*/
-#endif
     //=================================================
     // check OS loading
     //=================================================
-    OSload = OS_get_inactivity_ticks();
-    #if 0	/* FreeCalypso TCS211 reconstruction */
-      if ((OSload >= 0) && (OSload <= MIN_SLEEP_TIME)){
-        l1_pwmgr_debug.fail_id = FAIL_SLEEP_DUE_TO_OSLOAD;
-        l1_pwmgr_debug.fail_ret_val = OSload;
-      }
-    #endif
+    min_time = OS_get_inactivity_ticks();
 
     //=================================================
     // check HW Timers loading
     //=================================================
     HWtimer= l1s_get_HWTimers_ticks();
-    #if 0	/* FreeCalypso TCS211 reconstruction */
-      if (HWtimer == 0){
-        l1_pwmgr_debug.fail_id = FAIL_SLEEP_DUE_TO_HWTIMER;
-        l1_pwmgr_debug.fail_ret_val = 0;
-      }
-    #endif
-
-    #if (GSM_IDLE_RAM != 0)
-    //=================================================
-    // check OS loading
-    //=================================================
-    gsm_idle_ram_ctl->os_load = OSload;
-
-    //=================================================
-    // check HW Timers loading
-    //=================================================
-    gsm_idle_ram_ctl->hw_timer = HWtimer;
-    #endif // GSM_IDLE_RAM
-
-    if ((OSload > 0) && (OSload <= MIN_SLEEP_TIME))
-      OSload =0;
 
     //=================================================
     // check next gauging task for Packet Idle
@@ -893,13 +836,6 @@
     #else
       min_time_gauging = -1;   // not used
     #endif
-    #if 0	/* FreeCalypso TCS211 reconstruction */
-      if (min_time_gauging == 0){
-        l1_pwmgr_debug.fail_id = FAIL_SLEEP_DUE_TO_MINTIMEGAUGING;
-        l1_pwmgr_debug.fail_ret_val = 0;
-      }
-    #endif // NOT SIMULATION
-
 
     #if (OP_BT == 1)
       hci_ll_status = hci_ll_ok_for_sleep();
@@ -909,10 +845,10 @@
     // in case big sleep is choosen (sleep mode == FRAME_STOP) because of UART or SIM,
     // return and wait end of this activity (few TDMA frames) then check on next TDMA frames
     // if MS can go in deep sleep
-    if (    !OSload
+    if (    !min_time
          || !HWtimer
          || !min_time_gauging
-         || ((sleep_mode != CLOCK_STOP) && ((why_big_sleep == BIG_SLEEP_DUE_TO_UART) || (why_big_sleep == BIG_SLEEP_DUE_TO_SIM)))
+         || (sleep_mode != CLOCK_STOP)
        #if (OP_BT == 1)
          || !hci_ll_status
        #endif
@@ -920,76 +856,38 @@
     {
 
 
-
-#if (OP_L1_STANDALONE == 0)
-	/*GC_Wakeup(); 	OMAPS00134004*/
-#endif
-
 #if (CODE_VERSION != SIMULATION)
         OS_system_Unprotect();
         // free System structure
         // Enable all IRQ
         INT_EnableIRQ();
         // Wake up UART
-#if (GSM_IDLE_RAM != 0)
-        // Traffic controller has to be enabled before calling SER_WakeUpUarts
-        // as this function can access the external RAM.
-        // Reset the flag that will indicates if an interrup will put the traffic
-        // controller ON during that time.
-        l1s.gsm_idle_ram_ctl.trff_ctrl_enable_cause_int = FALSE;
-        if (!READ_TRAFFIC_CONT_STATE)
-        {
-          flag_traffic_controller_state = 1;
-          CSMI_TrafficControllerOn();
-        }
-#endif
 
         SER_WakeUpUarts();  // Wake up Uarts
 
-#if (GSM_IDLE_RAM != 0)
-        // The traffic controller state shall be restored as it was before
-        // calling SER_WakeUpUarts. Do not disable it if an interrup occured
-        // in between and activated the traffic controller.
-        if ((flag_traffic_controller_state == 1) && (l1s.gsm_idle_ram_ctl.trff_ctrl_enable_cause_int == FALSE))
-        {
-          CSMI_TrafficControllerOff();
-        }
-        flag_traffic_controller_state = 0;
 #endif
-#endif
-      #if 0	/* FreeCalypso TCS211 reconstruction */
-      l1_trace_fail_sleep(FAIL_SLEEP_OSTIMERGAUGE, l1_pwmgr_debug.fail_id, l1_pwmgr_debug.fail_ret_val);
-      #endif
       return;
     }
     //=================================================
     // Select sleep duration ....
     //=================================================
     // remember: -1 means no activity planned
-    min_time = OSload;
     //l1a_l1s_com.time_to_next_l1s_task is UW32, min_time is W32. Max value of l1a_l1s_com.time_to_next_l1s_task will be 2p31
     //and ,min_time max value will be 2p30. If min_time > l1a_l1s_com.time_to_next_l1s_task,
     //means MSB of l1a_l1s_com.time_to_next_l1s_task is zero. so, we can use- uw32_store_next_time & 0x7FFFFFFF
-    uw32_store_next_time = l1a_l1s_com.time_to_next_l1s_task;
 
-    if (min_time == -1) min_time = (WORD32)uw32_store_next_time;
-    //else                        MIN(min_time, (WORD32)l1a_l1s_com.time_to_next_l1s_task)
-    else
-    {
-     if(min_time > l1a_l1s_com.time_to_next_l1s_task) min_time = uw32_store_next_time & 0x7FFFFFFF;
-     //else min_time = min_time;
-    }
+    if (min_time == -1) min_time = l1a_l1s_com.time_to_next_l1s_task;
+    else		MIN(min_time, l1a_l1s_com.time_to_next_l1s_task)
     if (HWtimer != -1)          MIN(min_time, HWtimer)
     if (min_time_gauging != -1) MIN(min_time, min_time_gauging)
 
     #if (TRACE_TYPE !=0 ) && (TRACE_TYPE != 2) && (TRACE_TYPE != 3)
       // to trace the Wake up source
       // depending of min_time choose the wakeup_type
-      wakeup_type = WAKEUP_FOR_L1_TASK;
+      wakeup_type = WAKEUP_FOR_OS_TASK;
       if (min_time == l1a_l1s_com.time_to_next_l1s_task) wakeup_type = WAKEUP_FOR_L1_TASK;
       if (min_time == HWtimer)                           wakeup_type = WAKEUP_FOR_HW_TIMER_TASK;
       if (min_time == min_time_gauging)                  wakeup_type = WAKEUP_FOR_GAUGING_TASK;
-      if (min_time == OSload)                            wakeup_type = WAKEUP_FOR_OS_TASK;
     #endif
 
     //=================================================
@@ -1015,7 +913,7 @@
          {
            // BIG SLEEP is chosen : check the reason
            l1s.pw_mgr.sleep_performed = FRAME_STOP;
-           if ((l1s.pw_mgr.enough_gaug != TRUE) && (l1a_l1s_com.mode != CS_MODE0))
+           if (l1s.pw_mgr.enough_gaug != TRUE)
              why_big_sleep = BIG_SLEEP_DUE_TO_GAUGING;
            else
              why_big_sleep = BIG_SLEEP_DUE_TO_DSP_TRACES;
@@ -1032,36 +930,11 @@
       if ((previous_sleep == CLOCK_STOP) && (time_from_last_wakeup < 7))
       {
 		#if (CODE_VERSION != SIMULATION)
-				  OS_system_Unprotect();    // free System structure
-				  INT_EnableIRQ();          // Enable all IRQ
-			#if (GSM_IDLE_RAM != 0)
-					  // Traffic controller has to be enabled before calling SER_WakeUpUarts
-					  // as this function can access the external RAM.
-					  // Reset the flag that will indicates if an interrup will put the traffic
-					  // controller ON during that time.
-					  l1s.gsm_idle_ram_ctl.trff_ctrl_enable_cause_int = FALSE;
-					  if (!READ_TRAFFIC_CONT_STATE)
-					  {
-						flag_traffic_controller_state = 1;
-						CSMI_TrafficControllerOn();
-					  }
-			#endif
+			  OS_system_Unprotect();    // free System structure
+			  INT_EnableIRQ();          // Enable all IRQ
 
-
-				SER_WakeUpUarts();  // Wake up Uarts
-
-
+			  SER_WakeUpUarts();  // Wake up Uarts
 
-			#if (GSM_IDLE_RAM != 0)
-					  // The traffic controller state shall be restored as it was before
-					  // calling SER_WakeUpUarts. Do not disable it if an interrup occured
-					  // in between and activated the traffic controller.
-					  if ((flag_traffic_controller_state == 1) && (l1s.gsm_idle_ram_ctl.trff_ctrl_enable_cause_int == FALSE))
-					  {
-						CSMI_TrafficControllerOff();
-					  }
-					  flag_traffic_controller_state = 0;
-			#endif
 		#endif // NOT SIMULATION
         return;
       }
@@ -1103,7 +976,7 @@
            // (used when the MS lost the network: in this case the deep sleep may be used)
            if (l1a_l1s_com.mode == CS_MODE0)
            {
-              l1ctl_pgm_clk32(DEFAULT_HFMHZ_VALUE*8,DEFAULT_32KHZ_VALUE);
+              l1ctl_pgm_clk32(DEFAULT_HFMHZ_VALUE, DEFAULT_32KHZ_VALUE);
            }
        }
 
@@ -1113,7 +986,7 @@
        //==============================================
        #if ((CHIPSET ==4) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12) || (CHIPSET == 15))
          // disable DPLL (do not provide clk to DSP & RIF (Bridge))
-         ( * (volatile SYS_UWORD16 *) CLKM_CNTL_CLK) |= CLKM_DPLL_DIS ; /* CLKM_BRIDGE_DIS removed by Ranga*/
+         ( * (volatile SYS_UWORD16 *) CLKM_CNTL_CLK) |= CLKM_DPLL_DIS | CLKM_BRIDGE_DIS;
        #endif
 
        //==============================================
@@ -1159,11 +1032,6 @@
       {
         // DEEP SLEEP -> need time to setup afc and rf
          wake_up_time = min_time - l1_config.params.setup_afc_and_rf;
-	 #if (CODE_VERSION == NOT_SIMULATION)
-	// Sleep one more TDMA - this is done as part of merging init and TPU control
-	      wake_up_time += 1;
-	 #endif
-
       }
       else
         // BIG SLEEP
@@ -1220,24 +1088,7 @@
             #if (W_A_CALYPSO_BUG_01435 == 1)
               f_arm_sleep_cmd(DEEP_SLEEP);
             #else
-			  	//EMIF_SetConfReg ( 0, 0, 2 ,1 ,0);
-				asm(" NOP");
-				asm(" NOP");
-				asm(" NOP");
-				asm(" NOP");
             *((volatile UWORD16 *)CLKM_ARM_CLK) &= ~(CLKM_DEEP_SLEEP);  // set deep sleep mode
-				asm(" NOP");
-				asm(" NOP");
-				asm(" NOP");
-				asm(" NOP");
-// set deep sleep mode in case it is not set back by hardware
-                               *((volatile UWORD16 *)CLKM_ARM_CLK) |= (CLKM_DEEP_SLEEP);
-
-			    //EMIF_SetConfReg ( 0, 0, 2 ,0 ,0);
-            //  *((volatile UWORD16 *)CLKM_ARM_CLK) &= 0xFFFF;  // set deep sleep mode
-           //   *((volatile UWORD16 *)CLKM_ARM_CLK) &= ~(CLKM_MCLK_EN);     // For Debug only
-
-
             #endif
           #endif // OP_WCP
         }
@@ -1380,7 +1231,6 @@
              #endif
            #endif
          }
-         int_id = 0;
        #endif
 
        #if (TRACE_TYPE == 1) || (TRACE_TYPE == 4)