[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/service/hif/hmu_conf_data.h b/mcu/interface/service/hif/hmu_conf_data.h
new file mode 100644
index 0000000..80a9f86
--- /dev/null
+++ b/mcu/interface/service/hif/hmu_conf_data.h
@@ -0,0 +1,238 @@
+#ifndef __HMU_DRV_FUNC_H__
+#define __HMU_DRV_FUNC_H__
+#include "kal_general_types.h"
+#include "dcl.h"
+
+/*************************************************************************
+ * HMU Parameters Definition
+ *************************************************************************/
+ /*Maximum number of emulation devices managed by HMU in normal booting*/
+#define HMU_MAX_EMUDEVNUM 				10
+ /*Maximum number of emulation devices managed by HMU in Host Detection booting*/
+#define HMU_MAX_HD_EMUDEVNUM			3
+/*Maximum length of the HIF core's extended information */
+#define HMU_MAX_HIF_EXTINFO_SIZE		512
+/*Maximum length of each emulation device's extended information */
+#define HMU_MAX_EMUDEV_EXTINFO_SIZE		64
+
+#define HMU_PREFIX		"HMU"
+#define HMU_FAIL_PREFIX	"HMU-FAIL"
+
+
+/* Port number for DHL debugging channel. */
+#define HMU_EXCEPT_COM_PORT uart_port_usb2
+
+/*************************************************************************
+ * Type Definitions
+ *************************************************************************/
+/*The definitions abouthe HIF event group */
+/* Name */
+#define HIF_DRV_EG_NAME "HIF_DRV_EG"
+
+/* Event */
+#define HIF_DRV_EG_HIF_TICK_EVENT       0x80000000  /* HIF tick to trigger USBCORE to check GPD. */
+#define HIF_DRV_EG_HIF_TICK_EVENT_SDIO  0x08000000  /* HIF tick to trigger SDIOCORE to check GPD. */
+#define HIF_DRV_EG_HIF_TICK_EVENT_UART  0x00800000  /* HIF tick to trigger UARTCORE to check GPD. */
+#define HIF_DRV_EG_HIF_TICK_EVENT_CLDMA 0x00080000  /* HIF tick to trigger CLDMACORE to check GPD. */
+#define HIF_DRV_EG_HIF_TICK_EVENT_CCB   0x00008000  /* HIF tick to trigger CCISMCCB. */
+#define HIF_DRV_EG_USBC_IND_EVENT       0x40000000  /* To allow USBCORE to indicate device events or setup packet up to USBCLASS in task context. */
+#define HIF_DRV_EG_UART_IND_EVENT       0x00400000  /* To allow UARTCORE to indicate port open in task context. */
+#define HIF_DRV_EG_HIF_TICK_EVENT_LHIF     0x0000800 /* HIF tick for LHIF polling UL data */
+#define HIF_DRV_EG_HIF_TICK_EVENT_LHIF_LOG     0x0000400 /* HIF tick for LHIF polling HW log */
+#define HIF_DRV_EG_ALL_EVENT            0xFFFFFFFF  /* All events associated with the event group managed by HMU. */
+#define HIF_DRV_EG_HIF_RELOAD_EVNET     0x00000008  /* HIF Reload Event for HIF ON/OFF enhance, keep HMU for RGPD reload*/
+#define HIF_DRV_EG_HIF_TICK_EVENT_IPFC  0x00000001  /* HIF tick to trigger IPFCORE to check DL META or update */
+#define HIF_DRV_EG_HIF_IND_EVENT_IPFC   0x00000002  /* To allow IPFCORE to indicate internal ILM/event to itself */
+
+/* HIF tick to trigger HIFCORE to check GPD. Add HIF tick event must modify this mask*/
+#define HIF_DRV_EG_HIF_TICK_EVENT_GROUP ( HIF_DRV_EG_HIF_TICK_EVENT \
+                                        | HIF_DRV_EG_HIF_TICK_EVENT_SDIO \
+                                        | HIF_DRV_EG_HIF_TICK_EVENT_UART \
+                                        | HIF_DRV_EG_HIF_TICK_EVENT_CLDMA \
+                                        | HIF_DRV_EG_HIF_TICK_EVENT_LHIF \
+										| HIF_DRV_EG_HIF_TICK_EVENT_LHIF_LOG \
+                                        | HIF_DRV_EG_HIF_TICK_EVENT_CCB \
+                                        | HIF_DRV_EG_HIF_RELOAD_EVNET \
+                                        | HIF_DRV_EG_HIF_TICK_EVENT_IPFC \
+                                        )
+
+/** 
+ * @brief enumeration for HMU Emulation Device types
+ */
+typedef enum
+{
+	HMU_USB_DEV_MIN					= 0,	
+	HMU_USB_DEV_ACM, hmu_usb_dev_cdcacm = HMU_USB_DEV_ACM,
+	HMU_USB_DEV_ECM, hmu_usb_dev_ecm = HMU_USB_DEV_ECM,
+	HMU_USB_DEV_MBIM, hmu_usb_dev_mbim = HMU_USB_DEV_MBIM,
+	HMU_USB_DEV_CDROM, hmu_usb_dev_cdrom = HMU_USB_DEV_CDROM,
+	HMU_USB_DEV_DISK, hmu_usb_dev_disk = HMU_USB_DEV_DISK,	
+	HMU_USB_DEV_RNDIS, hmu_usb_dev_rndis = HMU_USB_DEV_RNDIS,
+#ifdef __USB_MSD_SUPPORT__
+	HMU_USB_DEV_MSD,hmu_usb_dev_msd = HMU_USB_DEV_MSD,
+#endif
+	HMU_USB_DEV_MAX,	
+
+	HMU_MOBILE_DEV_MIN				= 20,
+	HMU_MOBILE_DEV_COM 	,
+	HMU_MOBILE_DEV_ETH ,
+	HMU_MOBILE_DEV_IP ,
+	HMU_MOBILE_DEV_IPC,
+	HMU_MOBILE_DEV_MB ,	
+	HMU_MOBILE_DEV_MAX ,		
+
+	HMU_EXT_DEV_MIN					= 40 ,		
+	HMU_EXT_DEV_UART 	,		
+	HMU_EXT_DEV_MAX 	,		
+
+	HMU_DEV_NONE					= 0x7fffffff,	
+}hmuEmuDeviceType_enum;
+
+/** 
+ * @brief enumeration for HMU HIFCORE Init function types. Here we define both of init functions and post init functions 
+ */
+typedef enum
+{	
+//  The declaration part for the type of init/deinit functions
+	HMU_HIFCORE_MIN			= 0,	
+	HMU_HIFCORE_USB ,
+	HMU_HIFCORE_SDIO ,	
+	HMU_HIFCORE_CCIF ,
+    HMU_HIFCORE_CAIF ,	
+    HMU_HIFCORE_CLDMA ,
+    HMU_HIFCORE_CCCI ,
+	HMU_HIFCORE_MAX , 
+	
+	HMU_HIFCORE_TYPE_NONE			= 0x7fffffff,	
+}hmuHifCoreType_enum;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/*************************************************************************
+ * Struct Definitions
+ *************************************************************************/
+/** 
+ * @name: HMU_EMUDEV_INFO_STRUCT
+ * @brief the hmu structure for emulation device 
+ */
+typedef struct HMU_EMUDEV_INFO_STRUCT
+{	
+	/* the emulation device type supported in LTE HIF */
+	hmuEmuDeviceType_enum    dev_type;
+	/* the mapping between the emulation device and it's upper layer tunnel */
+	kal_uint32 			dev_mapping;		
+	/* reserve in NVRAM space. next pointer point to the next emulation device in device list. Null means no next device  */
+	union {
+		void 								*reserve ;
+		struct HMU_EMUDEV_INFO_STRUCT		*next ;  // Not use in NVRAM 
+	} u ;	
+	/* the length of extra device-specific information */
+	kal_uint32			ext_devinfo_len;
+	/* the pointer to extra device-specific information */
+	kal_char			ext_devinfo[HMU_MAX_EMUDEV_EXTINFO_SIZE];
+}hmu_emudev_info;
+
+/** 
+ * @name: HMU_CONF_STRUCT_STRUCT
+ * @brief the hmu structure for HMU main structure in normal booting, and the configuration is loaded from NVRAM_EF_HMU_CONFIG_LID.
+ */
+typedef struct HMU_CONF_STRUCT_STRUCT
+{	
+	/* total device number defined configuration files */
+	kal_uint32    		dev_num;	
+	/* the length of extra hif specific information*/
+	kal_uint32			ext_hifinfo_len;
+	/* the pointer to extra hif specific information*/
+	kal_char			ext_hifinfo[HMU_MAX_HIF_EXTINFO_SIZE];
+	/* number of device info list to introduce the device information of the configured devices*/
+	hmu_emudev_info 	dev_info[HMU_MAX_EMUDEVNUM];
+}hmu_conf_struct;
+
+/** 
+ * @name: HMU_HD_CONF_STRUCT_STRUCT
+ * @brief the hmu structure for HMU main structure in Host Detection booting, and the configuration is loaded from NVRAM_EF_HMU_HD_CONFIG_LID.
+ */
+typedef struct HMU_HD_CONF_STRUCT_STRUCT
+{	
+	kal_uint32    		dev_num;	
+	kal_uint32			ext_hifinfo_len;
+	kal_char			ext_hifinfo[HMU_MAX_HIF_EXTINFO_SIZE];
+	hmu_emudev_info 	dev_info[HMU_MAX_HD_EMUDEVNUM];
+}hmu_hd_conf_struct;
+
+/*
+ * @brief: upper layer device module exception mode initialization function 
+ *         it is used for the case that an exception happens before hmu_init() completed
+ *
+ * @return KAL_TRUE if caller is allowed to proceed the exception flow
+ *         KAL_FALSE otherwise
+ */
+typedef kal_bool (*uldrv_except_init)(kal_uint32 dev_mapping, kal_uint32 ext_devinfo_len, kal_char *ext_devinfo);
+
+/** 
+ * @name: _HMU_ULDRV_EXCEPT_INITFUNC_STRUCT
+ *
+ * @brief the structure is for upper layer device module to register its 
+ *        exception mode initialization callback function
+ */
+typedef struct _HMU_ULDRV_EXCEPT_INITFUNC_STRUCT {
+	kal_uint32                      port_id;
+	uldrv_except_init               except_init_func;
+} hmu_uldrv_except_initfunc ;
+
+typedef kal_int32 (*ul_drv_init)(kal_uint32 dev_mapping, kal_uint32 ext_devinfo_len, kal_char * ext_devinfo) ;
+
+/** 
+ * @name: _HMU_HIFCORE_INITFUNC_STRUCT
+ * @brief the structure for Init function and hif emu device types registration table
+ */
+typedef struct _HMU_ULDRV_INITFUNC_STRUCT {
+	hmuEmuDeviceType_enum			dev_type;
+	ul_drv_init				init_func;
+} hmu_uldrv_initfunc ;
+
+typedef kal_int32 (*hif_core_init)(kal_uint32 dev_num, hmu_emudev_info *emudev_info, kal_uint32 ext_hifinfo_len, kal_char * ext_hifinfo) ;
+
+/** 
+ * @name: _HMU_HIFCORE_INITFUNC_STRUCT
+ * @brief the structure for Init function and hif core types registration table
+ */
+typedef struct _HMU_HIFCORE_INITFUNC_STRUCT {
+	hmuHifCoreType_enum			hifcore_type;
+	hif_core_init				init_func;
+} hmu_hifcore_initfunc ;
+
+/** 
+ * @name: _HMU_TICK_INTERVAL_STRUCT
+ * @brief the structure for set hif event trigger interval
+ */
+typedef struct _HMU_TICK_INTERVAL_STRUCT
+{
+    kal_uint32 hif_event;
+    kal_uint32 hif_event_tick_count;
+    kal_uint32 hif_current_tick;
+} hmu_tick_interval;
+
+
+/** 
+ * @name: DECLARE_HMU_ULDRV_EXCEPT_INIT_FUNC
+ * @brief This macro is used to declare the upper layer device module exception initialization functions which will be linked in HMU registration table
+ */
+#define DECLARE_HMU_ULDRV_EXCEPT_INIT_FUNC(_funcName) \
+	extern kal_bool _funcName(kal_uint32 dev_mapping, kal_uint32 ext_devinfo_len, kal_char *ext_devinfo) ;
+
+#endif /*__HMU_DRV_FUNC_H__*/