[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/l1/cl1/common/hscapi.h b/mcu/interface/l1/cl1/common/hscapi.h
new file mode 100644
index 0000000..c6cda78
--- /dev/null
+++ b/mcu/interface/l1/cl1/common/hscapi.h
@@ -0,0 +1,533 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef  _HSCAPI_H_
+#define  _HSCAPI_H_
+/*****************************************************************************
+* 
+* FILE NAME   :   hscapi.h
+*
+* DESCRIPTION :
+*
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "sysapi.h"
+#include "pswapi.h"
+
+
+/*----------------------------------------------------------------------------
+* Message IDs for signals and commands sent to HSC 
+*----------------------------------------------------------------------------*/
+#include "hscmsg.h"
+
+/*----------------------------------------------------------------------------
+* Definitions
+*----------------------------------------------------------------------------*/
+#define HSC_NUM_APPS   (SYS_MODE_EVDO+1)
+/* The maximum mini-acq error, in tc8, where the 32K calibration will be applied.
+   If the mini-acq error is greater than or equal to this threshold, 
+   the error will not be used for adjusting 32k clock calibration. */
+#define SP_MINI_ACQ_TC8_CAL_ADJUST_MAX (8*5)  /* Threshold for mini-acq error for SCI=0 */
+
+
+#define HSC_FM_FREQUENCY              208000000 /*208MHz*/
+#define HSC_FM_DURATION               1         /*1s*/
+#define HSC_32K_CNTS_PER_SEC          32768     /*HWD_CLK_FREQ_32KHZ  TBD*/
+
+#define CL1_IF_EVDO_RC_REQ_TXOFF_DELAY          (7)     /* 7ms, about 1.666*(3+1), for L3 use, 1 slot more than RC Tx off slot is for marge */
+#define CL1_IF_1XRTT_RC_REQ_TXOFF_DELAY         (5)     /* 5ms, about 1.250*(3+1), for L3 use, 1 slot more than RC Tx off slot is for marge */
+
+
+/* MPA Release reasons, to be shared with SYS */
+typedef enum
+{
+   HSC_SSM_MPA_REL_PREEMPT,
+   HSC_SSM_MPA_REL_SLEEP,
+   HSC_SSM_MPA_REL_RESET,
+   HSC_SSM_PREP_MAX
+} HscSsmMpaReasonT;
+
+/* 32k Clk Cal Settle Speeds */ 
+typedef enum
+{
+   SETTLE_NORMAL,
+   SETTLE_FAST,
+   SETTLE_MAX
+} HscClkCalSpeedT;
+   
+typedef enum
+{
+   CONFID_HIGH,
+   CONFID_MED,
+   CONFID_MIN,
+   CONFID_MAX
+} HscClkCalThreshT;
+
+typedef enum
+{
+    SIM2_GSM_SUSPEND,
+    SIM2_GSM_RESUME,
+    SIM1_1xRTT_SUSPEND,
+    SIM1_1xRTT_RESUME,
+    SIM1_1xRTT_CANCEL,
+    SIM1_LTE_RESUME
+} HscCssSupendResumeT;
+
+typedef enum
+{
+   UNKNOWN_STATE  = 0,
+   WAITING_STATE,
+   OFFERED_STATE,
+   INVALID_STATE
+} HscSib8TimingStateT;
+
+typedef enum
+{
+    HSC_CSS_RAT_FLIGHT,
+    HSC_CSS_RAT_STANDBY,
+    HSC_CSS_RAT_ACTIVE
+}HscCssRatTypeT;
+
+typedef enum
+{
+   FH,
+   PCG,
+   SLOT,
+   FH_INPCGSLOT,
+   FH_inPCGIRQ,
+   FH_inSLOTIRQ
+} TimeProfileModeT;
+
+typedef SysAirInterfaceT HscSysAirInterfaceT;
+
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+/* MSG_ID_HSC_CLK_CAL_START_MSG, HSC_ETS_CLK_CAL_START_MSG */
+typedef struct
+{
+   HscSysAirInterfaceT    Owner;   /* SYS_MODE_1xRTT or SYS_MODE_EVDO */
+} HscClkCalStartMsgT;
+
+
+/* HSC_IDP_SLEEP_CMD_MSG */
+typedef struct
+{
+   FrameRecT PchWakeSystemTimeFrame;
+   kal_uint8 SyncCapsuleOffset;
+} HscIdpSleepCmdMsgT;
+
+
+/* MSG_ID_HSC_IDP_ENABLE_DO_SLOTTED_MSG */
+typedef struct
+{
+   kal_uint16   PageSlot;           /* assigned slot to monitor         */
+   kal_uint16   SlotCycleIndex;     /* selected slot cycle index        */
+} HscIdpSPageParmsMsgT;
+
+
+/* MSG_ID_HSC_RMC_ACTIVATE_RSP_MSG */
+typedef struct
+{
+   kal_int16    PilotPN;
+   kal_int16    RxTxOffsetTc2;
+   kal_int16    MiniAcqErrTc2;
+   kal_uint16   PwrEst;
+} HscRmcMiniAcqErrMsgT;
+
+#ifdef MTK_DEV_C2K_IRAT
+/* HSC_CLC_SIB8_INFO_CFG_MSG */
+typedef struct
+{
+   kal_bool                           is_update;               /* 0 = Clear,  1 = Update*/
+   sys_time_info_c2k_struct       sib8_sys_time_info;    
+} HscClcSib8InfoCfgMsgT;
+
+/* HSC_SIB8_TIMING_SYNC_REQ */
+typedef struct
+{
+   SysAirInterfaceT Mode;               /* 0 = 1xRTT,  1 = EvDO*/
+} HscSib8TimingSyncReqMsgT;
+
+/* HSC_SIB8_TIMING_SYNC_CNF */
+typedef struct
+{
+   SysAirInterfaceT Mode;               /* 0 = 1xRTT,  1 = EvDO*/
+   kal_bool result;  /* Indicate the time sync info in this message is valid or invalid. */
+} HscSib8TimingSyncCnfMsgT;
+#endif
+
+/* MSG_ID_HSC_CLC_OOSA_SLEEP_CMD_MSG */
+typedef struct
+{
+   kal_uint32   SleepDuration;  /* Sleep duration in 1/10 seconds */
+} HscClcOosaSleepCmdMsgT;
+
+typedef struct
+{
+   HscSysAirInterfaceT Mode;               /* 0 = 1xRTT,  1 = EvDO*/
+   kal_bool            IsFlightMode;       /* TRUE - Fligh mode; FALSE - other mode */
+} HscInfiniteSleepReqMsgT;
+
+
+/* MSG_ID_HSC_CSS_SUSPEND_RESUME_CMD_MSG */
+typedef struct
+{
+   HscCssSupendResumeT    CssCmdType;   
+   HscCssRatTypeT         RatType;
+}  HscCssSuspendResumeCmdMsgT;
+
+/* LL1A_CLC_LTE_SCAN_C2K_ACTIVE_PARAMS_IND  */
+typedef struct
+{
+   kal_uint16    LTE_scan_active_duration_1xRTT;  /* unit in milisecond, value range [1..10000], 0xFFFF means invalid (feature off) */
+   kal_uint16    LTE_scan_active_duration_DO;     /* unit in milisecond, value range [1..1000], 0xFFFF means invalid (feature off) */
+} Ll1aClcLteScanC2kActiveParamsIndT;
+
+/* LL1A_IDP_SIGNAL_PROTECT_STATUS_IND */
+typedef struct
+{
+   kal_bool    bSignalProtectStatus;/* KAL_TRUE,means signal interation is started and need be protected; */
+                                /* KAL_FALSE,means signal interation is ended and protection can be canceled. */
+} Ll1aIdpSignalProtectStatusIndT;
+
+/* LL1A_PSW_SIGNAL_PROTECT_STATUS_IND */
+typedef struct
+{
+   kal_bool    bSignalProtectStatus;/* KAL_TRUE,means signal interation is started and need be protected; */
+                                /* KAL_FALSE,means signal interation is ended and protection can be canceled. */
+} Ll1aPswSignalProtectStatusIndT;
+
+/* HSC_ETS_CAL_SETTLE_TIME_SET_MSG */
+typedef struct
+{
+   kal_uint8    SettleTime[SETTLE_MAX][CONFID_MAX];
+   kal_uint16   FastSettlePeriodInSeconds;
+} HscClkCalParmsT;
+
+/* MSG_ID_HSC_ALTERNATE_AFC_MSG */
+typedef struct
+{
+   kal_uint8 Enable;       
+} HscAlternateAfcMsgT;
+
+/* HSC_IDP_WAKE_CMD_MSG */
+typedef struct
+{
+   kal_uint8 Req;
+} HscIdpWakeCmdMsgT;
+
+typedef struct
+{
+   TimeProfileModeT Mode;
+   kal_uint8        startidx;
+   kal_uint8        endidx;
+} HscTimeProfileMsgT;
+
+typedef struct
+{
+   kal_uint8 Owner;
+} HscSleepOverCompMsgT;
+
+/* MSG_ID_HSC_SET_SHDR_SVDO_OP_MODE_MSG */
+typedef struct
+{
+   kal_uint8 ShdrEnabled;
+   kal_uint8 SvdoEnabled;
+} HscSetShdrSvdoOpModeT;
+
+#if defined (MTK_DEV_C2K_IRAT) && defined (MTK_DEV_C2K_SRLTE_L1)
+
+typedef struct
+{
+   kal_bool    C2kInSim2; 
+} HscC2kSimIndexInfoMsgT;
+
+typedef struct
+{
+   kal_uint32  MmoGapStartTime;
+   kal_int32   GapLength;
+} HscC2kMmoGapPatternIndMsgT;
+
+/* HSC_1X_PRIORITY_BOOST_MSG
+ * This message is sent by PSW, to modify 1X priority for preemption */
+typedef struct 
+{
+    kal_bool   control;   /* True: raise priority, False: decrease priority */
+} Hsc1xPriorityBoostMsgT;
+
+typedef struct 
+{
+    kal_bool   control;   /* True: raise priority, False: decrease priority */
+} HscDoPriorityBoostMsgT;
+
+#endif
+
+
+typedef struct
+{
+   SysAirInterfaceT Mode;               /* 0 = 1xRTT,  1 = EvDO*/
+} HscFrcSyncInfoReptMsgT;
+
+/* MSG_ID_HSC_CSS_PSEUDO_SET_RAT_IND */
+typedef struct
+{ 
+   HscCssRatTypeT         RatType;
+   kal_bool               IsC2kOnSim2;
+}  HscCssPseudoSetRatIndT;
+
+
+/*----------------------------------------------------------------------------
+* Hsc global
+*----------------------------------------------------------------------------*/
+extern kal_bool   HscClkCalFastSettleEnabled;
+/*----------------------------------------------------------------------------
+* Hsc global APIs
+*----------------------------------------------------------------------------*/
+/*****************************************************************************
+ 
+  FUNCTION NAME:   HscSsmFrameCntEst
+
+  DESCRIPTION:     Estimates frame count during slotted paging 
+
+  PARAMETERS:      
+
+  RETURNED VALUES: FrameRecT
+
+*****************************************************************************/
+extern FrameRecT HscSsmFrameCntEst(HscSysAirInterfaceT Owner);
+
+
+/*****************************************************************************
+ 
+  FUNCTION NAME:   HscSysDoPchBackoffTotalFrames
+
+  DESCRIPTION:     
+
+  PARAMETERS:      
+
+  RETURNED VALUES: Returns Total Backoff Time in DO Frames
+                   (including RF backoff, Calibration, and MiniAcqErr Adjust)
+
+*****************************************************************************/
+extern kal_uint8 HscSysDoPchBackoffTotalFrames(HscSysAirInterfaceT Owner, kal_int32 backoff);
+
+
+/*****************************************************************************
+ 
+  FUNCTION NAME:   HscClkCalSettleTimeGet
+
+  DESCRIPTION:     Returns the 32KHz calibration settling time
+
+  PARAMETERS:      SettleSpeed   = SETTLE_NORMAL or SETTLE_FAST;
+                   ThresholdZone = CONFID_HIGH, CONFID_MED, or CONFID_MIN; 
+
+  RETURNED VALUES: 32KHz Calibration settling time
+
+*****************************************************************************/
+extern kal_uint8   HscClkCalSettleTimeGet(kal_uint8 SettleSpeed, kal_uint8 ThresholdZone);
+
+/*****************************************************************************
+
+   FUNCTION NAME:  HscClkCalFastSettle
+
+   DESCRIPTION:    Send HSC Transmitter State for 32k clock calibration
+
+   PARAMETERS:     None
+
+   RETURNS:        None
+
+*****************************************************************************/
+extern void  HscClkCalFastSettle(kal_bool TxOn);
+
+/*****************************************************************************
+
+   FUNCTION NAME:  HscSetAfcStatus
+
+   DESCRIPTION:    Validates Afc for the given interface.
+
+   PARAMETERS:     HscSysAirInterfaceT Interface
+                   SysCdmaBandT Band
+                   kal_bool Valid
+
+   RETURNS:        None
+
+*****************************************************************************/
+extern void HscSetAfcStatus(SysAirInterfaceT Interface, SysCdmaBandT Band, kal_bool Valid);
+
+/*****************************************************************************
+ 
+  FUNCTION NAME:   HscSsmSpecial1xPreemption
+
+  DESCRIPTION:     Enables 1x PS to force high priorty for 1X antenna request
+
+  PARAMETERS:      KAL_TRUE/KAL_FALSE  
+
+  RETURNED VALUES: None
+
+*****************************************************************************/
+extern void  HscSsmSpecial1xPreemption(kal_bool Control);
+
+/*****************************************************************************
+ 
+  FUNCTION NAME:   HscSsmSpecialDoProtectPreemption
+
+  DESCRIPTION:     Used to raise Do's priority and protect DO from being HSC preempt by 1xRTT
+
+  PARAMETERS:      Control - Enable Do special protect from HSC preemption or not
+
+  RETURNED VALUES: None
+
+*****************************************************************************/
+extern void   HscSsmSpecialDoProtectPreemption(kal_bool Control);
+
+/*****************************************************************************
+ 
+  FUNCTION NAME:   HscSsmDoRxAgcSettleLong
+
+  DESCRIPTION:      
+
+  PARAMETERS:      
+
+  RETURNED VALUES: 1/KAL_TRUE : Long  RxAgc Fast Settle Time
+                 : 0/KAL_FALSE: Short RxAgc Fast Settle Time
+
+*****************************************************************************/
+extern kal_bool HscSsmDoRxAgcSettleLong(void);
+
+/*****************************************************************************
+ 
+  FUNCTION NAME:   HscShdrEnabled
+
+  DESCRIPTION:      
+
+  PARAMETERS:      
+
+  RETURNED VALUES: 1/KAL_TRUE : SHDR is enabled
+                 : 0/KAL_FALSE: SHDR is not enabled
+
+*****************************************************************************/
+extern kal_bool HscShdrEnabled(void);
+
+
+/*****************************************************************************
+ 
+  FUNCTION NAME:   HscCurrentWakeupInShdr
+
+  DESCRIPTION:     Returns the current (dynamic) state
+
+  PARAMETERS:      None
+
+  RETURNED VALUES: 1/KAL_TRUE : SHDR is enabled
+                 : 0/KAL_FALSE: SHDR is not enabled
+
+*****************************************************************************/
+extern kal_uint8     HscL1dSPageWakeStatus(void);
+extern void          HscSpDisable(HscSysAirInterfaceT Owner);
+extern kal_uint16    HscSpHistory(HscSysAirInterfaceT Owner);
+extern kal_uint16    HscL1dSPageGetNumOfFrames4Wakeup(void);
+extern kal_bool      HscSsmDoInSuspendQueue(void);
+#ifdef MTK_CBP
+extern void          HscSsmRmcAntennaRelease(kal_uint8 RfPaths, kal_bool releaseFlag);
+extern void          HscSsmResyncCancel(HscSysAirInterfaceT Owner);
+extern kal_bool      HscSsmInWakeQueue(HscSysAirInterfaceT Owner);
+extern void          HscSsmReset(HscSysAirInterfaceT Owner);
+extern kal_uint8     HscSpEnabled(HscSysAirInterfaceT Owner);
+#endif
+
+#if defined (MTK_DEV_C2K_IRAT) && defined (MTK_DEV_C2K_SRLTE_L1)
+extern kal_bool      HscSsmIs1xAvailableforAutoGap( void );
+extern kal_bool      HscSsmCloseToResync(void);
+extern kal_bool      HscSsmResyncTimeQuery(HscSysAirInterfaceT Owner, kal_uint32 *Frc);
+extern kal_bool      HscSsmResyncShdrGet(HscSysAirInterfaceT Owner);
+extern void          HscSsmEvstandbyTimeCopyProhibit(kal_bool Prohibit);
+extern void          HscOosaStateUpdateEvStandby();
+extern void          HscOosaStateUpdate();
+extern void          HscOosaSendWakeInd();
+extern void          HscLl1aGapOfferReq(kal_bool Enable);
+extern kal_bool      HscSsmDoPchPrioBoostTrigQuery(void);
+#endif
+
+
+extern void          HscSsmResumeWakeCmdMsg(void);
+extern kal_bool      MpaCheckSecondPathSupport(void);
+
+#ifdef SYS_OPTION_TX_TAS_ENABLE
+/* used for TAS only */
+extern kal_bool      HscSsmCheckDoPreemptForTas(void);
+extern kal_bool      HscSsmCheckShdrModeForTas(void);
+#endif
+
+/*****************************************************************************
+ * removed!
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+/**Log information: \main\Trophy\Trophy_ylxiao_href22033\1 2013-03-18 14:15:26 GMT ylxiao
+** HREF#22033, merge 4.6.0**/
+/**Log information: \main\Trophy\1 2013-03-19 05:19:47 GMT hzhang
+** HREF#22033 to merge 0.4.6 code from SD.**/
+/**Log information: \main\Trophy\Trophy_jluo_href22084\1 2013-04-03 04:13:29 GMT jluo
+** HREF#22084:HANDROID#1723**/
+/**Log information: \main\Trophy\2 2013-04-03 06:37:55 GMT czhang
+** HREF#22084**/
+/**Log information: \main\Trophy\Trophy_yanliu_handroid2028\1 2013-08-30 07:03:10 GMT yanliu
+** HANDROID#2028: check in SD's MT slotted optimization**/
+/**Log information: \main\Trophy\3 2013-08-30 07:05:25 GMT yanliu
+** HANDROID#2028 merged: check in SD's MT slotted optimization**/
+/**Log information: \main\Trophy\Trophy_xding_href22331\1 2013-12-10 07:17:45 GMT xding
+** HREF#22331, ºÏ²¢MMCÏà¹Ø¹¦Äܵ½Trophy baselineÉÏ**/
+/**Log information: \main\Trophy\4 2013-12-10 08:33:12 GMT jzwang
+** href#22331:Merge MMC latest implementation from Qilian branch.**/
+