[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/driver/devdrv/us_counter/src/uscounter.c b/mcu/driver/devdrv/us_counter/src/uscounter.c
new file mode 100644
index 0000000..3fd8f4e
--- /dev/null
+++ b/mcu/driver/devdrv/us_counter/src/uscounter.c
@@ -0,0 +1,246 @@
+/*****************************************************************************
+* 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) 2001
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ * uscounter.c
+ *
+ * Project:
+ * --------
+ * UMOLYA
+ *
+ * Description:
+ * ------------
+ * This function implements uscounter.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ * HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/*******************************************************************************
+ * Include header files
+ *******************************************************************************/
+
+#include "kal_public_api.h"
+#include "mips_ia_utils.h" /* need update makefle to include this header */
+#include "reg_base.h"
+#include "us_timer.h"
+#include "md2g_drv.h"
+//#include "kal_general_types.h"
+#include "sleepdrv_interface.h"
+#include "intrCtrl.h" /* for SaveAndSetIRQMask */
+#include "kal_iram_section_defs.h" /* for section declaration */
+#include "init_comm.h"
+
+#if defined(__HW_US_TIMER_SUPPORT__)
+
+/*************************************************************************
+* FUNCTION
+* USC_Start
+*
+* DESCRIPTION
+* This function starts the uscounter.
+*
+* PARAMETERS
+* none
+*
+* RETURNS
+* none
+*
+*************************************************************************/
+void USC_Start()
+{
+
+#ifdef ESIM_BUILD_CONFIG
+ HW_WRITE(USCNT_CON, 1);
+#else /* ESIM_BUILD_CONFIG */
+ /* In real target, FRC is inited in "ENABLE_FRC" of bootarm_gcc.S, we don't re-init again here.
+ "ENABLE_FRC" is an assembly macro in MD_TOPSM_private.h */
+ //MD_TOPSM_EnableFRC();
+#endif
+
+}
+
+/*************************************************************************
+* FUNCTION
+* USC_Stop
+*
+* DESCRIPTION
+* This function stops the uscounter.
+*
+* PARAMETERS
+* none
+*
+* RETURNS
+* none
+*
+*************************************************************************/
+void USC_Stop()
+{
+#ifdef ESIM_BUILD_CONFIG
+ HW_WRITE(USCNT_CON, 1);
+#else
+ kal_uint32 SHOULD_NOT_STOP_US_COUNTER = 0;
+ ASSERT(SHOULD_NOT_STOP_US_COUNTER);
+
+#endif
+}
+
+/*************************************************************************
+* FUNCTION
+* USC_Get_TimeStamp
+*
+* DESCRIPTION
+* This function calculate the frame number.
+*
+* PARAMETERS
+* none
+*
+* RETURNS
+* Frame number since system power up
+*
+*************************************************************************/
+kal_uint32 USC_Get_TimeStamp(void)
+{
+ /* Get OS timer(unit: 1ms) from FMA or OSTD source */
+ return ust_get_os_timer();
+}
+
+#if defined(MT6297) || defined(MT6885) || defined(MT6873) || defined(MT6853) || defined(CHIP10992)/* APOLLO or PETRUS or MARGAUX or MOUTON or COLGIN */
+void ust_us_busyloop(kal_uint32 us)
+{
+ kal_uint32 t1, t2, t3, zerocount = 0xFFFFF;
+
+ if ((us) == 0) {return;}
+
+ t1 = ust_get_current_time_source();
+
+ do{
+ do {
+ t2 = ust_get_current_time();
+ if (t1 == t2) { zerocount--; }
+ else if (ust_us_duration(t1, t2) >= (us)) { break; }
+ else
+ {
+ #if defined(__MD93__)||defined(__MD95__)||defined(MT6297_IA)
+ /* IA keep old design. */
+ #else
+ miu_relinquish();/*Release Pipeline*/
+ #endif
+ }
+ } while (zerocount);
+
+ if(0==zerocount)
+ {
+ kal_uint32 FRC_IS_NOT_INIT = 0;
+ ASSERT(FRC_IS_NOT_INIT);
+ }
+
+ t3 = ust_get_current_time_source();
+ }while (ust_us_duration(t1, t3) < (us));
+
+}
+#else /* PALMER and later */
+void ust_us_busyloop(kal_uint32 us)
+{
+ kal_uint32 t1, t2, zerocount = 0xFFFFF;
+
+ if ((us) == 0) {return;}
+
+ t1 = ust_get_current_time();
+
+ do {
+ t2 = ust_get_current_time();
+ if (t1 == t2) { zerocount--; }
+ else if (ust_us_duration(t1, t2) >= (us)) { break; }
+ else
+ {
+ #if defined(__MD93__)||defined(__MD95__)||defined(MT6297_IA)
+ /* IA keep old design. */
+ #else
+ miu_relinquish();/*Release Pipeline*/
+ #endif
+ }
+ } while (zerocount);
+
+ if(0==zerocount)
+ {
+ kal_uint32 FRC_IS_NOT_INIT = 0;
+ ASSERT(FRC_IS_NOT_INIT);
+ }
+}
+#endif
+
+#endif //__HW_US_TIMER_SUPPORT__
+