[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/l1/cl1/common/sysfrc.h b/mcu/interface/l1/cl1/common/sysfrc.h
new file mode 100644
index 0000000..13fbd2c
--- /dev/null
+++ b/mcu/interface/l1/cl1/common/sysfrc.h
@@ -0,0 +1,127 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+
+
+#ifndef _SYSFRC_H_
+#define _SYSFRC_H_
+/*****************************************************************************
+* 
+* FILE NAME   : sysfrc.h
+*
+* DESCRIPTION : Defines local interface for FRC. 
+*
+* HISTORY     :
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "systyp.h"
+#include "valapi.h"
+
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+
+/* Val * 9.8304 * (1 + AfcPpb/1000000000) */
+#define SYS_CONVERT_FRC_TO_9M(Val, AfcPpb) ((((kal_int64)(Val)) * 6144 + ((((kal_int64)(Val)) * (AfcPpb) * 3) >> 19)) / 625) 
+
+/* Val / (1 + AfcPpb/1000000000) / 9.8304 = Val * (1 - AfcPpb/1000000000) / 9.8304 */
+#define SYS_CONVERT_9M_TO_FRC(Val, AfcPpb) ((kal_uint32)((((kal_int64)(Val)) * 625 - ((((kal_int64)(Val)) * (AfcPpb) * 625) >> 30)) / 6144))
+
+#define MAX_FRC_CNT               (0x100000000UL)
+#define C2K_FRC_WRAP              (0xFFFFFFFF)
+#define FRC_FREQ                  (1000000L) /* 1 MHz */
+
+#if defined(__FPGA__) && defined(__MTK_TARGET__)
+/* In FPGA vefication platform, Rx Timer clock frequency has downscale 100\50,
+   but FRC clock remains 1MHz. Therefore, need to correct FRC value by /(100 or 50) */
+#if defined(__MD93__)||defined(__MD95__)
+#define FRC_DOWNSCALE_FACTOR      (100)
+#endif
+#if defined(__MD97__) || defined(__MD97P__)
+#define FRC_DOWNSCALE_FACTOR      (160)
+#endif
+#else
+#define FRC_DOWNSCALE_FACTOR      (1)
+#endif
+
+/* Diff of two comapred FRC number cannot be bigger than 2^31: 2147.5s */
+#define MAX_FRC_DIFF              (0x80000000)
+
+/** To check earlrFRC is earlier than lateFRC */
+#define FRC_COMPARE(early, late)                           \
+   (((early < late) && ((late - early) < MAX_FRC_DIFF)) || \
+    ((early > late) && ((early - late) > MAX_FRC_DIFF)))
+
+
+/*----------------------------------------------------------------------------
+ Global Typedefs
+----------------------------------------------------------------------------*/
+
+
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+extern void       SysFrcStartTimeSync(SysAirInterfaceT Interface);
+extern void       SysFrcStopTimeSync(SysAirInterfaceT Interface);
+extern void       SysFrcReset(SysAirInterfaceT Interface);
+extern void       SysFrcSetSnapshot(SysAirInterfaceT Interface, SysSFrameTimeT *SysTime, kal_uint32 Frc);
+extern kal_bool   SysFrcConvertToSt(SysAirInterfaceT Interface, kal_uint32 Frc, SysSFrameTimeT *SysTime);
+extern void       SysFrcConvertToStForce(SysAirInterfaceT Interface, kal_uint32 Frc, SysSFrameTimeT *SysTime,kal_bool NeedTrace);
+extern kal_bool   SysStConvertToFrc(SysAirInterfaceT Interface, SysSFrameTimeT *SysTime, kal_uint32 *Frc);
+extern kal_bool   SysFrcSyncIsValid(SysAirInterfaceT Interface);
+extern kal_bool   SysFrcGetNextFrameBoundary(SysAirInterfaceT Interface, kal_bool Check20msBoundary, kal_uint32 CheckTime, kal_uint32 *FrcFrameBoundary, kal_bool UseFrameOffset);
+extern kal_uint32 SysFrcCntGet(void);
+extern kal_uint32 SysFrcCntGetNoDS(void);
+extern kal_uint8  SysFrcHighCntGet(void);
+extern kal_bool   SysFrcReadSnapshotImm(SysAirInterfaceT Interface, SysSFrameTimeT* SFrameTime, kal_uint32* Frc);
+extern void       SysFrcReptSyncInfo(SysAirInterfaceT Interface);
+extern void       SysFrcReadSnapshotImmDvt(SysAirInterfaceT Interface, SysSFrameTimeT* SFrameTime, kal_uint32* Frc);
+
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif