[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/l1/interface/mml1/mml1_rf_container.h b/mcu/l1/interface/mml1/mml1_rf_container.h
new file mode 100644
index 0000000..97036bd
--- /dev/null
+++ b/mcu/l1/interface/mml1/mml1_rf_container.h
@@ -0,0 +1,194 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ *   mml1_rf_container.h
+ *
+ * Project:
+ * --------
+ *   MT6295
+ *
+ * Description:
+ * ------------
+ *  MMRF container definition
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *----------------------------------------------------------------------------
+
+ *----------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __MML1_RF_CONTAINER_H__
+#define __MML1_RF_CONTAINER_H__
+
+#include "kal_general_types.h"
+#include "mmrf_common_cid.h"
+#include "mml1_rf_hal_general_def.h"
+
+#define MMRFD_CONTAINER_SEQ_SIZE    32
+
+#define MMRFHAL_CW_ADDR_MASK           (0x3FF00000)
+#define MMRFHAL_CW_ADDR_LSB            (20)
+#define MMRFHAL_GET_CW_ADDRESS(data)   ((data&MMRFHAL_CW_ADDR_MASK)>>MMRFHAL_CW_ADDR_LSB)
+
+#define MMRFHAL_CONTAINER_SIZE         sizeof(MMRFD_SEQ_CONTAINER_INTF_CONTAINER_T)
+#define MMRFHAL_SEQ_NODE_SIZE          sizeof(MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T)
+
+/* SEQ Container interface error codes */
+typedef enum
+{
+   MMRFD_SEQ_CONTAINER_INTF_ERR_NONE,                    /* No Error */
+   MMRFD_SEQ_CONTAINER_INTF_ERR_BUFF_OVERFLOW,           /* Buffer overflow */
+   MMRFD_SEQ_CONTAINER_INTF_ERR_INVALID_INPUTS,          /* Input(s) Errors */
+   MMRFD_SEQ_CONTAINER_INTF_ERR_SEQ_LIST_UNINITIALIZED,  /* SEQ list not initialized */
+   MMRFD_SEQ_CONTAINER_INTF_ERR_MEM_ALLOC_FAILED,        /* Memory allocation failed */
+   MMRFD_SEQ_CONTAINER_INTF_ERR_BSI_ALLOCATION_FAIL,     /* BSI allocation failed */
+   MMRFD_SEQ_CONTAINER_INTF_ERR_ENUM_TYPE_MAX
+} MMRFD_SEQ_CONTAINER_INTF_ERR_E;
+
+/* Seq Trigger Types */
+typedef enum
+{
+   MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIGGER_NONE,
+   MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIGGER_IMM_W,
+   MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIGGER_IMM_R,   
+   MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIGGER_SCH_W,
+   MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIGGER_SCH_R,
+} MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIG_E;
+
+/* ========== Structure Prototypes ========== */
+typedef struct
+{
+   MMRFD_SEQ_CONTAINER_INTF_ERR_E          allocate_result; /* Allocation result */
+   MMRFD_DEVICE_DRIVER_RF_INTF_CMD_E       cmd;             /* Command to the device */
+   MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIG_E     seq_trig_type;   /* trigger type for the node */
+   kal_uint32    event_id;      
+   kal_uint32    data_start_idx;
+   kal_uint32    data_end_idx;
+   kal_uint32    imm_read_result;
+} MMRFD_SEQ_CONTAINER_ALLOCATE_RESULT_T;
+
+typedef struct
+{
+   kal_uint32   cw_data[MMRFD_CONTAINER_SEQ_SIZE];  /* address + data */
+} MMRFD_SEQ_CONTAINER_INTF_DATA_ENTRY_T;
+
+typedef struct
+{
+   kal_uint32   sch_read_set;                                    /* for sch read */
+   MMRF_DEVICE_DRIVER_LORX_INFO_T         lorx_en_info;          /* for lorx enable */
+   MMRF_DEVICE_DRIVER_PRACH_CANCEL_EN_E   wcdma_prach_cancel_en; /* for wcdma PRACH cancel */
+} MMRFD_SEQ_CONTAINER_ALLOCATE_INFO_T;
+
+typedef struct _node
+{
+   kal_uint32                             is_occupied;       /* is resource occupied */
+   kal_int32                              seq_offset_time;   /* SEQ node offset time */        
+   MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIG_E    seq_trig_type;     /* SEQ list trigger type */
+   MMRFD_DEVICE_PORT_E                    port;              /* Port associated to this node */
+   kal_uint32                             alloc_size;        /* Allocated size for this node */
+   kal_uint32                             curr_size;         /* Current size of this node */
+   MMRFD_SEQ_CONTAINER_INTF_DATA_ENTRY_T  seq;             /* Contents of this list entry */
+   MMRFD_SEQ_CONTAINER_ALLOCATE_INFO_T    allocate_info;   /* Allocation info for the sequence node */   
+   MMRFD_SEQ_CONTAINER_ALLOCATE_RESULT_T  allocate_result_info; /* Allocation result for the sequence node */
+   struct _node*                          prev_p;            /* Pointer to prev list entry */
+   struct _node*                          next_p;            /* Pointer to next list entry */
+} MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T;
+
+typedef struct
+{
+   kal_uint32                            seq_bias_time;  /* SEQ list bias time */
+   kal_uint32                            seq_size_max;   /* Max size of SEQ list */
+   kal_uint32                            seq_curr_size;  /* Current size of SEQ list */  
+   MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T*  seq_list_head_p;/* Pointer to start of SEQ list */
+   MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T*  seq_list_tail_p;/* Pointer to tail of SEQ list */
+} MMRFD_SEQ_CONTAINER_INTF_SEQ_LIST_T;
+
+typedef struct
+{
+   kal_uint32   is_occupied;   /* is resource occupied */
+   MMRFD_SEQ_CONTAINER_INTF_SEQ_LIST_T seq_lists[MMRFD_DEVICE_TRANSPORT_CNT];    /* Array of pointers to all sequence lists */
+} MMRFD_SEQ_CONTAINER_INTF_CONTAINER_T;
+
+typedef struct
+{
+   //kal_uint8   curr_size;  /* Current size of this node */
+   //kal_uint16  node[5];    /* reserve 5 for debug*/
+   kal_uint32  time_stamp;   /* frc time stamp */
+} MMRFD_SEQ_CONTAINER_DEBUG_APPEND_INFO_T;
+
+typedef struct
+{
+   kal_uint8   curr_size;  /* Current size of this node */
+   kal_uint16  node[5];    /* reserve 5 for debug*/
+   kal_uint32  time_stamp; /* frc time stamp */
+} MMRFD_SEQ_CONTAINER_DEBUG_DELETE_INFO_T;
+
+typedef struct
+{
+   MMRFD_SEQ_CONTAINER_DEBUG_APPEND_INFO_T   mmrf_container_append;
+   MMRFD_SEQ_CONTAINER_DEBUG_DELETE_INFO_T   mmrf_container_delete;
+} MMRFD_SEQ_CONTAINER_DEBUG_T;
+
+MMRFD_SEQ_CONTAINER_INTF_ERR_E
+MMRFD_Seq_Container_Intf_Delete_Seq( MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T** seq );
+
+MMRFD_SEQ_CONTAINER_INTF_ERR_E
+MMRFD_Seq_Container_Intf_Create_Seq( MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T** seq );
+
+MMRFD_SEQ_CONTAINER_INTF_ERR_E
+MMRFD_Seq_Container_Intf_Update_Seq( MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T* seq,
+			       MMRFD_DEVICE_PORT_E port,
+                MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIG_E   seq_trig_type,
+			       kal_int32 seq_offset_time);
+
+MMRFD_SEQ_CONTAINER_INTF_ERR_E
+MMRFD_Seq_Container_Intf_Append_Seq( MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T* seq_node,
+			       MMRFD_SEQ_CONTAINER_INTF_CONTAINER_T* container,
+			       MMRFD_DEVICE_TRANSPORT_E proto );
+
+#endif
+