[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/driver/peripheral/inc/dcl_gpt_hw.h b/mcu/driver/peripheral/inc/dcl_gpt_hw.h
new file mode 100644
index 0000000..c346648
--- /dev/null
+++ b/mcu/driver/peripheral/inc/dcl_gpt_hw.h
@@ -0,0 +1,493 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   dcl_gpt.h
+ *
+ * Project:
+ * --------
+ *   Maui
+ *
+ * Description:
+ * ------------
+ *   Header file of DCL (Driver Common Layer) for GPT.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/*******************************************************************************
+ * DCL_CTRL_CMD
+ *******************************************************************************/
+#ifndef DCL_GPT_HW_H_
+#define DCL_GPT_HW_H_
+#include "kal_general_types.h"
+#include "drv_comm.h"
+#include "dcl.h"
+
+typedef DCL_UINT16 GPT_DEV;
+typedef enum
+{
+	GPT1 = 1,
+	GPT2 = 2,
+	GPT3 = 3,
+	GPT4 = 4
+} GPT_DEV_T;
+
+typedef enum 
+{
+	clk_16k,
+	clk_8k,
+	clk_4k,
+	clk_2k,
+	clk_1k,
+	clk_500,
+	clk_250,
+	clk_125,
+	clk_invalid=0xFF
+}gpt_clock;
+
+typedef DCL_UINT32  HGPT_CMD;
+typedef enum
+{
+
+   HGPT_CMD_CLK, 
+   HGPT_CMD_RESET, 
+   HGPT_CMD_START, 
+   HGPT_CMD_STOP, 
+   HGPT_CMD_BUSYWAIT,
+//   HGPT_CMD_GPT_STATUS,
+   FHGPT_CMD_START, 
+   FHGPT_CMD_STOP, 
+   FHGPT_CMD_RETURN_COUNT,
+   FHGPT_CMD_LOCK
+} HGPT_CMD_T;
+
+/* For HGPT_CMD_CLK command. */
+typedef enum 
+{
+	CLK_16K,
+	CLK_8K,
+	CLK_4K,
+	CLK_2K,
+	CLK_1K,
+	CLK_500,
+	CLK_250,
+	CLK_125
+} HGPT_CLK_T;
+
+typedef struct
+{
+   DCL_UINT32   u4Clock; // for HGPT_CLK_T enum
+} HGPT_CTRL_CLK_T;
+
+/* For HGPT_CMD_RESET command. */
+typedef struct
+{
+   DCL_UINT16   u2CountValue;
+   DCL_BOOL     fgAutoReload;
+} HGPT_CTRL_RESET_T;
+
+/* For HGPT_CMD_RESET command. */
+typedef DCL_UINT16 FGPT_CTRL_RETURN_COUNT_T;
+typedef DCL_UINT32 FGPT_CTRL_RETURN_COUNT_T_32bit;
+typedef DCL_UINT16 BUSY_WAIT_COUNT_T;
+typedef DCL_BOOL	 FGPT_CTRL_LOCK_T;
+//typedef DCL_UINT8  GPT_STATUS_T;
+typedef  union
+{
+   HGPT_CTRL_CLK_T                rHGPTClk; 
+   HGPT_CTRL_RESET_T              rHGPTReset; 
+   FGPT_CTRL_RETURN_COUNT_T       u2RetCount;
+   FGPT_CTRL_RETURN_COUNT_T_32bit u2RetCount_32bit;
+   BUSY_WAIT_COUNT_T			 			  uBusyWaitCount;
+   FGPT_CTRL_LOCK_T							  ulock;
+//   GPT_STATUS_T					 gpt_status;
+} HGPT_CTRL;
+
+//void GPTI_BusyWait(kal_uint16 len);//modified by dongming for build error about GPTI_BuisyWait follow non_static declaration
+/* DCL for HW GPT */
+/*************************************************************************
+* FUNCTION
+*  DclHGPT_Initialize
+*
+* DESCRIPTION
+*  This function is to initialize HW GPT module.
+*
+* PARAMETERS
+*	None
+*
+* RETURNS
+*	DCL_STATUS_OK
+*
+*************************************************************************/
+extern DCL_STATUS DclHGPT_Initialize(void);
+
+/*************************************************************************
+* FUNCTION
+*  DclHGPT_Open
+*
+* DESCRIPTION
+*  This function is to open a HW GPT module. Note that HW GPT only supports
+* single open for each valid eDev and if DCL_GPT1 is chosen SGPT may be 
+* influenced and work abnormally.
+*
+* PARAMETERS
+*	eDev - only valid for DCL_GPT1 and DCL_GPT2
+*	flags - no sepcial flags is needed. Please use FLAGS_NONE
+*
+* RETURNS
+*	DCL_HANDLE_INVALID - Open failed.
+*  other value - a valid handle
+*
+*************************************************************************/
+extern DCL_HANDLE DclHGPT_Open(DCL_DEV dev, DCL_FLAGS flags);
+
+/*************************************************************************
+* FUNCTION
+*  DclHGPT_ReadData
+*
+* DESCRIPTION
+*  This function is not supported for the HW GPT module now.
+*
+* PARAMETERS
+*	N/A
+*
+* RETURNS
+*	STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclHGPT_ReadData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN *buf_len, DCL_OPTIONS options);
+
+/*************************************************************************
+* FUNCTION
+*  DclHGPT_WriteData
+*
+* DESCRIPTION
+*  This function is not supported for the HW GPT module now.
+*
+* PARAMETERS
+*	N/A
+*
+* RETURNS
+*	STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclHGPT_WriteData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN *buf_len, DCL_OPTIONS options);
+
+/*************************************************************************
+* FUNCTION
+*  DclHGPT_Configure
+*
+* DESCRIPTION
+*  This function is not supported for the HW GPT module now.
+*
+* PARAMETERS
+*	N/A
+*
+* RETURNS
+*	STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclHGPT_Configure(DCL_HANDLE handle, DCL_CONFIGURE_T *configure);
+
+/*************************************************************************
+* FUNCTION
+*  DclHGPT_RegisterCallback
+*
+* DESCRIPTION
+*  This function is to set callback function for the HW GPT module.
+*
+* PARAMETERS
+*	handle  - hanlde previous got from DclHGPT_Open().
+*  event   - only support EVENT_HGPT_TIMEOUT event.
+*  callback - the callback function when HW GPT is timeout.
+*
+* RETURNS
+*	STATUS_OK - successfully register the callback function.
+*  STATUS_INVALID_HANDLE - It's a invalid handle.
+*  STATUS_NOT_OPENED - The module has not been opened.
+*  STATUS_INVALID_EVENT - The event parameter is invalid.
+*
+*************************************************************************/
+extern DCL_STATUS DclHGPT_RegisterCallback(DCL_HANDLE handle, DCL_EVENT event, PFN_DCL_CALLBACK callback);
+
+/*************************************************************************
+* FUNCTION
+*  DclHGPT_Control
+*
+* DESCRIPTION
+*  This function is to send command to control the HW GPT module.
+*
+* PARAMETERS
+*	handle - a valid handle return by DclHGPT_Open()
+*  cmd   - a control command for HW GPT module
+*          1. HGPT_CMD_CLK: to set clock for a HW GPT timer
+*          2. HGPT_CMD_RESET: to reset a HWGPT timer
+*          3. HGPT_CMD_START: to start a HW GPT timer
+*          4. HGPT_CMD_STOP: to stop a HWGPT timer
+*  data - for 1. HGPT_CMD_CLK: pointer to a HGPT_CTRL_CLK_T structure
+*             2. HGPT_CMD_RESET: pointer to a HGPT_CTRL_RESET_T structure
+*             3. HGPT_CMD_START: a NULL pointer
+*             4. HGPT_CMD_STOP: a NULL pointer
+*
+* RETURNS
+*	STATUS_OK - command is executed successfully.
+*	STATUS_FAIL - command is failed.
+*  STATUS_INVALID_CMD - The command is invalid.
+*  STATUS_INVALID_HANDLE - The handle is invalid.
+*  STATUS_INVALID_CTRL_DATA - The ctrl data is not valid.
+*
+*************************************************************************/
+extern DCL_STATUS DclHGPT_Control(DCL_HANDLE handle, HGPT_CMD cmd, HGPT_CTRL *data);
+
+/*************************************************************************
+* FUNCTION
+*  DclHGPT_Close
+*
+* DESCRIPTION
+*  This function is to close a HW GPT module by a handle previous opened. 
+*
+* PARAMETERS
+*	handle  - hanlde previous got from DclHGPT_Open().
+*
+* RETURNS
+*	STATUS_OK - successful.
+*	DCL_HANDLE_INVALID - it's a invalid handle.
+*
+*************************************************************************/
+extern DCL_STATUS DclHGPT_Close(DCL_HANDLE handle);
+
+/* DCL for Free Run HW GPT */
+/*************************************************************************
+* FUNCTION
+*  DclFHGPT_Initialize
+*
+* DESCRIPTION
+*  This function is to initialize the free run GPT module.
+*
+* PARAMETERS
+*	None
+*
+* RETURNS
+*	DCL_STATUS_OK
+*
+*************************************************************************/
+extern DCL_STATUS DclFHGPT_Initialize(void);
+
+/*************************************************************************
+* FUNCTION
+*  DclFHGPT_Open
+*
+* DESCRIPTION
+*  This function is to open a free run GPT module if it exists. Note 
+* that it supports multiple opens and no need to close it.
+*
+* PARAMETERS
+*	eDev - only valid for DCL_GPT3
+*	flags - no sepcial flags is needed. Please use FLAGS_NONE
+*
+* RETURNS
+*	DCL_HANDLE_INVALID - Open failed. It means no free run GPT exists or 
+*                       open a wrong device.
+*  other value - a valid handle
+*
+*************************************************************************/
+extern DCL_HANDLE DclFHGPT_Open(DCL_DEV dev, DCL_FLAGS flags);
+
+/*************************************************************************
+* FUNCTION
+*  DclFHGPT_ReadData
+*
+* DESCRIPTION
+*  This function is not supported for the free run GPT module now.
+*
+* PARAMETERS
+*	N/A
+*
+* RETURNS
+*	STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclFHGPT_ReadData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN *buf_len, DCL_OPTIONS options);
+
+/*************************************************************************
+* FUNCTION
+*  DclFHGPT_WriteData
+*
+* DESCRIPTION
+*  This function is not supported for the free run GPT module now.
+*
+* PARAMETERS
+*	N/A
+*
+* RETURNS
+*	STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclFHGPT_WriteData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN *buf_len, DCL_OPTIONS options);
+
+/*************************************************************************
+* FUNCTION
+*  DclFHGPT_Configure
+*
+* DESCRIPTION
+*  This function is not supported for the free run GPT module now.
+*
+* PARAMETERS
+*	N/A
+*
+* RETURNS
+*	STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclFHGPT_Configure(DCL_HANDLE handle, DCL_CONFIGURE_T *configure);
+
+/*************************************************************************
+* FUNCTION
+*  DclFHGPT_RegisterCallback
+*
+* DESCRIPTION
+*  This function is not supported for the free run GPT module now.
+*
+* PARAMETERS
+*	N/A
+*
+* RETURNS
+*	STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclFHGPT_RegisterCallback(DCL_HANDLE handle, DCL_EVENT event, PFN_DCL_CALLBACK callback);
+
+/*************************************************************************
+* FUNCTION
+*  DclFHGPT_Control
+*
+* DESCRIPTION
+*  This function is to send command to control the free run GPT module.
+*
+* PARAMETERS
+*	handle - a valid handle return by DclFHGPT_Open()
+*  cmd   - a control command for free ryb GPT module
+*          FGPT_CMD_RETURN_COUNT: to get the timer count
+*  data - for FGPT_CMD_RETURN_COUNT: pointer to a FGPT_CTRL_RETURN_COUNT_T type
+*
+* RETURNS
+*	STATUS_OK - command is executed successfully.
+*	STATUS_FAIL - command is failed. No free run GPT is supported.
+*  STATUS_INVALID_CMD - The command is invalid.
+*  STATUS_INVALID_HANDLE - The handle is invalid.
+*
+*************************************************************************/
+extern DCL_STATUS DclFHGPT_Control(DCL_HANDLE handle, HGPT_CMD cmd, HGPT_CTRL *data);
+
+/*************************************************************************
+* FUNCTION
+*  DclFHGPT_Close
+*
+* DESCRIPTION
+*  This function is not supported for the free run GPT module now.
+*
+* PARAMETERS
+*	N/A
+*
+* RETURNS
+*	STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclFHGPT_Close(DCL_HANDLE handle);
+
+kal_bool GPT_IsStop(void);
+
+
+#if defined(__DRV_COMM_REG_DBG__) && defined(__DRV_GPT_REG_DBG__)
+#define DRV_GPT_WriteReg(addr,data)              DRV_DBG_WriteReg(addr,data)
+#define DRV_GPT_Reg(addr)                        DRV_DBG_Reg(addr)                      
+#define DRV_GPT_WriteReg32(addr,data)            DRV_DBG_WriteReg32(addr,data)          
+#define DRV_GPT_Reg32(addr)                      DRV_DBG_Reg32(addr)                    
+#define DRV_GPT_WriteReg8(addr,data)             DRV_DBG_WriteReg8(addr,data)           
+#define DRV_GPT_Reg8(addr)                       DRV_DBG_Reg8(addr)                     
+#define DRV_GPT_ClearBits(addr,data)             DRV_DBG_ClearBits(addr,data)           
+#define DRV_GPT_SetBits(addr,data)               DRV_DBG_SetBits(addr,data)             
+#define DRV_GPT_SetData(addr, bitmask, value)    DRV_DBG_SetData(addr, bitmask, value)  
+#define DRV_GPT_ClearBits32(addr,data)           DRV_DBG_ClearBits32(addr,data)         
+#define DRV_GPT_SetBits32(addr,data)             DRV_DBG_SetBits32(addr,data)           
+#define DRV_GPT_SetData32(addr, bitmask, value)  DRV_DBG_SetData32(addr, bitmask, value)
+#define DRV_GPT_ClearBits8(addr,data)            DRV_DBG_ClearBits8(addr,data)          
+#define DRV_GPT_SetBits8(addr,data)              DRV_DBG_SetBits8(addr,data)            
+#define DRV_GPT_SetData8(addr, bitmask, value)   DRV_DBG_SetData8(addr, bitmask, value) 
+#else
+#define DRV_GPT_WriteReg(addr,data)              DRV_WriteReg(addr,data)
+#define DRV_GPT_Reg(addr)                        DRV_Reg(addr)                      
+#define DRV_GPT_WriteReg32(addr,data)            DRV_WriteReg32(addr,data)          
+#define DRV_GPT_Reg32(addr)                      DRV_Reg32(addr)                    
+#define DRV_GPT_WriteReg8(addr,data)             DRV_WriteReg8(addr,data)           
+#define DRV_GPT_Reg8(addr)                       DRV_Reg8(addr)                     
+#define DRV_GPT_ClearBits(addr,data)             DRV_ClearBits(addr,data)           
+#define DRV_GPT_SetBits(addr,data)               DRV_SetBits(addr,data)             
+#define DRV_GPT_SetData(addr, bitmask, value)    DRV_SetData(addr, bitmask, value)  
+#define DRV_GPT_ClearBits32(addr,data)           DRV_ClearBits32(addr,data)         
+#define DRV_GPT_SetBits32(addr,data)             DRV_SetBits32(addr,data)           
+#define DRV_GPT_SetData32(addr, bitmask, value)  DRV_SetData32(addr, bitmask, value)
+#define DRV_GPT_ClearBits8(addr,data)            DRV_ClearBits8(addr,data)          
+#define DRV_GPT_SetBits8(addr,data)              DRV_SetBits8(addr,data)            
+#define DRV_GPT_SetData8(addr, bitmask, value)   DRV_SetData8(addr, bitmask, value) 
+#endif //#if defined(__DRV_COMM_REG_DBG__) && defined(__DRV_GPT_REG_DBG__)
+
+
+#endif