[Feature][Modem]Update MTK MODEM V1.6 baseline version: MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6
MTK modem version: MT2735_IVT_MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6.tar.gz
RF modem version: NA
Change-Id: I45a4c2752fa9d1a618beacd5d40737fb39ab64fb
diff --git a/mcu/interface/driver/peripheral/dcl_gpt.h b/mcu/interface/driver/peripheral/dcl_gpt.h
new file mode 100644
index 0000000..2747c4b
--- /dev/null
+++ b/mcu/interface/driver/peripheral/dcl_gpt.h
@@ -0,0 +1,596 @@
+/*****************************************************************************
+* 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:
+ * --------
+ * TATAKA
+ *
+ * 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!
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifdef DCL_DEFINITION_STRUCT
+#ifndef __DCL_GPT_H_STRUCT__
+#define __DCL_GPT_H_STRUCT__
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+// GPT Interrupt Interval. [write to hardware register.]
+// put this macro in here, becasue it will be used in alerter.c
+#define gptimer_interval 10
+/*******************************************************************************
+ * DCL_OPTIONS for GPT
+ *******************************************************************************/
+#define GPT_OPTIONS
+
+/*******************************************************************************
+ * DCL_CONFIGURE_T for GPT
+ *******************************************************************************/
+
+
+/*******************************************************************************
+ * DCL_EVENT
+ *******************************************************************************/
+#define GPT_EVENTS \
+ EVENT_HGPT_TIMEOUT = 0x1,
+
+/*******************************************************************************
+ * DCL_CTRL_CMD
+ *******************************************************************************/
+ #ifdef __BUILD_DOM__
+/*
+* The GPIO Command values in DCL_CTRL_CMD_T Enum of dcl.h
+* DCL_CTRL_DATA_T Define the Control data structure for each module's command
+*/
+typedef enum
+{
+ SGPT_CMD_START, //GPT Start command. <DCL_GPT_CB>
+ SGPT_CMD_STOP, //GPT Stop command. <DCL_GPT_CB>
+ SGPT_CMD_GET_REMAINING_TICK, //LITE GPT Used Command
+ SGPT_CMD_BUSYWAIT, //GPT Busywait command, that's only support to DCL_GPT_BusyWait.
+ SGPT_CMD_RUNNING_TICK, // C2K to Get running tick number
+ SGPT_CMD_MODIFY_CNT, //C2K to modify auto repeat GPT duration
+
+ SGPT2_CMD_START, //for gpt2 start command.
+ SGPT2_CMD_STOP,
+ SGPT2_CMD_SET_COUNTVALUE,
+ SGPT2_CMD_REGISTERCALLBACK,
+ SGPT2_CMD_SET_CLK,
+
+ FGPT_CMD_START, //Free run GPT start command <DCL_GPT_FreeRUN3 & DCL_GPT_FreeRUN4>
+ FGPT_CMD_STOP, //Free run GPT Stop command <DCL_GPT_FreeRUN3 & DCL_GPT_FreeRUN4>
+ FGPT_CMD_RETURN_COUNT, //Free run GPT return current count value. <DCL_GPT_FreeRUN3 & DCL_GPT_FreeRUN4>
+}DCL_CTRL_CMD_T;
+#else
+#define GPT_CMDS \
+ SGPT_CMD_START, \
+ SGPT_CMD_STOP, \
+ SGPT_CMD_GET_REMAINING_TICK, \
+ SGPT_CMD_BUSYWAIT, \
+ SGPT_CMD_RUNNING_TICK, \
+ SGPT_CMD_MODIFY_CNT, \
+ SGPT2_CMD_START, \
+ SGPT2_CMD_STOP, \
+ SGPT2_CMD_SET_COUNTVALUE, \
+ SGPT2_CMD_REGISTERCALLBACK, \
+ SGPT2_CMD_SET_CLK, \
+ FGPT_CMD_START, \
+ FGPT_CMD_STOP, \
+ FGPT_CMD_RETURN_COUNT,
+#endif
+
+/* For SGPT_CMD_START command. */
+typedef struct
+{
+ DCL_UINT16 u2Tick;//The time Ticks(a tick is 10ms) that register callback function delay to wake up.
+ DCL_UINT32 u4Tick;
+ void (*pfCallback)(void *); //register callback function
+ void *vPara; //parameter of register callback function
+} SGPT_CTRL_START_T;
+
+/* For FGPT_CMD_RETURN_COUNT command. */
+typedef DCL_UINT16 FGPT_CTRL_RETURN_COUNT_T;
+/*For SGPT_CMD_BUSYWAIT command*/
+typedef DCL_UINT16 GPT_BUSYWAIT_COUNT;
+
+
+//added by dongming for gpt2
+typedef struct
+{
+ DCL_UINT16 u2CountValue;
+ DCL_BOOL fgAutoReload;
+} SGPT2_CTRL_RESET_DATA_T;
+
+typedef struct
+{
+ DCL_UINT32 u4Clock; // for gpt2 SGPT2_CTRL_CLK_T enum
+} SGPT2_CTRL_CLK_T;
+
+
+typedef DCL_UINT32 DCL_EVENT_NEW;
+
+typedef void (*SGPT2_CALLBACK_FUNC)(DCL_EVENT_NEW event);
+
+typedef struct{
+ SGPT2_CALLBACK_FUNC gpt2CallBack;
+}SGPT2_CALLBACK_FUNC_T;
+
+
+#ifdef __BUILD_DOM__
+/*The GPIO command prarmeter data structure for each command. that's enum in in DCL_CTRL_DATA_T*/
+typedef enum
+ {
+ SGPT_CTRL_START_T rSGPTStart, /* For SGPT_CMD_START command. */
+ FGPT_CTRL_RETURN_COUNT_T u2RetCount, /* For FGPT_CMD_RETURN_COUNT command. */
+ GPT_BUSYWAIT_COUNT uBusyWaitcount, /*For SGPT_CMD_BUSYWAIT command*/
+ SGPT2_CTRL_RESET_DATA_T rHGPTReset, /*add for gpt2 reset command */
+ SGPT2_CALLBACK_FUNC_T gpt2_callback,/*add for gpt2 registercallback command */
+ SGPT2_CTRL_CLK_T gpt2_clk,
+ }DCL_CTRL_DATA_T;
+#else
+#define GPT_CTRLS \
+ SGPT_CTRL_START_T rSGPTStart; \
+ FGPT_CTRL_RETURN_COUNT_T u2RetCount; \
+ GPT_BUSYWAIT_COUNT uBusyWaitcount;\
+ SGPT2_CTRL_RESET_DATA_T rHGPTReset;\
+ SGPT2_CALLBACK_FUNC_T gpt2_callback;\
+ SGPT2_CTRL_CLK_T gpt2_clk;
+#endif // __BUILD_DOM__
+
+#endif // #ifndef __DCL_GPT_H_STRUCT__
+#endif // #ifdef DCL_DEFINITION_STRUCT
+#ifndef DCL_GPT_H_
+#define DCL_GPT_H_
+#define MAX_GPT_ITEMS 32
+#define DSP_USER_NUM 4
+#define EMPTY_GPT_CB_HANDLER 0x7F
+
+#if defined(__FPGA__)
+/* ALTERA JADE Version */
+//#define LITEGPT_CLOCK 31250//31250
+//#define LITEGPT_US_TO_TICK(us) ((us)/32)
+/* HAPS JADE Version */
+#define LITEGPT_CLOCK 31920//31920
+#define LITEGPT_US_TO_TICK(us) ((us)/125)
+
+#else
+
+#define LITEGPT_CLOCK 32768
+#define LITEGPT_US_TO_TICK(us) (((us)*2)/61)
+#endif
+
+//static kal_bool fgGPT1Init = KAL_FALSE;
+
+typedef struct
+{
+ void (*gpt1_func)(void);
+ void (*gpt2_func)(void);
+}gpt_func;
+
+typedef struct
+{
+ kal_uint32 tick;
+ void (*gptimer_func)(void *parameter);
+ void *parameter;
+}gptimer_item;
+
+typedef struct
+{
+ kal_bool execute;
+ kal_uint32 tick;
+ void (*gptimer_func)(void *parameter);
+ void *parameter;
+}gptimer_multiple;
+
+typedef struct
+{
+ kal_uint32 status; /*1,activated ,0:de-activated*/
+ kal_bool GPTSTOP;
+ kal_uint32 Hgpt_handle;
+ kal_uint16 GPT_TICK;
+ kal_uint8 MAX_GPTIMER_ITEMS; // Indicate the current registered GPT users
+ kal_uint8 GPTUsed[32]; /* 0: Not registered by user, 1: Registerd by used*/
+ /* Reset to 0 when user release GPT handle*/
+ gptimer_item GPTItems[32]; /*support at most 32 gptimer*/
+ gpt_func GPT_FUNC;
+ kal_hisrid hisr;
+} GPTStruct;
+#endif
+#if defined(DCL_DEFINITION_PROTOTYPE)
+#ifndef __DCL_GPT_H_PROTOTYPE__
+#define __DCL_GPT_H_PROTOTYPE__
+
+
+/*************************************************************************
+* FUNCTION
+* DclSGPT_Initialize
+*
+* DESCRIPTION
+* This function is to initialize SW GPT module.
+*
+* PARAMETERS
+* DCL_STATUS_OK
+*
+* RETURNS
+* none
+*
+*************************************************************************/
+extern DCL_STATUS DclSGPT_Initialize(void);
+
+/*************************************************************************
+* FUNCTION
+* DclSGPT_Open
+*
+* DESCRIPTION
+* This function is to open the SW GPT module and get a handle.
+* Note that for DCL_GPT_CB, multiple opens are allowed.For DCL_GPT_BusyWait, Multiple opens are not support.
+*
+* PARAMETERS
+* eDev: only valid for DCL_GPT_CB DCL_GPT_BusyWait
+* flags: no sepcial flags is needed. Please use FLAGS_NONE
+*
+* RETURN VALUES
+* DCL_HANDLE_INVALID: Open failed.
+* other value: Open success, return a a valid handle
+*
+*************************************************************************/
+extern DCL_HANDLE DclSGPT_Open(DCL_DEV dev, DCL_FLAGS flags);
+
+/*************************************************************************
+* FUNCTION
+* DclSGPT_ReadData
+*
+* DESCRIPTION
+* This function is not supported for the SW GPT module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURN VALUES
+* STATUS_UNSUPPORTED:
+*
+*************************************************************************/
+extern DCL_STATUS DclSGPT_ReadData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN *buf_len, DCL_OPTIONS options);
+
+/*************************************************************************
+* FUNCTION
+* DclSGPT_WriteData
+*
+* DESCRIPTION
+* This function is not supported for the SW GPT module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURN VALUES
+* STATUS_UNSUPPORTED:
+*
+*************************************************************************/
+extern DCL_STATUS DclSGPT_WriteData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN *buf_len, DCL_OPTIONS options);
+
+/*************************************************************************
+* FUNCTION
+* DclSGPT_Configure
+*
+* DESCRIPTION
+* This function is not supported for the SW GPT module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURN VALUES
+* STATUS_UNSUPPORTED:
+*
+*************************************************************************/
+extern DCL_STATUS DclSGPT_Configure(DCL_HANDLE handle, DCL_CONFIGURE_T *configure);
+
+/*************************************************************************
+* FUNCTION
+* DclSGPT_RegisterCallback
+*
+* DESCRIPTION
+* This function is not supported for the SW GPT module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURN VALUES
+* STATUS_UNSUPPORTED:
+*
+*************************************************************************/
+extern DCL_STATUS DclSGPT_RegisterCallback(DCL_HANDLE handle, DCL_EVENT event, PFN_DCL_CALLBACK callback);
+
+/*************************************************************************
+* FUNCTION
+* DclSGPT_Control
+*
+* DESCRIPTION
+* This function is to send command to control the SW GPT module.
+*
+* Now, we support two kind of GPT function.
+* For DCL_GPT_CB timer, you can register a callback function with some tick waiting to run.(a tick is 10ms)
+* when timeout ,the callback function will be run in DRV_HISR.
+*
+* For DCL_GPT_BusyWait, You can call DclSGPT_Control with SGPT_CMD_BUSYWAIT command, the programm will be loop in this
+* function until timeout. (a busywait tick is 1ms).
+*
+* PARAMETERS
+* handle: a valid handle return by DclSGPT_Open()
+* cmd: a control command for GPT module
+* 1. SGPT_CMD_START - to start a GPT timer
+* 2. SGPT_CMD_STOP- to stop a GPT timer
+* 3. SGPT_CMD_BUSYWAIT - to start GPT Busywait function.
+* data: data structure for control command.
+* 1. SGPT_CMD_START- pointer to a SGPT_CTRL_START_T structure
+* 2. SGPT_CMD_STOP- a NULL pointer
+* 3. SGPT_CMD_BUSYWAIT - a pointer to GPT_BUSYWAIT_COUNT;
+*
+* RETURN VALUES
+* STATUS_OK: command is executed successfully.
+* STATUS_FAIL: command is failed.
+* DCL_HANDLE_INVALID: It's a invaild handle.
+* STATUS_INVALID_CMD: It's a invalid command.
+*
+*************************************************************************/
+extern DCL_STATUS DclSGPT_Control(DCL_HANDLE handle, DCL_CTRL_CMD cmd, DCL_CTRL_DATA_T *data);
+
+/*************************************************************************
+* FUNCTION
+* DclSGPT_Close
+*
+* DESCRIPTION
+* This function is to close the SW GPT module.
+*
+* PARAMETERS
+* handle: hanlde previous got from DclSGPT_Open()
+*
+* RETURN VALUES
+* DCL_STATUS_OK: successfully close the SW GPT module.
+* DCL_STATUS_fail: fails to close the SW GPT module.
+* STATUS_INVALID_HANDLE: invalid handle.
+*************************************************************************/
+extern DCL_STATUS DclSGPT_Close(DCL_HANDLE *handle);
+
+/*************************************************************************
+* FUNCTION
+* DclFGPT_Initialize
+*
+* DESCRIPTION
+* This function is to initialize the free run GPT module.
+*
+* PARAMETERS
+* None
+*
+* RETURN VALUES
+* DCL_STATUS_OK
+*
+*************************************************************************/
+extern DCL_STATUS DclFGPT_Initialize(void);
+
+/*************************************************************************
+* FUNCTION
+* DclFGPT_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_GPT_FreeRUN3 & DCL_GPT_FreeRUN4>
+* flags: no sepcial flags is needed. Please use FLAGS_NONE
+*
+* RETURN VALUES
+* 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 DclFGPT_Open(DCL_DEV dev, DCL_FLAGS flags);
+
+/*************************************************************************
+* FUNCTION
+* DclFGPT_ReadData
+*
+* DESCRIPTION
+* This function is not supported for the free run GPT module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURNS
+* STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclFGPT_ReadData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN *buf_len, DCL_OPTIONS options);
+
+/*************************************************************************
+* FUNCTION
+* DclFGPT_WriteData
+*
+* DESCRIPTION
+* This function is not supported for the free run GPT module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURNS
+* STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclFGPT_WriteData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN *buf_len, DCL_OPTIONS options);
+
+/*************************************************************************
+* FUNCTION
+* DclFGPT_Configure
+*
+* DESCRIPTION
+* This function is not supported for the free run GPT module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURNS
+* STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclFGPT_Configure(DCL_HANDLE handle, DCL_CONFIGURE_T *configure);
+
+/*************************************************************************
+* FUNCTION
+* DclFGPT_RegisterCallback
+*
+* DESCRIPTION
+* This function is not supported for the free run GPT module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURNS
+* STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclFGPT_RegisterCallback(DCL_HANDLE handle, DCL_EVENT event, PFN_DCL_CALLBACK callback);
+
+/*************************************************************************
+* FUNCTION
+* DclFGPT_Control
+*
+* DESCRIPTION
+* This function is to send command to control the free run GPT module.
+*
+* PARAMETERS
+* handle: a valid handle return by DclFGPT_Open()
+* cmd: a control command for free ryb GPT module
+* 1. FGPT_CMD_START - to start free run gpt timer
+* 2. FGPT_CMD_STOP - to stop free run gpt timer
+* 3. FGPT_CMD_RETURN_COUNT - to get the timer count
+* data:
+* 1. FGPT_CMD_RETURN_COUNT- pointer to a FGPT_CTRL_RETURN_COUNT_T type
+* 2. FGPT_CMD_START - pointer to null
+* 3. FGPT_CMD_STOP -pointer to null
+*
+* RETURN VALUES
+* 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 DclFGPT_Control(DCL_HANDLE handle, DCL_CTRL_CMD cmd, DCL_CTRL_DATA_T *data);
+
+/*************************************************************************
+* FUNCTION
+* DclFGPT_Close
+*
+* DESCRIPTION
+* This function is to close the SW GPT module.
+*
+* PARAMETERS
+* handle: hanlde previous got from DclSGPT_Open()
+*
+* RETURN VALUES
+* DCL_STATUS_OK: successfully close the SW GPT module.
+* DCL_STATUS_fail: fails to close the SW GPT module.
+* STATUS_INVALID_HANDLE: invalid handle.
+*
+*************************************************************************/
+extern DCL_STATUS DclFGPT_Close(DCL_HANDLE handle);
+
+#endif // #ifndef __DCL_GPT_H_PROTOTYPE__
+#endif // #ifdef DCL_DEFINITION_PROTOTYPE
+
+