mirror from https://www.codeaurora.org/git/projects/hisense-ts7008/repository/
[huawei.git] / AMSS / tmc.c
diff --git a/AMSS/tmc.c b/AMSS/tmc.c
new file mode 100644 (file)
index 0000000..3961041
--- /dev/null
@@ -0,0 +1,6336 @@
+/*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*\r
+\r
+                            TASK MAIN CONTROLLER\r
+\r
+GENERAL DESCRIPTION\r
+  This module provides none protocol specific power up initialization, and\r
+  task related operations such as task define start, offline and stop.\r
+\r
+EXTERNALIZED FUNCTIONS\r
+\r
+  Task Entrance\r
+    tmc_task\r
+\r
+  TMC Tasks-Interface\r
+    tmc_task_start    Procedure for tasks to acknowledge start up from TMC.\r
+    tmc_task_ack      Procedure for task to acknowledge from TMC.\r
+    tmc_task_stop     Procedure for task to do task stop processing from TMC.\r
+    tmc_task_offline  Procedure for task to do task offline processing from\r
+                      MC.\r
+    tmc_cmd           Procedure to send a command to TMC from other tasks.\r
+    tmc_ack           Procedure to send acknowledge signal to TMC from other\r
+                      tasks.\r
+\r
+INITIALIZATION AND SEQUENCING REQUIREMENTS\r
+\r
+  This task is the first task created in the DMSS.  It is created from\r
+  the main module (using the REX task initialization service) after boot\r
+  processing is completed.  No other tasks or drivers have been created\r
+  or started when this task is started.\r
+\r
+Copyright (c) 2002 - 2009 by QUALCOMM INCORPORATED.\r
+All Rights Reserved.\r
+\r
+Export of this technology or software is regulated by the U.S. Government.\r
+Diversion contrary to U.S. law prohibited.\r
+\r
+*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/\r
+\r
+/*===========================================================================\r
+\r
+                        EDIT HISTORY FOR MODULE\r
+\r
+  This section contains comments describing changes made to the module.\r
+  Notice that changes are listed in reverse chronological order.\r
+\r
+  $Header: //source/qcom/qct/core/pkg/2H09/halcyon_modem/rel/LA2.0/AMSS/products/7x30/core/debugtools/tmc/src/tmc.c#2 $\r
+\r
+when       who     what, where, why\r
+--------   ---     ----------------------------------------------------------\r
+07/08/10   rsb     Added call to mobile_init_modem_sw_build_id\r
+07/30/09   rbo     Added WLAN DS task\r
+07/02/09   va      Added TCXO Manager Task\r
+05/26/09   st      Added GFX task\r
+05/27/09   wd      Added FEATURE_COREIMG and fix incorrect FEATURIZATINON\r
+01/23/09   taw     Remove the reference to SLEEP_MP4_OKTS_SIG.\r
+03/12/09   vas     Added entries for IPAUKCC_IPC\r
+02/02/09   jwh     Added TMC_CMD_TYPE_RESET_MODEM \r
+11/11/08   ry      Removed FEATURE_SENSORS.\r
+10/28/08   jwh     Changed smsm_init() per updated SMEM APIs.\r
+06/30/08   apu     Added support for FEATURE_VBATT_TASK. \r
+05/29/08   gfr     Added MPP4 configuration for WLAN (from Evgeni Diment).\r
+05/20/08   jac     Removed banned apis.\r
+05/14/08   grl     Added FEATURE_TMC_WB_CACHE support.\r
+05/14/08   gfr     Minor code cleanup and call clk_regime_init_nv instead of\r
+                   using global variables.\r
+04/22/08   trc     First phase of 1x/HDR clock resource gating changes\r
+03/18/08   gfr     Replace clk_regime_enable with resource manager.\r
+02/28/08   cr/aar  Added PGI task.\r
+01/21/08   gfr     Enable component services for WM.\r
+12/12/07   ry      Updated the Sensors task to support FEATURE_ENHANCED_REX_TASK\r
+12/13/07   gfr     Add SDC pmic MPP initialization.\r
+12/10/07   jhs     Moved bus_init() and bus_monitor_init() to after\r
+                   clk_regime_init().\r
+10/12/07   hwu     Added support for FEATURE_AMSS_RESTART.\r
+10/01/07   gfr     Enable the USBH MPPs here until WM USBH driver does it.\r
+09/26/07   gfr     Remove hack forcing phone online even when no NV is\r
+                   present.\r
+09/20/07   gfr     Removed BREW code.\r
+09/11/07   gfr     Support for time-of-day RTC offset and headset switch\r
+                   detection.\r
+09/12/07   gfr     Support for UBM L1 task.\r
+08/08/07   ah      Replaced defined(FEATURE_CGPS_PD_COMMS_TCP_ON_MODEM) with\r
+                   !defined(FEATURE_DATA_ON_APPS).\r
+08/03/07   gfr     Do not initialize component services if the apps image\r
+                   is WinMobile.\r
+07/18/07   gfr     Initialize component services.\r
+07/10/07   gfr     Support for Quartz 1.3.6\r
+06/18/07   ry      Added support for FEATURE_SENSORS\r
+06/05/07   tbg     Added support for FEATURE_DLOAD_HW_RESET_DETECT.\r
+06/04/07   mg      Add sleepctl_init() to initialize sleep controller driver.\r
+05/22/07   gfr     Support for security tasks (Anuj Mundi).\r
+05/09/07   gfr     Support for CPU Based Flow Control\r
+05/08/07   gfr     Support for WLAN\r
+05/04/07   gfr     Do not turn on graphics core at init.\r
+04/27/07   gfr     HSU updates.\r
+04/12/07   ptm     moved spin_lock initialization to smem\r
+03/27/07   jfc     Reinstate rflib_init() for UMTS mode\r
+03/06/07   gfr     Remove FEATURE_QVPHONE\r
+03/01/07   gfr     Re-add the removal of 1x clocks since the change was\r
+                   incorrectly dropped in the last merge.\r
+02/14/07   gfr     Remove obselete 1X clocks.\r
+02/06/07   gfr     Change USBH_RST to USBH_CS1 and invert it.\r
+02/05/07   gfr     Always call tlmm_init.\r
+02/01/07   gfr     Reset HS_USB PHY as part of power-up sequence.\r
+01/23/07   gfr     Featurize for 1X-only builds.\r
+01/17/07   gfr     Support for new PMEM init functionality.\r
+01/04/07   trc     Remove unnecessary SRCH4 MDSP registration\r
+12/15/06   gfr     Fixes for WPLT.\r
+11/22/06   gfr     Add FEATURE_DISABLE_CGPS.\r
+11/22/06   gfr     Add WPLT task.\r
+10/23/06   gfr     Remove flash_nand_init for new flash driver.\r
+10/22/06   gfr     Remove msm_init.h\r
+09/06/06   taw     Use smem_proc_comm API.\r
+08/17/06   taw     Add a call to smem_init(); Change the call to smsm_init()\r
+                   to pass in no parameters.\r
+08/15/06   taw     Include smem.h and set the modem status to TMCINIT in\r
+                   smem_proc_comm after TMC is initialized.\r
+09/27/06   gb      Changes to get user set time working\r
+09/01/06   kvk     Initializing USB for the Modem only configuration\r
+08/30/06   kvk     Added support for Data on Apps\r
+07/20/06   jhs     Add support for I2C on Apps.\r
+07/17/06   sb      Added FEATURE_NO_USB_HW_ON_PROCESSOR for usb tasks\r
+07/07/06   gfr     Deregister boot clock client when tmc_init is complete.\r
+07/03/06   jhs     Cleaned up Bus Manager featurization.\r
+                   Added support for reading NV configuration for Bus\r
+                   Monitors.\r
+06/20/06   dsn     Featurize BT for Modem, cleanup obsolete BT related tasks\r
+05/11/06   ptm     Added call to process_init_callbacks for AMSS restart.\r
+04/30/06   dlb     Added call to turn on recent_thread tracking.\r
+04/26/06   ptm     Add OEMSBL release synchronization point for 7K.\r
+03/29/06   ptm     Added init calls for spinlocks and smem logging for 7K.\r
+03/24/06   pc      Added support for SECRND task\r
+03/23/06   cl      Added PDSM_COMM_TASK\r
+03/10/06   xz      Changed QVPHONE related code for 7500 support\r
+01/25/06   ddh     Added DEM Task\r
+01/24/06   ajn     Enabled GRAPHICS Clock regime\r
+01/23/06   rlp     Added HID Support.\r
+01/02/06   dle     Added FEATURE_CAMERA_DRV_TASK.\r
+12/14/05   taw     Pmem is now initialized with the real modem heap in SMI.\r
+11/10/05   pc      Added support for AVS_SBCENC_TASK\r
+11/08/05   pc      Added support for GSM_PLT task\r
+11/02/05   gw      Added support for GameMode.\r
+10/26/05   ck      Fixed a compiler issue.\r
+10/19/05   as      Fixed compiler warnings.\r
+10/03/05   dd      Added L4 call to enable timetest.\r
+08/01/05   vs      Added usbhost_api_init based on feature FEATURe_USB_HOST\r
+08/26/05   pc      Added support for DISP_TASK.\r
+08/20/05   pc      Renamed FEATURE_PROF_DIAG to FEATURE_PROFDIAG\r
+08/15/05   hn      Replaced use of FS_FEATURE_RMTEFS_SERVER with FS_FEATURE_IG_IPC_SERVER\r
+08/10/05   taw     Added a call to flash_nand_init() to init the flash driver\r
+                   and HW.  Added a call to pmem_init() to allow pmem use\r
+                   by the flash driver.\r
+08/10/05   pc      Increased the wait_cnt for the UI task in tmc_stop_tasks()\r
+                   to 5s, for Sirius.\r
+08/09/05   fl      Replaced file qvp_aud_eng.h with extern void qvp_ae_task()\r
+08/05/05   jhs     Removed SMEM references.  Added SMD include file.\r
+08/05/05   jhs     Removed SMEM references.  Added SMD include file.\r
+08/03/05   pc      Replaced certain FEATURE_L4 with FEATURE_L4LINUX, added\r
+                   support for FEATURE_USB_HOST_API, included\r
+                   FEATURE_TCXOMGR_TMC.\r
+08/01/05   vs      Added usbhost_api_init based on feature FEATURe_USB_HOST\r
+07/19/05   taw     Added includes for flash functions and removed NANDC MPU\r
+                   usage for modem only builds.\r
+07/18/05   et      added PARK MODE support\r
+07/15/05   adm     Merged from mainline ver #23\r
+07/13/05   adm     Merged in changes related to supporting BootLoader compilation\r
+                   for L4 builds\r
+07/12/05   jz      Featureized QVP APP Task for Codec Only\r
+07/12/05   grl     Added initialization of TRM for 1x targets.\r
+06/20/05   fl      Replaced file sipt_task.h with extern void sipt_task()\r
+06/17/05   fl      Replaced file qvp_encvfe.h with extern void qvp_vfe_task()\r
+06/13/05   pc      Added support for WLAN sec task\r
+06/13/05   sl      Sirius changes: Task Reordering; Secure clock API.\r
+06/17/05   jhs     Removed time_tod_task.\r
+06/07/05   jhs     Added pm_pwr_key_init for power key support.\r
+06/01/05   grl     Removed srm/xrm initialization since they aren't used.\r
+05/23/05   cep     Added aps_init for tmc_libraries_init_before_tasks_start\r
+05/12/05   pc      Added call to time_set_from_pmic() to get the time from\r
+                   PMC RTC for Time Services.\r
+05/02/05   ibm     Moved UI initialization past DS and GSDI for Sirius.\r
+04/21/05   pc      Added support for FEATURE_MFLO\r
+04/20/05   pc      Added support for FEATURE_QIPCALL\r
+04/09/05   pc      Added support for CNV task\r
+04/14/05   sr      Remove the featurization for adie_init call\r
+05/19/05   lp      Removed HWIO PMIC_SSBI call that enables MDDI\r
+05/18/05   ~SN     Removed clk_regime_msm_init() & clk_regime_msm_enable (CLKRGM_PRPH_CLK).\r
+05/18/05   jhs     Added time_tod_task.\r
+04/05/05   ddh     Replace OKTS MASK with OKTS SIG\r
+03/28/05   sv      More Update Abnormal Exit count - Sirius specific change\r
+03/21/05   sv      Update Abnormal Exit count - Sirius specific change\r
+03/15/05   wal     Added APS task for L4/Linux under FEATURE_APS\r
+03/15/05   adg     Added QDIAG task for L4/Linux under FEATURE_IG_QDIAG\r
+03/15/05   jqi     Added support for FS_FEATURE_RMTEFS_SERVER, FEATURE_L4\r
+                   FEATURE_PM_SERVER,FEATURE_IG_UI_CLIENT_SELECT\r
+03/07/05   lyr     Moved WLAN task startup before DS task startup\r
+02/24/05 t_jarmis  Added FEATURE_FM for FM-RDS Radio.\r
+02/14/05   jqi     Updated for FEATURE_BATTERY_CHARGER.\r
+02/04/05   jqi     Fix the bug in the tmc processing stop/offline tasks.\r
+                   Revised the change for TMC vote for sleep.\r
+                   Send stop/offline signal to sleep task.\r
+02/05/05   aku     Added support for WLAN Adapter initialization in TMC.\r
+02/04/05   dwp     Added QVP support for SIP.\r
+02/03/05   jqi     Added support for TMC vote for sleep.\r
+02/03/05 eprice    Addition of Sirius specific tasks using define SIRIUS_PLATFORM\r
+01/31/05   jqi     Added support for FEATURE_CC_MONITOR, FEATURE_FOTA_FS,\r
+                   FEATURE_ENABLE_FLOATING_POINT_ERRORS.\r
+05/06/05   ptm     Moved dmov_init to before time_init to ensure it completes\r
+                   before apps dmov_init starts.\r
+04/29/05   jc      Added PMIC support to enable MDDI power on SURF.\r
+04/22/05   ptm     Moved smem and oncrpc tasks to top of task def routine.\r
+                   Moved timer sync code to the timer subsystem.\r
+04/24/05   ~SN     Added FEATURE_BRINGUP_DIAG_ONLY\r
+04/14/05   adm     Added smd task under FEATURE_SMD\r
+03/24/05   jhs     Moved i2c_init above sio_init becuase USB uses I2C.\r
+03/21/05   smkg    Update the function call to clk_regime_msm_init.\r
+03/14/05   jhs     Added support for multiprocessor slow clock sync.  Again\r
+                   moved rdm_get_prev_ports and rdm_issue_opens as per\r
+                   comment 12/06/04, ptm.\r
+01/28/04   ptm     Remove references to sta_remote_task and add feature\r
+                   protection around sta references.\r
+01/21/05   ~sn     Added DMOV INIT\r
+12/27/04    ro     Add offline and stop sigs for VOC, QDSP, QDSP_RTOS.\r
+12/06/04   ptm     Moved the start up ONCRPC of to tmc_start_service_tasks and\r
+                   rdm_get_prev_ports and rdm_issue_opens up to\r
+                   tmc_libraries_init_after_service_tasks_start so that\r
+                   ONCRPC is ready to handle RPC calls before any of the\r
+                   application tasks are started.\r
+                   Moved #ifndef T_RUMI2_DIAG_ONLY around call to\r
+                   tmc_libraries_init_after_service_tasks_start into the\r
+                   routine so that only part of the routine is protected.\r
+12/03/04    lp     Enabled QDSP task by removing T_RUMI_QDSP.  Fixed compile\r
+                   error when TIMETEST is defined.\r
+11/24/04    cr     Add smem_boot_sync to release aARM to begin executing\r
+                   Reset_Handler.\r
+11/08/04    ro     Added FEATURE_QDSP_RTOS - start ADSP RTOS Task\r
+10/13/04   adm     Added smem task\r
+01/25/05   jqi     Fixed constantly high sleep current issue.\r
+01/21/05   ldaita  Added support MGPCC task (needed for GPS).\r
+01/19/05   aar     Fixed compilation problem due to rex_def_task2 I/F mismatch.\r
+01/14/05   rp      Added background loading in Progressive boot task support\r
+           jh      Added support for enabling profiling through diag interface.\r
+01/12/05   jqi     Lint fixes.\r
+01/06/05   aar     Added support for GPSSRCH demod task.\r
+12/23/04   ty      Changed ran_seed() use to ran_init() to initialize seed\r
+11/22/04   gfr     Suppress intlock profiling during init.\r
+11/10/04   jz      Added QVP VFE Task\r
+11/18/04   pa      Added support for PBM task.\r
+11/02/04   jqi     Fixed compilation warning and featurization issue.\r
+                   updated comments.\r
+10/22/04   jqi     Featurization fixes.\r
+10/20/04   ajn     Added support for TIMER task.\r
+10/15/04   rp      Added support for page and interrupt tasks.\r
+10/08/04   jqi     Added support for FEATURE_HSDPA\r
+09/29/04   ss      Added support for DTV (Digital TV) task\r
+09/29/04   jqi     Fixed ADS1.2 and RVCT compilation warnings.\r
+09/24/04   gfr     Rename feature\r
+09/16/04   gfr     Added support for tcxo manager init and powerdown.\r
+09/16/04   jqi     Added ftm_task.h file.\r
+09/10/04   hl      Added support for joystick feature\r
+08/25/04   jqi     Fixed compilation errors/warnings.\r
+08/23/04   vr      Replaced include dsbcdb_api.h by dsbcdb_task.h\r
+08/11/04   efy     Unified adie_init() interface.\r
+08/05/04   ap      Moved UI task to stop last.\r
+07/26/04   jqi     Added support to read GPS nv items during power up.\r
+07/22/04   jqi     Added support for WPLT and GPLT.\r
+07/13/04   ajn     Added initialization for SRM/XRM\r
+07/09/04   jqi     Corrected the parameters for tmc_realloc() API.\r
+                   Added support for FEATURE_ADC_CALIBRATION.\r
+06/24/04   jm      Used prototype directly for DRM task.\r
+06/21/04   dc      Wrapped#include "acpwb.h" with FEATURE_ACP.\r
+06/16/04   bd      Unconditional include "adie.h" regardless of\r
+                   FEATURE_WCDMA_PLT.\r
+06/10/04   jqi     Updated the history comments.\r
+06/09/04   jl      Featurized CLK_RGM_DFM_M regime enable function with\r
+                   FEATURE_ACP.\r
+05/25/04   jqi     Fixed mode preference reset issue after power up.\r
+           et      Unified adie init interface for all the targets.\r
+05/19/04   vr      Added support for BCDB and HDRBC tasks\r
+           jqi     TMC HEAP API.\r
+                   Bump up tlmm_init() before rflib_init().\r
+           ml      Added FEATURE_UI_CORE_REMOVED.\r
+04/27/04   jqi     Back up the changes to rename time.h to time_svc.h.\r
+04/23/04   jqi     Read Vbatt, therm and HW config during power up regardless\r
+                   of multimode RF feature.\r
+04/07/04   tg      Added support for FEATURE_ERR_EXTENDED_STORE.\r
+                   Removed support for FEATURE_LOG_EXCEPTIONS_TO_NV.\r
+04/06/04   jqi     Added FEATURE_BREW_PWRUP_INIT.\r
+04/01/04   sg      removed support for LP task as task no longer exists.\r
+03/15/04   tg      Added support for FEATURE_LOG_EXCEPTIONS_TO_NV.\r
+03/12/04   st      Removed MSM6500 work around when creating MDSP task.\r
+02/23/04   jqi     Fixed some typo in FEATURE_SEC_DRM.\r
+           bs      Added support for Bluetooth External Profiles feature support .\r
+02/19/04   jqi     Fixed Lint error\r
+           ak      Added support for Brew 3.0.\r
+           Jm      Added support for FEATURE_SEC_DRM.\r
+02/12/04   vd      Added support for FEATURE_GSM_CB.\r
+02/09/04   ajn     Renamed time.h to time_svc.h to avoid OS conflict.\r
+                   Moved time_init() below tramp_init(), since it uses tramp.\r
+02/06/04   et      Added support for DRM feature.\r
+02/02/04   dd      Called adie_init after rflib_init and before voc task is\r
+                   started for 1x target.\r
+01/19/04   jqi     Fixed compile warninigs.\r
+12/03/03   bt      Move srch4 registration into\r
+                   tmc_libraries_init_after_service_tasks_start.\r
+11/26/03   jqi     Remove update rf init status based on ftm nv flag.\r
+11/20/03   jqi     Added support for SYS_OPRT_MODE_OFFLINE_IF_NOT_FTM.\r
+11/19/03   jqi     Added support for FEATURE_ENHANCED_REX_TASK.\r
+11/14/03   dd      Added support for GPS Search task.\r
+11/12/03   dwp     Additional QVPHONE updates.\r
+10/31/02    sr     QVPHONE changes merged for Saber. SBI API's rolled into RF\r
+                   VU's.\r
+10/29/03   jqi     Consolidate MSM6200 target related features.\r
+10/22/03   ts      re-organization in PDSM files.\r
+10/17/03   jm      Fixed typo.\r
+10/13/03   jqi     Fixed compile warning.\r
+10/07/03   sa      CR30885-Add diag request to check the size of TMC heap\r
+10/06/03   jqi     Fixed multimode RF enter mode issue.\r
+09/29/03   dna     Get T_QUASAR to compile and work again for MSM6500\r
+09/21/03   bt      Download SRCH4 App after all tasks have been started.\r
+08/14/03   ht      Merged MSM6500 changes and QUASAR support.\r
+07/21/03   xfg     Changed for Thin UI build and set lock to memory heap.\r
+07/14/03   jqi     Swapped the tlmm_init() with sio_init().\r
+07/09/03   cd      CR32650-Replace FEATURE_UIM_USIM withe FEATURE_UIM.\r
+07/01/03   jqi     Added support for FEATURE_RESET_COUNTER.\r
+06/19/03   ev      Added support for MSM6500 target for power up\r
+                   initialization.\r
+06/12/03   rtp     Changed the FEATURE_DYNAMIC_CLOCK_FREQUENCY_CHANGING to\r
+                   FEATURE_AUTOMATIC_CLOCK_FREQUENCY_CHANGING\r
+05/30/03   jqi     Renamed TIMETEST_SECIPS_TASK_ID to TIMETEST_SECIPSEC_TASK_ID.\r
+05/29/03   jqi     CR28002\r
+                   Show task name which does not responds offline cmd in LCD.\r
+           Om      Added support for ARM_CRYPTO and IPSEC tasks,\r
+05/28/03   TMR/dgy Added changes for WCDMA single-mode build.\r
+05/14/03    ld     Added support for MGP related tasks\r
+04/30/03   jqi     Added !FEATURE_MDSP_TASK around included file dmddown.h\r
+04/26/03   jqi     Delete enable all clk regimes for leopard target.\r
+04/25/03   ts      Swapped the tlmm_init with uim_dev_init().\r
+04/23/03   rtp     Modified the code under\r
+                   FEATURE_DYNAMIC_CLOCK_FREQUENCY_CHANGING\r
+04/22/03   jqi     Removed TMC heap to tmc_nzi.c.\r
+                   Added include file virtuim.h under FEATURE_VIRTUAL_SIM.\r
+04/17/03   dgy     Used dsgcsd_task.h instead of dsgcsd.h.\r
+04/16/03   jqi     Removed test_mc.h and used ftm.h for cougar,leopard,\r
+                   cheetah and saber targets.\r
+                   Removed T_RF_ZRF6200 feature around sbi_init().\r
+04/14/03   jqi     Revised MM RF driver initialization for cougar.\r
+                   Only did once during power up in tmc.c and removed codes\r
+                   in mc.c\r
+04/04/03   jqi     Moved stack profiling inside of tmc_define_tasks().\r
+           bd      Added WPLT support for PMIC\r
+           cd      Added uim_power_control() in power off and reset.\r
+04/01/03   jqi     Rename TIMETEST_GCDS_TASK_ID to TIMETEST_GCSD_TASK_ID.\r
+03/25/03   jqi     Increased GSTK,UIM,GSDI stop time out to 5 seconds.\r
+                   Added definition of tmc_get_mem_heap_size().\r
+03/21/03   jqi     Removed technology features around adie_init().\r
+                   Moved stop UIM task aster GSDI and GSTK tasks.\r
+03/14/03   jqi     Added FEATURE_MULTIMODE_ARCH around mmoc task.\r
+                   Added FEATURE_CM around sending cm offline command.\r
+03/12/03   jqi     CR28464 - added tasks' name.\r
+03/11/03   jqi     CR28438 - moved err_init() after nv_task starts.\r
+03/05/03   jqi     If RF CAL is invalid and FTM flag is invalid,\r
+                   set ftm flag to true.\r
+                   Clearn up MMRF interface for Cougar, Leopard and Cheetah.\r
+03/04/03   at      Changes to resolve naming conflict with MMGPS defined types\r
+                   in mmgps_types.h\r
+                   1. Replace nf.h, cd.h (pe.lib's internal include files) with pe_task.h\r
+                   2. Replace pb.h with pb_task.h\r
+03/04/03    lz     Removed FEATURE_MOBILE_SUITE.\r
+02/28/03   jqi     Set ftm mode default value amss_mode for cheetah (temporary fix)\r
+02/27/03   jqi     Set ftm mode default value ftm_mode.\r
+02/26/03   jqi     Without feature FEATURE_DIAG_COUPLED_ARCHITECTURE, diag no\r
+                   longer wait for complete signal during offline process.\r
+02/21/03   jay     Added support for FEATURE_SEC_SSL.\r
+                   Clear task start signal in tmc_start_task().\r
+02/19/03   sj      Added support for LPM.\r
+02/19/03   jqi     Added support for FEATURE_DYNAMIC_CLOCK_FREQUENCY_CHANGING.\r
+02/18/03   jqi/jar Added Generic SIM Tookit Task (FEATURE_GSTK) Support and\r
+                   Virtual Sim Application Toolkit (FEATURE_VIRTUAL_SAT) Task.\r
+02/14/03   jqi     Added support for FTM task\r
+                   If nv ftm flag is set true, do not send offline command.\r
+                   Remove unfinished LPM support.\r
+                   Added support for FEATURE_MULTIMODE_APIRF.\r
+02/07/03   jqi     Added support for LPM.(not finished yet)\r
+                   Added support for stack profiling.\r
+                   Expanded FEATUREs associated with GSDI task.\r
+02/06/03   jqi     FTM support with all tasks start for UMTS target.\r
+                   Use chg_init(TRUE) for UMTS target.\r
+01/29/03   jqi     Fixed a typo.\r
+01/28/03   jqi     Called ftm_tmc_init() on behalf of FEATURE_FACTORY_TEST_MOE.\r
+01/27/03   sj      Moved starting of UI/CM/MMOC etc tasks after initializing\r
+                   rf so that offline is the first command in the CM queue.\r
+01/22/03    lz     Added support for FEATURE_MOBILE_SUITE.\r
+01/21/03   jqi     Featurize the UMTS FTM change with T_RF_ZRF_6200\r
+                   Rename MC_RPT_TIMER_SIG with TMC_RPT_TIMER_SIG.\r
+                   Remove mc.h\r
+01/20/03   jqi     Removed feature around rf_init() and rf_init_delayed().\r
+01/15/03   jqi     Merged with MSM6200 TMC #68.\r
+                   1.added "clkrtc.h"\r
+                   2.New feature support\r
+                     FEATURE_VDSP_AT_48MHZ\r
+                   3.A temporary support for UMTS FTM: do not start all tasks\r
+                   Featurized the clk_regime_enable() for only 6300 target.\r
+12/31/02   jqi     Merged with MSM6200 TMC #62.\r
+                   1.added tmc_heap_small.\r
+                   2.New feature support\r
+                     FEATURE_GSM_GPRS\r
+                     FEATURE_RF\r
+                     FEATURE_MVS\r
+                     FEATURE_UIM_USIM\r
+                     FEATURE_HS_DETECT_BASEBAND_TYPE\r
+                     FEATURE_PDAPI\r
+                     DEBUG_TEST_RF\r
+                   3.added support for FEATURE_WCDMA_PLT, FEATURE_GSM_PLT\r
+                   4.added support for FEATURE T_RF_ZRF6200 during power up HW initialication\r
+                   5.remove ftm_tmc_init to where ftm_mode is read.\r
+12/09/02   jqi     Remove test_mc.h out of FEATURE_GSM.\r
+12/05/02   jqi     Fixed compile errors.\r
+12/04/02   jqi     Added support for multimode FTM.\r
+                   -Start all tasks in FTM mode.\r
+                   -use test_mc.h instead of ftm.h\r
+                   -add ftm_init in tmc_libraries_init_before_tasks_start();\r
+11/06/02   jqi     Featurized the temporary fixes for MM combined builds.\r
+11/05/02   jai     A temporary fixes for MM combined builds.\r
+                   - Removed adie_init(), rf_init, rf_init_delayed,\r
+                   - Added enable all clk regimes during Power up.\r
+11/01/02   jqi     Added and featurized pm1000_init().\r
+10/24/02   dle     Removed grp_init. It should only be called from disp_init.\r
+10/21/02   jqi     Added support for FTM mode.\r
+10/17/02   jqi     Remove bio_init on behalf of GSM feature.\r
+                   Added support for GSM FTM mode support.\r
+10/15/02   jqi     Added support for GSM FTM mode support.\r
+10/02/02   jqi     Use TIMETEST_TMC_TASK_ID for TMC task.\r
+                   Change TIMETEST_RR_TASK_ID to TIMETEST_GSM_RR_TASK_ID.\r
+                   Updated timetest.h and hp_stats.ini with missing TIMETEST task IDs.\r
+09/27/02   jkl     Fixed featurization in ZIF libraries.\r
+           jqi     Added GSDI task in offline/stop handler.\r
+                   Featurized dog report code.\r
+                   Included WCDMA task header files.\r
+09/26/02   dle     camera_init moved to graph_task.\r
+09/26/02   jqi     Included target.h header file.\r
+09/25/02   rmd     Moved pm init functions before adie init.\r
+           jqi     Used timed_wait for ack signal when sending offline/stop\r
+                   signals.Removed reset work around for cougar.\r
+09/24/02   rmd     Added chg_init() with FEATURE_BATTERY_CHARGER.\r
+09/18/02   jqi     Removed the redundant enc_init().\r
+09/17/02   jqi     Fixed error when creating GCSD task.\r
+09/17/02   hr      Added reset work around for cougar.\r
+09/17/02   cyran   Complete the HWIO port such that MSM6000, MSM6050, and MSM6100\r
+09/14/02   jqi     Removed custcmx.h.\r
+09/13/02   jqi     Removed support for FTM mode.\r
+09/10/02   jqi     Featurized HW related header files for unit test environment.\r
+                   Added support for camera and graph.\r
+09/06/02   jqi     Change tmc_wait() return type to void to support MM RF.\r
+09/06/02   jqi     Change gsdi_task_stack to gsdi_stack.\r
+08/27/02   jqi     Added support for powerup init with FEATURE_MDSP_TASK.\r
+                   Require RF changes.\r
+                   Replaced GSDI feature with  FEATURE_MMGSDI.\r
+                   Replaced TMC_WMS with FEATURE_CDSMS || FEATURE_GWSMS.\r
+                   Moved read ESN ME to start service tasks.\r
+                   started wms task after ui task started.\r
+08/21/02   jqi     Reverse the sequence of srch_util_demod_reset and\r
+                   demod_down_image.\r
+08/19/02   jqi     Replace tempore uim feature with FEATURE_UIM.\r
+                   Treated GSM/WCDMA task as application tasks.\r
+                   Added support for timetest profile.\r
+                   Treated tlmm and I2C as generic HW.\r
+                   Reverse the sequence of srch_util_demod_reset and\r
+                   demod_download_image.\r
+                   Remove clkrgm_6050.h header file.\r
+07/26/02   jqi     Featurize header files\r
+                   Used FEATURE_DATA_PS for ps task.\r
+                   Remove support for cdma.esn_me\r
+07/25/02   jqi     Added temporary support for cdma.esn_me.\r
+                   Added support for MDSP task.\r
+07/24/02   jqi     TMC reorganization.\r
+07/09/02   jqi     Changes for code review.\r
+07/02/02   jqi     Changes per 4th week of I&T\r
+06/19/02   jqi     Added sending DIAG_OFFLINE_COMPLETE_SIG in the end of\r
+                   offline procedure.\r
+06/14/02   jqi     Changes per 1st week of I&T.\r
+06/06/02   jqi     Initial Release\r
+\r
+===========================================================================*/\r
+\r
+/*===========================================================================\r
+\r
+                     INCLUDE FILES FOR MODULE\r
+\r
+===========================================================================*/\r
+\r
+#include "target.h"                                  /* Target header file */\r
+#include "msg.h"                                    /* Message header file */\r
+#include "err.h"                                      /* Error header file */\r
+#include "customer.h"                       /* Customer configuration file */\r
+#include "comdef.h"               /* Definition for basic types and macros */\r
+\r
+#include "tmcnv.h"                         /* TMC NV-Interface header file */\r
+#include "tmc.h"                       /* Task Main Controller header file */\r
+#include "tmci.h"              /* Task Main Controller interal header file */\r
+#include "task.h"                                      /* Task header file */\r
+\r
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
+#include "tramp.h"                      /* Interrupt trampline header file */\r
+#include "hw.h"                                    /* Hardware header file */\r
+#include "gpio_int.h"                             /* GPIO Init header file */\r
+#include "clk.h"                                      /* Clock header file */\r
+#include "clkregim.h"                             /* CLK Regim header file */\r
+\r
+#include "sbi.h"\r
+#ifdef FEATURE_I2C\r
+#include "i2c.h"                                      /* I2C header file */\r
+#endif /* FEATURE_I2C */\r
+#include "ran.h"                                   /* random header file */\r
+#ifdef FEATURE_PMIC_RTC\r
+#include "clkrtc.h"    /* clk */\r
+#endif\r
+\r
+#ifdef FEATURE_I2C_NPA\r
+extern void i2c_npa_target_init(void);\r
+#endif\r
+\r
+#if defined(FEATURE_MULTIMODE_RFAPI)\r
+#include "rfm_ext.h"\r
+#endif /* FEATURE_MULTIMODE_RFAPI */\r
+\r
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
+\r
+#include "dog.h"                           /* Watch Dog Task header file */\r
+\r
+void dog_auto_register(void);\r
+\r
+#ifdef FEATURE_NV\r
+#include "nv.h"                                        /* NV header file */\r
+#endif /* FEATURE_NV */\r
+\r
+#ifdef FEATURE_CM\r
+#include "cm.h"                                        /* CM header file */\r
+#endif /* FEATURE_CM */\r
+\r
+#ifdef FEATURE_DIAG_TASK\r
+#include "diag.h"                                    /* Diag header file */\r
+#include "event.h"                                  /* Event header file */\r
+#endif /* FEATURE_DIAG_TASK */\r
+\r
+#if defined(FEATURE_REX_CS)\r
+/* BREW component services init function */\r
+int initialize_component_services(void);\r
+#ifdef __ARMCC_VERSION\r
+__weak int initialize_component_services_modules(void);\r
+#else\r
+int initialize_component_services_modules(void);\r
+#endif\r
+#endif\r
+\r
+#if defined(FEATURE_UIM) || defined(FEATURE_UIM_RUIM)\r
+#include "uim.h"\r
+#endif\r
+\r
+#ifdef FEATURE_CTA\r
+extern void cta_task (dword param);                  /* CTA task header file */\r
+extern dog_report_type dyn_dog_cta_rpt;\r
+#endif /* FEATURE_CTA */\r
+\r
+#if defined(FEATURE_UIM_RUIM)\r
+#include "memory.h"\r
+#include "nvruimi.h"                            /* UIM RUIM header files */\r
+#endif /* FEATURE_UIM_RUIM */\r
+\r
+#ifdef TIMETEST\r
+#include "timetest.h"\r
+#include "l4/cust/msm_syscall.h"\r
+#endif /* TIMETEST */\r
+\r
+#include "iguana/memsection.h"\r
+#include "l4/misc.h"\r
+\r
+#if defined(FEATURE_SEC_TIME) && !defined(FEATURE_SEC_PROCESS_INIT)\r
+#include "sectime.h"                  /* Secure time header file */\r
+#endif /* FEATURE_SEC_TIME && !FEATURE_SEC_PROCESS_INIT */\r
+\r
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
+\r
+#ifdef FEATURE_PMIC\r
+#include "pm.h"                                        /* PM header file */\r
+#endif\r
+\r
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
+\r
+#ifdef FEATURE_GSM_PLT\r
+#error code not present\r
+#endif\r
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
+\r
+#include "err.h"\r
+\r
+#include "sd.h"\r
+\r
+#if defined(FEATURE_TMC_TCXOMGR) || defined(FEATURE_TCXOMGR_TMC)\r
+#include "tcxomgr.h"\r
+#endif\r
+\r
+#ifdef FEATURE_SMEM\r
+#include "smem_pcmod.h"\r
+#include "smem.h"\r
+#ifdef FEATURE_SMSM\r
+#include "smsm.h"\r
+#endif /* FEATURE_SMSM */\r
+#include "mobile.h"\r
+#endif /* FEATURE_SMEM */\r
+\r
+#ifdef FEATURE_L4LINUX\r
+#include "qids_smms.h"\r
+#endif\r
+\r
+#if defined(FEATURE_BUSMON)\r
+#error code not present\r
+#endif /* FEATURE_BUSMON */\r
+\r
+#ifdef FEATURE_DAL\r
+#include "DALSys.h"\r
+#endif\r
+\r
+#if (defined(FEATURE_L4) && defined(FEATURE_STACKS_TCB_IN_WRITETHROUGH))\r
+#include "iguana/memsection.h"\r
+#include "l4/misc.h"\r
+extern byte *Image__ZI_STACKS__Base;\r
+extern byte *Image__UNINIT_RAM__Base;\r
+#endif /*FEATURE_L4 && FEATURE_STACKS_TCB_IN_WRITETHROUGH*/\r
+\r
+#ifdef FEATURE_BATTERY_CHARGER\r
+#include "charger.h"                              /* Charger header file */\r
+#endif\r
+\r
+#include "memheap.h"                            /* Memory heap header file */\r
+\r
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
+\r
+/*===========================================================================\r
+\r
+            GLOBAL DEFINITIONS AND DECLARATIONS\r
+\r
+This section contains global definitions for constants, macros, types,\r
+variables\r
+\r
+===========================================================================*/\r
+\r
+/*---------------------------------------------------------------------------\r
+                                  REX TIMER\r
+---------------------------------------------------------------------------*/\r
+\r
+static rex_timer_type tmc_rpt_timer;                                     /* Timer for kicking watchdog */\r
+static rex_timer_type tmc_wait_timer;                                                         /* Timer for timer wait       */\r
+\r
+/*---------------------------------------------------------------------------\r
+                                    QUEUE\r
+---------------------------------------------------------------------------*/\r
+\r
+#define TMC_CMD_POOL_SIZE 10  /* Maximun number of command waiting in the queue */\r
+\r
+static tmc_cmd_type  tmc_cmd_arr[TMC_CMD_POOL_SIZE]; /* RAM command pool */\r
+\r
+static q_type tmc_free_cmd_q;             /* Queue to manage commands pool */\r
+\r
+static q_type tmc_cmd_q;\r
+\r
+/*---------------------------------------------------------------------------\r
+                                  STATE\r
+---------------------------------------------------------------------------*/\r
+\r
+typedef struct /* TMC data structure is defined to hold all internal used data.  */\r
+{\r
+   tmc_state_e_type    state;                                              // TMC task state indicator - record current TMC task state.\r
+   dword               esn_me;                                             // ESN ME - read ESN ME from TMC-NV interface and store it here.\r
+   boolean             is_init_done;                                       // Inidcate tmc initialization is done or not.\r
+   rex_tcb_type        *ack_task_ptr;                                      // The task tcb who responses the ack signal to TMC.\r
+\r
+} tmc_data_s_type;\r
+\r
+static tmc_data_s_type tmc_data;\r
+\r
+typedef struct\r
+{\r
+       rex_tcb_type                    handle;\r
+       rex_timer_cnt_type      count;\r
+\r
+} tmc_notify_s_type;\r
+\r
+/* Be ware of the risk in case the max number of task is over 100.\r
+*/\r
+#define TMC_MAX_NUM_OF_TASK  100\r
+\r
+/* wait counter in milliseconds for waiting for acknowledge for\r
+** offline/stop signal from each tasks.\r
+*/\r
+\r
+#define TMC_DEFAULT_WAIT_CNT 50\r
+#define TMC_WAIT_CNT_5SEC    5000\r
+\r
+/* Global variable used to turn write back cache off at run-time for\r
+** debugging. \r
+*/\r
+static boolean tmc_write_back_cache_on = TRUE;\r
+\r
+/*===========================================================================\r
+\r
+            LOCAL DEFINITIONS AND DECLARATIONS FOR MODULE\r
+\r
+This section contains local definitions for constants, macros, types,\r
+variables and other items needed by this module.\r
+\r
+===========================================================================*/\r
+\r
+#ifdef DOG_DYNAMIC_API   /* Dynamic Dog Interface */\r
+#undef  DOG_TMC_RPT\r
+#define DOG_TMC_RPT tmc_dog_rpt_var\r
+dog_report_type tmc_dog_rpt_var = 0;      /* Initial Safety */\r
+\r
+#undef  DOG_TMC_RPT_TIME\r
+#define DOG_TMC_RPT_TIME tmc_dog_rpt_time_var \r
+uint32 tmc_dog_rpt_time_var = 0xffff; /* Initial Safety */\r
+#endif   /* DOG_DYNAMIC_API  */\r
+\r
+/*===========================================================================\r
+=============================================================================\r
+============================= MISCELLANEOUS BLOCK ===========================\r
+================================= FUNCTIONS =================================\r
+=============================================================================\r
+===========================================================================*/\r
+\r
+#if defined(T_MSM7500) && defined(T_FFA) && !defined(FEATURE_I2C_DIRECT_ON_ARM11)\r
+/*===========================================================================\r
+\r
+FUNCTION TMC_POWER_DOWN_USB_OTG\r
+\r
+DESCRIPTION\r
+  This function sends an I2C command to the USB OTG XCVR chip to put it in\r
+  power down mode to save current in sleep state.  Any future I2C command or\r
+  activity will power up the chip again.\r
+\r
+DEPENDENCIES\r
+  The I2C driver must be initialized.\r
+\r
+RETURN VALUE\r
+  None.\r
+\r
+SIDE EFFECTS\r
+  The USB OTG chip in the FFA will be in power down mode (power save mode).\r
+\r
+===========================================================================*/\r
+static void tmc_power_down_usb_otg(void)\r
+{\r
+  i2c_rw_cmd_type   usb_xcvr_i2c_command;\r
+  uint8             i2c_data;\r
+\r
+  /* Mode Control Register 2 - Addr: 0x12 */\r
+  /* Bit 0: global_pwr_dn - set to power down */\r
+  i2c_data = 0x01;\r
+  usb_xcvr_i2c_command.bus_id = I2C_BUS_HW_CTRL;\r
+  usb_xcvr_i2c_command.options = (i2c_options_type)(I2C_REG_DEV |\r
+                                                    I2C_START_BEFORE_READ);\r
+  usb_xcvr_i2c_command.slave_addr = 0x5A;\r
+  usb_xcvr_i2c_command.addr.reg = 0x12;\r
+  usb_xcvr_i2c_command.buf_ptr = &i2c_data;\r
+  usb_xcvr_i2c_command.len = 1;\r
+  i2c_write(&usb_xcvr_i2c_command);\r
+} /* tmc_power_down_usb_otg */\r
+#endif\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_set_ack_task\r
+\r
+DESCRIPTION\r
+  Set task tcb pointer in tmc_data.\r
+\r
+DEPENDENCIES\r
+  None.\r
+\r
+RETURN VALUE\r
+  None.\r
+\r
+SIDE EFFECTS\r
+  None.\r
+\r
+===========================================================================*/\r
+static void tmc_set_ack_task(rex_tcb_type  *tcb_ptr)\r
+{\r
+  tmc_data.ack_task_ptr = tcb_ptr;\r
+} /* tmc_set_ack_task */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_is_ack_task\r
+\r
+DESCRIPTION\r
+  If the specified task tcb pointer is the same as that in tmc_data.\r
+\r
+DEPENDENCIES\r
+  None.\r
+\r
+RETURN VALUE\r
+  None.\r
+\r
+SIDE EFFECTS\r
+  None.\r
+\r
+===========================================================================*/\r
+static boolean tmc_is_ack_task(rex_tcb_type *tcb_ptr)\r
+{\r
+  return (tmc_data.ack_task_ptr == tcb_ptr);\r
+} /* tmc_is_ack_task */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_module_init\r
+\r
+DESCRIPTION\r
+  Initialize timers and queues of Task Main Controller\r
+\r
+DEPENDENCIES\r
+  None\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static void tmc_module_init(void)\r
+{\r
+  unsigned int i;\r
+\r
+  /* Initialize timers */\r
+   rex_def_timer(&tmc_rpt_timer, TASK_HANDLE(tmc), TMC_RPT_TIMER_SIG);\r
+   rex_def_timer(&tmc_wait_timer, TASK_HANDLE(tmc), TMC_WAIT_SIG);\r
+\r
+  /* Initialize queues */\r
+  (void) q_init(&tmc_cmd_q);\r
+  (void) q_init(&tmc_free_cmd_q);\r
+\r
+  /* Link and place each block in command pool into the free command queue.\r
+  ** Initalize command array.The done_q_ptr is for free command buffer back\r
+  ** to free command queue. If the task pointer is non-NULL, signal the task\r
+  ** that the tone is done.\r
+  */\r
+  for ( i=0; i< ARR_SIZE(tmc_cmd_arr); i++)\r
+  {\r
+    tmc_cmd_arr[i].cmd_id = TMC_CMD_TYPE_NONE;\r
+    tmc_cmd_arr[i].hdr.done_q_ptr = &tmc_free_cmd_q;\r
+    tmc_cmd_arr[i].hdr.task_ptr = NULL;\r
+    tmc_cmd_arr[i].hdr.sigs = 0;\r
+    (void) q_link(&tmc_cmd_arr[i],&tmc_cmd_arr[i].hdr.link);\r
+    q_put(&tmc_free_cmd_q, &tmc_cmd_arr[i].hdr.link);\r
+  }\r
+} /* tmc_module_init */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_dog_report\r
+\r
+DESCRIPTION\r
+  Kick watch dog and set watch dog timer\r
+\r
+DEPENDENCIES\r
+  None\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+\r
+static void tmc_dog_report(void)\r
+{\r
+       (void) rex_clr_sigs (TASK_HANDLE(tmc), TMC_RPT_TIMER_SIG);\r
+\r
+#ifdef FEATURE_DOG\r
+\r
+       if (tmc_dog_rpt_time_var > 0) /* Zero means don't report */\r
+       {\r
+               (void) rex_set_timer(&tmc_rpt_timer, tmc_dog_rpt_time_var);\r
+\r
+               dog_report(tmc_dog_rpt_var);\r
+       }\r
+\r
+#endif /* FEATURE_DOG */\r
+\r
+} /* tmc_dog_report */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_wait\r
+\r
+DESCRIPTION\r
+  Suspend TMC from executing until at least one of the specified signals\r
+  in the input mask is set.\r
+\r
+  Note that this function keep reporting to the watchdog while waiting\r
+  for the signal(s) to be set.\r
+\r
+DEPENDENCIES\r
+  tmc_rpt_timer must have been defined with rex_def_timer().\r
+\r
+RETURN VALUE\r
+  rex_sigs_type\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static rex_sigs_type tmc_wait(rex_sigs_type mask)\r
+{\r
+  rex_sigs_type    sigs;\r
+      /* Signals returned by rex_wait */\r
+\r
+  /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+  /* Loop while waiting for one of the specified signals\r
+  ** to be set.\r
+  */\r
+  for( ;; )\r
+  {\r
+    /* Wait on specified signals, as well as,\r
+    ** on the watchdog signal.\r
+    */\r
+    sigs = rex_wait( mask | TMC_RPT_TIMER_SIG );\r
+\r
+    /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+    /* If watchdog signal is set, report back to the watchdog\r
+    */\r
+    if( sigs & TMC_RPT_TIMER_SIG )\r
+    {\r
+      tmc_dog_report();\r
+    }\r
+\r
+    /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+    /* If one or more of the specified signals is set\r
+    ** return now.\r
+    */\r
+    if( sigs & mask )\r
+    {\r
+         return(sigs);\r
+    }\r
+  } /* for ( ;; ) */\r
+} /* tmc_wait */\r
+\r
+static void tmc_define_tasks_common(_TASK_INFO const* p_info, unsigned int dogval)\r
+{\r
+   unsigned int i;\r
+\r
+   TMC_MSG_MED("Creating task : %c%c%c.",\r
+            p_info->t_ident[0],\r
+            p_info->t_ident[1],\r
+            p_info->t_ident[2]);\r
+\r
+   rex_def_task_ext2(p_info->t_handle,\r
+      (unsigned char *)p_info->t_stack, p_info->t_stksz * sizeof(rex_stack_word_type),\r
+      p_info->t_prio, p_info->t_main, TASK_ARGV_NIL, p_info->t_ident, FALSE, dogval);\r
+\r
+   (void) tmc_wait(TMC_ACK_SIG);\r
+   (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);\r
+}\r
+\r
+static void tmc_start_tasks_common(_TASK_INFO const* p_info)\r
+{\r
+   TMC_MSG_MED("Starting task : %c%c%c.",\r
+            p_info->t_ident[0],\r
+            p_info->t_ident[1],\r
+            p_info->t_ident[2]);\r
+\r
+    (void) rex_set_sigs(p_info->t_handle, TASK_START_SIG);\r
+\r
+    (void) tmc_wait(TMC_ACK_SIG);\r
+    (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);\r
+  }\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_get_cmd\r
+\r
+DESCRIPTION\r
+This function dequeue a command from command queue and queue the memory\r
+back to the free command queue\r
+\r
+DEPENDENCIES\r
+Command queue has to be initialized.\r
+\r
+RETURN VALUE\r
+A buffer of type tmc_cmd_type.\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static tmc_cmd_type *tmc_get_cmd(void)\r
+{\r
+   /* Dequeue a command from command queue */\r
+   return(tmc_cmd_type *) q_get(&tmc_cmd_q);\r
+}                                                                          /* tmc_get_cmd */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_free_cmd\r
+\r
+DESCRIPTION\r
+  This function returns a command buffer to the free queue.\r
+\r
+DEPENDENCIES\r
+  Free queue has to be initialized.\r
+\r
+RETURN VALUE\r
+  None\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static void tmc_free_cmd(tmc_cmd_type *cmd_ptr)\r
+{\r
+  /* Enqueue a command into the free queue\r
+  */\r
+  if ( cmd_ptr != NULL )\r
+  {\r
+    /* Enqueue item onto done queue if requested (done_q_ptr != NULL)\r
+    ** Do this before we signal the task so that it has its buffer back\r
+    ** before we call its attention to the fact that the operation has\r
+    ** completed.\r
+    */\r
+      if (cmd_ptr->hdr.done_q_ptr != NULL)\r
+      {\r
+      q_put( cmd_ptr->hdr.done_q_ptr, &cmd_ptr->hdr.link );\r
+    }\r
+\r
+    /* If the task pointer is non-NULL, signal the task that the tone is done.\r
+    ** Note: The pointer was either passed as NULL, or was set to NULL because\r
+    ** the signal was sent elsewhere.\r
+    */\r
+      if (cmd_ptr->hdr.task_ptr != NULL)\r
+      {\r
+      (void) rex_set_sigs( cmd_ptr->hdr.task_ptr, cmd_ptr->hdr.sigs );\r
+    }\r
+  }\r
+} /* tmc_free_cmd */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_offline_tasks\r
+\r
+DESCRIPTION\r
+  The function sends the offline signal to tasks that need to be notified\r
+  of offline. For each task it waits for the task to acknowledge the signal.\r
+\r
+DEPENDENCIES\r
+  Task Main Controller has start.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static void tmc_offline_tasks(void)\r
+{\r
+   rex_sigs_type        received_sigs;\r
+   rex_tcb_type         *tcb_ptr[TMC_MAX_NUM_OF_TASK];\r
+   int                  i=0,num_of_task;          /* number of task counter */\r
+   /* the wait time counter in milliseconds */\r
+   rex_timer_cnt_type   wait_cnt[TMC_MAX_NUM_OF_TASK];\r
+\r
+#ifdef TMC_SLEEP\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(sleep);  /* Sleep task should received the offline signal as earlier as possible. */\r
+#endif /* TMC_SLEEP */\r
+#ifdef FEATURE_NV\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(nv);\r
+#endif /* FEATURE_NV */\r
+#if !defined(FEATURE_THIN_UI) && !defined(FEATURE_UI_CORE_REMOVED)\r
+#ifdef FEATURE_HS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hs);\r
+#endif /* FEATURE_HS */\r
+#endif /* !defined(FEATURE_THIN_UI) && !defined(FEATURE_UI_CORE_REMOVED) */\r
+#ifdef FEATURE_DIAG_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(diag);\r
+#endif /* FEATURE_DIAG_TASK */\r
+#ifdef FEATURE_IG_QDIAG\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(qdiag);\r
+#endif /* FEATURE_IG_QDIAG */\r
+#ifdef FEATURE_UI\r
+      wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+      tcb_ptr[i++] = TASK_HANDLE(ui);\r
+#endif /* FEATURE_UI */\r
+#ifdef FEATURE_CM\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(cm);\r
+#endif /* FEATURE_CM */\r
+#ifdef FEATURE_SND_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(snd);\r
+#endif /* FEATURE_SND_TASK */\r
+#ifdef FEATURE_VOC_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(voc);\r
+#endif /* FEATURE_VOC_TASK */\r
+#ifdef FEATURE_QDSP_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(qdsp);\r
+#endif /* FEATURE_QDSP_TASK */\r
+#ifdef FEATURE_QDSP_RTOS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(adsp_rtos);\r
+#endif /* FEATURE_QDSP_RTOS */\r
+#ifdef FEATURE_IS2000_TDSO\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(tdso);\r
+#endif /* FEATURE_IS2000_TDSO */\r
+#ifdef FEATURE_HDR\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hdrsrch);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hdrrx);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hdrtx);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hdrmc);\r
+#endif /* FEATURE_HDR */\r
+#ifdef FEATURE_HDR_BCMCS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hdrbc);\r
+#endif /* FEATURE_HDR_BCMCS */\r
+#ifdef FEATURE_VBATT_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT ;\r
+   tcb_ptr[i++] = TASK_HANDLE(vbatt) ;\r
+#endif /* FEATURE_VBATT_TASK */\r
+#ifdef TMC_1X\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(rxtx);\r
+#endif /* TMC_1X */\r
+#if defined(FEATURE_AUTH) || defined(FEATURE_RUIM)\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(auth);\r
+#endif /* FEATURE_AUTH || FEATURE_RUIM */\r
+#ifdef FEATURE_DH\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(dh);\r
+#endif /* FEATURE_DH */\r
+#ifdef FEATURE_DOG\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(dog);\r
+#endif /* FEATURE_DOG */\r
+#if defined(FEATURE_CDSMS) || defined(FEATURE_GWSMS)\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(wms);\r
+#endif /* FEATURE_CDSMS || FEATURE_GWSMS */\r
+#ifdef FEATURE_MDSP_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(mdsp);\r
+#endif /* FEATURE_MDSP_TASK */\r
+#if defined(FEATURE_CGPS) && !defined(FEATURE_DISABLE_CGPS)\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(mgpmc);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(pp);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(cc);\r
+#ifdef FEATURE_CGPS_PGI_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(pgi);\r
+#endif /* FEATURE_CGPS_PGI_TASK */\r
+   wait_cnt[i] = TMC_WAIT_CNT_5SEC;\r
+   tcb_ptr[i++] = TASK_HANDLE(cd);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(nf);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(gpsfft);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(lm);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(sm_tm);\r
+#ifdef FEATURE_CGPS_PD_COMMS_TCP_ON_MODEM\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(pdcommtcp);\r
+#endif /* !FEATURE_DATA_ON_APPS */\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(pdcommwms);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(gps_fs);\r
+#ifdef FEATURE_CGPS_LOC_MIDDLEWARE\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(loc_middleware);\r
+#endif // FEATURE_CGPS_LOC_MIDDLEWARE\r
+#endif /* FEATURE_CGPS */\r
+#ifdef FEATURE_XO\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(tcxomgr);\r
+#endif /* FEATURE_XO */\r
+#ifdef FEATURE_MMGSDI\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(gsdi);\r
+#endif /* FEATURE_MMGSDI */\r
+#ifdef FEATURE_FTM_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ftm);\r
+#endif /* FEATURE_FTM_TASK */\r
+#ifdef FEATURE_GSTK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(gstk);\r
+#endif /* FEATURE_GSTK */\r
+#ifdef FEATURE_UIM\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(uim);\r
+#endif /* FEATURE_UIM */\r
+#ifdef FEATURE_BCMCS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(bcdb);\r
+#endif /* FEATURE_BCMCS */\r
+#ifdef FEATURE_JOYST_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(joyst);\r
+#endif  /* FEATURE_JOSYT_TASK */\r
+#ifdef FEATURE_DTV\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(dtv);\r
+#endif /* FEATURE_DTV */\r
+#ifdef FEATURE_PBM_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(pbm);\r
+#endif /* FEATURE_PBM_TASK */\r
+#ifdef FEATURE_APS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(aps);\r
+#endif /* FEATURE_APS */\r
+#ifdef FEATURE_ATS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ats);\r
+#endif /* FEATURE_ATS */\r
+#ifdef FEATURE_PM_SERVER\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(pms);\r
+#endif /* FEATURE_PM_SERVER */\r
+#ifdef FEATURE_QIPCALL\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(qipcall);\r
+#endif  /* FEATURE_QIPCALL */\r
+#ifdef FEATURE_MFLO\r
+#error code not present\r
+#endif  /* FEATURE_MFLO */\r
+#if defined(FEATURE_DISP_TASK) && (!defined(T_MSM7500) || defined(T_MSM7500) && defined(IMAGE_APPS_PROC))\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(disp);\r
+#endif /* FEATURE_DISP_TASK */\r
+#ifdef FEATURE_AVS_SBCENC_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(sbcenc);\r
+#endif\r
+#ifdef FEATURE_UBM_L1\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ubm_l1);\r
+#endif /* FEATURE_UBM_L1 */\r
+#ifdef FEATURE_CHG_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(chg);\r
+#endif /* FEATURE_CHG_TASK */\r
+#ifdef FEATURE_CTA\r
+    wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+    tcb_ptr[i++] = TASK_HANDLE(cta) ;;\r
+#endif /* FEATURE_CTA */\r
+\r
+   (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);\r
+\r
+   /* If total num of offline task are greater than TMC_MAX_NUM_TASKS,\r
+    ** you have to increase TMC_MAX_NUM_TASKS to match the number.\r
+    */\r
+   num_of_task = i ;\r
+\r
+   /* Sending offline signale and timer wait for ACK signale.*/\r
+\r
+   for (i = 0; i < num_of_task; i++)\r
+   {\r
+               QSR_TMC_MSG_MED( 918780172ULL, "Offline task : %c%c%c.",\r
+                                               tcb_ptr[i]->task_name[0],\r
+         tcb_ptr[i]->task_name[1],\r
+         tcb_ptr[i]->task_name[2]);//auto-gen, to change remove 'QSR_' and first param\r
+\r
+      (void) rex_set_sigs(tcb_ptr[i], TASK_OFFLINE_SIG);\r
+\r
+      /* Report dog first so that it would not timer out immediately after we are\r
+       ** waiting for ack signal from other tasks.\r
+       */\r
+      tmc_dog_report();\r
+\r
+      /* Set the Sanity Timer to avoid having the possibility of\r
+       ** losing the time when the wrong Task Acks back after\r
+       ** it had timed out\r
+       */\r
+      (void) rex_set_timer (&tmc_wait_timer, wait_cnt[i]);\r
+\r
+      do\r
+      {\r
+         /* Wait for either the Sanity Timer to Expire or\r
+          ** the TMC_ACK_SIG To occur\r
+          */\r
+         received_sigs = rex_wait(TMC_ACK_SIG | TMC_WAIT_SIG);\r
+\r
+         (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);\r
+         /* Get out only, if the task that acks back\r
+          ** is the task that we are waiting for\r
+          */\r
+      } while( !tmc_is_ack_task( tcb_ptr[i] ) &&\r
+         !(received_sigs & TMC_WAIT_SIG) );\r
+\r
+      (void) rex_clr_timer(&tmc_wait_timer);\r
+\r
+      (void) rex_clr_sigs(rex_self(), TMC_WAIT_SIG);\r
+\r
+      if (received_sigs & TMC_WAIT_SIG)\r
+      {\r
+         QSR_TMC_MSG_ERROR( 2284056914ULL, "Offline timer out task : %c%c%c.",\r
+            tcb_ptr[i]->task_name[0],\r
+            tcb_ptr[i]->task_name[1],\r
+            tcb_ptr[i]->task_name[2]);//auto-gen, to change remove 'QSR_' and first param\r
+      }\r
+   }\r
+} /* tmc_offline_tasks */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_stop_tasks\r
+  The function sends the stop signal to each task then waits for\r
+  the task to acknowledge the signal.\r
+\r
+DEPENDENCIES\r
+  Task Main Controller has start.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  void\r
+\r
+===========================================================================*/\r
+static void  tmc_stop_tasks(void)\r
+{\r
+   rex_sigs_type        received_sigs;                   /* Received signal */\r
+   rex_tcb_type         *tcb_ptr[TMC_MAX_NUM_OF_TASK];   /* Stop task array */\r
+   int                  i=0,num_of_task;          /* number of task counter */\r
+   /* the wait time counter in milliseconds */\r
+   rex_timer_cnt_type   wait_cnt[TMC_MAX_NUM_OF_TASK];\r
+\r
+#ifdef FEATURE_DOG\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(dog);\r
+#endif /* FEATURE_DOG */\r
+#ifdef TMC_SLEEP\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(sleep);\r
+#endif /* TMC_SLEEP */\r
+#ifdef FEATURE_DH\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(dh);\r
+#endif /* FEATURE_DH */\r
+#ifdef FEATURE_ONCRPC\r
+#ifdef FEATURE_STA\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(sta);\r
+#endif /* FEATURE_STA */\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(oncrpc);\r
+#endif /* FEATURE_ONCRPC */\r
+#if defined(FEATURE_WLAN) && !defined(FEATURE_MULTIPROCESSOR)\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(wlan_cp);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(wlan_trp);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(wlan_sec);\r
+#if defined(FEATURE_WLAN_DECOUPLE_DS)\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(wlan_ds);\r
+#endif\r
+#endif  /* FEATURE_WLAN && !FEATURE_MULTIPROCESSOR */\r
+#if defined(FEATURE_DATA) && !defined(FEATURE_DATA_ON_APPS)\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ds);\r
+#ifdef FEATURE_DATA_PS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ps);\r
+#ifdef FEATURE_DATA_PS_DCC\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(dcc);\r
+#endif /* FEATURE_DATA_PS_DCC */\r
+#ifdef FEATURE_DATA_PS_SOCK_REARCH\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ds_sig);\r
+#endif /* FEATURE_DATA_PS_SOCK_REARCH */\r
+#endif /* FEATURE_DATA_PS */\r
+#ifdef FEATURE_DATA_MUX\r
+#error code not present\r
+#endif\r
+#endif /* defined(FEATURE_DATA) && !defined FEATURE_DATA_ON_APPS) */\r
+#ifdef FEATURE_DATA\r
+#ifdef FEATURE_COMP_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(comp);\r
+#endif /* FEATURE_COMP_TASK */\r
+#endif\r
+#if defined(FEATURE_GAN) && !(defined(IMAGE_APPS_PROC))\r
+#error code not present\r
+#endif\r
+#ifdef FEATURE_GAN\r
+#error code not present\r
+#endif\r
+#ifndef FEATURE_SEC_PROCESS_INIT\r
+#ifdef FEATURE_IXHTTPSVC\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ix_httpsvc);\r
+#endif\r
+#ifdef FEATURE_IXTIMESVC\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ix_timesvc);\r
+#endif\r
+#ifdef FEATURE_IXCONTENTSVC\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ix_contentclnt);\r
+#endif\r
+#endif /* !FEATURE_SEC_PROCESS_INIT */\r
+#ifdef FEATURE_IXCONTENTSVC\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ix_contentsvc);\r
+#endif\r
+#ifndef FEATURE_SEC_PROCESS_INIT\r
+#ifdef FEATURE_IXDESCRAMBLERSVC\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ix_descramblersvc);\r
+#endif\r
+#ifdef FEATURE_SEC\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(sec);\r
+#ifdef FEATURE_SEC_CONTENT_AGENT\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(contentagentdiag);\r
+#endif\r
+#ifdef FEATURE_SEC_ARM_CRYPTO\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(seccryptarm);\r
+#endif\r
+#ifdef FEATURE_SECRND\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(secrnd);\r
+#endif\r
+#ifdef FEATURE_SEC_USFS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(sfs);\r
+#endif\r
+#endif /* FEATURE_SEC */\r
+#endif /* !FEATURE_SEC_PROCESS_INIT */\r
+#ifdef FEATURE_SEC\r
+#ifdef FEATURE_SSD\r
+       wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+       tcb_ptr[i++] = TASK_HANDLE(ssd);\r
+#endif\r
+#ifdef FEATURE_SEC_SSL\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(secssl);\r
+#endif /* FEATURE_SEC_SSL */\r
+#if defined(FEATURE_SEC_SSL_TESTAPP) || defined(FEATURE_SEC_CRYPT_TESTAPP)\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(sectestapp);\r
+#endif /* FEATURE_SEC_SSL_TESTAPP || FEATURE_SEC_CRYPT_TESTAPP */\r
+#ifdef FEATURE_SEC_IPSEC\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(secips);\r
+#endif\r
+#ifdef FEATURE_SEC_DRM\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(secdrm);\r
+#endif /* FEATURE_SEC_DRM */\r
+#endif /* FEATURE_SEC */\r
+#ifdef FEATURE_DS_SOCKETS_TEST_TCP\r
+#error code not present\r
+#endif /* FEATURE_DS_SOCKETS_TEST_TCP */\r
+#ifdef FEATURE_DS_SOCKETS_TEST_UDP\r
+#error code not present\r
+#endif /* FEATURE_DS_SOCKETS_TEST_UDP */\r
+#ifdef FEATURE_QMIP\r
+#error code not present\r
+#endif /* FEATURE_QMIP */\r
+#ifdef FEATURE_IS2000_TDSO\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(tdso);\r
+#endif /* FEATURE_IS2000_TDSO */\r
+#if defined(FEATURE_AUTH) || defined(FEATURE_RUIM)\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(auth);\r
+#endif /* FEATURE_AUTH || FEATURE_RUIM */\r
+#ifdef FEATURE_HDR\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hdrsrch);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hdrrx);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hdrtx);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hdrmc);\r
+#endif /* FEATURE_HDR */\r
+#ifdef FEATURE_HDR_BCMCS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hdrbc);\r
+#endif /* FEATURE_HDR_BCMCS */\r
+#ifdef FEATURE_VBATT_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT ;\r
+   tcb_ptr[i++] = TASK_HANDLE(vbatt) ;\r
+#endif /* FEATURE_VBATT_TASK */\r
+#ifdef TMC_1X\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(rxtx);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(srch);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(rx);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(tx);\r
+#endif /* TMC_1X */\r
+#ifdef FEATURE_CM\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(cm);\r
+#endif /* FEATURE_CM */\r
+#if defined( FEATURE_BT ) && !defined(IMAGE_MODEM_PROC)\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(bt);\r
+#ifdef FEATURE_BT_FS_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(bt_fs);\r
+#endif /* FEATURE_BT_FS_TASK */\r
+#endif /* FEATURE_BT && !IMAGE_MODEM_PROC */\r
+#ifdef FEATURE_FM\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(fmrds);\r
+#endif /* FEATURE_FM */\r
+#ifdef FEATURE_IG_QDIAG\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(qdiag);\r
+#endif /* FEATURE_IG_QDIAG */\r
+#ifdef FEATURE_DIAG_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(diag);\r
+#endif /* FEATURE_DIAG_TASK */\r
+#if !defined(FEATURE_THIN_UI) && !defined(FEATURE_UI_CORE_REMOVED)\r
+#ifdef FEATURE_HS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hs);\r
+#endif /* FEATURE_HS */\r
+#endif /* !defined(FEATURE_THIN_UI) && !defined(FEATURE_UI_CORE_REMOVED) */\r
+#ifdef FEATURE_IDS\r
+#error code not present\r
+#endif /* FEATURE_IDS */\r
+#if defined(FEATURE_USB) && !defined(FEATURE_NO_USB_HW_ON_PROCESSOR)\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(usbdc);\r
+#ifdef FEATURE_USB_HOST_ENHANCED\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(usbhc_urb);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(usbhc_dev);\r
+#if defined(FEATURE_USB_HOST_TEST_ENHANCED) && (defined(FEATURE_USB_HOST_MASS_STORAGE_TEST_ENHANCED) || defined(FEATURE_USB_HOST_HID_TEST_ENHANCED))\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(usbhc_test);\r
+#endif\r
+#endif\r
+#endif /* FEATURE_USB */\r
+#if defined(FEATURE_HS_USB) && (defined(FEATURE_STANDALONE_MODEM) || !defined(FEATURE_NO_USB_HW_ON_PROCESSOR))\r
+#ifdef FEATURE_HS_USB_MS_FD\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hsu_al_ms);\r
+#endif\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(hsu_al_task);\r
+#endif /* FEATURE_HS_USB && (FEATURE_STANDALONE_MODEM || !FEATURE_NO_USB_HW_ON_PROCESSOR) */\r
+#ifdef FEATURE_SMD\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(smd);\r
+#endif /*FEATURE_SMD*/\r
+#ifdef FEATURE_TIME_IPC_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(time_ipc);\r
+#endif /*FEATURE_TIME_IPC_TASK */\r
+#ifdef FEATURE_NV\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(nv);\r
+#endif /* FEATURE_NV */\r
+#ifdef FEATURE_VS_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(vs);\r
+#endif /* FEATURE_VS_TASK */\r
+#ifdef FEATURE_GRAPH_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(graph);\r
+#endif /* FEATURE_GRAPH_TASK */\r
+#ifdef FEATURE_GFX_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(gfx);\r
+#endif /* FEATURE_GFX_TASK */\r
+#ifdef FEATURE_CAMERA_DRV_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(camera_drv);\r
+#endif /* FEATURE_CAMERA_DRV_TASK */\r
+#ifdef FEATURE_SND_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(snd);\r
+#endif /* FEATURE_SND_TASK */\r
+#ifdef FEATURE_VOC_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(voc);\r
+#endif /* FEATURE_VOC_TASK */\r
+#ifdef FEATURE_QDSP_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(qdsp);\r
+#endif /* FEATURE_QDSP_TASK */\r
+#ifdef FEATURE_QDSP_RTOS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(adsp_rtos);\r
+#endif /* FEATURE_QDSP_RTOS */\r
+#ifndef FEATURE_SEC_PROCESS_INIT\r
+#ifdef FEATURE_IXFILESVC\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ix_filesvc);\r
+#endif\r
+#ifdef FEATURE_IXSQLSVC\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ix_sqlsvc);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ix_sqlclnt);\r
+#endif\r
+#endif /* !FEATURE_SEC_PROCESS_INIT */\r
+#ifdef FEATURE_EFS_SFAT\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(sfat);\r
+#endif /* FEATURE_EFS_SFAT */\r
+#ifdef FEATURE_EFS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(fs);\r
+#endif /* FEATURE_EFS */\r
+#if ( defined(FEATURE_CDSMS) || defined(FEATURE_GWSMS) )\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(wms);\r
+#endif /* FEATURE_CDSMS || FEATURE_GWSMS */\r
+#ifdef FEATURE_MDSP_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(mdsp);\r
+#endif /* FEATURE_MDSP_TASK */\r
+#if (defined(FEATURE_CGPS) && !defined(FEATURE_DISABLE_CGPS))\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(mgpmc);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(pp);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(cc);\r
+#ifdef FEATURE_CGPS_PGI_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(pgi);\r
+#endif /* FEATURE_CGPS_PGI_TASK */\r
+   wait_cnt[i] = TMC_WAIT_CNT_5SEC;\r
+   tcb_ptr[i++] = TASK_HANDLE(cd);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(nf);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(gpsfft);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(lm);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(sm_tm);\r
+#ifdef FEATURE_CGPS_PD_COMMS_TCP_ON_MODEM\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(pdcommtcp);\r
+#endif /* !FEATURE_DATA_ON_APPS */\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(pdcommwms);\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(gps_fs);\r
+#ifdef FEATURE_CGPS_LOC_MIDDLEWARE\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(loc_middleware);\r
+#endif // FEATURE_CGPS_LOC_MIDDLEWARE\r
+#endif /* FEATURE_CGPS */\r
+#ifdef FEATURE_MMGSDI\r
+   wait_cnt[i] = TMC_WAIT_CNT_5SEC;\r
+   tcb_ptr[i++] = TASK_HANDLE(gsdi);\r
+#endif /* FEATURE_MMGSDI */\r
+#ifdef FEATURE_FTM_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ftm);\r
+#endif /* FEATURE_FTM_TASK */\r
+#ifdef FEATURE_GSTK\r
+   wait_cnt[i] = TMC_WAIT_CNT_5SEC;\r
+   tcb_ptr[i++] = TASK_HANDLE(gstk);\r
+#endif /* FEATURE_GSTK */\r
+#ifdef FEATURE_UIM\r
+   wait_cnt[i] = TMC_WAIT_CNT_5SEC;\r
+   tcb_ptr[i++] = TASK_HANDLE(uim);\r
+#endif /* FEATURE_UIM */\r
+#if defined( FEATURE_BT ) && !defined(IMAGE_MODEM_PROC)\r
+#ifdef FEATURE_BT_EXTPF\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(bt_pf);\r
+#endif /* FEATURE_BT_EXTPF */\r
+#endif\r
+#ifdef FEATURE_BT_FTM_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(bt_ftm);\r
+#endif\r
+#ifdef FEATURE_BCMCS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(bcdb);\r
+#endif /* FEATURE_BCMCS */\r
+#ifdef FEATURE_DTV\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(dtv);\r
+#endif /* FEATURE_DTV */\r
+#ifdef FEATURE_JOYST\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcp_ptr[i++] = TASK_HANDLE(joyst);\r
+#endif  /* FEATURE_JOYST */\r
+#ifdef FEATURE_PBM_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(pbm);\r
+#endif /* FEATURE_PBM_TASK */\r
+#ifdef FEATURE_APS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(aps);\r
+#endif /* FEATURE_APS */\r
+#ifdef FEATURE_ATS\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ats);\r
+#endif /* FEATURE_ATS */\r
+#ifdef FEATURE_PM_SERVER\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(pms);\r
+#endif /* FEATURE_PM_SERVER */\r
+#ifdef FEATURE_QIPCALL\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(qipcall);\r
+#endif  /* FEATURE_QIPCALL */\r
+#ifdef FEATURE_MFLO\r
+#error code not present\r
+#endif  /* FEATURE_MFLO */\r
+#ifdef FEATURE_AVS_SBCENC_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(sbcenc);\r
+#endif\r
+#ifdef FEATURE_FTM_CAMERA_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ftm_camera);\r
+#endif /*FEATURE_FTM_CAMERA_TASK */\r
+#ifdef FEATURE_UBM_L1\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(ubm_l1);\r
+#endif /* FEATURE_UBM_L1 */\r
+#if defined(FEATURE_SENSORS)\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(sns);\r
+#endif /* FEATURE_SENSORS */\r
+#ifdef FEATURE_CTA\r
+    wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+    tcb_ptr[i++] = TASK_HANDLE(cta);\r
+#endif /* FEATURE_CTA */\r
+#ifdef FEATURE_CHG_TASK\r
+   wait_cnt[i] = TMC_DEFAULT_WAIT_CNT;\r
+   tcb_ptr[i++] = TASK_HANDLE(chg);\r
+#endif /* FEATURE_CHG_TASK */\r
+#ifdef FEATURE_UI\r
+      wait_cnt[i] = TMC_WAIT_CNT_5SEC;\r
+      tcb_ptr[i++] = TASK_HANDLE(ui);\r
+#endif /* FEATURE_UI */\r
+\r
+   (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);\r
+\r
+   /* If total num of stop task are greater than TMC_MAX_NUM_TASKS,\r
+    ** you have to increase TMC_MAX_NUM_TASKS to match the number.\r
+    */\r
+   num_of_task = i ;\r
+\r
+   /* Sending stop signale and timed wait for ACK signale.*/\r
+\r
+   for (i = 0; i < num_of_task; i++)\r
+   {\r
+\r
+               QSR_TMC_MSG_MED( 2835790621ULL, "Stop task : %c%c%c.",\r
+                                               tcb_ptr[i]->task_name[0],\r
+         tcb_ptr[i]->task_name[1],\r
+         tcb_ptr[i]->task_name[2]);//auto-gen, to change remove 'QSR_' and first param\r
+\r
+      (void) rex_set_sigs(tcb_ptr[i], TASK_STOP_SIG);\r
+      /* Report dog first so that it would not timer out immediately after we are\r
+       ** waiting for ack signal from other tasks.\r
+       */\r
+      tmc_dog_report();\r
+\r
+      /* Set the Sanity Timer to avoid having the possibility of\r
+       ** losing the time when the wrong Task Acks back after\r
+       ** it had timed out\r
+       */\r
+      (void) rex_set_timer (&tmc_wait_timer, wait_cnt[i]);\r
+\r
+      do\r
+      {\r
+         /* Wait for either the Sanity Timer to Expire or\r
+          ** the TMC_ACK_SIG To occur\r
+          */\r
+         received_sigs = rex_wait(TMC_ACK_SIG | TMC_WAIT_SIG);\r
+\r
+         (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);\r
+         /* Get out only, if the task that acks back\r
+          ** is the task that we are waiting for\r
+          */\r
+      } while( !tmc_is_ack_task( tcb_ptr[i] ) &&\r
+         !(received_sigs & TMC_WAIT_SIG) );\r
+\r
+      (void) rex_clr_timer(&tmc_wait_timer);\r
+\r
+      (void) rex_clr_sigs(rex_self(), TMC_WAIT_SIG);\r
+\r
+      if(received_sigs & TMC_WAIT_SIG)\r
+      {\r
+         QSR_TMC_MSG_ERROR( 3180694873ULL, "Stop timer out task : %c%c%c.",\r
+            tcb_ptr[i]->task_name[0],\r
+            tcb_ptr[i]->task_name[1],\r
+            tcb_ptr[i]->task_name[2]);//auto-gen, to change remove 'QSR_' and first param\r
+      }\r
+   }\r
+} /* tmc_stop_tasks */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_online_handler\r
+\r
+DESCRIPTION\r
+  This function is called when the MS is to transition to the  online\r
+  state. The function processes the reset procedures.\r
+\r
+DEPENDENCIES\r
+  Task Main Controller has start.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static void tmc_online_handler(void)\r
+{\r
+   if ( tmc_get_state() == TMC_LPM )\r
+   {\r
+#ifdef TMC_HW_IMPLEMENT_LPM\r
+      TMC_VOID_FUNCTION_CALL(hw_exit_low_power_mode);\r
+#endif /* TMC_HW_IMPLEMENT_LPM */\r
+   }\r
+}/* tmc_online__handler */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_offline_handler\r
+\r
+DESCRIPTION\r
+  This function is called when the MS is to transition to the OFFLINE\r
+  state. The function processes the offline command.\r
+\r
+DEPENDENCIES\r
+  Task Main Controller has start.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  None\r
+===========================================================================*/\r
+static void tmc_offline_handler(void)\r
+{\r
+  tmc_offline_tasks();  /* send task offline signals */\r
+\r
+#if (defined(FEATURE_DIAG_TASK) && defined(FEATURE_DIAG_COUPLED_ARCHITECTURE))\r
+   (void) rex_set_sigs(TASK_HANDLE(diag), DIAG_OFFLINE_COMPLETE_SIG);    /* Send Offline complete signal to diag task in the end. */\r
+#endif /* FEATURE_DIAG_TASK && FEATURE_DIAG_COUPLED_ARCHITECTURE */\r
+\r
+#ifdef FEATURE_UIM_RUIM\r
+\r
+    (void) uim_power_control(UIM_MC, FALSE);    /* Indicate to power down the RUIM */\r
+#endif /* FEATURE_UIM_RUIM */\r
+}/* tmc_offline_handler */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_reset_handler\r
+\r
+DESCRIPTION\r
+  This function is called when the MS is to transition to the reset\r
+  state. The function processes the reset procedures.\r
+\r
+DEPENDENCIES\r
+  Task Main Controller has start.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static void tmc_reset_handler(void)\r
+{\r
+#ifdef FEATURE_SDCC_BOOT\r
+   {\r
+      /* if we're using eMMC boot, prepare the modem file system for reset */\r
+\r
+      extern int efs_prepare_shutdown(void);\r
+\r
+               dog_task_disable(TRUE); /*Temp workaround to disable s/w wdog as efs_prepare_shutdown takes too long */\r
+\r
+      (void)efs_prepare_shutdown();\r
+   }\r
+#endif\r
+\r
+#ifdef FEATURE_UIM_RUIM\r
+     (void) uim_power_control(UIM_MC, FALSE);     /* Indicate to power down the RUIM */\r
+#endif /* FEATURE_UIM_RUIM */\r
+\r
+   tmc_stop_tasks();   /* Send stop signal to various tasks. */\r
+\r
+   TMC_VOID_FUNCTION_CALL(hw_reset);   /* Finish the reset process */\r
+\r
+}/* tmc_reset_handler */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_powerdown_handler\r
+\r
+DESCRIPTION\r
+  This function is called when the MS is to transition to the power down\r
+  state. The function processes the powerdown command.\r
+\r
+DEPENDENCIES\r
+  Task Main Controller has start.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+void tmc_powerdown_handler(void)\r
+{\r
+#ifdef FEATURE_UIM_RUIM\r
+   (void) uim_power_control(UIM_MC, FALSE);    /* Indicate to power down the RUIM */\r
+#endif /* FEATURE_UIM_RUIM */\r
+\r
+#if defined(FEATURE_TMC_TCXOMGR) || defined(FEATURE_TCXOMGR_TMC)\r
+   {\r
+      // void tcxomgr_powerdown(rex_tcb_type*, rex_sigs_type, void*);\r
+      tcxomgr_powerdown(rex_self(), TMC_NV_CMD_SIG, (void (*)( rex_sigs_type ))tmc_wait);   /* Power off the TCXO manager */\r
+   }\r
+#endif\r
+\r
+   tmc_stop_tasks();   /* Send stop signal to various tasks. */\r
+\r
+   TMC_VOID_FUNCTION_CALL(hw_power_off);   /* Finish the power down process */\r
+\r
+}/* tmc_powerdown_handler */\r
+\r
+/*===========================================================================\r
+\r
+LOCAL FUNCTION TMC_LPM_HANDLER\r
+\r
+DESCRIPTION\r
+\r
+  This function handles the low power mode signal\r
+\r
+DEPENDENCIES\r
+\r
+  None.\r
+\r
+RETURN VALUE\r
+\r
+  None.\r
+\r
+SIDE EFFECTS\r
+\r
+  None.\r
+\r
+===========================================================================*/\r
+static void tmc_lpm_handler(void)\r
+{\r
+#ifdef TMC_HW_IMPLEMENT_LPM\r
+   hw_enter_low_power_mode();\r
+#endif /* TMC_HW_IMPLEMENT_LPM */\r
+}\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_set_state\r
+\r
+DESCRIPTION\r
+  Set tmc operation state.\r
+\r
+DEPENDENCIES\r
+  None.\r
+\r
+RETURN VALUE\r
+  None.\r
+\r
+SIDE EFFECTS\r
+  None.\r
+\r
+===========================================================================*/\r
+static void tmc_set_state(tmc_state_e_type state)\r
+{\r
+  tmc_data.state = state;\r
+} /* tmc_set_state */\r
+\r
+#ifdef FEATURE_UIM_RUIM\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_store_esn_me\r
+\r
+DESCRIPTION\r
+  This function store esn_me to TMC internal data structure.\r
+\r
+DEPENDENCIES\r
+  None\r
+\r
+RETURN\r
+  None\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static void tmc_store_esn_me (dword esn_me)\r
+{\r
+  tmc_data.esn_me = esn_me;\r
+} /* tmc_store_esn_me */\r
+#endif /* FEATURE_UIM_RUIM */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_set_init_state\r
+\r
+DESCRIPTION\r
+  Set tmc initialization state.\r
+\r
+DEPENDENCIES\r
+  None.\r
+\r
+RETURN VALUE\r
+  None.\r
+\r
+SIDE EFFECTS\r
+  None.\r
+\r
+===========================================================================*/\r
+static void tmc_set_init_state(boolean init_state)\r
+{\r
+  tmc_data.is_init_done = init_state;\r
+} /* tmc_set_state */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_data_reset\r
+\r
+DESCRIPTION\r
+  Reset TMC data.\r
+\r
+DEPENDENCIES\r
+  None.\r
+\r
+RETURN VALUE\r
+  None.\r
+\r
+SIDE EFFECTS\r
+  None.\r
+\r
+===========================================================================*/\r
+static void tmc_data_reset(void)\r
+{\r
+#ifdef FEATURE_UIM_RUIM\r
+  tmc_data.esn_me = 0 ;\r
+#endif\r
+  tmc_data.state = TMC_PWROFF ;\r
+} /* tmc_set_state */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_dispatch_commands\r
+\r
+DESCRIPTION\r
+  This function handles the commands received in TMC's command queue.\r
+  This function dequeues each command in the command queue\r
+  until the command queue is empty. For each command, it looks at\r
+  the command ID and handles it appropriately. Then it frees the command.\r
+\r
+DEPENDENCIES\r
+  None.\r
+\r
+RETURN VALUE\r
+  None.\r
+\r
+SIDE EFFECTS\r
+  None.\r
+\r
+===========================================================================*/\r
+static void  tmc_dispatch_commands(void)\r
+{\r
+        tmc_cmd_type               *cmd_ptr;    /* To hold received command */\r
+\r
+  /* We need to dequeue items from the internal\r
+  ** command queue and process them till the queue is\r
+  ** empty\r
+  */\r
+\r
+  while( (cmd_ptr = tmc_get_cmd()) != NULL)\r
+  {\r
+    /* Switch on the command id of the received command, and\r
+    ** call the appropriate function to process each command.\r
+    */\r
+    switch( cmd_ptr->cmd_id )\r
+    {\r
+      case TMC_CMD_TYPE_ONLINE:\r
+        tmc_online_handler();\r
+        tmc_set_state(TMC_ONLINE);\r
+        break;\r
+\r
+      case TMC_CMD_TYPE_OFFLINE:\r
+        tmc_offline_handler();\r
+        tmc_set_state(TMC_OFFLINE);\r
+        break;\r
+\r
+      case TMC_CMD_TYPE_RESET:\r
+        tmc_reset_handler();\r
+        tmc_set_state(TMC_RESET);\r
+        break;\r
+\r
+      case TMC_CMD_TYPE_RESET_MODEM:\r
+        tmc_set_state(TMC_RESET_MODEM);  \r
+        TMC_ERR_FATAL(" MODEM RESET",0, 0, 0 );\r
+        break;\r
+\r
+      case TMC_CMD_TYPE_POWERDOWN:\r
+        tmc_powerdown_handler();\r
+        tmc_set_state(TMC_PWROFF);\r
+        break;\r
+\r
+      case TMC_CMD_TYPE_LPM:\r
+        tmc_lpm_handler();\r
+        tmc_set_state(TMC_LPM);\r
+        break;\r
+\r
+      default:\r
+          /* receive a invalid command*/\r
+          TMC_ERR("A invalid command",0,0,0);\r
+          break;\r
+      } /* switch */\r
+\r
+      /* Free the command.\r
+      */\r
+      tmc_free_cmd( cmd_ptr );\r
+\r
+    } /* end while */\r
+} /* tmc_dispatch_command */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_order_0_init\r
+\r
+DESCRIPTION\r
+  This function does first part of power up initialization. The\r
+  initialization is required before any tasks is defined or started.\r
+\r
+DEPENDENCIES\r
+  None\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static void tmc_order_0_init(void)\r
+{\r
+#if defined(TIMETEST)\r
+   L4_MSM_TIMETEST_ENABLE(TRUE);\r
+#endif\r
+\r
+#ifdef FEATURE_L4_RECENT_THREADS\r
+   /* Turn profiling (recent_threads) on */\r
+   L4_MSM_PROFILE(1);\r
+#endif\r
+\r
+#ifdef FEATURE_TMC_WB_CACHE\r
+   if (tmc_write_back_cache_on)\r
+   {\r
+      thread_ref_t tIgnore;\r
+      memsection_ref_t ms;\r
+\r
+      ms = memsection_lookup(TASK_STACK(dog), &tIgnore);\r
+\r
+      memsection_set_attributes(ms, L4_WriteBackMemory);\r
+   }\r
+#endif\r
+\r
+   /*                    Generic Initialization                             */\r
+\r
+#ifdef FEATURE_SMEM\r
+   /* Init the shared memory data structure */\r
+   TMC_VOID_FUNCTION_CALL(smem_init);\r
+   TMC_VOID_FUNCTION_CALL(mobile_init_modem_sw_build_id);\r
+   TMC_VOID_FUNCTION_CALL(smem_proc_comm_init);\r
+#endif /* FEATURE_SMEM */\r
+\r
+#ifdef FEATURE_PMEM\r
+#ifdef PMEM_7K_INIT\r
+       TMC_VOID_FUNCTION_CALL(pmem_module_init); /* Initialize the pmem system */\r
+   TMC_VOID_FUNCTION_CALL(pmem_7k_init_smi);\r
+#else\r
+   TMC_VOID_FUNCTION_CALL(pmem_7k_modem_init);\r
+#endif\r
+#endif\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   tmcnv_init(TMC_NV_CMD_SIG, TMC_RPT_TIMER_SIG, tmc_dog_report);   /* Initialize TMC NV-Interface */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_ENABLE_FLOATING_POINT_ERRORS\r
+   TMC_VOID_FUNCTION_CALL(boot_enable_fp_errors);\r
+#endif\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   TMC_VOID_FUNCTION_CALL(msg_init);                                          /* MSG services       */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   TMC_VOID_FUNCTION_CALL(dsm_init);                                          /* Data services      */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_REX_IPC                             /* IPC header file    */\r
+   TMC_VOID_FUNCTION_CALL(ipcmem_pool_init);\r
+   TMC_VOID_FUNCTION_CALL(tsvc_init);\r
+#endif\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   mem_init_heap(&tmc_heap, tmc_heap_mem_buffer, TMC_HEAP_MEM_BUFFER_SIZE, NULL);\r
+   mem_init_heap(&tmc_heap_small, tmc_heap_small_mem_buffer, TMC_HEAP_SMALL_MEM_BUFFER_SIZE, NULL);\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef TMC_BIO_INIT\r
+   TMC_VOID_FUNCTION_CALL(bio_init);                                          /* BIO initialization. */\r
+#endif /* TMC_BIO_INIT */\r
+\r
+   TMC_VOID_FUNCTION_CALL(npa_init);                                          /* Initialize NPA */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+       TMC_VOID_FUNCTION_CALL(clk_regime_init);                                   /* Init the clock regime to a known state. */\r
+\r
+   TMC_VOID_FUNCTION_CALL(ddr_init);                                          /* Init DDR to a known state. */\r
+\r
+   TMC_VOID_FUNCTION_CALL(CoreCpuInitialize);                                 /* Initialize the /core/cpu node */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   TMC_VOID_FUNCTION_CALL(tramp_init);                                        /* Interrupt initialization */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef KILL_EBI0_CLOCK\r
+#if defined(FEATURE_BUSPERF)\r
+   TMC_VOID_FUNCTION_CALL(bus_init);                                          /* Initialize the bus performance subsystem */\r
+#endif /* FEATURE_BUSPERF */\r
+#endif\r
+\r
+#if defined(FEATURE_BUSMON)\r
+#error code not present\r
+#endif /* FEATURE_BUSMON */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_SMSM\r
+   smsm_init(SMSM_MODEM);   /* shared memory state machine init */\r
+   smsm_set_state(SMSM_THIS_HOST, SMSM_OEMSBL_RELEASE);   /* Give apps process access to the OEM SBL section */\r
+#endif /* FEATURE_SMSM */\r
+\r
+#ifdef FEATURE_DOG_KEEPALIVE_TASK\r
+       TMC_VOID_FUNCTION_CALL(dog_keepalive_init);\r
+#endif\r
+\r
+#ifdef FEATURE_SMEM_LOG\r
+   TMC_VOID_FUNCTION_CALL(smem_log_init);   /* shared memory event log init */\r
+#endif /* FEATURE_SMEM_LOG */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_DMOV\r
+   {\r
+      void dmov_init(void*);\r
+      /* Initialize DMOV data mover driver */\r
+      /* The DMOV init on the modem process must happen before the DMOV init\r
+      on the apps processor. So by placing the init on the modem processor\r
+      before time_init. We know the the apps processor has not passed\r
+      time_init and therefore has not reached DMOV init. */\r
+      (void)dmov_init(NULL);\r
+   }\r
+#endif\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_USE_TIME_VU\r
+\r
+   TMC_VOID_FUNCTION_CALL(time_init);                                         /* Time services      */\r
+\r
+#ifdef FEATURE_TIMER_TASK\r
+\r
+   rex_def_task_ext2(TASK_HANDLE(timer),\r
+      (unsigned char*)TASK_STACK(timer),\r
+      TIMER_STACK_SIZ * sizeof(rex_stack_word_type),\r
+      TIMER_PRI,\r
+      TASK_MAIN(timer),\r
+      TASK_ARGV_NIL,\r
+      TASK_IDENT(timer),\r
+      FALSE,\r
+      TASK_NODOG_RPT);\r
+\r
+       // THIS TASK IS NOT IMPLEMENTED TO RESPOND TO THE REQUIRED\r
+       // TMC SIGNALING PROTOCOL.\r
+\r
+   //   (void) tmc_wait(TMC_ACK_SIG);\r
+   //   (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);\r
+\r
+#endif /* FEATURE_TIMER_TASK */\r
+#endif /* FEATURE_USE_TIME_VU */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+   /* Multi-processor SHIM layer */\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if defined(FEATURE_DATA_ON_APPS) && defined(FEATURE_CDMA)\r
+   TMC_VOID_FUNCTION_CALL(ds_mp_shim_modem_power_up_init);\r
+#endif /* FEATURE_DATA_ON_APPS */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /* If FEATURE_PROGRESSIVE_BOOT is defined, then the time tick interrupt is\r
+   serviced in the task context. The interrupt task should be started\r
+   before enabling the interrupt so that the task is running when an\r
+   interrupt accurrs\r
+*/\r
+\r
+#if defined(FEATURE_PROGRESSIVE_BOOT) && !defined(FEATURE_TIMER_TASK)\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(interrupt), DOG_INTERRUPT_RPT);\r
+\r
+#endif /* FEATURE_PROGRESSIVE_BOOT && !FEATURE_TIMER_TASK */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   TMC_VOID_FUNCTION_CALL(sleepctl_init);                                     /* Initialize Sleep controller */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   gpio_int_init();                     /* Initialize GPIO interrupt handler*/\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   _enable();                    /* Enable interrupts and start processing. */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef TMC_HW_INIT\r
+   hw_init(0);   /* Miscellaneous hardware initialization */\r
+#endif /* TMC_HW_INIT */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   TMC_VOID_FUNCTION_CALL(tlmm_init);   /* Initialize the TLMM. */\r
+\r
+#ifdef FEATURE_SENSORS\r
+\r
+   /* The I2C attach on the modem processor must happen before any I2C access\r
+    * on the apps processor.  Linux doesn't have capability to allocate\r
+    * remote-lock since the lock (ie DAL I2C remote lock for I2C, DAL SPI\r
+    * remote lock for SPI) is internal data-structures of DAL drivers and\r
+    * there is no DAL framework in Linux kernel to see those data structure\r
+    * of DAL drivers. If Linux doesn't see the lock during boot-up, it will\r
+    * not allocate the remote-lock and we may run into concurrency issue.\r
+    */\r
+\r
+   TMC_VOID_FUNCTION_CALL(snsd_i2c_init);   /* Attach the Sensors I2C */\r
+\r
+#endif /* FEATURE_SENSORS */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   //lesp  sbi_init( SBI_9p6MHZ );\r
+   sbi_init( SBI_DEFAULT_FREQ );\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if defined(FEATURE_PM1000) || defined(FEATURE_PM1000_LDO_ONLY)\r
+#error code not present\r
+#endif\r
+\r
+#ifdef FEATURE_PMIC\r
+   {\r
+      pm_mpp_dlogic_lvl_type mpp3_levels [2] = {PM_MPP__DLOGIC__LVL_MSMP, PM_MPP__DLOGIC__LVL_VDD};\r
+\r
+      pm_mpp_dlogic_out_ctrl_type mpp3_ctrls [2] = {PM_MPP__DLOGIC_OUT__CTRL_LOW, PM_MPP__DLOGIC_OUT__CTRL_HIGH};\r
+\r
+      pm_mpp_dlogic_lvl_type mpp4_levels [1] = {PM_MPP__DLOGIC__LVL_MMC};\r
+\r
+      pm_mpp_dlogic_out_ctrl_type mpp4_ctrls [2] = {PM_MPP__DLOGIC_OUT__CTRL_LOW, PM_MPP__DLOGIC_OUT__CTRL_HIGH};\r
+\r
+#ifdef FEATURE_WCDMA_PLT\r
+#error code not present\r
+#endif /* FEATURE_WCDMA_PLT */\r
+      {\r
+                       pm_init();            /* Please look at dependency notes inside the function before move around those code */\r
+         pm_init_delayed();\r
+      }\r
+\r
+      pm_config_secure_mpp_config_digital_output (PM_MPP_3, mpp3_levels, 2, mpp3_ctrls, 2);\r
+      pm_config_secure_mpp_config_digital_output (PM_MPP_4, mpp4_levels, 1, mpp4_ctrls, 2);\r
+\r
+#ifdef FEATURE_APPS_IMAGE_WINMOB\r
+               /* Temporary hack to enable the USBH core until the WM driver does this properly. */\r
+      (void)pm_mpp_config_digital_output(PM_MPP_19,  /* RESET */\r
+         PM_MPP__DLOGIC__LVL_VDD,\r
+         PM_MPP__DLOGIC_OUT__CTRL_HIGH);\r
+\r
+      (void)pm_mpp_config_digital_output(PM_MPP_20,  /* VBUS2_BOOST */\r
+         PM_MPP__DLOGIC__LVL_VDD,\r
+         PM_MPP__DLOGIC_OUT__CTRL_HIGH);\r
+#endif\r
+\r
+#ifdef FEATURE_BF3_SD_CONTROLLER\r
+      (void) pm_mpp_config_digital_output( PM_MPP_3, PM_MPP__DLOGIC__LVL_VDD,\r
+         PM_MPP__DLOGIC_OUT__CTRL_HIGH);\r
+#endif\r
+\r
+#if defined(SIRIUS_PLATFORM) && defined(WOLF_5)\r
+#error code not present\r
+#endif /* defined(SIRIUS_PLATFORM) && defined(WOLF_5) */\r
+\r
+   }\r
+#endif /* FEATURE_PMIC */\r
+\r
+#ifdef FEATURE_HS_DETECT_BASEBAND_TYPE\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+   TMC_VOID_FUNCTION_CALL(hs_get_baseband_version);                           /* Read PCB ID after pm_init() */\r
+#endif\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifdef FEATURE_PMIC_RTC\r
+   /* Initialization for RTC */\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+   clk_rtc_init();\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+#endif /* FEATURE_PMIC_RTC */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef TMC_I2C_INIT\r
+#ifndef FEATURE_I2C_DIRECT_ON_ARM11\r
+   TMC_VOID_FUNCTION_CALL(i2c_init);                                          /* I2C driver     */\r
+#endif\r
+#endif\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+#ifdef FEATURE_I2C_NPA\r
+   i2c_npa_target_init();\r
+#endif\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+\r
+   TMC_VOID_FUNCTION_CALL(adc_init);\r
+\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   sio_init();   /* Initialize SIO */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if defined(FEATURE_DATA_ON_APPS) && (defined(FEATURE_WCDMA) || defined(FEATURE_GSM))\r
+   TMC_VOID_FUNCTION_CALL(dsmp_umts_modem_l2_initialize);\r
+#endif /* FEATURE_DATA_ON_APPS */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#if defined(FEATURE_USB) && !defined(FEATURE_NO_USB_HW_ON_PROCESSOR)\r
+#ifdef FEATURE_USB_HOST\r
+   TMC_VOID_FUNCTION_CALL(usbhost_api_init);   /* Initialize USB host API */\r
+#endif\r
+#endif\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_APS\r
+   TMC_VOID_FUNCTION_CALL(aps_init);   /* Initialize APS */\r
+#endif /* FEATURE_APS */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+#define FEATURE_NO_UIM\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if (defined( FEATURE_UIM_DRIVER ) && !defined(FEATURE_GSM_PLT))\r
+#ifndef FEATURE_NO_UIM\r
+       TMC_VOID_FUNCTION_CALL(uim_dev_init);   /* UIM driver */\r
+#endif\r
+#endif /* FEATURE_UIM_DRIVER && !FEATURE_GSM_PLT*/\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_BATTERY_CHARGER\r
+   tmc_chg_init();\r
+#endif\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   /*                   Mode Specific Initialization                        */\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   /*                         1x specific                                 */\r
+\r
+   /*                         GSM specific                                  */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_WCDMA\r
+#if (!defined(FEATURE_WCDMA_PLT) && !defined(FEATURE_GSM_PLT) && !defined(FEATURE_MVS))\r
+   TMC_VOID_FUNCTION_CALL(wvs_init);   /* initialize Voice services */\r
+#endif /* !FEATURE_WCDMA_PLT && !FEATURE_MVS*/\r
+#endif /* FEATURE_WCDMA */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if (defined(FEATURE_WLAN) && !defined(FEATURE_MULTIPROCESSOR))\r
+   TMC_VOID_FUNCTION_CALL(wlan_adp_init);                                     /* Initialize the WLAN Adapter library                  */\r
+#endif /* FEATURE_WLAN && !FEATURE_MULTIPROCESSOR */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if (defined(FEATURE_FACTORY_TESTMODE) && !defined(FEATURE_FTM_TASK))\r
+   TMC_VOID_FUNCTION_CALL(ftm_tmc_init);                                      /* ftm initializaiton that has to be done in TMC task. */\r
+#endif /* FEATURE_FACTORY_TESTMODE && ! FEATURE_FTM_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   TMC_VOID_FUNCTION_CALL(tmcdiag_init);   /* Register TMC dispatch table through diag interface */\r
+\r
+#ifdef FEATURE_PROFDIAG\r
+#error code not present\r
+#endif\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_L4LINUX\r
+       if (qids_smms_init(SMMS_DEAFULT_SERVER_PRIORITY) == SMMS_STATUS_SUCCESS)        /* Init SMMS Library */\r
+   {\r
+      /* Start a loopback server in background */\r
+      qids_smms_start_loopback_server(SMMS_LOOPBACK_SERVER_PRIORITY,\r
+         SMMS_SERVICE_ECHO1);\r
+   }\r
+#endif\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_CBSP_TEST\r
+    TMC_VOID_FUNCTION_CALL(apttests_daltf_init); /* Initialize apttests     */\r
+#endif\r
+}                                                                          /* tmc_order_0_init */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_order_0_exec\r
+  This function creates all the software tasks with the rex_def_task\r
+  procedure.  After a task has been created it sets the TMC_ACK_SIG to\r
+  communicate to the Task Main Control task that it has completed static\r
+  initialization.  This procedure waits to receive the TMC_ACK_SIG before\r
+  creating the next software task.\r
+\r
+DEPENDENCIES\r
+  The watchdog task resetting the Watchdog timer while attempting to\r
+  start all other tasks. If the unable to create other tasks in the time\r
+  allotted by the Watchdog task, the Watchdog task will log the error and\r
+  reset the microprocessor.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  After this procedure all the tasks in the Software system will have\r
+  performed preliminary initialization and will be waiting for the\r
+  startup signal from the Main Control task.\r
+\r
+===========================================================================*/\r
+static void tmc_order_0_exec(void)\r
+{\r
+   /* Enable and disable autodog for MC as a way of getting the dog report\r
+    ** id into the TCB.\r
+    */\r
+   (void) rex_autodog_enable( DOG_TMC_RPT );\r
+   (void) rex_autodog_disable( );\r
+\r
+#ifdef FEATURE_SOFTWARE_PROFILE\r
+#ifdef FEATURE_MSMHWIO\r
+   rex_init_profile( HWIO_ADDR(TIME_TICK2_COUNT) );\r
+#else\r
+   rex_init_profile( TIME_TICK2_COUNT_WH );\r
+#endif /* FEATURE_MSMHWIO */\r
+#endif\r
+\r
+#ifdef TIMETEST\r
+#ifdef TIMETEST_PROF\r
+   TMC_VOID_FUNCTION_CALL(timetest_prof_init);\r
+#endif /* TIMETEST_PROF */\r
+#endif /* TIMETEST*/\r
+\r
+       (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);   /* Clear ACK signal. */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+   /* If FEATURE_PROGRESSIVE_BOOT is defined, then the pager task should be\r
+   started  as early as possible to reduce the number of page faults\r
+   handled in abort context\r
+*/\r
+#ifdef FEATURE_PROGRESSIVE_BOOT\r
+\r
+   rex_def_task_ext2(TASK_HANDLE(pager),\r
+      (unsigned char*)TASK_STACK(pager),\r
+      PAGER_STACK_SIZ * sizeof(rex_stack_word_type),\r
+      PAGER_PRI,\r
+      TASK_MAIN(pager),\r
+      TASK_ARGV_NIL,\r
+      TASK_IDENT(pager),\r
+      FALSE,\r
+      TASK_NODOG_RPT);      \r
+\r
+       // THIS TASK IS NOT IMPLEMENTED TO RESPOND TO THE REQUIRED\r
+       // TMC SIGNALING PROTOCOL.\r
+\r
+   //   (void) tmc_wait(TMC_ACK_SIG);\r
+   //   (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);\r
+\r
+#endif /* FEATURE_PROGRESSIVE_BOOT */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(sleep), DOG_SLEEP_RPT);\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+#if ! defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_APPS_TCXO_SLEEP\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(dem), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_APPS_TCXO_SLEEP */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_SMD\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(smd), TASK_NODOG_RPT);\r
+\r
+#endif /*FEATURE_SMD*/\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_ONCRPC\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(oncrpc), TASK_NODOG_RPT);\r
+\r
+#ifdef FEATURE_STA\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(sta), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_STA */\r
+\r
+#endif /* FEATURE_ONCRPC */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_DOG\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(dog), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_DOG */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef SIRIUS_PLATFORM\r
+#error code not present\r
+#endif /* SIRIUS_PLATFORM */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_QDSP_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(qdsp), DOG_QDSP_RPT);\r
+\r
+#endif /* FEATURE_QDSP_TASK */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_QDSP_RTOS\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(adsp_rtos), DOG_ADSP_RTOS_RPT);\r
+\r
+#endif /* FEATURE_ADSP_RTOS_TASK */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_VOC_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(voc), DOG_VOC_RPT);\r
+\r
+#endif /* FEATURE_VOC_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_SND_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(snd), DOG_SND_RPT);\r
+\r
+#endif /* FEATURE_SND_TASK */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if ! defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_AVS_SBCENC_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(sbcenc), DOG_SBCENC_RPT);\r
+\r
+#endif /* FEATURE_AVS_SBCENC_TASK */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if ! defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#if !defined(FEATURE_THIN_UI) && !defined(FEATURE_UI_CORE_REMOVED) || defined(FEATURE_HS_POLLING_ON_MODEM)\r
+\r
+#ifdef FEATURE_HS\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(hs), DOG_HS_RPT);\r
+\r
+#endif /* FEATURE_HS */\r
+\r
+#endif /* !defined(FEATURE_THIN_UI) && !defined(FEATURE_UI_CORE_REMOVED) || defined(FEATURE_HS_POLLING_ON_MODEM)*/\r
+\r
+#if defined(FEATURE_PMIC) && !defined(FEATURE_KEYPAD_USES_GPIO_FOR_PWR_KEY)\r
+   /* Initialize the Power Key.  Without this, PMIC will not send an\r
+    * IRQ to MSM when power key is pressed */\r
+   TMC_VOID_FUNCTION_CALL(pm_pwr_key_init);\r
+#endif\r
+\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_IS2000_TDSO\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(tdso), DOG_TDSO_RPT);\r
+\r
+#endif /* FEATURE_IS2000_TDSO */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_IDS\r
+#error code not present\r
+#endif /* FEATURE_IDS */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_EFS\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(fs), DOG_FS_RPT);\r
+\r
+#if (defined(FS_FEATURE_RMTEFS_SERVER)||defined(FS_FEATURE_IG_IPC_SERVER)) && !defined(FEATURE_IG_EFS_EXT_SERVER)\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(efs_srvr), DOG_FS_RPT);\r
+\r
+#endif /* FS_FEATURE_RMTEFS_SERVER && !FEATURE_IG_EFS_EXT_SERVER */\r
+#endif /* FEATURE_EFS */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_EFS_SFAT\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(sfat), DOG_SFAT_RPT);\r
+\r
+#endif /* FEATURE_EFS_SFAT */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_SEC_PROCESS_INIT\r
+#ifdef FEATURE_IXFILESVC\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ix_filesvc), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_IXFILESVC */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_IXSQLSVC\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ix_sqlclnt), TASK_NODOG_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ix_sqlsvc), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_IXSQLSVC */\r
+#endif /* !FEATURE_SEC_PROCESS_INIT */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_NV\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(nv), DOG_NV_RPT);\r
+\r
+#endif /* FEATURE_NV */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef TMC_1X\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(tx), DOG_TX_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(rx), DOG_RX_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(srch), DOG_SRCH_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(rxtx), DOG_RXTX_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(mc), DOG_MC_RPT);\r
+\r
+#endif /* TMC_1X */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_CM\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(cm), DOG_CM_RPT);\r
+\r
+#endif /* FEATURE_CM */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) && !defined(FEATURE_COREIMG)\r
+#ifdef FEATURE_MULTIMODE_ARCH\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(mmoc), DOG_MMOC_RPT);\r
+\r
+#endif /* FEATURE_MULTIMODE_ARCH */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY && FETURE_COREIMG */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_HDR\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(hdrmc), DOG_HDRMC_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(hdrtx), DOG_HDRTX_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(hdrrx), DOG_HDRRX_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(hdrsrch), DOG_HDRSRCH_RPT);\r
+\r
+#endif /* FEATURE_HDR */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_HDR_BCMCS\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(hdrbc), DOG_HDRBC_RPT);\r
+\r
+#endif /* FEATURE_HDR_BCMCS */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if defined( FEATURE_BT ) && !defined(IMAGE_MODEM_PROC)\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(bt), DOG_BT_RPT);\r
+\r
+#ifdef FEATURE_BT_EXTPF\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(bt_pf), DOG_BT_PF_RPT);\r
+\r
+#endif /* FEATURE_BT_EXTPF */\r
+\r
+#ifdef FEATURE_BT_FS_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(bt_fs), DOG_BT_FS_RPT);\r
+\r
+#endif /* FEATURE_BT_FS_TASK */\r
+\r
+#endif /* FEATURE_BT && !IMAGE_MODEM_PROC */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_FM\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(fmrds), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_FM */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifdef FEATURE_BT_FTM_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(bt_ftm), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_BT_FTM_TASK */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_UI\r
+\r
+      tmc_define_tasks_common(_TASK_INFO_P(ui), DOG_UI_RPT);\r
+\r
+#endif /* FEATURE_UI */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_NV_CNV\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(cnv), DOG_CNV_RPT);\r
+#endif /* FEATURE_NV_CNV */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_DIAG_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(diag), DOG_DIAG_RPT);\r
+\r
+#ifdef FEATURE_GSM\r
+   event_report(EVENT_POWERUP);\r
+#endif /* FEATURE_GSM */\r
+\r
+#endif /* FEATURE_DIAG_TASK */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_IG_QDIAG\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(qdiag), DOG_QDIAG_RPT);\r
+\r
+#endif /* FEATURE_IG_QDIAG */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_SEC_PROCESS_INIT\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ix_contentsvc), TASK_NODOG_RPT);\r
+\r
+#else\r
+\r
+#ifdef FEATURE_IXHTTPSVC\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ix_httpsvc), DOG_IXHTTPSVC_RPT);\r
+\r
+#endif /* FEATURE_IXHTTPSVC */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_IXTIMESVC\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ix_timesvc), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_IXTIMESVC */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_IXCONTENTSVC\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ix_contentclnt), TASK_NODOG_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ix_contentsvc), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_IXCONTENTSVC */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_IXDESCRAMBLERSVC\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ix_descramblersvc), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_IXDESCRAMBLERSVC */\r
+#endif /* FEATURE_SEC_PROCESS_INIT */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_SEC\r
+#ifndef FEATURE_SEC_PROCESS_INIT\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(sec), DOG_SEC_RPT);\r
+\r
+#ifdef FEATURE_SEC_CONTENT_AGENT\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(contentagentdiag), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_SEC_CONTENT_AGENT */\r
+#ifdef FEATURE_SECRND\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(secrnd), DOG_SECRND_RPT);\r
+\r
+#endif /* FEATURE_SECRND */\r
+#ifdef FEATURE_SEC_ARM_CRYPTO\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(seccryptarm), DOG_SECCRYPTARM_RPT);\r
+\r
+#endif /* FEATURE_SEC_ARM_CRYPTO */\r
+#ifdef FEATURE_SEC_USFS\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(sfs), DOG_SFS_RPT);\r
+\r
+#endif /* FEATURE_SEC_USFS */\r
+#endif /* FEATURE_SEC_PROCESS_INIT */\r
+#ifdef FEATURE_SSD\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ssd), 0);\r
+\r
+#endif /* FEATURE_SSD */\r
+#ifdef FEATURE_SEC_SSL\r
+#ifndef FEATURE_DATA_ON_APPS\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(secssl), DOG_SECSSL_RPT);\r
+\r
+#endif /* !FEATURE_DATA_ON_APPS */\r
+#endif /* FEATURE_SEC_SSL */\r
+\r
+#if defined(FEATURE_SEC_SSL_TESTAPP) || defined(FEATURE_SEC_CRYPT_TESTAPP)\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(sectestapp), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_SEC_SSL_TESTAPP || FEATURE_SEC_CRYPT_TESTAPP */\r
+\r
+#ifdef FEATURE_SEC_IPSEC\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(secips), DOG_SECIPS_RPT);\r
+\r
+#endif /* FEATURE_SEC_IPSEC */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef T_RUMI\r
+#ifdef FEATURE_SEC_DRM\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(secdrm), DOG_SECDRM_RPT);\r
+\r
+#endif /* FEATURE_SEC_DRM */\r
+#endif /* ! T_RUMI */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#endif /* FEATURE_SEC */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_DS_SOCKETS_TEST_TCP\r
+#error code not present\r
+#endif /* FEATURE_DS_SOCKETS_TEST_TCP */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_DS_SOCKETS_TEST_UDP\r
+#error code not present\r
+#endif /* FEATURE_DS_SOCKETS_TEST_UDP */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_QMIP\r
+#error code not present\r
+#endif /* FEATURE_QMIP */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if defined(FEATURE_AUTH) || defined(FEATURE_RUIM)\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(auth), DOG_AUTH_RPT);\r
+\r
+#endif /*FEATURE_AUTH || FEATURE_RUIM */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if (defined( FEATURE_UIM ) && ! defined(FEATURE_GSM_PLT) )\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(uim), DOG_UIM_RPT);\r
+\r
+#endif /* FEATURE_UIM */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_MMGSDI\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(gsdi), DOG_GSDI_RPT);\r
+\r
+#endif /* FEATURE_MMGSDI */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if defined(FEATURE_GSTK) && defined(FEATURE_VIRTUAL_SAT)\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(virtsat), DOG_VIRTSAT_RPT);\r
+\r
+#endif /* #if defined(FEATURE_GSTK) && defined(FEATURE_VIRTUAL_SAT) */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_GSTK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(gstk), DOG_GSTK_RPT);\r
+\r
+#endif /* FEATURE_GSTK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_DH\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(dh), DOG_DH_RPT);\r
+\r
+#endif /* FEATURE_DH */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_GRAPH_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(graph), DOG_GRAPH_RPT);\r
+\r
+#endif /* FEATURE_GRAPH_TASK */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_GFX_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(gfx), DOG_GFX_RPT);\r
+\r
+#endif /* FEATURE_GFX_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_CAMERA_DRV_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(camera_drv), DOG_CAMERA_DRV_RPT);\r
+\r
+#endif /* FEATURE_CAMERA_DRV_TASK */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_VS_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(vs), DOG_VS_RPT);\r
+\r
+#endif /* FEATURE_VS_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if defined(FEATURE_USB) && !defined(FEATURE_NO_USB_HW_ON_PROCESSOR)\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(usbdc), DOG_USBDC_RPT);\r
+\r
+#ifdef FEATURE_USB_HOST_ENHANCED\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(usbhc_urb), DOG_USBHC_URB_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(usbhc_dev), DOG_USBHC_DEV_RPT);\r
+\r
+#if defined(FEATURE_USB_HOST_TEST_ENHANCED) && (defined(FEATURE_USB_HOST_MASS_STORAGE_TEST_ENHANCED) || defined(FEATURE_USB_HOST_HID_TEST_ENHANCED))\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(usbhc_test), DOG_USBHC_TEST_RPT);\r
+\r
+#endif\r
+\r
+#endif /* FEATURE_USB_HOST_ENHANCED */\r
+\r
+#endif /* FEATURE_USB */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if (defined(FEATURE_GSM) && !defined(FEATURE_WCDMA_PLT) && !defined(FEATURE_GSM_PLT))\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(gsm_l1), DOG_GSM_L1_RPT);\r
+\r
+#ifndef FEATURE_GSM_PLT\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(gsm_l2), DOG_GSM_L2_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(rr), DOG_RR_RPT);\r
+\r
+#endif /* !FEATURE_GSM_PLT*/\r
+\r
+#ifdef FEATURE_GSM_GPRS\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(gprs_mac), DOG_GMAC_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(gprs_rlc_ul), DOG_GRLC_UL_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(gprs_rlc_dl), DOG_GRLC_DL_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(gprs_llc), DOG_GLLC_RPT);\r
+\r
+#endif /* FEATURE_GSM_GPRS */\r
+\r
+#endif /* FEATURE_GSM && !FEATURE_WCDMA_PLT */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_NAS\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(mm), DOG_MM_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(reg), DOG_REG_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(mn_cnm), DOG_MN_CNM_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(sm), DOG_SM_RPT);\r
+\r
+#ifdef FEATURE_GSM_CB\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(cb), DOG_MM_RPT);\r
+\r
+#endif /* #ifdef FEATURE_GSM_CB */\r
+\r
+#endif /* FEATURE_NAS */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if ( defined(FEATURE_CDSMS) || defined(FEATURE_GWSMS) )\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(wms), DOG_WMS_RPT);\r
+\r
+#endif /* FEATURE_CDSMS || FEATURE_GWSMS */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_MDSP_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(mdsp), DOG_MDSP_RPT);\r
+\r
+#endif /* FEATURE_MDSP_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_TIME_IPC_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(time_ipc), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_TIME_IPC_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_VIRTUAL_SIM\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(gsdi_uim_server), TASK_NODOG_RPT);\r
+\r
+#endif /* ifdef FEATURE_VIRTUAL_SIM */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_WCDMA\r
+#ifndef FEATURE_GSM_PLT\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(wcdma_l1), DOG_L1_RPT);\r
+\r
+#endif\r
+\r
+#if ( !defined( FEATURE_WCDMA_PLT) && !defined(FEATURE_GSM_PLT) )\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(wcdma_l2_ul), DOG_L2UL_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(wcdma_l2_dl), DOG_L2DL_RPT);\r
+\r
+#ifdef FEATURE_HSDPA\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(wcdma_mac_hs_dl), DOG_MAC_HS_DL_RPT);\r
+\r
+#endif\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(rrc), DOG_RRC_RPT);\r
+\r
+#endif /* !FEATURE_WCDMA_PLT */\r
+#endif /* FEATURE_WCDMA */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if ( defined(FEATURE_WCDMA_VST_FULLSTACK) || defined(FEATURE_WCDMA_VST_AS))\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(al1), TASK_NODOG_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(menu), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_WCDMA_VST_FULLSTACK || FEATURE_WCDMA_VST_AS */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_VBATT_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(vbatt), DOG_VBATT_RPT);\r
+\r
+#endif /* FEATURE_VBATT_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+#ifdef FEATURE_CTA\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(cta), dyn_dog_cta_rpt);\r
+\r
+#endif /* FEATURE_CTA_TASK */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_TC\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(tc), DOG_TC_RPT);\r
+\r
+#endif /* FEATURE_TC */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_WCDMA_VST_AS\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(rrcut), TASK_NODOG_RPT);\r
+\r
+#endif /*FEATURE_WCDMA_VST_AS*/\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_WCDMA_PLT /* FEATURE_WPLT_TASK */\r
+#error code not present\r
+#endif /*FEATURE_WCDMA_PLT*/\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#if ! defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_GSM_PLT /* FEATURE_GSM_PLT_TASK */\r
+#error code not present\r
+#endif /*FEATURE_GSM_PLT*/\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if (defined(FEATURE_WLAN) && !defined(FEATURE_MULTIPROCESSOR))\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(wlan_cp), DOG_WLAN_CP_RPT);\r
+\r
+#endif /* FEATURE_WLAN && !FEATURE_MULTIPROCESSOR */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_DATA\r
+#ifndef FEATURE_DATA_ON_APPS\r
+#ifdef FEATURE_DATA_PS\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ps), DOG_PS_RPT);\r
+\r
+#ifdef FEATURE_DATA_PS_DCC\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(dcc), DOG_DCC_RPT);\r
+\r
+#endif /* FEATURE_DATA_PS_DCC */\r
+\r
+#ifdef FEATURE_DATA_PS_SOCK_REARCH\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ds_sig), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_DATA_PS_SOCK_REARCH */\r
+\r
+#ifdef FEATURE_DATA_MUX\r
+#error code not present\r
+#endif /* FEATURE_DATA_MUX */\r
+\r
+#endif /* FEATURE_DATA_PS */\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ds), DOG_DS_RPT);\r
+\r
+#endif /* !FEATURE_DATA_ON_APPS */\r
+\r
+#if (defined(FEATURE_GAN) && !(defined(IMAGE_APPS_PROC)))\r
+#error code not present\r
+#endif\r
+\r
+#ifdef FEATURE_GAN\r
+#error code not present\r
+#endif /* FEATURE_GAN */\r
+\r
+#ifdef FEATURE_COMP_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(comp), DOG_COMP_RPT);\r
+\r
+#endif /* FEATURE_COMP_TASK */\r
+\r
+#if ( (defined(FEATURE_DATA_GCSD) || defined(FEATURE_DATA_WCDMA_CS)) && !defined(FEATURE_WCDMA_PLT) && !defined(FEATURE_GSM_PLT) )\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(Gcsd), DOG_GCSD_RPT);\r
+\r
+#endif /* (FEATURE_DATA_GCSD || FEATURE_DATA_WCDMA_CS) && !FEATURE_WCDMA_PLT */\r
+\r
+#ifndef FEATURE_DATA_ON_APPS\r
+\r
+#ifdef FEATURE_WCDMA /* ) && ( defined FEATURE_DATA_WCDMA_CS ) ) */\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(dswcsd_ul), TASK_NODOG_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(dswcsd_dl), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_WCDMA */\r
+\r
+#endif /* !FEATURE_DATA_ON_APPS */\r
+\r
+#endif /* FEATURE_DATA */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+   /* Create WLAN Data Service task  */\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if (defined(FEATURE_WLAN) && !defined(FEATURE_MULTIPROCESSOR))\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(wlan_ds), DOG_WLAN_DS_RPT);\r
+\r
+#endif /* (defined(FEATURE_WLAN) && !defined(FEATURE_MULTIPROCESSOR)) */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+#if ! defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#if (defined(FEATURE_WLAN) && !defined(FEATURE_MULTIPROCESSOR))\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(wlan_trp), DOG_WLAN_TRP_RPT);\r
+\r
+#endif /* FEATURE_WLAN && !FEATURE_MULTIPROCESSOR */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if (defined(FEATURE_WLAN) && !defined(FEATURE_MULTIPROCESSOR))\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(wlan_sec), DOG_WLAN_SEC_RPT);\r
+\r
+#endif /* FEATURE_WLAN && !FEATURE_MULTIPROCESSOR */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if (defined(FEATURE_CGPS) && !defined(FEATURE_DISABLE_CGPS))\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(mgpmc), DOG_MGPMC_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(cc), DOG_CC_RPT);\r
+\r
+#ifdef FEATURE_CGPS_PGI_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(pgi), DOG_PGI_RPT);\r
+\r
+#endif /* FEATURE_CGPS_PGI_TASK */\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(pp), DOG_PP_RPT);\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_XO\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(tcxomgr), DOG_TCXOMGR_RPT);\r
+\r
+#endif /* FEATURE_XO */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /* ---------------------------------------------------------------------- */\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(cd), DOG_CD_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(nf), DOG_NF_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(gps_fs), TASK_NODOG_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(gpsfft), DOG_GPSFFT_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(lm), DOG_LM_RPT);\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(sm_tm), DOG_SM_TM_RPT);\r
+\r
+#ifdef FEATURE_CGPS_PD_COMMS_TCP_ON_MODEM\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(pdcommtcp), DOG_PDCOMMTCP_RPT);\r
+\r
+#endif /* !FEATURE_DATA_ON_APPS */\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(pdcommwms), DOG_PDCOMMWMS_RPT);\r
+\r
+#ifdef FEATURE_CGPS_LOC_MIDDLEWARE\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(loc_middleware), DOG_LOC_MIDDLEWARE_RPT);\r
+\r
+#endif // FEATURE_CGPS_LOC_MIDDLEWARE\r
+\r
+#endif /* FEATURE_CGPS */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_FTM_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ftm), DOG_FTM_RPT);\r
+\r
+#endif /* FEATURE_FTM_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_CHG_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(chg), DOG_CHG_RPT);\r
+\r
+#endif /* FEATURE_CHG_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_BCMCS\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(bcdb), DOG_BCDB_RPT);\r
+\r
+#endif /* FEATURE_BCMCS */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_DTV\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(dtv), DOG_DTV_RPT);\r
+\r
+#endif /* FEATURE_DTV */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_JOYST_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(joyst), DOG_JOYST_RPT);\r
+\r
+#endif /* FEATURE_JOYST_TASK */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_PBM_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(pbm), DOG_PBM_RPT);\r
+\r
+#endif /* FEATURE_PBM_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#ifdef FEATURE_CPU_BASED_FLOW_CONTROL\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(fc), DOG_FC_RPT);\r
+\r
+#endif /* FEATURE_CPU_BASED_FLOW_CONTROL_TASK */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef SIRIUS_PLATFORM\r
+#error code not present\r
+#endif /* SIRIUS_PLATFORM */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef  FEATURE_PM_SERVER\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(pms), DOG_PMS_RPT);\r
+\r
+#endif /* FEATURE_PM_SERVER */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_APS\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(aps), DOG_APS_RPT);\r
+\r
+#endif /* FEATURE_APS */\r
+\r
+#ifdef FEATURE_ATS\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ats), DOG_ATS_RPT);\r
+\r
+#endif /* FEATURE_ATS */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_QIPCALL\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(qipcall), DOG_QIPCALL_RPT);\r
+\r
+#endif /* FEATURE_QIPCALL */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_MFLO\r
+#error code not present\r
+#endif /* FEATURE_MFLO */\r
+\r
+#ifdef FEATURE_UBM_L1\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ubm_l1), DOG_UBM_L1_RPT);\r
+\r
+#endif /* FEATURE_UBM_L1 */\r
+\r
+#if (defined(FEATURE_DISP_TASK)) && (!defined(T_MSM7500) || (defined(T_MSM7500) && defined(IMAGE_APPS_PROC)))\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(disp), DOG_DISP_RPT);\r
+\r
+#endif /* FEATURE_DISP_TASK */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+#ifdef FEATURE_FTM_CAMERA_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(ftm_camera), DOG_FTM_CAMERA_RPT);\r
+\r
+#endif /*FEATURE_FTM_CAMERA_TASK */\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if defined(FEATURE_HS_USB) && (defined(FEATURE_STANDALONE_MODEM) || !defined(FEATURE_NO_USB_HW_ON_PROCESSOR))\r
+\r
+#define HSU_AL_TASK_STACK_SIZ TASK_STACK_SIZ(AL_TASK_STACK_SIZE_IN_BYTES)\r
+\r
+   rex_def_task_ext2(TASK_HANDLE(hsu_al_task),\r
+      (unsigned char*)TASK_STACK(hsu_al_task),\r
+      HSU_AL_TASK_STACK_SIZ * sizeof(rex_stack_word_type)\r
+      HSU_AL_TASK_PRI,\r
+      TASK_MAIN(hsu_al_task),\r
+      TASK_ARGV_NIL,\r
+      TASK_IDENT(hsu_al_task),\r
+      FALSE,\r
+      DOG_HSU_AL_TASK_RPT);\r
+\r
+   (void) tmc_wait(TMC_ACK_SIG);\r
+   (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);\r
+\r
+#endif  /* FEATURE_HS_USB && (FEATURE_STANDALONE_MODEM || !FEATURE_NO_USB_HW_ON_PROCESSOR) */\r
+\r
+#if defined(FEATURE_HS_USB_MS_FD) && (defined(FEATURE_STANDALONE_MODEM) || !defined(FEATURE_NO_USB_HW_ON_PROCESSOR))\r
+\r
+   rex_def_task_ext2(TASK_HANDLE(hsu_al_ms),\r
+      (unsigned char*)TASK_STACK(hsu_al_ms),\r
+      HSU_AL_MS_STACK_SIZE * sizeof(rex_stack_word_type),\r
+      HSU_AL_MS_PRI,\r
+      TASK_MAIN(hsu_al_ms),\r
+      TASK_ARGV_NIL,\r
+      TASK_IDENT(hsu_al_ms),\r
+      FALSE,\r
+      DOG_HSU_AL_MS_RPT);\r
+\r
+   (void) tmc_wait(TMC_ACK_SIG);\r
+   (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);\r
+\r
+#endif /* FEATURE_HS_USB_MS_FD && (FEATURE_STANDALONE_MODEM || !FEATURE_NO_USB_HW_ON_PROCESSOR) */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+#if defined(FEATURE_SENSORS)\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(sns), DOG_SNS_RPT);\r
+\r
+#endif /* FEATURE_SENSORS */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_PWRDB\r
+#error code not present\r
+#endif /* FEATURE_PWRDB */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+  \r
+ #ifdef FEATURE_DOG_KEEPALIVE_TASK\r
+\r
+   tmc_define_tasks_common(_TASK_INFO_P(dog_keepalive), TASK_NODOG_RPT);\r
+\r
+#endif /* FEATURE_APPS_KEEPALIVE */\r
+}                                                                          /* tmc_order_0_exec(void) */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_order_1_init\r
+\r
+DESCRIPTION\r
+  Perform any initializations that must be done after the tasks are defined,\r
+  but before any tasks (including the service tasks) are started.\r
+\r
+DEPENDENCIES\r
+  The tasks must have been defined, but not started.\r
+\r
+RETURN VALUE\r
+  None\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static void  tmc_order_1_init(void)\r
+{\r
+#ifdef DOG_DYNAMIC_API\r
+   dog_auto_register();  /* Register the legacy tasks. */\r
+#endif\r
+\r
+#if defined(T_MSM7500) && !defined(FEATURE_STANDALONE_MODEM)\r
+   /* Initialize the remote API services */\r
+   TMC_VOID_FUNCTION_CALL(remote_apis_init);\r
+#endif /* T_MSM7500 && ! FEATURE_STANDALONE_MODEM */\r
+\r
+#if defined(FEATURE_PMIC) && defined(FEATURE_USE_TIME_VU)\r
+   /* The PMIC has been initialized, get time-of-day from the PMIC's RTC */\r
+   TMC_VOID_FUNCTION_CALL(time_set_from_pmic);\r
+#endif /* FEATURE_USE_TIME_VU */\r
+}                                                                          /* tmc_order_1_init */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_order_2_init\r
+\r
+DESCRIPTION\r
+  Continue on initialization after service tasks start. This initialization\r
+  requires NV task has been started. The initialization consists of generic\r
+  initialization and mode specific initilaization. Generic refers to any HW\r
+  regardless any specific mode. Specific refers to mode related ones.\r
+\r
+DEPENDENCIES\r
+  TMC must have already been initialized with tmc_init_before_task_start, and\r
+  service tasks have already started.\r
+\r
+RETURN VALUE\r
+  boolean - Initialization success return TRUE othewise return FALSE.\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static void tmc_order_2_init(void)\r
+{\r
+   boolean rf_initial_status = TRUE;\r
+\r
+#if (defined(FEATURE_L4) && defined(FEATURE_STACKS_TCB_IN_WRITETHROUGH))\r
+   {\r
+      extern byte *Image__ZI_STACKS__Base;\r
+      extern byte *Image__UNINIT_RAM__Base;\r
+\r
+      thread_ref_t tIgnore;\r
+      memsection_ref_t memsection;\r
+      uint8 cachePolicy;\r
+\r
+      /* *********************************************************** *\r
+       * Temporary change to set Write-Through cache policy from NV  *\r
+       * Bit 0 - DEFAULT                                             *\r
+       * Bit 1 - STacks in WT                                        *\r
+       * *************************************************************/\r
+      /* If NV item is set read the configuration otherwise leave as is default\r
+policy which is WB */\r
+      if (NV_DONE_S == tmcnv_read( NV_CACHE_WT_I , (nv_item_type*)&cachePolicy))\r
+      {\r
+         if (cachePolicy == 0x1)\r
+         { \r
+            memsection = memsection_lookup((uintptr_t)Image__UNINIT_RAM__Base, &tIgnore);\r
+            if (memsection == (memsection_ref_t)0)\r
+            {\r
+               ERR_FATAL("memsection lookup failed", 0, 0, 0);\r
+            }\r
+            memsection_set_attributes(memsection, L4_WriteThroughMemory);\r
+\r
+            memsection = memsection_lookup((uintptr_t)Image__ZI_STACKS__Base, &tIgnore);\r
+            if (memsection == (memsection_ref_t)0)\r
+            {\r
+               ERR_FATAL("memsection lookup failed", 0, 0, 0);\r
+            }\r
+            memsection_set_attributes(memsection, L4_WriteThroughMemory);\r
+         }\r
+      }\r
+   }\r
+\r
+#endif /*FEATURE_L4 && FEATURE_STACKS_TCB_IN_WRITETHROUGH*/\r
+\r
+\r
+       {\r
+               nv_item_type          nv_data_buf;                   /* NV data buffer */\r
+               nv_stat_enum_type     nv_read_status;                /* NV read status */\r
+               nv_read_status = tmcnv_read(NV_CGPS_NMEA_CONFIG_INFO_I,&nv_data_buf);\r
+               if(nv_read_status != NV_DONE_S)\r
+               {\r
+                       nv_data_buf.cgps_nmea_config_info.nmea_port_type = 3;  \r
+               nv_data_buf.cgps_nmea_config_info.nmea_reporting_type = 0;              \r
+                       tmcnv_write(NV_CGPS_NMEA_CONFIG_INFO_I,&nv_data_buf);\r
+               }\r
+\r
+           //NV_RF_HW_CONFIG_I\r
+           nv_read_status = tmcnv_read(NV_RF_HW_CONFIG_I,&nv_data_buf);\r
+           if(nv_read_status != NV_DONE_S)\r
+           {\r
+               nv_data_buf.rf_hw_config = 0x18;  //TRF6500\r
+               tmcnv_write(NV_RF_HW_CONFIG_I,&nv_data_buf);\r
+           }\r
+\r
+           //NV_RF_BC_CONFIG_I\r
+           nv_read_status = tmcnv_read(NV_RF_BC_CONFIG_I,&nv_data_buf);\r
+           if(nv_read_status != NV_DONE_S)\r
+           {\r
+               nv_data_buf.rf_bc_config = 7;  \r
+                       \r
+               tmcnv_write(NV_RF_BC_CONFIG_I,&nv_data_buf);\r
+           }\r
+           //NV_RF_BC_CONFIG_DIV_I\r
+           nv_read_status = tmcnv_read(NV_RF_BC_CONFIG_DIV_I,&nv_data_buf);\r
+           if(nv_read_status != NV_DONE_S)\r
+           {\r
+               nv_data_buf.rf_bc_config_div = 7;  \r
+                       \r
+               tmcnv_write(NV_RF_BC_CONFIG_DIV_I,&nv_data_buf);\r
+           }           \r
+\r
+#ifdef FEATURE_AUTO_DLOAD_ON_ERROR\r
+           nv_read_status = tmcnv_read(NV_DETECT_HW_RESET_I,&nv_data_buf);\r
+           if(nv_read_status != NV_DONE_S)\r
+           {\r
+               nv_data_buf.detect_hw_reset = 1;  \r
+                       \r
+               tmcnv_write(NV_DETECT_HW_RESET_I,&nv_data_buf);\r
+           }   \r
+#endif\r
+       }\r
+\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+   /*                                                                       */\r
+   /*                                                                       */\r
+   /*                    Bus Monitor Initialization                         */\r
+   /*                                                                       */\r
+   /*                                                                       */\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_BUSMON_HAS_NV_CFG\r
+   {\r
+      nv_item_type          nv_data_buf;                   /* NV data buffer */\r
+      nv_stat_enum_type     nv_read_status;                /* NV read status */\r
+      uint32                i;\r
+      boolean               ebi1_enabled;\r
+      boolean               ebi1_simple[BUS_MON_NUM_MONITORS];\r
+      boolean               ebi1_mode_valid;\r
+      nv_items_enum_type    nv_id;\r
+\r
+      /* Get nv read */\r
+      nv_read_status = tmcnv_read( NV_BUS_PROF_EBI1_ENABLE_I, &nv_data_buf );\r
+\r
+      if (nv_read_status == NV_DONE_S)\r
+      {\r
+         bus_monitor_set_nv_cfg( NV_BUS_PROF_EBI1_ENABLE_I, &nv_data_buf );\r
+         ebi1_enabled = bus_monitor_get_nv_enable_settings( BUS_MON_EBI1 );\r
+      }\r
+      else\r
+      {\r
+         ebi1_enabled = FALSE;\r
+         TMC_ERR( "Bad NV read status %d on bus monitor configuration",\r
+            nv_read_status, 0, 0 );\r
+      }\r
+\r
+      if( ebi1_enabled == TRUE )\r
+      {\r
+         /* Get nv read */\r
+         nv_read_status = tmcnv_read( NV_BUS_PROF_EBI1_MODE_I, &nv_data_buf );\r
+\r
+         if (nv_read_status == NV_DONE_S)\r
+         {\r
+            bus_monitor_set_nv_cfg( NV_BUS_PROF_EBI1_MODE_I, &nv_data_buf );\r
+            bus_monitor_get_nv_mode_settings( BUS_MON_EBI1, ebi1_simple );\r
+            ebi1_mode_valid = TRUE;\r
+         }\r
+         else\r
+         {\r
+            ebi1_mode_valid = FALSE;\r
+            TMC_ERR( "Bad NV read status %d on bus monitor configuration",\r
+               nv_read_status, 0, 0 );\r
+         }\r
+\r
+         /* Get nv read */\r
+         nv_read_status = tmcnv_read( NV_BUS_PROF_EBI1_TRIGGER_ID_I,\r
+            &nv_data_buf );\r
+\r
+         if (nv_read_status == NV_DONE_S)\r
+         {\r
+            bus_monitor_set_nv_cfg( NV_BUS_PROF_EBI1_TRIGGER_ID_I, &nv_data_buf );\r
+         }\r
+         else\r
+         {\r
+            TMC_ERR( "Bad NV read status %d on bus monitor configuration",\r
+               nv_read_status, 0, 0 );\r
+         }\r
+\r
+         /* Get nv read */\r
+         nv_read_status = tmcnv_read( NV_BUS_PROF_EBI1_BUS_COUNT_I,\r
+            &nv_data_buf );\r
+\r
+         if (nv_read_status == NV_DONE_S)\r
+         {\r
+            bus_monitor_set_nv_cfg( NV_BUS_PROF_EBI1_BUS_COUNT_I, &nv_data_buf );\r
+         }\r
+         else\r
+         {\r
+            TMC_ERR( "Bad NV read status %d on bus monitor configuration",\r
+               nv_read_status, 0, 0 );\r
+         }\r
+\r
+         if( ebi1_mode_valid == TRUE )\r
+         {\r
+            for( i = 0; i < BUS_MON_NUM_MONITORS; i++ )\r
+            {\r
+\r
+               if( ebi1_simple[i] == FALSE )\r
+               {\r
+                  if( bus_monitor_get_nv_id( BUS_MON_EBI1,\r
+                     BUS_MON_SIMPLE_MODE,\r
+                     i,\r
+                     &nv_id ) != BUS_MON_FAIL )\r
+                  {\r
+                     nv_read_status = tmcnv_read( nv_id, &nv_data_buf );\r
+\r
+                     if (nv_read_status == NV_DONE_S)\r
+                     {\r
+                        bus_monitor_set_nv_cfg( nv_id,\r
+                           &nv_data_buf );\r
+                     }\r
+                     else\r
+                     {\r
+                        TMC_ERR( "Bad NV read status %d on bus monitor configuration",\r
+                           nv_read_status, 0, 0 );\r
+                     }\r
+                  }\r
+               }\r
+               else\r
+               {\r
+                  if( bus_monitor_get_nv_id( BUS_MON_EBI1,\r
+                     BUS_MON_ADVANCED_MODE,\r
+                     i,\r
+                     &nv_id ) != BUS_MON_FAIL )\r
+                  {\r
+                     nv_read_status = tmcnv_read( nv_id, &nv_data_buf );\r
+\r
+                     if (nv_read_status == NV_DONE_S)\r
+                     {\r
+                        bus_monitor_set_nv_cfg( nv_id,\r
+                           &nv_data_buf );\r
+                     }\r
+                     else\r
+                     {\r
+                        TMC_ERR( "Bad NV read status %d on bus monitor configuration",\r
+                           nv_read_status, 0, 0 );\r
+                     } /* else nv_read_status != NV_DONE_S */\r
+                  } /* if bus_monitor_get_nv_id == TRUE */\r
+               } /* else ebi1_simple[i] == TRUE */\r
+            } /* for */\r
+         } /* if ebi1_mode_valid == TRUE */\r
+      } /* if ebi1_enabled */\r
+\r
+#ifdef FEATURE_SMI\r
+      /* Get nv read */\r
+      nv_read_status = tmcnv_read( NV_BUS_PROF_SMI_ENABLE_I, &nv_data_buf );\r
+\r
+      if (nv_read_status == NV_DONE_S)\r
+      {\r
+         bus_monitor_set_nv_cfg( NV_BUS_PROF_SMI_ENABLE_I, &nv_data_buf );\r
+         smi_enabled = bus_monitor_get_nv_enable_settings( BUS_MON_SMI );\r
+      }\r
+      else\r
+      {\r
+         smi_enabled = FALSE;\r
+         TMC_ERR( "Bad NV read status %d on bus monitor configuration",\r
+            nv_read_status, 0, 0 );\r
+      }\r
+\r
+      if( smi_enabled == TRUE )\r
+      {\r
+         /* Get nv read */\r
+         nv_read_status = tmcnv_read( NV_BUS_PROF_SMI_MODE_I, &nv_data_buf );\r
+\r
+         if (nv_read_status == NV_DONE_S)\r
+         {\r
+            bus_monitor_set_nv_cfg( NV_BUS_PROF_SMI_MODE_I, &nv_data_buf );\r
+            bus_monitor_get_nv_mode_settings( BUS_MON_SMI, smi_simple );\r
+            smi_mode_valid = TRUE;\r
+         }\r
+         else\r
+         {\r
+            smi_mode_valid = FALSE;\r
+            TMC_ERR( "Bad NV read status %d on bus monitor configuration",\r
+               nv_read_status, 0, 0 );\r
+         }\r
+\r
+         /* Get nv read */\r
+         nv_read_status = tmcnv_read( NV_BUS_PROF_SMI_TRIGGER_ID_I,\r
+            &nv_data_buf );\r
+\r
+         if (nv_read_status == NV_DONE_S)\r
+         {\r
+            bus_monitor_set_nv_cfg( NV_BUS_PROF_SMI_TRIGGER_ID_I, &nv_data_buf );\r
+         }\r
+         else\r
+         {\r
+            TMC_ERR( "Bad NV read status %d on bus monitor configuration",\r
+               nv_read_status, 0, 0 );\r
+         }\r
+\r
+         /* Get nv read */\r
+         nv_read_status = tmcnv_read( NV_BUS_PROF_SMI_BUS_COUNT_I,\r
+            &nv_data_buf );\r
+\r
+         if (nv_read_status == NV_DONE_S)\r
+         {\r
+            bus_monitor_set_nv_cfg( NV_BUS_PROF_SMI_BUS_COUNT_I, &nv_data_buf );\r
+         }\r
+         else\r
+         {\r
+            TMC_ERR( "Bad NV read status %d on bus monitor configuration",\r
+               nv_read_status, 0, 0 );\r
+         }\r
+\r
+         if( smi_mode_valid == TRUE )\r
+         {\r
+            for( i = 0; i < BUS_MON_NUM_MONITORS; i++ )\r
+            {\r
+\r
+               if( smi_simple[i] == FALSE )\r
+               {\r
+                  if( bus_monitor_get_nv_id( BUS_MON_SMI,\r
+                     BUS_MON_SIMPLE_MODE,\r
+                     i,\r
+                     &nv_id ) != BUS_MON_FAIL )\r
+                  {\r
+                     nv_read_status = tmcnv_read( nv_id, &nv_data_buf );\r
+\r
+                     if (nv_read_status == NV_DONE_S)\r
+                     {\r
+                        bus_monitor_set_nv_cfg( nv_id,\r
+                           &nv_data_buf );\r
+                     }\r
+                     else\r
+                     {\r
+                        TMC_ERR( "Bad NV read status %d on bus monitor configuration",\r
+                           nv_read_status, 0, 0 );\r
+                     }\r
+                  }\r
+               }\r
+               else\r
+               {\r
+                  if( bus_monitor_get_nv_id( BUS_MON_SMI,\r
+                     BUS_MON_ADVANCED_MODE,\r
+                     i,\r
+                     &nv_id ) != BUS_MON_FAIL )\r
+                  {\r
+                     nv_read_status = tmcnv_read( nv_id, &nv_data_buf );\r
+\r
+                     if (nv_read_status == NV_DONE_S)\r
+                     {\r
+                        bus_monitor_set_nv_cfg( nv_id,\r
+                           &nv_data_buf );\r
+                     }\r
+                     else\r
+                     {\r
+                        TMC_ERR( "Bad NV read status %d on bus monitor configuration",\r
+                           nv_read_status, 0, 0 );\r
+                     } /* else nv_read_status != NV_DONE_S */\r
+                  } /* if bus_monitor_get_nv_id == TRUE */\r
+               } /* else smi_simple[i] == TRUE */\r
+            } /* for */\r
+         } /* if smi_mode_valid == TRUE */\r
+      } /* if smi_enabled */\r
+#endif /* FEATURE_SMI */\r
+\r
+      bus_monitor_commit_nv_settings();\r
+   }\r
+#endif /* FEATURE_BUSMON_HAS_NV_CFG */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+   /*                                                                       */\r
+   /*               BUS Arbiter NPA node Initialization                     */\r
+   /*                                                                       */\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   TMC_VOID_FUNCTION_CALL(axi_bus_node_init);\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+   /*                                                                       */\r
+   /*                                                                       */\r
+   /*                    HS USB Initialization                              */\r
+   /*                                                                       */\r
+   /*                                                                       */\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if defined(FEATURE_HS_USB) && (defined(FEATURE_STANDALONE_MODEM) || !defined(FEATURE_NO_USB_HW_ON_PROCESSOR))\r
+   TMC_VOID_FUNCTION_CALL(hsu_config_selector_init);\r
+#endif\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+   /*                                                                       */\r
+   /*                                                                       */\r
+   /*                   Mode Specific Initialization                        */\r
+   /*                                                                       */\r
+   /*                                                                       */\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   /*                         1X specific                                   */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef TMC_1X\r
+\r
+   /* Load calibration items from NV on behalf of Vbatt library */\r
+\r
+   // TMC_HAS_VBATT_CONFIG\r
+   {\r
+      nv_item_type          nv_data_buf;                   /* NV data buffer */\r
+      nv_stat_enum_type     nv_read_status;                /* NV read status */\r
+      /* NV_VBATT_I */\r
+\r
+      /* Get nv read*/\r
+      nv_read_status = tmcnv_read( NV_VBATT_I, &nv_data_buf );\r
+\r
+      if (nv_read_status == NV_DONE_S)\r
+      {\r
+\r
+         vbatt_calibrate( nv_data_buf.vbatt.min, nv_data_buf.vbatt.max );\r
+\r
+      }\r
+      else\r
+      {\r
+\r
+         TMC_ERR( "Bad NV read status %d on vbatt calibration",\r
+            nv_read_status, 0, 0 );\r
+      }\r
+   }\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   /* Load calibration items from NV on behalf of Charger Utility */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   /* Load calibration items from NV on behalf of Thermistor library */\r
+\r
+   // TMC_HAS_THERM_CONFIG\r
+   {\r
+      nv_stat_enum_type nv_read_status;\r
+      nv_item_type      nv_data_buf; /* NV data buffer */\r
+      /* NV_THERM_I */\r
+\r
+      nv_read_status = tmcnv_read( NV_THERM_I, &nv_data_buf );\r
+      if (nv_read_status == NV_DONE_S)\r
+      {\r
+         therm_calibrate( nv_data_buf.therm.min, nv_data_buf.therm.max );\r
+      }\r
+      else\r
+      {\r
+         TMC_ERR( "Bad NV read status %d on therm calibration", nv_read_status, 0, 0 );\r
+      }\r
+   }\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   /* Load calibration items from NV on behalf of HW library */\r
+\r
+   // TMC_HAS_HW_CONFIG\r
+   {\r
+      nv_stat_enum_type nv_read_status;\r
+      nv_item_type      nv_data_buf; /* NV data buffer */\r
+\r
+      /* NV_HW_CONFIG_I */\r
+\r
+      nv_read_status = tmcnv_read( NV_HW_CONFIG_I, &nv_data_buf );\r
+      if (nv_read_status == NV_DONE_S)\r
+      {\r
+         hw_init( nv_data_buf.hw_config );\r
+      }\r
+      else\r
+      {\r
+         TMC_ERR( "Bad NV read status %d on HW_CONFIG calibration", nv_read_status, 0, 0 );\r
+      }\r
+   }\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#endif /* TMC_1X */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /* MM RF driver initialization\r
+    ** Leopard/Cheetah:\r
+    ** 1. Initializes common RF hardware and RF NV variables.\r
+    ** 2. Other remaining RF initialization is done where protocols are activated.\r
+    ** Cougar\r
+    ** 1. All Initialization will done here and only once.\r
+    ** Notes: If phone is in FTM mode, it also does RF initialization.\r
+    */\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) && !defined(FEATURE_COREIMG)\r
+   rf_initial_status =   rfm_init(\r
+      rex_self(),\r
+      TMC_NV_CMD_SIG,\r
+      (void (*)( rex_sigs_type )) tmc_wait) ;\r
+\r
+#ifdef FEATURE_SRCH_CLKREGIM_RM\r
+   /* RF leaves Tx clocks on, on behalf on 1x, turn them OFF here */\r
+   clk_regime_resource_disable(CLKRGM_CLIENT_1X, CLKRGM_RESOURCE_CDMA_TX);\r
+#endif /* FEATURE_SRCH_CLKREGIM_RM */\r
+\r
+#endif /* !FEATURE_BRINGUP_DIAG_ONLY && !FEATURE_COREIMG */\r
+\r
+   /* If RF initialization is fail,\r
+    ** case I nv ftm flag is true:\r
+    **   do nothing.\r
+    ** case II nv ftm flag is invalid:\r
+    **  set nv ftm flag to TRUE, ftm_mode.\r
+    **\r
+    ** Otherwise do nothing.\r
+    */\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_FACTORY_TESTMODE\r
+   {\r
+      typedef enum\r
+      {\r
+         AMSS_MODE,\r
+            DMSS_MODE = AMSS_MODE,\r
+            FTM_MODE\r
+      } ftm_mode_type;\r
+\r
+      nv_stat_enum_type nv_read_status;\r
+      ftm_mode_type     nv_data_buf; /* NV data buffer */\r
+\r
+      if (!rf_initial_status)\r
+      {\r
+\r
+         nv_read_status = tmcnv_read( NV_FTM_MODE_I, (nv_item_type *)&nv_data_buf );\r
+\r
+         /* If NV read failed, substitute a default value.*/\r
+         if( nv_read_status != NV_DONE_S )\r
+         {\r
+            QSR_TMC_MSG_ERROR( 1311059ULL,  "NV read failed, item=%d, status=%d",\r
+               NV_FTM_MODE_I, nv_read_status, 0 );//auto-gen, to change remove 'QSR_' and first param\r
+\r
+            if (!rf_initial_status)\r
+            {\r
+               nv_data_buf = FTM_MODE;\r
+               (void) tmcnv_write( NV_FTM_MODE_I,(nv_item_type *)&nv_data_buf);\r
+            }\r
+         }\r
+      }\r
+\r
+#ifdef FEATURE_FTM_CAMERA_TASK\r
+      /* Make additional memory available for modem in FTM mode */\r
+      nv_read_status = tmcnv_read( NV_FTM_MODE_I, (nv_item_type *)&nv_data_buf );\r
+      if (nv_read_status == NV_DONE_S && nv_data_buf == FTM_MODE)\r
+      {\r
+         void pmem_7k_modem_ftm_init(void);\r
+         pmem_7k_modem_ftm_init();\r
+      }\r
+#endif\r
+   }\r
+#endif /* FEATURE_FACTORY_TESTMODE */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /* Initial SD before application tasks.\r
+    **\r
+    ** The band capability provided by SD need to be ready before CM/UI task\r
+    ** get started.\r
+    */\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) && !defined(FEATURE_COREIMG)\r
+   sd_init_before_app_task_start();\r
+#endif /* !FEATURE_BRINGUP_DIAG_ONLY && !FEATURE_COREIMG*/\r
+\r
+#if defined(FEATURE_TMC_TCXOMGR) || defined(FEATURE_TCXOMGR_TMC)\r
+   {\r
+      // void tcxomgr_init(rex_tcb_type*, rex_sigs_type, void*);\r
+      (void) tcxomgr_init(rex_self(), TMC_NV_CMD_SIG, (void (*)( rex_sigs_type ))tmc_wait);\r
+   }\r
+#endif\r
+\r
+#ifdef FEATURE_TMC_TRM\r
+   {\r
+      /* Initialize TRM.  This call must be made after rf_init which is also\r
+      done in tmc_order_2_init. Note that no\r
+      TRM clients can call TRM until after they first call task_start. */\r
+      void trm_init(rex_tcb_type*, rex_sigs_type, void*);\r
+      trm_init(rex_self(), TMC_NV_CMD_SIG, (void*)tmc_wait);\r
+   }\r
+#endif\r
+\r
+#if defined(FEATURE_RUNTIME_DEVMAP) && defined(IMAGE_MODEM_PROC)\r
+   /* Have RDM issue any open commands. If there were none retrieved from\r
+    ** EFS, compile time defaults will be issued\r
+    */\r
+   TMC_VOID_FUNCTION_CALL(rdm_issue_opens);\r
+#endif\r
+\r
+#ifdef FEATURE_BATTERY_CHARGER\r
+   chg_init_delayed( rex_self(), TMC_NV_CMD_SIG, tmc_wait );\r
+#endif\r
+\r
+#ifdef FEATURE_TIME_IPC_TASK\r
+   TMC_VOID_FUNCTION_CALL(time_init_config);\r
+#endif /* FEATURE_TIME_IPC_TASK */\r
+\r
+#if defined(FEATURE_SEC_TIME) && !defined(FEATURE_SEC_PROCESS_INIT)\r
+   sectime_init( rex_self(),\r
+      TMC_NV_CMD_SIG,\r
+      (void (*)( rex_sigs_type )) tmc_wait );\r
+#endif /* FEATURE_SEC_TIME && !FEATURE_SEC_PROCESS_INIT */\r
+\r
+#if defined(FEATURE_L4LINUX) || defined(FEATURE_QIDS_RPC)\r
+   /* Initialize the QIDS RPC application\r
+    */\r
+   TMC_VOID_FUNCTION_CALL(qids_rpc_app_init);\r
+#endif\r
+\r
+#ifdef FEATURE_DAL\r
+   {\r
+      DALSYSConfig SysCfg = {NULL, 2, NULL};\r
+      DALSYS_InitMod(&SysCfg);\r
+   }\r
+#endif\r
+\r
+#ifdef FEATURE_BRINGUP_NO_SLEEP\r
+   bio_set_sw(0x100);                                                      /* Force to not sleep for Rumi */\r
+#endif /* FEATURE_BRINGUP_NO_SLEEP */\r
+\r
+   if (rf_initial_status == FALSE)\r
+   {\r
+      /* Set TMC State to OFFLINE.\r
+       */\r
+      tmc_set_state(TMC_LPM);\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_CM\r
+      /* Send offline digital cmd to CM.Need to update with different offline\r
+       ** cmd once the interface is defined.\r
+       */\r
+      (void) cm_ph_cmd_oprt_mode(NULL,\r
+         NULL,\r
+         CM_CLIENT_ID_ANONYMOUS,\r
+         SYS_OPRT_MODE_LPM\r
+         );\r
+#endif /* FEAURE_CM */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+   }\r
+   else\r
+   {\r
+      /* Set TMC State to ONLINE.\r
+       */\r
+      tmc_set_state(TMC_ONLINE);\r
+\r
+      /* TMC does not send online command to CM. Online command is send by MMOC\r
+       ** after MMOC is started.\r
+       */\r
+   }\r
+}                                                                          /* tmc_order_2_init */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_order_1_exec()\r
+\r
+DESCRIPTION\r
+  This function starts service tasks tasks. Service tasks are  defined as\r
+  those that are required to be started so that the system can determine if\r
+  it is to continue powerup or if it should return to powerdown. The NV\r
+  task is started first, to allow all other tasks to read any needed\r
+  variables from NVM.\r
+\r
+  It sends START signals to all tasks, one at a time. After sending a START\r
+  signal to a task, it expects an Ack back from the task. Once Ack is\r
+  received, it sends a START Signal to the next task. This handshaking\r
+  ensures a controlled starting of all tasks.\r
+\r
+DEPENDENCIES\r
+All tasks must already be created through tmc_order_0_exec().\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static void tmc_order_1_exec(void)\r
+{\r
+   (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_ONCRPC\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(oncrpc));\r
+\r
+#ifdef FEATURE_STA\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(sta));\r
+\r
+#endif /* FEATURE_STA */\r
+#endif /* FEATURE_ONCRPC */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_EFS\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(fs));\r
+\r
+#endif /* FEATURE_EFS */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_TIME_IPC_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(time_ipc));\r
+\r
+#endif /* FEATURE_TIME_IPC_TASK */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if (defined(FS_FEATURE_RMTEFS_SERVER) || defined(FS_FEATURE_IG_IPC_SERVER) ) && !defined(FEATURE_IG_EFS_EXT_SERVER)\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(efs_srvr));\r
+\r
+#endif /* FS_FEATURE_RMTEFS_SERVER && !FEATURE_IG_EFS_EXT_SERVER */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_EFS_SFAT\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(sfat));\r
+\r
+#endif /* FEATURE_EFS_SFAT */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+#ifndef FEATURE_SEC_PROCESS_INIT\r
+#ifdef FEATURE_IXFILESVC\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ix_filesvc));\r
+\r
+#endif /* FEATURE_IXFILESVC */\r
+\r
+#ifdef FEATURE_IXSQLSVC\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ix_sqlsvc));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ix_sqlclnt));\r
+\r
+#endif /* FEATURE_IXSQLSVC */\r
+#endif /* !FEATURE_SEC_PROCESS_INIT */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_FOTA_FS\r
+   TMC_VOID_FUNCTION_CALL(fota_update_init_after_fs_task_started);\r
+#endif /* FEATURE_FOTA_FS */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_NV\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(nv));\r
+\r
+#endif /* FEATURE_NV */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+   /* It has dependency on nv task. so it need to be called after nv task is\r
+    ** started.\r
+    */\r
+   TMC_VOID_FUNCTION_CALL(err_init);                                                             /* Start error services. */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_UIM_RUIM\r
+   {\r
+      nv_item_type          nv_data_buf;                   /* NV data buffer */\r
+      nv_stat_enum_type     nv_read_status;                /* NV read status */\r
+      /*\r
+       ** ESN-ME could be esn number in stored in NV or a RUIM id.\r
+       ** This function will read ESN-ME from NV,cached to tmc data. The ESN\r
+       ** usage is set to Zero. From that on any entity reads ESN-ME from now on\r
+       ** will get zero until the ESN usage is changed.\r
+       ** When ui task is started, it uses cached ESN-ME to initial RUIM and\r
+       ** reset the ESN usage indicator to NV or RUIM Id based on certain\r
+       ** conditions.After that any entity reads ESN-ME, it will get a number\r
+       ** decided by ESN usage indicator.\r
+       **\r
+       ** Note: ui task is started priori to esn_me cached here. But ui reads\r
+       ** stored esn_me after esn_me is cached right now. If anyhow ui read\r
+       ** stored esn_me before esn_me is cached. We have to move the code before\r
+       ** ui task is started.\r
+       **\r
+       */\r
+\r
+      /* Read the ESN ESN from NV */\r
+\r
+      nv_read_status = tmcnv_read( NV_ESN_I, &nv_data_buf );\r
+\r
+      if (nv_read_status != NV_DONE_S)\r
+         nv_data_buf.esn.esn = 0;\r
+\r
+      /* Store esn me to TMC internal data buffer.\r
+       */\r
+      tmc_store_esn_me(nv_data_buf.esn.esn);\r
+\r
+      /* Set the esn to return Zero until after store esn-me is finished\r
+       */\r
+      nvruim_set_esn_usage( NV_RUIM_ZERO_ESN );\r
+\r
+   }\r
+#endif /* FEATURE_UIM_RUIM */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if (defined( FEATURE_UIM ) && ! defined(FEATURE_GSM_PLT) )\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(uim));\r
+\r
+#endif\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_VBATT_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(vbatt));\r
+\r
+#endif\r
+#endif\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_CHG_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(chg));\r
+\r
+#endif /* FEATURE_CHG_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#if defined(FEATURE_USB) && !defined(FEATURE_NO_USB_HW_ON_PROCESSOR)\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(usbdc));\r
+\r
+#ifdef FEATURE_USB_HOST_ENHANCED\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(usbhc_urb));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(usbhc_dev));\r
+\r
+#if defined(FEATURE_USB_HOST_TEST_ENHANCED) && (defined(FEATURE_USB_HOST_MASS_STORAGE_TEST_ENHANCED) || defined(FEATURE_USB_HOST_HID_TEST_ENHANCED))\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(usbhc_test));\r
+\r
+#endif\r
+#endif\r
+#endif /* FEATURE_USB */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_CTA\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(cta));\r
+\r
+#endif /* FEATURE_CTA_TASK */\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(sleep));\r
+\r
+       clk_regime_init_nv();  /* Load dynamic clock/voltage scaling flags before DSP services are active */\r
+\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   TMC_VOID_FUNCTION_CALL(DCVSInitialize);                                 /* Initialize the DCVS System... */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_QDSP_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(qdsp));\r
+\r
+#endif /* FEATURE_QDSP_TASK */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_QDSP_RTOS\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(adsp_rtos));\r
+\r
+#endif /* FEATURE_QDSP_RTOS */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_MDSP_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(mdsp));\r
+\r
+#endif /* FEATURE_MDSP_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_VOC_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(voc));\r
+\r
+#endif /* FEATURE_VOC_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if ! defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_SND_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(snd));\r
+\r
+#endif /* FEATURE_SND_TASK */\r
+\r
+#ifdef FEATURE_AVS_SBCENC_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(sbcenc));\r
+\r
+#endif /* FEATURE_AVS_SBCENC_TASK */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_GRAPH_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(graph));\r
+\r
+#endif /* FEATURE_GRAPH_TASK */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_GFX_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(gfx));\r
+\r
+#endif /* FEATURE_GFX_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_CAMERA_DRV_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(camera_drv));\r
+\r
+#endif /* FEATURE_CAMERA_DRV_TASK */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_VS_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(vs));\r
+\r
+#endif /* FEATURE_VS_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_IS2000_TDSO\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(tdso));\r
+\r
+#endif /* FEATURE_IS2000_TDSO */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#if !defined(FEATURE_THIN_UI) && !defined(FEATURE_UI_CORE_REMOVED) || defined(FEATURE_HS_POLLING_ON_MODEM)\r
+#ifdef FEATURE_HS\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(hs));\r
+\r
+#endif /* FEATURE_HS */\r
+#endif /* !defined(FEATURE_THIN_UI) && !defined(FEATURE_UI_CORE_REMOVED) */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_IDS\r
+#error code not present\r
+#endif /* FEATURE_IDS */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_DIAG_TASK\r
+\r
+#ifdef FEATURE_BRINGUP_DIAG_ONLY\r
+#if defined(FEATURE_GSM) || defined(FEATURE_WCDMA)\r
+   {\r
+      /* For diag only bringup on GSM/WCDMA targets, set mm_gsm_supported to\r
+      true here */\r
+      mm_gsm_supported = TRUE;\r
+   }\r
+#endif /* FEATURE_GSM || FEATURE_WCDMA */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(diag));\r
+\r
+#endif /* FEATURE_DIAG_TASK */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_IG_QDIAG\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(qdiag));\r
+\r
+#endif /* FEATURE_IG_QDIAG */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_NV_CNV\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(cnv));\r
+\r
+#endif /* FEATURE_NV_CNV */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if (defined(FEATURE_DISP_TASK)) && (!defined(T_MSM7500) || (defined(T_MSM7500) && defined(IMAGE_APPS_PROC)))\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(disp));\r
+\r
+#endif /* FEATURE_DISP_TASK */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_APPS_TCXO_SLEEP\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(dem));\r
+\r
+#endif /* FEATURE_APPS_TCXO_SLEEP */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_XO\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(tcxomgr));\r
+\r
+#endif /* FEATURE_XO */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+#ifdef FEATURE_FTM_CAMERA_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ftm_camera));\r
+\r
+#endif /*FEATURE_FTM_CAMERA_TASK*/\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if defined(FEATURE_HS_USB) && (defined(FEATURE_STANDALONE_MODEM) || !defined(FEATURE_NO_USB_HW_ON_PROCESSOR))\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(hsu_al_task));\r
+\r
+#endif /* FEATURE_HS_USB && (FEATURE_STANDALONE_MODEM || !FEATURE_NO_USB_HW_ON_PROCESSOR) */\r
+\r
+#if defined(FEATURE_HS_USB_MS_FD) && (defined(FEATURE_STANDALONE_MODEM) || !defined(FEATURE_NO_USB_HW_ON_PROCESSOR))\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(hsu_al_ms));\r
+\r
+#endif /* FEATURE_HS_USB_MS_FD && (FEATURE_STANDALONE_MODEM || !FEATURE_NO_USB_HW_ON_PROCESSOR) */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_PWRDB\r
+#error code not present\r
+#endif /* FEATURE_PWRDB */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if defined(FEATURE_REX_CS)\r
+   if (initialize_component_services() != 0)\r
+   {\r
+      TMC_ERR("CS initialization failed ",0,0,0);\r
+   }\r
+#endif\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) && !defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#if (defined(FEATURE_CDSMS) || defined(FEATURE_GWSMS))\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(wms));\r
+\r
+#endif /* FEATURE_CDSMS || FEATURE_GWSMS */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY && ! FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+}                                                                          /* tmc_order_1_exec */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_order_2_exec()\r
+\r
+DESCRIPTION\r
+  This function starts application tasks.It sends START signals to all tasks,\r
+  one at a time. After sending a START signal to a task, it expects an Ack\r
+  back from the task. Once Ack is received, it sends a START Signal to the\r
+  next task. This handshaking ensures a controlled starting of all tasks.\r
+\r
+DEPENDENCIES\r
+All tasks must already be created through tmc_order_0_exec().\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static void tmc_order_2_exec(void)\r
+{\r
+   (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if (defined(FEATURE_WLAN) && !defined(FEATURE_MULTIPROCESSOR))\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(wlan_cp));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(wlan_trp));\r
+\r
+#endif /* FEATURE_WLAN && !FEATURE_MULTIPROCESSOR */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if (defined(FEATURE_DATA) && defined(FEATURE_DATA_PS) && !defined(FEATURE_DATA_ON_APPS))\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ps));\r
+\r
+#endif /* FEATURE_DATA && FEATURE_DATA_PS && !FEATURE_DATA_ON_APPS */\r
+\r
+#ifdef FEATURE_DATA_PS\r
+#ifdef FEATURE_DATA_PS_DCC\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(dcc));\r
+\r
+#endif /* FEATURE_DATA_PS_DCC */\r
+#endif\r
+\r
+#if defined(FEATURE_DATA_PS) && defined(FEATURE_DATA_PS_SOCK_REARCH)\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ds_sig));\r
+\r
+#endif /* FEATURE_DATA_PS && FEATURE_DATA_PS_SOCK_REARCH */\r
+#if defined(FEATURE_DATA_MUX)\r
+#error code not present\r
+#endif /* FEATURE_DATA_MUX*/\r
+#if (defined(FEATURE_WLAN) && !defined(FEATURE_MULTIPROCESSOR))\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(wlan_sec));\r
+\r
+#endif /* FEATURE_WLAN && !FEATURE_MULTIPROCESSOR */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_SEC_PROCESS_INIT\r
+#ifdef FEATURE_IXHTTPSVC\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ix_httpsvc));\r
+\r
+#endif /* FEATURE_IXHTTPSVC */\r
+\r
+#ifdef FEATURE_IXTIMESVC\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ix_timesvc));\r
+\r
+#endif /* FEATURE_IXTIMESVC */\r
+\r
+#ifdef FEATURE_IXCONTENTSVC\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ix_contentclnt));\r
+\r
+#endif /* FEATURE_IXCONTENTSVC */\r
+\r
+#ifdef FEATURE_IXDESCRAMBLERSVC\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ix_descramblersvc));\r
+\r
+#endif\r
+#endif /* !FEATURE_SEC_PROCESS_INIT */\r
+\r
+#ifdef FEATURE_IXCONTENTSVC\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ix_contentsvc));\r
+\r
+#endif /* FEATURE_IXCONTENTSVC */\r
+\r
+#ifdef FEATURE_SEC\r
+\r
+#ifndef FEATURE_SEC_PROCESS_INIT\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(sec));\r
+\r
+#ifdef FEATURE_SEC_ARM_CRYPTO\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(seccryptarm));\r
+\r
+#endif /* FEATURE_SEC_ARM_CRYPTO */\r
+\r
+#ifdef FEATURE_SEC_CONTENT_AGENT\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(contentagentdiag));\r
+\r
+#endif /* FEATURE_SEC_CONTENT_AGENT */\r
+\r
+#ifdef FEATURE_SECRND\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(secrnd));\r
+\r
+#endif /* FEATURE_SECRND */\r
+\r
+#ifdef FEATURE_SEC_USFS\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(sfs));\r
+\r
+#endif /* FEATURE_SEC_USFS */\r
+#endif /* !FEATURE_SEC_PROCESS_INIT */\r
+\r
+#ifdef FEATURE_SSD\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ssd));\r
+\r
+#endif /* FEATURE_SEC_USFS */\r
+\r
+#ifdef FEATURE_SEC_IPSEC\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(secips));\r
+\r
+#endif /* FEATURE_SEC_IPSEC */\r
+\r
+#ifndef FEATURE_DATA_ON_APPS\r
+#ifdef FEATURE_SEC_SSL\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(secssl));\r
+\r
+#endif /* FEATURE_SEC_SSL */\r
+#endif /* !FEATURE_DATA_ON_APPS */\r
+\r
+#ifndef T_RUMI\r
+#ifdef FEATURE_SEC_DRM\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(secdrm));\r
+\r
+#endif /* FEATURE_SEC_DRM */\r
+#endif /* ! T_RUMI */\r
+\r
+#endif /* FEATURE_SEC */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_CM\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(cm));\r
+\r
+#endif /* FEATURE_CM */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if defined(FEATURE_MULTIMODE_ARCH) && !defined(FEATURE_COREIMG)\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(mmoc));\r
+\r
+#endif /* FEATURE_MULTIMODE_ARCH */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef TMC_1X\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(mc));\r
+\r
+#endif /* TMC_1X */\r
+\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef SIRIUS_PLATFORM\r
+#ifndef T_QUASAR\r
+#ifdef FEATURE_UI\r
+\r
+      tmc_start_tasks_common(_TASK_INFO_P(ui));\r
+\r
+#endif /* FEATURE_UI */\r
+#endif /* T_QUASAR */\r
+#endif /* SIRIUS_PLATFORM */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+\r
+#ifndef T_QUASAR\r
+#if defined(FEATURE_BT) && !defined(IMAGE_MODEM_PROC)\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(bt));\r
+\r
+#ifdef FEATURE_BT_EXTPF\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(bt_pf));\r
+\r
+#endif /* FEATURE_BT_EXTPF */\r
+\r
+#ifdef FEATURE_BT_FS_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(bt_fs));\r
+\r
+#endif /* FEATURE_BT_FS_TASK */\r
+\r
+#endif /* FEATURE_BT && !IMAGE_MODEM_PROC */\r
+#endif /* T_QUASAR */\r
+\r
+#ifdef FEATURE_BT_FTM_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(bt_ftm));\r
+\r
+#endif /* FEATURE_BT_FTM_TASK */\r
+\r
+#ifdef FEATURE_FM\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(fmrds));\r
+\r
+#endif /* FEATURE_FM */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef TMC_1X\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(tx));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(rx));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(srch));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(rxtx));\r
+\r
+#endif /* TMC_1X */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_HDR\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(hdrmc));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(hdrtx));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(hdrrx));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(hdrsrch));\r
+\r
+#endif /* FEATURE_HDR */\r
+\r
+#ifdef FEATURE_HDR_BCMCS\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(hdrbc));\r
+\r
+#endif /* FEATURE_HDR_BCMCS */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifndef T_QUASAR\r
+#ifdef FEATURE_QMIP\r
+#error code not present\r
+#endif /* FEATURE_QMIP */\r
+#endif /* T_QUASAR */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_DATA\r
+\r
+#ifndef T_QUASAR\r
+#ifndef FEATURE_DATA_ON_APPS\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ds));\r
+\r
+#endif /* !FEATURE_DATA_ON_APPS */\r
+\r
+#ifdef FEATURE_COMP_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(comp));\r
+\r
+#endif /* FEATURE_COMP_TASK */\r
+\r
+#if ( (defined(FEATURE_DATA_GCSD) || defined(FEATURE_DATA_WCDMA_CS)) && !defined(FEATURE_WCDMA_PLT) && !defined(FEATURE_GSM_PLT))\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(Gcsd));\r
+\r
+#endif /* (FEATURE_DATA_GCSD || FEATURE_DATA_WCDMA_CS) && !FEATURE_WCDMA_PLT */\r
+\r
+#ifndef FEATURE_DATA_ON_APPS\r
+#ifdef FEATURE_WCDMA /* ) && ( defined FEATURE_DATA_WCDMA_CS ) ) */\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(dswcsd_ul));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(dswcsd_dl));\r
+\r
+#endif /* FEATURE_WCDMA */\r
+#endif /* !FEATURE_DATA_ON_APPS */\r
+#endif /* T_QUASAR */\r
+#endif /* FEATURE_DATA */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_DS_SOCKETS_TEST_TCP\r
+#error code not present\r
+#endif /* FEATURE_DS_SOCKETS_TEST_TCP */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_DS_SOCKETS_TEST_UDP\r
+#error code not present\r
+#endif /* FEATURE_DS_SOCKETS_TEST_UDP */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if defined( FEATURE_AUTH ) || defined( FEATURE_RUIM )\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(auth));\r
+\r
+#endif /* FEATURE_AUTH || FEATURE_RUIM */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+#ifndef T_QUASAR\r
+#ifdef FEATURE_DH\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(dh));\r
+\r
+#endif /* FEATURE_DH */\r
+#endif /* T_QUASAR */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if (defined(FEATURE_GAN) && !(defined(IMAGE_APPS_PROC)))\r
+#error code not present\r
+#endif\r
+\r
+#ifdef FEATURE_GAN\r
+#error code not present\r
+#endif /* FEATURE_GAN */\r
+\r
+#ifdef FEATURE_MMGSDI\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(gsdi));\r
+\r
+#endif /* FEATURE_MMGSDI */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef SIRIUS_PLATFORM\r
+#error code not present\r
+#endif /* SIRIUS_PLATFORM */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_VIRTUAL_SIM\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(gsdi_uim_server));\r
+\r
+#endif\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if defined(FEATURE_GSTK)\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(gstk));\r
+\r
+#endif /* FEATURE_GSTK */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if defined( FEATURE_VIRTUAL_SAT ) && defined( FEATURE_GSTK )\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(virtsat));\r
+\r
+#endif /* FEATURE_VIRTUAL_SAT && FEATURE_GSIK */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_WCDMA\r
+#ifndef FEATURE_GSM_PLT\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(wcdma_l1));\r
+\r
+#ifdef FEATURE_WCDMA_PLT\r
+#error code not present\r
+#endif\r
+#endif\r
+\r
+#if ( !defined(FEATURE_WCDMA_PLT) && !defined(FEATURE_GSM_PLT) )\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(wcdma_l2_ul));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(wcdma_l2_dl));\r
+\r
+#ifdef FEATURE_HSDPA\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(wcdma_mac_hs_dl));\r
+\r
+#endif\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(rrc));\r
+\r
+#endif /* !FEATURE_WCDMA_PLT */\r
+#endif /* FEATURE_WCDMA */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if (defined(FEATURE_GSM) && !defined(FEATURE_WCDMA_PLT) && !defined(FEATURE_GSM_PLT) )\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(gsm_l1));\r
+\r
+#ifndef FEATURE_GSM_PLT\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(gsm_l2));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(rr));\r
+\r
+#endif /* !FEATURE_GSM_PLT */\r
+\r
+#ifdef FEATURE_GSM_GPRS\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(gprs_mac));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(gprs_rlc_ul));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(gprs_rlc_dl));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(gprs_llc));\r
+\r
+#endif /* FEATURE_GSM_GPRS */\r
+#endif /* FEATURE_GSM && !FEATURE_WCDMA_PLT */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_NAS\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(mm));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(reg));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(mn_cnm));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(sm));\r
+\r
+#ifdef FEATURE_GSM_CB\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(cb));\r
+\r
+#endif /* #ifdef FEATURE_GSM_CB */\r
+#endif /* FEATURE_NAS */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_TC\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(tc));\r
+\r
+#endif /* FEATURE_TC */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if ( defined(FEATURE_WCDMA_VST_FULLSTACK) || defined(FEATURE_WCDMA_VST_AS))\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(menu));\r
+\r
+#endif\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if (defined(FEATURE_CGPS) && !defined(FEATURE_DISABLE_CGPS))\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(mgpmc));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(cc));\r
+\r
+#ifdef FEATURE_CGPS_PGI_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(pgi));\r
+\r
+#endif /* FEATURE_CGPS_PGI_TASK */\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(pp));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(cd));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(nf));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(gpsfft));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(lm));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(sm_tm));\r
+\r
+#ifdef FEATURE_CGPS_PD_COMMS_TCP_ON_MODEM\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(pdcommtcp));\r
+\r
+#endif /* !FEATURE_DATA_ON_APPS */\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(pdcommwms));\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(gps_fs));\r
+\r
+#ifdef FEATURE_CGPS_LOC_MIDDLEWARE\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(loc_middleware));\r
+\r
+#endif // FEATURE_CGPS_LOC_MIDDLEWARE\r
+#endif /* FEATURE_CGPS */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if ( defined(FEATURE_WCDMA_VST_FULLSTACK) || defined(FEATURE_WCDMA_VST_AS))\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(al1));\r
+\r
+#endif \r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_WCDMA_VST_AS\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(rrcut));\r
+\r
+#endif\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_FTM_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ftm));\r
+\r
+#endif /* FEATURE_FTM_TASK */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_QIPCALL\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(qipcall));\r
+\r
+#endif /* FEATURE_QIPCALL */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_BCMCS\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(bcdb));\r
+\r
+#endif /* FEATURE_BCMCS */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) \r
+#if (defined(FEATURE_WLAN) && !defined(FEATURE_MULTIPROCESSOR))\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(wlan_ds));\r
+\r
+#endif /* (defined(FEATURE_WLAN) && !defined(FEATURE_MULTIPROCESSOR)) */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_DTV\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(dtv));\r
+\r
+#endif /* FEATURE_DTV */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#if !defined(FEATURE_BRINGUP_DIAG_ONLY) || defined(FEATURE_BRINGUP_MULTIMEDIA_ONLY)\r
+#ifdef FEATURE_JOYST_TASK\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(joyst));\r
+\r
+#endif /* FEATURE_JOYST_TASK */\r
+#endif /* ! FEATURE_BRINGUP_DIAG_ONLY || FEATURE_BRINGUP_MULTIMEDIA_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#if defined(FEATURE_PBM_TASK)\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(pbm));\r
+\r
+#endif /* FEATURE_PBM_TASK */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+#if defined(FEATURE_CPU_BASED_FLOW_CONTROL)\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(fc));\r
+\r
+#endif /* FEATURE_CPU_BASED_FLOW_CONTROL */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef SIRIUS_PLATFORM\r
+#error code not present\r
+#endif /* SIRIUS_PLATFORM */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_PM_SERVER\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(pms));\r
+\r
+#endif /* FEATURE_PM_SERVER */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_APS\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(aps));\r
+\r
+#endif /* FEATURE_APS */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_ATS\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ats));\r
+\r
+#endif /* FEATURE_ATS */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_GSM_PLT\r
+#error code not present\r
+#endif\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_DOG\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(dog));\r
+\r
+#endif /* FEATURE_DOG */\r
+\r
+   /* Loads the pages from NAND in the background.\r
+    ** It exist only during boot up and once the pages are loaded, it suspends.\r
+    ** This task could be started any time. it is put as the last task to\r
+    ** eliminates any time wasted in background loading during boot.\r
+    ** Ideally the background loading should be start after the initialization\r
+    ** is over. But that is not a hard requirement.\r
+    */\r
+#ifndef FEATURE_BRINGUP_DIAG_ONLY\r
+#ifdef FEATURE_PROGRESSIVE_BOOT\r
+\r
+   rex_def_task_ext2(TASK_HANDLE(background_loader),\r
+      (unsigned char*)TASK_STACK(background_loader),\r
+      BACKGROUND_LOADER_STACK_SIZ * sizeof(rex_stack_word_type),\r
+      BACKGROUND_LOADER_PRI,\r
+      TASK_MAIN(background_loader),\r
+               TASK_IDENT(background_loader),\r
+      FALSE,\r
+      TASK_NODOG_RPT);\r
+\r
+       // THIS TASK IS NOT IMPLEMENTED TO RESPOND TO THE REQUIRED\r
+       // TMC SIGNALING PROTOCOL.\r
+\r
+   //   (void) tmc_wait(TMC_ACK_SIG);\r
+   //   (void) rex_clr_sigs(rex_self(), TMC_ACK_SIG);\r
+\r
+#endif /* FEATURE_PROGRESSIVE_BOOT */\r
+#endif /* FEATURE_BRINGUP_DIAG_ONLY */\r
+\r
+   /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/\r
+\r
+#ifdef FEATURE_MFLO\r
+#error code not present\r
+#endif/* FEATURE_MFLO */\r
+\r
+#ifdef FEATURE_UBM_L1\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(ubm_l1));\r
+\r
+#endif /* FEATURE_UBM_L1 */\r
+\r
+#if defined(FEATURE_SENSORS)\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(sns));\r
+\r
+#endif /* FEATURE_SENSORS */\r
+\r
+#if defined(FEATURE_REX_CS)\r
+   if (0 != initialize_component_services_modules())\r
+   {\r
+      TMC_ERR("CS module initialization ",0,0,0);\r
+   }\r
+#endif\r
+\r
+#if defined(FEATURE_DOG_KEEPALIVE_TASK)\r
+\r
+   tmc_start_tasks_common(_TASK_INFO_P(dog_keepalive));\r
+\r
+#endif /* FEATURE_DOG_KEEPALIVE_TASK */\r
+\r
+}                                                                          /* tmc_order_2_exec */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_order_3_init\r
+\r
+DESCRIPTION\r
+  Initialize on behalf of runtime device mapper\r
+\r
+DEPENDENCIES\r
+It has be called after tmc_order_0_init and\r
+  tmc_start_tasks.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+static void tmc_order_3_init(void)\r
+{\r
+#ifdef TMC_SET_RAN_SEED\r
+   {\r
+      qword clk_time;\r
+               clk_read_ms(clk_time);  /* Seed the random function with time from clk. */\r
+      ran_seed(qw_lo(clk_time));\r
+   }\r
+#endif /* TMC_SET_RAN_SEED */\r
+\r
+#ifdef FEATURE_AUTOMATIC_CLOCK_FREQUENCY_CHANGING\r
+   clk_switch_enable();\r
+#endif /* FEATURE_AUTOMATIC_CLOCK_FREQUENCY_CHANGING */\r
+\r
+#if defined(FEATURE_DYNAMIC_CLOCK_FREQUENCY_CHANGING)\r
+   /* Deregister the boot client. */\r
+   clk_regime_deregister_for_cpu_resource(CLKRGM_CPU_CLIENT_BOOT);\r
+#endif\r
+\r
+#if defined(SLEEP_MP4_OKTS_SIG) && defined(FEATURE_MP4_DECODER)\r
+   /* MP4 - okay to sleep. We do this here because MP4 task init is not\r
+    ** carried out until a media clip is played.\r
+    */\r
+   SLEEP_ASSERT_OKTS( SLEEP_MP4_OKTS_SIG );\r
+#endif /* SLEEP_MP4_OKTS_SIG && FEATURE_MP4_DECODER */\r
+\r
+#ifdef FEATURE_USB\r
+#if !defined(FEATURE_USB_ON_APPS_PROC) && !defined(FEATURE_WCDMA_PLT)\r
+#if defined(FEATURE_USB_CDC_ACM) || defined(FEATURE_USB_DIAG) || defined(FEATURE_USB_DIAG_NMEA) || defined(FEATURE_USB) && defined(FEATURE_MMC)\r
+       TMC_VOID_FUNCTION_CALL(sio_usb_dev_init);   /* Currently done in MC */\r
+#endif\r
+#endif /* !FEATURE_USB_ON_APPS_PROC && !FEATURE_WCDMA_PLT */\r
+#endif /* FEATURE_USB */\r
+\r
+#if defined(FEATURE_QFUSE_PROGRAMMING) && defined(IMAGE_MODEM_PROC)\r
+   TMC_VOID_FUNCTION_CALL(efuse_diag_init);\r
+#endif\r
+\r
+}                                                                          /* tmc_order_3_init */\r
+\r
+static void tmc_order_3_exec(void)\r
+{\r
+#if defined(T_MSM7500) && defined(T_FFA) && !defined(FEATURE_I2C_DIRECT_ON_ARM11)\r
+   /* Set the Philips USB OTG XCVR in power down mode */\r
+   tmc_power_down_usb_otg();\r
+#endif\r
+\r
+#ifdef FEATURE_SMEM\r
+   /* Set the modem status to READY */\r
+   smem_proc_comm_set_status(SMEM_PROC_COMM_READY);\r
+#endif /* FEATURE_SMEM */\r
+}\r
+\r
+static void tmc_order_4_init(void)\r
+{\r
+}\r
+static void tmc_order_4_exec(void)\r
+{\r
+}\r
+\r
+static void tmc_order_5_init(void)\r
+{\r
+}\r
+static void tmc_order_5_exec(void)\r
+{\r
+}\r
+\r
+static void tmc_order_6_init(void)\r
+{\r
+}\r
+static void tmc_order_6_exec(void)\r
+{\r
+}\r
+\r
+static void tmc_order_7_init(void)\r
+{\r
+}\r
+static void tmc_order_7_exec(void)\r
+{\r
+}\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_init\r
+\r
+DESCRIPTION\r
+  Initialize Task Main Controller - Called immediately after rex_init is\r
+  called. It does DMSS none protocol specific power up initialization,\r
+  queue initialization, defines timers, defines tasks and starts tasks.\r
+\r
+  Initialization sequence:\r
+  1. Set state of TMC task.\r
+  2. Initial timer and command queue of TMC task.\r
+  3. Initialize before any tasks start.\r
+  4. Create tasks.\r
+  5. Start service tasks\r
+  6. Continue on initialization after serice tasks start.\r
+  7. Start application tasks\r
+  8. Continue on initialization after all tasks start.\r
+  9. Update state of TMC task.\r
+  10.if initializaion is fail, send offline cmda command to CM.\r
+\r
+DEPENDENCIES\r
+  It has be called before any other functions is used.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  Called is stopped until it finishes.\r
+\r
+===========================================================================*/\r
+static void tmc_init(void)\r
+{\r
+   REX_STAT_DISABLE();   // Disable intlock profiling during startup\r
+\r
+   tmc_set_init_state(FALSE);   // Inidicate that tmc initializaiton is done\r
+\r
+   tmc_data_reset();   // Reset TMC data\r
+\r
+   tmc_module_init(); // Initialize queues and timers\r
+\r
+   tmc_order_0_init(); // Inits Performed TMC Context (Global)\r
+   tmc_order_0_exec();\r
+\r
+   tmc_order_1_init(); // Inits Performed TMC Context (Global)\r
+   tmc_order_1_exec();\r
+\r
+   tmc_order_2_init(); // Inits Performed TMC Context (Global)\r
+   tmc_order_2_exec();\r
+\r
+   tmc_order_3_init(); // Inits Performed TMC Context (Global)\r
+   tmc_order_3_exec();\r
+\r
+   tmc_order_4_init(); // Inits Performed TMC Context (Global)\r
+   tmc_order_4_exec();\r
+\r
+   tmc_order_5_init(); // Inits Performed TMC Context (Global)\r
+   tmc_order_5_exec();\r
+\r
+   tmc_order_6_init(); // Inits Performed TMC Context (Global)\r
+   tmc_order_6_exec();\r
+\r
+   tmc_order_7_init(); // Inits Performed TMC Context (Global)\r
+   tmc_order_7_exec();\r
+\r
+   tmc_set_init_state(TRUE);   // Inidicate that tmc initializaiton is done\r
+\r
+   REX_STAT_ENABLE(); // Enable intlock profiling\r
+} /* tmc_init */\r
+\r
+/*===========================================================================\r
+=============================================================================\r
+=============================================================================\r
+=================================== TMC CMD =================================\r
+=============================================================================\r
+=============================================================================\r
+===========================================================================*/\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_cmd\r
+\r
+DESCRIPTION\r
+  This function is called by other tasks to queue a command and send a\r
+  command signal to tmc task.Then function returns to the caller. This does\r
+  not mean that the command has been executed yet, just that it is waiting to\r
+  be executed.\r
+\r
+DEPENDENCIES\r
+  Free command queue and command queue have be initialized with tmc_init.\r
+\r
+RETURN VALUE\r
+  boolean  If command queue is full, FALSE is returned.\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+boolean tmc_cmd(tmc_cmd_e_type cmd)\r
+{\r
+  tmc_cmd_type  *cmd_ptr;\r
+\r
+  /* Dequeue a command buffer from the free command queue.\r
+  ** Point done_q_ptr to the free command queue. Set task pointer and signal\r
+  ** to NULL for now.\r
+  **\r
+  ** The done_q_ptr is for free command buffer back to free command queue.\r
+  ** If the task pointer is non-NULL, signal the task that the tone is done.\r
+  */\r
+  cmd_ptr = (tmc_cmd_type *) q_get(&tmc_free_cmd_q);\r
+\r
+   if (cmd_ptr == NULL)\r
+   {\r
+      return(FALSE);\r
+  }\r
+\r
+  cmd_ptr->hdr.done_q_ptr = &tmc_free_cmd_q;\r
+  cmd_ptr->hdr.task_ptr = NULL;\r
+  cmd_ptr->cmd_id = cmd;\r
+\r
+  /* Queue the command. */\r
+  q_put(&tmc_cmd_q, &cmd_ptr->hdr.link);\r
+\r
+  /* Set the command signal to notify TMC */\r
+   (void) rex_set_sigs(TASK_HANDLE(tmc), TMC_CMD_Q_SIG);\r
+\r
+   return(TRUE);\r
+\r
+} /* tmc_cmd */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_get_cmd_buf\r
+\r
+DESCRIPTION\r
+  This function is called by other tasks to get a command buffer to pass a\r
+  command to tmc task.\r
+\r
+DEPENDENCIES\r
+  Free command queue has be initialized with tmc_init.\r
+\r
+RETURN VALUE\r
+  tmc_cmd_type  If command queue is full, NULL is returned.\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+tmc_cmd_type *tmc_get_cmd_buf(void)\r
+{\r
+  tmc_cmd_type                     *cmd_ptr;\r
+\r
+  /* Dequeue a command buffer from the free command queue.\r
+  ** Point done_q_ptr to free command queue. Set task pointer and signals to\r
+  ** NULL for now.\r
+  **\r
+  ** After command is processed, command buffer will be free back to queue\r
+  ** pointed by done_q_ptr.If task pointer is not NULL,signals will be set to\r
+  ** the task pointed by task_ptr.\r
+  */\r
+  cmd_ptr = (tmc_cmd_type *) q_get(&tmc_free_cmd_q);\r
+\r
+  cmd_ptr->hdr.done_q_ptr = &tmc_free_cmd_q;\r
+  cmd_ptr->hdr.task_ptr = NULL;\r
+\r
+   return(cmd_ptr);\r
+}\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION  TMC_GET_STATE\r
+\r
+DESCRIPTION\r
+\r
+  This function returns the current TMC state\r
+\r
+DEPENDENCIES\r
+\r
+  None.\r
+\r
+RETURN VALUE\r
+\r
+  Current TMC state.\r
+\r
+SIDE EFFECTS\r
+\r
+  None.\r
+\r
+===========================================================================*/\r
+tmc_state_e_type tmc_get_state(void)\r
+{\r
+   return(tmc_data.state);\r
+}\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_get_stored_esn_me\r
+\r
+DESCRIPTION\r
+  This function returns the stored esn_me .\r
+\r
+DEPENDENCIES\r
+  None\r
+\r
+RETURN\r
+  dword\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+dword tmc_get_stored_esn_me(void)\r
+{\r
+  return (tmc_data.esn_me);\r
+\r
+} /* tmc_get_stored_esn_me */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION  TMC_IS_INIT_DONE\r
+\r
+DESCRIPTION\r
+\r
+  This function returns if the tmc initialization is done.\r
+\r
+DEPENDENCIES\r
+\r
+  None.\r
+\r
+RETURN VALUE\r
+  TRUE if the tmc initialization is done.Otherwise return FALSE.\r
+\r
+SIDE EFFECTS\r
+\r
+  None.\r
+\r
+===========================================================================*/\r
+boolean tmc_is_init_done(void)\r
+{\r
+   return(tmc_data.is_init_done);\r
+}\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_get_mem_heap_size\r
+\r
+DESCRIPTION\r
+  This function returns the size of requested memory heap.\r
+\r
+DEPENDENCIES\r
+  None\r
+\r
+RETURN\r
+  dword\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+dword tmc_get_mem_heap_size(tmc_mem_heap_e_type p_type)\r
+{\r
+  dword heap_size = 0;\r
+\r
+   switch (p_type)\r
+   {\r
+    case TMC_MEM_HEAP_TYPE_THRD:\r
+      heap_size = MEM_HEAP_THRESHOLD;\r
+      break;\r
+    case TMC_MEM_HEAP_TYPE_BUF:\r
+      heap_size = TMC_HEAP_MEM_BUFFER_SIZE;\r
+      break;\r
+    case TMC_MEM_HEAP_TYPE_SMALL_BUF:\r
+      heap_size = TMC_HEAP_SMALL_MEM_BUFFER_SIZE;\r
+      break;\r
+    default:\r
+      /* invalid command mem heap enum type.*/\r
+      TMC_ERR("A invalid mem heap enum type ",0,0,0);\r
+      break;\r
+  }\r
+   return(heap_size);\r
+}\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_put_cmd_buf\r
+\r
+DESCRIPTION\r
+  This function is called by other tasks to queue a command and send a\r
+  command signal to tmc task.Then function returns to the caller. This does\r
+  not mean that the command has been executed yet, just that it is waiting to\r
+  be executed.\r
+\r
+DEPENDENCIES\r
+  Command queue has be initialized with tmc_init.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  None\r
+\r
+===========================================================================*/\r
+void tmc_put_cmd_buf(tmc_cmd_type *cmd_ptr)\r
+{\r
+  if ( cmd_ptr != NULL )\r
+  {\r
+               q_put(&tmc_cmd_q, &cmd_ptr->hdr.link);    /* Queue the command. */\r
+\r
+               (void) rex_set_sigs(TASK_HANDLE(tmc), TMC_CMD_Q_SIG);    /* Set the command signal to notify TMC */\r
+  }\r
+}\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_task_start\r
+\r
+DESCRIPTION\r
+  This function is called by each task when it is created.  The function\r
+  then performs the startup processing for the calling task.  The function\r
+  first sets the acknowledge signal back to TMC to acknowledge that is had\r
+  been created.  It then waits for the start signal back to it.  While\r
+  waiting for the start signal and keeps kicking the watchdog timer\r
+  everytime its interval timer has expired.  When it gets the start\r
+  signal it acknowledges it back to TMC and it then returns to the caller.\r
+  The caller task is now formally started and it can start normal application\r
+  processing.\r
+\r
+DEPENDENCIES\r
+  TMC task has to be started.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  The calling task stays here until it receives the START signal.\r
+\r
+===========================================================================*/\r
+void tmc_task_start(void)\r
+{\r
+       tmc_set_ack_task(rex_self());\r
+\r
+       (void) rex_set_sigs(TASK_HANDLE(tmc), TMC_ACK_SIG);  /* Acknowledge task creation. */\r
+\r
+       (void) rex_wait(TASK_START_SIG);  /* Wait for the start signal */\r
+\r
+       (void) rex_clr_sigs(rex_self(), TASK_START_SIG);  /* Clear task start signal. */\r
+\r
+       tmc_set_ack_task(rex_self());\r
+\r
+       (void) rex_set_sigs(TASK_HANDLE(tmc), TMC_ACK_SIG);  /* If start signal is set then signal back to TMC and return to caller. */\r
+\r
+} /* tmc_task_start*/\r
+\r
+void tmc_task_start_ex(tmc_task_start_client_cb_type clnt_cb) // DEPRECATE\r
+{\r
+   tmc_set_ack_task(rex_self());\r
+\r
+       (void) rex_set_sigs(TASK_HANDLE(tmc), TMC_ACK_SIG);  /* Acknowledge task creation. */\r
+\r
+       (void) rex_wait(TASK_START_SIG);  /* Wait for the start signal */\r
+\r
+       (void) rex_clr_sigs(rex_self(), TASK_START_SIG);  /* Clear task start signal. */\r
+\r
+       clnt_cb();  /* Call client callback */\r
+\r
+       tmc_set_ack_task(rex_self());\r
+\r
+       (void) rex_set_sigs(TASK_HANDLE(tmc), TMC_ACK_SIG);  /* If start signal is set then signal back to TMC and return to caller. */\r
+\r
+} /* tmc_task_start*/\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_task_ack\r
+\r
+DESCRIPTION\r
+  This function sends acknowledge signal to Task Main Control task by caller\r
+\r
+DEPENDENCIES\r
+  Task Main Control task is running.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  none\r
+\r
+===========================================================================*/\r
+void tmc_task_ack(void)\r
+{\r
+  tmc_set_ack_task(rex_self());\r
+\r
+   (void) rex_set_sigs(TASK_HANDLE(tmc), TMC_ACK_SIG);\r
+\r
+} /* tmc_ack */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_task_stop\r
+\r
+DESCRIPTION\r
+  This function is called by each task when it stops.  The function then\r
+  performs the stop processing for the calling task.  The function\r
+  sets the acknowledge signal back to TMC to acknowledge that is had\r
+  been stopped.\r
+\r
+DEPENDENCIES\r
+  Task Main Control task is running.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  none\r
+\r
+===========================================================================*/\r
+void tmc_task_stop(void)\r
+{\r
+  tmc_set_ack_task(rex_self());\r
+\r
+   (void) rex_set_sigs(TASK_HANDLE(tmc), TMC_ACK_SIG);\r
+\r
+} /* tmc_task_stop */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_task_offline\r
+\r
+DESCRIPTION\r
+  This function is called by each task when it goes offline.  The function\r
+  then performs the offline processing for the calling task.  The function\r
+  sets the acknowledge signal back to TMC to acknowledge that is had\r
+  been offline.\r
+\r
+DEPENDENCIES\r
+  Task Main Control task is running.\r
+\r
+RETURN VALUE\r
+  void\r
+\r
+SIDE EFFECTS\r
+  none\r
+\r
+===========================================================================*/\r
+void tmc_task_offline(void)\r
+{\r
+   tmc_set_ack_task(rex_self());\r
+\r
+   (void) rex_set_sigs(TASK_HANDLE(tmc), TMC_ACK_SIG);\r
+\r
+} /* tmc_task_offline */\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_malloc\r
+\r
+DESCRIPTION\r
+  This function allocate the memmory from tmc heap.\r
+  If the number of bytes to allocate is less than the memory threshold, use\r
+  tmc_heap_small_size otherwise use the tmc_heap_size.\r
+\r
+DEPENDENCIES\r
+  None\r
+\r
+RETURN VALUE\r
+  the pointer to the tmc heap.\r
+\r
+SIDE EFFECTS\r
+\r
+===========================================================================*/\r
+void *tmc_malloc_debug(size_t size, char *file_name, unsigned int line_number)\r
+{\r
+   if(size <= tmc_get_mem_heap_size(TMC_MEM_HEAP_TYPE_THRD) )\r
+   {\r
+#ifdef FEATURE_MEM_DEBUG\r
+      return(mem_malloc_debug(&tmc_heap_small, size, file_name, line_number));\r
+#else\r
+      return( mem_malloc(&tmc_heap_small,size) );\r
+#endif\r
+   }\r
+   else\r
+   {\r
+#ifdef FEATURE_MEM_DEBUG\r
+      return(mem_malloc_debug(&tmc_heap, size, file_name, line_number));\r
+#else\r
+      return( mem_malloc(&tmc_heap, size) );\r
+#endif\r
+   }\r
+}\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_free\r
+\r
+DESCRIPTION\r
+  This function free the memmory allocated tmc heap.\r
+  If the memory is in the range of tmc heap or tmc small heap, free per\r
+  request.\r
+  Otherwise, return the error message.\r
+\r
+DEPENDENCIES\r
+  None\r
+\r
+RETURN VALUE\r
+  None\r
+\r
+SIDE EFFECTS\r
+\r
+===========================================================================*/\r
+void tmc_free_debug(void *ptr, char *file_name, unsigned int line_number)\r
+{\r
+   if((ptr >= (void *) tmc_heap_small_mem_buffer) &&\r
+      (ptr <  (void *)(tmc_heap_small_mem_buffer + tmc_get_mem_heap_size(TMC_MEM_HEAP_TYPE_SMALL_BUF))))\r
+   { /*lint -e424 *//* inappropriate free for static data */\r
+#ifdef FEATURE_MEM_DEBUG\r
+      mem_free_debug(&tmc_heap_small, ptr, file_name, line_number);\r
+#else\r
+      mem_free( &tmc_heap_small, ptr );\r
+#endif\r
+   }\r
+   else if((ptr >= (void *) tmc_heap_mem_buffer) &&\r
+      (ptr <  (void *)(tmc_heap_mem_buffer + tmc_get_mem_heap_size(TMC_MEM_HEAP_TYPE_BUF))))\r
+   { /*lint -e424 *//* inappropriate free for static data */\r
+#ifdef FEATURE_MEM_DEBUG\r
+      mem_free_debug(&tmc_heap, ptr, file_name, line_number);\r
+#else\r
+      mem_free( &tmc_heap, ptr );\r
+#endif\r
+   }\r
+   else\r
+   {\r
+      TMC_ERR_FATAL("Mem Free error : Invalid Heap enountered",0,0,0);\r
+   }\r
+}\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_realloc\r
+\r
+DESCRIPTION\r
+  This function allocate the memmory from tmc heap.\r
+  If the memory is in the range of tmc heap or tmc small heap, reallocate the\r
+  memory per request.\r
+  Otherwise, return the error message.\r
+\r
+DEPENDENCIES\r
+  None\r
+\r
+RETURN VALUE\r
+  the pointer to the tmc heap.\r
+\r
+SIDE EFFECTS\r
+\r
+===========================================================================*/\r
+void *tmc_realloc_debug(void *ptr, size_t size, char *file_name, unsigned int line_number)\r
+{\r
+   if((ptr >= (void *) tmc_heap_small_mem_buffer) &&\r
+      (ptr <  (void *)(tmc_heap_small_mem_buffer + tmc_get_mem_heap_size(TMC_MEM_HEAP_TYPE_SMALL_BUF))))\r
+   {\r
+#ifdef FEATURE_MEM_DEBUG\r
+      return(mem_realloc_debug(&tmc_heap_small, ptr, size, file_name, line_number));\r
+#else\r
+      return (mem_realloc(&tmc_heap_small, ptr, size));\r
+#endif\r
+   }\r
+   else if((ptr >= (void *) tmc_heap_mem_buffer) &&\r
+      (ptr <  (void *)(tmc_heap_mem_buffer + tmc_get_mem_heap_size(TMC_MEM_HEAP_TYPE_BUF))))\r
+   {\r
+#ifdef FEATURE_MEM_DEBUG\r
+      return(mem_realloc_debug(&tmc_heap, ptr, size, file_name, line_number));\r
+#else\r
+      return (mem_realloc(&tmc_heap, ptr, size));\r
+#endif\r
+   }\r
+\r
+   TMC_ERR_FATAL("Memory Reallocate Error: Invalid Heap enountered",0,0,0);\r
+\r
+       /*lint +e527 */ return (NULL);\r
+}\r
+\r
+/*===========================================================================\r
+\r
+FUNCTION tmc_task\r
+\r
+DESCRIPTION\r
+  This function is entrance of the Task Main Controller. It is responsible\r
+  for none protocol specific power up initialization and task related\r
+  operation, such as define, start, offline, power down, stop, and LPM.\r
+\r
+DEPENDENCIES\r
+  None\r
+\r
+RETURN VALUE\r
+  None.\r
+\r
+SIDE EFFECTS\r
+  Reset and powerdown processing are special in that they cause the\r
+  complete DMSS software to either restart or to be shutdown.\r
+\r
+===========================================================================*/\r
+void tmc_task(dword ignored)\r
+{\r
+#ifdef DOG_DYNAMIC_API\r
+       tmc_dog_rpt_var = dog_register(TASK_HANDLE(tmc), DOG_DEFAULT_TIMEOUT, DOG_DEADLKCHK_DISABLE);\r
+       tmc_dog_rpt_time_var = dog_get_report_period(tmc_dog_rpt_var);\r
+#endif\r
+\r
+       tmc_init(); /* TMC timer, queue init: define and start all other tasks */\r
+\r
+       (void) rex_set_sigs(rex_self(), TMC_RPT_TIMER_SIG);     /* Set the watchdog report timer signal */\r
+\r
+   for(;;)\r
+   {\r
+               rex_sigs_type received_sigs = rex_wait(TMC_CMD_Q_SIG | TMC_RPT_TIMER_SIG); /* Perform the rex wait. */\r
+\r
+               if (received_sigs & TMC_RPT_TIMER_SIG)          /* Process report timer signal. */\r
+      {\r
+         tmc_dog_report();\r
+      }\r
+\r
+               if (received_sigs & TMC_CMD_Q_SIG)              /* Process command signal and update state of TMC task. */\r
+      {\r
+         (void) rex_clr_sigs( rex_self(), TMC_CMD_Q_SIG );\r
+\r
+         tmc_dispatch_commands();\r
+      }\r
+\r
+   } /* for (;;) */\r
+\r
+       /*lint -esym(715, ignored) */ ignored = ignored;\r
+\r
+} /* tmc_task */\r