[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/driver/devdrv/dcm/dcm_sw.h b/mcu/interface/driver/devdrv/dcm/dcm_sw.h
new file mode 100644
index 0000000..8866d6c
--- /dev/null
+++ b/mcu/interface/driver/devdrv/dcm/dcm_sw.h
@@ -0,0 +1,98 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   dcm_sw.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   This file defines DCM SW interface
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __DCM_SW_H__
+#define __DCM_SW_H__
+
+#if defined(__MTK_TARGET__)
+
+  #if defined(__MD93__)
+      #include "dcm_sw_gen93.h"
+  #elif defined(__MD95__)
+      #include "dcm_sw_gen95.h"     
+  #elif defined(__MD97__)
+      #include "dcm_sw_gen97.h"   
+  #elif defined(__MD97P__)
+      #include "dcm_sw_gen97p.h"       
+  #else
+      #error "ERROR in DCM_SW define (dcm_sw.h)"
+  #endif
+
+#endif /* __MTK_TARGET__ */ 
+
+#endif /* __DCM_SW_H__ */
diff --git a/mcu/interface/driver/devdrv/dcm/dcm_sw_gen93.h b/mcu/interface/driver/devdrv/dcm/dcm_sw_gen93.h
new file mode 100644
index 0000000..6fb2aa4
--- /dev/null
+++ b/mcu/interface/driver/devdrv/dcm/dcm_sw_gen93.h
@@ -0,0 +1,139 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   dcm_sw.h
+ *
+ * Project:
+ * --------
+ *   UMOLYA
+ *
+ * Description:
+ * ------------
+ *   This file defines DCM SW interface
+ *
+ * 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!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __DCM_SW_GEN93_H__
+#define __DCM_SW_GEN93_H__
+
+#if defined(__MTK_TARGET__)
+
+typedef enum {
+    DCM_IA_DCM_OFF,
+    DCM_IA_DCM_ONLY_CLK_DISABLE,
+    DCM_IA_DCM_MEMSLP_AND_CLK_DISABLE,        
+} DCM_IA_DCM_CONTROL_MODE;
+
+typedef enum {
+    DCM_LOCK_UNLOCK_MODULE_AT_COMMAND = 0,
+    DCM_LOCK_UNLOCK_MODULE_END,        
+} DCM_LOCK_UNLOCK_MODULE;
+
+/* DCM procedure to be executed in idle task */
+void DCM_Init( void );
+
+/* General DCM lock/unlock interface */
+kal_bool DCM_Query_Status(void);
+void DCM_SW_Lock(DCM_LOCK_UNLOCK_MODULE module);
+void DCM_SW_Unlock(DCM_LOCK_UNLOCK_MODULE module);
+
+void DCM_IA_DCM_Control(kal_bool enable, DCM_IA_DCM_CONTROL_MODE mode);
+void DCM_IA_DCM_Core1_Memslp_Path_Control(kal_bool enable);
+
+/* For LPM debugging */
+void DCM_Service_Change_LPM_Setting(kal_bool lpm_32K, kal_uint32 ext_src_sel, kal_uint32 src_sel);
+
+/* --------- Below Function nouse, for backward compatible. */
+kal_uint8 DCM_GetHandle(void);
+void DCM_Enable(kal_uint8 handle);
+void DCM_Disable(kal_uint8 handle);
+/* --------- Above Function nouse, for backward compatible. */
+
+#if defined(__MAUI_BASIC__)/* Disable DCM function on BASIC load for bring up. */
+//#define DCM_SUPPORT
+#else/* Enable DCM function on other load. */
+#define DCM_SUPPORT
+#endif
+
+//#define DCM_LPM_ENABLE /* Not supported in official load!! */
+
+#endif /* __MTK_TARGET__ */ 
+
+#endif /* __DCM_SW_GEN93_H__ */
diff --git a/mcu/interface/driver/devdrv/dcm/dcm_sw_gen95.h b/mcu/interface/driver/devdrv/dcm/dcm_sw_gen95.h
new file mode 100644
index 0000000..ca699e5
--- /dev/null
+++ b/mcu/interface/driver/devdrv/dcm/dcm_sw_gen95.h
@@ -0,0 +1,152 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   dcm_sw.h
+ *
+ * Project:
+ * --------
+ *   UMOLYA
+ *
+ * Description:
+ * ------------
+ *   This file defines DCM SW interface
+ *
+ * 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!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __DCM_SW_GEN95_H__
+#define __DCM_SW_GEN95_H__
+
+#if defined(__MTK_TARGET__)
+
+typedef enum {
+    DCM_Lv2_IA_DCM_OFF = 0,
+    DCM_Lv2_IA_DCM_ONLY_CLK_DISABLE,
+    DCM_Lv2_IA_DCM_MEMSLP_AND_CLK_DISABLE,        
+} DCM_Lv2_IA_DCM_CONTROL_MODE;
+
+typedef enum {    
+    DCM_Lv3_IA_DCM_IMG_PATH = 0,
+    DCM_Lv3_IA_DCM_MTK_PATH = 1,     
+} DCM_Lv3_IA_DCM_CONTROL_PATH;
+
+typedef enum {    
+    DCM_Lv3_SFU_DCM = 0,
+    DCM_Lv3_SPU_DCM = 1, 
+    DCM_Lv3_SFU_SPU_WRAPPER_DCM = 2,
+    DCM_Lv3_SFU_SPU_ALL_DCM = 3    
+} DCM_Lv3_SFU_SPU_DCM_CONTROL;
+
+typedef enum {
+    DCM_LOCK_UNLOCK_MODULE_AT_COMMAND = 0,
+    DCM_LOCK_UNLOCK_MODULE_END,        
+} DCM_LOCK_UNLOCK_MODULE;
+
+/* DCM procedure to be executed in idle task */
+void DCM_Init( void );
+
+/* General DCM lock/unlock interface */
+kal_bool DCM_Query_Status(void);
+void DCM_SW_Lock(DCM_LOCK_UNLOCK_MODULE module);
+void DCM_SW_Unlock(DCM_LOCK_UNLOCK_MODULE module);
+
+void DCM_Lv2_IA_DCM_Control(kal_bool enable, DCM_Lv2_IA_DCM_CONTROL_MODE mode);
+void DCM_Lv2_IA_DCM_Core_Memslp_Path_Control(kal_bool enable, kal_uint32 core_id);
+void DCM_Lv2_IA_DCM_Mask_WakeUp_Source_In_GCR();
+void DCM_Lv3_SFU_SPU_DCM_Control(DCM_Lv3_SFU_SPU_DCM_CONTROL module, kal_bool enable);
+void DCM_Lv3_IA_DCM_Control(kal_bool enable, DCM_Lv3_IA_DCM_CONTROL_PATH path);
+
+/* For debugging only. */
+void DCM_Lv3_IA_CM2_DCM_Mon_Control(kal_bool enable);
+void DCM_Lv3_IA_CM2_DCM_Mon_Reset();
+kal_uint32 DCM_Lv3_IA_CM2_DCM_Mon_Status_Get();
+void DCM_Lv3_IA_CORE_DCM_Mon_Control(kal_bool enable);
+void DCM_Lv3_IA_CORE_DCM_Mon_Reset();
+kal_uint32 DCM_Lv3_IA_CORE_DCM_Mon_Status_Get();
+
+/* For LPM debugging */
+void DCM_Service_Change_LPM_Setting(kal_bool lpm_32K, kal_uint32 ext_src_sel, kal_uint32 src_sel);
+
+#if defined(__MAUI_BASIC__)/* Disable DCM function on BASIC load for bring up. */
+//#define DCM_SUPPORT
+#else/* Enable DCM function on other load. */
+#define DCM_SUPPORT
+#endif
+
+//#define DCM_LPM_ENABLE /* Not supported in official load!! */
+
+#endif /* __MTK_TARGET__ */ 
+
+#endif /* __DCM_SW_GEN95_H__ */
diff --git a/mcu/interface/driver/devdrv/dcm/dcm_sw_gen97.h b/mcu/interface/driver/devdrv/dcm/dcm_sw_gen97.h
new file mode 100644
index 0000000..112bef0
--- /dev/null
+++ b/mcu/interface/driver/devdrv/dcm/dcm_sw_gen97.h
@@ -0,0 +1,167 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   dcm_sw_gen97.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   This file defines DCM SW interface
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __DCM_SW_GEN97_H__
+#define __DCM_SW_GEN97_H__
+
+#if defined(__MTK_TARGET__)
+
+typedef enum {
+    DCM_Lv2_SHAOLIN_DCM_OFF = 0,
+    DCM_Lv2_SHAOLIN_DCM_ONLY_CLK_DISABLE,
+    DCM_Lv2_SHAOLIN_DCM_MEMSLP_AND_CLK_DISABLE,        
+} DCM_Lv2_SHAOLIN_DCM_CONTROL_MODE;
+
+typedef enum {    
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY0 = 0,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY1,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY2,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY3,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY4,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY5,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY6,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY7,    
+} DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY;
+
+typedef enum {    
+    DCM_Lv3_SFU_DCM = 0,
+    DCM_Lv3_SPU_DCM = 1, 
+    DCM_Lv3_SFU_SPU_WRAPPER_DCM = 2,
+    DCM_Lv3_SFU_SPU_ALL_DCM = 3    
+} DCM_Lv3_SFU_SPU_DCM_CONTROL;
+
+typedef enum {
+    DCM_LOCK_UNLOCK_MODULE_AT_COMMAND = 0,
+    DCM_LOCK_UNLOCK_MODULE_END,        
+} DCM_LOCK_UNLOCK_MODULE;
+
+/* DCM procedure to be executed in idle task */
+void DCM_Init( void );
+
+/* General DCM lock/unlock interface */
+kal_bool DCM_Query_Status(void);
+void DCM_SW_Lock(DCM_LOCK_UNLOCK_MODULE module);
+void DCM_SW_Unlock(DCM_LOCK_UNLOCK_MODULE module);
+
+void DCM_Lv2_SHAOLIN_DCM_Control(kal_bool enable, DCM_Lv2_SHAOLIN_DCM_CONTROL_MODE mode);
+void DCM_Lv2_SHAOLIN_DCM_Core_Memslp_Path_Control(kal_bool enable, kal_uint32 core_id);
+void DCM_Lv2_SHAOLIN_DCM_Lv2Cache_Memslp_Control(kal_bool enable, DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY way);
+void DCM_Lv2_SHAOLIN_DCM_Mask_WakeUp_Source_In_GCR();
+void DCM_Lv3_SFU_SPU_DCM_Control(DCM_Lv3_SFU_SPU_DCM_CONTROL module, kal_bool enable);
+void DCM_Lv3CACHE_DCM_Control(kal_bool enable);
+void DCM_Lv3_SHAOLIN_DCM_Control(kal_bool enable);
+
+/* For debugging only. */
+void DCM_Lv3_SHAOLIN_CM2_DCM_Mon_Control(kal_bool enable);
+void DCM_Lv3_SHAOLIN_CM2_DCM_Mon_Reset();
+kal_uint32 DCM_Lv3_SHAOLIN_CM2_DCM_Mon_Status_Get();
+void DCM_Lv3_SHAOLIN_CORE_DCM_Mon_Control(kal_bool enable);
+void DCM_Lv3Cache_DCM_Mon_Reset();
+kal_uint32 DCM_Lv3_SHAOLIN_CORE_DCM_Mon_Status_Get();
+void DCM_Lv3_SHAOLIN_CORE_DCM_Mon_Reset();
+kal_uint32 DCM_Lv3Cache_DCM_Mon_Status_Get();
+
+/* For LPM debugging */
+void LPM_Init(void);
+void LPM_Start(void);
+void LPM_Stop(void);
+void LPM_Print_and_Update_Setting(kal_uint32 vpe_id, kal_uint32 OST_ReadyToSlept);
+void LPM_Change_Setting(kal_bool lpm_32K, kal_uint32 ext_src_sel, kal_uint32 src_sel);
+
+#if defined(__MAUI_BASIC__)/* Disable DCM function on BASIC load for bring up. */
+//#define DCM_SUPPORT
+#else/* Enable DCM function on other load. */
+#define DCM_SUPPORT
+#endif
+
+//#define LV2_DCM_MEMSLP_ENABLE /* Disable it to avoid IOCU access 5us delay and reduce coding effort */
+
+//#define DCM_LPM_ENABLE /* Not supported in official load!! */
+
+#endif /* __MTK_TARGET__ */ 
+
+#endif /* __DCM_SW_GEN97_H__ */
diff --git a/mcu/interface/driver/devdrv/dcm/dcm_sw_gen97p.h b/mcu/interface/driver/devdrv/dcm/dcm_sw_gen97p.h
new file mode 100644
index 0000000..f9ea7d0
--- /dev/null
+++ b/mcu/interface/driver/devdrv/dcm/dcm_sw_gen97p.h
@@ -0,0 +1,148 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   dcm_sw_gen97p.h
+ *
+ * Project:
+ * --------
+ *   VMOLY
+ *
+ * Description:
+ * ------------
+ *   This file defines DCM SW interface
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __DCM_SW_GEN97P_H__
+#define __DCM_SW_GEN97P_H__
+
+#if defined(__MTK_TARGET__)
+
+typedef enum {
+    DCM_Lv2_SHAOLIN_DCM_OFF = 0,
+    DCM_Lv2_SHAOLIN_DCM_ONLY_CLK_DISABLE,
+    DCM_Lv2_SHAOLIN_DCM_MEMSLP_AND_CLK_DISABLE,        
+} DCM_Lv2_SHAOLIN_DCM_CONTROL_MODE;
+
+typedef enum {    
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY0 = 0,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY1,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY2,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY3,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY4,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY5,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY6,
+    DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY7,    
+} DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY;
+
+typedef enum {    
+    DCM_Lv3_SFU_DCM = 0,
+    DCM_Lv3_SPU_DCM = 1, 
+    DCM_Lv3_SFU_SPU_WRAPPER_DCM = 2,
+    DCM_Lv3_SFU_SPU_ALL_DCM = 3    
+} DCM_Lv3_SFU_SPU_DCM_CONTROL;
+
+typedef enum {
+    DCM_LOCK_UNLOCK_MODULE_AT_COMMAND = 0,
+    DCM_LOCK_UNLOCK_MODULE_END,        
+} DCM_LOCK_UNLOCK_MODULE;
+
+/* DCM procedure to be executed in idle task */
+void DCM_Init( void );
+
+/* General DCM lock/unlock interface */
+kal_bool DCM_Query_Status(void);
+void DCM_SW_Lock(DCM_LOCK_UNLOCK_MODULE module);
+void DCM_SW_Unlock(DCM_LOCK_UNLOCK_MODULE module);
+
+void DCM_Lv2_SHAOLIN_DCM_Control(kal_bool enable, DCM_Lv2_SHAOLIN_DCM_CONTROL_MODE mode);
+void DCM_Lv2_SHAOLIN_DCM_Core_Memslp_Path_Control(kal_bool enable, kal_uint32 core_id);
+void DCM_Lv2_SHAOLIN_DCM_Lv2Cache_Memslp_Control(kal_bool enable, DCM_Lv2_SHAOLIN_DCM_Lv2CACHE_WAY way);
+void DCM_Lv2_SHAOLIN_DCM_Mask_WakeUp_Source_In_GCR();
+void DCM_Lv3_SFU_SPU_DCM_Control(DCM_Lv3_SFU_SPU_DCM_CONTROL module, kal_bool enable);
+void DCM_Lv3CACHE_DCM_Control(kal_bool enable);
+void DCM_Lv3_SHAOLIN_DCM_Control(kal_bool enable);
+
+/* For debugging only. */
+void DCM_Lv3_SHAOLIN_CM2_DCM_Mon_Control(kal_bool enable);
+void DCM_Lv3_SHAOLIN_CM2_DCM_Mon_Reset();
+kal_uint32 DCM_Lv3_SHAOLIN_CM2_DCM_Mon_Status_Get();
+void DCM_Lv3_SHAOLIN_CORE_DCM_Mon_Control(kal_bool enable);
+void DCM_Lv3Cache_DCM_Mon_Reset();
+kal_uint32 DCM_Lv3_SHAOLIN_CORE_DCM_Mon_Status_Get();
+void DCM_Lv3_SHAOLIN_CORE_DCM_Mon_Reset();
+kal_uint32 DCM_Lv3Cache_DCM_Mon_Status_Get();
+
+/* For LPM debugging */
+void LPM_Init(void);
+void LPM_Start(void);
+void LPM_Stop(void);
+void LPM_Print_and_Update_Setting(kal_uint32 vpe_id, kal_uint32 OST_ReadyToSlept);
+void LPM_Change_Setting(kal_bool lpm_32K, kal_uint32 ext_src_sel, kal_uint32 src_sel);
+
+#if defined(__MAUI_BASIC__)/* Disable DCM function on BASIC load for bring up. */
+//#define DCM_SUPPORT
+#else/* Enable DCM function on other load. */
+//#define DCM_SUPPORT
+#endif
+
+//#define LV2_DCM_MEMSLP_ENABLE /* Disable it to avoid IOCU access 5us delay and reduce coding effort */
+
+//#define DCM_LPM_ENABLE /* Not supported in official load!! */
+
+#endif /* __MTK_TARGET__ */ 
+
+#endif /* __DCM_SW_GEN97P_H__ */