[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/driver/peripheral/DclH_kbd.h b/mcu/interface/driver/peripheral/DclH_kbd.h
new file mode 100644
index 0000000..b82dfe2
--- /dev/null
+++ b/mcu/interface/driver/peripheral/DclH_kbd.h
@@ -0,0 +1,284 @@
+/*****************************************************************************
+*  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_kbd.h
+ *
+ * Project:
+ * --------
+ *   Maui
+ *
+ * Description:
+ * ------------
+ *   Header file of DCL (Driver Common Layer) for KBD.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * 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 __DCLH_KBD_H_STRUCT__
+#define __DCLH_KBD_H_STRUCT__
+
+
+#define DCL_HKBD_MAGIC_NUM  0x40000000
+
+
+#ifdef __BUILD_DOM__
+/*keypad hw event */
+typedef enum
+{
+	DCL_EVENT_HKBD_STATUS_CHANGE = 0x01, /*keypad hw status change  for the normal keypad hw matrix*/
+	DCL_EVENT_HKBD_EX_STATUS_CHANGE = 0X02,/*keypad extension direction key status change ex: jogball*/
+	DCL_EVENT_HKBD_MAX = 0XFF,/*the max keypad hw event id*/
+
+}KBDH_EVENTS;
+#else
+#define KBDH_EVENTS    \
+   DCL_EVENT_HKBD_STATUS_CHANGE = 0x01, \
+   DCL_EVENT_HKBD_EX_STATUS_CHANGE = 0X02,\
+   DCL_EVENT_HKBD_MAX = 0XFF,\
+
+#endif
+
+
+#ifdef __BUILD_DOM__
+/*keypad hw control commands*/
+typedef enum
+{
+	HKBD_CMD_GET_KEY_NUMBER, /*the command to get the total key number*/
+	HKBD_CMD_GET_KEY_STA_MAP,/*get the keypad hw status register table*/
+	HKBD_CMD_GET_KEY_STATUS, /*Query the key is pressed or released status*/
+	HKBD_CMD_GET_POWER_KEY_STATUS,/*Query the power key status*/
+
+}KBDH_CMDS;
+#else
+#define KBDH_CMDS    \
+   HKBD_CMD_GET_KEY_NUMBER, \
+   HKBD_CMD_GET_KEY_STA_MAP,\
+   HKBD_CMD_GET_KEY_STATUS,\
+   HKBD_CMD_GET_POWER_KEY_STATUS,
+#endif
+
+
+#ifdef __BUILD_DOM__
+/*define the data structure type for every command*/
+typedef union
+{
+	HKBD_CTRL_KNUM_T             		rKBDCtrlKNUM; /*keypad number structure*/
+	HKBD_CTRL_STA_MAP_T       			rKBDCtrlStaMap; /*keypad stauts register structure*/
+	HKBD_CTRL_KEY_STA_T            		rKBDCtrlKeySta; /*key status structure*/
+	HKBD_CTRL_POWKEY_T                 	rKBDCtrlPowerKeySta;/*power key status structure*/
+}KBDH_CTRLS;
+
+#else
+#define KBDH_CTRLS \
+   HKBD_CTRL_KNUM_T             		rKBDCtrlKNUM; \
+   HKBD_CTRL_STA_MAP_T       			rKBDCtrlStaMap;\
+   HKBD_CTRL_KEY_STA_T            		rKBDCtrlKeySta;\
+   HKBD_CTRL_POWKEY_T                 	rKBDCtrlPowerKeySta;
+#endif
+
+
+//HKBD_CMD_GET_KEY_NUMBER
+/*the control command data for command:HKBD_CMD_GET_KEY_NUMBER*/
+typedef struct
+{
+   DCL_UINT16   u2KeyNum;/*key number*/
+} HKBD_CTRL_KNUM_T;
+
+//HKBD_CMD_GET_KEY_STA_MAP
+/*the control command data for command:HKBD_CMD_GET_KEY_STA_MAP*/
+typedef struct
+{
+   DCL_UINT32 kbdmap_reg;/*the lowest 32bit register value, every bit indicates one key status*/
+   DCL_UINT32 kbdmap_reg1;/*the middle 32bit register value, every bit indicates one key status*/
+   DCL_UINT32 kbdmap_reg2;/*the highest 32bit register value, every bit indicates one key status*/
+} HKBD_CTRL_STA_MAP_T;
+
+/*the control command data for command:HKBD_CMD_GET_KEY_STATUS*/
+typedef struct
+{
+	DCL_BOOL sta;/*key stauts:KAL_TURE indicates the key is pressed, KAL_FALSE indicates the key is released*/
+	DCL_UINT8 key;/*key index number, which is defined in the kbd_table.h */
+}HKBD_CTRL_KEY_STA_T;
+
+/*the control command data for command:HKBD_CMD_GET_POWER_KEY_STATUS*/
+typedef struct
+{
+   DCL_BOOL     fgPKP;/*KAL_TURE indicates the key is pressed, KAL_FALSE indicates the key is released*/
+} HKBD_CTRL_POWKEY_T;
+
+#endif
+#endif
+
+
+#ifdef DCL_DEFINITION_PROTOTYPE
+#ifndef __DCL_HKBD_H_PROTOTYPE__
+#define __DCL_HKBD_H_PROTOTYPE__
+
+
+/*************************************************************************
+*<GROUP CallBackFunctions>
+* FUNCTION
+*  KBDH_EVENT_FUNC
+*
+* DESCRIPTION
+*  This function is the callback function for the hw status change.
+*
+* PARAMETERS
+*  event: the keypad hw event, it can be the enum value KBDH_EVENTS.
+*  param: the optional parameter.
+*
+* RETURNS
+*  NONE
+*
+*************************************************************************/
+typedef void (*KBDH_EVENT_FUNC)(DCL_EVENT event, void* param) ; 
+
+/*************************************************************************
+* FUNCTION
+*  DclHKBD_Initialize
+*
+* DESCRIPTION
+*  This function is to initialize keypad hardware module, It is called during the driver initialization and the user is not needed to call it.
+*
+* PARAMETERS
+*  None
+*
+* RETURNS
+*  STATUS_OK
+*
+*************************************************************************/
+extern DCL_STATUS DclHKBD_Initialize(void);
+
+/*************************************************************************
+* FUNCTION
+* DclHKBD_Open
+*
+* DESCRIPTION
+* This function is to open the keypad hw module and return a handle.
+*
+* PARAMETERS
+*  dev:keypad device ID. it should be DCL_KBD.
+*  flags:User of keypad driver. It should be the user module id, if the user does not module id, it can be set 0.
+*
+* RETURNS
+*  DCL_HANDLE_INVALID: Incorrect device ID.
+*  Other value: A valid handle
+*
+* EXAMPLE
+*  <code>
+*  DCL_HANDLE kbd_handle;
+*  kbd_handle = DclHKBD_Open(DCL_KBD, MOD_DRVKBD);
+*  </code>
+*************************************************************************/
+extern DCL_HANDLE DclHKBD_Open(DCL_DEV dev, DCL_FLAGS flags);
+
+/*************************************************************************
+* FUNCTION
+*  DclHKBD_Control
+*
+* DESCRIPTION
+* This function is to control the keypad driver, the user can call the interface to get the keypad driver services through the different commands.
+*
+* PARAMETERS
+*  handle: the user handler of the keypad, which is returned by the DclHKBD_Open function.
+*  cmd: the keypad driver control commands, the values can be get from the enum KBDH_CMDS.
+*  data: the data which is corresponed to the commands, the data type can beone of  the enum KBDH_CTRLS.
+*
+* RETURNS
+*  DCL_HANDLE_INVALID: Incorrect device ID.
+*  STATUS_OK: return successfully.
+*
+* EXAMPLE
+*  <code>
+*  DCL_HANDLE kbdhandle;
+*  DCL_CTRL_DATA_T reg;
+*  kbdhandle = DclHKBD_Open(DCL_KBD, MOD_DRVKBD);
+*  DclHKBD_Control(kbdhandle, HKBD_CMD_GET_KEY_STA_MAP, (DCL_CTRL_DATA_T*)&reg);	 
+*  pkeypad_status->kbdmap_reg = reg.rKBDCtrlStaMap.kbdmap_reg;
+*  pkeypad_status->kbdmap_reg1= reg.rKBDCtrlStaMap.kbdmap_reg1;
+*  pkeypad_status->kbdmap_reg2= reg.rKBDCtrlStaMap.kbdmap_reg2;
+*  </code>
+*
+*************************************************************************/
+extern DCL_STATUS DclHKBD_Control(DCL_HANDLE handle, DCL_CTRL_CMD cmd, DCL_CTRL_DATA_T *data);
+
+
+/*************************************************************************
+* FUNCTION
+*  DclHKBD_Close
+*
+* DESCRIPTION
+* This function is to close the keypad driver.
+*
+* PARAMETERS
+*  handle: the user handler of the keypad, which is returned by the DclHKBD_Open function.
+*
+* RETURNS
+*  STATUS_OK: return successfully.
+*
+*************************************************************************/
+extern DCL_STATUS DclHKBD_Close(DCL_HANDLE handle);
+
+/*************************************************************************
+* FUNCTION
+*  DclHKBD_RegisterCallback
+*
+* DESCRIPTION
+* This function is to register the hardware event callback function.
+*
+* PARAMETERS
+*  handle: the user handler of the keypad, which is returned by the DclHKBD_Open function.
+*  event: the keypad hardware event.It can be one of the value in the enum KBDH_EVENTS.
+*  callback: the callback function pointer.           
+*
+* RETURNS
+*  DCL_HANDLE_INVALID: Incorrect device ID.
+*  STATUS_INVALID_EVENT: the event parameter is not valid for the keypad.
+*  STATUS_OK: return successfully.
+*
+* EXAMPLE
+*  <code>
+* DCL_HANDLE handle ;
+* handle = DclHKBD_Open(DCL_KBD, 0);
+* DclHKBD_RegisterCallback(handle, DCL_EVENT_HKBD_STATUS_CHANGE, &Kbd_hw_event_Callback);
+*  </code>
+*
+*************************************************************************/
+extern DCL_STATUS DclHKBD_RegisterCallback(DCL_HANDLE handle, DCL_EVENT event, KBDH_EVENT_FUNC callback);
+
+#endif
+#endif
+