diff --git a/mcu/interface/protocol/general/device.h b/mcu/interface/protocol/general/device.h
new file mode 100644
index 0000000..e3acf5a
--- /dev/null
+++ b/mcu/interface/protocol/general/device.h
@@ -0,0 +1,1383 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * DEVICE.H
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   This file is intends for definition of all hardware device requirement.
+ *
+ * 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!
+ * 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!
+ *
+ * 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!
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+
+/********************************************************************************
+*  Copyright Statement:
+*  --------------------
+*
+*  This product has been developed using a protocol stack
+*  developed by Sasken Communication Technologies Limited.
+*
+********************************************************************************/
+
+
+#ifndef _DEVICE_H
+#define _DEVICE_H
+
+/***************************************************************************** 
+* Include
+*****************************************************************************/
+#include "kal_general_types.h"
+//#include "pmic6318_sw.h"
+#include "ps_public_struct.h"
+#include "dcl.h"
+
+/***************************************************************************** 
+* Define
+*****************************************************************************/
+/* Add by Yuchuan */
+#define UEM_GREETING_LEN      62
+#define UEM_EQUIP_ID_LEN      64
+
+/* Define the ring compose capability */
+#define MAX_RING_COMPOSE_NUM        5
+#define MAX_RING_COMPOSE_LEN        300
+
+/* Define the display text maximum len */
+#define UEM_DISPLAY_TEXT_LEN  30
+#define UEM_MAX_GREETING_LEN  30
+
+/* For UEM GPIO*/
+#define MAX_LED_GPIO       3    /* 3 LED lights */
+#define MAX_LCD_BACKLIGHT  1    /* 1 backlight */
+#define MAX_VIBRATOR       1    /* 1 vibrator */
+
+#define GPIO_INVAILD   0x0
+#define GPIO_VAILD     0x01
+#define GPO_VAILD        0x02
+#define MAX_NETNAME_TEXT 32
+
+//#ifdef __CUST_NEW__
+#define GPIO_INVALID   GPIO_INVAILD
+#define GPIO_VALID     GPIO_VAILD
+#define GPO_VALID      GPO_VAILD
+//#endif /* __CUST_NEW__ */ 
+
+/***************************************************************************** 
+* Typedef
+*****************************************************************************/
+typedef enum {
+   L4_BCD = 0x01,
+   L4_ASCII = 0x04,
+   L4_UCS2 = 0x08
+} L4_charset_enum;
+
+
+typedef enum {
+   MMI_PS_AT_LANG_DEFAULT,
+   MMI_PS_AT_LANG_UNKWN,
+   MMI_PS_AT_LANG_EN,
+   MMI_PS_AT_LANG_TW,
+   MMI_PS_AT_LANG_ZH,
+   MMI_PS_AT_LANG_LAST
+} L4_AT_lang_enum;
+
+typedef enum {
+    L4_WB_AUDIO_INPUT_FIR,
+    L4_WB_AUDIO_OUTPUT_FIR,
+    L4_WB_ADUIO_MODE_PARAM
+}l4_wb_audio_para_action_enum;
+/***************************************************************************** 
+* Audio Interface 
+*****************************************************************************/
+   
+/* Define the audio device type */
+typedef enum {
+    AUDIO_DEVICE_SPEAKER = 0  ,     /* Tone, Keypad sound to play on audio device. */
+    AUDIO_DEVICE_MICROPHONE   ,     /* Microphone sound to send on audio device. */
+    AUDIO_DEVICE_BUZZER       ,     /* Ring tone sound to play on audio device. */
+    AUDIO_DEVICE_GMI          ,     /* MIDI/Melody sound to play on audio device */
+    AUDIO_DEVICE_SPEAKER2     ,     /* earphone, carkit */
+    AUDIO_DEVICE_LOUDSPEAKER  ,     /* loudspeaker for free sound */
+    AUDIO_DEVICE_SPEAKER_BOTH ,
+    MAX_AUDIO_DEVICE_NUM      
+}audio_type_enum;
+
+
+/* Define the audio device type */
+typedef enum {
+    AUDIO_DEVICE_MIC1 = 0 ,    /* ME */
+    AUDIO_DEVICE_MIC2     ,    /* Headset */
+    AUDIO_DEVICE_FMRR     ,     /* FM Radio */
+    AUDIO_DEVICE_MIC3          /* Loud Spkear */
+}audio_input_path_enum;
+
+
+/* Define volume category */
+typedef enum {
+    VOL_NORMAL   = 0 ,
+    VOL_HEADSET      ,  
+    VOL_HANDFREE     ,  
+    MAX_VOL_CATE,
+    VOL_TV_OUT = MAX_VOL_CATE
+}volume_category_enum;
+
+
+/* Define volume type.*/
+typedef enum {
+    VOL_TYPE_CTN  = 0 ,   /* MMI can apply to associate volume; call tone attribute */
+    VOL_TYPE_KEY      ,   /* MMI can apply to associate volume; keypad tone attribute */
+    VOL_TYPE_MIC      ,   /* microphone attribute */
+    VOL_TYPE_GMI      ,   /* MMI can apply to associate volume; melody, imelody, midi attribute */
+    VOL_TYPE_SPH      ,   /* MMI can apply to associate volume; speech sound attribute */
+    VOL_TYPE_SID	  ,   /* side tone attribute */
+    VOL_TYPE_MEDIA    ,   /* MMI can apply to associate volume; As MP3, Wave,... attribute */
+    MAX_VOL_TYPE           
+}volume_type_enum;
+
+
+/* Volume level. based index is from 0..(MAX_VOL_LEVEL-1) */
+#define MAX_VOL_LEVEL               7
+
+
+
+/* Define the audio play style. */
+typedef enum {
+    DEVICE_AUDIO_PLAY_CRESCENDO  = 0 ,  /* Play sound for crescendo. */
+    DEVICE_AUDIO_PLAY_INFINITE       ,  /* Play sound for infinite. */
+    DEVICE_AUDIO_PLAY_ONCE           ,  /* Play sound for once. */
+    DEVICE_AUDIO_PLAY_DESCENDO         /* Play sound for descendo. */
+}audio_play_style_enum;
+
+
+typedef struct {
+   kal_uint8 first_out_amp[MAX_AUDIO_DEVICE_NUM][MAX_VOL_LEVEL];
+   kal_uint8 second_out_amp[MAX_AUDIO_DEVICE_NUM][MAX_VOL_LEVEL];
+   kal_uint8 side[MAX_AUDIO_DEVICE_NUM][MAX_VOL_LEVEL];
+   kal_uint8 volume[MAX_AUDIO_DEVICE_NUM];
+} acoustic_gain_struct;
+
+
+/***************************************************************************** 
+* Keypad  Interface 
+*****************************************************************************/
+
+/* Define the keypad status. */
+typedef enum {
+    KEY_PRESSED        = 0   /* Keypad is pressed. */
+    ,KEY_RELEASED            /* Keypad is released. */
+    ,KEY_LONGPRESS           /* Keypad is longpressed. */
+    ,KEY_REPEATED            /* Keypad is repeated. */
+#ifdef TWO_KEY_ENABLE
+    ,KEY_PRESSED_TWOKEY      /* Two Keypad is pressed. */
+    ,KEY_RELEASED_TWOKEY     /* Two Keypad is released. */
+#endif   /*TWO_KEY_ENABLE*/
+}keypad_status_enum;
+
+
+/* Define the keypad code value. */
+typedef kal_uint8 keypad_code_enum;
+
+
+/***************************************************************************** 
+* RTC  Interface 
+*****************************************************************************/
+
+/* Define the RTC type. */
+typedef enum {
+    RTC_TIME_CLOCK_IND  = 0 , /* The time clock indication. */
+    RTC_ALARM_IND             /* The alarm indication */
+}rtc_type_enum;
+
+
+/* Define the type to setting RTC. */
+typedef enum {
+    RTC_SETTING_TYPE_DATETIME  = 0 , 
+    RTC_SETTING_TYPE_DATE          ,
+    RTC_SETTING_TYPE_TIME             
+}rtc_setting_type_enum;
+
+/* Define the RTC alarm id. */
+typedef kal_uint8 rtc_alarm_id_enum;
+#define RTC_ALARM1_IND     0 /* The alarm indication */
+#define RTC_ALARM2_IND     1 /* The alarm indication */
+#define RTC_ALARM3_IND     2 /* The alarm indication */
+#define MAX_ALARM_NUM      3
+
+/* Define the Alarm type */
+typedef enum {
+    RTC_ALARM_VIBRATOR  = 0x01 , 
+    RTC_ALARM_LED       = 0x02 , 
+    RTC_ALARM_SOUND     = 0x04 , 
+    RTC_ALARM_SILENT    = 0x08 
+}rtc_alarm_type_enum;
+
+
+/* Define the Alarm recurr */
+typedef enum {
+ RTC_ALARM_DAY1    = 0x01 ,
+ RTC_ALARM_DAY2    = 0x02 ,
+ RTC_ALARM_DAY3    = 0x04 ,
+ RTC_ALARM_DAY4    = 0x08 ,
+ RTC_ALARM_DAY5    = 0x10 ,
+ RTC_ALARM_DAY6    = 0x20 ,
+ RTC_ALARM_DAY7    = 0x40 ,
+ RTC_ALARM_DAY_ALL = 0x7F
+}rtc_alarm_recurr_enum;
+
+/* Define the Date/Time format type. */
+typedef enum {
+    DATE_DD_MMM_YYYY  = 1 
+/*
+    ,DATE_DD_MM_YY_H     
+    ,DATE_MM_DD_YY       
+    ,DATE_DD_MM_YY_S     
+    ,DATE_DD_MM_YY_P     
+    ,DATE_YYMMDD         
+    ,DATE_YY_MM_DD       
+*/
+
+    ,DATE_DD_MM_YYYY_S 	  = 8
+    ,DATE_MM_DD_YYYY_S		
+    ,DATE_YYYY_MM_DD_S		
+    ,DATE_YYYY_MM_DD_H		
+    ,DATE_MMM_DD_YYYY		
+}date_format_enum;
+
+
+#define   DATE_AUX_YY_MM_DD   1
+#define   DATE_AUX_YYYY_MM_DD 2
+
+
+typedef enum {
+    TIME_HH_MM_24 = 1 ,
+    TIME_HH_MM_12    
+}time_format_enum;
+
+
+/* Define the RTC clock/alarm format type. */
+/* Could be rtc_alarm_format_enum or rtc_clock_format_enum */
+typedef kal_uint8 rtc_format_enum; 
+
+
+/*Y:Year,M:Month,W:DOW,D:DOM,H:Hour,M:Min,S:SEC*/
+typedef enum {
+    DEVICE_AL_EN_None     = 0 ,
+    DEVICE_AL_EN_ChkS         ,
+    DEVICE_AL_EN_ChkMS        ,
+    DEVICE_AL_EN_ChkHMS       ,
+    DEVICE_AL_EN_ChkDHMS      ,
+    DEVICE_AL_EN_ChkWHMS      ,
+    DEVICE_AL_EN_ChkMDHMS     ,
+    DEVICE_AL_EN_ChkYMDHMS    ,
+    DEVICE_AL_EN_NoChange    
+}rtc_alarm_format_enum;
+
+
+typedef enum {
+    DEVICE_TC_EN_None    = 0 ,
+    DEVICE_TC_EN_ChkS        ,
+    DEVICE_TC_EN_ChkM        ,
+    DEVICE_TC_EN_ChkH        ,
+    DEVICE_TC_EN_ChkD        ,
+    DEVICE_TC_EN_ChkW        ,
+    DEVICE_TC_EN_ChkMon      ,
+    DEVICE_TC_EN_ChkY        ,
+    DEVICE_TC_EN_NoChange        
+}rtc_clock_format_enum;
+
+/* Define the alarm status. */
+typedef enum {
+    ALARM_STATUS_ON_POWEROFF_CHARING  =0 , /* The alarm is started when it's power off with charging status. */
+    ALARM_STATUS_ON_POWEROFF             , /* The alarm is started when it's power off status without charging. */
+    ALARM_STATUS_ON_POWERON                /* The alarm is started when it's power on status. */
+}alarm_status_enum;
+
+
+/* Define the calling status */
+typedef enum {
+  UEM_CALL_UNKNOW     = 0 ,
+  UEM_CALL_SETUP          , 
+  UEM_CALL_CONNECT        ,
+  UEM_CALL_DISCONNECT           
+}uem_call_state_enum;
+
+
+/***************************************************************************** 
+* GPIO / EINT  Interface 
+*****************************************************************************/
+
+/* Define the internal GPIO device type. */
+/* Becareful!!!! 
+   MAX_GPIO_DEVICE_NUM Will impact the size of uem_context_rmi_struct data item !!!!! */
+
+typedef enum {
+    GPIO_DEV_LED_MAINLCD   = 0 ,  /* Main LCD backlight */
+    GPIO_DEV_LED_SUBLCD        ,  /* Sub LCD backlight */
+    GPIO_DEV_LED_STATUS_1      ,  /* Status LED  R*/
+    GPIO_DEV_LED_STATUS_2      ,  /* Status LED  G*/
+    GPIO_DEV_LED_STATUS_3      ,  /* Status LED   B*/
+    GPIO_DEV_LED_KEY           ,  /* Keypad backlight */
+    GPIO_DEV_VIBRATOR          ,  /* Vibrator */
+    GPIO_DEV_FLASHLIGHT        ,  /* FlashLight */
+    GPIO_DEV_FTE_FEEDBACK_VIB  ,  /* Reserve_1 */
+    GPIO_DEV_LED_BACKLIGHT_DIMMING,  /* Reserve_2 */
+    GPIO_DEV_RESERVED3         ,  /* Reserve_3 */
+    GPIO_DEV_RESERVED4         ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED5         ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED6         ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED7         ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED8         ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED9         ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED10        ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED11        ,  /* Reserve_4 */
+    GPIO_DEV_RESERVED12        ,  /* Reserve_4 */
+    MAX_GPIO_DEVICE_NUM           
+}gpio_device_enum;
+
+
+/* Define the LED light level. For LCD bright level, Keypad backlight,  Flashlight */
+typedef enum {
+    LED_LIGHT_LEVEL0   =0  ,  /* turn off */
+    LED_LIGHT_LEVEL1       ,
+    LED_LIGHT_LEVEL2       ,
+    LED_LIGHT_LEVEL3       ,
+    LED_LIGHT_LEVEL4       ,
+    LED_LIGHT_LEVEL5       ,
+#if defined (WISDOM_MMI)
+    LED_LIGHT_LEVEL6       ,
+#endif
+    LED_LIGHT_LEVEL_MAX     
+}gpio_device_led_level_typedef;
+
+typedef enum
+{
+    /* LED status pattern */
+    LED_PATTERN_BEGIN,
+
+    LED_POWER_ON = LED_PATTERN_BEGIN,
+    LED_POWER_OFF,
+    LED_BATTERY_WARNING,
+    LED_BATTERY_LOW,
+    LED_Connect900,
+    LED_Connect1800,
+    LED_OnCharging,
+    LED_FullCharging,
+    LED_MessageIn,
+    LED_MessageRemind,
+    LED_Caller1,
+    LED_Caller2,
+    LED_Caller3,
+    LED_Caller4,
+    LED_Caller5,
+    LED_Caller6,
+    LED_LimitService,
+    LED_NoService,
+    LED_Connect1900,
+    LED_Roaming,
+    LED_PATTERN_END = 50,
+
+    /* lcd backlight pattern */
+    LCD_PATTERN_BEGIN,
+    LCD_PATTERN_1 = LCD_PATTERN_BEGIN,
+    LCD_PATTERN_2,
+    LCD_PATTERN_END = 100,
+
+    /* vibrator pattern */
+    VIB_PATTERN_BEGIN,
+    VIB_PATTERN_1 = VIB_PATTERN_BEGIN,
+    VIB_PATTERN_2,
+    VIB_PATTERN_3,  /* Incomming SMS */
+    VIB_PATTERN_4,  /* FTE feedback*/
+    VIB_PATTERN_A,
+    VIB_PATTERN_B,
+    VIB_PATTERN_C,
+    VIB_PATTERN_END = 150,
+
+    MAX_PATTERN_ID = VIB_PATTERN_END
+} PATTERN_ID;
+
+typedef enum
+{
+    PLAY_STOP,
+    PLAY_REPEAT,
+    PLAY_ONCE,
+    MAX_PATTERN_TYPE = PLAY_ONCE
+} PATTERN_TYPE;
+
+typedef struct
+{
+    kal_uint8 gpio_control[MAX_LED_GPIO];
+    kal_uint16 duration_time;   /* max time 65535 msec */
+} LED_PATTERN_STRUCT;
+
+typedef struct
+{
+    kal_uint8 gpio_control[MAX_LCD_BACKLIGHT];
+    kal_uint16 duration_time;   /* max time 65535 msec */
+} LCD_PATTERN_STRUCT;
+
+typedef struct
+{
+    kal_uint8 gpio_control[MAX_VIBRATOR];
+    kal_uint16 duration_time;   /* max time 65535 msec */
+} VIB_PATTERN_STRUCT;
+
+extern LCD_PATTERN_STRUCT *custom_get_lcd_patterns(PATTERN_ID lcd_pattern_id);
+extern LED_PATTERN_STRUCT *custom_get_led_patterns(PATTERN_ID led_pattern_id);
+extern VIB_PATTERN_STRUCT *custom_get_vib_patterns(PATTERN_ID vib_pattern_id);
+extern kal_bool uem_play_pattern(PATTERN_ID pattern_id, PATTERN_TYPE pattern_type);
+extern kal_uint8 custom_get_led_label(kal_uint8 id);
+extern kal_uint8 custom_get_lcd_label(kal_uint8 id);
+extern kal_uint8 custom_get_vib_label(kal_uint8 id);
+extern void custom_uem_set_rmi_lang_id(kal_uint8 *lang_id);
+extern kal_bool custom_uem_gpio_set_level(kal_uint8 gpio_dev_type, kal_uint8 gpio_dev_level);
+extern kal_uint8* custom_uem_get_equip_id(kal_uint8 equip_id);
+#ifdef __VIBRATION_SPEAKER_SUPPORT__
+typedef  void (*custom_uem_spkvib_func)(kal_bool);
+extern void custom_uem_set_spkvib_func(void (*func)(kal_bool));
+#endif
+extern kal_uint32 custom_uem_get_bl_level_num(void);
+extern kal_uint32 custom_uem_get_pwm_bl_mode(kal_uint8 gpio_dev_type);
+
+/* It is a time from backlight dimming to backlight drak*/
+#define GPIO_BRIGHTNESS_DIMMING_TIME    5000
+
+/* Define the Vibrator level. */
+typedef enum {
+    VIBRATOR_OFF  =0 ,  /* turn off */
+    VIBRATOR_ON         /* turn on */     
+}gpio_device_vibrator_level_typedef;
+
+
+typedef enum {
+    AUD_MODE_NORMAL   =0 , /* Normal Mode */
+    AUD_MODE_HEADSET     , /* HeadSet (Earphone) Mode */
+    AUD_MODE_LOUDSPK     , /* Loudspeaker Mode */
+    MAX_AUD_MODE_NUM     
+}audio_mode_enum;
+
+
+/* Define the external GPIO device interrupt. */
+typedef enum {
+    EXT_DEV_NONE      = 0  , /* None, if there is no external device */
+    EXT_DEV_HANDFREE       , /* Hand-free */
+    EXT_DEV_EARPHONE       , /* Earphone */
+    EXT_DEV_CARKIT         , /* Car-Kit */
+    EXT_DEV_KEY_1          , /* Send Key */
+    EXT_DEV_KEY_2          , /* Reserved */
+    EXT_DEV_UART           , 
+    EXT_DEV_CLAM_OPEN  = 8 ,
+    EXT_DEV_CLAM_CLOSE     , 
+    EXT_DEV_HOOK_ON	   , /* for FWP */
+    EXT_DEV_HOOK_OFF	   , /* for FWP */
+    EXT_DEV_AUX_DETECT_DONE	   , 
+    EXT_DEV_TRANSMITTER_HOLD_ON,
+    EXT_DEV_TRANSMITTER_PUT_DOWN,
+    MAX_EXT_DEVICE_NUM   
+}ext_device_enum;
+
+
+typedef enum {
+    AUD_LOOPBACK_MODE_NORMAL       =0 , /* Normal Mode */
+    AUD_LOOPBACK_MODE_HEADSET_PREFER  , /* Loudspk_prefer */		
+    AUD_LOOPBACK_MODE_HEADSET         , /* HeadSet (Earphone) Mode */
+    AUD_LOOPBACK_MODE_LOUDSPK         , /* Loudspeaker Mode */
+    MAX_AUD_LOOPBACK_MODE_NUM     
+}audio_loopback_mode_enum;
+
+
+/**************************************************************
+  **
+  **      Set UART Port Function Type
+  ** 
+  **************************************************************/
+typedef enum
+{
+   UART_NVRAM_LID_FUNC_UART_CONFIG,
+   UART_NVRAM_LID_FUNC_HIGH_SPEED_SIM,
+   UART_NVRAM_LID_FUNC_SWDBG,
+   UART_NVRAM_LID_FUNC_UART_POWER,
+   UART_NVRAM_LID_FUNC_TST_OUTPUT_MODE,
+   UART_NVRAM_LID_FUNC_USB_LOGGING
+} uart_nvram_lid_function_enum;
+
+
+/***************************************************************************** 
+* PMIC  Interface 
+*****************************************************************************/
+typedef enum
+{
+   PMIC_VBAT_STATUS,    /* Notify the battery voltage, BMT_VBAT_STATUS */
+   PMIC_CHARGER_IN,     /* Charger plug in, BMT_CHARGER_IN */
+   PMIC_CHARGER_OUT,    /* Charger plug out, BMT_CHARGER_OUT */
+   PMIC_OVERVOLPROTECT,    /* The voltage of battery is too high. BMT_OVERVOLPROTECT */
+   PMIC_OVERBATTEMP,    /* The temperature of battery is too high. BMT_OVERBATTEMP */
+   PMIC_LOWBATTEMP,     /* The temperature of battery is too low. BMT_LOWBATTEMP */
+   PMIC_OVERCHARGECURRENT, /* Charge current is too large. BMT_OVERCHARGECURRENT */
+   PMIC_CHARGE_COMPLETE,   /* Charge is completed. BMT_CHARGE_COMPLETE */
+   PMIC_INVALID_BATTERY,    /* invalid battery  BMT_INVALID_BAT*/
+   PMIC_INVALID_CHARGER,   /* invalid charger BMT_INVALID_CHARGER*/
+   PMIC_CHARGING_TIMEOUT, /* Bad battery BMT_CHARGE_TIMEOUT */ 
+   PMIC_LOWCHARGECURRENT, /* Charge current is too Low. BMT_LOWCHARGECURRENT */
+   PMIC_CHARGE_BAD_CONTACT, /* Charger Bad Contact */
+   PMIC_BATTERY_BAD_CONTACT, /* Battery Bad Contact */
+   PMIC_USB_CHARGER_IN,   /* Usb Charger plug in */
+   PMIC_USB_CHARGER_OUT,   /* Usb Charger plug out */
+   PMIC_USB_NO_CHARGER_IN,
+   PMIC_USB_NO_CHARGER_OUT,
+   PMIC_BATTERY_IN,
+   PMIC_BATTERY_OUT
+} pmic_status_enum;
+typedef pmic_status_enum battery_status_enum;
+
+typedef enum 
+{
+   BATTERY_LOW_POWEROFF = 0,
+   BATTERY_LOW_TX_PROHIBIT,
+   BATTERY_LOW_WARNING,
+   BATTERY_LEVEL_0,
+   BATTERY_LEVEL_1,
+   BATTERY_LEVEL_2,
+   BATTERY_LEVEL_3, 
+   BATTERY_LEVEL_4 = BATTERY_LEVEL_3, /* BATTERY_LEVEL_4 */
+   BATTERY_LEVEL_5 = BATTERY_LEVEL_3, /* BATTERY_LEVEL_5 */
+   BATTERY_LEVEL_6 = BATTERY_LEVEL_3, /* BATTERY_LEVEL_6 */
+   BATTERY_LEVEL_LAST = 9
+
+} battery_level_enum;
+
+
+/* Define the power on status. */
+typedef enum 
+{
+	POWER_ON_KEYPAD	     = 0 ,
+	POWER_ON_ALARM			 ,
+	POWER_ON_CHARGER_IN		 ,
+	POWER_ON_EXCEPTION		 ,
+	POWER_ON_USB			 ,
+	POWER_ON_UNINIT			 ,
+	POWER_ON_PRECHARGE	 = 8
+} power_on_status_enum;
+
+#define	POWERON(mode) (	(mode == POWER_ON_KEYPAD) || \
+									(mode == POWER_ON_ALARM) || \
+									(mode == POWER_ON_CHARGER_IN) ||\
+									(mode == POWER_ON_USB) ||\
+									(mode == POWER_ON_EXCEPTION) ||\
+									(mode == POWER_ON_PRECHARGE) )
+
+extern power_on_status_enum uem_get_power_on_mode(void);
+
+/* Define the POWER reset type. This is to use for the power restablish, while it's on charging or alarm status. */
+typedef enum
+{
+   NORMAL_RESET,
+   CHARGING_RESET,
+   ALARM_RESET,
+   WM_RESET
+} pmic_reset_type_enum;
+
+typedef enum
+{
+	PMIC_GET_CHR_STATE
+	,PMIC_GET_AC_USB
+	,PMIC_GET_LED_CONFIG
+	,PMIC_GET_RGB_DIM
+	,PMIC_GET_BL_DIM
+	,PMIC_GET_SPEAKER_STATE
+	,PMIC_GET_SPEAKER_GAIN
+	,PMIC_GET_MISC_LDO_STATE
+	,PMIC_READ_REG
+	,PMIC_WRITE_REG
+	,PMIC_CHR_ENABLE
+	,PMIC_CHR_CURRENT_CTRL
+	,PMIC_USB_CHR_ENABLE
+	,PMIC_LED_ENABLE
+	,PMIC_LED_CONFIG
+	,PMIC_RGB_DIM_CLK
+	,PMIC_CHR_PUMP_ENABLE
+	,PMIC_CHR_PUMP_CURRENT
+	,PMIC_BL_DIM_CLK
+	,PMIC_BL_DIV_BYPASS
+	,PMIC_SPEAKER_ENABLE
+	,PMIC_SPEAKER_GAIN
+	,PMIC_VIBRATOR_ENABLE
+	,PMIC_VIBRATOR_SEL
+	,PMIC_VMC_ENABLE
+	,PMIC_VMC_SEL
+	,PMIC_VASW_ENABLE
+	,PMIC_VASW_SEL
+	,PMIC_USB_REG_ENABLE
+	,PMIC_VBAT_ENABLE
+	,PMIC_ISENSE_ENABLE
+	,PMIC_BL_PWM
+	,PMIC_MAX_NUM
+}pmic_config_req_enum;
+
+/***************************************************************
+  **   FM Radio
+  ***************************************************************/
+typedef enum
+{
+    FM_RADIO_CMD_MONO = 0,
+    FM_RADIO_CMD_STEREO,
+    FM_RADIO_CMD_RSSI,
+    FM_RADIO_CMD_IF_COUNT,
+    FM_RADIO_CMD_RSSI_INFO
+}fm_radio_config_cmd_enum;
+
+typedef enum
+{
+    FM_RADIO_COMMON_DISABLE = 0,
+    FM_RADIO_COMMON_ENABLE,      /* in mono, only represent enable; in stereo, represent enable + sblend On */
+    FM_RADIO_COMMON_ENABLE_EXTRA   /* in stereo, represent enable + sblend Off */
+}fm_radio_common_state_enum;
+
+/***************************************************************
+  **   RF Test Tool -- GSM 
+  ***************************************************************/
+typedef enum
+{
+    RF_TEST_GSM_TX_BAND_850,
+    RF_TEST_GSM_TX_BAND_900,
+    RF_TEST_GSM_TX_BAND_1800,
+    RF_TEST_GSM_TX_BAND_1900
+}rf_test_gsm_tx_band_enum;
+  
+typedef enum
+{
+    RF_TEST_GSM_STOP,
+    RF_TEST_GSM_TX_TEST,
+    RF_TEST_GSM_RX_TEST,
+    RF_TEST_GSM_POWER_SCAN,
+    RF_TEST_GSM_TX_TEST_MULTI_SLOT,             
+    RF_TEST_GSM_RX_TEST_TWO_PATH,      //5
+    RF_TEST_GSM_GET_TX_POWER      //6
+}rf_test_gsm_req_enum;
+
+/***************************************************************
+  **   RF Test Tool -- WiFi 
+  ***************************************************************/
+
+typedef enum
+{
+    RF_TEST_WIFI_STOP,
+    RF_TEST_WIFI_TEST_MODE,
+    RF_TEST_WIFI_NORMAL_MODE,
+    RF_TEST_WIFI_TX_GET_DAC_OFFSET,
+    RF_TEST_WIFI_TX_OUTPUT_POWER,
+    RF_TEST_WIFI_TX_CARRIER_SUPP,
+    RF_TEST_WIFI_TX_LOCAL_FREQ,
+    RF_TEST_WIFI_TX_CONT_PKT,
+    RF_TEST_WIFI_RX_CONT_PKT,
+    RF_TEST_WIFI_POWER_SAVE,
+    RF_TEST_WIFI_REG_MCR32_WRITE,
+    RF_TEST_WIFI_REG_MCR32_READ,
+    RF_TEST_WIFI_REG_MCR16_WRITE,
+    RF_TEST_WIFI_REG_MCR16_READ,
+    RF_TEST_WIFI_REG_BBCR_WRITE,
+    RF_TEST_WIFI_REG_BBCR_READ,
+    RF_TEST_WIFI_REG_EEPROM_WRITE,
+    RF_TEST_WIFI_REG_EEPROM_READ,
+    RF_TEST_WIFI_REG_EFUSE_WRITE,
+    RF_TEST_WIFI_REG_EFUSE_READ
+}rf_test_wifi_req_enum;
+
+/***************************************************************************** 
+* Misc  Interface 
+*****************************************************************************/
+/* Indicator data type */
+typedef enum 
+{
+    IND_BATTCHG  = 0 ,
+    IND_SIGNAL       ,  
+    IND_SERVICE      ,  
+    IND_SOUNDER      ,  
+    IND_MESSAGE      ,  
+    IND_CALL         ,  
+    IND_VOX          ,  
+    IND_ROAM         ,  
+    IND_SMSFULL       
+} indicator_type_enum;
+
+
+/* Define the equipment to return the string mapping. */
+typedef enum 
+{
+    EQ_ME_MANUFACTURE_ID      = 0 ,
+    EQ_ME_MODEL_ID                ,
+    EQ_ME_REVISION_ID             ,
+    EQ_ME_SERIAL_NUMBER_ID        ,
+    EQ_ME_SERIAL_NUMBER_SIM2_ID   ,
+    EQ_ME_GLOBAL_OBJECT_ID        ,
+    EQ_ME_MANUFACTURE_INFO_ID     ,
+    EQ_ME_COMP_CAP_LIST_ID        ,
+    EQ_ME_SERIAL_NUMBER_SIM3_ID   ,
+    EQ_ME_SERIAL_NUMBER_SIM4_ID   ,
+    MAX_ME_ID_NUM                    
+} equip_id_enum;
+
+
+#define MAX_ME_ID_LEN               30
+
+
+/* Define the device process status. */
+typedef enum 
+{
+    DEV_OK                    = 0 , /* The device status is ok to process. */
+    DEV_FAIL                      , /* The device status is fail to process*/
+    DEV_FAIL_VM_NO_FREE_ENTRY     , /* voice mail fail cause */
+    DEV_FAIL_VM_BUFFER_FULL       ,
+    DEV_FAIL_VM_PLAY_NO_DATA     
+} dev_status_enum;
+
+
+/***************************************************************************** 
+* USB  Interface 
+*****************************************************************************/
+typedef enum 
+{
+    DEVUSB_DETECT_ACTION_UNKNOWN = 0 ,
+    DEVUSB_DETECT_ACTION_PLUGIN      , 
+    DEVUSB_DETECT_ACTION_PLUGOUT     ,
+    DEVUSB_DETECT_ACTION_USB_SUSPEND ,
+    DEVUSB_DETECT_ACTION_MAX_ID   
+} devusb_detect_action_enum;
+
+
+typedef enum 
+{
+    DEVUSB_CFG_ACTION_UNKNOWN     =	0 ,
+    DEVUSB_CFG_ACTION_CDC_ACM         ,
+    DEVUSB_CFG_ACTION_MASS_STORAGE    ,
+    DEVUSB_CFG_ACTION_MULTI_COM,
+    DEVUSB_CFG_ACTION_WEBCAM          ,
+    DEVUSB_CFG_ACTION_STOP_MS         ,
+    DEVUSB_CFG_ACTION_IRDBG           ,
+    DEVUSB_CFG_ACTION_PICTBRIGE       ,
+    DEVUSB_CFG_ACTION_MTP       ,	
+    DEVUSB_CFG_ACTION_STOP_MTP       ,	    
+    DEVUSB_CFG_ACTION_MAX_ID			  
+} devusb_cfg_action_enum;
+
+
+typedef enum 
+{
+    USB_SWITCH_PORT_APP_DATA     = 0 ,
+    USB_SWITCH_PORT_APP_DEBUG, 
+    USB_SWITCH_PORT_APP_NULL 
+} usb_switch_port_app_enum;
+
+#if (defined(MT6229) || defined(MT6227) || defined(MT6228) || defined(MT6225) || defined(MT6268T) || defined(MT6268H) || defined(MT6230) || defined(MT6227D) || defined(MT6223)  || defined(MT6226D) || defined(MT6223P)) 
+#if (defined(MT6227) || defined(MT6227D)  || defined(MT6226D))
+typedef enum
+{
+
+    EM_SWDBG_OFF,
+    EM_SWDBG_DSP_L1_PS,
+    EM_SWDBG_L1_PS,
+    EM_SWDBG_MCU,
+    EM_SWDBG_RESET,
+    EM_SWDBG_MAX
+} EM_SWDBG_ITEM;
+
+#elif defined(MT6228)
+typedef enum
+{
+
+    EM_SWDBG_OFF,
+    EM_SWDBG_DSP_L1_PS,
+    EM_SWDBG_L1_PS,
+    EM_SWDBG_MCU,
+    EM_SWDBG_MCU_DSP,
+    EM_SWDBG_RESET,
+    EM_SWDBG_MAX
+} EM_SWDBG_ITEM;
+
+#else 
+typedef enum
+{
+
+    EM_SWDBG_OFF,
+    EM_SWDBG_DSP_L1,
+    EM_SWDBG_DSP_PS,
+    EM_SWDBG_L1_PS,
+    EM_SWDBG_MCU,
+    EM_SWDBG_MCU_DSP,
+    EM_SWDBG_RESET,
+    EM_SWDBG_MAX
+} EM_SWDBG_ITEM;
+
+#endif 
+#endif /* #if (defined(MT6229) || defined(MT6227) || defined(MT6228) || defined(MT6225) || defined(MT6268T)|| defined(MT6268H) || defined(MT6230) || defined(MT6227D))  */ 
+
+typedef enum
+{
+    EM_USB_LOGGING_NONE,
+#ifdef __DSPIRDBG__    
+    EM_USB_LOGGING_IRDBG,
+#endif
+
+
+    EM_USB_LOGGING_MAX
+} EM_USB_LOGGING_ITEM;
+
+
+//#if defined(MT6223PMU)
+/***************************************************************
+  **   PMU6223
+  ***************************************************************/
+/* Enum */
+typedef enum
+{
+    MT6223PMU_READ_REG
+    ,MT6223PMU_WRITE_REG
+    ,MT6223PMU_GET_CHR_STATUS
+    ,MT6223PMU_SET_CHR_GET_CHR_EN
+    ,MT6223PMU_SET_CHR_SET_CHR_EN
+    ,MT6223PMU_SET_CHR_GET_CHR_CUR
+    ,MT6223PMU_SET_CHR_SET_CHR_CUR    
+    ,MT6223PMU_SET_CHR_GET_CHR_CUR_OFFSET
+    ,MT6223PMU_SET_CHR_SET_CHR_CUR_OFFSET
+//    ,MT6223PMU_SET_CHR_GET_OV_TH_FREEZE
+//    ,MT6223PMU_SET_CHR_SET_OV_TH_FREEZE
+    ,MT6223PMU_SET_CHR_GET_CV_THRESHOLD
+    ,MT6223PMU_SET_CHR_SET_CV_THRESHOLD
+    ,MT6223PMU_GET_DRIVER_INFO
+    ,MT6223PMU_SET_DRIVER_INFO
+    ,MT6223PMU_GET_LDO_VOLTAGE
+    ,MT6223PMU_SET_LDO_VOLTAGE
+    ,MT6223PMU_GET_LDO_ENABLE
+    ,MT6223PMU_SET_LDO_ENABLE
+    ,MT6223PMU_GET_BIAS_CURRENT
+    ,MT6223PMU_SET_BIAS_CURRENT    
+    
+	,MT6223PMU_MAX_NUM
+}EM_MT6223PMU_REQ_ENUM;
+
+
+typedef enum 
+{
+   PMU6223_CHR_STATE_CHR_DET = 0,   
+   PMU6223_CHR_STATE_BAT_ON,
+   PMU6223_CHR_STATE_CV,
+   PMU6223_CHR_STATE_CHR_OVP,
+   PMU6223_CHR_STATE_CHARGING,
+   PMU6223_CHR_STATE_MAX
+}PMU6223_CHR_STATE;
+
+typedef enum 
+{
+   PMU6223_CHR_CUR_OFFSET_P1 = 0,   
+   PMU6223_CHR_CUR_OFFSET_P2,
+   PMU6223_CHR_CUR_OFFSET_M2,
+   PMU6223_CHR_CUR_OFFSET_M1
+}PMU6223_CHR_CUR_OFFSET;
+
+typedef enum 
+{
+   PMU6223_DRIVE_INFO_VIB = 0,   
+   PMU6223_DRIVE_INFO_LED
+}PMU6223_DRIVE_INFO;
+
+typedef enum 
+{
+   PMU6223_LDO_VOLTAGE_VRF = 0,   
+   PMU6223_LDO_VOLTAGE_VCORE,
+   PMU6223_LDO_VOLTAGE_VM,
+   PMU6223_LDO_VOLTAGE_VIO,
+   PMU6223_LDO_VOLTAGE_VA,
+   PMU6223_LDO_VOLTAGE_VTCXO,
+   PMU6223_LDO_VOLTAGE_VSIM,
+   PMU6223_LDO_VOLTAGE_VRTC1
+//   PMU6223_LDO_VOLTAGE_VRTC2
+}PMU6223_LDO_VOLTAGE_TYPE;
+
+typedef enum 
+{
+   PMU6223_LDO_ENABLE_VRF = 0,   
+   PMU6223_LDO_ENABLE_VTCXO,
+   PMU6223_LDO_ENABLE_VSIM
+}PMU6223_LDO_ENABLE;
+
+typedef enum 
+{
+   PMU6223_BIAS_CALIBRATE_VRF = 0,   
+   PMU6223_BIAS_CALIBRATE_VM,
+   PMU6223_BIAS_CALIBRATE_VIO,
+   PMU6223_BIAS_CALIBRATE_VSIM,
+   PMU6223_BIAS_CALIBRATE_VCORE_CAL
+}PMU6223_BIAS_CALIBRATE_TYPE;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif /* if 0 */
+
+/***************************************************************
+  **   PMU6238
+  ***************************************************************/
+/* Enum */
+typedef enum
+{
+     MT6238PMU_READ_REG
+    ,MT6238PMU_WRITE_REG
+    ,MT6238PMU_GET_CHR_STATUS     
+    ,MT6238PMU_SET_CHR_GET_CHR_EN
+    ,MT6238PMU_SET_CHR_SET_CHR_EN
+    ,MT6238PMU_SET_CHR_GET_CHR_CUR
+    ,MT6238PMU_SET_CHR_SET_CHR_CUR    
+    ,MT6238PMU_SET_CHR_GET_CHR_CUR_OFFSET
+    ,MT6238PMU_SET_CHR_SET_CHR_CUR_OFFSET
+    ,MT6238PMU_SET_CHR_GET_OV_TH_FREEZE    
+    ,MT6238PMU_SET_CHR_SET_OV_TH_FREEZE
+    ,MT6238PMU_SET_CHR_GET_CV_THRESHOLD
+    ,MT6238PMU_SET_CHR_SET_CV_THRESHOLD
+    ,MT6238PMU_GET_DRIVER_INFO
+    ,MT6238PMU_SET_DRIVER_INFO
+    ,MT6238PMU_GET_LDO_VOL_SEL_VBT    /* MC */
+    ,MT6238PMU_SET_LDO_VOL_SEL_VBT    /* MC */
+    ,MT6238PMU_GET_LDO_VOL_SEL_VCAMD  /* CAMERA */
+    ,MT6238PMU_SET_LDO_VOL_SEL_VCAMD  /* CAMERA */
+    ,MT6238PMU_GET_LDO_VOL_SEL_VCAMA  /* SW_A */
+    ,MT6238PMU_SET_LDO_VOL_SEL_VCAMA  /* SW_A */
+    ,MT6238PMU_GET_LDO_VOL_SEL_VSIM
+    ,MT6238PMU_SET_LDO_VOL_SEL_VSIM
+    ,MT6238PMU_GET_LDO_VOLTAGE_CAL
+    ,MT6238PMU_SET_LDO_VOLTAGE_CAL
+    ,MT6238PMU_GET_LDO_ENABLE
+    ,MT6238PMU_SET_LDO_ENABLE
+    ,MT6238PMU_GET_DC_CONTROL
+    ,MT6238PMU_SET_DC_CONTROL
+    ,MT6238PMU_GET_BIAS_CURRENT
+    ,MT6238PMU_SET_BIAS_CURRENT    
+    
+	,MT6238PMU_MAX_NUM
+}EM_MT6238PMU_REQ_ENUM;
+
+typedef enum
+{
+    EM_MT6238PMU_OV_TH_FREEZE_AUTO = 0,
+    EM_MT6238PMU_OV_TH_FREEZE_FIXED
+} EM_MT6238PMU_OV_TH_FREEZE_TYPE;
+
+
+typedef enum 
+{
+   PMU6238_CHR_CUR_OFFSET_P1 = 0,   
+   PMU6238_CHR_CUR_OFFSET_P2,
+   PMU6238_CHR_CUR_OFFSET_M2,
+   PMU6238_CHR_CUR_OFFSET_M1
+}PMU6238_CHR_CUR_OFFSET;
+
+typedef enum 
+{
+   PMU6238_DRIVE_INFO_VIB = 0,   
+   PMU6238_DRIVE_INFO_LED
+}PMU6238_DRIVE_INFO;
+
+typedef enum 
+{
+   PMU6238_LDO_VOLTAGE_VCORE = 0,    /* FBADJ */
+   PMU6238_LDO_VOLTAGE_VCORE_SLEEP,  /* FBADJ_SLEEP */
+   PMU6238_LDO_VOLTAGE_VRF,   
+   PMU6238_LDO_VOLTAGE_VM,
+   PMU6238_LDO_VOLTAGE_VIO,
+   PMU6238_LDO_VOLTAGE_VA,
+   PMU6238_LDO_VOLTAGE_VTCXO,
+   PMU6238_LDO_VOLTAGE_VSIM,
+   PMU6238_LDO_VOLTAGE_VRTC1,
+   PMU6238_LDO_VOLTAGE_VRTC2,
+   PMU6238_LDO_VOLTAGE_VUSB,   
+   PMU6238_LDO_VOLTAGE_VBT,          /* VMC */
+   PMU6238_LDO_VOLTAGE_VCAMD,        /* VCAMERA */
+   PMU6238_LDO_VOLTAGE_VCAMA,        /* VSW_A */
+   PMU6238_LDO_VOLTAGE_VSIM2
+}PMU6238_LDO_VOLTAGE_TYPE;
+
+
+typedef enum 
+{
+   PMU6238_LDO_ENABLE_VRF_ON_SEL = 0,   
+   PMU6238_LDO_ENABLE_VRF_EN, 
+   PMU6238_LDO_ENABLE_VTCXO_ON_SEL,
+   PMU6238_LDO_ENABLE_VTCXO_EN,
+   PMU6238_LDO_ENABLE_VUSB,
+   PMU6238_LDO_ENABLE_VBT,          /* VMC */
+   PMU6238_LDO_ENABLE_VCAM_D,       /* CAMERA */
+   PMU6238_LDO_ENABLE_VCAM_A,       /* SW_A */
+   PMU6238_LDO_ENABLE_VSIM1,
+   PMU6238_LDO_ENABLE_VSIM2
+}PMU6238_LDO_ENABLE;
+
+
+typedef enum 
+{
+   PMU6238_DC_CONTROL_GAINP = 0,   
+   PMU6238_DC_CONTROL_GAIN,
+   PMU6238_DC_CONTROL_GAIND,
+   PMU6238_DC_CONTROL_DIR_CTRL_EN,
+   PMU6238_DC_CONTROL_DCVCK_SEL,
+   PMU6238_DC_CONTROL_ISEL,
+   PMU6238_DC_CONTROL_ADJCKSEL,
+   PMU6238_DC_CONTROL_MODESET,
+   PMU6238_DC_CONTROL_MODEEN,
+   PMU6238_DC_CONTROL_PFMSEL_0_3,
+   PMU6238_DC_CONTROL_PFMSEL_4_6,
+   PMU6238_DC_CONTROL_IASEL,
+   PMU6238_DC_CONTROL_SLEW_CTRL
+}PMU6238_DC_CONTROL_TYPE;
+
+typedef enum 
+{
+   PMU6238_BIAS_CALIBRATE_VRF = 0,   
+   PMU6238_BIAS_CALIBRATE_VM,
+   PMU6238_BIAS_CALIBRATE_VIO,
+   PMU6238_BIAS_CALIBRATE_VA,
+   PMU6238_BIAS_CALIBRATE_VTCXO,
+   PMU6238_BIAS_CALIBRATE_VSIM,
+   PMU6238_BIAS_CALIBRATE_VUSB,
+   PMU6238_BIAS_CALIBRATE_VBT,
+   PMU6238_BIAS_CALIBRATE_VCAMD,
+   PMU6238_BIAS_CALIBRATE_VCAMA,
+   PMU6238_BIAS_CALIBRATE_VSIM2
+}PMU6238_BIAS_CALIBRATE_TYPE;
+
+/***************************************************************
+  **   PMU6326
+  ***************************************************************/
+/* Enum */
+typedef enum
+{
+     MT6326PMU_READ_REG
+    ,MT6326PMU_WRITE_REG    
+	,MT6326PMU_MAX_NUM
+}EM_MT6326PMU_REQ_ENUM;
+
+/***************************************************************
+  **   PMU6253
+  ***************************************************************/
+/* Enum */
+typedef enum
+{
+     MT6253PMU_READ_REG
+    ,MT6253PMU_WRITE_REG
+    ,MT6253PMU_MAX_NUM    
+}EM_MT6253PMU_REQ_ENUM;
+
+#endif  /* _DEVICE_H */
+
+
