--- /dev/null
+/*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*\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