[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_i2c.h b/mcu/interface/driver/peripheral/dcl_i2c.h
new file mode 100644
index 0000000..1363a50
--- /dev/null
+++ b/mcu/interface/driver/peripheral/dcl_i2c.h
@@ -0,0 +1,510 @@
+/*****************************************************************************
+*  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_i2c.h
+ *
+ * Project:
+ * --------
+ *   Maui
+ *
+ * Description:
+ * ------------
+ *   Header file of DCL (Driver Common Layer) for I2C.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifdef DCL_DEFINITION_STRUCT
+#ifndef __DCL_I2C_H_STRUCT__
+#define __DCL_I2C_H_STRUCT__
+
+/*******************************************************************************
+ * DCL_OPTIONS for I2C, not in use now.
+ *******************************************************************************/
+#define I2C_OPTIONS
+
+#include "dcl_i2c_owner.h"
+
+ /* I2C Transaction Mode*/
+typedef enum
+{
+   DCL_I2C_TRANSACTION_FAST_MODE, /* Fast Mode: < 400kbps */
+   DCL_I2C_TRANSACTION_HIGH_SPEED_MODE /* Hign Speed Mode: > 400kbps */
+}DCL_I2C_TRANSACTION_MODE;
+
+/* Transaction Type, for batch transaction use*/
+typedef enum
+{
+	DCL_I2C_TRANSACTION_WRITE, /* Single write */
+	DCL_I2C_TRANSACTION_READ, /* Single read */
+	DCL_I2C_TRANSACTION_CONT_WRITE, /* Continue write */
+	DCL_I2C_TRANSACTION_CONT_READ, /* Continue read */
+	DCL_I2C_TRANSACTION_WRITE_AND_READ /* Write and read. Note: This command can not be used, when using DMA to transfer but driver can only support DCL_I2C_DMA_SINGLE_CHANNEL. */
+}DCL_I2C_TRANSACTION_TYPE;
+
+/* Transaction result, for batch transaction query */
+typedef enum
+{
+   DCL_I2C_BATCH_TRANSACTION_SUCCESS, /* The prior batch transaction is successfully transmitted */
+   DCL_I2C_BATCH_TRANSACTION_FAIL, /* Something wrong was happened during the prior batch transaction */
+   DCL_I2C_BATCH_TRANSACTION_IS_BUSY /* I2C bus is occupied now */
+}DCL_I2C_BATCH_TRANSACTION_RESULT;
+
+/* DMA property that driver support, for user query */
+typedef enum
+{
+   DCL_I2C_DMA_NOT_SUPPORT, /* Driver do not support DMA */
+   DCL_I2C_DMA_DUAL_CHANNEL, /* Driver support dual channel DMA mode */
+   DCL_I2C_DMA_SINGLE_CHANNEL /* Driver support single channel DMA mode, not support WRITE_AND_READ when DMA is enabled */
+}DCL_I2C_DMA_PROPERTY;
+
+/* DCL I2C configure structure */
+typedef struct
+{
+   DCL_I2C_OWNER eOwner; /* The owner of I2C, defined in DCL_I2C_OWNER */
+   DCL_BOOL fgGetHandleWait; /* KAL_TRUE: wait until I2C is idle; KAL_FALSE: do not wait */
+   DCL_UINT8 u1SlaveAddress; /* Slave address */
+   DCL_UINT8 u1DelayLen; /* Wait delay between consecutive transfers (the unit is half pulse width) */
+   DCL_I2C_TRANSACTION_MODE eTransactionMode; /* Fast mode or high speed mode */
+   DCL_UINT32 u4FastModeSpeed; /* The transfer speed under fast mode. But even under high speed mode, you should alse configure this parameter */
+   DCL_UINT32 u4HSModeSpeed; /* The transfer speed under high speed mode */
+   DCL_BOOL fgEnableDMA; /* KAL_TRUE: use DMA to transfer data; KAL_FALSE: do not use DMA. Note: Make sure driver support DMA mode before you use it. */
+} I2C_CONFIG_T;
+
+/* DCL_CONFIGURE_T for I2C. */
+#define I2C_CONFIGS \
+   I2C_CONFIG_T rI2CCofig;
+
+/* DCL_EVENT for I2C, not in use now. */
+#define I2C_EVENTS
+
+#ifdef __BUILD_DOM__
+/* DCL_CTRL_CMD for I2C */
+typedef enum
+{
+   I2C_CMD_GET_TRANSACTION_MODE, /* Get transaction mode */
+   I2C_CMD_SET_TRANSACTION_SPEED, /* Set transaction speed */
+   I2C_CMD_SINGLE_WRITE, /* Single write of blocking mode */
+   I2C_CMD_SINGLE_READ, /* Single read of blocking mode */
+   I2C_CMD_CONT_WRITE, /* Continue write of blocking mode */
+   I2C_CMD_CONT_READ, /* Continue read of blocking mode */
+   I2C_CMD_WRITE_AND_READ, /* Write and read of blocking mode */
+   I2C_CMD_BATCH_TRANSACTION, /* Batch transaction which support non-blocking mode */
+   I2C_CMD_GET_BATCH_TRANSACTION_RESULT, /* Query the prior batch transaction result */
+   I2C_CMD_GET_DMA_PROPERTY, /* Get the DMA property which driver support */
+   I2C_CMD_ENABLE_DMA, /* Use DMA to transfer data. Note: Before you do this, please make sure that driver support DMA mode */
+   I2C_CMD_SET_SLAVE_ADDRESS /* Set the slave address of sensor */
+}DCL_CTRL_CMD_T;
+#else 
+#define I2C_CMDS \
+   I2C_CMD_GET_TRANSACTION_MODE, \
+   I2C_CMD_SET_TRANSACTION_SPEED, \
+   I2C_CMD_SINGLE_WRITE, \
+   I2C_CMD_SINGLE_READ, \
+   I2C_CMD_CONT_WRITE, \
+   I2C_CMD_CONT_READ, \
+   I2C_CMD_WRITE_AND_READ, \
+   I2C_CMD_BATCH_TRANSACTION, \
+   I2C_CMD_GET_BATCH_TRANSACTION_RESULT, \
+   I2C_CMD_GET_DMA_PROPERTY, \
+   I2C_CMD_ENABLE_DMA, \
+   I2C_CMD_SET_SLAVE_ADDRESS, 
+#endif /* __BUILD_DOM__ */
+
+/* For I2C_CMD_GET_TRANSACTION_MODE command. */
+typedef struct
+{
+   DCL_I2C_TRANSACTION_MODE eTransactionMode; /* Transaction mode */
+}I2C_CTRL_GET_TRANSACTION_MODE_T;
+/* For I2C_CMD_SET_TRANSACTION_SPEED command. */
+typedef struct
+{
+   DCL_I2C_TRANSACTION_MODE eTransactionMode; /* Transaction mode */
+   DCL_UINT32 u4FastModeSpeed; /* Fast mode speed */
+   DCL_UINT32 u4HSModeSpeed; /* High speed mode speed */
+}I2C_CTRL_SET_TRANSACTION_SPEED_T;
+/* For I2C_CMD_SINGLE_WRITE, I2C_CMD_SINGLE_READ command. */
+typedef struct
+{
+   DCL_UINT8 *pu1Data; /* Pointer to the buffer of data */
+   DCL_UINT32 u4DataLen; /* Data length */
+}I2C_CTRL_SINGLE_WRITE_T, I2C_CTRL_SINGLE_READ_T;
+/* For I2C_CMD_CONT_WRITE, I2C_CMD_CONT_READ command. */
+typedef struct
+{
+   DCL_UINT8 *pu1Data; /* Pointer to the buffer of data */
+   DCL_UINT32 u4DataLen; /* Data length of each transfer */
+   DCL_UINT32 u4TransferNum; /* Transfer number */
+}I2C_CTRL_CONT_WRITE_T, I2C_CTRL_CONT_READ_T;
+/* For I2C_CMD_WRITE_AND_READ command. */
+typedef struct
+{
+   DCL_UINT8 *pu1InData; /* Pointer to the read data */
+   DCL_UINT32 u4InDataLen; /* Read data length */
+   DCL_UINT8 *pu1OutData; /* Pointer to the write data */
+   DCL_UINT32 u4OutDataLen; /* Write data length */
+}I2C_CTRL_WRITE_AND_READE_T;
+/* For I2C_CTRL_BATCH_DATA_T structure. */
+typedef union
+{
+	I2C_CTRL_SINGLE_WRITE_T rSingleWrite; /* Single write */
+  I2C_CTRL_SINGLE_READ_T rSingleRead; /* Single read */
+  I2C_CTRL_CONT_WRITE_T rContWrite; /* Continue write */
+  I2C_CTRL_CONT_READ_T rContRead; /* Continue read */
+  I2C_CTRL_WRITE_AND_READE_T rWriteAndRead; /* Write and read. Note: this command can not be used, when using DMA to transfer but driver can only support DCL_I2C_DMA_SINGLE_CHANNEL. */
+}I2C_CTRL_TRANSACTION_DATA_T;
+/* For I2C_CTRL_BATCH_TRANSACTION_T structure. */
+typedef struct
+{
+   DCL_I2C_TRANSACTION_TYPE eTransactionType; /* Transaction type */
+   I2C_CTRL_TRANSACTION_DATA_T rTansactionData; /* Batch transaction data of corresponding transaction type */
+}I2C_CTRL_BATCH_DATA_T;
+/* For I2C_CMD_BATCH_TRANSACTION command. */
+typedef struct
+{
+   DCL_UINT32 u4BatchNum; /* Number of batches of this batch transaction */
+   I2C_CTRL_BATCH_DATA_T *prBatchData; /* Pointer to the buffer where stored the batches data*/
+}I2C_CTRL_BATCH_TRANSACTION_T;
+/* For I2C_CMD_GET_BATCH_TRANSACTION_RESULT command. */
+typedef struct
+{
+   DCL_I2C_BATCH_TRANSACTION_RESULT eBatchTransactionResult; /* Batch transaction result */
+   DCL_UINT32 u4BatchNum;  /* The number of Batches have been transferred successfully */
+}I2C_CTRL_GET_BATCH_TRANSACTION_RESULT_T;
+/* For I2C_CMD_GET_DMA_PROPERTY command. */
+typedef struct
+{
+   DCL_I2C_DMA_PROPERTY eDMAProperty; /* DMA property */
+}I2C_CTRL_GET_DMA_PROPERTY_T;
+/* For I2C_CMD_ENABLE_DMA command. */
+typedef struct
+{
+   DCL_BOOL fgEnableDMA; /* KAL_TRUE: use DMA to transfer data; KAL_FALSE: do not use DMA. Note: Make sure driver support DMA mode before you use it. */
+}I2C_CTRL_ENABLE_DMA_T;
+/* For I2C_CMD_SET_SLAVE_ADDRESS command. */
+typedef struct
+{
+   DCL_UINT8 u1SlaveAddress; /* Slave address */
+}I2C_CTRL_SET_SLAVE_ADDRESS_T;
+
+#ifdef __BUILD_DOM__
+/* DCL_CTRL_DATA_T for I2C: Define the Control data structure for each command */ 
+typedef union
+{
+   I2C_CTRL_GET_TRANSACTION_MODE_T rGetTransactionMode; /* Get transaction mode */
+   I2C_CTRL_SET_TRANSACTION_SPEED_T rSetTransactionSpeed; /* Set transaction speed */
+   I2C_CTRL_SINGLE_WRITE_T rSingleWrite; /* Single write of blocking mode */
+   I2C_CTRL_SINGLE_READ_T rSingleRead; /* Single read of blocking mode */
+   I2C_CTRL_CONT_WRITE_T rContWrite; /* Continue write of blocking mode */
+   I2C_CTRL_CONT_READ_T rContRead; /* Continue read of blocking mode */
+   I2C_CTRL_WRITE_AND_READE_T rWriteAndRead; /* Write and read of blocking mode */
+   I2C_CTRL_BATCH_TRANSACTION_T rBatchTransaction; /* Batch transaction which support non-blocking mode */
+   I2C_CTRL_GET_BATCH_TRANSACTION_RESULT_T rGetBatchTransactionResult; /* Query the prior batch transaction result */
+   I2C_CTRL_GET_DMA_PROPERTY_T rGetDMAProperty; /* Get the DMA property which driver support */
+   I2C_CTRL_ENABLE_DMA_T rEnableDMA; /* Use DMA to transfer data. Note: Before you do this, please make sure that driver support DMA mode */
+   I2C_CTRL_SET_SLAVE_ADDRESS_T rSetSlaveAddress; /* Set slave address of sensor */
+}DCL_CTRL_DATA_T;
+#else
+#define I2C_CTRLS \
+   I2C_CTRL_GET_TRANSACTION_MODE_T rGetTransactionMode; \
+   I2C_CTRL_SET_TRANSACTION_SPEED_T rSetTransactionSpeed; \
+   I2C_CTRL_SINGLE_WRITE_T rSingleWrite; \
+   I2C_CTRL_SINGLE_READ_T rSingleRead; \
+   I2C_CTRL_CONT_WRITE_T rContWrite; \
+   I2C_CTRL_CONT_READ_T rContRead; \
+   I2C_CTRL_WRITE_AND_READE_T rWriteAndRead; \
+   I2C_CTRL_BATCH_TRANSACTION_T rBatchTransaction; \
+   I2C_CTRL_GET_BATCH_TRANSACTION_RESULT_T rGetBatchTransactionResult; \
+   I2C_CTRL_GET_DMA_PROPERTY_T rGetDMAProperty; \
+   I2C_CTRL_ENABLE_DMA_T rEnableDMA; \
+   I2C_CTRL_SET_SLAVE_ADDRESS_T rSetSlaveAddress;
+#endif /* __BUILD_DOM__ */
+
+#endif // #ifndef __DCL_I2C_H_STRUCT__
+#endif // #ifdef DCL_DEFINITION_STRUCT  
+
+#ifdef DCL_DEFINITION_PROTOTYPE
+#ifndef __DCL_I2C_H_PROTOTYPE__
+#define __DCL_I2C_H_PROTOTYPE__
+
+/*************************************************************************
+* FUNCTION
+*  DclSI2C_Initialize
+*
+* DESCRIPTION
+*  This function is to initialize S/W I2C module, should be called only once when driver init.
+*
+* PARAMETERS
+*  None
+*
+* RETURNS
+*  STATUS_OK
+*
+*************************************************************************/
+extern DCL_STATUS DclSI2C_Initialize(void);
+/*************************************************************************
+* FUNCTION
+*  DclSI2C_Open
+*
+* DESCRIPTION
+*  This function is to open the I2C module and return a handle
+*
+* PARAMETERS
+*  dev: I2C device ID. Only valid for DCL_I2C.
+*  flags: User of I2C. Should be one of the enum DCL_I2C_OWNER.
+*
+* RETURNS
+*  DCL_HANDLE_INVALID: Incorrect device ID.
+*  DCL_HANDLE_OCCUPIED: This user has opened a handle, which is in use.
+*  Other value: A valid handle
+*
+* EXAMPLE
+*  <code>
+*  DCL_HANDLE i2c_handle = NULL;
+*  if (NULL == i2c_handle)
+*  {
+*      i2c_handle = DclSI2C_Open(DCL_I2C, DCL_I2C_OWNER_CAMERA);
+*  }
+*  </code>
+*
+*************************************************************************/
+extern DCL_HANDLE DclSI2C_Open(DCL_DEV dev, DCL_FLAGS flags);
+/*************************************************************************
+* FUNCTION
+*  DclSI2C_ReadData
+*
+* DESCRIPTION
+*  This function is not supported for the I2C module now.
+*
+* PARAMETERS
+*	N/A
+*
+* RETURNS
+*	STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclSI2C_ReadData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN buf_len, DCL_OPTIONS options);
+/*************************************************************************
+* FUNCTION
+*  DclSI2C_WriteData
+*
+* DESCRIPTION
+*  This function is not supported for the I2C module now.
+*
+* PARAMETERS
+*	N/A
+*
+* RETURNS
+*	STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclSI2C_WriteData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN buf_len, DCL_OPTIONS options);
+/*************************************************************************
+* FUNCTION
+*  DclSI2C_Configure
+*
+* DESCRIPTION
+*  This function is to configure the I2C module.
+*
+* PARAMETERS
+*  handle: the returned handle value of DclSI2C_Open
+*  configure: a structure which include the I2C configuration.  
+*
+* RETURNS
+*  STATUS_OK: Successfully configure I2C module.
+*  STATUS_INVALID_DCL_HANDLE: It's a invalid handle.
+*  STATUS_NOT_OPENED: The module has not been opened.
+*  STATUS_INVALID_CONFIGURATION: The configuration is invalid.
+*  STATUS_DEVICE_NOT_SUPPORT_DMA: User wants to use DMA transfer, but driver do not support.
+*
+* EXAMPLE
+*  <code>
+*  I2C_CONFIG_T cfg;
+*  cfg.eOwner = DCL_I2C_OWNER_CAMERA;
+*  cfg.fgGetHandleWait = KAL_TRUE;
+*  cfg.u1SlaveAddress = SLAVE_ADDRESS_ID;
+*  cfg.u1DelayLen = 0;
+*  cfg.eTransactionMode = DCL_I2C_TRANSACTION_FAST_MODE;
+*  cfg.u4FastModeSpeed = 300;
+*  cfg.u4HSModeSpeed = 0;
+*  cfg.fgEnableDMA = KAL_FALSE;
+*  if (STATUS_OK != DclSI2C_Configure(i2c_handle, (DCL_CONFIGURE_T *)&cfg))
+*  {
+*      ASSERT(0);
+*  }
+*  </code>
+*
+*************************************************************************/
+extern DCL_STATUS DclSI2C_Configure(DCL_HANDLE handle, DCL_CONFIGURE_T *configure);
+/*************************************************************************
+* FUNCTION
+*  DclSI2C_RegisterCallback
+*
+* DESCRIPTION
+*  This function is to set callback function for the I2C module, which is not supported for the I2C module now.
+*
+* PARAMETERS
+*  handle: the returned handle value of DclSI2C_Open
+*  event: Supported events:
+*  callback: the callback function for registered events
+*
+* RETURNS
+*  STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclSI2C_RegisterCallback(DCL_HANDLE handle, DCL_EVENT event, PFN_DCL_CALLBACK callback);
+/*************************************************************************
+* FUNCTION
+*  DclSI2C_Control
+*
+* DESCRIPTION
+*  This function is to send command to control the I2C module.
+*
+* PARAMETERS
+*  handle: The handle value returned from DclSI2C_Open
+*  cmd: A control command for I2C module
+*          1. I2C_CMD_GET_TRANSACTION_MODE: to get transaction mode
+*          2. I2C_CMD_SET_TRANSACTION_SPEED: to set transaction speed
+*          3. I2C_CMD_SINGLE_WRITE: to perform a single WRITE
+*          4. I2C_CMD_SINGLE_READ: to perform a single READ
+*          5. I2C_CMD_CONT_WRITE: to perform a continuous WRITE
+*          6. I2C_CMD_CONT_READ: to  perform a continuous READ
+*          7. I2C_CMD_WRITE_AND_READ: to perform a specific sequence "WRITE then READ"
+*          8. I2C_CMD_BATCH_TRANSACTION: to perform a non-blocking batch transaction
+*          9. I2C_CMD_GET_BATCH_TRANSACTION_RESULT: to get batch transaction result
+*          10. I2C_CMD_GET_DMA_PROPERTY: to get DMA property
+*          11. I2C_CMD_ENABLE_DMA: to enable/disable DMA
+*  data: The data of the control command
+*          1. I2C_CMD_GET_TRANSACTION_MODE: pointer to a I2C_CTRL_GET_TRANSACTION_MODE_T structure
+*          2. I2C_CMD_SET_TRANSACTION_SPEED: pointer to a I2C_CTRL_SET_TRANSACTION_SPEED_T structure
+*          3. I2C_CMD_SINGLE_WRITE: pointer to a I2C_CTRL_SINGLE_WRITE_T structure
+*          4. I2C_CMD_SINGLE_READ: pointer to a I2C_CTRL_SINGLE_READ_T structure
+*          5. I2C_CMD_CONT_WRITE: pointer to a I2C_CTRL_CONT_WRITE_T structure
+*          6. I2C_CMD_CONT_READ: pointer to a I2C_CTRL_CONT_READ_T structure
+*          7. I2C_CMD_WRITE_AND_READ: pointer to a I2C_CTRL_WRITE_AND_READE_T structure
+*          8. I2C_CMD_BATCH_TRANSACTION: pointer to a I2C_CTRL_BATCH_TRANSACTION_T structure
+*          9. I2C_CMD_GET_BATCH_TRANSACTION_RESULT: pointer to a I2C_CTRL_GET_BATCH_TRANSACTION_RESULT_T structure
+*          10. I2C_CMD_GET_DMA_PROPERTY: pointer to a I2C_CTRL_GET_DMA_PROPERTY_T structure
+*          11. I2C_CMD_ENABLE_DMA: pointer to a I2C_CTRL_ENABLE_DMA_T structure
+*
+* RETURNS
+*  STATUS_OK: command is executed successfully.
+*  STATUS_FAIL: command is failed.
+*  STATUS_INVALID_CMD: It's a invalid command.
+*  STATUS_INVALID_DCL_HANDLE: It's a invalid handle.
+*  STATUS_NOT_OPENED: The module has not been opened.
+*  STATUS_DEVICE_IS_BUSY: I2C bus is occupied by others, but this user choose not to wait. Only valid for blocking transaction mode.
+*  STATUS_ACKERR: ACK error occured. Only valid for blocking transaction mode.
+*  STATUS_HS_NACKERR: Master code nack error occured. Only valid for blocking transaction mode.
+*
+* EXAMPLE
+*  <code>
+*  kal_uint8 out_buff[3];
+*  out_buff[0] = REG_ADDR >> 8;
+*  out_buff[1] = REG_ADDR;
+*  out_buff[1] = WRT_DATA;
+*  DCL_STATUS_T rt;
+*  DCL_CTRL_CMD cmd = I2C_CMD_SINGLE_WRITE;
+*  I2C_CTRL_SINGLE_WRITE_T write_data;
+*  write_data.pu1Data = out_buff;
+*  write_data.u4DataLen = 3;
+*  rt = DclSI2C_Control(i2c_handle, cmd, (DCL_CTRL_DATA_T *)&write_data);
+*  if (STATUS_OK != rt)
+*  {
+*      ASSERT(0);
+*  }
+*  </code>
+*  
+*************************************************************************/
+extern DCL_STATUS DclSI2C_Control(DCL_HANDLE handle, DCL_CTRL_CMD cmd, DCL_CTRL_DATA_T *data);
+/*************************************************************************
+* FUNCTION
+*  DclSI2C_Close
+*
+* DESCRIPTION
+*  This function is to close the I2C module.
+*
+* PARAMETERS
+*  handle: the returned handle value of DclSI2C_Open
+*
+* RETURNS
+*  STATUS_OK
+*
+* EXAMPLE
+*  <code>
+*  if (i2c_handle)
+*  {
+*      DclSI2C_Close(i2c_handle);
+*      i2c_handle = NULL;
+*  }
+*  </code>
+*  
+*************************************************************************/
+extern DCL_STATUS DclSI2C_Close(DCL_HANDLE handle);
+
+
+#endif // #ifndef __DCL_I2C_H_PROTOTYPE__
+#endif // #ifdef DCL_DEFINITION_PROTOTYPE
+
+
+