[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/custom/driver/audio/MT2735_IVT/DEFAULT/temp.txt b/mcu/custom/driver/audio/MT2735_IVT/DEFAULT/temp.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/mcu/custom/driver/audio/MT2735_IVT/DEFAULT/temp.txt
diff --git a/mcu/custom/driver/audio/_Default_BB/MT2735/AudCoeff.h b/mcu/custom/driver/audio/_Default_BB/MT2735/AudCoeff.h
new file mode 100644
index 0000000..005ca96
--- /dev/null
+++ b/mcu/custom/driver/audio/_Default_BB/MT2735/AudCoeff.h
@@ -0,0 +1,469 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * AudCoeff.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *    This file contains `vendor' defined logical data items stored in NVRAM.
+ *    These logical data items are used in object code of Protocol Stack software.
+ *
+ *    As for customizable logical data items, they are defined in nvram_user_config.c
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __AUDCOEFF_H__
+#define __AUDCOEFF_H__
+
+/******************** INPUT FIR ********************************/
+
+#define SPEECH_INPUT_FIR_COEFF_NORMAL_DEFAULT \
+   { /* 0: Input FIR coefficients for 2G/3G Normal mode */ \
+    32767,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0  \
+   }
+
+#define SPEECH_INPUT_FIR_COEFF_HEADSET_DEFAULT \
+   { /* 1: Input FIR coefficients for 2G/3G/VoIP Headset mode */ \
+    32767,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0  \
+   }
+
+#define SPEECH_INPUT_FIR_COEFF_HANDFREE_DEFAULT \
+   { /* 2: Input FIR coefficients for 2G/3G Handfree mode */ \
+    32767,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0  \
+   }
+
+#define SPEECH_INPUT_FIR_COEFF_BT_DEFAULT \
+   { /* 3: Input FIR coefficients for 2G/3G/VoIP BT mode */ \
+    32767,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0  \
+   }
+
+#define SPEECH_INPUT_FIR_COEFF_VOIP_NORMAL_DEFAULT \
+   { /* 4: Input FIR coefficients for VoIP Normal mode */ \
+    32767,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0  \
+   }
+
+#define SPEECH_INPUT_FIR_COEFF_VOIP_HANDFREE_DEFAULT \
+   { /* 5: Input FIR coefficients for VoIP Handfree mode */ \
+    32767,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0  \
+   }
+
+#define SPEECH_INPUT_FIR_COEFF_DEFAULT \
+{ \
+    SPEECH_INPUT_FIR_COEFF_NORMAL_DEFAULT, \
+    SPEECH_INPUT_FIR_COEFF_HEADSET_DEFAULT, \
+    SPEECH_INPUT_FIR_COEFF_HANDFREE_DEFAULT, \
+    SPEECH_INPUT_FIR_COEFF_BT_DEFAULT, \
+    SPEECH_INPUT_FIR_COEFF_VOIP_NORMAL_DEFAULT, \
+    SPEECH_INPUT_FIR_COEFF_VOIP_HANDFREE_DEFAULT \
+}
+
+/******************** OUTPUT FIR ********************************/
+
+#define SPEECH_OUTPUT_FIR_COEFF_NORMAL_DEFAULT \
+   { /* 0: Output FIR coefficients for 2G/3G Normal mode */ \
+    32767,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0  \
+   }
+
+#define SPEECH_OUTPUT_FIR_COEFF_HEADSET_DEFAULT \
+   { /* 1: Output FIR coefficients for 2G/3G/VoIP Headset mode */ \
+    32767,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0  \
+   }
+
+#define SPEECH_OUTPUT_FIR_COEFF_HANDFREE_DEFAULT \
+   { /* 2: Output FIR coefficients for 2G/3G Handfree mode */ \
+    32767,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0  \
+   }
+
+#define SPEECH_OUTPUT_FIR_COEFF_BT_DEFAULT \
+   { /* 3: Output FIR coefficients for 2G/3G/VoIP BT mode */ \
+    32767,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0  \
+   }
+
+#define SPEECH_OUTPUT_FIR_COEFF_VOIP_NORMAL_DEFAULT \
+   { /* 4: Output FIR coefficients for VoIP Normal mode */ \
+    32767,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0  \
+   }
+
+#define SPEECH_OUTPUT_FIR_COEFF_VOIP_HANDFREE_DEFAULT \
+   { /* 5: Output FIR coefficients for VoIP Handfree mode */ \
+    32767,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0  \
+   }
+
+#define SPEECH_OUTPUT_FIR_COEFF_DEFAULT \
+{ \
+    SPEECH_OUTPUT_FIR_COEFF_NORMAL_DEFAULT, \
+    SPEECH_OUTPUT_FIR_COEFF_HEADSET_DEFAULT, \
+    SPEECH_OUTPUT_FIR_COEFF_HANDFREE_DEFAULT, \
+    SPEECH_OUTPUT_FIR_COEFF_BT_DEFAULT, \
+    SPEECH_OUTPUT_FIR_COEFF_VOIP_NORMAL_DEFAULT, \
+    SPEECH_OUTPUT_FIR_COEFF_VOIP_HANDFREE_DEFAULT \
+}
+
+/******************** WB INPUT FIR ********************************/
+
+#if 1//#ifdef __AMRWB_LINK_SUPPORT__
+
+#define WB_SPEECH_INPUT_FIR_COEFF_NORMAL_DEFAULT \
+   { /* 0: Input FIR coefficients for 2G/3G Normal mode */ \
+    32767,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0 \
+   }
+
+#define WB_SPEECH_INPUT_FIR_COEFF_HEADSET_DEFAULT \
+   { /* 1: Input FIR coefficients for 2G/3G/VoIP Headset mode */ \
+    32767,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0 \
+   }
+
+#define WB_SPEECH_INPUT_FIR_COEFF_HANDFREE_DEFAULT \
+   { /* 2: Input FIR coefficients for 2G/3G Handfree mode */ \
+    32767,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0 \
+   }
+
+#define WB_SPEECH_INPUT_FIR_COEFF_BT_DEFAULT \
+   { /* 3: Input FIR coefficients for 2G/3G/VoIP BT mode */ \
+    32767,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0 \
+   }
+
+#define WB_SPEECH_INPUT_FIR_COEFF_VOIP_NORMAL_DEFAULT \
+   { /* 4: Input FIR coefficients for VoIP Normal mode */ \
+    32767,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0 \
+   }
+
+#define WB_SPEECH_INPUT_FIR_COEFF_VOIP_HANDFREE_DEFAULT \
+   { /* 5: Input FIR coefficients for VoIP Handfree mode */ \
+    32767,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0 \
+   }
+
+#define WB_SPEECH_INPUT_FIR_COEFF_DEFAULT \
+{ \
+    WB_SPEECH_INPUT_FIR_COEFF_NORMAL_DEFAULT, \
+    WB_SPEECH_INPUT_FIR_COEFF_HEADSET_DEFAULT, \
+    WB_SPEECH_INPUT_FIR_COEFF_HANDFREE_DEFAULT, \
+    WB_SPEECH_INPUT_FIR_COEFF_BT_DEFAULT, \
+    WB_SPEECH_INPUT_FIR_COEFF_VOIP_NORMAL_DEFAULT, \
+    WB_SPEECH_INPUT_FIR_COEFF_VOIP_HANDFREE_DEFAULT \
+}
+
+#endif //__AMRWB_LINK_SUPPORT__
+
+/******************** WB OUTPUT FIR ********************************/
+
+#if 1//#ifdef __AMRWB_LINK_SUPPORT__
+
+#define WB_SPEECH_OUTPUT_FIR_COEFF_NORMAL_DEFAULT \
+   { /* 0: Output FIR coefficients for 2G/3G Normal mode */ \
+    32767,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0 \
+   }
+
+#define WB_SPEECH_OUTPUT_FIR_COEFF_HEADSET_DEFAULT \
+   { /* 1: Output FIR coefficients for 2G/3G/VoIP Headset mode */ \
+    32767,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0 \
+   }
+
+#define WB_SPEECH_OUTPUT_FIR_COEFF_HANDFREE_DEFAULT \
+   { /* 2: Output FIR coefficients for 2G/3G Handfree mode */ \
+    32767,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0 \
+   }
+
+#define WB_SPEECH_OUTPUT_FIR_COEFF_BT_DEFAULT \
+   { /* 3: Output FIR coefficients for 2G/3G/VoIP BT mode */ \
+    32767,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0 \
+   }
+
+#define WB_SPEECH_OUTPUT_FIR_COEFF_VOIP_NORMAL_DEFAULT \
+   { /* 4: Output FIR coefficients for VoIP Normal mode */ \
+    32767,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0 \
+   }
+
+#define WB_SPEECH_OUTPUT_FIR_COEFF_VOIP_HANDFREE_DEFAULT \
+   { /* 5: Output FIR coefficients for VoIP Handfree mode */ \
+    32767,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, \
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0 \
+   }
+
+#define WB_SPEECH_OUTPUT_FIR_COEFF_DEFAULT \
+{ \
+    WB_SPEECH_OUTPUT_FIR_COEFF_NORMAL_DEFAULT, \
+    WB_SPEECH_OUTPUT_FIR_COEFF_HEADSET_DEFAULT, \
+    WB_SPEECH_OUTPUT_FIR_COEFF_HANDFREE_DEFAULT, \
+    WB_SPEECH_OUTPUT_FIR_COEFF_BT_DEFAULT, \
+    WB_SPEECH_OUTPUT_FIR_COEFF_VOIP_NORMAL_DEFAULT, \
+    WB_SPEECH_OUTPUT_FIR_COEFF_VOIP_HANDFREE_DEFAULT \
+}
+
+#endif //__AMRWB_LINK_SUPPORT__
+
+#endif //__AUDCOEFF_H__
+
diff --git a/mcu/custom/driver/audio/_Default_BB/MT2735/afe.c b/mcu/custom/driver/audio/_Default_BB/MT2735/afe.c
new file mode 100644
index 0000000..d3c43e8
--- /dev/null
+++ b/mcu/custom/driver/audio/_Default_BB/MT2735/afe.c
@@ -0,0 +1,112 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * afe.c
+ *
+ * Project:
+ * --------
+ *   MT6219
+ *
+ * Description:
+ * ------------
+ *   Audio Front End
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:   1.1  $
+ * $Modtime:   May 16 2005 23:11:26  $
+ * $Log:   //mtkvs01/vmdata/Maui_sw/archives/mcu/custom/audio/MT6229_EVB/afe.c-arc  $
+ *
+ * 11 01 2012 xenia.tsou
+ * [MOLY00005322] TATAKA merge to MOLY
+ * .
+ * 
+ * 08 23 2012 sheila.chen
+ * [MOLY00000112] [MT6583] Pre-integration
+ * Prepare MT6583 customer folder
+ * 
+ * 08 23 2012 sheila.chen
+ * [MOLY00000112] [MT6583] Pre-integration
+ * 6583 Customer folder preparation
+ *
+ * 06 22 2012 sheila.chen
+ * removed!
+ * Add MT6577 settings.
+ *
+ * 12 01 2011 peggy.yeh
+ * removed!
+ * Back out changelist 519486
+ *
+ * 06 03 2011 vanessa.tsai
+ * removed!
+ * .
+ * 
+ *******************************************************************************/
+
+// #define  AFE_VAC_DCON1  (volatile unsigned short*)(0xA40F000CL)  /* AFE Voice Analog Circuit Control Register 1   */
+// #define  AFE_VAC_CON0   (volatile unsigned short*)(0x840C0104L)  /* AFE Voice Analog-Circuit Control Register 0   */
+
+/*****************************************************************************
+* FUNCTION
+*  AFE_Initialize
+* DESCRIPTION
+*   This function is to set the initial value of AFE HW.
+*****************************************************************************/
+void AFE_Initialize( void )
+{
+   /// AFE_VAC_CON0::VCALI is chip dependent, will be set in l1audio\afe2.c
+   /// immediately after this function is called.
+   /// set audio output == differential mode.
+   //*AFE_VAC_CON0  = 0x00;
+   //*AFE_VAC_DCON1 = 0x80;
+}
+
+/*****************************************************************************
+* FUNCTION
+*  AFE_SwitchExtAmplifier
+* DESCRIPTION
+*   This function is to turn on/off external amplifier.
+*****************************************************************************/
+void AFE_SwitchExtAmplifier( char sw_on )
+{
+   return;
+}
diff --git a/mcu/custom/driver/audio/_Default_BB/MT2735/audcoeff.c b/mcu/custom/driver/audio/_Default_BB/MT2735/audcoeff.c
new file mode 100644
index 0000000..16031a6
--- /dev/null
+++ b/mcu/custom/driver/audio/_Default_BB/MT2735/audcoeff.c
@@ -0,0 +1,293 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * audcoeff.c
+ *
+ * Project:
+ * --------
+ *   MAUI Project
+ *
+ * Description:
+ * ------------
+ *   Default FIR Coefficients Table
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#include "kal_public_api.h"
+#include "l1audio.h"
+#include "audcoeff_default.h"
+#include "AudCoeff.h"
+#include "audio_nvram_def.h"
+
+#include "device.h"
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif 
+
+const signed short Speech_Input_FIR_Coeff[6][45] = SPEECH_INPUT_FIR_COEFF_DEFAULT;
+const signed short Speech_Output_FIR_Coeff[6][45] = SPEECH_OUTPUT_FIR_COEFF_DEFAULT;
+
+
+const signed short WB_Speech_Input_FIR_Coeff[6][90] = WB_SPEECH_INPUT_FIR_COEFF_DEFAULT;
+const signed short WB_Speech_Output_FIR_Coeff[6][90] = WB_SPEECH_OUTPUT_FIR_COEFF_DEFAULT;
+
+
+/*
+const unsigned short Ext_op_on_delay   = 0;     // count in frames, 1 frame = 4.615ms 
+const unsigned short Ext_op_off_delay  = 0;     // count in frames, 1 frame = 4.615ms 
+*/
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/*
+ * Loudness Configuration Parameter
+ * Refer to audcoeff_default.h
+ */
+/*
+const unsigned char Loudness_Ringtone_Mode = DEFAULT_LOUDNESS_RINGTONE_MODE;
+const unsigned char Loudness_NonRingtone_Mode = DEFAULT_LOUDNESS_NON_RINGTONE_MODE;
+*/
+
+/*
+ * The Bluetooth DAI Hardware COnfiguration Parameter
+ * Refer to audcoeff_default.h
+ */
+ /*
+const unsigned char Bluetooth_Sync_Type = DEFAULT_BLUETOOTH_SYNC_TYPE;
+const unsigned char Bluetooth_Sync_Length = DEFAULT_BLUETOOTH_SYNC_LENGTH;
+*/
+
+/*
+ * The Digital Microphone Hardware COnfiguration Parameter
+ * Refer to audcoeff_default.h
+ */
+/* 
+const unsigned char Digital_Mic1_Phase = DEFAULT_DIGITAL_MIC_CHANNEL1_PHASE;
+const unsigned char Digital_Mic2_Phase = DEFAULT_DIGITAL_MIC_CHANNEL2_PHASE;
+const unsigned char Digital_Mic_Clock_Selection = DEFAULT_DIGITAL_MIC_CLOCK_SELECTION;
+*/
+
+/*
+ * 3D Surround Loudspeaker Mode Customization Parameter.
+ * Details about these three variables are illustrated in Audio Post-Processing Interface doc.
+ */
+/*
+#if defined(__BES_SURROUND_LSPK__) || defined(__BES_SURROUND_EARP__)
+const int D_Distance = DEFAULT_D_DISTANCE;
+const int D_Loudspeaker = DEFAULT_D_LOUDSPEAKER;
+const int SurroundLevelLoudspeaker = DEFAULT_SURROUNDLEVELLOUDSPEAKER;
+#endif
+*/
+
+
+#if !defined(__FUE__)
+#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 !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+kal_uint8 custom_cfg_hw_aud_output_path(  kal_uint8 speaker_id )
+{
+	#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 !*/
+/* 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 !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+   #endif
+   return 0;
+}
+
+
+
+kal_uint8 custom_cfg_hw_aud_input_path(  kal_uint8 mic_id )
+{
+   kal_uint8 mic_device = 0;
+
+   switch(mic_id)
+   {
+   case AUDIO_DEVICE_MIC1:
+      mic_device = 0;
+      break;
+   case AUDIO_DEVICE_MIC2:
+      mic_device = 1;
+      break;
+   case AUDIO_DEVICE_FMRR:
+      mic_device = 3;  /*L1SP_LNA_FMRR*/
+   default:
+      break;
+   }
+
+   return mic_device;
+}
+#endif //!defined(__FUE__)
+
diff --git a/mcu/custom/driver/audio/_Default_BB/MT2735/nvram_default_audio.c b/mcu/custom/driver/audio/_Default_BB/MT2735/nvram_default_audio.c
new file mode 100644
index 0000000..f95d257
--- /dev/null
+++ b/mcu/custom/driver/audio/_Default_BB/MT2735/nvram_default_audio.c
@@ -0,0 +1,553 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * nvram_default_audio.c
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *    This file is for customers to config/customize their audio related parameters to NVRAM Layer and
+ *    Driver Layer.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"
+#include "nvram_default_audio.h"
+
+#if defined(KLM2003_BB)
+#define MICROPHONE_VOLUME     80
+#define SIDE_TONE_VOLUME      96
+#elif defined(CHICAGO2003_BB)
+#define MICROPHONE_VOLUME     80
+#define SIDE_TONE_VOLUME      80
+#else
+#define MICROPHONE_VOLUME     104
+#define SIDE_TONE_VOLUME      56
+#endif
+
+#define GAIN_NOR_MED_VOL_MAX 160
+#define GAIN_HED_MED_VOL_MAX 243  /*Headset*/
+#define GAIN_HND_MED_VOL_MAX 192  /* Handfree*/ 
+#define GAIN_TVO_VOL_MAX 243
+
+#define GAIN_NOR_MED_VOL_STEP 4 /* 1=0.5dB as unit */
+#define GAIN_HED_MED_VOL_STEP 6 /* 1=0.5dB as unit */
+#define GAIN_HND_MED_VOL_STEP 3 /* 1=0.5dB as unit */
+#define GAIN_TVO_VOL_STEP 6 /* 1=0.5dB as unit */
+
+#define GAIN_TVO_VOL0			184   
+#define GAIN_TVO_VOL1			196
+#define GAIN_TVO_VOL2			208
+#define GAIN_TVO_VOL3			214
+#define GAIN_TVO_VOL4			220
+#define GAIN_TVO_VOL5			232
+#define GAIN_TVO_VOL6			243
+
+#define GAIN_NOR_CTN_VOL    3
+#define GAIN_NOR_CTN_VOL0		127
+#define GAIN_NOR_CTN_VOL1		127
+#define GAIN_NOR_CTN_VOL2		127
+#define GAIN_NOR_CTN_VOL3		127
+#define GAIN_NOR_CTN_VOL4		127
+#define GAIN_NOR_CTN_VOL5		127
+#define GAIN_NOR_CTN_VOL6		127
+
+#define GAIN_NOR_KEY_VOL    3
+#define GAIN_NOR_KEY_VOL0			67
+#define GAIN_NOR_KEY_VOL1			87
+#define GAIN_NOR_KEY_VOL2			107
+#define GAIN_NOR_KEY_VOL3			127
+#define GAIN_NOR_KEY_VOL4			147
+#define GAIN_NOR_KEY_VOL5			167
+#define GAIN_NOR_KEY_VOL6			187
+
+#define GAIN_NOR_MIC_VOL    3
+#define GAIN_NOR_MIC_VOL0		240
+#define GAIN_NOR_MIC_VOL1		240
+#define GAIN_NOR_MIC_VOL2		240
+#define GAIN_NOR_MIC_VOL3		80
+#define GAIN_NOR_MIC_VOL4		240
+#define GAIN_NOR_MIC_VOL5		240
+#define GAIN_NOR_MIC_VOL6		240
+
+#define GAIN_NOR_GMI_VOL    3
+#define GAIN_NOR_GMI_VOL0		40
+#define GAIN_NOR_GMI_VOL1		80
+#define GAIN_NOR_GMI_VOL2		120
+#define GAIN_NOR_GMI_VOL3		160
+#define GAIN_NOR_GMI_VOL4		200
+#define GAIN_NOR_GMI_VOL5		240
+#define GAIN_NOR_GMI_VOL6		255
+
+#define GAIN_NOR_SPH_VOL    3
+#define GAIN_NOR_SPH_VOL0		64
+#define GAIN_NOR_SPH_VOL1		96
+#define GAIN_NOR_SPH_VOL2		112
+#define GAIN_NOR_SPH_VOL3		144
+#define GAIN_NOR_SPH_VOL4		176
+#define GAIN_NOR_SPH_VOL5		208
+#define GAIN_NOR_SPH_VOL6		240
+
+#define GAIN_NOR_SID_VOL    3
+#define GAIN_NOR_SID_VOL0			SIDE_TONE_VOLUME
+#define GAIN_NOR_SID_VOL1			SIDE_TONE_VOLUME
+#define GAIN_NOR_SID_VOL2			SIDE_TONE_VOLUME
+#define GAIN_NOR_SID_VOL3			SIDE_TONE_VOLUME
+#define GAIN_NOR_SID_VOL4			SIDE_TONE_VOLUME
+#define GAIN_NOR_SID_VOL5			SIDE_TONE_VOLUME
+#define GAIN_NOR_SID_VOL6			SIDE_TONE_VOLUME
+
+#define GAIN_NOR_MED_VOL    3
+#define GAIN_NOR_MED_VOL0			32
+#define GAIN_NOR_MED_VOL1			48
+#define GAIN_NOR_MED_VOL2			64
+#define GAIN_NOR_MED_VOL3			80
+#define GAIN_NOR_MED_VOL4			96
+#define GAIN_NOR_MED_VOL5			112
+#define GAIN_NOR_MED_VOL6			128
+
+/* define Gain For Headset */
+/* speaker, microphone, loudspeaker, buzzer */
+#define GAIN_HED_CTN_VOL    3
+#define GAIN_HED_CTN_VOL0		4
+#define GAIN_HED_CTN_VOL1		8
+#define GAIN_HED_CTN_VOL2		16
+#define GAIN_HED_CTN_VOL3		32
+#define GAIN_HED_CTN_VOL4		64
+#define GAIN_HED_CTN_VOL5		96
+#define GAIN_HED_CTN_VOL6		127
+
+#define GAIN_HED_KEY_VOL    1
+#define GAIN_HED_KEY_VOL0		4
+#define GAIN_HED_KEY_VOL1		8
+#define GAIN_HED_KEY_VOL2		12
+#define GAIN_HED_KEY_VOL3		16
+#define GAIN_HED_KEY_VOL4		20
+#define GAIN_HED_KEY_VOL5		24
+#define GAIN_HED_KEY_VOL6		28
+
+#define GAIN_HED_MIC_VOL		3
+#define GAIN_HED_MIC_VOL0			160
+#define GAIN_HED_MIC_VOL1			160
+#define GAIN_HED_MIC_VOL2			160
+#define GAIN_HED_MIC_VOL3			160
+#define GAIN_HED_MIC_VOL4			160
+#define GAIN_HED_MIC_VOL5			160
+#define GAIN_HED_MIC_VOL6			160
+
+#define GAIN_HED_GMI_VOL		3
+#define GAIN_HED_GMI_VOL0		40
+#define GAIN_HED_GMI_VOL1		80
+#define GAIN_HED_GMI_VOL2		120
+#define GAIN_HED_GMI_VOL3		160
+#define GAIN_HED_GMI_VOL4		200
+#define GAIN_HED_GMI_VOL5		240
+#define GAIN_HED_GMI_VOL6		255
+
+#define GAIN_HED_SPH_VOL    3
+#define GAIN_HED_SPH_VOL0		16
+#define GAIN_HED_SPH_VOL1		32
+#define GAIN_HED_SPH_VOL2		48
+#define GAIN_HED_SPH_VOL3		64
+#define GAIN_HED_SPH_VOL4		80
+#define GAIN_HED_SPH_VOL5		96
+#define GAIN_HED_SPH_VOL6		112
+
+#define GAIN_HED_SID_VOL    3
+#define GAIN_HED_SID_VOL0		0
+#define GAIN_HED_SID_VOL1		0
+#define GAIN_HED_SID_VOL2		0
+#define GAIN_HED_SID_VOL3		0
+#define GAIN_HED_SID_VOL4		0
+#define GAIN_HED_SID_VOL5		0
+#define GAIN_HED_SID_VOL6		0
+
+#define GAIN_HED_MED_VOL    3
+#define GAIN_HED_MED_VOL0			184
+#define GAIN_HED_MED_VOL1			196
+#define GAIN_HED_MED_VOL2			208
+#define GAIN_HED_MED_VOL3			214
+#define GAIN_HED_MED_VOL4			220
+#define GAIN_HED_MED_VOL5			232
+#define GAIN_HED_MED_VOL6			243
+
+
+/* define Gain For Handfree */
+/* speaker, microphone, loudspeaker, buzzer */
+#define GAIN_HND_CTN_VOL    3
+#define GAIN_HND_CTN_VOL0			127
+#define GAIN_HND_CTN_VOL1			127
+#define GAIN_HND_CTN_VOL2			127
+#define GAIN_HND_CTN_VOL3			127
+#define GAIN_HND_CTN_VOL4			127
+#define GAIN_HND_CTN_VOL5			127
+#define GAIN_HND_CTN_VOL6			127
+
+#define GAIN_HND_KEY_VOL    3
+#define GAIN_HND_KEY_VOL0		67
+#define GAIN_HND_KEY_VOL1		87
+#define GAIN_HND_KEY_VOL2		107
+#define GAIN_HND_KEY_VOL3		127
+#define GAIN_HND_KEY_VOL4		147
+#define GAIN_HND_KEY_VOL5		167
+#define GAIN_HND_KEY_VOL6		187
+
+#define GAIN_HND_MIC_VOL		3
+#define GAIN_HND_MIC_VOL0		88
+#define GAIN_HND_MIC_VOL1		88
+#define GAIN_HND_MIC_VOL2		88
+#define GAIN_HND_MIC_VOL3		88
+#define GAIN_HND_MIC_VOL4		88
+#define GAIN_HND_MIC_VOL5		88
+#define GAIN_HND_MIC_VOL6		88
+
+#define GAIN_HND_GMI_VOL		3
+#define GAIN_HND_GMI_VOL0			255
+#define GAIN_HND_GMI_VOL1			255
+#define GAIN_HND_GMI_VOL2			255
+#define GAIN_HND_GMI_VOL3			255
+#define GAIN_HND_GMI_VOL4			255
+#define GAIN_HND_GMI_VOL5			255
+#define GAIN_HND_GMI_VOL6			255
+
+#define GAIN_HND_SPH_VOL    3
+#define GAIN_HND_SPH_VOL0			80
+#define GAIN_HND_SPH_VOL1			96
+#define GAIN_HND_SPH_VOL2			112
+#define GAIN_HND_SPH_VOL3			128
+#define GAIN_HND_SPH_VOL4			144
+#define GAIN_HND_SPH_VOL5			160
+#define GAIN_HND_SPH_VOL6			176
+
+#define GAIN_HND_SID_VOL    3
+#define GAIN_HND_SID_VOL0		0
+#define GAIN_HND_SID_VOL1		0
+#define GAIN_HND_SID_VOL2		0
+#define GAIN_HND_SID_VOL3		0
+#define GAIN_HND_SID_VOL4		0
+#define GAIN_HND_SID_VOL5		0
+#define GAIN_HND_SID_VOL6		0
+
+#define GAIN_HND_MED_VOL    3
+#define GAIN_HND_MED_VOL0			32
+#define GAIN_HND_MED_VOL1			48
+#define GAIN_HND_MED_VOL2			64
+#define GAIN_HND_MED_VOL3			80
+#define GAIN_HND_MED_VOL4			96
+#define GAIN_HND_MED_VOL5			112
+#define GAIN_HND_MED_VOL6			128
+
+kal_uint8 const NVRAM_EF_CUST_ACOUSTIC_DATA_DEFAULT[] = {
+     /* Normal: Call Tone, Keypad Tone, Microphone, GMI Tone, Speech Tone, Side Tone */ 
+      GAIN_NOR_CTN_VOL0,GAIN_NOR_CTN_VOL1, GAIN_NOR_CTN_VOL2, GAIN_NOR_CTN_VOL3, GAIN_NOR_CTN_VOL4, GAIN_NOR_CTN_VOL5, GAIN_NOR_CTN_VOL6,
+      GAIN_NOR_KEY_VOL0, GAIN_NOR_KEY_VOL1, GAIN_NOR_KEY_VOL2, GAIN_NOR_KEY_VOL3, GAIN_NOR_KEY_VOL4, GAIN_NOR_KEY_VOL5, GAIN_NOR_KEY_VOL6, 
+      GAIN_NOR_MIC_VOL0, GAIN_NOR_MIC_VOL1, GAIN_NOR_MIC_VOL2, GAIN_NOR_MIC_VOL3, GAIN_NOR_MIC_VOL4, GAIN_NOR_MIC_VOL5, GAIN_NOR_MIC_VOL6, 
+      GAIN_NOR_GMI_VOL0, GAIN_NOR_GMI_VOL1, GAIN_NOR_GMI_VOL2, GAIN_NOR_GMI_VOL3, GAIN_NOR_GMI_VOL4, GAIN_NOR_GMI_VOL5, GAIN_NOR_GMI_VOL6, 
+      GAIN_NOR_SPH_VOL0, GAIN_NOR_SPH_VOL1, GAIN_NOR_SPH_VOL2, GAIN_NOR_SPH_VOL3, GAIN_NOR_SPH_VOL4, GAIN_NOR_SPH_VOL5, GAIN_NOR_SPH_VOL6, 
+      GAIN_NOR_SID_VOL0, GAIN_NOR_SID_VOL1, GAIN_NOR_SID_VOL2, GAIN_NOR_SID_VOL3, GAIN_NOR_SID_VOL4, GAIN_NOR_SID_VOL5, GAIN_NOR_SID_VOL6, 
+      GAIN_NOR_MED_VOL0,GAIN_NOR_MED_VOL1, GAIN_NOR_MED_VOL2, GAIN_NOR_MED_VOL3, GAIN_NOR_MED_VOL4, GAIN_NOR_MED_VOL5, GAIN_NOR_MED_VOL6
+   , 
+     /* Handset: Call Tone, Keypad Tone, Microphone, GMI Tone, Speech Tone */ 
+      GAIN_HED_CTN_VOL0, GAIN_HED_CTN_VOL1, GAIN_HED_CTN_VOL2, GAIN_HED_CTN_VOL3, GAIN_HED_CTN_VOL4, GAIN_HED_CTN_VOL5, GAIN_HED_CTN_VOL6, 
+      GAIN_HED_KEY_VOL0, GAIN_HED_KEY_VOL1, GAIN_HED_KEY_VOL2, GAIN_HED_KEY_VOL3, GAIN_HED_KEY_VOL4, GAIN_HED_KEY_VOL5, GAIN_HED_KEY_VOL6, 
+      GAIN_HED_MIC_VOL0, GAIN_HED_MIC_VOL1, GAIN_HED_MIC_VOL2, GAIN_HED_MIC_VOL3, GAIN_HED_MIC_VOL4, GAIN_HED_MIC_VOL5, GAIN_HED_MIC_VOL6, 
+      GAIN_HED_GMI_VOL0, GAIN_HED_GMI_VOL1, GAIN_HED_GMI_VOL2, GAIN_HED_GMI_VOL3, GAIN_HED_GMI_VOL4, GAIN_HED_GMI_VOL5, GAIN_HED_GMI_VOL6, 
+      GAIN_HED_SPH_VOL0, GAIN_HED_SPH_VOL1, GAIN_HED_SPH_VOL2, GAIN_HED_SPH_VOL3, GAIN_HED_SPH_VOL4, GAIN_HED_SPH_VOL5, GAIN_HED_SPH_VOL6, 
+      GAIN_HED_SID_VOL0, GAIN_HED_SID_VOL1, GAIN_HED_SID_VOL2, GAIN_HED_SID_VOL3, GAIN_HED_SID_VOL4, GAIN_HED_SID_VOL5, GAIN_HED_SID_VOL6, 
+      GAIN_HED_MED_VOL0,GAIN_HED_MED_VOL1, GAIN_HED_MED_VOL2, GAIN_HED_MED_VOL3, GAIN_HED_MED_VOL4, GAIN_HED_MED_VOL5, GAIN_HED_MED_VOL6
+   , 
+     /* Handfree: Call Tone, Keypad Tone, Microphone, GMI Tone, Speech Tone */  
+     GAIN_HND_CTN_VOL0, GAIN_HND_CTN_VOL1, GAIN_HND_CTN_VOL2, GAIN_HND_CTN_VOL3, GAIN_HND_CTN_VOL4, GAIN_HND_CTN_VOL5, GAIN_HND_CTN_VOL6, 
+     GAIN_HND_KEY_VOL0,  GAIN_HND_KEY_VOL1, GAIN_HND_KEY_VOL2, GAIN_HND_KEY_VOL3, GAIN_HND_KEY_VOL4, GAIN_HND_KEY_VOL5, GAIN_HND_KEY_VOL6, 
+     GAIN_HND_MIC_VOL0,  GAIN_HND_MIC_VOL1, GAIN_HND_MIC_VOL2, GAIN_HND_MIC_VOL3, GAIN_HND_MIC_VOL4, GAIN_HND_MIC_VOL5, GAIN_HND_MIC_VOL6, 
+     GAIN_HND_GMI_VOL0,  GAIN_HND_GMI_VOL1, GAIN_HND_GMI_VOL2, GAIN_HND_GMI_VOL3, GAIN_HND_GMI_VOL4, GAIN_HND_GMI_VOL5, GAIN_HND_GMI_VOL6, 
+     GAIN_HND_SPH_VOL0,  GAIN_HND_SPH_VOL1, GAIN_HND_SPH_VOL2, GAIN_HND_SPH_VOL3, GAIN_HND_SPH_VOL4, GAIN_HND_SPH_VOL5, GAIN_HND_SPH_VOL6, 
+     GAIN_HND_SID_VOL0,  GAIN_HND_SID_VOL1, GAIN_HND_SID_VOL2, GAIN_HND_SID_VOL3, GAIN_HND_SID_VOL4, GAIN_HND_SID_VOL5, GAIN_HND_SID_VOL6, 
+     GAIN_HND_MED_VOL0, GAIN_HND_MED_VOL1, GAIN_HND_MED_VOL2, GAIN_HND_MED_VOL3, GAIN_HND_MED_VOL4, GAIN_HND_MED_VOL5, GAIN_HND_MED_VOL6
+   ,  
+   /* Normal volume: CTN, SPK, MIC, BUZ, SPH, SID, MED */
+   GAIN_NOR_CTN_VOL, GAIN_NOR_KEY_VOL, GAIN_NOR_MIC_VOL, GAIN_NOR_GMI_VOL, GAIN_NOR_SPH_VOL, GAIN_NOR_SID_VOL, GAIN_NOR_MED_VOL,
+   /* Headset volume: CTN, SPK, MIC, BUZ, SPH, SID, MED */
+   GAIN_HED_CTN_VOL, GAIN_HED_KEY_VOL, GAIN_HED_MIC_VOL, GAIN_HED_GMI_VOL, GAIN_HED_SPH_VOL, GAIN_HED_SID_VOL, GAIN_HED_MED_VOL,
+   /* Handfree volume: CTN, SPK, MIC, BUZ, SPH, SID, MED */
+   GAIN_HND_CTN_VOL, GAIN_HND_KEY_VOL, GAIN_HND_MIC_VOL, GAIN_HND_GMI_VOL, GAIN_HND_SPH_VOL, GAIN_HND_SID_VOL, GAIN_HND_MED_VOL
+   
+   /* Normal, Headset, Handfree mode melody volume gains */
+   ,GAIN_NOR_MED_VOL_MAX, GAIN_HED_MED_VOL_MAX, GAIN_HND_MED_VOL_MAX,GAIN_TVO_VOL_MAX,
+   /* Normal, Headset, Handfree mode melody volume gain steps */
+   GAIN_NOR_MED_VOL_STEP, GAIN_HED_MED_VOL_STEP, GAIN_HND_MED_VOL_STEP,GAIN_TVO_VOL_STEP,
+   /* TV out volume gains*/
+   GAIN_TVO_VOL0, GAIN_TVO_VOL1, GAIN_TVO_VOL2, GAIN_TVO_VOL3, GAIN_TVO_VOL4, GAIN_TVO_VOL5, GAIN_TVO_VOL6
+};
+
+#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 !*/
+/* 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 !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
diff --git a/mcu/custom/driver/audio/_Default_BB/MT2735/nvram_default_audio.h b/mcu/custom/driver/audio/_Default_BB/MT2735/nvram_default_audio.h
new file mode 100644
index 0000000..9e69693
--- /dev/null
+++ b/mcu/custom/driver/audio/_Default_BB/MT2735/nvram_default_audio.h
@@ -0,0 +1,230 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * nvram_default_audio.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *    This file is for customers to config/customize their audio parameters to NVRAM Layer and
+ *    Driver Layer.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef __NVRAM_DEFAULT_AUDIO_H__
+#define __NVRAM_DEFAULT_AUDIO_H__
+
+// #include "aud_common_config.h"
+
+/**
+ * Acoustic data
+ */
+#define NVRAM_EF_CUST_ACOUSTIC_DATA_SIZE            183
+#define NVRAM_EF_CUST_ACOUSTIC_DATA_TOTAL           1
+extern const kal_uint8 NVRAM_EF_CUST_ACOUSTIC_DATA_DEFAULT[NVRAM_EF_CUST_ACOUSTIC_DATA_SIZE];
+
+/*
+ * Audio Equalizer Settings
+ */
+#define NVRAM_EF_AUDIO_EQUALIZER_COUNT		8
+#define NVRAM_EF_AUDIO_EQUALIZER_SIZE		500
+#define NVRAM_EF_AUDIO_EQUALIZER_TOTAL		1
+
+typedef struct 
+{
+   kal_int16 count;
+   kal_int16 index;
+   kal_int8 magnitude[NVRAM_EF_AUDIO_EQUALIZER_COUNT][8];
+   kal_uint8 setting_name[NVRAM_EF_AUDIO_EQUALIZER_COUNT + 1][(23 + 1) * 2];  //hardcoded ENCODING_LENGTH to 2...
+} nvram_ef_audio_equalizer_struct;
+
+extern const nvram_ef_audio_equalizer_struct NVRAM_EF_AUDIO_EQUALIZER_DEFAULT[];
+
+#endif /* __NVRAM_DEFAULT_AUDIO_H__ */
+
diff --git a/mcu/custom/driver/common/MemoryDevice_TypeDef.h b/mcu/custom/driver/common/MemoryDevice_TypeDef.h
new file mode 100644
index 0000000..3e2ac31
--- /dev/null
+++ b/mcu/custom/driver/common/MemoryDevice_TypeDef.h
@@ -0,0 +1,116 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   MemoryDevice_TypeDef.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file defines the enum and data structure necessary for memory
+ *   device configuration.
+ *
+ * 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 __MEMDEV_TYPEDEF__
+#define __MEMDEV_TYPEDEF__
+
+
+/*****************************************************************/
+
+/**
+  * Define this if we want to include those header that RHR suggested to add.
+  */
+#define RHR_SUGGEST_ADD
+
+/**
+  * Define this if we want to exclude those header that RHR suggested to add.
+  */
+//#define RHR_SUGGEST_REMOVE
+
+/*****************************************************************/
+
+
+typedef enum
+{
+    NOR_RAM_MCP = 0,
+    NOR_FLASH,
+    RAM,
+    LPSDRAM,
+    UNUSED = 0xFF
+} ExtMemoryType_T;
+
+typedef enum
+{
+    ASYNC_ACCESS = 0,
+    SYNC_ACCESS,
+    UNDEF_ACCESS = 0xFF
+} ExtMemoryAccessType_T;
+
+#endif /* __MEMDEV_TYPEDEF__ */ 
+
diff --git a/mcu/custom/driver/common/adc_nvram_def.c b/mcu/custom/driver/common/adc_nvram_def.c
new file mode 100644
index 0000000..b1cce8e
--- /dev/null
+++ b/mcu/custom/driver/common/adc_nvram_def.c
@@ -0,0 +1,255 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * adc_nvram_def.c
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *    This file contains `vendor' defined logical data items stored in NVRAM.
+ *    These logical data items are used in object code of Protocol Stack software.
+ *
+ *    As for customizable logical data items, they are defined in nvram_user_config.c
+ *
+ * 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!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef NVRAM_NOT_PRESENT
+
+
+/*
+ *   Include Headers
+ */
+
+#include "kal_general_types.h"
+
+/*
+ *   NVRAM Basic Headers
+ */
+#ifdef NVRAM_AUTO_GEN
+#include "nvram_auto_gen.h"
+#endif
+
+#include "nvram_enums.h"
+
+#define NVRAM_LID_SPLIT
+#include "nvram_defs.h"
+
+#include "nvram_data_items.h"
+
+/*
+ *   User Headers & Default value
+ */
+#include "adc_nvram_def.h" 
+#include "drv_features_adc.h"
+
+#if !defined(DRV_ADC_OFF)
+static kal_int32 const NVRAM_EF_ADC_DEFAULT[] = {
+#if defined(DRV_ADC_MAX_CH_1)
+   ADC_CALIBRATION_SLOPE_CH0,
+   ADC_CALIBRATION_OFFSET_CH0
+#elif defined(DRV_ADC_MAX_CH_5)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1,  ADC_CALIBRATION_SLOPE_CH2,  ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4
+#elif defined(DRV_ADC_MAX_CH_6)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1,  ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5
+#elif defined(DRV_ADC_MAX_CH_7)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1,  ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6
+#elif defined(DRV_ADC_MAX_CH_8)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1,  ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,  ADC_CALIBRATION_SLOPE_CH7,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6, ADC_CALIBRATION_OFFSET_CH7
+#elif defined(DRV_ADC_MAX_CH_9)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1, ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,  ADC_CALIBRATION_SLOPE_CH7,  ADC_CALIBRATION_SLOPE_CH8,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6, ADC_CALIBRATION_OFFSET_CH7, ADC_CALIBRATION_OFFSET_CH8
+#elif defined(DRV_ADC_MAX_CH_10)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1, ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,  ADC_CALIBRATION_SLOPE_CH7,  ADC_CALIBRATION_SLOPE_CH8,ADC_CALIBRATION_SLOPE_CH9,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6, ADC_CALIBRATION_OFFSET_CH7, ADC_CALIBRATION_OFFSET_CH8,ADC_CALIBRATION_OFFSET_CH9
+#elif defined(DRV_ADC_MAX_CH_11)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1, ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,  ADC_CALIBRATION_SLOPE_CH7,  ADC_CALIBRATION_SLOPE_CH8,ADC_CALIBRATION_SLOPE_CH9,
+   ADC_CALIBRATION_SLOPE_CH10,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6, ADC_CALIBRATION_OFFSET_CH7, ADC_CALIBRATION_OFFSET_CH8,ADC_CALIBRATION_OFFSET_CH9,
+   ADC_CALIBRATION_OFFSET_CH10
+#elif defined(DRV_ADC_MAX_CH_12)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1, ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,  ADC_CALIBRATION_SLOPE_CH7,  ADC_CALIBRATION_SLOPE_CH8,ADC_CALIBRATION_SLOPE_CH9,
+   ADC_CALIBRATION_SLOPE_CH10, ADC_CALIBRATION_SLOPE_CH11,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6, ADC_CALIBRATION_OFFSET_CH7, ADC_CALIBRATION_OFFSET_CH8,ADC_CALIBRATION_OFFSET_CH9,
+   ADC_CALIBRATION_OFFSET_CH10,ADC_CALIBRATION_OFFSET_CH11
+#elif defined(DRV_ADC_MAX_CH_13) //12 bits use small slope
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1,  ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,  ADC_CALIBRATION_SLOPE_CH7,  ADC_CALIBRATION_SLOPE_CH8,ADC_CALIBRATION_SLOPE_CH9,
+   ADC_CALIBRATION_SLOPE_CH10, ADC_CALIBRATION_SLOPE_CH11, ADC_CALIBRATION_SLOPE_CH12,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6, ADC_CALIBRATION_OFFSET_CH7, ADC_CALIBRATION_OFFSET_CH8,ADC_CALIBRATION_OFFSET_CH9,
+   ADC_CALIBRATION_OFFSET_CH10,ADC_CALIBRATION_OFFSET_CH11, ADC_CALIBRATION_OFFSET_CH12
+#elif defined(DRV_ADC_MAX_CH_14)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1,  ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,  ADC_CALIBRATION_SLOPE_CH7,  ADC_CALIBRATION_SLOPE_CH8,ADC_CALIBRATION_SLOPE_CH9,
+   ADC_CALIBRATION_SLOPE_CH10, ADC_CALIBRATION_SLOPE_CH11, ADC_CALIBRATION_SLOPE_CH12, ADC_CALIBRATION_SLOPE_CH13,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6, ADC_CALIBRATION_OFFSET_CH7, ADC_CALIBRATION_OFFSET_CH8,ADC_CALIBRATION_OFFSET_CH9,
+   ADC_CALIBRATION_OFFSET_CH10,ADC_CALIBRATION_OFFSET_CH11, ADC_CALIBRATION_OFFSET_CH12, ADC_CALIBRATION_OFFSET_CH13
+#elif defined(DRV_ADC_MAX_CH_15)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1,  ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,  ADC_CALIBRATION_SLOPE_CH7,  ADC_CALIBRATION_SLOPE_CH8,ADC_CALIBRATION_SLOPE_CH9,
+   ADC_CALIBRATION_SLOPE_CH10, ADC_CALIBRATION_SLOPE_CH11, ADC_CALIBRATION_SLOPE_CH12, ADC_CALIBRATION_SLOPE_CH13, ADC_CALIBRATION_SLOPE_CH14,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6, ADC_CALIBRATION_OFFSET_CH7, ADC_CALIBRATION_OFFSET_CH8,ADC_CALIBRATION_OFFSET_CH9,
+   ADC_CALIBRATION_OFFSET_CH10,ADC_CALIBRATION_OFFSET_CH11, ADC_CALIBRATION_OFFSET_CH12, ADC_CALIBRATION_OFFSET_CH13, ADC_CALIBRATION_OFFSET_CH14
+#elif defined(DRV_ADC_MAX_CH_16)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1,  ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,  ADC_CALIBRATION_SLOPE_CH7,  ADC_CALIBRATION_SLOPE_CH8,ADC_CALIBRATION_SLOPE_CH9,
+   ADC_CALIBRATION_SLOPE_CH10, ADC_CALIBRATION_SLOPE_CH11, ADC_CALIBRATION_SLOPE_CH12, ADC_CALIBRATION_SLOPE_CH13, ADC_CALIBRATION_SLOPE_CH14,
+   ADC_CALIBRATION_SLOPE_CH15,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6, ADC_CALIBRATION_OFFSET_CH7, ADC_CALIBRATION_OFFSET_CH8,ADC_CALIBRATION_OFFSET_CH9,
+   ADC_CALIBRATION_OFFSET_CH10,ADC_CALIBRATION_OFFSET_CH11, ADC_CALIBRATION_OFFSET_CH12, ADC_CALIBRATION_OFFSET_CH13, ADC_CALIBRATION_OFFSET_CH14,
+   ADC_CALIBRATION_OFFSET_CH15
+#elif defined(DRV_ADC_MAX_CH_17)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1,  ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,  ADC_CALIBRATION_SLOPE_CH7,  ADC_CALIBRATION_SLOPE_CH8,ADC_CALIBRATION_SLOPE_CH9,
+   ADC_CALIBRATION_SLOPE_CH10, ADC_CALIBRATION_SLOPE_CH11, ADC_CALIBRATION_SLOPE_CH12, ADC_CALIBRATION_SLOPE_CH13, ADC_CALIBRATION_SLOPE_CH14,
+   ADC_CALIBRATION_SLOPE_CH15, ADC_CALIBRATION_SLOPE_CH16,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6, ADC_CALIBRATION_OFFSET_CH7, ADC_CALIBRATION_OFFSET_CH8,ADC_CALIBRATION_OFFSET_CH9,
+   ADC_CALIBRATION_OFFSET_CH10,ADC_CALIBRATION_OFFSET_CH11, ADC_CALIBRATION_OFFSET_CH12, ADC_CALIBRATION_OFFSET_CH13, ADC_CALIBRATION_OFFSET_CH14,
+   ADC_CALIBRATION_OFFSET_CH15,ADC_CALIBRATION_OFFSET_CH16
+#elif defined(DRV_ADC_MAX_CH_18)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1,  ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,  ADC_CALIBRATION_SLOPE_CH7,  ADC_CALIBRATION_SLOPE_CH8,ADC_CALIBRATION_SLOPE_CH9,
+   ADC_CALIBRATION_SLOPE_CH10, ADC_CALIBRATION_SLOPE_CH11, ADC_CALIBRATION_SLOPE_CH12, ADC_CALIBRATION_SLOPE_CH13, ADC_CALIBRATION_SLOPE_CH14,
+   ADC_CALIBRATION_SLOPE_CH15, ADC_CALIBRATION_SLOPE_CH16, ADC_CALIBRATION_SLOPE_CH17,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6, ADC_CALIBRATION_OFFSET_CH7, ADC_CALIBRATION_OFFSET_CH8,ADC_CALIBRATION_OFFSET_CH9,
+   ADC_CALIBRATION_OFFSET_CH10,ADC_CALIBRATION_OFFSET_CH11, ADC_CALIBRATION_OFFSET_CH12, ADC_CALIBRATION_OFFSET_CH13, ADC_CALIBRATION_OFFSET_CH14,
+   ADC_CALIBRATION_OFFSET_CH15,ADC_CALIBRATION_OFFSET_CH16, ADC_CALIBRATION_OFFSET_CH17
+#elif defined(DRV_ADC_MAX_CH_19)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1,  ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,  ADC_CALIBRATION_SLOPE_CH7,  ADC_CALIBRATION_SLOPE_CH8,ADC_CALIBRATION_SLOPE_CH9,
+   ADC_CALIBRATION_SLOPE_CH10, ADC_CALIBRATION_SLOPE_CH11, ADC_CALIBRATION_SLOPE_CH12, ADC_CALIBRATION_SLOPE_CH13, ADC_CALIBRATION_SLOPE_CH14,
+   ADC_CALIBRATION_SLOPE_CH15, ADC_CALIBRATION_SLOPE_CH16, ADC_CALIBRATION_SLOPE_CH17, ADC_CALIBRATION_SLOPE_CH18,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6, ADC_CALIBRATION_OFFSET_CH7, ADC_CALIBRATION_OFFSET_CH8,ADC_CALIBRATION_OFFSET_CH9,
+   ADC_CALIBRATION_OFFSET_CH10,ADC_CALIBRATION_OFFSET_CH11, ADC_CALIBRATION_OFFSET_CH12, ADC_CALIBRATION_OFFSET_CH13, ADC_CALIBRATION_OFFSET_CH14,
+   ADC_CALIBRATION_OFFSET_CH15,ADC_CALIBRATION_OFFSET_CH16, ADC_CALIBRATION_OFFSET_CH17, ADC_CALIBRATION_OFFSET_CH18
+#elif defined(DRV_ADC_MAX_CH_20)
+   ADC_CALIBRATION_SLOPE_CH0,  ADC_CALIBRATION_SLOPE_CH1,  ADC_CALIBRATION_SLOPE_CH2, ADC_CALIBRATION_SLOPE_CH3, ADC_CALIBRATION_SLOPE_CH4,
+   ADC_CALIBRATION_SLOPE_CH5,  ADC_CALIBRATION_SLOPE_CH6,  ADC_CALIBRATION_SLOPE_CH7,  ADC_CALIBRATION_SLOPE_CH8,ADC_CALIBRATION_SLOPE_CH9,
+   ADC_CALIBRATION_SLOPE_CH10, ADC_CALIBRATION_SLOPE_CH11, ADC_CALIBRATION_SLOPE_CH12, ADC_CALIBRATION_SLOPE_CH13, ADC_CALIBRATION_SLOPE_CH14,
+   ADC_CALIBRATION_SLOPE_CH15, ADC_CALIBRATION_SLOPE_CH16, ADC_CALIBRATION_SLOPE_CH17, ADC_CALIBRATION_SLOPE_CH18, ADC_CALIBRATION_SLOPE_CH19,
+   ADC_CALIBRATION_OFFSET_CH0, ADC_CALIBRATION_OFFSET_CH1, ADC_CALIBRATION_OFFSET_CH2, ADC_CALIBRATION_OFFSET_CH3, ADC_CALIBRATION_OFFSET_CH4,
+   ADC_CALIBRATION_OFFSET_CH5, ADC_CALIBRATION_OFFSET_CH6, ADC_CALIBRATION_OFFSET_CH7, ADC_CALIBRATION_OFFSET_CH8,ADC_CALIBRATION_OFFSET_CH9,
+   ADC_CALIBRATION_OFFSET_CH10,ADC_CALIBRATION_OFFSET_CH11, ADC_CALIBRATION_OFFSET_CH12, ADC_CALIBRATION_OFFSET_CH13, ADC_CALIBRATION_OFFSET_CH14,
+   ADC_CALIBRATION_OFFSET_CH15,ADC_CALIBRATION_OFFSET_CH16, ADC_CALIBRATION_OFFSET_CH17, ADC_CALIBRATION_OFFSET_CH18, ADC_CALIBRATION_OFFSET_CH19
+#endif // #if defined(DRV_ADC_MAX_CH_5)
+
+};
+
+
+
+/*
+ *   LID table
+ */
+ltable_entry_struct logical_data_item_table_adc[] =
+{
+	 {
+        NVRAM_EF_ADC_LID,
+        NVRAM_EF_ADC_TOTAL,
+        NVRAM_EF_ADC_SIZE,
+        NVRAM_NORMAL((kal_uint8 const *)NVRAM_EF_ADC_DEFAULT),
+        NVRAM_CATEGORY_CALIBRAT,
+        NVRAM_ATTR_AVERAGE,
+        "AD1F",
+        VER(NVRAM_EF_ADC_LID)
+    }
+};
+
+#endif  //#if !defined(DRV_ADC_OFF)
+
+#endif /* NVRAM_NOT_PRESENT */
diff --git a/mcu/custom/driver/common/adc_nvram_def.h b/mcu/custom/driver/common/adc_nvram_def.h
new file mode 100644
index 0000000..48c574c
--- /dev/null
+++ b/mcu/custom/driver/common/adc_nvram_def.h
@@ -0,0 +1,127 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * adc_nvram_def.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *    This file contains `vendor' defined logical data items stored in NVRAM.
+ *    These logical data items are used in object code of Protocol Stack software.
+ *
+ *    As for customizable logical data items, they are defined in nvram_user_config.c
+ *
+ * Author:
+ * -------
+ * 
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef __ADC_NVRAM_DEF_H__
+#define __ADC_NVRAM_DEF_H__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */ 
+
+/*
+ *   Include Headers
+ */
+
+
+/*
+ *   NVRAM Basic Headers
+ */
+#include "nvram_data_items.h"
+#include "nvram_defs.h"
+
+
+/*
+ *   User Headers
+ */
+#include "drv_features.h" 
+#include "adc_channel.h"
+
+
+/*
+ *   LID Enums
+ */
+ 
+typedef enum
+{
+    NVRAM_EF_ADC_LID                            = NVRAM_LID_GRP_ADC(0),
+}nvram_lid_adc_enum;
+
+
+/*
+ * Record Size/Total Records
+ */
+#define NVRAM_EF_ADC_TOTAL      1 
+#define NVRAM_EF_ADC_SIZE        (ADC_MAX_CHANNEL * 8)
+
+#define NVRAM_EF_ADC_LID_VERNO           "000"
+#define NVRAM_EF_ADC_LID_HASH   0xAA9E7153
+
+#ifdef __cplusplus
+}
+#endif 
+
+#endif /* __ADC_NVRAM_DEF_H__ */ 
diff --git a/mcu/custom/driver/common/adc_nvram_editor.h b/mcu/custom/driver/common/adc_nvram_editor.h
new file mode 100644
index 0000000..dfec598
--- /dev/null
+++ b/mcu/custom/driver/common/adc_nvram_editor.h
@@ -0,0 +1,163 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * adc_nvram_editor.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *    This file contains `vendor' defined logical data items stored in NVRAM.
+ *    These logical data items are used in object code of Protocol Stack software.
+ *
+ *    As for customizable logical data items, they are defined in nvram_user_config.c
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef __ADC_NVRAM_EDITOR_H__
+#define __ADC_NVRAM_EDITOR_H__
+#ifndef NVRAM_NOT_PRESENT
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */ 
+
+/*
+ *   Include Headers
+ */
+
+
+/*
+ *   NVRAM Basic Headers
+ */
+#include "nvram_data_items.h"
+ 
+/*
+ *   User Headers
+ */
+
+#include "adc_nvram_def.h"
+
+/*
+ *   Bit Level Description Language
+ */
+#ifdef GEN_FOR_PC
+
+#include "drv_features_adc.h"
+
+typedef struct
+{
+//Because of Android may update modem version on user side.
+//Do not change this structure !!
+   kal_int32 ADCSlope[ADC_MAX_CHANNEL];
+   kal_int32 ADCOffset[ADC_MAX_CHANNEL];
+}ADC_CALIDATA;
+
+#if !defined(DRV_ADC_OFF)
+BEGIN_NVRAM_DATA
+/******************************************************
+* LID_NAME
+*       NVRAM_EF_ADC_LID
+* DESCRIPTION
+*       NVRAM LID for saving calibration data of external AUXADC
+* INFORMATION
+*       Can OTA Reset: Yes
+*       Update Scenario: This LID is only updated in production line
+*******************************************************/
+LID_BIT MULTIPLE_LID VER_LID(NVRAM_EF_ADC_LID)
+ADC_CALIDATA *NVRAM_EF_ADC_TOTAL
+{
+	ADCSlope:"Slop for Each ADC Channel";
+	ADCOffset:"Offset for Each ADC Channel";
+};
+
+END_NVRAM_DATA
+#endif
+
+#endif  /* GEN_FOR_PC */
+#endif  /* !NVRAM_NOT_PRESENT */
+#endif  /* __ADC_NVRAM_EDITOR_H__ */
diff --git a/mcu/custom/driver/common/aud_I2S_config.c b/mcu/custom/driver/common/aud_I2S_config.c
new file mode 100644
index 0000000..6c9518a
--- /dev/null
+++ b/mcu/custom/driver/common/aud_I2S_config.c
@@ -0,0 +1,77 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * aud_I2S_config.c
+ *
+ * Project:
+ * --------
+ *   MAUI Project
+ *
+ * Description:
+ * ------------
+ *   Audio I2S config
+ *
+ * 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!!
+ *==============================================================================
+ *******************************************************************************/
+
+
diff --git a/mcu/custom/driver/common/aud_common.c b/mcu/custom/driver/common/aud_common.c
new file mode 100644
index 0000000..0194fcf
--- /dev/null
+++ b/mcu/custom/driver/common/aud_common.c
@@ -0,0 +1,81 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * aud_common.c
+ *
+ * Project:
+ * --------
+ *   MAUI Project
+ *
+ * Description:
+ * ------------
+ *   Common Audio Customization Parameters 
+ *
+ * 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!!
+ *==============================================================================
+ *******************************************************************************/
+
+
+
diff --git a/mcu/custom/driver/common/aud_common_config.h b/mcu/custom/driver/common/aud_common_config.h
new file mode 100644
index 0000000..966b494
--- /dev/null
+++ b/mcu/custom/driver/common/aud_common_config.h
@@ -0,0 +1,86 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * audio_common_config.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *    This file is for customers to config/customize their audio parameters to NVRAM Layer and
+ *    Driver Layer.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef __AUDIO_COMMON_CONFIG_H__
+#define __AUDIO_COMMON_CONFIG_H__
+
+
+#endif /* __AUDIO_COMMON_CONFIG_H__ */
+
diff --git a/mcu/custom/driver/common/audcoeff_default.h b/mcu/custom/driver/common/audcoeff_default.h
new file mode 100644
index 0000000..08f9224
--- /dev/null
+++ b/mcu/custom/driver/common/audcoeff_default.h
@@ -0,0 +1,303 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * audcoeff_default.h
+ *
+ * Project:
+ * --------
+ *   MAUI Project
+ *
+ * Description:
+ * ------------
+ *   The default value of audio coefficients
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef AUDCOEFF_COMMON_DOT_H
+#define AUDCOEFF_COMMON_DOT_H
+
+#include "l1audio.h"
+
+
+/*
+ * The Bluetooth DAI Hardware COnfiguration Parameter
+ */
+#define DEFAULT_BLUETOOTH_SYNC_TYPE               0
+#define DEFAULT_BLUETOOTH_SYNC_LENGTH             1
+
+#define DEFAULT_DIGITAL_MIC_CHANNEL1_PHASE        3
+#define DEFAULT_DIGITAL_MIC_CHANNEL2_PHASE        3
+/*
+phase: 0~7
+*/
+#define DEFAULT_DIGITAL_MIC_CLOCK_SELECTION       0
+/* clock selection
+0: 3P25M
+1: 1P625M
+*/
+
+#define BT_COMP_FILTER (0 << 15)
+#define BT_SYNC_DELAY  86
+
+
+/*
+ * Speech enhancement parameter
+ * BT_CARKIT (from W0643; AfterW0809, BT_CARKIT replace AUX1)
+ * AUX1 : undefined
+ * AUX2 : undefined
+ */
+
+
+#if defined(__SMART_PHONE_MODEM__)
+
+#define DEFAULT_WB_DMNR_PARAM \
+{ \
+	460, 470, 480, 490, 500, \
+	510, 520, 530, 540, 550, \
+	560, 570, 580, 590, 600, \
+	610, 620, 630, 640, 650, \
+	660, 670, 680, 690, 700, \
+	710, 720, 730, 740, 750, \
+	760, 770, 780, 790, 800, \
+	810, 820, 830, 840, 850, \
+	860, 870, 880, 890, 900, \
+	910, 920, 930, 940, 950, \
+	960, 970, 980, 990, 1000, \
+	1010, 1020, 1030, 1040, 1050, \
+	1060, 1070, 1080, 1090, 1200, \
+	1210, 1220, 1230, 1240, 1250, \
+	1260, 1270, 1280, 1290, 1300, \
+	1310		\
+}
+
+#define DEFAULT_LSPK_WB_DMNR_PARAM \
+{ \
+	460, 470, 480, 490, 500, \
+	510, 520, 530, 540, 550, \
+	560, 570, 580, 590, 600, \
+	610, 620, 630, 640, 650, \
+	660, 670, 680, 690, 700, \
+	710, 720, 730, 740, 750, \
+	760, 770, 780, 790, 800, \
+	810, 820, 830, 840, 850, \
+	860, 870, 880, 890, 900, \
+	910, 920, 930, 940, 950, \
+	960, 970, 980, 990, 1000, \
+	1010, 1020, 1030, 1040, 1050, \
+	1060, 1070, 1080, 1090, 1200, \
+	1210, 1220, 1230, 1240, 1250, \
+	1260, 1270, 1280, 1290, 1300, \
+	1310		\
+}
+
+#define DEFAULT_DMNR_PARAM \
+{ \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	68, 0, 0, 0 \
+}
+
+#define DEFAULT_LSPK_DMNR_PARAM \
+{ \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	0, 0, 0, 0, 0, \
+	68, 0, 0, 0 \
+}
+
+#endif
+
+#endif // ... AUDCOEFF_COMMON_DOT_H
diff --git a/mcu/custom/driver/common/combo_flash_defs.h b/mcu/custom/driver/common/combo_flash_defs.h
new file mode 100644
index 0000000..e59d7a4
--- /dev/null
+++ b/mcu/custom/driver/common/combo_flash_defs.h
@@ -0,0 +1,238 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   combo_flash_defs.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines the data structures used in ComboMCP
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef _COMBO_FLASH_DEFS_H_
+#define _COMBO_FLASH_DEFS_H_
+
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"
+#include "custom_MemoryDevice.h"
+#include "DrvFlash.h"
+#include "flash_opt.h"
+
+#if defined(__SERIAL_FLASH__) || (defined(_NAND_FLASH_BOOTING_) && defined(__NAND_MDL_APPEND__))
+
+#if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+#include "br_sw_types.h"
+#include "br_GFH.h"
+#endif
+
+#define CMEM_FLASH_ID_LEN_NOR  4
+#define CMEM_FLASH_ID_LEN_NAND 8
+#define CMEM_REGION_INFO_LEN   8
+#define CMEM_BLOCK_INFO_LEN    8
+#define CMEM_BANK_INFO_LEN     8
+#define CMEM_BLOCK_INFO_LEN    8
+#if defined(_NAND_FLASH_BOOTING_) && defined(__NAND_MDL_APPEND__)
+#define COMBO_MEM_ID_VER       2  // identify block/page/spare size MDL format
+#else
+#define COMBO_MEM_ID_VER       1
+#endif
+#define COMBO_MEM_NOR_VER      2
+#define COMBO_MEM_IDENTITY_ID     "COMBOMEM_ID"
+#define COMBO_MEM_IDENTITY_NOR    "COMBOMEM_NOR"
+#define COMBO_MEM_ID_GFH_HEADER   GFH_HEADER(GFH_CMEM_ID_INFO, 1)
+#define COMBO_MEM_NOR_GFH_HEADER  GFH_HEADER(GFH_CMEM_NOR_INFO, 1)
+
+#ifdef __SERIAL_FLASH__
+#include "combo_sfi_defs.h"
+#endif
+
+  #define COMBO_MEM_DEVICE_COUNT 1
+
+//-----------------------------------------------------------------------------
+// Combo MCP ID list
+//-----------------------------------------------------------------------------
+
+// Union: CMEMFlashID
+typedef union   {
+    kal_uint8  NAND[CMEM_FLASH_ID_LEN_NAND];
+    kal_uint16 NOR[CMEM_FLASH_ID_LEN_NOR];
+} CMEMFlashID;
+
+#if defined(_NAND_FLASH_BOOTING_) && defined(__NAND_MDL_APPEND__)
+typedef struct   {	
+    kal_uint16  page_size;
+    kal_uint16  spare_size;
+	kal_uint16  block_size;
+} CMEMFlashInfo;
+#endif
+// Type: CMEMEntryID
+typedef struct {
+    kal_uint8       DeviceType;  // rename to Flash Type: NOR / NAND /EMMC
+    kal_uint8       IDLength;
+#if defined(_NAND_FLASH_BOOTING_) && defined(__NAND_MDL_APPEND__)
+		CMEMFlashInfo	FlashDevice_Info; //include block, page and spare size
+#endif	
+    #if defined(_NAND_FLASH_BOOTING_)|| defined(__SERIAL_FLASH__)
+    kal_uint8       ID[CMEM_FLASH_ID_LEN_NAND];
+    #else
+    kal_uint16      ID[CMEM_FLASH_ID_LEN_NOR];
+    #endif
+} CMEMEntryID;
+
+// Type: CMEMEntryIDList
+typedef struct {
+    #if !defined(__SV5_ENABLED__) && !defined(__SV5X_ENABLED__)
+    char               m_identifier[16];   // MTK_CMB_ID_INFO
+    #endif
+    unsigned int       m_ver;
+    unsigned int       Count;
+    CMEMEntryID        List[COMBO_MEM_DEVICE_COUNT];
+} CMEMEntryIDList;
+
+//-----------------------------------------------------------------------------
+// Combo MCP SW Settings
+//-----------------------------------------------------------------------------
+// Type: FlashBlockLayout
+typedef struct  {
+    kal_uint32  Offset;
+    kal_uint32  Size;
+} FlashBlockLayout;
+
+// Type: CMEMEntryNOR
+typedef struct {
+    kal_uint16          FDMType;       // rename to Device Type: DEFAULT / SIB
+    kal_uint16          PageBufferSize;   // Autogen from MDL
+    kal_uint32          UniformBlocks;    // Uniform Block Layout
+    FlashBlockLayout    BlockLayout[CMEM_REGION_INFO_LEN];
+    FlashBankInfo       BankInfo[CMEM_BANK_INFO_LEN];
+} CMEMEntryNOR;
+
+// Type: CMEMEntryNORList
+typedef struct {
+    #if !defined(__SV5_ENABLED__) && !defined(__SV5X_ENABLED__)
+    char               m_identifier[16];   // MTK_CMB_ID_INFO
+    #endif
+    unsigned int       m_ver;
+    unsigned int       Count;
+    CMEMEntryNOR       List[COMBO_MEM_DEVICE_COUNT];
+} CMEMEntryNORList;
+
+
+#endif // defined(__COMBO_MEMORY_SUPPORT__) || defined(__SERIAL_FLASH__)
+
+#endif // ifndef _COMBO_FLASH_DEFS_H_
+
diff --git a/mcu/custom/driver/common/combo_flash_init.c b/mcu/custom/driver/common/combo_flash_init.c
new file mode 100644
index 0000000..6641097
--- /dev/null
+++ b/mcu/custom/driver/common/combo_flash_init.c
@@ -0,0 +1,460 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   combo_flash_init.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines the ComboMCP Init function
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#include "custom_MemoryDevice.h"
+#include "flash_opt.h"
+
+#if defined(__SERIAL_FLASH__) || (defined(_NAND_FLASH_BOOTING_) && defined(__NAND_MDL_APPEND__))
+#include "combo_flash_init.h"
+#include "combo_flash_defs.h"
+  #if (!defined(_NAND_FLASH_BOOTING_))
+  #include "flash_cfi.h"
+  #include "flash_cfi_internal.h"
+  #include "flash_mtd.h"
+  #endif
+  #if defined(NAND_SUPPORT)
+  #ifdef __UBL__
+    extern void NFI_ReadID(kal_uint32 id_num, kal_uint8* id_data);
+  #else
+    extern kal_bool DAL_is_initialized;
+  	extern kal_int32 DAL_init (void);
+    extern void MTD_ReadID(kal_uint32 id_num,kal_uint8* id_data);
+  #endif
+  #endif
+#if defined(__SERIAL_FLASH__)
+#include "flash_sf.h"
+#endif
+
+#if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+#include "br_GFH_cmem_id_info.h"
+#endif /* __SV5_ENABLED__ */
+
+//-----------------------------------------------------------------------------
+// MCP ID Table
+//-----------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------
+// [Section] RVCT and GCC
+//-----------------------------------------------------------------------------
+#if defined(__MTK_TARGET__)
+#if defined(__SV5_ENABLED__)|| defined(__SV5X_ENABLED__)
+  #if defined(__UBL__)
+	#if defined (__MINI_BOOTLOADER__)
+    #define __sf_section_RODATA_GFH             __attribute__ ((section ("BOOTLOADER_GFH_EXT")))
+	#elif defined (	__EXT_BOOTLOADER__)
+	#define __sf_section_RODATA_GFH             __attribute__ ((section ("EXT_BOOTLOADER_GFH_EXT")))
+	#endif
+  #else
+    #define __sf_section_RODATA_GFH             __attribute__ ((section ("MAUI_GFH_EXT")))
+  #endif
+#else // SV3
+    // Method1
+    // #define __sf_section_RODATA_GFH             __attribute__ ((section ("SECOND_PART_RODATA")))
+    // Method2
+    #define __sf_section_RODATA_GFH
+#endif
+#else //defined(__MTK_TARGET__)
+    /* Reserve for MoDIS */
+    #define __sf_section_RODATA_GFH
+#endif  // defined(__MTK_TARGET__)
+
+#if defined(__MTK_TARGET__)
+    #define __sf_section_RWDATA_EMI             __attribute__ ((section ("EMIINITRW")))
+    #define __sf_section_SECOND_PART            /* Second part region is removed */
+    #define __sf_section_EMI                    __attribute__ ((section ("EMIINITCODE")))
+#else
+/* Reserve for MoDIS */
+    #define __sf_section_RWDATA_EMI
+    #define __sf_section_SECOND_PART
+    #define __sf_section_EMI
+#endif  // __MTK_TARGET__
+
+
+
+#define  COMBO_MEM_TYPE_MODIFIER  __sf_section_RODATA_GFH const
+#define  COMBO_MEM_INST_NAME    combo_mem_id_list
+
+#if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+  #define  COMBO_MEM_TYPE_NAME  GFH_CMEM_ID_INFO_v1
+#else
+  #define  COMBO_MEM_TYPE_NAME  CMEMEntryIDList
+#endif
+
+#if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+#define COMBO_MEM_STRUCT_HEAD  COMBO_MEM_ID_GFH_HEADER, { COMBO_MEM_ID_VER, COMBO_MEM_DEVICE_COUNT, {
+#define COMBO_MEM_STRUCT_FOOT  } }
+#else
+#define COMBO_MEM_STRUCT_HEAD  COMBO_MEM_IDENTITY_ID, COMBO_MEM_ID_VER, COMBO_MEM_DEVICE_COUNT, {
+#define COMBO_MEM_STRUCT_FOOT  }
+#endif
+
+
+#include "combo_flash_id.h"       // ==== Instantiate ID table
+
+
+
+//-----------------------------------------------------------------------------
+// External Functions
+//-----------------------------------------------------------------------------
+extern kal_uint32 custom_get_fat_addr(void);
+
+//-----------------------------------------------------------------------------
+// Internal Functions
+//-----------------------------------------------------------------------------
+// ===[EMI/SFI Initialization]===
+kal_int32 CMEM_EMIINIT_Index(void);
+void CMEM_EMIINIT_ReadID(void *BaseAddr, kal_uint16 *flashid);
+
+//-----------------------------------------------------------------------------
+// Internal Variables
+//-----------------------------------------------------------------------------
+#define CMEM_INVALID_INDEX -1
+
+
+
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Determine whether SF ID is valid.
+    Apply for MT6250 because after command issue(ex: Read ID), Data pins are in floating, may read trasient value instead of 0x00 or 0xFF.
+  @retval
+    KAL_TRUE: the device ID0 is valid.
+    KAL_FALSE: the device ID0 is not valid.  
+*/
+__sf_section_SECOND_PART kal_bool CMEM_CheckValidDeviceID(kal_uint8 *id)
+{
+		// Serial Flash
+#if defined(__SERIAL_FLASH__)
+    kal_int32 i, j;
+    const CMEMEntryID *id_list=NULL;
+	
+#if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+    id_list=combo_mem_id_list.m_data.List;
+#else
+    id_list=combo_mem_id_list.List;
+#endif	
+    // seach CMEM list for specific Flash ID
+    for (i=0; i<COMBO_MEM_DEVICE_COUNT; i++)	{
+        // Check 1: Compare ID
+        for (j=0; j<id_list[i].IDLength; j++) {
+            if (id_list[i].ID[j]!=id[j]) break;
+        }
+        // Check 2: Compare RegionInfo
+        if (j==id_list[i].IDLength)   {
+            // TBD: Compare RegionInfo
+            return KAL_TRUE;
+        }
+    }  
+#endif //defined(__SERIAL_FLASH__)
+    return KAL_FALSE;
+}
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+  Seach device in the combo MCP list by Flash ID.
+    1. Read NOR/NAND flash ID
+    2. Lookup ID table and return the index to the found entry.
+
+  @retval
+    The index to the found entry.
+    -1 : ID not found
+  @remars
+    If combo MCP was not turned on, the returned index is always 0.
+*/
+
+__sf_section_SECOND_PART kal_int32 CMEM_Index(void)
+{
+    return 0;
+}
+
+
+__sf_section_SECOND_PART const CMEMEntryID *CMEM_GetIDEntry(kal_uint32 index)
+{
+#if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+        return &combo_mem_id_list.m_data.List[index];
+#else
+        return &combo_mem_id_list.List[index];
+#endif
+}
+
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Read Flash ID
+  @param[in] BaseAddr Base address to the Flash
+  @param[out] flashid Flash ID
+  @remarks
+    This function is only allowed in EMI/SFI init stage.
+*/
+__sf_section_EMI void CMEM_EMIINIT_ReadID(void *BaseAddr, kal_uint16 *flashid)
+{
+    // Serial Flash
+    return;
+}
+
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Determine whether SF ID is valid.
+    Apply for MT6250 because after command issue(ex: Read ID), Data pins are in floating, may read trasient value instead of 0x00 or 0xFF.
+  @retval
+    KAL_TRUE: the device ID0 is valid.
+    KAL_FALSE: the device ID0 is not valid.  
+*/
+__sf_section_EMI kal_bool CMEM_EMIINIT_CheckValidDeviceID(kal_uint8 *id)
+{
+		// Serial Flash
+#if defined(__SERIAL_FLASH__)
+    kal_int32 i, j;
+    const CMEMEntryID *id_list=NULL;
+	// seach CMEM list for specific Flash ID
+#if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+    id_list=combo_mem_id_list.m_data.List;
+#else
+    id_list=combo_mem_id_list.List;
+#endif
+
+    for (i=0; i<COMBO_MEM_DEVICE_COUNT; i++)    {
+        // Check 1: Compare ID
+        for (j=0; j<id_list[i].IDLength; j++) {
+            if (id_list[i].ID[j]!=id[j]) break;            
+        }
+        // Check 2: Compare RegionInfo
+        if (j==id_list[i].IDLength)   {
+            // TBD: Compare RegionInfo
+           return KAL_TRUE;
+        }
+    }
+  
+#endif //defined(__SERIAL_FLASH__)
+    return KAL_FALSE;
+}
+
+
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Search device ID list
+  @retval
+    The index to the found device ID.
+    -1: device not found
+  @remarks
+    This function is only allowed in EMI/SFI init stage.
+*/
+
+__sf_section_EMI kal_int32 CMEM_EMIINIT_Index(void)
+{
+    return 0;
+}
+
+
+
+#if defined(_NAND_FLASH_BOOTING_) && defined(__NAND_MDL_APPEND__)
+kal_bool CMEM_GetflashInfo(kal_uint8* id, CMEMFlashInfo* st)
+{
+	const CMEMEntryID *flash_id_list=NULL;
+	kal_uint32 icount, l_index;
+
+	if((id == NULL) || (st == NULL))
+		return KAL_FALSE;
+	
+	#if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+        flash_id_list = combo_mem_id_list.m_data.List;
+	#else
+        flash_id_list = combo_mem_id_list.List;
+	#endif
+
+	for(l_index = 0; l_index < COMBO_MEM_DEVICE_COUNT; l_index++)
+	{
+		for(icount = 0; icount < flash_id_list[l_index].IDLength; icount++)
+		{
+			if (flash_id_list[l_index].ID[icount] != id[icount])
+				break;
+		}
+
+		if (icount == flash_id_list[l_index].IDLength)
+		{
+			break;
+		}
+	}
+
+	if(l_index == COMBO_MEM_DEVICE_COUNT)
+		return KAL_FALSE;
+
+	st->block_size = flash_id_list[l_index].FlashDevice_Info.block_size;
+	st->page_size = flash_id_list[l_index].FlashDevice_Info.page_size;
+	st->spare_size = flash_id_list[l_index].FlashDevice_Info.spare_size;
+    	
+	return KAL_TRUE;
+}
+#endif
+
+
+#endif //  defined(__COMBO_MEMORY_SUPPORT__) || defined(__SERIAL_FLASH__) || defined(__NAND_MDL_APPEND__)
diff --git a/mcu/custom/driver/common/combo_flash_init.h b/mcu/custom/driver/common/combo_flash_init.h
new file mode 100644
index 0000000..79f91bd
--- /dev/null
+++ b/mcu/custom/driver/common/combo_flash_init.h
@@ -0,0 +1,183 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   combo_flash_init.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines the ComboMCP Init function
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef __COMBO_FLASH_INIT_H__
+#define __COMBO_FLASH_INIT_H__
+
+#include "flash_opt.h"
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"
+#include "combo_flash_defs.h"
+
+#if defined(__SERIAL_FLASH__) || (defined(_NAND_FLASH_BOOTING_) && defined(__NAND_MDL_APPEND__))
+
+#include "custom_MemoryDevice.h"
+#include "fat_fs.h"
+#include "DrvFlash.h"
+
+// Naming Rule: Camo
+typedef enum   {
+    CMEM_NO_ERROR=0,
+    CMEM_ERR_ID_NOT_FOUND,
+    CMEM_ERR_FDM_MISMATCH,
+    CMEM_ERR_MTD_MISMATCH,
+    CMEM_ERR_FDM_INIT_FAIL,
+    CMEM_ERR_MTD_INIT_FAIL,
+    CMEM_ERR_FDM_REGION_INFO_OVERFLOW
+} Enum_CMEM_StatusCode;
+
+typedef enum   {
+    CMEM_TYPE_END_OF_LIST=0,
+    CMEM_TYPE_NAND,
+    CMEM_TYPE_NOR,
+    CMEM_TYPE_SERIAL_NOR_FLASH
+} Enum_CMEM_Type;
+
+
+//Sync with original flash_opt.h and MemoryDeviceList
+//Ransense series is phase out
+typedef enum   {
+    CMEM_FDM_NOR_DEFAULT=0,	//for serial flash
+    CMEM_NOR_CS_INTEL_SERIES,
+    CMEM_NOR_CS_INTEL_SIBLEY,
+    CMEM_NOR_CS_RAM_DISK,
+    CMEM_NOR_CS_SST,
+    CMEM_NOR_CS_AMD_SERIES,
+    CMEM_NOR_CS_SPANSION_PL_J,
+    CMEM_NOR_CS_SPANSION_PL_N,
+    CMEM_NOR_CS_SPANSION_WS_N,
+    CMEM_NOR_CS_SPANSION_WS_P,
+    CMEM_NOR_CS_SPANSION_GL_A,
+    CMEM_NOR_CS_SPANSION_GL_N,
+    CMEM_NOR_CS_SPANSION_NS_N,
+    CMEM_NOR_CS_SPANSION_NS_P,
+    CMEM_NOR_CS_SPANSION_NS_J,
+    CMEM_NOR_CS_TOSHIBA,
+    CMEM_NOR_CS_TOSHIBA_TV,
+    CMEM_NOR_CS_TOSHIBA_TY,
+    CMEM_NOR_CS_SILICON7,
+    CMEM_NOR_CS_SAMSUNG_SPANSION_NS_J_LIKE,
+    CMEM_NOR_CS_SPANSION_VS_R,
+    CMEM_NOR_CS_SPANSION_VS_R64,
+    CMEM_NOR_CS_SPANSION_WS_R
+   
+} Enum_CMEM_CommSeries;
+
+// Functions Exported to MAUI
+extern kal_int32 ComboMem_Initialize(void);
+extern kal_int32 CMEM_Init_FullDriver(void);
+extern kal_uint32 CMEM_BlockSize(kal_uint32 address);
+
+kal_int32 CMEM_Index(void);
+const CMEMEntryID *CMEM_GetIDEntry(kal_uint32 index);
+
+#endif // (defined(__COMBO_MEMORY_SUPPORT__) || defined(__SERIAL_FLASH__))
+
+// Function exported to EMI/SFI
+kal_int32 CMEM_EMIINIT_Index(void);
+kal_bool CMEM_CheckValidDeviceID(kal_uint8 *id);
+kal_bool CMEM_EMIINIT_CheckValidDeviceID(kal_uint8 *id);
+
+#if defined(_NAND_FLASH_BOOTING_) && defined(__NAND_MDL_APPEND__)
+kal_bool CMEM_GetflashInfo(kal_uint8* id, CMEMFlashInfo* st);
+#endif
+
+#endif // __COMBO_FLASH_INIT_H__
diff --git a/mcu/custom/driver/common/combo_flash_nor.c b/mcu/custom/driver/common/combo_flash_nor.c
new file mode 100644
index 0000000..3db20ef
--- /dev/null
+++ b/mcu/custom/driver/common/combo_flash_nor.c
@@ -0,0 +1,1434 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   combo_flash_nor.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines the ComboMCP Init function for NAND/NOR FDM
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#include "custom_MemoryDevice.h"
+#include "flash_opt.h"
+
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"
+#include "combo_flash_init.h"
+#include "fat_fs.h"
+#include "combo_flash_defs.h"
+
+#include "flash_mtd_sf_dal.h"
+#include "flash_mtd_pf_dal.h"
+
+#if defined(__SERIAL_FLASH__)
+#if ( !defined(__FS_SYSDRV_ON_NAND__) && !defined( _NAND_FLASH_BOOTING_) && !defined(__EMMC_BOOTING__))
+
+#include "flash_sf.h"
+#include "DrvFlash.h"
+#include "flash_disk_internal.h" 
+
+#if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+#include "br_GFH_cmem_nor_info.h"
+#endif /* __SV5_ENABLED__ || __SV5X_ENABLED__ */
+
+#include "DrvFlash_UT.h" //locateSector_ext for basic load
+#include "flash_mtd_ut.h" //__BASIC_LOAD_FLASH_TEST__
+
+#include "custom_nvram_int_config.h"  /* To get NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM for MSTABLE_ENTRY_NUM */
+
+
+
+
+/*-------------------------------------------------------------------
+ * MS table size
+ *
+ * MS table size should be synchronized with user's requirement. The only one user is NVRAM.
+ *
+ * NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM defines the maximum record size in NVRAM
+ * (in custom_nvram_config.h). NVRAM should call NOR_ResumeSectorState (by FS_Commit)
+ * after it writes maximum NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM sectors with protection
+ * mode to ensure the integrity of a record.
+ *
+ * MSTABLE_ENTRY_NUM number is based on the worst senario: All FAT entries of clusters
+ * of logical sectors are located in different physical sectors. In other word, we need
+ * to write additional N sectors to update FAT after we write N data sectors. The other
+ * 1 sector is for directory entry update.
+ *
+ * TODO: Use auto-gen to compute most suitable MS table size. Because the number of
+ * sectors for FAT may be smaller than NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM. For example,
+ * 64KB disk only needs 1 sector to store FAT.
+ *---------------------------------------------------------- W08.50 --*/
+ 
+#define MS_TABLE_ENTRY_NUM    (NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM * 2 + 1)
+
+
+//-----------------------------------------------------------------------------
+// Combo MCP related
+//-----------------------------------------------------------------------------
+static kal_int32 cmem_nor_index;        // Do not use this variabe during EMI init stage
+const CMEMEntryID *cmem_id;
+
+//-----------------------------------------------------------------------------
+// MCP Serial/NOR Flash Driver settings
+//-----------------------------------------------------------------------------
+
+#if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+#if defined(__UBL__)
+#define __sf_section_RODATA_GFH     __attribute__ ((section ("BOOTLOADER_GFH_EXT")))
+#define __sf_section_RAM            __attribute__ ((section ("SECOND_PART")))
+#else
+#define __sf_section_RODATA_GFH     __attribute__ ((section ("MAUI_GFH_EXT")))
+#define __sf_section_RAM            __attribute__ ((section ("SECOND_PART")))
+#endif
+#else  //__SV5_ENABLED__ || __SV5X_ENABLED__
+/* SV3 */
+
+// Method1
+// #define __sf_section_RODATA_GFH    __attribute__ ((section ("SECOND_PART_RODATA")))
+// Method2
+#define __sf_section_RODATA_GFH
+
+#define __sf_section_RAM           __attribute__ ((section ("SECOND_PART")))
+#endif //__SV5_ENABLED__ || __SV5X_ENABLED__
+
+
+
+
+
+#if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+  #define  COMBO_MEM_TYPE_NAME  GFH_CMEM_NOR_INFO_v1
+#else
+  #define  COMBO_MEM_TYPE_NAME  CMEMEntryNORList
+#endif
+
+#define COMBO_MEM_INST_NAME combo_mem_sw_list
+#define COMBO_MEM_TYPE_MODIFIER __sf_section_RODATA_GFH static const
+
+#if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+#define COMBO_MEM_STRUCT_HEAD  COMBO_MEM_NOR_GFH_HEADER, { COMBO_MEM_NOR_VER, COMBO_MEM_DEVICE_COUNT, {
+#define COMBO_MEM_STRUCT_FOOT  } }
+#else
+#define COMBO_MEM_STRUCT_HEAD  COMBO_MEM_IDENTITY_NOR, COMBO_MEM_NOR_VER, COMBO_MEM_DEVICE_COUNT, {
+#define COMBO_MEM_STRUCT_FOOT  }
+#endif
+
+
+#include "combo_flash_config.h"    // ==== Instantiate NOR flash table
+
+static const CMEMEntryNOR *nor_list=NULL;
+
+
+//-----------------------------------------------------------------------------
+// Driver Interface and Driver Data
+//-----------------------------------------------------------------------------
+// System Info
+#if !((defined(__FUE__) && defined(__FOTA_DM__)) || defined(__UBL__))
+//---------------------------------------
+// Part 1: NOR FDM Driver
+//---------------------------------------
+FS_Driver NORFlashDriver;           // FDM driver interface
+NOR_FLASH_DRV_Data FlashDriveData;  // FDM driver data
+kal_uint32 TOTAL_BLOCKS;            // Local define
+kal_uint32 TOTAL_SECTORS;           // Local define
+kal_uint32 NOR_LARGEST_BLOCK_SIZE;  // Local define (to replace NOR_BLOCK_SIZE)
+static kal_uint16 PAGE_SIZE;        // Local define (CMEM only)
+#ifdef __INTEL_SIBLEY__
+kal_uint8 FDMBuffer[1024];          // FDM buffer
+#else
+kal_uint8 FDMBuffer[512];           // FDM buffer
+#endif
+static kal_uint16 AVAILSECTORS[CMEM_MAX_BLOCKS];     // Number of avail sectors in each block
+static kal_uint16 VALIDSECTORS[CMEM_MAX_BLOCKS];     // Number of valid sectors in each block
+static kal_uint8  SectorMap[CMEM_MAX_SECTORS];       // Address translation map
+
+#if defined(__ERASE_QUEUE_ENABLE__)
+static NOR_EraseInfo EraseBlockQueue[SNOR_ERASE_QUEUE_SIZE];   // Erase queue
+#endif
+
+static FlashRegionInfo RegionInfo[CMEM_REGION_INFO_LEN]; // RegionInfo[] assigned to FDM data
+
+#elif (defined(__FUE__) || defined(__EXT_BOOTLOADER__)) && defined(__FOTA_DM__)
+NOR_FLASH_DRV_Data FlashDriveData;
+#endif // !((defined(__FUE__) && defined(__FOTA_DM__)) || defined(__UBL__))
+
+static const FlashBlockLayout *BlockLayout;              // BlockLayout read from MCP list
+const static FlashBankInfo *BankInfo;
+
+static MS_ENTRY MSEntryTable[MS_TABLE_ENTRY_NUM];
+
+//---------------------------------------
+// Part 2: NOR MTD driver
+//---------------------------------------
+kal_uint32 PAGE_BUFFER_SIZE;              // Global Var. used by mtd driver
+
+#ifdef __SERIAL_FLASH__
+    NOR_MTD_Driver NORFlashMtd;           // SF driver interface
+    SF_MTD_Data mtdflash;                 // SF driver data
+    SF_Status StatusMap[SF_SR_COUNT];     // status map assigned to SF data (shall be read only after initialziation, it's shareable)
+    SF_MTD_CMD sf_dal_data_cmd;           // command set assiged to SF data (shall be read only after initialziation, it's shareable)
+#else
+    NOR_MTD_Driver NORFlashMtd;           // ADM driver interface
+    PF_MTD_Data mtdflash;                 // ADM driver data was instantiated in flash_mtd.amd.c or flash_mtd.intel.c.
+    PF_Status StatusMap[PF_SR_COUNT];
+    PF_MTD_CMD pf_dal_data_cmd; 		  // command set assiged to PF data (shall be read only after initialziation, it's shareable)
+#endif
+
+//---------------------------------------
+// Part 3: NOR RAW Disk FDM/MTD driver
+//---------------------------------------
+#ifdef __NOR_SUPPORT_RAW_DISK__
+PF_MTD_Data FlashDiskDriveData[NOR_BOOTING_NOR_DISK_NUM];
+#ifdef __SERIAL_FLASH__
+static SF_MTD_Data mtdFlashDisk[NOR_BOOTING_NOR_DISK_NUM];
+#else  // __SERIAL_FLASH__
+static NOR_Flash_MTD_Data mtdFlashDisk[NOR_BOOTING_NOR_DISK_NUM];
+#endif // __SERIAL_FLASH__
+#endif // __NOR_SUPPORT_RAW_DISK__
+
+#if defined(__NOR_SUPPORT_RAW_DISK__) && defined(NOR_BOOTING_NOR_DISK_NUM)
+#if (NOR_BOOTING_NOR_DISK_NUM>0)
+FlashRegionInfo Disk0RegionInfo[CMEM_REGION_INFO_LEN];
+#endif /* NOR_BOOTING_NOR_DISK_NUM>0 */
+#if (NOR_BOOTING_NOR_DISK_NUM>1)
+FlashRegionInfo Disk1RegionInfo[CMEM_REGION_INFO_LEN];
+#endif // NOR_BOOTING_NOR_DISK_NUM
+#endif // __NOR_SUPPORT_RAW_DISK__
+
+//---------------------------------------
+// Part 4: FOTA
+//---------------------------------------
+
+//---------------------------------------
+// Part 5: NOR Full Driver
+//---------------------------------------
+// FDM driver data
+static FlashRegionInfo EntireDiskRegionInfo[CMEM_REGION_INFO_LEN];
+NOR_FLASH_DISK_Data EntireDiskDriveData;
+
+#ifdef __SERIAL_FLASH__
+    SF_MTD_Data EntireDiskMtdData;   // SF MTD driver data
+#else
+    PF_MTD_Data EntireDiskMtdData;   // ADM MTD driver data
+#endif
+
+//-----------------------------------------------------------------------------
+// Internal Functions
+//-----------------------------------------------------------------------------
+// NOR Flash Driver Initialization
+
+// 1. Entry Function
+kal_int32 CMEM_Init_NOR(void);        // MAUI
+kal_int32 CMEM_Init_FullDriver(void); // MAUI or BOOTLOADER (for Card Download and RAW disk)
+kal_int32 CMEM_Init_FOTA(void);       // FOTA with MAUI
+void      CMEM_Init_FUE(void);        // FOTA update engine
+
+// 1.1 Common initilaization of the entry function
+void      CMEM_Init_nor_list(void);
+
+// ---<NOR>---
+// 2. NOR FDM Initialization
+kal_int32 CMEM_Init_NOR_FDM_Common(void);
+kal_int32 CMEM_Init_NOR_FDM_NonSIB(void);
+kal_int32 CMEM_Init_NOR_FDM_SIB(void);
+
+// 3. NOR MTD Initialization
+kal_int32 CMEM_Init_NOR_MTD_Common(void);
+kal_int32 CMEM_Init_NOR_MTD_SF(void);
+kal_int32 CMEM_Init_NOR_MTD_ADMUX(void);
+
+// 4. NOR RAW Disk Initialization
+kal_int32 CMEM_Init_NOR_RAWDisk_Common(void);
+kal_int32 CMEM_Init_NOR_RAWDisk_SF(void);
+kal_int32 CMEM_Init_NOR_RAWDisk_ADMUX(void);
+
+// 5. EMI-INIT-NOR-driver
+kal_uint32 EMIINIT_CMEM_BlockSize(kal_uint32 address);
+kal_uint32 CMEM_NOR_Construct_RegionInfo_Internal(
+        kal_uint32 baseaddr,
+        kal_uint32 length,
+        FlashRegionInfo *regioninfo,
+        const FlashBlockLayout* blocklayout);
+kal_int32 NOR_Construct_RegionInfo(kal_uint32 baseaddr, kal_uint32 length, FlashRegionInfo *regioninfo);
+kal_int32 EMIINIT_CMEM_NOR_Construct_RegionInfo(kal_uint32 baseaddr, kal_uint32 length, FlashRegionInfo *regioninfo);
+
+//-----------------------------------------------------------------------------
+// External Function
+//-----------------------------------------------------------------------------
+extern kal_uint32 custom_get_fat_addr(void);
+extern kal_uint32 INT_RetrieveFlashBaseAddr(void);
+extern kal_uint32 custom_get_fat_len(void);
+extern kal_uint32 custom_get_fat_addr(void);
+
+#if !((defined(__FUE__) && defined(__FOTA_DM__)) || defined(__UBL__))
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    NOR Flash MTD interface/data common initialization
+  @retval
+    CMEM_NO_ERROR: Success
+*/
+kal_int32 CMEM_Init_NOR_MTD_Common(void)
+{
+    // 1. <DATA> Signature
+    mtdflash.Signature = ~((kal_uint32)RegionInfo);
+
+    // 2. <DATA> Page Buffer and Base Address
+#if defined(__MTK_TARGET__)
+   PAGE_BUFFER_SIZE = nor_list[cmem_nor_index].PageBufferSize;
+
+   mtdflash.BaseAddr = (BYTE *)(INT_RetrieveFlashBaseAddr() + NOR_FLASH_BASE_ADDRESS);
+#endif // __MTK_TARGET__
+
+    // 3. <DATA> RegionInfo and BankInfo
+   mtdflash.RegionInfo = (FlashRegionInfo *)RegionInfo;
+
+   return CMEM_NO_ERROR;
+}
+
+#if defined(__SERIAL_FLASH__)
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Serial NOR Flash MTD interface/data initialization
+  @retval
+    CMEM_NO_ERROR: Success
+    CMEM_ERR_MTD_INIT_FAIL: Fail
+*/
+kal_int32 CMEM_Init_NOR_MTD_SF(void)
+{
+    kal_int32 result;
+
+    // Assign MTD driver to FDM data
+    FlashDriveData.MTDDriver = &NORFlashMtd;
+
+    // Allocate status map and command for MTD data
+    mtdflash.StatusMap = &StatusMap[0];
+    mtdflash.CMD = &sf_dal_data_cmd;
+
+    // serial Flash driver will initialize the interface/data by its own.
+    result=SF_DAL_Init_Driver(
+         &NORFlashMtd,   // Driver Interface (to FDM)
+         &mtdflash,      // Driver Data
+         (INT_RetrieveFlashBaseAddr() + NOR_FLASH_BASE_ADDRESS),   // Base Address
+         nor_list[cmem_nor_index].UniformBlocks);                  // Uniform Block
+
+    if (result==FS_FLASH_MOUNT_ERROR)    {
+      return CMEM_ERR_MTD_INIT_FAIL;
+    }
+    return CMEM_NO_ERROR;
+}
+
+#else // __SERIAL_FLASH__
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    AMDUX NOR Flash MTD interface/data initialization
+*/
+kal_int32 CMEM_Init_NOR_MTD_ADMUX(void)
+{
+
+   kal_int32 result;
+
+   // Assign MTD driver to FDM data
+    FlashDriveData.MTDDriver = &NORFlashMtd;
+
+   // Allocate status map and command for MTD data
+   mtdflash.StatusMap = StatusMap;
+   mtdflash.CMD = &pf_dal_data_cmd;
+
+   // Admux NOR Flash driver will initialize the interface/data by its own.
+   result=ADMUX_DAL_Init_Driver(
+             &NORFlashMtd,   // Driver Interface (to FDM)
+             &mtdflash,      // Driver Data
+             (INT_RetrieveFlashBaseAddr() + NOR_FLASH_BASE_ADDRESS),   // Base Address
+             nor_list[cmem_nor_index].FDMType);
+   if (result==FS_FLASH_MOUNT_ERROR)
+   {
+      return CMEM_ERR_MTD_INIT_FAIL;
+   }
+
+    return CMEM_NO_ERROR;
+
+}
+#endif // __SERIAL_FLASH__
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    NOR Flash FDM 4.0 interface/data common initialization
+*/
+kal_int32 CMEM_Init_NOR_FDM_Common(void)
+{
+    // 1. <DATA> Assign MTD data to FDM
+    FlashDriveData.MTDData = &mtdflash;
+
+    // 2. <DATA> Common Data
+    FlashDriveData.AvailSectorsInBlock = AVAILSECTORS;
+    FlashDriveData.ValidSectorsInBlock = VALIDSECTORS;
+    FlashDriveData.SectorMap = (kal_uint8*)SectorMap;
+    FlashDriveData.PartitionSectors = NOR_PARTITION_SECTORS;
+    FlashDriveData.Buffer = FDMBuffer;
+    FlashDriveData.MSTABLE_ENTRY_NUM = MS_TABLE_ENTRY_NUM;	
+    FlashDriveData.MSEntryTable = MSEntryTable;	
+
+    FlashDriveData.SystemDriveReservedUnits = (kal_uint32)(NOR_SYSTEM_DRIVE_RESERVED_BLOCK * 2);  // The reserved unit is 0.5 block
+
+    // 3. <INTERFACE> Common Interface
+    NORFlashDriver.DiscardSectors=NULL;
+#ifdef __SECURITY_OTP__
+    NORFlashDriver.CopySectors=NULL; // copy sector
+    NORFlashDriver.OTPAccess=OTPAccess;
+    NORFlashDriver.OTPQueryLength=OTPQueryLength;
+#endif
+    NORFlashDriver.HighLevelFormat=NULL; // high level format
+    NORFlashDriver.RecoverDisk=NULL;     // flush data
+    NORFlashDriver.MessageAck=NULL;      // message ack
+    NORFlashDriver.IOCtrl=NULL;
+
+    return CMEM_NO_ERROR;
+}
+
+#if defined(__NON_INTEL_SIBLEY__)
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    NOR Flash FDM 4.0 interface/data initialization
+*/
+kal_int32 CMEM_Init_NOR_FDM_NonSIB(void)
+{
+    // FDM driver interface
+    NORFlashDriver.MountDevice=NOR_MountDevice_ext;
+    NORFlashDriver.ShutDown=NOR_ShutDown_ext;
+    NORFlashDriver.ReadSectors=NOR_ReadSectors_ext;
+    NORFlashDriver.WriteSectors=NOR_WriteSectors_ext;
+    NORFlashDriver.MediaChanged=NOR_MediaChanged_ext;
+    NORFlashDriver.DiscardSectors=NOR_DiscardSectors_ext;
+    NORFlashDriver.GetDiskGeometry=NOR_GetDiskGeometry_ext;
+    NORFlashDriver.LowLevelFormat=NOR_LowLevelFormat_ext;
+    NORFlashDriver.NonBlockWriteSectors=NOR_NonBlockWriteSectors_ext;
+    NORFlashDriver.RecoverableWriteSectors=NOR_RecoverableWriteSectors_ext;
+    NORFlashDriver.ResumeSectorStates=NOR_ResumeSectorStates_ext;
+
+    // Sibley FDM driver data
+
+#ifdef __BASIC_LOAD_FLASH_TEST__
+    extern kal_uint32 LocateSector(NOR_FLASH_DRV_Data * D, kal_uint32 LogicalSector);
+    LocateSector_ext = LocateSector;
+#endif //__BASIC_LOAD_FLASH_TEST__
+
+    return CMEM_NO_ERROR;
+}
+#endif
+
+#if defined(__INTEL_SIBLEY__)
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    NOR Flash Sibley FDM 4.0 interface/data initialization
+*/
+kal_int32 CMEM_Init_NOR_FDM_SIB(void)
+{
+    // FDM driver interface
+    NORFlashDriver.MountDevice=SIB_MountDevice;
+    NORFlashDriver.ShutDown=NOR_ShutDown;
+    NORFlashDriver.ReadSectors=SIB_ReadSectors;
+    NORFlashDriver.WriteSectors=SIB_WriteSectors;
+    NORFlashDriver.MediaChanged=NOR_MediaChanged;
+    NORFlashDriver.DiscardSectors=SIB_DiscardSectors;
+    NORFlashDriver.GetDiskGeometry=SIB_GetDiskGeometry;
+    NORFlashDriver.LowLevelFormat=SIB_LowLevelFormat;
+    NORFlashDriver.NonBlockWriteSectors=SIB_NonBlockWriteSectors;
+    NORFlashDriver.RecoverableWriteSectors=SIB_RecoverableWriteSectors;
+    NORFlashDriver.ResumeSectorStates=SIB_ResumeSectorStates;
+
+    // FDM driver data
+
+#ifdef __BASIC_LOAD_FLASH_TEST__
+    LocateSector_ext = SIB_LocateSector;
+#endif //__BASIC_LOAD_FLASH_TEST__
+
+
+    return CMEM_NO_ERROR;
+}
+#endif
+
+#endif // !((defined(__FUE__) && defined(__FOTA_DM__)) || defined(__UBL__))
+
+
+//-----------------------------------------------------------------------------
+// Begin of SECOND_PART
+//
+// Put those functions in second part to avoid leakage near to the FS
+//-----------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Returns the size of the block located at given address.
+  @remarks
+    This is a internal function placed in SECOND part, which can be called by FOTA, MAUI, and Bootloader
+*/
+__sf_section_RAM kal_uint32 CMEM_BlockSize_Internal(kal_uint32 address, const FlashBlockLayout* blocklayout)
+{
+    kal_uint16 i;
+
+	address = address & (0x08000000-1);
+
+    for (i=0; blocklayout[i+1].Size!=0; i++)   {
+        if (address >= blocklayout[i].Offset &&
+            address < blocklayout[i+1].Offset)  {
+            break;
+        }
+    }
+    return blocklayout[i].Size;
+}
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Returns the size of the block located at given address.
+*/
+__sf_section_RAM kal_uint32 CMEM_BlockSize(kal_uint32 address)
+{
+    return CMEM_BlockSize_Internal(address, BlockLayout);
+}
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Returns the size of the block located at given address.
+  @remarks
+    For EMI init stage only, it will compare ID and match the correct settings.
+*/
+__sf_section_RAM kal_uint32 EMIINIT_CMEM_BlockSize(kal_uint32 address)
+{
+    kal_uint32 index=CMEM_EMIINIT_Index();
+    const CMEMEntryNOR *list=NULL;
+
+    #if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+        list=combo_mem_sw_list.m_data.List;
+    #else
+        list=combo_mem_sw_list.List;
+    #endif  //__SV5_ENABLED__ || __SV5X_ENABLED__
+
+    return CMEM_BlockSize_Internal(address, list[index].BlockLayout);
+}
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Construct region info by combo MCP block info
+*/
+__sf_section_RAM kal_int32 NOR_Get_FlashSizeFromBankInfo(const FlashBankInfo *bankinfo)
+{
+	kal_uint32 result=0, i;
+
+	// For all entries in the geometry info
+    for (i=0; bankinfo[i].BankSize!=0; i++)   {
+		result += bankinfo[i].Banks * bankinfo[i].BankSize;
+    }
+	return result;
+}
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Construct region info by combo MCP block info
+  @remarks
+    This is a internal function placed in SECOND part, which can be called by FOTA, MAUI, and Bootloader
+*/
+__sf_section_RAM kal_uint32 CMEM_NOR_Construct_RegionInfo_Internal(
+    kal_uint32 baseaddr,
+    kal_uint32 length,
+    FlashRegionInfo *regioninfo,
+    const FlashBlockLayout *blocklayout)
+{
+    kal_uint32 addr, ptr, blksize, total_blocks;
+    kal_uint32 endaddr = baseaddr + length;
+
+    // iterates all blocks
+    for (addr=baseaddr, ptr=0, total_blocks=0; addr<endaddr; )   {
+        blksize=CMEM_BlockSize_Internal(addr, blocklayout);
+        // the block is the first entry of the first region
+        if (total_blocks==0)   {
+            regioninfo[ptr].BlockSize=blksize;
+            regioninfo[ptr].RegionBlocks=1;
+        }
+        // the block belongs to the same region
+        else if (blksize==regioninfo[ptr].BlockSize)    {
+            regioninfo[ptr].RegionBlocks++;
+        }
+        // the block belongs to a new region
+        else {
+            ptr++;
+            if (ptr==(CMEM_REGION_INFO_LEN+1))  {
+                return CMEM_ERR_FDM_REGION_INFO_OVERFLOW;
+            }
+            regioninfo[ptr].BlockSize=blksize;
+            regioninfo[ptr].RegionBlocks=1;
+        }
+        addr+=blksize;
+        total_blocks++;
+    }
+
+    // TODO: Add bank boundary check and block boundary check
+
+    return CMEM_NO_ERROR;
+}
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Construct region info by combo MCP block info
+*/
+__sf_section_RAM kal_int32 NOR_Construct_RegionInfo(kal_uint32 baseaddr, kal_uint32 length, FlashRegionInfo *regioninfo)
+{
+    kal_mem_set(regioninfo, 0, sizeof(FlashRegionInfo)*CMEM_REGION_INFO_LEN);
+
+    return CMEM_NOR_Construct_RegionInfo_Internal(baseaddr, length, regioninfo, BlockLayout);
+}
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Construct region info by combo MCP block info
+  @remarks
+    For EMI init stage only, it will compare ID and match the correct settings.
+*/
+__sf_section_RAM kal_int32 EMIINIT_CMEM_NOR_Construct_RegionInfo(kal_uint32 baseaddr, kal_uint32 length, FlashRegionInfo *regioninfo)
+{
+    kal_uint32 index=CMEM_EMIINIT_Index();
+    const CMEMEntryNOR *list=NULL;
+
+    #if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+        list=combo_mem_sw_list.m_data.List;
+    #else
+        list=combo_mem_sw_list.List;
+    #endif  //__SV5_ENABLED__ || __SV5X_ENABLED__
+
+    return CMEM_NOR_Construct_RegionInfo_Internal(baseaddr, length, regioninfo, list[index].BlockLayout);
+}
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Retrieve Uniform block size
+  @remarks
+    For EMI init stage only, it will compare ID and match the correct settings.
+*/
+__sf_section_RAM kal_uint32 EMIINIT_CMEM_NOR_GetUniformBlock(void)
+{
+    kal_uint32 index=CMEM_EMIINIT_Index();
+    const CMEMEntryNOR *list=NULL;
+
+    #if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+        list=combo_mem_sw_list.m_data.List;
+    #else
+        list=combo_mem_sw_list.List;
+    #endif  //__SV5_ENABLED__ || __SV5X_ENABLED__
+
+    return list[index].UniformBlocks;
+}
+
+//-----------------------------------------------------------------------------
+// End of SECOND_PART
+//-----------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    This function is used to construct bank info, and the caller is
+    CMEM_NOR_Construct_BankInfo()
+*/
+void CMEM_NOR_AddBankInfo(FlashBankInfo *bankInfo, kal_uint32 *index, kal_uint32 bankSize)
+{
+   if(bankInfo[*index].BankSize == bankSize)
+   {
+      bankInfo[*index].Banks ++;
+   }
+   else
+   {
+      *index ++;
+      bankInfo[*index].Banks = 1;
+	  bankInfo[*index].BankSize= bankSize;
+   }
+
+}
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Construct bank info of the given address/lenth according to the
+    combo MCP bank info
+*/
+kal_uint32 CMEM_NOR_Construct_BankInfo(
+    kal_uint32 baseaddr,
+    kal_uint32 length,
+    FlashBankInfo *bankInfo,
+    const FlashBankInfo *cmemBankInfo)
+{
+	kal_uint32 Partition = 0;
+	kal_int32 Index = 0;
+	kal_uint32 bankSize;
+	kal_uint32 NextBankAddr,srcBankIdx;
+
+    kal_mem_set(bankInfo, 0, sizeof(FlashBankInfo)*CMEM_BANK_INFO_LEN);
+
+    for(srcBankIdx = 0, NextBankAddr=0; length>0; srcBankIdx++)
+    {
+	   if(srcBankIdx >= cmemBankInfo[Partition].Banks)
+	   {
+	      srcBankIdx = 0; //BankIndex in current partition
+		  Partition++;
+	   }
+
+	   NextBankAddr += cmemBankInfo[Partition].BankSize;
+
+       if(baseaddr <= NextBankAddr) {
+	      bankSize = NextBankAddr - baseaddr;
+		  if(length < bankSize)
+		     bankSize = length;
+
+          //Add One Bank Info
+		  if(bankInfo[Index].BankSize == bankSize)
+		  {
+			 bankInfo[Index].Banks ++;
+		  }
+		  else
+		  {
+		     if(bankInfo[Index].BankSize != 0) Index++;
+			 bankInfo[Index].Banks = 1;
+			 bankInfo[Index].BankSize= bankSize;
+		  }
+
+		  baseaddr += bankSize;
+		  length -= bankSize;
+	   }
+
+    }
+
+
+    return CMEM_NO_ERROR;
+}
+
+
+
+#if !((defined(__FUE__) && defined(__FOTA_DM__)) || defined(__UBL__))
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    NOR Flash initialization of MAUI
+*/
+kal_int32 CMEM_Init_NOR(void)
+{
+    kal_int32 result;
+    kal_int32 i;
+
+    // Total Blocks := Blocks in Region Info
+    // Block Size := MAX(RegionInfo[i].BlockSize)
+    BlockLayout=nor_list[cmem_nor_index].BlockLayout;
+    BankInfo=nor_list[cmem_nor_index].BankInfo;
+
+    // construct RegionInfo from block info and bank info
+    result=NOR_Construct_RegionInfo(custom_get_fat_addr(), custom_get_fat_len(), RegionInfo);
+
+    if (result!=CMEM_NO_ERROR)   {
+        return result;
+    }
+
+    for (i=0, TOTAL_BLOCKS=0, NOR_LARGEST_BLOCK_SIZE=0 ;RegionInfo[i].BlockSize!=0;i++)    {
+        TOTAL_BLOCKS += RegionInfo[i].RegionBlocks;
+        if (RegionInfo[i].BlockSize > NOR_LARGEST_BLOCK_SIZE)
+            NOR_LARGEST_BLOCK_SIZE = RegionInfo[i].BlockSize;
+    }
+
+    // 1. FDM data/interface initialization
+    result=CMEM_Init_NOR_FDM_Common();
+    if (result!=CMEM_NO_ERROR) return result;
+
+    switch (nor_list[cmem_nor_index].FDMType)    {
+        #if defined(__INTEL_SIBLEY__)
+      case CMEM_NOR_CS_INTEL_SIBLEY:
+            PAGE_SIZE=0x400;
+            result=CMEM_Init_NOR_FDM_SIB();
+            break;
+        #endif
+        #if defined(__NON_INTEL_SIBLEY__)
+      default:
+            PAGE_SIZE=0x200;
+            result=CMEM_Init_NOR_FDM_NonSIB();
+            break;
+        #endif
+#if !(defined(__INTEL_SIBLEY__) || defined(__NON_INTEL_SIBLEY__))
+        default:
+            result=CMEM_ERR_FDM_MISMATCH;
+            break;
+#endif
+    }
+
+    // Total Sectors := Flash Area / Page Size
+    TOTAL_SECTORS =  (NOR_ALLOCATED_FAT_SPACE / PAGE_SIZE);
+
+    if (result!=CMEM_NO_ERROR) return result;
+
+    // 2. MTD data/interface initialization
+
+    result=CMEM_Init_NOR_MTD_Common();
+    if (result!=CMEM_NO_ERROR) return result;
+
+    switch (cmem_id->DeviceType) {
+        #if !defined(__SERIAL_FLASH__)
+        case CMEM_TYPE_NOR:
+            result=CMEM_Init_NOR_MTD_ADMUX();
+            break;
+        #else // __SERIAL_FLASH__
+        case CMEM_TYPE_SERIAL_NOR_FLASH:
+            result=CMEM_Init_NOR_MTD_SF();
+            break;
+        #endif // __SERIAL_FLASH__
+        default:
+            result=CMEM_ERR_MTD_MISMATCH;
+            break;
+    }
+
+    if (result!=CMEM_NO_ERROR) return result;
+
+    // 3. RAW disk initialization
+    #ifdef __NOR_SUPPORT_RAW_DISK__
+    result=CMEM_Init_NOR_RAWDisk_Common();
+    switch (cmem_id->DeviceType) {
+        #if !defined(__SERIAL_FLASH__)
+        case CMEM_TYPE_NOR:
+            result=CMEM_Init_NOR_RAWDisk_ADMUX();
+            break;
+        #else // __SERIAL_FLASH__
+        case CMEM_TYPE_SERIAL_NOR_FLASH:
+            result=CMEM_Init_NOR_RAWDisk_SF();
+            break;
+        #endif // __SERIAL_FLASH__
+        default:
+            result=CMEM_ERR_MTD_MISMATCH;
+            break;
+    }
+    #endif
+
+    return result;
+}
+
+#endif // !((defined(__FUE__) && defined(__FOTA_DM__)) || defined(__UBL__))
+
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Compare device ID and retrieve the correspond NOR flash settings
+*/
+void CMEM_Init_nor_list(void)
+{
+#if ((!defined __FS_SYSDRV_ON_NAND__) && (!defined(_NAND_FLASH_BOOTING_)))
+    cmem_nor_index=CMEM_Index();
+    if (cmem_nor_index<0) ASSERT(0);//return CMEM_ERR_ID_NOT_FOUND;
+    cmem_id=CMEM_GetIDEntry(cmem_nor_index);
+#if defined(__SV5_ENABLED__) || defined(__SV5X_ENABLED__)
+    nor_list=combo_mem_sw_list.m_data.List;  // SV5
+#else
+    nor_list=combo_mem_sw_list.List;         // SV3
+#endif  //__SV5_ENABLED__ || __SV5X_ENABLED__
+
+#endif //! __FS_SYSDRV_ON_NAND__ && !_NAND_FLASH_BOOTING_
+}
+
+
+//-----------------------------------------------------------------------------
+// MCP Initialization Function
+//-----------------------------------------------------------------------------
+#if !((defined(__FUE__) && defined(__FOTA_DM__)) || defined(__UBL__))
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Combo MCP intialization function for MAUI
+  @param[in] type The type of initialization (reserved)
+  @retval
+    CMEM_NO_ERROR: Success
+    otherwise: Fail
+*/
+kal_int32 ComboMem_Initialize(void)
+{
+#if ((!defined __FS_SYSDRV_ON_NAND__) && (!defined(_NAND_FLASH_BOOTING_)))
+    CMEM_Init_nor_list();
+        return CMEM_Init_NOR();
+#else
+        // NAND Flash driver has its own init functions
+        return CMEM_NO_ERROR;
+#endif
+}
+#endif // !((defined(__FUE__) && defined(__FOTA_DM__)) || defined(__UBL__))
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    NOR Flash RAW Disk initialization
+*/
+#ifdef __NOR_SUPPORT_RAW_DISK__
+kal_int32 CMEM_Init_NOR_RAWDisk_Common(void)
+{
+   mtdFlashDisk[0].Signature = ~((kal_uint32)Disk0RegionInfo);
+   mtdFlashDisk[0].BaseAddr = (BYTE *)(INT_RetrieveFlashBaseAddr() + NOR_BOOTING_NOR_DISK0_BASE_ADDRESS);
+   mtdFlashDisk[0].RegionInfo = (FlashRegionInfo *)Disk0RegionInfo;
+   FlashDiskDriveData[0].DiskSize = NOR_BOOTING_NOR_DISK0_SIZE;
+
+   FlashDiskDriveData[0].MTDData = &mtdFlashDisk[0];
+#if (NOR_BOOTING_NOR_DISK_NUM > 1)
+   mtdFlashDisk[1].Signature = ~((kal_uint32)Disk1RegionInfo);
+   mtdFlashDisk[1].BaseAddr = (BYTE *)(INT_RetrieveFlashBaseAddr() + NOR_BOOTING_NOR_DISK1_BASE_ADDRESS);
+   mtdFlashDisk[1].RegionInfo = (FlashRegionInfo *)Disk1RegionInfo;
+   FlashDiskDriveData[1].DiskSize = NOR_BOOTING_NOR_DISK1_SIZE;
+   FlashDiskDriveData[1].MTDDriver = &NORFlashMtd;
+   FlashDiskDriveData[1].MTDData = &mtdFlashDisk[1];
+#endif // NOR_BOOTING_NOR_DISK_NUM > 1
+    return CMEM_NO_ERROR;
+}
+
+
+
+#if !defined(__SERIAL_FLASH__)
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    ADMUX NOR Flash RAW Disk initialization
+*/
+kal_int32 CMEM_Init_NOR_RAWDisk_ADMUX(void)
+{
+
+   kal_int32 result;
+
+   NOR_Construct_RegionInfo(NOR_BOOTING_NOR_DISK0_BASE_ADDRESS, NOR_BOOTING_NOR_DISK0_SIZE, Disk0RegionInfo);
+   NOR_Construct_RegionInfo(NOR_BOOTING_NOR_DISK1_BASE_ADDRESS, NOR_BOOTING_NOR_DISK1_SIZE, Disk1RegionInfo);
+
+   // Assign RAW Disk 0 interface
+    FlashDiskDriveData[0].MTDDriver = &NORFlashMtd;
+    mtdFlashDisk[0].CMD=&sf_dal_data_cmd;
+    mtdFlashDisk[0].StatusMap=&StatusMap[0];
+
+   // RAW Disk 0 MTD
+   result=ADMUX_DAL_Init_Driver(
+             &NORFlashMtd,			 // Driver Interface
+             &mtdFlashDisk[0],		// Driver Data
+             (INT_RetrieveFlashBaseAddr() + NOR_BOOTING_NOR_DISK0_BASE_ADDRESS),   // Base Address
+             0);					// Reserved: Driver Type
+
+   if (result==FS_FLASH_MOUNT_ERROR)
+   {
+      return CMEM_ERR_MTD_INIT_FAIL;
+   }
+
+#if (NOR_BOOTING_NOR_DISK_NUM > 1)
+   // Assign RAW Disk 1 interface
+    FlashDiskDriveData[1].MTDDriver = &NORFlashMtd;
+    mtdFlashDisk[1].CMD=&sf_dal_data_cmd;
+    mtdFlashDisk[1].StatusMap=&StatusMap[0];
+
+
+   // RAW Disk 0 MTD
+   result=ADMUX_DAL_Init_Driver(
+             &NORFlashMtd,			 // Driver Interface
+             &mtdFlashDisk[1],		// Driver Data
+             (INT_RetrieveFlashBaseAddr() + NOR_BOOTING_NOR_DISK1_BASE_ADDRESS),   // Base Address
+             0);					// Reserved: Driver Type
+#endif
+    return CMEM_NO_ERROR;
+}
+
+#else // __SERIAL_FLASH__
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Serial NOR Flash RAW Disk initialization
+*/
+kal_int32 CMEM_Init_NOR_RAWDisk_SF(void)
+{
+    kal_int32 result;
+
+    NOR_Construct_RegionInfo(NOR_BOOTING_NOR_DISK0_BASE_ADDRESS, NOR_BOOTING_NOR_DISK0_SIZE, Disk0RegionInfo);
+    NOR_Construct_RegionInfo(NOR_BOOTING_NOR_DISK1_BASE_ADDRESS, NOR_BOOTING_NOR_DISK1_SIZE, Disk1RegionInfo);
+
+    // Assign RAW Disk 0 interface
+    FlashDiskDriveData[0].MTDDriver = &NORFlashMtd;
+
+    mtdFlashDisk[0].CMD=&sf_dal_data_cmd;
+    mtdFlashDisk[0].StatusMap=&StatusMap[0];
+
+    // RAW Disk 0 MTD
+    result=SF_DAL_Init_Driver(
+         &NORFlashMtd,           // Driver Interface
+         &mtdFlashDisk[0],      // Driver Data
+         (INT_RetrieveFlashBaseAddr() + NOR_BOOTING_NOR_DISK0_BASE_ADDRESS),   // Base Address
+         nor_list[cmem_nor_index].UniformBlocks);                  // Uniform Block
+
+    if (result==FS_FLASH_MOUNT_ERROR)    {
+      return CMEM_ERR_MTD_INIT_FAIL;
+    }
+
+#if (NOR_BOOTING_NOR_DISK_NUM > 1)
+    // Assign RAW Disk 1 interface
+    FlashDiskDriveData[1].MTDDriver = &NORFlashMtd;
+
+    mtdFlashDisk[1].CMD=&sf_dal_data_cmd;
+    mtdFlashDisk[1].StatusMap=&StatusMap[0];
+
+    // RAW Disk 0 MTD
+    result=SF_DAL_Init_Driver(
+         &NORFlashMtd,           // Driver Interface
+         &mtdFlashDisk[1],      // Driver Data
+         (INT_RetrieveFlashBaseAddr() + NOR_BOOTING_NOR_DISK1_BASE_ADDRESS),   // Base Address
+         nor_list[cmem_nor_index].UniformBlocks);                  // Uniform Block
+#endif
+    return CMEM_NO_ERROR;
+
+}
+#endif // __SERIAL_FLASH__
+#endif // __NOR_SUPPORT_RAW_DISK__
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    NOR Flash FOTA initialization
+*/
+#ifdef __FOTA_DM__
+#if (!defined(__UBL__) && !defined(__FUE__))
+
+extern NOR_FLASH_DRV_Data    NORFlashDriveData; //fota_partial.c
+
+#if defined(__SERIAL_FLASH__)
+SF_MTD_Data CMEM_FOTA_nor_mtdflash;
+#else
+PF_MTD_Data CMEM_FOTA_nor_mtdflash;
+#endif
+
+FlashRegionInfo CMEM_FOTA_NORRegionInfo[CMEM_REGION_INFO_LEN];
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    FOTA initialization Entry Function
+*/
+kal_int32 CMEM_Init_FOTA(void)
+{
+
+    kal_int32 result;
+
+    CMEM_Init_nor_list();
+
+    /* Initialize MTD data table */
+    CMEM_FOTA_nor_mtdflash.Signature = ~((kal_uint32)CMEM_FOTA_NORRegionInfo);
+
+    NORFlashDriveData.MTDDriver = &NORFlashMtd;
+    NORFlashDriveData.MTDData = &CMEM_FOTA_nor_mtdflash;
+
+    PAGE_BUFFER_SIZE = nor_list[cmem_nor_index].PageBufferSize;
+
+    BlockLayout=nor_list[cmem_nor_index].BlockLayout;
+    BankInfo=nor_list[cmem_nor_index].BankInfo;
+
+
+#ifdef __MTK_TARGET__
+    CMEM_FOTA_nor_mtdflash.BaseAddr = (BYTE *)INT_RetrieveFlashBaseAddr();
+#endif /* __MTK_TARGET__ */
+
+
+    CMEM_FOTA_nor_mtdflash.RegionInfo = (FlashRegionInfo *)CMEM_FOTA_NORRegionInfo;
+    NOR_Construct_RegionInfo(0, custom_get_NORFLASH_Size(), CMEM_FOTA_NORRegionInfo);
+
+
+		// Allocate status map and command for MTD data
+		CMEM_FOTA_nor_mtdflash.StatusMap = StatusMap;
+
+#if defined(__SERIAL_FLASH__)
+
+		// serial Flash driver will initialize the interface/data by its own.
+
+		CMEM_FOTA_nor_mtdflash.CMD = &sf_dal_data_cmd;
+
+		result=SF_DAL_Init_Driver(
+				   &NORFlashMtd,			// Driver Interface (to FDM)
+				   &CMEM_FOTA_nor_mtdflash,		// Driver Data
+				   (kal_uint32)CMEM_FOTA_nor_mtdflash.BaseAddr,	 // Base Address
+				   nor_list[cmem_nor_index].UniformBlocks);                 // Uniform Block
+#else //ADMUX flash
+		CMEM_FOTA_nor_mtdflash.CMD = &pf_dal_data_cmd;
+
+		result=ADMUX_DAL_Init_Driver(
+				   &NORFlashMtd,			// Driver Interface (to FDM)
+				   &CMEM_FOTA_nor_mtdflash,		// Driver Data
+				   (kal_uint32)CMEM_FOTA_nor_mtdflash.BaseAddr,	 // Base Address
+				   nor_list[cmem_nor_index].FDMType);					   // Reserved: Driver Type
+
+#endif // __SERIAL_FLASH__
+
+    return CMEM_NO_ERROR;
+}
+#endif // !(__UBL__) && !(__FUE__)
+#endif // __FOTA_DM__
+
+extern kal_int32 EMI_QueryIsRemapped(void);
+
+//-----------------------------------------------------------------------------
+/*!
+  @brief
+    Full driver  initialization Entry Function
+  @remarks
+    EntireFlashDisk (SecurDisk, Card Download)
+*/
+kal_int32 CMEM_Init_FullDriver(void)
+{
+   kal_int32 result;
+
+    CMEM_Init_nor_list();
+
+    PAGE_BUFFER_SIZE = nor_list[cmem_nor_index].PageBufferSize;
+
+    BlockLayout=nor_list[cmem_nor_index].BlockLayout;
+   BankInfo=nor_list[cmem_nor_index].BankInfo;
+
+   // Allocate status map and command for MTD data
+   EntireDiskMtdData.StatusMap = &StatusMap[0];
+#ifdef __SERIAL_FLASH__
+   EntireDiskMtdData.CMD = &sf_dal_data_cmd;
+#else
+   EntireDiskMtdData.CMD = &pf_dal_data_cmd;
+#endif
+
+   EntireDiskMtdData.Signature = ~((kal_uint32)EntireDiskRegionInfo);
+   #ifdef __UBL__
+   //begin from MT6255, remapping is done before NOR_ReadID
+   if(EMI_QueryIsRemapped())
+       EntireDiskMtdData.BaseAddr = (BYTE *)0x10000000;
+   else
+       EntireDiskMtdData.BaseAddr = (BYTE *)0;
+   
+   #else
+   EntireDiskMtdData.BaseAddr = (BYTE *)INT_RetrieveFlashBaseAddr();
+   #endif
+
+#if defined(__SERIAL_FLASH__)
+   // serial Flash driver will initialize the interface/data by its own.
+   result=SF_DAL_Init_Driver(
+        &NORFlashMtd,            // Driver Interface (to FDM)
+        &EntireDiskMtdData,      // Driver Data
+        (kal_uint32)EntireDiskMtdData.BaseAddr,   // Base Address
+        nor_list[cmem_nor_index].UniformBlocks);                 // Uniform Block
+#else //ADMUX flash
+
+   result=ADMUX_DAL_Init_Driver(
+        &NORFlashMtd,            // Driver Interface (to FDM)
+        &EntireDiskMtdData,      // Driver Data
+        (kal_uint32)EntireDiskMtdData.BaseAddr,   // Base Address
+        nor_list[cmem_nor_index].FDMType);                      // Reserved: Driver Type
+
+#endif // __SERIAL_FLASH__
+
+   ASSERT(result!=FS_FLASH_MOUNT_ERROR);
+
+   EntireDiskDriveData.DiskSize = NOR_Get_FlashSizeFromBankInfo(BankInfo);
+   NOR_Construct_RegionInfo(0, EntireDiskDriveData.DiskSize, EntireDiskRegionInfo);
+   EntireDiskMtdData.RegionInfo = (FlashRegionInfo *)EntireDiskRegionInfo;
+
+   EntireDiskDriveData.MTDDriver = &NORFlashMtd;
+   EntireDiskDriveData.MTDData = &EntireDiskMtdData;
+   EntireDiskDriveData.is_mount = KAL_FALSE;
+
+   return CMEM_NO_ERROR;
+}
+
+#if (defined(__FUE__) || defined(__EXT_BOOTLOADER__)) && defined(__FOTA_DM__)
+#include "custom_fota.h"
+
+extern kal_uint32 SSF_GetUAImageLoadAddress(void);
+
+#ifdef __SERIAL_FLASH__
+SF_MTD_Data fue_nor_mtdflash;
+SF_Status fue_sf_srmap[SF_SR_COUNT];
+SF_MTD_CMD fue_sf_cmd;
+#else
+PF_MTD_Data fue_nor_mtdflash;
+PF_Status fue_pf_srmap[SF_SR_COUNT];
+PF_MTD_CMD fue_pf_cmd;
+#endif // __SERIAL_FLASH__
+
+extern NOR_MTD_Driver NORFlashMtd;
+
+void CMEM_Init_FUE(void)
+{
+    kal_int32 result;
+    kal_uint32 blk_addr = 0;
+
+    CMEM_Init_nor_list();
+
+    PAGE_BUFFER_SIZE = nor_list[cmem_nor_index].PageBufferSize;
+
+    BlockLayout=nor_list[cmem_nor_index].BlockLayout;
+    BankInfo=nor_list[cmem_nor_index].BankInfo;
+
+    // construct NORRegionInfo from block info and bank info
+    // ***Note: NORRegionInfo[] body is instantiated in custom_fota.c
+    result=NOR_Construct_RegionInfo(0, custom_get_NORFLASH_Size(), NORRegionInfo);
+
+    ASSERT(result==CMEM_NO_ERROR);
+
+    /* Initialize MTD data table */
+    fue_nor_mtdflash.Signature = ~((kal_uint32)NORRegionInfo);
+
+    FlashDriveData.MTDDriver = &NORFlashMtd;
+    FlashDriveData.MTDData = &fue_nor_mtdflash;
+
+#ifdef __MTK_TARGET__
+
+   #if defined(MT6238) || defined(MT6239) || defined(MT6235B)
+   fue_nor_mtdflash.BaseAddr = (BYTE *)(custom_get_NORFLASH_Base()|0x08000000);
+   #elif defined(MT6228) || defined(MT6229) || defined(MT6230) || defined(MT6225) || defined(MT6268T)
+   fue_nor_mtdflash.BaseAddr = (BYTE *)(custom_get_NORFLASH_Base()|0x04000000);
+   #else
+   fue_nor_mtdflash.BaseAddr = (BYTE *)custom_get_NORFLASH_Base();
+   #endif
+
+   #ifdef __SERIAL_FLASH__
+   fue_nor_mtdflash.CMD = &fue_sf_cmd;
+   fue_nor_mtdflash.StatusMap = fue_sf_srmap;
+   SF_DAL_Init_Driver(&NORFlashMtd, &fue_nor_mtdflash, (kal_uint32)fue_nor_mtdflash.BaseAddr, nor_list[cmem_nor_index].UniformBlocks);
+   #else //ADMUX with combo memory support on
+   fue_nor_mtdflash.CMD = &fue_pf_cmd;
+   fue_nor_mtdflash.StatusMap = fue_pf_srmap;
+   ADMUX_DAL_Init_Driver(&NORFlashMtd, &fue_nor_mtdflash, (kal_uint32)fue_nor_mtdflash.BaseAddr, nor_list[cmem_nor_index].FDMType);
+   #endif // __SERIAL_FLASH__
+
+#endif /* __MTK_TARGET__ */
+
+   fue_nor_mtdflash.RegionInfo = (FlashRegionInfo *)NORRegionInfo;
+
+    blk_addr = SSF_GetUAImageLoadAddress()|custom_get_NORFLASH_Base();
+   #if defined(MT6238) || defined(MT6239) || defined(MT6235B)
+   blk_addr |= 0x08000000;
+   #elif defined(MT6228) || defined(MT6229) || defined(MT6230) || defined(MT6225) || defined(MT6268T)
+   blk_addr |= 0x04000000;
+   #else
+   blk_addr |= 0x0;
+   #endif
+   blk_addr -= (kal_uint32)fue_nor_mtdflash.BaseAddr;
+   FlashDriveData.FlashInfo.baseUnlockBlock = BlockIndex(&fue_nor_mtdflash, blk_addr);
+
+   #if (defined(__UP_PKG_ON_NAND__) && defined(NAND_SUPPORT))
+   blk_addr =  (custom_get_NORFLASH_ROMSpace() - 1) | custom_get_NORFLASH_Base();
+   #else
+   blk_addr =  FOTA_GetPackageStorageBase()+FOTA_GetPackageStorageSize();
+   #endif /* __UP_PKG_ON_NAND__ && NAND_SUPPORT */
+
+   #if defined(MT6238) || defined(MT6239) || defined(MT6235B)
+   blk_addr |= 0x08000000;
+   #elif defined(MT6228) || defined(MT6229) || defined(MT6230) || defined(MT6225) || defined(MT6268T)
+   blk_addr |= 0x04000000;
+   #else
+   blk_addr |= 0x0;
+   #endif
+
+   blk_addr -= (kal_uint32)fue_nor_mtdflash.BaseAddr;
+   FlashDriveData.FlashInfo.endUnlockBlock = BlockIndex(&fue_nor_mtdflash, blk_addr);
+
+}
+
+#endif // (__FUE__ || __EXT_BOOTLOADER__) && __FOTA_DM__
+
+
+#endif // ( !defined(__FS_SYSDRV_ON_NAND__) && !defined( _NAND_FLASH_BOOTING_) )
+
+#endif // (__COMBO_MEMORY_SUPPORT__) || defined(__SERIAL_FLASH__)
+
diff --git a/mcu/custom/driver/common/custom_EMI_MT6280.c b/mcu/custom/driver/common/custom_EMI_MT6280.c
new file mode 100644
index 0000000..b322916
--- /dev/null
+++ b/mcu/custom/driver/common/custom_EMI_MT6280.c
@@ -0,0 +1,185 @@
+/*****************************************************************************
+*  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) 2006
+*
+*  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:
+ * ---------
+ *   custom_EMI_MT6280.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines the EMI (external memory interface) related setting.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *   Memory Device database last modified on 2011/3/18
+ *
+ *============================================================================
+ *             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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
diff --git a/mcu/custom/driver/common/custom_EMI_MT6290.c b/mcu/custom/driver/common/custom_EMI_MT6290.c
new file mode 100644
index 0000000..0e5a105
--- /dev/null
+++ b/mcu/custom/driver/common/custom_EMI_MT6290.c
@@ -0,0 +1,70 @@
+/*****************************************************************************
+*  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) 2006
+*
+*  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:
+ * ---------
+ *   custom_EMI_MT6290.c
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   This Module defines the EMI (external memory interface) related setting.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
diff --git a/mcu/custom/driver/common/custom_EMI_SP.c b/mcu/custom/driver/common/custom_EMI_SP.c
new file mode 100644
index 0000000..cab55f1
--- /dev/null
+++ b/mcu/custom/driver/common/custom_EMI_SP.c
@@ -0,0 +1,316 @@
+/*****************************************************************************
+*  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) 2006
+*
+*  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:
+ * ---------
+ *   custom_EMI.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines the EMI (external memory interface) related setting.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *   Memory Device database last modified on 2011/6/29
+ *
+ *============================================================================
+ *             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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#include "custom_EMI_release.h"
+
+#if defined(__EMI_DEVICE_NONE__)
+#if defined(__MTK_TARGET__)
+
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"
+#include "pll.h"
+
+
+/*************************************
+  *
+  * Imported APIs.
+  *
+  *************************************/
+
+
+/*************************************
+  *
+  * Global Variables.
+  *
+  *************************************/
+
+
+/*************************************************************************
+* FUNCTION
+*  custom_setEMI()
+*
+* DESCRIPTION
+*   This routine aims to set EMI
+*
+* PARAMETERS
+*
+* RETURNS
+*  None
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+kal_int8 custom_setEMI(void)
+{
+
+/**
+  * MT6573 EMI will be init at CMM when bring-up.
+  */    
+
+   return 1;
+
+}
+
+/*************************************************************************
+* FUNCTION
+*  custom_InitDRAM()
+*
+* DESCRIPTION
+*   This routine aims to set EMI and initialize LPSDRAM
+*
+* PARAMETERS
+*
+* RETURNS
+*  None
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+kal_int8 custom_InitDRAM(void)
+{
+   return -1;
+
+}
+
+#if ( !defined(__UBL__) && !defined(__FUE__) )
+  /* __FUE__ , __UBL__ compile option is used for FOTA or USB Bootloader build
+   * add this compile option to avoid compiling functions other than custom_setEMI()
+   */
+
+/*************************************************************************
+* FUNCTION
+*  custom_setAdvEMI()
+*
+* DESCRIPTION
+*   This routine aims to set additional EMI
+*   This is special for device which needs to set device configuration
+*   register to turn-on special mode.
+*
+* PARAMETERS
+*
+* RETURNS
+*  1:
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+
+#ifdef __MTK_TARGET__
+#endif /* __MTK_TARGET__ */
+
+
+kal_int8 custom_setAdvEMI(void)
+{
+   kal_int8    status = 0;
+
+   return status;
+}
+
+#ifdef __MTK_TARGET__
+#endif /* __MTK_TARGET__ */
+
+
+/*************************************************************************
+* FUNCTION
+*  custom_get_EXTSRAM_size()
+*
+* DESCRIPTION
+*  Return predefined external SRAM size.
+*
+* PARAMETERS
+*
+* RETURNS
+*  None
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+void
+custom_get_EXTSRAM_size(kal_uint32 *size)
+{
+    *size = (kal_uint32)EMI_EXTSRAM_SIZE;
+}
+
+/*************************************************************************
+* FUNCTION
+*  custom_ifLPSDRAM()
+*
+* DESCRIPTION
+*  Query if the memory device is LPSDRAM
+*
+* PARAMETERS
+*
+* RETURNS
+*  KAL_TRUE: The memory device is LPSDRAM
+*  KAL_FALSE: The memory device is not LPSDRAM
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+kal_bool
+custom_ifLPSDRAM(void)
+{
+#if defined(DRAM_CS) && defined(DRAM_SIZE)
+   return KAL_TRUE;
+#else
+   return KAL_FALSE;
+#endif      
+}
+
+
+/*************************************************************************
+* FUNCTION
+*  custom_DynamicClockSwitch
+*
+* DESCRIPTION
+*  This function dedicates to switch the system clock and adjust the EMI
+*  according to the working system clock.
+*
+* PARAMETERS
+*  clock    -    clock to switch
+*
+* RETURNS
+*  0 for success; -1 for failure
+*
+*************************************************************************/
+#if 0 //#ifdef DCM_ENABLE
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif  /* DCM_ENABLE */
+
+
+/*************************************************************************
+* FUNCTION
+*  custom_EMIDynamicClockSwitch_Init
+*
+* DESCRIPTION
+*  This function is used to Init setting for DCM
+*
+* PARAMETERS
+*
+*
+* RETURNS
+*  0 for success; -1 for failure
+*
+*************************************************************************/
+
+int custom_EMIDynamicClockSwitch_Init(void)
+{
+
+    return 0;
+}
+
+
+
+#endif /* !__UBL__ && !__FUE__ */
+
+#endif // #if defined(__MTK_TARGET__)
+#endif // #if defined(MT6573) || defined(MT6575)
diff --git a/mcu/custom/driver/common/custom_SFI.c b/mcu/custom/driver/common/custom_SFI.c
new file mode 100644
index 0000000..8260616
--- /dev/null
+++ b/mcu/custom/driver/common/custom_SFI.c
@@ -0,0 +1,232 @@
+/*****************************************************************************
+*  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) 2006
+*
+*  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:
+ * ---------
+ *   custom_SFI.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines the SFI (serial flash interface) related setting.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *   Memory Device database last modified on 2011/7/8
+ *
+ *============================================================================
+ *             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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+     
+#if defined(__MTK_TARGET__)
+#define __sf_section_RAM             __attribute__ ((section ("SNORCODE")))
+#define __sf_section_SECOND_PART     __attribute__ ((section ("SECOND_PART")))
+#define __sf_section_EMIINITCODE     __attribute__ ((section ("EMIINITCODE")))
+#define __sf_section_RODATA_EMI      __attribute__ ((section ("EMIINITCONST")))
+#define __sf_section_ZIDATA_EMI      __attribute__ ((zero_init, section ("EMIINITZI")))
+#define __sf_section_RWDATA_INTSRAM  __attribute__ ((section ("INTSRAM_RW")))
+#define __sf_section_RODATA_INTSRAM  __attribute__ ((section ("INTSRAM_RODATA")))
+#define __sf_section_ZIDATA_INTSRAM  __attribute__ ((zero_init, section ("INTSRAM_ZI")))
+#define __sf_section_INTSRAM         __attribute__ ((section ("INTSRAM_ROCODE")))
+#else //defined(__SINGLE_BANK_NOR_FLASH_SUPPORT__) && defined(__MTK_TARGET__)
+     /* Reserve for  MoDIS */
+#define __sf_section_RAM
+#define __sf_section_SECOND_PART
+#define __sf_section_EMIINITCODE
+#define __sf_section_RODATA_EMI 
+#define __sf_section_ZIDATA_EMI
+#define __sf_section_RWDATA_INTSRAM
+#define __sf_section_RODATA_INTSRAM 
+#define __sf_section_ZIDATA_INTSRAM
+#define __sf_section_INTSRAM 
+#endif //defined(__SINGLE_BANK_NOR_FLASH_SUPPORT__) && defined(__MTK_TARGET__)
+
+
+
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"
+#include "pll.h"
+
+__sf_section_EMIINITCODE kal_int8 custom_setSFI(void)
+{	
+	return 0;
+}
+
+__sf_section_EMIINITCODE kal_int8 custom_setAdvSFI(void)
+{
+	return 0;
+}
+
+__sf_section_RAM int custom_SFIDynamicClockSwitch_Init()
+{
+	return 0;
+}
+
+__sf_section_INTSRAM int custom_SFIDynamicClockSwitch()
+{
+	return 0;
+}
+
diff --git a/mcu/custom/driver/common/custom_flash.c b/mcu/custom/driver/common/custom_flash.c
new file mode 100644
index 0000000..9f18846
--- /dev/null
+++ b/mcu/custom/driver/common/custom_flash.c
@@ -0,0 +1,1226 @@
+/*****************************************************************************
+*  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) 2006
+*
+*  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:
+ * ---------
+ *   custom_flash.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines flash related settings.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *   Memory Device database last modified on 2011/7/8
+ *
+ *============================================================================
+ *             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!
+MT6280 SIP_MDSP link fail.
+[Solution]
+Modify EXTSRAM_type_7() to switch $ram_disk_size become 0x40000 if it's MT6280
+[Verification]
+m sys_auto_gen on MT6280_EVB_R7R8_HSPA(SIP_MDSP).W12.17
+and the generated EXTSRAM_FS maxsize becomes 0x40000 and dummy_end base is correct as well.
+[Phase-in Branch]
+MT6280_DVT_DEV
+MODEM_DEV
+[Version]
+scatGenLib.pl m0.03
+[Requester]
+Stanley Chu
+
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+
+#define FLASHCONF_C
+
+#if defined(__SMART_MD_NFI_DRIVER__)    // Smart phone start alone driver
+	#ifndef _NAND_FLASH_BOOTING_
+		#define _NAND_FLASH_BOOTING_
+	#endif
+#endif
+
+#include "kal_general_types.h"
+#include "fs_type.h"
+#include "custom_MemoryDevice.h"
+#include "flash_sf.h"
+#include "string.h"
+
+#ifdef FLASH_DISKDRV_DEBUG
+#include <stdlib.h>
+#endif
+
+#include "flash_opt.h"
+#include "DrvFlash.h"
+#include "NAND_FDM.h"
+#include "flash_disk.h"
+#include "flash_disk_internal.h"
+#include "combo_flash_init.h"
+
+#include "custom_flash.h"
+
+#include "flash_mtd_ut.h"  //__BASIC_LOAD_FLASH_TEST__
+#include "DrvFlash_UT.h"
+
+#include "custom_nvram_int_config.h"  /* To get NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM for MSTABLE_ENTRY_NUM */
+
+
+#if !(defined(__SMART_PHONE_PLATFORM__) && defined(__SMART_PHONE_MODEM__))
+
+
+
+/*-------------------------------------------------------------------
+ * MS table size
+ *
+ * MS table size should be synchronized with user's requirement. The only one user is NVRAM.
+ *
+ * NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM defines the maximum record size in NVRAM
+ * (in custom_nvram_config.h). NVRAM should call NOR_ResumeSectorState (by FS_Commit)
+ * after it writes maximum NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM sectors with protection
+ * mode to ensure the integrity of a record.
+ *
+ * MSTABLE_ENTRY_NUM number is based on the worst senario: All FAT entries of clusters
+ * of logical sectors are located in different physical sectors. In other word, we need
+ * to write additional N sectors to update FAT after we write N data sectors. The other
+ * 1 sector is for directory entry update.
+ *
+ * TODO: Use auto-gen to compute most suitable MS table size. Because the number of
+ * sectors for FAT may be smaller than NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM. For example,
+ * 64KB disk only needs 1 sector to store FAT.
+ *---------------------------------------------------------- W08.50 --*/
+
+#define MS_TABLE_ENTRY_NUM    (NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM * 2 + 1)
+
+/*
+ ****************************************************************************
+ PART 1:
+ Rules to Prevent Wrong Configuration
+ ****************************************************************************
+*/
+#ifdef NAND_PARTITION_SECTORS
+
+ #if (NAND_PARTITION_SECTORS > 0 && NAND_PARTITION_SECTORS < NAND_MINIMUM_PARTITION_SIZE)
+  #error "custom\system\{project}\custom_MemoryDevice.h: Error! NAND_FS_FIRST_DRIVE_SECTORS MUST be larger than NAND_MINIMUM_PARTITION_SIZE!"
+ #endif
+
+ #if (defined(_NAND_FLASH_BOOTING_))
+  #if ( (NAND_PARTITION_SECTORS << 9) > NAND_ALLOCATED_FAT_SPACE)
+   #error "custom\system\{project}\custom_MemoryDevice.h: Error! NAND_FS_FIRST_DRIVE_SECTORS MUST be less than NAND_FS_SIZE!"
+  #endif
+ #endif /* _NAND_FLASH_BOOTING_ */
+
+#endif /* NAND_PARTITION_SECTORS */
+
+
+#if defined(__SINGLE_BANK_NOR_DEVICE__)
+
+        #error "custom\system\{project}\custom_MemoryDevice.h: Error! Single Bank device with non Single Bank load! Please modify device or makefile option!"
+
+#endif /* __SINGLE_BANK_NOR_DEVICE__ */
+
+
+#if !defined(_NAND_FLASH_BOOTING_) && !defined(__EMMC_BOOTING__)
+   #ifndef __NOR_FDM5__
+      #if (TOTAL_BLOCKS > 127)
+         #error "TOTAL_BLOCKS > 127 , recommend enable Pseudo Sized Block feature for serial flash project. Enable FDM5.0 feature for NOR flash project."
+      #endif
+   #endif
+#endif
+
+/*
+ ****************************************************************************
+ PART 2:
+ Essential Information of NOR Flash Geometry Layout Information
+ ****************************************************************************
+*/
+/*******************************************************************************
+   NOTICE: Fill the flash region information table, a region is the memory space
+           that contains continuous sectors of equal size. Each region element
+           in the table is the format as below:
+           {S_sector, N_sector},
+               S_sector: the size of sector in the region
+               N_sector: the number of sectors in the region
+ *******************************************************************************/
+
+#if !(defined(__FUE__) || defined(__UBL__) || defined(__EXT_BOOTLOADER__))
+#define __MAUI_LOAD__
+#endif //!__FUE__ && !__UBL__ && !__EXT_BOOTLOADER__
+
+#if !defined(_NAND_FLASH_BOOTING_) && !defined(__EMMC_BOOTING__) && !defined(__RAMDISK__)
+#define _NOR_FLASH_BOOTING_
+#endif // !_NAND_FLASH_BOOTING_ && !__EMMC_BOOTING__
+
+
+#ifdef _NOR_FLASH_BOOTING_
+
+#define FLASH_REGIONINFO_VAR_MODIFIER  static const
+
+#if (defined(__MAUI_LOAD__) && defined(_NOR_FLASH_BOOTING_) && !defined(__NOR_FDM5__))
+#define __MAUI_NOR_FDM4__
+#endif
+
+#if defined(__MAUI_NOR_FDM4__) 
+FLASH_REGIONINFO_VAR_MODIFIER FlashRegionInfo RegionInfo[]= /* Don't modify this line */
+{
+   REGION_INFO_LAYOUT
+   EndRegionInfo /* Don't modify this line */
+};
+#endif //__MAUI_NOR_FDM4__ 
+
+#if !defined(__SERIAL_FLASH__)
+#ifdef __NOR_SUPPORT_RAW_DISK__
+
+#ifndef NOR_BOOTING_NOR_DISK_NUM
+#error "custom\system\{project}\custom_MemoryDevice.h: Error! NOR_BOOTING_NOR_DISK_NUM be defined when __NOR_SUPPORT_RAW_DISK__ is defined."
+#endif //NOR_BOOTING_NOR_DISK_NUM
+
+#if (NOR_BOOTING_NOR_DISK_NUM>0)
+FLASH_REGIONINFO_VAR_MODIFIER FlashRegionInfo Disk0RegionInfo[]= /* Don't modify this line */
+{
+   DISK0_REGION_INFO_LAYOUT
+   EndRegionInfo /* Don't modify this line */
+};
+#endif /* NOR_BOOTING_NOR_DISK_NUM>0 */
+
+#if (NOR_BOOTING_NOR_DISK_NUM>1)
+FLASH_REGIONINFO_VAR_MODIFIER FlashRegionInfo Disk1RegionInfo[]= /* Don't modify this line */
+{
+   DISK1_REGION_INFO_LAYOUT
+   EndRegionInfo /* Don't modify this line */
+};
+#endif /* NOR_BOOTING_NOR_DISK_NUM>1 */
+#endif // __NOR_SUPPORT_RAW_DISK__
+
+FLASH_REGIONINFO_VAR_MODIFIER FlashRegionInfo EntireDiskRegionInfo[]= /* Don't modify this line */
+{
+   ENTIRE_DISK_REGION_INFO_LAYOUT
+   EndRegionInfo /* Don't modify this line */
+};
+
+NOR_FLASH_DISK_Data EntireDiskDriveData;
+static NOR_Flash_MTD_Data EntireDiskMtdData; 
+
+/*******************************************************************************
+   NOTICE. Modify the value of page buffer size in WORD for page buffer program
+ *******************************************************************************/
+kal_uint32 PAGE_BUFFER_SIZE = BUFFER_PROGRAM_ITERATION_LENGTH;
+
+/*******************************************************************************
+   NOTICE. This is for the Enhanced Signle Bank Support, when this feature is
+           turned on and still use multi-bank device, this table should be filled
+           with correct value.
+ 
+           This Table define the flash bank information which starts from 
+           FLASH_BASE_ADDRESS, please fill the flash bank information table, every
+           entry defines the memory space that contains continuous banks of equal size.
+           Each entry element in the table is the format as below:
+           {S_Bank, N_Bank},
+               S_Bank: the size of bank in the entry
+               N_Bank: the number of banks in the entry
+ *******************************************************************************/
+#endif /* !__COMBO_MEMORY_SUPPORT__ && !__SERIAL_FLASH__ */
+
+#endif // _NOR_FLASH_BOOTING_
+
+/*
+ ****************************************************************************
+ PART 3:
+ Essential Declarations for NOR-Flash Disk
+ ****************************************************************************
+*/
+
+extern NOR_MTD_Driver NORFlashMtd;
+
+#ifdef __MAUI_NOR_FDM4__
+
+static MS_ENTRY MSEntryTable[MS_TABLE_ENTRY_NUM];
+
+
+#if !defined(__SERIAL_FLASH__)
+
+#ifndef __INTEL_SIBLEY__
+
+/* Each FAT sector is 512bytes (0x200) */
+#define TOTAL_SECTORS   ((NOR_ALLOCATED_FAT_SPACE -NOR_BLOCK_SIZE * NOR_SYSTEM_DRIVE_RESERVED_BLOCK) / 0x200)
+
+kal_uint8 FDMBuffer[512];
+
+
+FS_Driver NORFlashDriver =
+{
+   NOR_MountDevice_ext,
+   NOR_ShutDown,
+   NOR_ReadSectors_ext,
+   NOR_WriteSectors_ext,
+   NOR_MediaChanged_ext,
+   NOR_DiscardSectors_ext,
+   NOR_GetDiskGeometry_ext,
+   NOR_LowLevelFormat_ext,
+   NOR_NonBlockWriteSectors_ext,
+   NOR_RecoverableWriteSectors_ext,
+   NOR_ResumeSectorStates_ext,
+   NULL, /*high level format*/
+   NULL, /*flush data*/
+   NULL  /*message ack*/
+#ifdef __SECURITY_OTP__
+   ,
+   NULL, /*copy sector*/
+   OTPAccess,
+   OTPQueryLength
+#endif
+};
+
+#else /* __INTEL_SIBLEY__ */
+
+/* Each FAT sector is 1024bytes (0x200) */
+#define TOTAL_SECTORS   ((NOR_ALLOCATED_FAT_SPACE - NOR_BLOCK_SIZE * NOR_SYSTEM_DRIVE_RESERVED_BLOCK) / 0x400)
+
+kal_uint8 FDMBuffer[1024];
+
+
+FS_Driver NORFlashDriver =
+{
+   SIB_MountDevice,
+   NOR_ShutDown,
+   SIB_ReadSectors,
+   SIB_WriteSectors,
+   NOR_MediaChanged,
+   SIB_DiscardSectors,
+   SIB_GetDiskGeometry,
+   SIB_LowLevelFormat,
+   SIB_NonBlockWriteSectors,
+   SIB_RecoverableWriteSectors,
+   SIB_ResumeSectorStates,
+   NULL, /*high level format*/
+   NULL, /*flush data*/
+   NULL  /*message ack*/
+#ifdef __SECURITY_OTP__
+   ,
+   NULL, /*copy sector*/
+   OTPAccess,
+   OTPQueryLength
+#endif
+};
+
+#endif /* __INTEL_SIBLEY__ */
+
+static WORD AVAILSECTORS[TOTAL_BLOCKS];
+static WORD VALIDSECTORS[TOTAL_BLOCKS];
+static BYTE SectorMap[TOTAL_SECTORS];
+NOR_FLASH_DRV_Data  FlashDriveData;
+
+
+#ifdef __MTK_TARGET__
+
+static NOR_Flash_MTD_Data mtdflash;
+
+#ifdef __NOR_SUPPORT_RAW_DISK__
+NOR_FLASH_DISK_Data FlashDiskDriveData[NOR_BOOTING_NOR_DISK_NUM];
+static NOR_Flash_MTD_Data mtdFlashDisk[NOR_BOOTING_NOR_DISK_NUM]; 
+#endif // __NOR_SUPPORT_RAW_DISK__
+
+extern kal_uint32 INT_RetrieveFlashBaseAddr(void);
+
+#else
+
+static NOR_Flash_MTD_Data mtdflash =
+{
+   MakeMtdFlashData((BYTE *)NOR_FLASH_BASE_ADDRESS, RegionInfo)
+};
+
+#endif /* __MTK_TARGET__ */
+
+#endif /* !(__COMBO_MEMORY_SUPPORT__) && !(__SERIAL_FLASH__) */
+
+#endif /* __MAUI_NOR_FDM4__ */
+
+
+
+/*
+ ****************************************************************************
+ PART 4:
+ Public Functions For NOR Flash Information Retrieve, Initial routine, and
+ other misc routines.
+ ****************************************************************************
+*/
+kal_uint32 custom_get_NORFLASH_Base(void);
+
+/*
+ ****************************************************************************
+ PART 5:
+ Essential Declarations for NAND-Flash Disk
+ ****************************************************************************
+*/
+#if (!(defined(__FUE__) && defined(__FOTA_DM__)) && (!defined(__UBL__)||(defined(__UBL__)&&defined(__NAND_SUPPORT_RAW_DISK__))))
+  // 1. NAND FDM variable compile option 
+  //   a. In general, FOTA and Boot loader don't need to include NAND FDM variable. 
+  //   b. In TC01 Raw disk case, boot loader need to call FDM function, it will need raw disk configuration 
+  // 2. Declare NAND variable structue
+  //   a. In general, NFBxxx is only used for NAND_BOOTING 
+  //   b. UP_PKG_ON_NAND will also need NFBxxx.
+
+#if defined(__EMMC_BOOTING__)
+
+
+#elif defined(_NAND_FLASH_BOOTING_)
+  /* System Drive on NAND-flash */
+  #if ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) )
+  kal_uint32 NFB_BASE_ADDRESS[NAND_DISK_NUM];
+  kal_uint32 NFB_ALLOCATED_FAT_SPACE[NAND_DISK_NUM];
+  kal_uint16 FS_DISK_REPLACE_RATIO[NAND_DISK_NUM];
+  const kal_uint8 NANDDiskNum = NAND_DISK_NUM;
+  #if ( defined(__NANDFDM_TOTAL_BBM__))
+  kal_uint32 FS_DISK_START_SECTION[NAND_DISK_NUM];
+  kal_uint32 NFB_REPLACE_BASE_ADDRESS;
+  kal_uint32 NFB_REPLACE_SPACE;
+  BBM_BRMT_INFO NAND_BRMT_Info;
+  #endif  
+  #else // ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) )
+  const kal_uint32 NFB_BASE_ADDRESS = NAND_FLASH_BASE_ADDRESS;
+  const kal_uint32 NFB_ALLOCATED_FAT_SPACE = NAND_ALLOCATED_FAT_SPACE;
+  #endif // ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) )
+
+#else /* !_NAND_FLASH_BOOTING_ || __EMMC_BOOTING__ */
+  #if (defined(__UP_PKG_ON_NAND__) && defined(NAND_SUPPORT)) || (defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__))  
+    /* update package storage on NAND flash */
+    #if ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) )
+      kal_uint32 NFB_BASE_ADDRESS[NAND_DISK_NUM];
+      kal_uint32 NFB_ALLOCATED_FAT_SPACE[NAND_DISK_NUM];
+      kal_uint16 FS_DISK_REPLACE_RATIO[NAND_DISK_NUM];
+      const kal_uint8 NANDDiskNum = NAND_DISK_NUM;
+    #else // ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) )
+      const kal_uint32 NFB_BASE_ADDRESS = NAND_FLASH_BASE_ADDRESS;
+      const kal_uint32 NFB_ALLOCATED_FAT_SPACE = NAND_ALLOCATED_FAT_SPACE;
+    #endif // ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) )
+  #endif
+#endif /* _NAND_FLASH_BOOTING_ || __EMMC_BOOTING__ */
+
+#if defined(__NAND_FDM_50__)
+  #ifdef  NAND_BOOTING_NAND_MAX_REPLACE_COUNT
+   kal_uint16 wNandMaxReplaceCount = NAND_BOOTING_NAND_MAX_REPLACE_COUNT;
+  #else
+   kal_uint16 wNandMaxReplaceCount = 28;
+  #endif
+#endif //defined(__NAND_FDM_50__)
+
+#ifdef __EMMC_BOOTING__
+kal_uint32 custom_part_secs = 0;
+#else
+kal_uint32 custom_part_secs = NAND_PARTITION_SECTORS;
+#endif
+
+#if ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) )
+  #if (defined(__UBL__)&&defined(__NAND_SUPPORT_RAW_DISK__))
+  NAND_FLASH_DRV_DATA  NANDFlashDriveData[1];   // To save ZI Space
+  #else
+  NAND_FLASH_DRV_DATA  NANDFlashDriveData[NAND_DISK_NUM];
+  #endif
+#else // ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) )
+NAND_FLASH_DRV_DATA  NANDFlashDriveData;
+#endif // ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) )
+
+#endif /* (!(__FOTA_DM__ && __FUE__) || !__UBL__)) || (UBL&&RAW) */
+/*************************************************************************
+* FUNCTION
+*  custom_get_NORFLASH_ROMSpace()
+*
+* DESCRIPTION
+*  Query the of space configured for NORFLASH ROM
+*
+* PARAMETERS
+*
+* RETURNS
+*  BASE ADDRESS
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+kal_uint32
+custom_get_NORFLASH_ROMSpace(void)
+{
+#if   defined(_NAND_FLASH_BOOTING_) || defined(__EMMC_BOOTING__) || defined(__RAMDISK__)
+   return 0;
+#elif defined(__FS_SYSDRV_ON_NAND__) || (defined(__UP_PKG_ON_NAND__) && defined(NAND_SUPPORT))
+   return NOR_FLASH_BASE_ADDRESS + NOR_ALLOCATED_FAT_SPACE;
+#else
+   return NOR_FLASH_BASE_ADDRESS;
+#endif
+}
+
+
+/*************************************************************************
+* FUNCTION
+*  custom_get_NORFLASH_Size()
+*
+* DESCRIPTION
+*  Query the size of NORFLASH ROM
+*
+* PARAMETERS
+*
+* RETURNS
+*  SIZE
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+kal_uint32
+custom_get_NORFLASH_Size(void)
+{
+#if   defined(_NAND_FLASH_BOOTING_) || defined(__EMMC_BOOTING__) || defined(__RAMDISK__)
+   return 0;
+#else
+   return NOR_FLASH_SIZE;
+#endif
+}
+
+/*************************************************************************
+* FUNCTION
+*  Initialize_FDD_tables
+*
+* DESCRIPTION
+*  Initialize important information for NOR-flash disk
+*
+* PARAMETERS
+*
+* RETURNS
+*  None
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+#if defined(__MAUI_LOAD__)
+
+#if defined(__RAMDISK__)
+extern kal_uint8 ram_disk[];       
+void Initialize_FDD_tables(void)
+{
+    return;
+}
+#elif defined(__SERIAL_FLASH__) && defined(_NOR_FLASH_BOOTING_)
+void Initialize_FDD_tables(void)
+{
+#if !defined(ATEST_DRV_ENABLE) && !defined(ATEST_DRV_ENVIRON)
+    ComboMem_Initialize();
+#endif /* end of ATEST_DRV_ENABLE */
+    return;
+}
+
+#else /* (!(__COMBO_MEMORY_SUPPORT__) && !(__SERIAL_FLASH__)) && !(_NOR_FLASH_BOOTING_) */
+
+#ifndef __NOR_FDM5__
+
+#ifdef __NONE_FLASH_EXIST__
+
+NOR_MTD_Driver NORFlashMtd;
+
+#endif
+
+void Initialize_FDD_tables(void)
+{
+#if ( !defined(__FS_SYSDRV_ON_NAND__) && defined(_NOR_FLASH_BOOTING_))
+
+   /* Initialize MTD data table */
+   mtdflash.Signature = ~((kal_uint32)RegionInfo);
+
+#ifdef __MTK_TARGET__
+#if (defined(__SMART_PHONE_PLATFORM__) && !defined(__SMART_PHONE_MODEM__)) && defined(__RAMDISK__)
+   mtdflash.BaseAddr = (kal_uint8 *)ram_disk;
+#else
+   mtdflash.BaseAddr = (BYTE *)(INT_RetrieveFlashBaseAddr() + NOR_FLASH_BASE_ADDRESS);
+#endif
+
+#endif /* __MTK_TARGET__ */
+
+   mtdflash.RegionInfo = (FlashRegionInfo *)RegionInfo;
+
+   /* Initialize FDD data table */
+   FlashDriveData.MTDDriver = &NORFlashMtd;
+   FlashDriveData.MTDData = &mtdflash;
+   FlashDriveData.AvailSectorsInBlock = AVAILSECTORS;
+   FlashDriveData.ValidSectorsInBlock = VALIDSECTORS;
+   FlashDriveData.SectorMap = (BYTE*)SectorMap;
+   FlashDriveData.PartitionSectors = NOR_PARTITION_SECTORS;
+   FlashDriveData.Buffer = FDMBuffer;
+   FlashDriveData.MSTABLE_ENTRY_NUM = MS_TABLE_ENTRY_NUM;
+   FlashDriveData.MSEntryTable = MSEntryTable;
+
+   /* The reserved unit is 0.5 block.*/
+   FlashDriveData.SystemDriveReservedUnits = (kal_uint32)(NOR_SYSTEM_DRIVE_RESERVED_BLOCK * 2);
+
+   
+#ifdef __NOR_SUPPORT_RAW_DISK__
+   mtdFlashDisk[0].Signature = ~((kal_uint32)Disk0RegionInfo);
+   mtdFlashDisk[0].BaseAddr = (BYTE *)(INT_RetrieveFlashBaseAddr() + NOR_BOOTING_NOR_DISK0_BASE_ADDRESS); 
+   mtdFlashDisk[0].RegionInfo = (FlashRegionInfo *)Disk0RegionInfo;
+   FlashDiskDriveData[0].DiskSize = NOR_BOOTING_NOR_DISK0_SIZE; 
+   FlashDiskDriveData[0].MTDDriver = &NORFlashMtd; 
+   FlashDiskDriveData[0].MTDData = &mtdFlashDisk[0]; 
+#if (NOR_BOOTING_NOR_DISK_NUM > 1)
+   mtdFlashDisk[1].Signature = ~((kal_uint32)Disk1RegionInfo);
+   mtdFlashDisk[1].BaseAddr = (BYTE *)(INT_RetrieveFlashBaseAddr() + NOR_BOOTING_NOR_DISK1_BASE_ADDRESS); 
+   mtdFlashDisk[1].RegionInfo = (FlashRegionInfo *)Disk1RegionInfo;
+   FlashDiskDriveData[1].DiskSize = NOR_BOOTING_NOR_DISK1_SIZE; 
+   FlashDiskDriveData[1].MTDDriver = &NORFlashMtd; 
+   FlashDiskDriveData[1].MTDData = &mtdFlashDisk[1]; 
+#endif // NOR_BOOTING_NOR_DISK_NUM > 1
+#endif // __NOR_SUPPORT_RAW_DISK__
+
+#ifdef __FOTA_DM__
+   FlashDriveData.FlashInfo.baseUnlockBlock = INVALID_BLOCK_INDEX;
+   FlashDriveData.FlashInfo.endUnlockBlock = INVALID_BLOCK_INDEX;
+#endif
+
+
+#ifdef __BASIC_LOAD_FLASH_TEST__
+#ifdef __INTEL_SIBLEY__
+   LocateSector_ext = SIB_LocateSector;
+#else
+   LocateSector_ext = LocateSector;
+#endif //__INTEL_SIBLEY__
+#endif //__BASIC_LOAD_FLASH_TEST__
+
+
+#endif /* !__FS_SYSDRV_ON_NAND__ && _NOR_FLASH_BOOTING_ */
+
+ #if ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) )
+ {
+  kal_uint32 DiskIndex;
+
+  for (DiskIndex=0; DiskIndex<NAND_DISK_NUM; DiskIndex++) 
+  {
+   #if (defined(__UBL__)&&defined(__NAND_SUPPORT_RAW_DISK__))
+   if(DiskIndex==RAW_DISK_INDEX){
+     NANDFlashDriveData[0].NAND_FDMData.DiskIndex = RAW_DISK_INDEX;
+   }
+   #else
+   NANDFlashDriveData[DiskIndex].NAND_FDMData.DiskIndex = DiskIndex;
+   #endif
+   switch (DiskIndex) 
+   {
+    case 0:
+     NFB_BASE_ADDRESS[0] = NAND_BOOTING_NAND_FS_DISK0_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[0] = NAND_BOOTING_NAND_FS_DISK0_SIZE;
+     FS_DISK_REPLACE_RATIO[0] = NAND_BOOTING_NAND_FS_DISK0_REPLACE_RATIO;
+     break;
+                                #if (NAND_DISK_NUM > 1)
+    case 1:
+     NFB_BASE_ADDRESS[1] = NAND_BOOTING_NAND_FS_DISK1_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[1] = NAND_BOOTING_NAND_FS_DISK1_SIZE;
+     FS_DISK_REPLACE_RATIO[1] = NAND_BOOTING_NAND_FS_DISK1_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 1 */
+                                #if (NAND_DISK_NUM > 2)
+    case 2:
+     NFB_BASE_ADDRESS[2] = NAND_BOOTING_NAND_FS_DISK2_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[2] = NAND_BOOTING_NAND_FS_DISK2_SIZE;
+     FS_DISK_REPLACE_RATIO[2] = NAND_BOOTING_NAND_FS_DISK2_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 2 */
+                                #if (NAND_DISK_NUM > 3)
+    case 3:
+     NFB_BASE_ADDRESS[3] = NAND_BOOTING_NAND_FS_DISK3_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[3] = NAND_BOOTING_NAND_FS_DISK3_SIZE;
+     FS_DISK_REPLACE_RATIO[3] = NAND_BOOTING_NAND_FS_DISK3_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 3 */
+                                #if (NAND_DISK_NUM > 4)
+    case 4:
+     NFB_BASE_ADDRESS[4] = NAND_BOOTING_NAND_FS_DISK4_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[4] = NAND_BOOTING_NAND_FS_DISK4_SIZE;
+     FS_DISK_REPLACE_RATIO[4] = NAND_BOOTING_NAND_FS_DISK4_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 4 */
+                                #if (NAND_DISK_NUM > 5)
+    case 5:
+     NFB_BASE_ADDRESS[5] = NAND_BOOTING_NAND_FS_DISK5_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[5] = NAND_BOOTING_NAND_FS_DISK5_SIZE;
+     FS_DISK_REPLACE_RATIO[5] = NAND_BOOTING_NAND_FS_DISK5_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 5 */
+                                #if (NAND_DISK_NUM > 6)
+    case 6:
+     NFB_BASE_ADDRESS[6] = NAND_BOOTING_NAND_FS_DISK6_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[6] = NAND_BOOTING_NAND_FS_DISK6_SIZE;
+     FS_DISK_REPLACE_RATIO[6] = NAND_BOOTING_NAND_FS_DISK6_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 6 */
+                                #if (NAND_DISK_NUM > 7)
+    case 7:
+     NFB_BASE_ADDRESS[7] = NAND_BOOTING_NAND_FS_DISK7_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[7] = NAND_BOOTING_NAND_FS_DISK7_SIZE;
+     FS_DISK_REPLACE_RATIO[7] = NAND_BOOTING_NAND_FS_DISK7_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 7 */
+   }
+  }
+ }
+    #if ( defined(__NANDFDM_TOTAL_BBM__))
+    NFB_REPLACE_BASE_ADDRESS = NAND_BOOTING_NAND_FS_REPLACE_BASE_ADDRESS;
+    NFB_REPLACE_SPACE = NAND_BOOTING_NAND_FS_REPLACE_SIZE;
+    NAND_BRMT_Info.ParameterReady = KAL_FALSE;
+    NAND_BRMT_Info.NoReplace = KAL_FALSE;
+    NAND_BRMT_Info.BRMT_Addr = 0;
+    NAND_BRMT_Info.CurSectorInRAM = 0xff;
+    #endif 
+
+ #endif // ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) )
+}
+#endif /*__NOR_FDM5__*/
+#endif /* !(__COMBO_MEMORY_SUPPORT__) && !(__SERIAL_FLASH__) */
+
+void nor_sweep_device(void)
+{
+#ifdef __NOR_FDM5__
+   kal_set_eg_events(nor_egid, NOR_DMAN_EVENT, KAL_OR);
+#endif
+   return;
+}
+
+void nor_manual_reclaim(void)
+{
+#ifdef __NOR_FDM5__
+   kal_set_eg_events(nor_egid, NOR_BRECL_EVENT, KAL_OR);
+#endif
+   return;
+}
+
+/*************************************************************************
+* FUNCTION
+*  custom_get_fat_addr()
+*
+* DESCRIPTION
+*  This function gets the start address of FAT.
+*
+* PARAMETERS
+*  none
+*
+* RETURNS
+*  FAT start address
+*
+*************************************************************************/
+kal_uint32 custom_get_fat_addr()
+{
+   #if defined(__RAMDISK__) 
+      return (kal_uint32)(&ram_disk);
+   #elif defined(__EMMC_BOOTING__)
+      return EMMC_CODE_PARTITION_SIZE;
+   #elif defined(_NAND_FLASH_BOOTING_)
+      return NAND_FLASH_BASE_ADDRESS;
+   #else
+      return NOR_FLASH_BASE_ADDRESS;
+   #endif   /* _NAND_FLASH_BOOTING_ */
+}
+
+/*************************************************************************
+* FUNCTION
+*  custom_get_fat_len()
+*
+* DESCRIPTION
+*  This function gets the len of FAT.
+*
+* PARAMETERS
+*  none
+*
+* RETURNS
+*  FAT length
+*
+*************************************************************************/
+kal_uint32 custom_get_fat_len()
+{
+   #if defined(__RAMDISK__)    
+      return RAM_FS_SIZE_INT;
+   #elif defined(__EMMC_BOOTING__)
+      return 0;
+   #elif defined(_NAND_FLASH_BOOTING_)
+      return NAND_ALLOCATED_FAT_SPACE;
+   #else
+      return NOR_ALLOCATED_FAT_SPACE;
+   #endif   /* _NAND_FLASH_BOOTING_ */
+}
+#endif // __MAUI_LOAD__
+
+/*************************************************************************
+* FUNCTION
+*  Custom_NAND_Init
+*
+* DESCRIPTION
+*  Initialize important information for NAND-flash disk
+*
+* PARAMETERS
+*
+* RETURNS
+*  None
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+#if ((defined(__UBL__)&&defined(__NAND_SUPPORT_RAW_DISK__))||(!defined(__UBL__))) && !defined(__FUE__)
+kal_bool NANDParameterInitialized = KAL_FALSE;
+void Custom_NAND_Init(void)
+{
+ #if ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) )
+ {
+  kal_uint32 DiskIndex;
+  if(NANDParameterInitialized==KAL_TRUE){
+    return;
+  }
+  NANDParameterInitialized = KAL_TRUE;
+
+  for (DiskIndex=0; DiskIndex<NAND_DISK_NUM; DiskIndex++) 
+  {
+   #if (defined(__UBL__)&&defined(__NAND_SUPPORT_RAW_DISK__))
+   if(DiskIndex==RAW_DISK_INDEX){
+     NANDFlashDriveData[0].NAND_FDMData.DiskIndex = RAW_DISK_INDEX;
+   }
+   #else
+   NANDFlashDriveData[DiskIndex].NAND_FDMData.DiskIndex = DiskIndex;
+   #endif   
+   switch (DiskIndex) 
+   {
+    case 0:
+     NFB_BASE_ADDRESS[0] = NAND_BOOTING_NAND_FS_DISK0_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[0] = NAND_BOOTING_NAND_FS_DISK0_SIZE;
+     FS_DISK_REPLACE_RATIO[0] = NAND_BOOTING_NAND_FS_DISK0_REPLACE_RATIO;
+     break;
+    #if (NAND_DISK_NUM > 1)
+    case 1:
+     NFB_BASE_ADDRESS[1] = NAND_BOOTING_NAND_FS_DISK1_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[1] = NAND_BOOTING_NAND_FS_DISK1_SIZE;
+     FS_DISK_REPLACE_RATIO[1] = NAND_BOOTING_NAND_FS_DISK1_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 1 */
+    #if (NAND_DISK_NUM > 2)
+    case 2:
+     NFB_BASE_ADDRESS[2] = NAND_BOOTING_NAND_FS_DISK2_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[2] = NAND_BOOTING_NAND_FS_DISK2_SIZE;
+     FS_DISK_REPLACE_RATIO[2] = NAND_BOOTING_NAND_FS_DISK2_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 2 */
+    #if (NAND_DISK_NUM > 3)
+    case 3:
+     NFB_BASE_ADDRESS[3] = NAND_BOOTING_NAND_FS_DISK3_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[3] = NAND_BOOTING_NAND_FS_DISK3_SIZE;
+     FS_DISK_REPLACE_RATIO[3] = NAND_BOOTING_NAND_FS_DISK3_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 3 */
+    #if (NAND_DISK_NUM > 4)
+    case 4:
+     NFB_BASE_ADDRESS[4] = NAND_BOOTING_NAND_FS_DISK4_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[4] = NAND_BOOTING_NAND_FS_DISK4_SIZE;
+     FS_DISK_REPLACE_RATIO[4] = NAND_BOOTING_NAND_FS_DISK4_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 4 */
+    #if (NAND_DISK_NUM > 5)
+    case 5:
+     NFB_BASE_ADDRESS[5] = NAND_BOOTING_NAND_FS_DISK5_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[5] = NAND_BOOTING_NAND_FS_DISK5_SIZE;
+     FS_DISK_REPLACE_RATIO[5] = NAND_BOOTING_NAND_FS_DISK5_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 5 */
+    #if (NAND_DISK_NUM > 6)
+    case 6:
+     NFB_BASE_ADDRESS[6] = NAND_BOOTING_NAND_FS_DISK6_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[6] = NAND_BOOTING_NAND_FS_DISK6_SIZE;
+     FS_DISK_REPLACE_RATIO[6] = NAND_BOOTING_NAND_FS_DISK6_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 6 */
+    #if (NAND_DISK_NUM > 7)
+    case 7:
+     NFB_BASE_ADDRESS[7] = NAND_BOOTING_NAND_FS_DISK7_BASE_ADDRESS;
+     NFB_ALLOCATED_FAT_SPACE[7] = NAND_BOOTING_NAND_FS_DISK7_SIZE;
+     FS_DISK_REPLACE_RATIO[7] = NAND_BOOTING_NAND_FS_DISK7_REPLACE_RATIO;     
+     break;
+    #endif /* NAND_DISK_NUM > 7 */
+   }
+  }
+ }
+    #if ( defined(__NANDFDM_TOTAL_BBM__))
+    NFB_REPLACE_BASE_ADDRESS = NAND_BOOTING_NAND_FS_REPLACE_BASE_ADDRESS;
+    NFB_REPLACE_SPACE = NAND_BOOTING_NAND_FS_REPLACE_SIZE;
+    NAND_BRMT_Info.ParameterReady = KAL_FALSE;
+    NAND_BRMT_Info.NoReplace = KAL_FALSE;
+    NAND_BRMT_Info.BRMT_Addr = 0;
+    NAND_BRMT_Info.CurSectorInRAM = 0xff;
+    #endif
+
+ #endif // ( defined(__NANDFDM_MULTI_INSTANCE__) && defined(__NAND_FDM_50__) )
+}
+#endif /* (!__UBL__ && !__FUE__)|| (UBL&&RAW) */
+
+extern kal_int32 EMI_QueryIsRemapped(void);
+
+void Custom_NOR_Init(void)
+{
+#if (!(defined(__FS_SYSDRV_ON_NAND__) || defined( _NAND_FLASH_BOOTING_) || defined(__EMMC_BOOTING__))) && !defined(__RAMDISK__)
+ #if defined(__SERIAL_FLASH__)
+   CMEM_Init_FullDriver();
+ #else // (defined(__COMBO_MEMORY_SUPPORT__) || defined(__SERIAL_FLASH__))
+   EntireDiskMtdData.Signature = ~((kal_uint32)EntireDiskRegionInfo);
+   #if defined(__UBL__)
+     if(EMI_QueryIsRemapped())
+        EntireDiskMtdData.BaseAddr = (BYTE *)0x10000000;
+     else 
+        EntireDiskMtdData.BaseAddr = (BYTE *)0; 
+   #else
+   EntireDiskMtdData.BaseAddr = (BYTE *)INT_RetrieveFlashBaseAddr(); 
+   #endif
+   EntireDiskMtdData.RegionInfo = (FlashRegionInfo *)EntireDiskRegionInfo;
+   EntireDiskDriveData.DiskSize = NOR_FLASH_SIZE;
+   EntireDiskDriveData.MTDDriver = &NORFlashMtd;    
+   EntireDiskDriveData.MTDData = &EntireDiskMtdData;
+   EntireDiskDriveData.is_mount = KAL_FALSE;    
+ #endif // (defined(__COMBO_MEMORY_SUPPORT__) || defined(__SERIAL_FLASH__))
+#endif /* !__FS_SYSDRV_ON_NAND__ && !_NAND_FLASH_BOOTING_ */
+}
+
+#if (defined(__FUE__) || defined(__EXT_BOOTLOADER__)) && defined(__FOTA_DM__)
+#if defined(__SERIAL_FLASH__)
+
+void Initialize_NOR_Info(void)
+{
+	CMEM_Init_FUE();
+}
+
+
+#else //!__COMBO_MEMORY_SUPPORT__ && !__SERIAL_FLASH__
+
+#include "custom_fota.h"
+
+NOR_Flash_MTD_Data fue_nor_mtdflash;
+
+extern NOR_MTD_Driver NORFlashMtd;
+
+NOR_FLASH_DRV_Data  FlashDriveData;
+
+void Initialize_NOR_Info(void)
+{
+#if defined(_NOR_FLASH_BOOTING_)
+   kal_uint32 blk_addr = 0;
+
+   /* Initialize MTD data table */
+   fue_nor_mtdflash.Signature = ~((kal_uint32)NORRegionInfo);
+
+   #if !defined(__UBL__)
+   FlashDriveData.MTDDriver = &NORFlashMtd;
+   #endif /* __UBL__ */
+   FlashDriveData.MTDData = &fue_nor_mtdflash;
+
+#ifdef __MTK_TARGET__
+   #if defined(MT6238) || defined(MT6239) || defined(MT6235B)
+   fue_nor_mtdflash.BaseAddr = (BYTE *)(custom_get_NORFLASH_Base()|0x08000000);
+   #elif defined(MT6228) || defined(MT6229) || defined(MT6230) || defined(MT6225) || defined(MT6268T)
+   fue_nor_mtdflash.BaseAddr = (BYTE *)(custom_get_NORFLASH_Base()|0x04000000);
+   #else
+   fue_nor_mtdflash.BaseAddr = (BYTE *)custom_get_NORFLASH_Base();
+   #endif
+#endif /* __MTK_TARGET__ */
+
+   fue_nor_mtdflash.RegionInfo = (FlashRegionInfo *)NORRegionInfo;
+
+#ifdef __FOTA_DM__
+   blk_addr = SSF_GetUAImageLoadAddress()|custom_get_NORFLASH_Base();
+   #if defined(MT6238) || defined(MT6239) || defined(MT6235B)
+   blk_addr |= 0x08000000;
+   #elif defined(MT6228) || defined(MT6229) || defined(MT6230) || defined(MT6225) || defined(MT6268T)
+   blk_addr |= 0x04000000;
+   #else
+   blk_addr |= 0x0;
+   #endif
+   blk_addr -= (kal_uint32)fue_nor_mtdflash.BaseAddr;
+   FlashDriveData.FlashInfo.baseUnlockBlock = BlockIndex(&fue_nor_mtdflash, blk_addr);
+
+   #if (defined(__UP_PKG_ON_NAND__) && defined(NAND_SUPPORT))
+   blk_addr =  (custom_get_NORFLASH_ROMSpace() - 1) | custom_get_NORFLASH_Base();
+   #else
+   blk_addr =  FOTA_GetPackageStorageBase()+FOTA_GetPackageStorageSize();
+   #endif /* __UP_PKG_ON_NAND__ && NAND_SUPPORT */
+
+   #if defined(MT6238) || defined(MT6239) || defined(MT6235B)
+   blk_addr |= 0x08000000;
+   #elif defined(MT6228) || defined(MT6229) || defined(MT6230) || defined(MT6225) || defined(MT6268T)
+   blk_addr |= 0x04000000;
+   #else
+   blk_addr |= 0x0;
+   #endif
+
+   blk_addr -= (kal_uint32)fue_nor_mtdflash.BaseAddr;
+   FlashDriveData.FlashInfo.endUnlockBlock = BlockIndex(&fue_nor_mtdflash, blk_addr);
+#endif
+
+#endif // _NOR_FLASH_BOOTING_ 
+}
+
+#endif //__COMBO_MEMORY_SUPPORT__ || __SERIAL_FLASH__
+#endif /* (__FUE__ || __EXT_BOOTLOADER__) && __FOTA_DM__ */
+
+
+
+
+
+/*************************************************************************
+* FUNCTION
+*  custom_get_FLASH_Size()
+*
+* DESCRIPTION
+*  Query the of space configured for ROM
+*
+* PARAMETERS
+*
+* RETURNS
+*  BASE ADDRESS
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+kal_uint32 custom_get_FLASH_Size(void)
+{
+#if defined(__RAMDISK__)
+   return RAM_FS_SIZE_INT;
+#elif defined(__EMMC_BOOTING__)
+   return 0;
+#elif defined(_NAND_FLASH_BOOTING_)
+   return NAND_TOTAL_SIZE << 20;
+#else
+   return NOR_FLASH_SIZE;
+#endif
+}
+
+#if defined(__RAMDISK__)
+#include "ramdisk_gprot.h"    // for RAM Disk FDM APIs
+kal_uint32 RAMDiskDriveData;
+FS_Driver RAMDiskDriver =
+{
+   ramdisk_fdm_mount_device,
+   ramdisk_fdm_shutdown,
+   ramdisk_fdm_read_sectors,
+   ramdisk_fdm_write_sectors,
+   ramdisk_fdm_media_changed,
+   NULL,
+   ramdisk_fdm_get_disk_geometry,
+   NULL,
+   NULL,
+   ramdisk_fdm_recoverable_write_sectors,
+   ramdisk_fdm_resume_sector_states,
+   NULL,
+   NULL, /*flush data*/
+   NULL, /*message ack*/
+   NULL, /*copy sector*/
+   NULL,
+   NULL
+};
+#endif // __RAMDISK__
+#else // __SMART_PHONE_PLATFORM__ && __SMART_PHONE_MODEM__
+void Initialize_FDD_tables(void)
+{
+    return;
+}
+
+kal_uint32 custom_get_fat_addr()
+{
+      return 0;
+}
+
+kal_uint32 custom_get_fat_len()
+{
+      return 0;
+}
+
+
+/*************************************************************************
+* FUNCTION
+*  custom_get_NORFLASH_Base()
+*
+* DESCRIPTION
+*  Query the of space configured for NORFLASH ROM
+*
+* PARAMETERS
+*
+* RETURNS
+*  BASE ADDRESS
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+kal_uint32 custom_get_NORFLASH_Base(void)
+{
+#if   defined(_NAND_FLASH_BOOTING_) || defined(__EMMC_BOOTING__)
+   return 0;
+#else
+   return NOR_FLASH_BASE_ADDR;
+#endif
+}
+
+
+#endif //!__SMART_PHONE_PLATFORM__ || !__SMART_PHONE_MODEM__
+
+
+
+/*************************************************************************
+* FUNCTION
+*  INT_QueryIsROMSpace()
+*
+* DESCRIPTION
+*  Query the address in Flash address space or not
+*
+* PARAMETERS
+*  address to check
+*
+* RETURNS
+*  KAL_TRUE if address is in Flash address space
+*  KAL_FALSE if not
+*
+* Only apply to ADMUX MT6255 for DMA to check whether the address to be copied in flash or not. 
+* To avoid DMA accessing Single bank flash when it is busy.
+* 
+*************************************************************************/
+
+kal_bool INT_QueryIsROMSpace(kal_uint32 addr)
+{
+   return KAL_FALSE;
+}
+
diff --git a/mcu/custom/driver/common/custom_flash_norfdm5.c b/mcu/custom/driver/common/custom_flash_norfdm5.c
new file mode 100644
index 0000000..1abc9e0
--- /dev/null
+++ b/mcu/custom/driver/common/custom_flash_norfdm5.c
@@ -0,0 +1,297 @@
+/*****************************************************************************
+*  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) 2006
+*
+*  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:
+ * ---------
+ *   custom_flash_norfdm5.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   defines prototypes and data structure which will be used in NOR FDM 5.0
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *   Memory Device database last modified on 2011/7/8
+ *
+ *============================================================================
+ *             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!!
+ *============================================================================
+ ****************************************************************************/
+
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"
+#include "fat_fs.h"
+#include "DrvFlash.h"
+#include "flash_opt.h"
+#include "custom_MemoryDevice.h"
+
+#include "custom_nvram_int_config.h"  /* To get NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM for MSTABLE_ENTRY_NUM */
+
+
+#ifdef __NOR_FDM5__
+#include "custom_flash_norfdm5.h"
+
+#define STORAGE_NO_PARTITION 0xFFFFFFFF
+
+
+/*-------------------------------------------------------------------
+ * MS table size
+ *
+ * MS table size should be synchronized with user's requirement. The only one user is NVRAM.
+ *
+ * NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM defines the maximum record size in NVRAM
+ * (in custom_nvram_config.h). NVRAM should call NOR_ResumeSectorState (by FS_Commit)
+ * after it writes maximum NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM sectors with protection
+ * mode to ensure the integrity of a record.
+ *
+ * MSTABLE_ENTRY_NUM number is based on the worst senario: All FAT entries of clusters
+ * of logical sectors are located in different physical sectors. In other word, we need
+ * to write additional N sectors to update FAT after we write N data sectors. The other
+ * 1 sector is for directory entry update.
+ *
+ * TODO: Use auto-gen to compute most suitable MS table size. Because the number of
+ * sectors for FAT may be smaller than NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM. For example,
+ * 64KB disk only needs 1 sector to store FAT.
+ *---------------------------------------------------------- W08.50 --*/
+
+#define MS_TABLE_ENTRY_NUM    (NVRAM_CUSTOM_CFG_MAX_RECORD_SECTOR_NUM * 2 + 1)
+
+
+/*****************************************
+ * Don't modify any code above this line *
+ *****************************************/
+
+/*******************************************************************************
+   Follow the 4 steps below to configure flash memory
+              
+   Step 1. Fill the flash bank (partition) information table,
+           flash device features flexible, multi-bank read-while-program and 
+           read-while-erase capability, enabling background programming or erasing in 
+           one bank simultaneously with code execution or data reads in another bank.
+           Each element in the table is the format as below:
+           {bank size, bank number},   
+                          
+   Step 2. Modify the value of LSMT, you can see MemoryDevice_FlashDisk_FAQ for 
+           detail information
+      
+   Step 2. Define the toal sectors (512bytes) of system drive
+           the remainder is the size of public drive
+           If there is no partiton (just one drive, system drive)
+           set this value to STORAGE_NO_PARTITION (0xFFFFFFFF) 
+ 
+           
+   Note : Code region and FAT region can not share the same bank (partition)
+*******************************************************************************/
+
+
+/***********
+ * Step 1. *
+ ***********/
+static NORBankInfo BankInfo[] =
+{
+   NOR_FDM5_BANK_INFO_LAYOUT
+   EndBankInfo /* Don't modify this line */
+};
+
+
+/*****************************************
+ * Don't modify any code below this line *
+ *****************************************/
+
+#define NOR_TOTAL_BLOCKS (NOR_ALLOCATED_FAT_SPACE/NOR_BLOCK_SIZE)
+#define NOR_TOTAL_TABLE_BLOCKS 32
+NOR_FTL_DATA  FlashDriveData;
+static NORLayoutInfo LayoutInfo;
+
+static kal_uint32 LogPageID[MS_TABLE_ENTRY_NUM];
+static WORD NewEntryID[MS_TABLE_ENTRY_NUM];
+static WORD OldEntryID[MS_TABLE_ENTRY_NUM];
+
+#ifndef __INTEL_SIBLEY__
+
+#define NOR_PAGE_SIZE 512
+
+FS_Driver NORFlashDriver = {
+   nNOR_MountDevice,
+   nShutDown,
+   nNOR_ReadSectors,
+   nNOR_WriteSectors,
+   NOR_MediaChanged,
+   nNOR_DiscardSectors,
+   nGetDiskGeometry,
+   nNOR_LowLevelFormat,
+   nNOR_NonBlockWriteSectors,
+   nNOR_RecoverableWriteSectors,
+   nNOR_ResumeSectorStates,
+   NULL, /*high level format*/
+   NULL, /*flush data*/
+   NULL  /*message ack*/
+#ifdef __SECURITY_OTP__
+   ,
+   NULL, /*copy sector*/
+   OTPAccess,
+   OTPQueryLength
+#endif
+};
+   
+#else
+
+#define NOR_PAGE_SIZE 1024
+
+FS_Driver NORFlashDriver = {
+   nSIB_MountDevice,
+   nShutDown,
+   nSIB_ReadSectors,
+   nSIB_WriteSectors,
+   NOR_MediaChanged,
+   nSIB_DiscardSectors,
+   nGetDiskGeometry,
+   nSIB_LowLevelFormat,
+   nSIB_NonBlockWriteSectors,
+   nSIB_RecoverableWriteSectors,
+   nSIB_ResumeSectorStates,
+   NULL, /*high level format*/
+   NULL, /*flush data*/
+   NULL  /*message ack*/
+#ifdef __SECURITY_OTP__
+   ,
+   NULL, /*copy sector*/
+   OTPAccess,
+   OTPQueryLength
+#endif
+};
+#endif /*__INTEL_SIBLEY__*/
+
+
+static kal_uint16  NOR_LBM[NOR_TOTAL_BLOCKS];
+static LSMGEntry   NOR_LSMG[NOR_TOTAL_LSMT]; // need to check in the program
+static kal_uint16  NOR_AvailInBlk[NOR_TOTAL_BLOCKS];
+static kal_uint16  NOR_InvaildInBlk[NOR_TOTAL_BLOCKS];
+static kal_uint32  NOR_InvalidEntryInTblBlk[NOR_TOTAL_TABLE_BLOCKS];
+static kal_uint8 FDMBuffer[NOR_PAGE_SIZE];
+static kal_uint8 CopyBuffer[NOR_PAGE_SIZE];
+static NOR_MTD_DATA mtdflash;
+kal_eventgrpid  nor_egid = NULL;
+
+extern NOR_MTD_Driver NORFlashMtd;
+extern kal_uint32 INT_RetrieveFlashBaseAddr(void);
+
+void Initialize_FDD_tables(void)
+{
+#if ( !defined(__FS_SYSDRV_ON_NAND__) && !defined( _NAND_FLASH_BOOTING_) )
+    /* Initialize MTD data table */
+   mtdflash.Signature = ~((kal_uint32)&LayoutInfo);
+
+#ifdef __MTK_TARGET__
+   mtdflash.BaseAddr = (BYTE *)(INT_RetrieveFlashBaseAddr() + NOR_FLASH_BASE_ADDRESS);
+#endif
+   LayoutInfo.BankInfo = BankInfo;
+   LayoutInfo.TotalBlks = NOR_TOTAL_BLOCKS;
+   LayoutInfo.BlkSize = NOR_BLOCK_SIZE;
+   LayoutInfo.PageSize = NOR_PAGE_SIZE;
+   LayoutInfo.TotalLSMT= NOR_TOTAL_LSMT;
+   mtdflash.LayoutInfo = (NORLayoutInfo *)&LayoutInfo;
+
+   /* Initialize FDD data table */
+   FlashDriveData.MTDDriver = &NORFlashMtd;
+   FlashDriveData.MTDData = &mtdflash;
+   FlashDriveData.LBM = NOR_LBM;
+   FlashDriveData.LSMG = NOR_LSMG;
+   FlashDriveData.AvailInBlk = NOR_AvailInBlk;
+   FlashDriveData.InvalidInBlk = NOR_InvaildInBlk;
+   FlashDriveData.InvalidEntryInTblBlk = NOR_InvalidEntryInTblBlk;
+
+   FlashDriveData.MSTABLE_ENTRY_NUM = MS_TABLE_ENTRY_NUM;
+   FlashDriveData.MSTable.LogPageID = LogPageID;
+   FlashDriveData.MSTable.NewEntryID = NewEntryID;   
+   FlashDriveData.MSTable.OldEntryID = OldEntryID;   
+   
+#if (NOR_SYSDRV_SECTORS==0)
+ #if (NOR_PARTITION_SECTORS==0)
+ FlashDriveData.SecondPartitionSectors = 0xffffffff;
+ #else // (NOR_PARTITION_SECTORS==0)
+ FlashDriveData.SecondPartitionSectors = 0xfe000000 | NOR_PARTITION_SECTORS;
+ #endif // (NOR_PARTITION_SECTORS==0)
+#else // (NOR_SYSDRV_SECTORS==0)
+ FlashDriveData.SecondPartitionSectors = NOR_SYSDRV_SECTORS;
+#endif // (NOR_SYSDRV_SECTORS==0)
+
+   FlashDriveData.SetTblBlks = NOR_TOTAL_TABLE_BLOCKS;
+   FlashDriveData.Buffer = FDMBuffer;
+   FlashDriveData.CopyBuffer = CopyBuffer;
+#ifndef __INTEL_SIBLEY__
+   FlashDriveData.ReclaimBlock = nNOR_ReclaimBlock;
+#else
+   FlashDriveData.ReclaimBlock = nSIB_ReclaimBlock;
+#endif /* __INTEL_SIBLEY__ */
+#endif /* !__FS_SYSDRV_ON_NAND__ && !_NAND_FLASH_BOOTING_ */
+}
+
+#endif /*__NOR_FDM5__*/
diff --git a/mcu/custom/driver/common/custom_ostd_utility.c b/mcu/custom/driver/common/custom_ostd_utility.c
new file mode 100644
index 0000000..73a38dc
--- /dev/null
+++ b/mcu/custom/driver/common/custom_ostd_utility.c
@@ -0,0 +1,136 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *  custom_ostd_utility.h
+ *
+ * Project:
+ * --------
+ *   MT6885
+ *
+ * Description:
+ * ------------
+ *   This file contains ostd customized configuration.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *******************************************************************************/
+#include "kal_general_types.h"
+#include "ostd_public.h"
+#ifdef __NVRAM_LID_CACHE__
+#include "nvram_cache_interface.h"
+#endif
+#include "string.h"
+
+/*
+void example_callback(kal_uint32 ap_status)
+{
+    //use ap_status to determine your code flow;
+    return;
+}
+*/
+#ifdef __NVRAM_LID_CACHE__
+/*****************************************************************************
+ * FUNCTION
+ *  send_event_to_nvcache_callback
+ * DESCRIPTION
+ *  ostd send event to NVRAM cache for update AP status  
+ * PARAMETERS
+ *  ap_status             [IN]
+ * RETURNS
+ *  void
+ *****************************************************************************/
+void send_event_to_nvcache_callback(kal_uint32 ap_status)
+{
+    send_event_to_nvram_cache();
+}
+#endif
+ostd_urc_src_module_info_struct src_module_info[] =
+{
+    /*
+    {"Name", "module_id expecting receive ilm"(if no need to receive, fill MOD_NIL), "callback funtion"(if no need, fill NULL), "pending data flag"(default = KAL_FALSE)}
+    example:
+    {"OSTD", MOD_NIL, example_callback, KAL_FALE}
+    */
+    {"L4C", MOD_L4C, NULL, KAL_FALSE},
+    {"L4", MOD_L4BPWR, NULL, KAL_FALSE},
+    #ifdef __NVRAM_LID_CACHE__
+    {"NVRAM", MOD_NIL, send_event_to_nvcache_callback, KAL_FALSE},
+    #endif
+};
+
+ostd_urc_src_module_info_struct *custom_get_urc_src_mod()
+{
+    return src_module_info;
+}
+
+kal_uint8 custom_get_num_of_urc_src_mod()
+{
+    return sizeof(src_module_info)/sizeof(src_module_info[0]);
+}
+
+void set_pending_data_flag(char* module_name, kal_bool flag)
+{
+    kal_uint8 i, total_mod;
+    total_mod = sizeof(src_module_info)/sizeof(src_module_info[0]);
+    for(i=0; i<total_mod; i++)
+    {
+        if(strcmp(src_module_info[i].module_name, module_name) == 0)
+        {
+	    src_module_info[i].pending_urc = flag;
+	    break;
+        }
+    }
+}
+
+kal_bool unmask_ap2md_apmcu_active_wkup_event()
+{
+    kal_uint8 i, total_mod;
+    total_mod = sizeof(src_module_info)/sizeof(src_module_info[0]);
+    for(i=0; i<total_mod; i++)
+    {
+        if(src_module_info[i].pending_urc == KAL_TRUE)
+        {
+	    return KAL_TRUE;
+        }
+    }
+    return KAL_FALSE;
+}
+
diff --git a/mcu/custom/driver/common/flash_opt.h b/mcu/custom/driver/common/flash_opt.h
new file mode 100644
index 0000000..f9253b9
--- /dev/null
+++ b/mcu/custom/driver/common/flash_opt.h
@@ -0,0 +1,603 @@
+/*****************************************************************************
+*  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) 2006
+*
+*  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:
+ * ---------
+ *   flash_opt.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   NOR flash related options
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *   Memory Device database last modified on 2011/7/8
+ *
+ *============================================================================
+ *             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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#include "custom_MemoryDevice.h"
+#include "custom_FeatureConfig.h"
+#include "flash_opt_gen.h"
+#if defined(__SECURE_DATA_STORAGE__)
+#include "custom_secure_config.h"
+#endif
+
+/*
+ *******************************************************************************
+ PART 1:
+   FLASH CONFIG Options Definition here
+ *******************************************************************************
+*/
+
+/*
+ * RAM Disk is enabled and replaces any other flash-type (e.g., NOR or NAND) disk on smartphone moden-only load
+ * NOTE. __SMART_PHONE_PLATFORM__ should be defined before (e.g., defined in flash_opt_gen.h)
+ */
+#if !(defined(__FUE__) || defined(__UBL__) || defined(__EXT_BOOTLOADER__))  // RAM Disk module is not necessary in Bootloader and FUE environment
+    #if defined(__FS_RAMDISK__)
+        #if !defined(__SMART_PHONE_PLATFORM__)
+            #error "RAM Disk is allowed in SP modem-only project only! Please make sure __SMART_PHONE_PLATFORM__ is defined before!"
+        #endif
+        #define __RAMDISK__
+    #endif
+#endif
+
+/*
+ *******************************************************************************
+ PART 2:
+   FLASH FDM FEATURE CONFIG PARAMETERS translated from Manual custom_Memorydevice.h
+ *******************************************************************************
+*/
+        #ifndef NOR_PARAMETER_SYSTEM_DRIVE_RESERVED_BLOCK
+                #define NOR_SYSTEM_DRIVE_RESERVED_BLOCK   (3)
+        #else
+                #define NOR_SYSTEM_DRIVE_RESERVED_BLOCK   (NOR_PARAMETER_SYSTEM_DRIVE_RESERVED_BLOCK)
+        #endif
+
+
+
+/*
+ *******************************************************************************
+ PART 3:
+   FLASH GEOMETRY translated from MEMORY DEVICE DATABASE
+ *******************************************************************************
+*/
+
+
+/*
+ *******************************************************************************
+ PART 4:
+   FLASH FAT CONFIG translated from Manual custom_Memorydevice.h
+ *******************************************************************************
+*/
+#if defined(__NANDFDM_MULTI_INSTANCE__)
+#define NAND_DISK_NUM (NAND_BOOTING_NAND_FS_DISK_NUMBER)
+#else // defined(__NANDFDM_MULTI_INSTANCE__)
+#define NAND_DISK_NUM (0)
+#endif // defined(__NANDFDM_MULTI_INSTANCE__)
+#if defined(__RAMDISK__)
+    #include "ramdisk_gprot.h"
+    #ifndef RAM_FS_SIZE
+        #error "Error! Please assign RAM_FS_SIZE in ramdisk_gprot.h for RAM Disk!"
+    #else
+        #define RAM_FS_SIZE_INT (RAM_FS_SIZE)
+    #endif
+    #ifdef RAM_FS_FIRST_DRIVE_SECTORS
+        #define RAM_FS_FIRST_DRIVE_SECTORS_INT (RAM_FS_FIRST_DRIVE_SECTORS)
+    #else
+        #define RAM_FS_FIRST_DRIVE_SECTORS_INT (0)
+    #endif
+#endif // defined(__NANDFDM_MULTI_INSTANCE__)
+
+#if defined(__EMMC_BOOTING__)
+
+    #ifndef EMMC_BOOTING_GP1_PARTITION_SIZE
+        #error "custom\system\{project}\custom_MemoryDevice.h: Error! Please Manually Assign EMMC_BOOTING_GP1_PARTITION_SIZE in custom_Memorydevice.h for EMMC Booting!"
+    #else
+        #define EMMC_CODE_PARTITION_SIZE   (EMMC_BOOTING_GP1_PARTITION_SIZE)
+    #endif   /* !EMMC_BOOTING_GP1_PARTITION_SIZE */
+
+    #ifndef EMMC_BOOTING_UP_FS_BASE_ADDRESS
+        #error "custom\system\{project}\custom_MemoryDevice.h: Error! Please Manually Assign EMMC_BOOTING_UP_FS_BASE_ADDRESS in custom_Memorydevice.h for EMMC Booting!"
+    #else
+        #define EMMC_FS_BASE_ADDRESS   (EMMC_BOOTING_UP_FS_BASE_ADDRESS)
+    #endif   /* !EMMC_BOOTING_UP_FS_BASE_ADDRESS */
+
+    #ifndef EMMC_BOOTING_UP_FS_SIZE
+        #error "custom\system\{project}\custom_MemoryDevice.h: Error! Please Manually Assign EMMC_BOOTING_UP_FS_SIZE in custom_Memorydevice.h for EMMC Booting!"
+    #else
+        #define EMMC_FS_SIZE   (EMMC_BOOTING_UP_FS_SIZE)
+    #endif   /* !EMMC_BOOTING_UP_FS_SIZE */
+
+    #ifndef EMMC_BOOTING_UP_FS_SYSTEM_DRIVE_SIZE
+        #error "custom\system\{project}\custom_MemoryDevice.h: Error! Please Manually Assign EMMC_BOOTING_UP_FS_SYSTEM_DRIVE_SIZE in custom_Memorydevice.h for EMMC Booting!"
+    #else
+        #define EMMC_FS_SYSTEM_DRIVE_SIZE   (EMMC_BOOTING_UP_FS_SYSTEM_DRIVE_SIZE)
+    #endif   /* !EMMC_BOOTING_UP_FS_SYSTEM_DRIVE_SIZE */
+
+#elif defined(_NAND_FLASH_BOOTING_)
+
+
+        /*-----------------------------------------------------------------------------------------
+         * FS base address is automatically adjusted with update package storage size as
+         * NAND_BOOTING_NAND_FS_BASE_ADDRESS + FOTA_PACKAGE_STORAGE_SIZE (defined in custom_img_config.h)
+         *-----------------------------------------------------------------------------------------*/
+
+        #ifndef NAND_BOOTING_NAND_FS_BASE_ADDRESS
+            #error "custom\system\{project}\custom_MemoryDevice.h: Error! Please Manually Assign NAND_BOOTING_NAND_FS_BASE_ADDRESS in custom_Memorydevice.h for NAND-Flash Booting!"
+        #else
+            #define NAND_FLASH_BASE_ADDRESS    (NAND_BOOTING_NAND_FS_BASE_ADDRESS + FOTA_DM_FS_OFFSET)
+        #endif   /* !NAND_BOOTING_FLASH_BASE_ADDRESS */
+
+        /*-----------------------------------------------------------------------------------------
+         * FS size is automatically decreased by update package storage size as
+         * NAND_BOOTING_NAND_FS_SIZE - FOTA_PACKAGE_STORAGE_SIZE (defined in custom_img_config.h)
+         *-----------------------------------------------------------------------------------------*/
+
+        #ifndef NAND_BOOTING_NAND_FS_SIZE
+            #error "custom\system\{project}\custom_MemoryDevice.h: Error! Please Manually Assign NAND_BOOTING_NAND_FS_SIZE in custom_Memorydevice.h for NAND-Flash Booting!"
+        #else
+            #if defined(__SECURE_DATA_STORAGE__)
+                #define NAND_ALLOCATED_FAT_SPACE   (NAND_BOOTING_NAND_FS_SIZE - FOTA_DM_FS_OFFSET - SDS_TOTAL_SIZE)
+            #else
+                #define NAND_ALLOCATED_FAT_SPACE   (NAND_BOOTING_NAND_FS_SIZE - FOTA_DM_FS_OFFSET)
+            #endif
+        #endif   /* !NAND_BOOTING_ALLOCATED_FAT_SPACE */
+
+        /*-----------------------------------------------------------------------------------------
+         * FS first drive size is automatically decreased by update package storage size as
+         * NAND_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS - FOTA_PACKAGE_STORAGE_SIZE / 512 (defined in custom_img_config.h)
+         *-----------------------------------------------------------------------------------------*/
+
+        #ifndef NAND_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS
+            #error "custom\system\{project}\custom_MemoryDevice.h: Error! Please Manually Assign NAND_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS in custom_Memorydevice.h for NAND-Flash Booting!"
+        #else
+            #if defined(__NANDFDM_MULTI_INSTANCE__)
+                #define NAND_PARTITION_SECTORS   (0)
+            #else /* __NANDFDM_MULTI_INSTANCE__ */
+                #define NAND_PARTITION_SECTORS   (NAND_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS - FOTA_DM_FS_SECTOR_OFFSET)
+            #endif /* __NANDFDM_MULTI_INSTANCE__ */
+        #endif   /* !NAND_FAT_PARTITION_SECTORS */
+
+
+#elif defined(__FS_SYSDRV_ON_NAND__ ) 
+
+    #define NOR_FLASH_BASE_ADDRESS     (NOR_FLASH_BASE_ADDRESS_DEFAULT)
+    #define NOR_ALLOCATED_FAT_SPACE    (NOR_ALLOCATED_FAT_SPACE_DEFAULT)
+   
+        /*-----------------------------------------------------------------------------------------
+         * FS base address is automatically adjusted with update package storage size as
+         * NOR_BOOTING_NAND_FS_BASE_ADDRESS + FOTA_PACKAGE_STORAGE_SIZE (defined in custom_img_config.h)
+         *-----------------------------------------------------------------------------------------*/
+
+        #ifndef NOR_BOOTING_NAND_FS_BASE_ADDRESS
+            #error "custom\system\{project}\custom_MemoryDevice.h: Error! Please Manually Assign NOR_BOOTING_NAND_FS_BASE_ADDRESS in custom_Memorydevice.h for System Drive on NAND!"
+        #else
+            #define NAND_FLASH_BASE_ADDRESS     (NOR_BOOTING_NAND_FS_BASE_ADDRESS + FOTA_DM_FS_OFFSET)
+        #endif   /* !NAND_BOOTING_FLASH_BASE_ADDRESS */
+      
+        /*-----------------------------------------------------------------------------------------
+         * FS size is automatically decreased by update package storage size as
+         * NOR_BOOTING_NAND_FS_SIZE - FOTA_PACKAGE_STORAGE_SIZE (defined in custom_img_config.h)
+         *-----------------------------------------------------------------------------------------*/
+
+        #ifndef NOR_BOOTING_NAND_FS_SIZE
+            #error "custom\system\{project}\custom_MemoryDevice.h: Error! Please Manually Assign NOR_BOOTING_NAND_FS_SIZE in custom_Memorydevice.h for System Drive on NAND!"
+        #else
+            #define NAND_ALLOCATED_FAT_SPACE    (NOR_BOOTING_NAND_FS_SIZE - FOTA_DM_FS_OFFSET)
+        #endif   /* !NAND_BOOTING_ALLOCATED_FAT_SPACE */
+      
+        /*-----------------------------------------------------------------------------------------
+         * FS first drive size is automatically decreased by update package storage size as
+         * NOR_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS - FOTA_PACKAGE_STORAGE_SIZE / 512 (defined in custom_img_config.h)
+         *-----------------------------------------------------------------------------------------*/
+
+        #ifndef NOR_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS
+            #error "custom\system\{project}\custom_MemoryDevice.h: Error! Please Manually Assign NOR_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS in custom_Memorydevice.h for System Drive on NAND!"
+        #else
+            #if defined(__NANDFDM_MULTI_INSTANCE__)
+                #define NAND_PARTITION_SECTORS      (0)
+            #else /* __NANDFDM_MULTI_INSTANCE__ */
+                #define NAND_PARTITION_SECTORS      (NOR_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS - FOTA_DM_FS_SECTOR_OFFSET)
+            #endif /* __NANDFDM_MULTI_INSTANCE__ */
+        #endif   /* !NAND_FAT_PARTITION_SECTORS */
+   
+#else /* Generic NOR-XIP Case */
+
+        #if defined(__UP_PKG_ON_NAND__) && defined(NAND_SUPPORT)
+      
+            #ifndef NOR_BOOTING_NOR_FS_BASE_ADDRESS
+                #define NOR_FLASH_BASE_ADDRESS     (NOR_FLASH_BASE_ADDRESS_DEFAULT)
+            #else
+                #define NOR_FLASH_BASE_ADDRESS     (NOR_BOOTING_NOR_FS_BASE_ADDRESS)
+            #endif   /* !NOR_FLASH_BASE_ADDRESS */
+         
+            #ifndef NOR_BOOTING_NOR_FS_SIZE
+                #if defined(__SECURE_DATA_STORAGE__)
+                    #define NOR_ALLOCATED_FAT_SPACE    (NOR_ALLOCATED_FAT_SPACE_DEFAULT - SDS_TOTAL_SIZE)
+                #else
+                    #define NOR_ALLOCATED_FAT_SPACE    (NOR_ALLOCATED_FAT_SPACE_DEFAULT)
+                #endif
+            #else
+                #if defined(__SECURE_DATA_STORAGE__)
+                    #define NOR_ALLOCATED_FAT_SPACE    (NOR_BOOTING_NOR_FS_SIZE - SDS_TOTAL_SIZE)
+                #else
+                    #define NOR_ALLOCATED_FAT_SPACE    (NOR_BOOTING_NOR_FS_SIZE)
+                #endif
+            #endif   /* !NOR_ALLOCATED_FAT_SPACE */
+         
+            #ifndef NOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS
+                #define NOR_PARTITION_SECTORS      (0)
+            #else
+                #define NOR_PARTITION_SECTORS      (NOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS)
+            #endif   /* !NOR_FAT_PARTITION_SECTORS */
+         
+            /*-----------------------------------------------------------------------------------------
+             * FS base address is automatically adjusted with update package storage size as
+             * NOR_BOOTING_NAND_FS_BASE_ADDRESS + FOTA_PACKAGE_STORAGE_SIZE (defined in custom_img_config.h)
+             *-----------------------------------------------------------------------------------------*/
+
+            #ifndef NOR_BOOTING_NAND_FS_BASE_ADDRESS
+                #error "custom\system\{project}\custom_MemoryDevice.h: Error! Please Manually Assign NOR_BOOTING_NAND_FS_BASE_ADDRESS in custom_Memorydevice.h for FOTA Update Package on NAND!"
+            #else
+                #define NAND_FLASH_BASE_ADDRESS     (NOR_BOOTING_NAND_FS_BASE_ADDRESS + FOTA_DM_FS_OFFSET)
+            #endif   /* !NAND_BOOTING_FLASH_BASE_ADDRESS */
+         
+            /*-----------------------------------------------------------------------------------------
+             * FS size is automatically decreased by update package storage size as
+             * NOR_BOOTING_NAND_FS_SIZE - FOTA_PACKAGE_STORAGE_SIZE (defined in custom_img_config.h)
+             *-----------------------------------------------------------------------------------------*/
+
+            #ifndef NOR_BOOTING_NAND_FS_SIZE
+                #error "custom\system\{project}\custom_MemoryDevice.h: Error! Please Manually Assign NOR_BOOTING_NAND_FS_SIZE in custom_Memorydevice.h for FOTA Update Package on NAND!"
+            #else
+                #define NAND_ALLOCATED_FAT_SPACE    (NOR_BOOTING_NAND_FS_SIZE - FOTA_DM_FS_OFFSET)
+            #endif   /* !NAND_BOOTING_ALLOCATED_FAT_SPACE */
+         
+            /* All NAND flash space is treated as one public drive */
+            #define NAND_PARTITION_SECTORS          (0)
+      
+        #else    /* !__UP_PKG_ON_NAND__ || !NAND_SUPPORT */
+      
+            /*-----------------------------------------------------------------------------------------
+             * FS base address is automatically adjusted with update package storage size as
+             * NOR_BOOTING_NOR_FS_BASE_ADDRESS + FOTA_PACKAGE_STORAGE_SIZE (defined in custom_img_config.h)
+             *-----------------------------------------------------------------------------------------*/
+
+            #ifndef NOR_BOOTING_NOR_FS_BASE_ADDRESS
+                #define NOR_FLASH_BASE_ADDRESS     (NOR_FLASH_BASE_ADDRESS_DEFAULT + FOTA_DM_FS_OFFSET)
+            #else
+                #define NOR_FLASH_BASE_ADDRESS     (NOR_BOOTING_NOR_FS_BASE_ADDRESS + FOTA_DM_FS_OFFSET)
+            #endif   /* !NOR_FLASH_BASE_ADDRESS */
+         
+            /*-----------------------------------------------------------------------------------------
+             * FS size is automatically decreased by update package storage size as
+             * NOR_BOOTING_NOR_FS_SIZE - FOTA_PACKAGE_STORAGE_SIZE (defined in custom_img_config.h)
+             *-----------------------------------------------------------------------------------------*/
+
+            #ifndef NOR_BOOTING_NOR_FS_SIZE
+                #if defined(__SECURE_DATA_STORAGE__)
+                    #define NOR_ALLOCATED_FAT_SPACE    (NOR_ALLOCATED_FAT_SPACE_DEFAULT - FOTA_DM_FS_OFFSET - SDS_TOTAL_SIZE)
+                #else
+                    #define NOR_ALLOCATED_FAT_SPACE    (NOR_ALLOCATED_FAT_SPACE_DEFAULT - FOTA_DM_FS_OFFSET)
+                #endif
+            #else
+                #if defined(__SECURE_DATA_STORAGE__)
+                    #define NOR_ALLOCATED_FAT_SPACE    (NOR_BOOTING_NOR_FS_SIZE - FOTA_DM_FS_OFFSET - SDS_TOTAL_SIZE)
+                #else
+                    #define NOR_ALLOCATED_FAT_SPACE    (NOR_BOOTING_NOR_FS_SIZE - FOTA_DM_FS_OFFSET)
+                #endif
+            #endif   /* !NOR_ALLOCATED_FAT_SPACE */
+         
+            /*-----------------------------------------------------------------------------------------
+             * FS first drive size is automatically decreased by update package storage size as
+             * NOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS - FOTA_PACKAGE_STORAGE_SIZE / 512 (defined in custom_img_config.h)
+             *-----------------------------------------------------------------------------------------*/
+
+            #ifndef NOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS
+                #define NOR_PARTITION_SECTORS      (0)
+            #else
+                #define NOR_PARTITION_SECTORS      (NOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS - FOTA_DM_FS_SECTOR_OFFSET)
+            #endif   /* !NOR_FAT_PARTITION_SECTORS */  
+      
+            /* If NAND_SUPPORT is enabled, all NAND flash space is treated as one public drive */
+            #define NAND_PARTITION_SECTORS            (0)
+      
+        #endif   /* __UP_PKG_ON_NAND__ && NAND_SUPPORT */
+   
+        
+#endif /* _NAND_FLASH_BOOTING_ || __EMMC_BOOTING__ */
+
+/*
+ * Define __PUBLIC_DRIVE_AVAILABLE__ if public drive is available.
+ * This definition will be referenced by File System. Please inform FS owner if any changes.
+ */
+#if defined(__NANDFDM_MULTI_INSTANCE__)
+    #ifndef __PUBLIC_DRIVE_AVAILABLE__
+    #define __PUBLIC_DRIVE_AVAILABLE__  // NAND FDM Multi-Instance always has public drive
+    #endif
+#endif
+
+#if defined(NOR_PARTITION_SECTORS)  // NOR flash has public drive
+    #if (NOR_PARTITION_SECTORS > 0)
+        #if ((NOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS - 0) < 21)
+            #error "custom\system\{project}\custom_MemoryDevice.h: NOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS should be zero Or (NOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS - 0) should be more than 20 sectors."
+        #endif
+
+        #ifndef __PUBLIC_DRIVE_AVAILABLE__
+        #define __PUBLIC_DRIVE_AVAILABLE__
+        #endif
+    #endif
+#endif
+
+#if defined(NAND_PARTITION_SECTORS) // NAND flash has public drive (including __FS_SYSDRV_ON_NAND__)
+    #if (NAND_PARTITION_SECTORS > 0)
+        #ifndef __PUBLIC_DRIVE_AVAILABLE__
+        #define __PUBLIC_DRIVE_AVAILABLE__
+        #endif
+    #endif
+#endif
+
+#if defined(__EMMC_BOOTING__) // EMMC has public drive
+    #ifndef __PUBLIC_DRIVE_AVAILABLE__
+    #define __PUBLIC_DRIVE_AVAILABLE__
+    #endif
+#endif
+
+#if !defined(_NAND_FLASH_BOOTING_) && !defined(__EMMC_BOOTING__) && !defined(__FS_SYSDRV_ON_NAND__) && defined(NAND_SUPPORT)
+    /*
+     * NOR booting / System drive on NOR / NAND flash is existed
+     * NAND_PARTITION_SECTORS is 0 but all NAND flash space is treated as one public drive
+     *
+     * Note. Please ensure NAND_SUPPORT is correctly DISABLED if NAND flash is NOT existed,
+     *       otherwise __PUBLIC_DRIVE_AVAILABLE__ will be incorrectly defined but public drive is not existed!
+     */
+    #ifndef __PUBLIC_DRIVE_AVAILABLE__
+    #define __PUBLIC_DRIVE_AVAILABLE__
+    #endif
+    
+    #ifndef __PUBLIC_DRIVE_2_AVAILABLE__
+    #define __PUBLIC_DRIVE_2_AVAILABLE__
+    #endif
+#endif
+
+/*
+ *******************************************************************************
+ PART 5:
+   FLASH TYPE CATEGORY below to configure flash memory command
+ *******************************************************************************
+*/
+#ifdef NOR_FLASH_TYPE_INTEL_SERIES
+#define __INTEL_SERIES_NOR__
+#endif
+
+#ifdef NOR_FLASH_TYPE_INTEL
+#define __INTEL_SERIES_NOR__
+#endif
+
+#ifdef NOR_FLASH_TYPE_RENESAS_SERIES
+#define __RENESAS_SERIES_NOR__
+#endif
+
+#ifdef NOR_FLASH_TYPE_RENESAS
+#define __RENESAS_SERIES_NOR__
+#endif
+
+#ifdef NOR_FLASH_TYPE_INTEL_SIBLEY
+#define __INTEL_SERIES_NOR__
+#define __INTEL_SIBLEY__
+
+#endif
+
+#ifdef NOR_FLASH_TYPE_SST
+#define __AMD_SERIES_NOR__
+#define __SST_NOR__
+#endif
+
+#ifdef NOR_FLASH_TYPE_ST_AMD_LIKE
+#define __AMD_SERIES_NOR__
+#endif
+
+#ifdef NOR_FLASH_TYPE_ST_INTEL_LIKE
+#define __INTEL_SERIES_NOR__
+#endif
+
+#ifdef NOR_FLASH_TYPE_AMD_SERIES
+#define __AMD_SERIES_NOR__
+#endif
+
+#ifdef NOR_FLASH_TYPE_SPANSION_PL_J
+#define __AMD_SERIES_NOR__
+#define NOR_SUSPEND_LATENCY         (35)
+#endif
+
+#ifdef NOR_FLASH_TYPE_SPANSION_PL_N
+#define __AMD_SERIES_NOR__
+#define __SPANSION_PL_N__
+#define NOR_SUSPEND_LATENCY         (20)
+#endif
+
+#ifdef NOR_FLASH_TYPE_SPANSION_WS_N
+#define __AMD_SERIES_NOR__
+#define __SPANSION_WS_N__
+#define __SPANSION_PL_N__
+#define NOR_SUSPEND_LATENCY         (20)
+#endif
+
+#ifdef NOR_FLASH_TYPE_SPANSION_WS_P
+#define __AMD_SERIES_NOR__
+#define __SPANSION_WS_P__
+#define NOR_SUSPEND_LATENCY         (40)
+#define NOR_RESUME_SUSPEND_INTERVAL (40)
+#endif
+
+#ifdef NOR_FLASH_TYPE_SPANSION_GL_A
+#define __AMD_SERIES_NOR__
+#define __SPANSION_GL_A__
+#endif
+
+#ifdef NOR_FLASH_TYPE_SPANSION_GL_N
+#define __AMD_SERIES_NOR__
+#define __SPANSION_GL_N__
+#define NOR_SUSPEND_LATENCY         (20)
+#endif
+
+#ifdef NOR_FLASH_TYPE_SPANSION_NS_N
+#define __AMD_SERIES_NOR__
+#define __SPANSION_NS_N__
+#define NOR_SUSPEND_LATENCY         (35)
+#define NOR_RESUME_SUSPEND_INTERVAL (30)
+#endif
+
+#ifdef NOR_FLASH_TYPE_SPANSION_NS_P
+#define __AMD_SERIES_NOR__
+#define __SPANSION_NS_N__
+#define NOR_SUSPEND_LATENCY         (20)
+#define NOR_RESUME_SUSPEND_INTERVAL (30)
+#endif
+
+#ifdef NOR_FLASH_TYPE_SPANSION_NS_J
+#define __AMD_SERIES_NOR__
+#define __SPANSION_NS_J__
+#define NOR_SUSPEND_LATENCY         (35)
+#endif
+
+#ifdef NOR_FLASH_TYPE_TOSHIBA
+#define __AMD_SERIES_NOR__
+#endif
+
+#ifdef NOR_FLASH_TYPE_TOSHIBA_TV
+#define __AMD_SERIES_NOR__
+#define __TOSHIBA_TV__
+#endif
+
+#ifdef NOR_FLASH_TYPE_TOSHIBA_TY
+#define __AMD_SERIES_NOR__
+#define __TOSHIBA_TY__
+#endif
+
+#ifdef NOR_FLASH_TYPE_SILICON7
+#define __RENESAS_SERIES_NOR__
+#endif
+
+#ifdef NOR_FLASH_TYPE_SAMSUNG_SPANSION_NS_J_LIKE
+#define __AMD_SERIES_NOR__
+#define __SAMSUNG_SPANSION_NS_J_LIKE__
+#define NOR_SUSPEND_LATENCY         (20)
+#define NOR_RESUME_SUSPEND_INTERVAL (30)
+#endif
+
+#ifdef NOR_FLASH_TYPE_SPANSION_VS_R
+#define __AMD_SERIES_NOR__
+#define __SPANSION_VS_R__
+#define NOR_SUSPEND_LATENCY         (30)
+#define NOR_RESUME_SUSPEND_INTERVAL (30)
+#define __NOR_FDM_4_FLIPPING_TOLERABLE__
+#endif
+
+#ifdef NOR_FLASH_TYPE_SPANSION_VS_R64
+#define __AMD_SERIES_NOR__
+#define __SPANSION_VS_R64__
+#define __SPANSION_NS_N__
+#define NOR_SUSPEND_LATENCY         (30)
+#define __NOR_FDM_4_FLIPPING_TOLERABLE__
+#endif
+
+#ifdef NOR_FLASH_TYPE_SPANSION_WS_R
+#define __AMD_SERIES_NOR__
+#define __SPANSION_WS_R__
+#define NOR_SUSPEND_LATENCY         (30)
+#define NOR_RESUME_SUSPEND_INTERVAL (30)
+#define __NOR_FDM_4_FLIPPING_TOLERABLE__
+#endif
+
+/*
+ *******************************************************************************
+ PART 6:
+   FOTA UPDATABLE FLASH AREA
+ *******************************************************************************
+*/
+#ifdef __FOTA_DM__
+        #ifndef CONFIG_FOTA_UE_FLASH_SPACE
+                #error "custom\system\{project}\custom_FeatureConfig.h: Error! Please define CONFIG_FOTA_UE_FLASH_SPACE in custom_FeatureConfig.h!"
+        #endif /* CONFIG_FOTA_UE_FLASH_SPACE */
+        
+        #ifndef CONFIG_FOTA_PACKAGE_BLOCK_NUMBER
+                #error "custom\system\{project}\custom_FeatureConfig.h: Error! Please define CONFIG_FOTA_PACKAGE_BLOCK_NUMBER in custom_FeatureConfig.h!"
+        #endif /* CONFIG_FOTA_PACKAGE_BLOCK_NUMBER */
+#endif /* __FOTA_DM__ */
+
+
diff --git a/mcu/custom/driver/common/fmr_config_customize.c b/mcu/custom/driver/common/fmr_config_customize.c
new file mode 100644
index 0000000..84b9097
--- /dev/null
+++ b/mcu/custom/driver/common/fmr_config_customize.c
@@ -0,0 +1,81 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *  fmr_config_customize.c
+ *
+ * Project:
+ * --------
+ *   Maui
+ *
+ * Description:
+ * ------------
+ *   This file contains fm radio customized configuration.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *******************************************************************************/
+#if defined(FM_RADIO_ENABLE)
+#include "kal_general_types.h"
+     
+/*RSSI threshold*/
+#if (defined(MT6251FM))
+kal_uint16 FMR_RSSI_THRESHOLD_LANT = 0x301;
+kal_uint16 FMR_RSSI_THRESHOLD_SANT = 0x2E0;
+kal_uint16 FMR_CQI_TH = 0xE9;
+#elif (defined(MT6276FM))
+kal_uint16 FMR_RSSI_THRESHOLD_LANT = 0x301;
+kal_uint16 FMR_RSSI_THRESHOLD_SANT = 0x2E0;
+kal_uint16 FMR_CQI_TH = 0xE9;
+#elif (defined(MT6256FM)||defined(MT6255FM))
+kal_uint16 FMR_RSSI_THRESHOLD_LANT = 0x301;
+kal_uint16 FMR_RSSI_THRESHOLD_SANT = 0x2E0;
+kal_uint16 FMR_CQI_TH = 0xE9;
+#elif (defined(MT6626))
+kal_uint16 FMR_RSSI_THRESHOLD_LANT = 0xFF01;
+kal_uint16 FMR_RSSI_THRESHOLD_SANT = 0xFEE0;
+kal_bool FMR_DEEMPHASIS_50us = KAL_FALSE;
+kal_uint16 FMR_CQI_TH = 0xFFE9;
+#endif
+
+kal_uint16 FMR_SCAN_BAND_UP = 1080; //108MHz
+kal_uint16 FMR_SCAN_BAND_DN = 875; //87.5MHz
+     
+#endif
diff --git a/mcu/custom/driver/common/fmr_config_customize.h b/mcu/custom/driver/common/fmr_config_customize.h
new file mode 100644
index 0000000..15e3142
--- /dev/null
+++ b/mcu/custom/driver/common/fmr_config_customize.h
@@ -0,0 +1,62 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *  fmr_config_customize.h
+ *
+ * Project:
+ * --------
+ *   Maui
+ *
+ * Description:
+ * ------------
+ *   This file contains fm radio customized configuration.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *******************************************************************************/
+#if defined(FM_RADIO_ENABLE)
+/*
+*FM radio MMI, MED/MDI, driver should refer to this definition.
+*FM drvier search range should be less than 256 khz:(FM_RADIO_MAX_FREQ-FM_RADIO_MIN_FREQ)<256
+*/
+#define FM_RADIO_MIN_FREQ 875 //87.5MHz
+#define FM_RADIO_MAX_FREQ 1080 //108MHz
+#endif
diff --git a/mcu/custom/driver/drv/Drv_Tool/ADC.cmp b/mcu/custom/driver/drv/Drv_Tool/ADC.cmp
new file mode 100644
index 0000000..32f51c0
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/ADC.cmp
@@ -0,0 +1,20 @@
+[ADC_variables]

+ADC_VBAT

+ADC_VISENSE

+ADC_VBATTMP

+ADC_VCHARGER

+ADC_ACCESSORYID

+ADC_PCBTMP

+ADC_CHR_USB

+ADC_OTG_VBUS

+ADC_RFTMP

+ADC_JACK_TYPE

+ADC_FDD_RF_PARAMS_DYNAMIC_CUSTOM_CH

+

+[adc_var.c_HEADER]

+#ifdef __CUST_NEW__

+#include "kal_public_api.h"

+#include "dcl.h"

+

+[adc_var.c_TAILER]

+#endif /* __CUST_NEW__ */

diff --git a/mcu/custom/driver/drv/Drv_Tool/Application.cmp b/mcu/custom/driver/drv/Drv_Tool/Application.cmp
new file mode 100644
index 0000000..caabfe2
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/Application.cmp
@@ -0,0 +1,19 @@
+[APPLICATION]

+RF

+SIM

+SIM2

+BT

+USB

+CAM1_A

+CAM1_D

+CAM2_A

+CAM2_D

+TOUCHPAD

+GPS

+TDMB

+MC

+WIFI_V1

+WIFI_V2

+SF

+FM

+VIBR

diff --git a/mcu/custom/driver/drv/Drv_Tool/DrvGen b/mcu/custom/driver/drv/Drv_Tool/DrvGen
new file mode 100755
index 0000000..a676ca7
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/DrvGen
Binary files differ
diff --git a/mcu/custom/driver/drv/Drv_Tool/DrvGen.exe b/mcu/custom/driver/drv/Drv_Tool/DrvGen.exe
new file mode 100755
index 0000000..e6bff62
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/DrvGen.exe
Binary files differ
diff --git a/mcu/custom/driver/drv/Drv_Tool/EINT.cmp b/mcu/custom/driver/drv/Drv_Tool/EINT.cmp
new file mode 100644
index 0000000..5af2d47
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/EINT.cmp
@@ -0,0 +1,66 @@
+[EINT_variables]

+SWDBG_EINT_NO

+AUX_EINT_NO

+AUX2_EINT_NO

+TOUCH_PANEL_EINT_NO

+CHRDET_EINT_NO

+MOTION_SENSOR_EINT_NO

+BT_EINT_NO

+CLAMDET_EINT_NO

+USB_EINT_NO

+CHR_USB_EINT_NO

+WIFI_EINT_NO

+WIFI_DCXO_EINT_NO

+MELODY_EINT_NO

+OTG_IDPIN_EINT_NO

+EXTRA_A_KEY_EINT_NO

+EXTRA_B_KEY_EINT_NO

+SYNC_LCM_EINT_NO

+LSD_MSDCCD_EINT_NO

+GPS_EINT_NO

+DCAM_EINT_NO

+CMMB_EINT_NO

+JB_UP_EINT_NO

+JB_DOWN_EINT_NO

+JB_RIGHT_EINT_NO

+JB_LEFT_EINT_NO

+FM_EINT_NO

+AUX_HOOK_EINT_NO

+CHG_IND_EINT_NO

+BT_CO_CLOCK_EINT_NO

+MUIC_EINT_NO

+MUIC_FAC_EINT_NO

+PXS_EINT_NO

+ALS_EINT_NO

+AST_EINT_NO

+AST_WAKEUP_EINT_NO

+AST_RFCONF_EINT_NO

+MSDC_EINT_NO

+SIM_HOT_SWAP_EINT_NO

+NFC_EINT_NO

+OFN_EINT_NO

+POWER_KEY_EINT_NO

+KEYPAD_WAKEUP_EINT_NO

+USB2_DP_EINT_NO

+USB2_DM_EINT_NO

+PMIC_EINT_NO

+AP_WAKE_MD_EINT_NO

+USIM1_EINT_NO

+USIM2_EINT_NO

+TDM_REQ_HI_EINT_NO

+TDM_REQ_LO_EINT_NO

+MD_WAKE_AP_EINT_NO

+

+[eint_drv.h_HEADER]

+#ifndef _EINT_DRV_H

+#define _EINT_DRV_H

+

+[eint_drv.h_TAILER]

+#endif /* _EINT_DRV_H */

+

+[eint_var.c_HEADER]

+#ifdef __CUST_NEW__

+#include "eint.h"

+

+[eint_var.c_TAILER]

+#endif /* __CUST_NEW__ */

diff --git a/mcu/custom/driver/drv/Drv_Tool/GPIO.cmp b/mcu/custom/driver/drv/Drv_Tool/GPIO.cmp
new file mode 100644
index 0000000..8a02195
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/GPIO.cmp
@@ -0,0 +1,459 @@
+[GPIO_variables]

+;Bluetooth disconnect pin for BCHS

+gpio_bt_dsc_pin

+;Bluetooth data selection pin for BCHS. Should be GPI.

+gpio_bt_dataselect_pin

+;Bluetooth power on pin for BCHS, RFMD, GORM

+@gpio_bt_power_pin

+;Bluetooth reset pin for BCHS, GORM

+@gpio_bt_reset_pin

+;Bluetooth ext 32k pin for RFMD, GORM.

+@gpio_bt_32k_pin

+;Bluetooth uart tx pin for RFMD, GORM.

+@gpio_bt_utxd3_pin

+;Bluetooth uart rx pin for RFMD, GORM.

+@gpio_bt_urxd3_pin

+;Bluetooth uart rts pin for RFMD, GORM.

+@gpio_bt_urts3_pin

+;Bluetooth uart cts pin for RFMD, GORM.

+@gpio_bt_ucts3_pin

+;Bluetooth pcm clk pin for RFMD, GORM.

+@gpio_bt_pcmclk_pin

+;Bluetooth pcm sync pin for RFMD, GORM.

+@gpio_bt_pcmsync_pin

+;Bluetooth pcm data input pin for RFMD, GORM.

+@gpio_bt_pcmin_pin

+;Bluetooth pcm data output pin for RFMD, GORM.

+@gpio_bt_pcmout_pin

+;Bluetooth wake up pin for RFMD

+gpio_bt_wakeup_pin

+;Bluetooth eint pin

+@gpio_bt_eint_pin

+;

+;gpio RF control pins. Please refer to m12190.c, m12196.c

+gpio_rf_control1_pin

+gpio_rf_control2_pin

+gpio_rf_control3_pin

+;

+gpio_flash_test_cmd_bit0_pin

+gpio_flash_test_cmd_bit1_pin

+gpio_flash_test_reset_pin

+gpio_flash_test_error_ind_pin

+;

+gpio_ic_module_ready_bot_pin

+gpio_ic_module_ready_eot_pin

+gpio_ic_module_ready_bin_pin

+;

+;For motion sensor spi pins: motion_sensor_hw_define.h

+gpio_ms_spi_din_pin

+gpio_ms_spi_clk_pin

+gpio_ms_spi_dout_pin

+gpio_ms_spi_cs_pin

+gpio_ms_spi_reset_pin

+;

+;For motion sensor I2C pins: motion_sensor_hw_define.h

+gpio_ms_i2c_addr_pin

+@gpio_ms_i2c_clk_pin

+@gpio_ms_i2c_data_pin

+gpio_ms_i2c_cs_pin

+gpio_ms_i2c_reset_pin

+;For motion sensor MEMSIC serial interface: motion_sensor_hw_define.h

+gpio_acc_sensor_sck_pin

+gpio_acc_sensor_sda_pin

+;

+;For e_compass serial interface: e_compass_sensor_hw_define.h

+@gpio_e_compass_sensor_sck_pin

+@gpio_e_compass_sensor_sda_pin

+@gpio_e_compass_sensor_pwr_pin

+;

+;For BMT charging control ON/OFF pin: pwic.c

+gpio_bmt_chr_ctrl_pin

+;For doing something whenever AC is plug-in: chr_parameter.c

+gpio_bmt_charger_action_pin

+;For dectection USB or AC: char_parameter.c

+gpio_bmt_check_ac_usb_pin

+;

+;For IrDA mode switch: irda_custom.c

+gpio_irda_mode_switch_pin

+;

+;For touch panel SPI pins: touch_panel_spi.h

+gpio_tp_spi_din_pin

+gpio_tp_spi_clk_pin

+gpio_tp_spi_dout_pin

+gpio_tp_spi_cs_pin

+gpio_tp_spi_busy_pin

+;

+;For USB power control: usb_custom.c

+gpio_usb_enable_pin

+gpio_otg_vbus_enable_pin

+; In USB2.0, to switch on/off the external 100K ohm resistor for the dectection of USB or charger

+gpio_usb_chr_det_switch_pin

+;

+;For enable USBDL

+@gpio_usbdl_pin

+;

+;For FM control pins: see MCU\CUSTOM_BACKUP\AUDIO\PROJECT_NAME\XXX.c

+gpio_fm_3wire_le_pin

+@gpio_fm_i2c_sda_pin

+@gpio_fm_i2c_scl_pin

+gpio_fm_ext_switch_pin

+gpio_fm_bus_enable_pin

+gpio_fm_srclkena_pin

+gpio_fm_32k_pin

+;

+;To turn on/off external amplifier: afe.c

+gpio_afe_amplifier_pin

+gpio_afe_amplifier_pin1

+;For I2C External audio amplifier ctrl:

+gpio_afe_amplifier_i2c_scl_pin

+gpio_afe_amplifier_i2c_sda_pin

+;

+;For audio EXT_DAC_SUPPORT: ext_dac_drv.c

+gpio_ext_dac_sclk_pin

+gpio_ext_dac_sdin_pin

+gpio_ext_dac_csb_pin

+gpio_ext_dac_switch_pin

+;

+;For Main LCD backlight LED: uem_gpio.c

+gpio_led_mainbl_en_pin

+;For sub LCD backlight LED: uem_gpio.c

+gpio_led_subbl_en_pin

+;For general LED: uem_gpio.c

+gpio_led_status_en_pin

+;For Red LED: uem_gpio.c

+gpio_led_status1_en_pin

+;For Green LED: uem_gpio.c

+gpio_led_status2_en_pin

+;For Blue LED: uem_gpio.c

+gpio_led_status3_en_pin

+;For keypad backlight LED: uem_gpio.c

+gpio_led_keybl_en_pin

+gpio_led_keybl2_en_pin

+;For enable/disable vibration: uem_gpio.c

+gpio_vibrator_en_pin

+;

+;For flash light control: uem_gpio.c, camera_hw.c

+gpio_flashlight_en_pin

+;

+;To enable camera AF function: camera_hw.c

+gpio_af_enable_pin

+;Camera control pins: camera_hw.c, camera_para.c

+gpio_camera_power_en_pin

+@gpio_camera_reset_pin

+@gpio_camera_cmpdn_pin

+@gpio_camera_cmpdn_sub_pin

+@gpio_camera_reset_sub_pin

+@gpio_flashlight_enable_pin

+@gpio_af_enable_pin

+gpio_camera_mclk_pin

+;

+;Camera module control pins: for example, PAP1320_custom.h

+gpio_camera_module_power_pin

+gpio_camera_module_reset_pin

+gpio_camera_module_ready_pin

+;

+;Cap-Touch power enable pin

+@gpio_ctp_power_enable_pin

+;

+;Cap-Touch I2C pins

+@gpio_ctp_i2c_scl_pin

+@gpio_ctp_i2c_sda_pin

+;

+;Cap-Touch eint pin

+@gpio_ctp_eint_pin

+;

+;Cap-Touch reset pin

+@gpio_ctp_reset_pin

+;

+;SCCB pins: sccb.h

+@gpio_sccb_serial_clk_pin

+@gpio_sccb_serial_data_pin

+;

+;PXS I2C pins

+@gpio_pxs_i2c_scl_pin

+@gpio_pxs_i2c_sda_pin

+;

+;ALS I2C pins

+gpio_als_i2c_scl_pin

+gpio_als_i2c_sda_pin

+;

+;TV out swtich pin: auxmain.c

+gpio_tv_out_switch_pin

+;

+;WIFI enable pin: gl_hpi.c

+@gpio_wifi_enable_pin

+;WiF EINT enable pin

+@gpio_wifi_eint_enable_pin

+;WiFi ext 32k pin

+@gpio_wifi_32k_pin

+;WiFi ext reset pin

+@gpio_wifi_ext_rst_pin

+;WiFi coclock pin

+@gpio_wifi_coclock_pin

+;enable wifi PMU

+gpio_wifi_pmu_enable_pin

+;Reset wifi SYSRST_B

+gpio_wifi_sysrst_b_pin

+;

+;USB/UART switch pin: usb_custom.c

+gpio_usb_uart_switch_pin

+gpio_earphone_usb_uart_switch_pin

+;

+;UART enable pin: auxmain.c

+gpio_uart_enable_pin

+;

+;specify GPIO pin for 32KHz clock output

+gpio_32k_ctrl_pin

+;

+;simplus related pins

+gpio_simplug_ldo_switch

+gpio_sim_msdc_switch

+gpio_ext_sd_ldo_switch

+;

+;SW T_flash related pins

+gpio_t_card_ldo_switch

+;

+;touchpad power pins: touchpad_custom.h

+gpio_touchpad_ldo_pw_pin

+gpio_touchpad_low_pw_pin

+;

+;GPS power on pin

+@gpio_gps_power_pin

+;GPS reset pin

+@gpio_gps_reset_pin

+;GPS standby pin

+@gpio_gps_standby_pin

+;GPS sync pin

+@gpio_gps_sync_pin

+;GPS ext 32k pin

+@gpio_gps_32k_pin

+;GPS uart tx pin

+@gpio_gps_utxd_pin

+;GPS uart rx pin

+@gpio_gps_urxd_pin

+;GPS uart rts pin

+@gpio_gps_urts_pin

+;GPS uart cts pin

+@gpio_gps_ucts_pin

+;

+;NFC VEN pin

+@gpio_nfc_ven_pin

+;NFC GPIO4 pin

+@gpio_nfc_firm_pin

+;NFC IRQ

+@gpio_nfc_eint_pin

+;

+;TDMB Power and Control Pin

+@gpio_tdmb_power_pin

+gpio_tdmb_spi_reset_pin

+gpio_tdmb_spi_eint_pin

+;

+;MT6302 SPI CS pins

+@gpio_MT6302_cs_pin

+@gpio_MT6302_cs2_pin

+;MT6302 SPI clk pins

+@gpio_MT6302_clk_pin

+@gpio_MT6302_clk2_pin

+;MT6302 SPI data pins

+@gpio_MT6302_dat_pin

+@gpio_MT6302_dat2_pin

+;

+;MT6306 sim switch controller pin

+@gpio_sim_switch_dat_pin

+;MT6306 sim switch controller pin

+@gpio_sim_switch_clk_pin

+;

+;USB EDGE card 2-step current limit

+@gpio_edgecard_current_limit_pin

+

+;For XENON flash light control

+gpio_xenon_flash_on_pin

+gpio_xenon_charge_pin

+gpio_xenon_trigger_pin

+gpio_xenon_ready_pin

+

+;For CMMB I2C control pin

+gpio_cmmb_reset_pin

+gpio_cmmb_i2c_sda_pin

+gpio_cmmb_i2c_scl_pin

+gpio_cmmb_power_on_pin

+gpio_cmmb_ap_en_pin

+@gpio_cmmb_spi_eint_pin

+gpio_cmmb_spi_cs_n_pin

+gpio_cmmb_spi_sck_pin

+gpio_cmmb_spi_mosi_pin

+gpio_cmmb_spi_miso_pin

+

+;For LCD TE control pin

+gpio_lcd_te_pin

+

+;For Direct Sensor

+gpio_dcam_lcd_cs_pin

+gpio_dcam_lcd_rd_pin

+

+;For PMU with External Charger

+gpio_ext_chr_ctrl_pin

+gpio_ext_chr_iset_ctrl_pin

+;ys1 add for PMU with External Charger

+gpio_ext_chr_det_pin

+; for Micro SD card detection

+gpio_SD_det_pin

+

+;For general purpose debug

+gpio_reserve0_pin

+gpio_reserve1_pin

+gpio_reserve2_pin

+gpio_reserve3_pin

+gpio_reserve4_pin

+gpio_reserve5_pin

+gpio_reserve6_pin

+gpio_reserve7_pin

+gpio_reserve8_pin

+gpio_reserve9_pin

+gpio_reserve10_pin

+gpio_reserve11_pin

+gpio_reserve12_pin

+gpio_reserve13_pin

+gpio_reserve14_pin

+gpio_reserve15_pin

+

+;For kbdmain_joustick

+gpio_ball_scl_pin

+gpio_ball_sda_pin

+gpio_ball_en_pin

+

+;For kbd_OFN

+@gpio_ofn_scl_pin

+@gpio_ofn_sda_pin

+@gpio_ofn_shtdwn_pin

+@gpio_ofn_rst_pin

+@gpio_ofn_motion_pin

+;For BT co_clock

+@gpio_bt_co_clock_pin   

+

+gpio_muic_sccb_sda_pin

+gpio_muic_sccb_scl_pin

+

+;For TWOMICNR I2C control pin

+gpio_2micNR_scl_pin

+gpio_2micNR_sda_pin

+gpio_2micNR_bypass_pin

+gpio_2micNR_13mhz_pin

+gpio_2micNR_rst_pin

+gpio_2micNR_pwdn_pin

+

+;for I2S

+gpio_edi_clk

+gpio_edi_data

+gpio_edi_ws

+

+;For qwerty extend for keypad

+@gpio_kbd_extend_QWERTY_pin

+

+;For mATV control pin

+@gpio_matv_reset_pin

+@gpio_matv_power_en_pin

+@gpio_matv_i2c_clk_pin

+@gpio_matv_i2c_dat_pin

+

+;For I2S interface

+@gpio_i2s_clk_pin

+@gpio_i2s_data_pin

+@gpio_i2s_ws_pin

+

+;For Keypad use

+*gpio_keypad_col0_pin

+*gpio_keypad_col1_pin

+*gpio_keypad_col2_pin

+*gpio_keypad_col3_pin

+*gpio_keypad_col4_pin

+*gpio_keypad_col5_pin

+*gpio_keypad_col6_pin

+*gpio_keypad_col7_pin

+*gpio_keypad_col8_pin

+*gpio_keypad_col9_pin

+*gpio_keypad_row0_pin

+*gpio_keypad_row1_pin

+*gpio_keypad_row2_pin

+*gpio_keypad_row3_pin

+*gpio_keypad_row4_pin

+*gpio_keypad_row5_pin

+*gpio_keypad_row6_pin

+*gpio_keypad_row7_pin

+*gpio_keypad_row8_pin

+*gpio_keypad_row9_pin

+

+

+;For AST1001 interface

+@gpio_ast_cs_pin

+@gpio_ast_addr1_pin

+@gpio_ast_rst_pin

+@gpio_ast_pwn_pin

+@gpio_ast_ldo_pin

+@gpio_ast_clk32k_pin

+@gpio_ast_intr_pin

+@gpio_ast_wakeup_intr_pin

+@gpio_ast_rfconf_intr_pin

+@gpio_ast_wakeup_pin

+@gpio_ast_ast3001_wa_clk_pin

+

+;For Gpio Macro Name

+GPIO_FDD_BAND_SUPPORT_DETECT_1ST_PIN

+GPIO_FDD_BAND_SUPPORT_DETECT_2ND_PIN

+GPIO_FDD_BAND_SUPPORT_DETECT_3RD_PIN

+

+;MT6290 For MSDC card detect

+@gpio_msdc_cd_pin

+@gpio_msdc_wp_pin

+

+;MT6290 For phone AP wake up MD

+@GPIO_AP_WAKE_MD_PIN

+

+;MT6290 For sim hot plug

+@gpio_usim1_hot_swap

+@gpio_usim2_hot_swap

+

+;MT6290/MT6582/MT6592 LTE CoEX 

+@gpio_tdm_req

+

+;MT6290/MT6290m VCORE I2C buck Exist , 1 : Yes ; 0 : No

+EXTbuck_i2cdev_exist

+

+;MT6290MD->AP wakeup workaround;20140318

+gpio_MD2AP_EINT

+

+[GPIO_MODE]

+GPIO = _M_GPIO

+EINT = _M_EINT

+EDICK = _M_EDICK      

+EDIDAT = _M_EDIDAT      

+EDIWS = _M_EDIWS

+EDI0CK = _M_EDI0CK      

+EDI0DAT = _M_EDI0DAT      

+EDI0WS = _M_EDI0WS

+EDI1CK = _M_EDI1CK      

+EDI1DAT = _M_EDI1DAT      

+EDI1WS = _M_EDI1WS     

+

+[GPIO_FREQ]

+gpio_bt_power_pin = mode_f32k_ck

+gpio_fm_32k_pin = mode_f32k_ck

+

+

+[gpio_drv.h_HEADER]

+#ifndef _GPIO_DRV_H

+#define _GPIO_DRV_H

+

+[gpio_drv.h_TAILER]

+#endif /* _GPIO_DRV_H */

+

+[gpio_var.c_HEADER]

+#ifdef __CUST_NEW__

+#include "gpio_drv.h"

+#include "gpio_def.h"

+#include "kal_public_api.h"

+#include "gpio_sw.h"

+#include "dcl.h"

+

+[gpio_var.c_TAILER]

+#endif /* __CUST_NEW__ */

diff --git a/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_MT6252.cmp b/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_MT6252.cmp
new file mode 100644
index 0000000..d20601d
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_MT6252.cmp
@@ -0,0 +1,187 @@
+[GPIO_EXT_TABLE]

+NUM_GPIO_EXT = 22

+

+[GPIO_EXT_NAME0]

+GPIOEXT_NAME=SP_MODE0_BIT0

+[GPIO_EXT__SEL0]

+0(EMI_EA0)

+1(LPA0)

+2

+3(SEN2LCM_A0)

+

+[GPIO_EXT_NAME1]

+GPIOEXT_NAME=SP_MODE0_BIT2

+[GPIO_EXT__SEL1]

+0(EMI_EA1)

+1(LRD_B)

+2

+3

+

+[GPIO_EXT_NAME2]

+GPIOEXT_NAME=SP_MODE0_BIT4

+[GPIO_EXT__SEL2]

+0(EMI_EA2)

+1(LWR_B)

+2

+3(SEN2LCM_WR_B)

+

+[GPIO_EXT_NAME3]

+GPIOEXT_NAME=SP_MODE0_BIT6

+[GPIO_EXT__SEL3]

+0(EMI_EA3)

+1(NLD0)

+2(LSCK)

+3(CMDAT0)

+

+[GPIO_EXT_NAME4]

+GPIOEXT_NAME=SP_MODE0_BIT8

+[GPIO_EXT__SEL4]

+0(EMI_EA4)

+1(NLD1)

+2(LSA0)

+3(CMDAT1)

+

+[GPIO_EXT_NAME5]

+GPIOEXT_NAME=SP_MODE0_BIT10

+[GPIO_EXT__SEL5]

+0(EMI_EA5)

+1(NLD2)

+2(LSDA)

+3(CMDAT2)

+

+[GPIO_EXT_NAME6]

+GPIOEXT_NAME=SP_MODE0_BIT12

+[GPIO_EXT__SEL6]

+0(EMI_EA6)

+1(NLD3)

+2(LSDI)

+3(CMDAT3)

+

+[GPIO_EXT_NAME7]

+GPIOEXT_NAME=SP_MODE0_BIT14

+[GPIO_EXT__SEL7]

+0(EMI_EA7)

+1(NLD4)

+2

+3(CMDAT4)

+

+[GPIO_EXT_NAME8]

+GPIOEXT_NAME=SP_MODE0_BIT16

+[GPIO_EXT__SEL8]

+0(EMI_EA8)

+1(NLD5)

+2

+3(CMDAT5)

+

+[GPIO_EXT_NAME9]

+GPIOEXT_NAME=SP_MODE0_BIT18

+[GPIO_EXT__SEL9]

+0(EMI_EA9)

+1(NLD6)

+2

+3(CMDAT6)

+

+[GPIO_EXT_NAME10]

+GPIOEXT_NAME=SP_MODE0_BIT20

+[GPIO_EXT__SEL10]

+0(EMI_EA10)

+1(NLD7)

+2

+3(CMDAT7)

+

+[GPIO_EXT_NAME11]

+GPIOEXT_NAME=SP_MODE0_BIT22

+[GPIO_EXT__SEL11]

+0(EMI_EA11)

+1(NLD8)

+2

+3

+

+[GPIO_EXT_NAME12]

+GPIOEXT_NAME=SP_MODE0_BIT24

+[GPIO_EXT__SEL12]

+0(EMI_EA12)

+1(NLD9)

+2(CMMCLK)

+3(CMMCLK)

+

+[GPIO_EXT_NAME13]

+GPIOEXT_NAME=SP_MODE0_BIT26

+[GPIO_EXT__SEL13]

+0(EMI_EA13)

+1(NLD10)

+2(CAM_CSK)

+3(CMPCLK)

+

+[GPIO_EXT_NAME14]

+GPIOEXT_NAME=SP_MODE0_BIT28

+[GPIO_EXT__SEL14]

+0(EMI_EA14)

+1(NLD11)

+2(CAM_CSD)

+3(HSYNC)

+

+[GPIO_EXT_NAME15]

+GPIOEXT_NAME=SP_MODE0_BIT30

+[GPIO_EXT__SEL15]

+0(EMI_EA15)

+1(NLD12)

+2(CMPDN)

+3(VSYNC)

+

+[GPIO_EXT_NAME16]

+GPIOEXT_NAME=SP_MODE1_BIT0

+[GPIO_EXT__SEL16]

+0(EMI_EA23)

+1

+2

+3(LSCE0_B)

+

+[GPIO_EXT_NAME17]

+GPIOEXT_NAME=SP_MODE1_BIT2

+[GPIO_EXT__SEL17]

+0(EMI_EA24)

+1

+2

+3(LPCE0_B)

+

+[GPIO_EXT_NAME18]

+GPIOEXT_NAME=SP_MODE1_BIT4

+[GPIO_EXT__SEL18]

+0(EMI_ED6)

+1(JRTCK)

+2(CMRST)

+3(LSCE1_B)

+4(SEN2LCM_CS_B)

+5(CAM_SDA)

+6(LPCE1_B)

+7

+

+[GPIO_EXT_NAME19]

+GPIOEXT_NAME=SP_MODE1_BIT8

+[GPIO_EXT__SEL19]

+0(EMI_ED7)

+1(JRTCK)

+2(CMPDN)

+3(LPCE1_B)

+4(SEN2LCM_CS_B)

+5(CAM_SCL)

+6(LSCE1_B)

+7

+

+[GPIO_EXT_NAME20]

+GPIOEXT_NAME=SP_MODE1_BIT12

+[GPIO_EXT__SEL20]

+0(URXD1)

+1(EINT2)

+2(LSCK)

+3

+

+[GPIO_EXT_NAME21]

+GPIOEXT_NAME=SP_MODE1_BIT14

+[GPIO_EXT__SEL21]

+0(UTXD1)

+1(EINT3)

+2(LSDA)

+3

+

diff --git a/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_MT6270.cmp b/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_MT6270.cmp
new file mode 100644
index 0000000..e2b12b8
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_MT6270.cmp
@@ -0,0 +1,133 @@
+[GPIO_EXT_TABLE]

+NUM_GPIO_EXT = 13

+

+

+[GPIO_EXT_NAME0]

+GPIOEXT_NAME=CLKSEL1

+[GPIO_EXT__SEL0]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME1]

+GPIOEXT_NAME=CLKSEL2

+[GPIO_EXT__SEL1]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME2]

+GPIOEXT_NAME=CLKSEL3

+[GPIO_EXT__SEL2]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME3]

+GPIOEXT_NAME=CLKSEL4

+[GPIO_EXT__SEL3]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME4]

+GPIOEXT_NAME=CLKSEL5

+[GPIO_EXT__SEL4]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME5]

+GPIOEXT_NAME=CLKSEL6

+[GPIO_EXT__SEL5]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME6]

+GPIOEXT_NAME=CLKSEL7

+[GPIO_EXT__SEL6]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME7]

+GPIOEXT_NAME=CLKSEL8

+[GPIO_EXT__SEL7]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME8]

+GPIOEXT_NAME=CLKSEL9

+[GPIO_EXT__SEL8]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME9]

+GPIOEXT_NAME=CLKSEL10

+[GPIO_EXT__SEL9]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME10]

+GPIOEXT_NAME=CLKSEL11

+[GPIO_EXT__SEL10]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME11]

+GPIOEXT_NAME=CLKSEL12

+[GPIO_EXT__SEL11]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME12]

+GPIOEXT_NAME=CLKSEL13

+[GPIO_EXT__SEL12]

+0

+1

+2

+3

+4

+5
\ No newline at end of file
diff --git a/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_MT6276.cmp b/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_MT6276.cmp
new file mode 100644
index 0000000..e2b12b8
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_MT6276.cmp
@@ -0,0 +1,133 @@
+[GPIO_EXT_TABLE]

+NUM_GPIO_EXT = 13

+

+

+[GPIO_EXT_NAME0]

+GPIOEXT_NAME=CLKSEL1

+[GPIO_EXT__SEL0]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME1]

+GPIOEXT_NAME=CLKSEL2

+[GPIO_EXT__SEL1]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME2]

+GPIOEXT_NAME=CLKSEL3

+[GPIO_EXT__SEL2]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME3]

+GPIOEXT_NAME=CLKSEL4

+[GPIO_EXT__SEL3]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME4]

+GPIOEXT_NAME=CLKSEL5

+[GPIO_EXT__SEL4]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME5]

+GPIOEXT_NAME=CLKSEL6

+[GPIO_EXT__SEL5]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME6]

+GPIOEXT_NAME=CLKSEL7

+[GPIO_EXT__SEL6]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME7]

+GPIOEXT_NAME=CLKSEL8

+[GPIO_EXT__SEL7]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME8]

+GPIOEXT_NAME=CLKSEL9

+[GPIO_EXT__SEL8]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME9]

+GPIOEXT_NAME=CLKSEL10

+[GPIO_EXT__SEL9]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME10]

+GPIOEXT_NAME=CLKSEL11

+[GPIO_EXT__SEL10]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME11]

+GPIOEXT_NAME=CLKSEL12

+[GPIO_EXT__SEL11]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME12]

+GPIOEXT_NAME=CLKSEL13

+[GPIO_EXT__SEL12]

+0

+1

+2

+3

+4

+5
\ No newline at end of file
diff --git a/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_MT6276M.cmp b/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_MT6276M.cmp
new file mode 100644
index 0000000..e2b12b8
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_MT6276M.cmp
@@ -0,0 +1,133 @@
+[GPIO_EXT_TABLE]

+NUM_GPIO_EXT = 13

+

+

+[GPIO_EXT_NAME0]

+GPIOEXT_NAME=CLKSEL1

+[GPIO_EXT__SEL0]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME1]

+GPIOEXT_NAME=CLKSEL2

+[GPIO_EXT__SEL1]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME2]

+GPIOEXT_NAME=CLKSEL3

+[GPIO_EXT__SEL2]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME3]

+GPIOEXT_NAME=CLKSEL4

+[GPIO_EXT__SEL3]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME4]

+GPIOEXT_NAME=CLKSEL5

+[GPIO_EXT__SEL4]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME5]

+GPIOEXT_NAME=CLKSEL6

+[GPIO_EXT__SEL5]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME6]

+GPIOEXT_NAME=CLKSEL7

+[GPIO_EXT__SEL6]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME7]

+GPIOEXT_NAME=CLKSEL8

+[GPIO_EXT__SEL7]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME8]

+GPIOEXT_NAME=CLKSEL9

+[GPIO_EXT__SEL8]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME9]

+GPIOEXT_NAME=CLKSEL10

+[GPIO_EXT__SEL9]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME10]

+GPIOEXT_NAME=CLKSEL11

+[GPIO_EXT__SEL10]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME11]

+GPIOEXT_NAME=CLKSEL12

+[GPIO_EXT__SEL11]

+0

+1

+2

+3

+4

+5

+

+[GPIO_EXT_NAME12]

+GPIOEXT_NAME=CLKSEL13

+[GPIO_EXT__SEL12]

+0

+1

+2

+3

+4

+5
\ No newline at end of file
diff --git a/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_NC.cmp b/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_NC.cmp
new file mode 100644
index 0000000..a20f307
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_NC.cmp
@@ -0,0 +1,3 @@
+[GPIO_EXT_TABLE]

+NUM_GPIO_EXT = 0

+

diff --git a/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_NCGPIOEXT.cmp b/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_NCGPIOEXT.cmp
new file mode 100644
index 0000000..a20f307
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/GPIO_EXT_NCGPIOEXT.cmp
@@ -0,0 +1,3 @@
+[GPIO_EXT_TABLE]

+NUM_GPIO_EXT = 0

+

diff --git a/mcu/custom/driver/drv/Drv_Tool/GPIO_protect.cmp b/mcu/custom/driver/drv/Drv_Tool/GPIO_protect.cmp
new file mode 100644
index 0000000..edf518c
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/GPIO_protect.cmp
@@ -0,0 +1,27 @@
+;                                        Pull_en |Pull_sel |Def_dir |In |Out |Inv |Out_High

+[PROTECT]                                

+;GPS                                     

+PROTECT_0 = gpio_wifi_enable_pin         0        0         1        0   1    0    0

+PROTECT_1 = gpio_wifi_32k_pin            0        0         1        0   1    0    0

+PROTECT_2 = gpio_wifi_ext_rst_pin        0        0         1        0   1    0    1

+;BT                                                                                

+PROTECT_3 = gpio_bt_power_pin            0        0         1        0   1    0    0

+PROTECT_4 = gpio_bt_wakeup_pin           0        0         1        0   1    0    0

+PROTECT_5 = gpio_bt_32k_pin              0        0         1        0   1    0    0

+PROTECT_6 = gpio_bt_utxd3_pin            0        0         1        0   1    0    0

+PROTECT_7 = gpio_bt_urxd3_pin            1        1         0        1   1    0    0

+PROTECT_8 = gpio_bt_ucts3_pin            0        0         1        0   1    0    0

+PROTECT_9 = gpio_bt_urts3_pin            0        0         1        0   1    0    0

+PROTECT_10 = gpio_bt_pcmclk_pin          0        0         1        0   1    0    0

+PROTECT_11 = gpio_bt_pcmsync_pin         0        0         1        0   1    0    0

+PROTECT_12 = gpio_bt_pcmin_pin           1        0         0        1   1    0    0

+PROTECT_13 = gpio_bt_pcmout_pin          0        0         1        0   1    0    0

+PROTECT_14 = gpio_bt_reset_pin           0        0         1        0   1    0    0

+;WIFI                                                                              

+PROTECT_15 = gpio_gps_power_pin          1        0         1        0   1    0    0

+PROTECT_16 = gpio_gps_urxd_pin           0        0         1        0   1    0    0

+PROTECT_17 = gpio_gps_utxd_pin           0        0         1        0   1    0    0

+;QWERTY key                                                                        

+PROTECT_18 = gpio_kbd_extend_QWERTY_pin  0        0         1        1   1    0    0

+;BT

+PROTECT_19 = gpio_bt_eint_pin            0        0         1        0   1    0    0

diff --git a/mcu/custom/driver/drv/Drv_Tool/Keypad.cmp b/mcu/custom/driver/drv/Drv_Tool/Keypad.cmp
new file mode 100644
index 0000000..be45be8
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/Keypad.cmp
@@ -0,0 +1,134 @@
+[Key_definition]

+DEVICE_KEY_0

+DEVICE_KEY_1

+DEVICE_KEY_2

+DEVICE_KEY_3

+DEVICE_KEY_4

+DEVICE_KEY_5

+DEVICE_KEY_6

+DEVICE_KEY_7

+DEVICE_KEY_8

+DEVICE_KEY_9

+DEVICE_KEY_STAR

+DEVICE_KEY_HASH

+DEVICE_KEY_VOL_UP

+DEVICE_KEY_VOL_DOWN

+DEVICE_KEY_UP

+DEVICE_KEY_DOWN

+DEVICE_KEY_LEFT

+DEVICE_KEY_RIGHT

+DEVICE_KEY_MENU

+DEVICE_KEY_FUNCTION

+DEVICE_KEY_SK_LEFT

+DEVICE_KEY_SK_RIGHT

+DEVICE_KEY_SEND

+DEVICE_KEY_END

+DEVICE_KEY_POWER

+DEVICE_KEY_CLEAR

+DEVICE_KEY_EXT_FUNC1

+DEVICE_KEY_EXT_FUNC2

+DEVICE_KEY_MP3_PLAY_STOP

+DEVICE_KEY_MP3_FWD

+DEVICE_KEY_MP3_BACK

+DEVICE_KEY_NONE

+DEVICE_KEY_EXT_A

+DEVICE_KEY_EXT_B

+DEVICE_KEY_A

+DEVICE_KEY_B

+DEVICE_KEY_C

+DEVICE_KEY_D

+DEVICE_KEY_E

+DEVICE_KEY_F

+DEVICE_KEY_G

+DEVICE_KEY_H

+DEVICE_KEY_I

+DEVICE_KEY_J

+DEVICE_KEY_K

+DEVICE_KEY_L

+DEVICE_KEY_M

+DEVICE_KEY_N

+DEVICE_KEY_O

+DEVICE_KEY_P

+DEVICE_KEY_Q

+DEVICE_KEY_R

+DEVICE_KEY_S

+DEVICE_KEY_T

+DEVICE_KEY_U

+DEVICE_KEY_V

+DEVICE_KEY_W

+DEVICE_KEY_X

+DEVICE_KEY_Y

+DEVICE_KEY_Z

+DEVICE_KEY_ENTER

+DEVICE_KEY_SPACE

+DEVICE_KEY_TAB

+DEVICE_KEY_DEL

+DEVICE_KEY_ALT

+DEVICE_KEY_CTRL

+DEVICE_KEY_WIN

+DEVICE_KEY_SHIFT

+DEVICE_KEY_QUESTION

+DEVICE_KEY_PERIOD

+DEVICE_KEY_COMMA

+DEVICE_KEY_EXCLAMATION

+DEVICE_KEY_APOSTROPHE

+DEVICE_KEY_AT

+DEVICE_KEY_SEND2

+DEVICE_KEY_BACKQUOTE    

+DEVICE_KEY_DASH         

+DEVICE_KEY_EQUAL        

+DEVICE_KEY_BACKSPACE    

+DEVICE_KEY_OPEN_PARENS  

+DEVICE_KEY_CLOSE_PARENS 

+DEVICE_KEY_OPEN_SQUARE  

+DEVICE_KEY_CLOSE_SQUARE 

+DEVICE_KEY_OPEN_BRACE   

+DEVICE_KEY_CLOSE_BRACE  

+DEVICE_KEY_BACKSLASH    

+DEVICE_KEY_SEMICOLON    

+DEVICE_KEY_SLASH        

+DEVICE_KEY_DOLLAR       

+DEVICE_KEY_PERCENT      

+DEVICE_KEY_CARET        

+DEVICE_KEY_AND          

+DEVICE_KEY_QUOTE        

+DEVICE_KEY_PLUS         

+DEVICE_KEY_LESS_THAN    

+DEVICE_KEY_GREAT_THAN   

+DEVICE_KEY_UNDERSCORE   

+DEVICE_KEY_PIPE         

+DEVICE_KEY_TILDE        

+DEVICE_KEY_CAPS_LOCK    

+DEVICE_KEY_NUM_LOCK         

+DEVICE_KEY_FN           

+DEVICE_KEY_SYMBOL       

+DEVICE_KEY_EMAIL        

+DEVICE_KEY_MESSAGE      

+DEVICE_KEY_CAMERA       

+DEVICE_KEY_ESC          

+DEVICE_KEY_QWERTY_MENU  

+DEVICE_KEY_OK                

+DEVICE_KEY_F1           

+DEVICE_KEY_F2           

+DEVICE_KEY_F3           

+DEVICE_KEY_F4           

+DEVICE_KEY_F5           

+DEVICE_KEY_F6           

+DEVICE_KEY_F7           

+DEVICE_KEY_F8           

+DEVICE_KEY_F9           

+DEVICE_KEY_F10          

+DEVICE_KEY_F11          

+DEVICE_KEY_F12          

+DEVICE_KEY_BACK

+DEVICE_KEY_HOME

+

+

+[keypad_drv.h_HEADER]

+#ifndef _KEYPAD_DRV_H

+#define _KEYPAD_DRV_H

+

+[keypad_drv.h_TAILER]

+#endif /* _KEYPAD_DRV_H*/

+

+

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6205B.fig b/mcu/custom/driver/drv/Drv_Tool/MT6205B.fig
new file mode 100644
index 0000000..26ab79b
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6205B.fig
@@ -0,0 +1,43 @@
+[Chip Type]

+Chip = MT6205B

+

+[GPIO]

+GPIO0 = Mode0(GPIO0)    Mode1(DAICLK)    Mode2(LPT_CK)   Mode3(TDMA_CK) PD

+GPIO1 = Mode0(GPIO1)    Mode1(DAIPCMOUT) Mode2(LPT_D2)   Mode3(TDMA_D1) PD

+GPIO2 = Mode0(GPIO2)    Mode1(DAIPCMIN)  Mode2(LPT_D1)   Mode3(TDMA_D0) PU

+GPIO3 = Mode0(GPIO3)    Mode1(DAIRST)    Mode2(LPT_D0)   Mode3(TDMA_FS) PU

+GPIO4 = Mode0(GPIO4)    Mode1(BPI_BUS4)  Mode2()         Mode3() PD

+GPIO5 = Mode0(GPIO5)    Mode1(BPI_BUS5)  Mode2()         Mode3() PD

+GPIO6 = Mode0(GPIO6)    Mode1(BPI_BUS6)  Mode2(BFE_PRB0) Mode3() PD

+GPIO7 = Mode0(GPIO7)    Mode1(BSI_BUS7)  Mode2(BSI_CS1)  Mode3() PD

+GPIO8 = Mode0(GPIO8)    Mode1(LCD_DATA)  Mode2()         Mode3() PD

+GPIO9 = Mode0(GPIO9)    Mode1(LCD_A0)    Mode2()         Mode3() PD

+GPIO10 = Mode0(GPIO10)  Mode1(LCD_CLK)   Mode2()         Mode3() PD

+GPIO11 = Mode0(GPIO11)  Mode1(LCD_CS0)   Mode2()         Mode3() PU

+GPIO12 = Mode0(GPIO12)  Mode1(LCD_CS1)   Mode2()         Mode3(D1_TID0) PU

+GPIO13 = Mode0(GPIO13)  Mode1(13MHz)     Mode2()         Mode3() PD

+GPIO14 = Mode0(GPIO14)  Mode1()          Mode2()         Mode3() PD

+GPIO15 = Mode0(GPIO15)  Mode1()          Mode2()         Mode3() PD

+GPIO16 = Mode0(GPIO16)  Mode1(PWM)       Mode2()         Mode3() PD

+GPIO17 = Mode0(GPIO17)  Mode1(UCTS2)     Mode2(UDSR1)    Mode3() PU

+GPIO18 = Mode0(GPIO18)  Mode1(URTS2)     Mode2(UDTR1)    Mode3() PU

+GPIO19 = Mode0(GPIO19)  Mode1(URXD2)     Mode2()         Mode3() PU

+GPIO20 = Mode0(GPIO20)  Mode1(UTXD2)     Mode2()         Mode3() PU

+GPIO21 = Mode0(GPIO21)  Mode1(UREF_CLK)  Mode2(IRQ)      Mode3() PU

+

+[GPO]

+GPO0 = Mode0(GPO0) Mode1(XLCDE)     Mode2(EA22) Mode3()

+GPO1 = Mode0(GPO1) Mode1(SRCLKENAN) Mode2(PWM2) Mode3()

+GPO2 = Mode0(GPO2) Mode1(SRCLKENA)  Mode2()     Mode3()

+GPO3 = Mode0(GPO2) Mode1(ALERTER)   Mode2()     Mode3()

+

+[EINT]

+EINT_COUNT = 3

+EINT_DEBOUNCE_TIME_COUNT = 3

+

+[ADC]

+ADC_COUNT = 5

+

+[Keypad]

+KEY_ROW = 5

+KEY_COLUMN = 5

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6217.fig b/mcu/custom/driver/drv/Drv_Tool/MT6217.fig
new file mode 100644
index 0000000..f65d029
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6217.fig
@@ -0,0 +1,72 @@
+[Chip Type]

+Chip = MT6217

+

+[GPIO]

+GPIO0 =  Mode0(GPIO0)  Mode1()          Mode2(DSP_GPO3) Mode3() PD

+GPIO1 =  Mode0(GPIO1)  Mode1(DICK)      Mode2()         Mode3() PD

+GPIO2 =  Mode0(GPIO2)  Mode1(DID)       Mode2()         Mode3() PD

+GPIO3 =  Mode0(GPIO3)  Mode1(DIMS)      Mode2()         Mode3() PD

+GPIO4 =  Mode0(GPIO4)  Mode1(DSP_CLK)   Mode2(DSPLCK)   Mode3(TRASD4) PD

+GPIO5 =  Mode0(GPIO5)  Mode1(AHB_CLK)   Mode2(DSPLD3)   Mode3(TRASD3) PD

+GPIO6 =  Mode0(GPIO6)  Mode1(ARM_CLK)   Mode2(DSPLD2)   Mode3(TRASD2) PD

+GPIO7 =  Mode0(GPIO7)  Mode1(SLOW_CK)   Mode2(DSPLD1)   Mode3(TRASD1) PD

+GPIO8 =  Mode0(GPIO8)  Mode1(F32K_CK)   Mode2(DSPLD0)   Mode3(TRASD0) PD

+GPIO9 =  Mode0(GPIO9)  Mode1()          Mode2()         Mode3(TRARSYNC) PD

+GPIO10 = Mode0(GPIO10) Mode1(BPI_BUS6)  Mode2()         Mode3() PD

+

+GPIO11 = Mode0(GPIO11) Mode1(BPI_BUS7) Mode2(6.5MHz)    Mode3(26MHz) PD

+GPIO12 = Mode0(GPIO12) Mode1(BPI_BUS8) Mode2(13MHz)     Mode3(26MHz) PD

+GPIO13 = Mode0(GPIO13) Mode1(BPI_BUS9) Mode2(BSI_CS1)   Mode3() PD

+GPIO14 = Mode0(GPIO14) Mode1(MCINS)    Mode2()          Mode3() PU

+GPIO15 = Mode0(GPIO15) Mode1(MCWP)     Mode2()          Mode3() PU

+GPIO16 = Mode0(GPIO16) Mode1(LSCK)     Mode2()          Mode3(TBTXEN) PD

+GPIO17 = Mode0(GPIO17) Mode1(LSA0)     Mode2()          Mode3(TDTIRQ) PD

+GPIO18 = Mode0(GPIO18) Mode1(LSDA)     Mode2()          Mode3(TCTIRQ2) PD

+GPIO19 = Mode0(GPIO19) Mode1(LSCE0#)   Mode2(DSP_TID0)  Mode3(TCTIRQ1) PU

+GPIO20 = Mode0(GPIO20) Mode1(LSCE1#)   Mode2(LPCE2#)    Mode3(TEVTVAL) PU

+

+GPIO21 = Mode0(GPIO21) Mode1(PWM1)     Mode2(DSP_GPO0) Mode3(TBTXFS) PD

+GPIO22 = Mode0(GPIO22) Mode1(PWM2)     Mode2(DSP_GPO1) Mode3(TBRXEN) PD

+GPIO23 = Mode0(GPIO23) Mode1(ALERTER)  Mode2(DSP_GPO2) Mode3(BTRXFS) PD

+GPIO24 = Mode0(GPIO24) Mode1(LPCE1#)   Mode2(NCE1#)    Mode3(MCU_TID0) PU

+GPIO25 = Mode0(GPIO25) Mode1(NRNB)     Mode2(DSP_TID1) Mode3(MCU_TID1) PU

+GPIO26 = Mode0(GPIO26) Mode1(NCLE)     Mode2(DSP_TID2) Mode3(MCU_TID2) PD

+GPIO27 = Mode0(GPIO27) Mode1(NALE)     Mode2(DSP_TID3) Mode3(MCU_TID3) PD

+GPIO28 = Mode0(GPIO28) Mode1(NWE#)     Mode2(DSP_TID4) Mode3(MCU_DID) PU

+GPIO29 = Mode0(GPIO29) Mode1(NRE#)     Mode2(DSP_TID5) Mode3(MCU_DFS) PU

+GPIO30 = Mode0(GPIO30) Mode1(NCE0#)    Mode2(DSP_TID6) Mode3(MCU_DCK) PU

+

+GPIO31 = Mode0(GPIO31) Mode1(SRCLKENAI)  Mode2()       Mode3() PD

+GPIO32 = Mode0(GPIO32) Mode1(SIMSEL)    Mode2()        Mode3() PD

+GPIO33 = Mode0(GPIO33) Mode1(URXD3)     Mode2()        Mode3() PU

+GPIO34 = Mode0(GPIO34) Mode1(UTXD3)     Mode2()        Mode3() PU

+GPIO35 = Mode0(GPIO35) Mode1(URXD2)     Mode2(UCTS3)   Mode3() PU

+GPIO36 = Mode0(GPIO36) Mode1(UTXD2)     Mode2(URTS3)   Mode3() PU

+GPIO37 = Mode0(GPIO37) Mode1(IRDA_RXD)  Mode2(UCTS2)   Mode3() PU

+GPIO38 = Mode0(GPIO38) Mode1(IRDA_TXD)  Mode2(URTS2)   Mode3() PU

+GPIO39 = Mode0(GPIO39) Mode1(IRDA_PDN)  Mode2()        Mode3() PU

+GPIO40 = Mode0(GPIO40) Mode1(ECS7#)     Mode2()        Mode3() PU

+

+GPIO41 = Mode0(GPIO41) Mode1(MIRQ)      Mode2(13MHz)   Mode3(6.5MHz) PU

+GPIO42 = Mode0(GPIO42) Mode1(MFIQ)      Mode2()        Mode3() PU

+GPIO43 = Mode0(GPIO43) Mode1(DAICLK)    Mode2(TDMA_CK) Mode3(TRACLK) PU

+GPIO44 = Mode0(GPIO44) Mode1(DAIPCMOUT) Mode2(TDMA_D1) Mode3(TRASYNC) PD

+GPIO45 = Mode0(GPIO45) Mode1(DAIPCMIN)  Mode2(TDMA_D2) Mode3(TRASD7) PU

+GPIO46 = Mode0(GPIO46) Mode1(DAISYNC)   Mode2(BFEPRBO) Mode3(TRASD5) PU

+GPIO47 = Mode0(GPIO47) Mode1(DAIRST)    Mode2(TDMA_FS) Mode3(TRASD6) PU

+

+[GPO]

+GPO0 = Mode0(GPO0) Mode1(SRCLKENA) Mode2() Mode3()

+GPO1 = Mode0(GPO1) Mode1(SRCLKENAN)  Mode2() Mode3()

+GPO2 = Mode0(GPO2) Mode1(EPDN#)     Mode2() Mode3()

+

+[EINT]

+EINT_COUNT = 8

+EINT_DEBOUNCE_TIME_COUNT = 4

+

+[ADC]

+ADC_COUNT = 7

+

+[Keypad]

+KEY_ROW = 6

+KEY_COLUMN = 7

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6219.fig b/mcu/custom/driver/drv/Drv_Tool/MT6219.fig
new file mode 100644
index 0000000..9c89441
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6219.fig
@@ -0,0 +1,83 @@
+[Chip Type]

+Chip = MT6219

+

+[GPIO]

+GPIO0 =  Mode0(GPIO0)  Mode1()          Mode2(DSP_GPO3) Mode3() PD

+GPIO1 =  Mode0(GPIO1)  Mode1(DICK)      Mode2()         Mode3() PD

+GPIO2 =  Mode0(GPIO2)  Mode1(DID)       Mode2()         Mode3() PD

+GPIO3 =  Mode0(GPIO3)  Mode1(DIMS)      Mode2()         Mode3() PD

+GPIO4 =  Mode0(GPIO4)  Mode1(DSP_CLK)   Mode2(DSPLCK)   Mode3(TRASD4) PD

+GPIO5 =  Mode0(GPIO5)  Mode1(AHB_CLK)   Mode2(DSPLD3)   Mode3(TRASD3) PD

+GPIO6 =  Mode0(GPIO6)  Mode1(ARM_CLK)   Mode2(DSPLD2)   Mode3(TRASD2) PD

+GPIO7 =  Mode0(GPIO7)  Mode1(SLOW_CK)   Mode2(DSPLD1)   Mode3(TRASD1) PD

+GPIO8 =  Mode0(GPIO8)  Mode1(SCL)       Mode2(DSPLD0)   Mode3(TRASD0) PD

+GPIO9 =  Mode0(GPIO9)  Mode1(SDA)       Mode2(DSPLSYNC) Mode3(TRARSYNC) PD

+GPIO10 = Mode0(GPIO10) Mode1(BPI_BUS6)  Mode2()         Mode3() PD

+

+GPIO11 = Mode0(GPIO11) Mode1(BPI_BUS7) Mode2()          Mode3() PD

+GPIO12 = Mode0(GPIO12) Mode1(BPI_BUS8) Mode2(13MHz)     Mode3(32KHz) PD

+GPIO13 = Mode0(GPIO13) Mode1(BPI_BUS9) Mode2(BSI_CS1)   Mode3() PD

+GPIO14 = Mode0(GPIO14) Mode1(MCINS)    Mode2()          Mode3() PU

+GPIO15 = Mode0(GPIO15) Mode1(MCWP)     Mode2()          Mode3() PU

+GPIO16 = Mode0(GPIO16) Mode1(LSCK)     Mode2(TDMA_CK)   Mode3(TBTXEN) PD

+GPIO17 = Mode0(GPIO17) Mode1(LSA0)     Mode2(TDMA_D1)   Mode3(TDTIRQ) PD

+GPIO18 = Mode0(GPIO18) Mode1(LSDA)     Mode2(TDMA_D0)   Mode3(TCTIRQ2) PD

+GPIO19 = Mode0(GPIO19) Mode1(LSCE0#)   Mode2(TDMA_FS)   Mode3(TCTIRQ1) PU

+GPIO20 = Mode0(GPIO20) Mode1(LSCE1#)   Mode2(LPCE2#)    Mode3(TEVTVAL) PU

+

+GPIO21 = Mode0(GPIO21) Mode1(PWM1)     Mode2(DSP_GPO0) Mode3(TBTXFS) PD

+GPIO22 = Mode0(GPIO22) Mode1(PWM2)     Mode2(DSP_GPO1) Mode3(TBRXEN) PD

+GPIO23 = Mode0(GPIO23) Mode1(ALERTER)  Mode2(DSP_GPO2) Mode3(BTRXFS) PD

+GPIO24 = Mode0(GPIO24) Mode1(LPCE1#)   Mode2(DSP_TID0) Mode3(MCU_TID0) PU

+GPIO25 = Mode0(GPIO25) Mode1(NRNB)     Mode2(DSP_TID1) Mode3(MCU_TID1) PU

+GPIO26 = Mode0(GPIO26) Mode1(NCLE)     Mode2(DSP_TID2) Mode3(MCU_TID2) PD

+GPIO27 = Mode0(GPIO27) Mode1(NALE)     Mode2(DSP_TID3) Mode3(MCU_TID3) PD

+GPIO28 = Mode0(GPIO28) Mode1(NWE#)     Mode2(DSP_TID4) Mode3(MCU_DID) PU

+GPIO29 = Mode0(GPIO29) Mode1(NRE#)     Mode2(DSP_TID5) Mode3(MCU_DFS) PU

+GPIO30 = Mode0(GPIO30) Mode1(NCE#)       Mode2(DSP_TID6) Mode3(MCU_DCK) PU

+

+GPIO31 = Mode0(GPIO31) Mode1(SRCLKENAI)  Mode2()     Mode3()  PD

+GPIO32 = Mode0(GPIO32) Mode1(SIMSEL)    Mode2()        Mode3() PD

+GPIO33 = Mode0(GPIO33) Mode1(URXD3)     Mode2()        Mode3() PU

+GPIO34 = Mode0(GPIO34) Mode1(UTXD3)     Mode2()        Mode3() PU

+GPIO35 = Mode0(GPIO35) Mode1(URXD2)     Mode2(UCTS3)   Mode3() PU

+GPIO36 = Mode0(GPIO36) Mode1(UTXD2)     Mode2(URTS3)   Mode3() PU

+GPIO37 = Mode0(GPIO37) Mode1(IRDA_RXD)  Mode2(UCTS2)   Mode3() PU

+GPIO38 = Mode0(GPIO38) Mode1(IRDA_TXD)  Mode2(URTS2)   Mode3() PU

+GPIO39 = Mode0(GPIO39) Mode1(IRDA_PDN)  Mode2()        Mode3() PU

+GPIO40 = Mode0(GPIO40) Mode1(ECS7#)     Mode2()        Mode3() PU

+

+GPIO41 = Mode0(GPIO41) Mode1(MIRQ)      Mode2(13MHz)   Mode3(32KHz) PU

+GPIO42 = Mode0(GPIO42) Mode1(MFIQ)      Mode2()        Mode3() PU

+GPIO43 = Mode0(GPIO43) Mode1(DAICLK)    Mode2(DSPLD7)  Mode3(TRACLK) PU

+GPIO44 = Mode0(GPIO44) Mode1(DAIPCMOUT) Mode2(DSPLD6)  Mode3(TRASYNC) PD

+GPIO45 = Mode0(GPIO45) Mode1(DAIPCMIN)  Mode2(DSPLD5)  Mode3(TRASD7) PU

+GPIO46 = Mode0(GPIO46) Mode1(DAISYNC)   Mode2(BFEPRBO) Mode3(TRASD5) PU

+GPIO47 = Mode0(GPIO47) Mode1(DAIRST)    Mode2(DSPLD4)  Mode3(TRASD6) PU

+GPIO48 = Mode0(GPIO48) Mode1(CMRST)     Mode2()        Mode3() Z

+GPIO49 = Mode0(GPIO49) Mode1(CMPDN)     Mode2()        Mode3() Z

+GPIO50 = Mode0(GPIO50) Mode1(CMDAT1)    Mode2()        Mode3() PD

+

+GPIO51 = Mode0(GPIO51) Mode1(CMDAT0)    Mode2()        Mode3() PD

+GPIO52 = Mode0(GPIO52) Mode1(ECS6#)     Mode2()        Mode3() PU

+GPIO53 = Mode0(GPIO53) Mode1(ECS5#)     Mode2()        Mode3() PU

+GPIO54 = Mode0(GPIO54) Mode1(ECS4#)     Mode2()        Mode3() PU

+

+

+[GPO]

+GPO0 = Mode0(GPO0) Mode1(SRCLKENA)  Mode2()      Mode3()

+GPO1 = Mode0(GPO1) Mode1(SRCLKENAN) Mode2()      Mode3()

+GPO2 = Mode0(GPO2) Mode1(EPDN#)     Mode2()      Mode3()

+GPO3 = Mode0(GPO3) Mode1(EA24)      Mode2()      Mode3()

+GPO4 = Mode0(GPO4) Mode1(EA25)      Mode2(13MHz) Mode3(32KHz)

+

+[EINT]

+EINT_COUNT = 8

+EINT_DEBOUNCE_TIME_COUNT = 4

+

+[ADC]

+ADC_COUNT = 7

+

+[Keypad]

+KEY_ROW = 6

+KEY_COLUMN = 7

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6223.fig b/mcu/custom/driver/drv/Drv_Tool/MT6223.fig
new file mode 100644
index 0000000..7ec94f3
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6223.fig
@@ -0,0 +1,76 @@
+[Chip Type]

+Chip = MT6223

+

+[GPIO]

+GPIO0 =  Mode0(GPIO0)  Mode1(LCD_D8)   Mode2()   Mode3() PD

+GPIO1 =  Mode0(GPIO1)  Mode1(LCD_D7)   Mode2()   Mode3() PD

+GPIO2 =  Mode0(GPIO2)  Mode1(LCD_D6)   Mode2()   Mode3() PD

+GPIO3 =  Mode0(GPIO3)  Mode1(LCD_D5)   Mode2()   Mode3() PD

+GPIO4 =  Mode0(GPIO4)  Mode1(LCD_D4)   Mode2()   Mode3() PD

+GPIO5 =  Mode0(GPIO5)  Mode1(LCD_D3)   Mode2()   Mode3() PD

+GPIO6 =  Mode0(GPIO6)  Mode1(LCD_D2)   Mode2()   Mode3() PD

+GPIO7 =  Mode0(GPIO7)  Mode1(LCD_D1)   Mode2()   Mode3() PD

+GPIO8 =  Mode0(GPIO8)  Mode1(LCD_RSTB) Mode2()   Mode3() PU

+GPIO9 =  Mode0(GPIO9)  Mode1(LCD_WR_B) Mode2()   Mode3() PU

+GPIO10 = Mode0(GPIO10) Mode1(LCD_RD_B) Mode2(LCD_SCLK) Mode3() PU

+

+GPIO11 = Mode0(GPIO11) Mode1(LCD_D0)      Mode2(LCD_SDA)    Mode3() PD

+GPIO12 = Mode0(GPIO12) Mode1(LCD_A0)      Mode2(LCD_SA0)		Mode3() PU

+GPIO13 = Mode0(GPIO13) Mode1(LCD_CS0_B)   Mode2(LCD_SCE0_B)	Mode3() PU

+GPIO14 = Mode0(GPIO14) Mode1(LCD_CS1_B)   Mode2(LCD_SCE1_B) Mode3(EINT7) PU

+GPIO15 = Mode0(GPIO15) Mode1(DAICLK)      Mode2(EDICK)      Mode3() PU

+GPIO16 = Mode0(GPIO16) Mode1(DAIPCMOUT)   Mode2(EDIDAT)	   Mode3() PD

+GPIO17 = Mode0(GPIO17) Mode1(DAIPCMIN)    Mode2()           Mode3() PU

+GPIO18 = Mode0(GPIO18) Mode1(DAIRST)      Mode2()           Mode3() PU

+GPIO19 = Mode0(GPIO19) Mode1(DAISYNC)     Mode2(EDIWS)      Mode3() PU

+GPIO20 = Mode0(GPIO20) Mode1(BPI_BUS6)    Mode2(XADMUX)     Mode3() Z

+

+GPIO21 = Mode0(GPIO21) Mode1(BPI_BUS7)    Mode2(BSI_RFIN)   Mode3(clk_out0) PD

+GPIO22 = Mode0(GPIO22) Mode1(BPI_BUS8)    Mode2(KCOL5)      Mode3(clk_out1) PU

+GPIO23 = Mode0(GPIO23) Mode1(BPI_BUS9)    Mode2(BSI_CS1)    Mode3(clk_out2) PD

+GPIO24 = Mode0(GPIO24) Mode1(ALERTER)     Mode2()           Mode3() PD

+GPIO25 = Mode0(GPIO25) Mode1(PWM)         Mode2()           Mode3() PD

+GPIO26 = Mode0(GPIO26) Mode1(JTRST_B)     Mode2(EINT4)      Mode3() PD

+GPIO27 = Mode0(GPIO27) Mode1(JTDI)        Mode2(EINT5)      Mode3() PU

+GPIO28 = Mode0(GPIO28) Mode1(JTMS)        Mode2(EINT6)      Mode3() PU

+GPIO29 = Mode0(GPIO29) Mode1(WATCHDOG)    Mode2()           Mode3() PD

+GPIO30 = Mode0(GPIO30) Mode1(EA0)         Mode2(EA25)       Mode3() PD

+

+GPIO31 = Mode0(GPIO31) Mode1(SRCLKENAI)   Mode2(PWR_KEY)  Mode3() PD

+GPIO32 = Mode0(GPIO32) Mode1(KCOL4)       Mode2()  Mode3() PU

+GPIO33 = Mode0(GPIO33) Mode1(KCOL3)       Mode2()  Mode3() PU

+GPIO34 = Mode0(GPIO34) Mode1(KCOL2)       Mode2()  Mode3() PU

+GPIO35 = Mode0(GPIO35) Mode1(KCOL1)       Mode2()  Mode3() PU

+GPIO36 = Mode0(GPIO36) Mode1(KCOL0)       Mode2()  Mode3() PU

+GPIO37 = Mode0(GPIO37) Mode1(KROW4)       Mode2()  Mode3() Z

+GPIO38 = Mode0(GPIO38) Mode1(KROW3)       Mode2()  Mode3() Z

+GPIO39 = Mode0(GPIO39) Mode1(KROW2)       Mode2()  Mode3() Z

+GPIO40 = Mode0(GPIO40) Mode1(KROW1)       Mode2()  Mode3() Z

+

+GPIO41 = Mode0(GPIO41) Mode1(KROW0)    Mode2()           Mode3() Z

+GPIO42 = Mode0(GPIO42) Mode1(EINT2)    Mode2(MIRQ)       Mode3() PU

+GPIO43 = Mode0(GPIO43) Mode1(EINT3)    Mode2()           Mode3() PU

+GPIO44 = Mode0(UTXD1)  Mode1(GPIO44)   Mode2()           Mode3() PU

+GPIO45 = Mode0(GPIO45) Mode1(UCTS1_B)  Mode2()           Mode3(SCL) PU

+GPIO46 = Mode0(GPIO46) Mode1(URTS1_B)  Mode2()           Mode3(SDA) PU

+GPIO47 = Mode0(GPIO47) Mode1(UTXD3)    Mode2(UCTS2_B)    Mode3(clk_out3) PU

+GPIO48 = Mode0(GPIO48) Mode1(URXD3)    Mode2(URTS2_B)    Mode3(clk_out4) PU

+GPIO49 = Mode0(GPIO49) Mode1(URXD2)    Mode2(clk_out5)   Mode3() PU

+GPIO50 = Mode0(URXD1)  Mode1(GPIO50)   Mode2()           Mode3() PU

+

+GPIO51 = Mode0(GPIO51) Mode1(UTXD2)    Mode2()           Mode3(VIBRATOREN) PU

+GPIO52 = Mode0(GPIO52) Mode1(MFIQ)     Mode2(ECS3_B)       Mode3() PU

+

+

+[GPO]

+

+[EINT]

+EINT_COUNT = 8

+EINT_DEBOUNCE_TIME_COUNT = 4

+

+[ADC]

+ADC_COUNT = 7

+

+[Keypad]

+KEY_ROW = 5

+KEY_COLUMN = 7

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6225.fig b/mcu/custom/driver/drv/Drv_Tool/MT6225.fig
new file mode 100644
index 0000000..a7df3a8
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6225.fig
@@ -0,0 +1,77 @@
+[Chip Type]

+Chip = MT6225

+

+

+[GPIO]

+GPIO0 = MODE0(GPIO0)        MODE1()             MODE2()              MODE3(EINT4)         PU

+GPIO1 = MODE0(GPIO1)        MODE1()             MODE2()              MODE3(EINT5)         PU

+GPIO2 = MODE0(GPIO2)        MODE1()             MODE2(UCTS1)         MODE3(EINT6)         PU

+GPIO3 = MODE0(GPIO3)        MODE1(BSI_RFIN)     MODE2(URTS1)         MODE3(EINT7)         PU

+GPIO4 = MODE0(GPIO4)        MODE1(DAIRST)       MODE2(IRDA_PDN)      MODE3(DSP_CLK)       PU

+GPIO5 = MODE0(GPIO5)        MODE1(EDICK)        MODE2(26MHZ)         MODE3(AHB_CLK)       PD

+GPIO6 = MODE0(GPIO6)        MODE1(EDIWS)        MODE2(32KHZ)         MODE3(ARM_CLK)       PD

+GPIO7 = MODE0(GPIO7)        MODE1(EDIDAT)       MODE2()              MODE3(SLOW_CLK)      PD

+GPIO8 = MODE0(GPIO8)        MODE1(SCL)          MODE2()              MODE3()              PU

+GPIO9 = MODE0(GPIO9)        MODE1(SDA)          MODE2()              MODE3()              PU

+GPIO10= MODE0(GPIO10)       MODE1(CMRST)        MODE2(DRF_DATA)      MODE3()              PD

+GPIO11= MODE0(GPIO11)       MODE1(CMPDN)        MODE2(DRF_EN)        MODE3()              PD

+GPIO12= MODE0(GPIO12)       MODE1(CMVREF)       MODE2(MIRQ)          MODE3()              PD/PU

+GPIO13= MODE0(GPIO13)       MODE1(CMHREF)       MODE2(MFIQ)          MODE3()              PD/PU

+GPIO14= MODE0(GPIO14)       MODE1(CMMCLK)       MODE2(26MHZ)         MODE3(6.5MHZ)        PD

+GPIO15= MODE0(GPIO15)       MODE1(CMDAT7)       MODE2(MCDA7)         MODE3()              PD

+GPIO16= MODE0(GPIO16)       MODE1(CMDAT6)       MODE2(MCDA6)         MODE3(DICK)          PD

+GPIO17= MODE0(GPIO17)       MODE1(CMDAT5)       MODE2(MCDA5)         MODE3(DID)           PD

+GPIO18= MODE0(GPIO18)       MODE1(CMDAT4)       MODE2(MCDA4)         MODE3(DIMS)          PD

+GPIO19= MODE0(GPIO19)       MODE1(CMDAT3)       MODE2(DSP_GPO3)      MODE3(TBTXEN)        PD

+GPIO20= MODE0(GPIO20)       MODE1(CMDAT2)       MODE2(DSP_GPO2)      MODE3(TBTXFS)        PD

+GPIO21= MODE0(GPIO21)       MODE1(CMDAT1)       MODE2(DSP_GPO1)      MODE3(TBRXEN)        PD

+GPIO22= MODE0(GPIO22)       MODE1(CMDAT0)       MODE2(DSP_GPO0)      MODE3(TBRXFS)        PD

+GPIO23= MODE0()	            MODE1()             MODE2()              MODE3()              PD/PU

+GPIO24= MODE0()             MODE1()             MODE2()              MODE3()              PD/PU

+GPIO25= MODE0(GPIO25)       MODE1(BPI_BUS6)     MODE2(PWM1)          MODE3(13MHZ)         PD

+GPIO26= MODE0(GPIO26)       MODE1(BPI_BUS7)     MODE2(PWM2)          MODE3(32KHZ)         PD

+GPIO27= MODE0(GPIO27)       MODE1(BPI_BUS8)     MODE2(ALERTER)       MODE3(26MHZ)         PD

+GPIO28= MODE0(GPIO28)       MODE1(BPI_BUS9)     MODE2(BSI_CS1)       MODE3()              PD

+GPIO29= MODE0(GPIO29)       MODE1(LSCK)         MODE2(TDMA_CK)       MODE3(DSP_TID0)      PU

+GPIO30= MODE0(GPIO30)       MODE1(LSA0)         MODE2(TDMA_D1)       MODE3(TDTIRQ)        PU

+GPIO31= MODE0(GPIO31)       MODE1(LSDA)         MODE2(TDMA_D0)       MODE3(TCTIRQ2)       PU

+GPIO32= MODE0(GPIO32)       MODE1(LSCE0B)       MODE2(TDMA_FS)       MODE3(TCTIRQ1)       PU

+GPIO33= MODE0(GPIO33)       MODE1(LSCE1B)       MODE2(LPCE2B)        MODE3(TEVTVAL)       PU

+GPIO34= MODE0(GPIO34)       MODE1(LPCE1B)       MODE2(NCE1B)         MODE3()              PU

+GPIO35= MODE0(GPIO35)       MODE1(NLD17)        MODE2(KCOL5)         MODE3(VPP65)         PD

+GPIO36= MODE0(GPIO36)       MODE1(NLD16)        MODE2(KCOL6)         MODE3()              PD

+GPIO37= MODE0(GPIO37)       MODE1(NRNB)         MODE2(DSP_TID1)      MODE3()              PU

+GPIO38= MODE0(GPIO38)       MODE1(NCLE)         MODE2(DSP_TID2)      MODE3()              PD

+GPIO39= MODE0(GPIO39)       MODE1(NALE)         MODE2(DSP_TID3)      MODE3()              PD

+GPIO40= MODE0(GPIO40)       MODE1(NWEB)         MODE2(DSP_TID4)      MODE3()              PU

+GPIO41= MODE0(GPIO41)       MODE1(NREB)         MODE2(DSP_TID5)      MODE3()              PU

+GPIO42= MODE0(GPIO42)       MODE1(NCEB0)        MODE2(DSP_TID6)      MODE3()              PU

+GPIO43= MODE0(GPIO43)       MODE1(SRCLKENAI)    MODE2()              MODE3()              PD

+GPIO44= MODE0(GPIO44)       MODE1(MCWP)         MODE2()              MODE3()              PU

+GPIO45= MODE0(GPIO45)       MODE1(MCINS)        MODE2()              MODE3()              PU

+GPIO46= MODE0(GPIO46)       MODE1(SIMSEL)       MODE2()              MODE3()              PD

+GPIO47= MODE0(GPIO47)       MODE1(URXD2)        MODE2(UCTS3)         MODE3(IRDA_RXD)      PU

+GPIO48= MODE0(GPIO48)       MODE1(UTXD2)        MODE2(URTS3)         MODE3(IRDA_TXD)      PU

+GPIO49= MODE0(GPIO49)       MODE1(URXD3)        MODE2(UCTS2)         MODE3()              PU

+GPIO50= MODE0(GPIO50)       MODE1(UTXD3)        MODE2(URTS2)         MODE3()              PU

+GPIO51= MODE0(GPIO51)       MODE1(DAICLK)       MODE2()              MODE3()              PU

+GPIO52= MODE0(GPIO52)       MODE1(DAIPCMOUT)    MODE2()              MODE3()              PD

+GPIO53= MODE0(GPIO53)       MODE1(DAIPCMIN)     MODE2()              MODE3()              PU

+GPIO54= MODE0(GPIO54)       MODE1(DAISYNC)      MODE2()              MODE3()              PU

+

+[GPO]

+GPO0  = MODE0(GPO0)               MODE1(SRCLKENA)           MODE2()                   MODE3()                   

+GPO1  = MODE0(GPO1)               MODE1(EA24)               MODE2(26MHZ)              MODE3(32KHZ)              

+GPO2  = MODE0(GPO2)               MODE1(EA25)               MODE2(32KHZ)              MODE3(26MHZ)              

+GPO3  = MODE0(GPO3)               MODE1(EPDN_B)             MODE2(6.5MHZ)             MODE3(26MHZ)              

+

+[EINT]

+EINT_COUNT=8

+EINT_DEBOUNE_TIME_COUNT=4

+

+[ADC]

+ADC_COUNT=7

+

+[KEYPAD]

+KEY_ROW=6

+KEY_COLUMN=7

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6227.fig b/mcu/custom/driver/drv/Drv_Tool/MT6227.fig
new file mode 100644
index 0000000..0f03088
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6227.fig
@@ -0,0 +1,85 @@
+[Chip Type]

+Chip = MT6227

+

+[GPIO]

+GPIO0 =  Mode0(GPIO0)  Mode1(DICL)          Mode2(DSP_GPO3) Mode3() PD

+GPIO1 =  Mode0(GPIO1)  Mode1(BSI_RFIN)      Mode2()         Mode3() PD

+GPIO2 =  Mode0(GPIO2)  Mode1(DID)       Mode2()         Mode3() PD

+GPIO3 =  Mode0(GPIO3)  Mode1(DIMS)      Mode2()         Mode3() PD

+GPIO4 =  Mode0(GPIO4)  Mode1(DSP_CLK)   Mode2(DSPLCK)   Mode3(EDICK) PD

+GPIO5 =  Mode0(GPIO5)  Mode1(AHB_CLK)   Mode2(DSPLD3)   Mode3(EDIWS) PD

+GPIO6 =  Mode0(GPIO6)  Mode1(ARM_CLK)   Mode2(DSPLD2)   Mode3(CMFLASH) PD

+GPIO7 =  Mode0(GPIO7)  Mode1(SLOW_CK)   Mode2(DSPLD1)   Mode3(EDIDAT) PD

+GPIO8 =  Mode0(GPIO8)  Mode1(SCL)       Mode2(DSPLD0)   Mode3() PD

+GPIO9 =  Mode0(GPIO9)  Mode1(SDA)       Mode2(DSPLSYNC) Mode3() PD

+GPIO10 = Mode0(GPIO10) Mode1(BPI_BUS6)  Mode2()         Mode3() PD

+

+GPIO11 = Mode0(GPIO11) Mode1(BPI_BUS7) Mode2(65MHz)     Mode3(26MHz) PD

+GPIO12 = Mode0(GPIO12) Mode1(BPI_BUS8) Mode2(13MHz)     Mode3(32KHz) PD

+GPIO13 = Mode0(GPIO13) Mode1(BPI_BUS9) Mode2(BSI_CS1)   Mode3() PD

+GPIO14 = Mode0(GPIO14) Mode1(MCINS)    Mode2()          Mode3() PU

+GPIO15 = Mode0(GPIO15) Mode1(MCWP)     Mode2()          Mode3() PU

+GPIO16 = Mode0(GPIO16) Mode1(LSCK)     Mode2(TDMA_CK)   Mode3(TBTXEN) PU

+GPIO17 = Mode0(GPIO17) Mode1(LSA0)     Mode2(TDMA_D1)   Mode3(TDTIRQ) PU

+GPIO18 = Mode0(GPIO18) Mode1(LSDA)     Mode2(TDMA_D0)   Mode3(TCTIRQ2) PU

+GPIO19 = Mode0(GPIO19) Mode1(LSCE0#)   Mode2(TDMA_FS)   Mode3(TCTIRQ1) PU

+GPIO20 = Mode0(GPIO20) Mode1(LSCE1#)   Mode2(LPCE2#)    Mode3(TEVTVAL) PU

+

+GPIO21 = Mode0(GPIO21) Mode1(PWM1)     Mode2(DSP_GPO0) Mode3(TBTXFS) PD

+GPIO22 = Mode0(GPIO22) Mode1(PWM2)     Mode2(DSP_GPO1) Mode3(TBRXEN) PD

+GPIO23 = Mode0(GPIO23) Mode1(ALERTER)  Mode2(DSP_GPO2) Mode3(BTRXFS) PD

+GPIO24 = Mode0(GPIO24) Mode1(LPCE1#)   Mode2(NCE1#)    Mode3(MCU_TID0) PU

+GPIO25 = Mode0(GPIO25) Mode1(NRNB)     Mode2(DSP_TID1) Mode3(MCU_TID1) PU

+GPIO26 = Mode0(GPIO26) Mode1(NCLE)     Mode2(DSP_TID2) Mode3(MCU_TID2) PD

+GPIO27 = Mode0(GPIO27) Mode1(NALE)     Mode2(DSP_TID3) Mode3(MCU_TID3) PD

+GPIO28 = Mode0(GPIO28) Mode1(NWE#)     Mode2(DSP_TID4) Mode3(MCU_DID) PU

+GPIO29 = Mode0(GPIO29) Mode1(NRE#)     Mode2(DSP_TID5) Mode3(MCU_DFS) PU

+GPIO30 = Mode0(GPIO30) Mode1(NCE#)     Mode2(DSP_TID6) Mode3(MCU_DCK) PU

+

+GPIO31 = Mode0(GPIO31) Mode1(SRCLKENAI) Mode2()        Mode3()  PD

+GPIO32 = Mode0(GPIO32) Mode1(SIMSEL)    Mode2()        Mode3() PD

+GPIO33 = Mode0(GPIO33) Mode1(URXD3)     Mode2(EINT7)   Mode3() PU

+GPIO34 = Mode0(GPIO34) Mode1(UTXD3)     Mode2(EINT5)   Mode3() PU

+GPIO35 = Mode0(GPIO35) Mode1(URXD2)     Mode2(UCTS3)   Mode3(EINT6) PU

+GPIO36 = Mode0(GPIO36) Mode1(UTXD2)     Mode2(URTS3)   Mode3(EINT4) PU

+GPIO37 = Mode0(GPIO37) Mode1(IRDA_RXD)  Mode2(UCTS2)   Mode3() PU

+GPIO38 = Mode0(GPIO38) Mode1(IRDA_TXD)  Mode2(URTS2)   Mode3() PU

+GPIO39 = Mode0(GPIO39) Mode1(IRDA_PDN)  Mode2()        Mode3() PU

+GPIO40 = Mode0(GPIO40) Mode1(ECS7#)     Mode2()        Mode3() PU

+

+GPIO41 = Mode0(GPIO41) Mode1(MIRQ)      Mode2(13MHz)   Mode3(32KHz) PU

+GPIO42 = Mode0(GPIO42) Mode1(MFIQ)      Mode2()        Mode3() PU

+GPIO43 = Mode0(GPIO43) Mode1(DAICLK)    Mode2(DSPLD7)  Mode3() PU

+GPIO44 = Mode0(GPIO44) Mode1(DAIPCMOUT) Mode2(DSPLD6)  Mode3() PD

+GPIO45 = Mode0(GPIO45) Mode1(DAIPCMIN)  Mode2(DSPLD5)  Mode3() PU

+GPIO46 = Mode0(GPIO46) Mode1(DAISYNC)   Mode2(BFEPRBO) Mode3() PU

+GPIO47 = Mode0(GPIO47) Mode1(DAIRST)    Mode2(DSPLD4)  Mode3() PU

+GPIO48 = Mode0(GPIO48) Mode1(CMRST)     Mode2()        Mode3() PD

+GPIO49 = Mode0(GPIO49) Mode1(CMPDN)     Mode2()        Mode3() PD

+GPIO50 = Mode0(GPIO50) Mode1(CMDAT1)    Mode2(MCDA5)   Mode3() PD

+

+GPIO51 = Mode0(GPIO51) Mode1(CMDAT0)    Mode2(MCDA4)   Mode3() PD

+GPIO52 = Mode0(GPIO52) Mode1(ECS6#)     Mode2()        Mode3() PU

+GPIO53 = Mode0(GPIO53) Mode1(ECS5#)     Mode2()        Mode3() PU

+GPIO54 = Mode0(GPIO54) Mode1(ECS4#)     Mode2()        Mode3() PU

+GPIO55 = Mode0(GPIO55) Mode1(NLD16)     Mode2(MCDA6)   Mode3() PD

+GPIO56 = Mode0(GPIO56) Mode1(NLD17)     Mode2(MCDA7)   Mode3(DSP_TID0) PD

+

+

+[GPO]

+GPO0 = Mode0(GPO0) Mode1(SRCLKENA)  Mode2()      Mode3()

+GPO1 = Mode0(GPO1) Mode1(SRCLKENAN) Mode2()      Mode3()

+GPO2 = Mode0(GPO2) Mode1(EPDN#)     Mode2(6.5MHz)      Mode3(26MHz)

+GPO3 = Mode0(GPO3) Mode1(EA24)      Mode2()      Mode3()

+GPO4 = Mode0(GPO4) Mode1(EA25)      Mode2(13MHz) Mode3(32KHz)

+

+[EINT]

+EINT_COUNT = 8

+EINT_DEBOUNCE_TIME_COUNT = 4

+

+[ADC]

+ADC_COUNT = 7

+

+[Keypad]

+KEY_ROW = 6

+KEY_COLUMN = 7

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6228.fig b/mcu/custom/driver/drv/Drv_Tool/MT6228.fig
new file mode 100644
index 0000000..39861cf
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6228.fig
@@ -0,0 +1,95 @@
+[Chip Type]

+Chip = MT6228

+

+[GPIO]

+GPIO0 = Mode0(GPIO0)    Mode1(CMFLASH)    Mode2()        Mode3(DSP_TID5) PD

+GPIO1 = Mode0(GPIO1)    Mode1(BSI_RFIN)   Mode2()        Mode3() PD

+GPIO2 = Mode0(GPIO2)    Mode1(SCL)        Mode2()        Mode3() PU

+GPIO3 = Mode0(GPIO3)    Mode1(SDA)        Mode2()        Mode3() PU

+GPIO4 = Mode0(GPIO4)    Mode1(EDICK)      Mode2(URXD2)   Mode3(SWDBGD7) Z

+GPIO5 = Mode0(GPIO5)    Mode1(EDIWS)      Mode2(UTXD2)   Mode3(SWDBGD6) Z

+GPIO6 = Mode0(GPIO6)    Mode1(EDIDAT)     Mode2()        Mode3(SWDBGD5) Z

+GPIO7 = Mode0(GPIO7)    Mode1()           Mode2(USBVBUSON)  Mode3(SWDBGD4) Z

+GPIO8 = Mode0(GPIO8)    Mode1(32kHz)      Mode2(USBVBUSCHG) Mode3(SWDBGF) Z

+GPIO9 = Mode0(GPIO9)    Mode1(26MHz)      Mode2(13MHz)   Mode3(SWDBGE) Z

+GPIO10 = Mode0(GPIO10)  Mode1(NLD16)      Mode2(MCDA5)   Mode3(DID) PD

+GPIO11 = Mode0(GPIO11)  Mode1(NLD17)      Mode2(MCDA4)   Mode3(DSP_TID1) PD

+GPIO12 = Mode0(GPIO12)  Mode1(CMRST)      Mode2()        Mode3() PD

+GPIO13 = Mode0(GPIO13)  Mode1(CMPDN)      Mode2()        Mode3() PD

+GPIO14 = Mode0(GPIO14)  Mode1(CMDAT1)     Mode2(MCDA6)   Mode3() PD

+GPIO15 = Mode0(GPIO15)  Mode1(CMDAT0)     Mode2(MCDA7)   Mode3() PD

+GPIO16 = Mode0(GPIO16)  Mode1(BPI_BUS6)   Mode2()        Mode3() PD

+GPIO17 = Mode0(GPIO17)  Mode1(BPI_BUS7)   Mode2(13MHz)   Mode3(26MHz) PD

+GPIO18 = Mode0(GPIO18)  Mode1(BPI_BUS8)   Mode2(6.5MHz)  Mode3(32KHz) PD

+GPIO19 = Mode0(GPIO19)  Mode1(BPI_BUS9)   Mode2(BSI_CS1) Mode3(BFEPRBO) PD

+GPIO20 = Mode0(GPIO20)  Mode1(LSCK)       Mode2(TDMA_CK) Mode3(TBTXEN) PU

+GPIO21 = Mode0(GPIO21)  Mode1(LSA0)       Mode2(TDMA_D1) Mode3(TDTIRQ) PU

+GPIO22 = Mode0(GPIO22)  Mode1(LSDA)       Mode2(TDMA_D0) Mode3(TCTIRQ2) PU

+GPIO23 = Mode0(GPIO23)  Mode1(LSCE0#)     Mode2(TDMA_FS) Mode3(TCTIRQ1) PU

+GPIO24 = Mode0(GPIO24)  Mode1(LSCE1#)     Mode2(LPCE2#)  Mode3(TEVTVAL) PU

+GPIO25 = Mode0(GPIO25)  Mode1(LPCE1#)     Mode2(NCE1#)   Mode3(DSP_TID0) PU

+GPIO26 = Mode0(NRNB)    Mode1(GPIO26)     Mode2(USBSESSVLD) Mode3(SWDBGD2) PU

+GPIO27 = Mode0(NCLE)    Mode1(GPIO27)     Mode2(USBVBUSVLD) Mode3(SWDBGD1) PD

+GPIO28 = Mode0(NALE)    Mode1(GPIO28)     Mode2(USBSESSEND) Mode3(SWDBGD0) PD

+GPIO29 = Mode0(NWE#)    Mode1(GPIO29)     Mode2()        Mode3() PU

+GPIO30 = Mode0(NRE#)    Mode1(GPIO30)     Mode2(USBVBUSDSC) Mode3(SWDBGCK) PU

+GPIO31 = Mode0(NCE#)    Mode1(GPIO31)     Mode2()        Mode3() PU

+GPIO32 = Mode0(GPIO32)  Mode1(PWM1)       Mode2(TBTXFS)  Mode3(DSP_TID2) PD

+GPIO33 = Mode0(GPIO33)  Mode1(PWM2)       Mode2(TBRXEN)  Mode3(DSP_TID3) PD

+GPIO34 = Mode0(GPIO34)  Mode1(ALERTER)    Mode2(TBRXFS)  Mode3(DSP_TID4) PD

+GPIO35 = Mode0(GPIO35)  Mode1(SRCLKENAI)  Mode2()        Mode3() PD

+GPIO36 = Mode0(GPIO36)  Mode1(MIRQ)       Mode2(6.5MHz)  Mode3(32KHz) PU

+GPIO37 = Mode0(GPIO37)  Mode1(URXD2)      Mode2(UCTS3)   Mode3() PU

+GPIO38 = Mode0(GPIO38)  Mode1(UTXD2)      Mode2(URTS3)   Mode3() PU

+GPIO39 = Mode0(GPIO39)  Mode1(URXD3)      Mode2()        Mode3() PU

+GPIO40 = Mode0(GPIO40)  Mode1(UTXD3)      Mode2()        Mode3(DSP_TID6) PU

+GPIO41 = Mode0(GPIO41)  Mode1(IRDA_RXD)   Mode2(UCTS2)   Mode3(SWDBG15) PU

+GPIO42 = Mode0(GPIO42)  Mode1(IRDA_TXD)   Mode2(URTS2)   Mode3(SWDBG14) PU

+GPIO43 = Mode0(GPIO43)  Mode1(IRDA_PDN)   Mode2()        Mode3(SWDBG13) PU

+GPIO44 = Mode0(KROW5)   Mode1(GPIO44)     Mode2(ARM_CK)  Mode3(TV_CK) Z

+GPIO45 = Mode0(KROW4)   Mode1(GPIO45)     Mode2(AHB_CK)  Mode3(AHB_CK) Z

+GPIO46 = Mode0(KROW3)   Mode1(GPIO46)     Mode2(FTV_CK)  Mode3(SLOW_CK) Z

+GPIO47 = Mode0(KROW2)   Mode1(GPIO47)     Mode2(FMCU_CK) Mode3(FUSB_CK) Z

+GPIO48 = Mode0(GPIO48)  Mode1(SIMSEL)     Mode2()        Mode3() PD

+GPIO49 = Mode0(GPIO49)  Mode1(DAICLK)     Mode2()        Mode3(SWDBGD12) PU

+GPIO50 = Mode0(GPIO50)  Mode1(DAIPCMOUT)  Mode2()        Mode3(SWDBGD11) PD

+GPIO51 = Mode0(GPIO51)  Mode1(DAIPCMIN)   Mode2()        Mode3(SWDBGD10) PU

+GPIO52 = Mode0(GPIO52)  Mode1(DAIRST)     Mode2()        Mode3(SWDBG9) PU

+GPIO53 = Mode0(GPIO53)  Mode1(DAISYNC)    Mode2()        Mode3(SWDBG8) PU

+GPIO54 = Mode0(NLD8)    Mode1(GPIO54)     Mode2()        Mode3(SWDBGA1) PD

+GPIO55 = Mode0(NLD9)    Mode1(GPIO55)     Mode2()        Mode3(SWDBGA0) PD

+GPIO56 = Mode0(NLD10)   Mode1(GPIO56)     Mode2()        Mode3(SWDBGROE) PD

+GPIO57 = Mode0(NLD11)   Mode1(GPIO57)     Mode2()        Mode3(SWDBGRD) PD

+GPIO58 = Mode0(NLD12)   Mode1(GPIO58)     Mode2()        Mode3(SWDBGWR) PD

+GPIO59 = Mode0(NLD13)   Mode1(GPIO59)     Mode2()        Mode3(SWDBGPKT) PD

+GPIO60 = Mode0(NLD14)   Mode1(GPIO60)     Mode2()        Mode3(DICK) PD

+GPIO61 = Mode0(NLD15)   Mode1(GPIO61)     Mode2()        Mode3(DMS) PD

+GPIO62 = Mode0(CMDAT2)  Mode1(GPIO62)     Mode2()        Mode3() PD

+GPIO63 = Mode0(GPIO63)  Mode1(MFIQ)       Mode2(USBID)   Mode3(SWDBGD3) PU

+GPIO64 = Mode0(NULL)    Mode1()           Mode2()        Mode3() PD

+GPIO65 = Mode0(NULL)    Mode1()           Mode2()        Mode3() PD

+GPIO66 = Mode0(NULL)    Mode1()           Mode2()        Mode3() PD

+GPIO67 = Mode0(NULL)    Mode1()           Mode2()        Mode3() PD

+GPIO68 = Mode0(CMDAT3)  Mode1(GPIO68)     Mode2()        Mode3() PD

+GPIO69 = Mode0(CMDAT4)  Mode1(GPIO69)     Mode2()        Mode3() PD

+GPIO70 = Mode0(CMDAT5)  Mode1(GPIO70)     Mode2()        Mode3() PD

+GPIO71 = Mode0(CMDAT6)  Mode1(GPIO71)     Mode2()        Mode3() PD

+GPIO72 = Mode0(CMDAT7)  Mode1(GPIO72)     Mode2()        Mode3() PD

+GPIO73 = Mode0(CMDAT8)  Mode1(GPIO73)     Mode2()        Mode3() PD

+GPIO74 = Mode0(CMDAT9)  Mode1(GPIO74)     Mode2()        Mode3() PD

+

+[GPO]

+GPO0 = Mode0(GPO0) Mode1(SRCLKENAN) Mode2() Mode3()

+GPO1 = Mode0(GPO1) Mode1(SRCLKENA)  Mode2() Mode3()

+GPO2 = Mode0(GPO2) Mode1(EPDN#)     Mode2(26MHz) Mode3(13MHz)

+

+[EINT]

+EINT_COUNT = 8

+EINT_DEBOUNCE_TIME_COUNT = 4

+

+[ADC]

+ADC_COUNT = 7

+

+[Keypad]

+KEY_ROW = 6

+KEY_COLUMN = 7

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6229.fig b/mcu/custom/driver/drv/Drv_Tool/MT6229.fig
new file mode 100644
index 0000000..46ea0a2
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6229.fig
@@ -0,0 +1,95 @@
+[Chip Type]

+Chip = MT6229

+

+[GPIO]

+GPIO0 = Mode0(GPIO0)    Mode1(CMFLASH)    Mode2()        Mode3(D2_TID5) PD

+GPIO1 = Mode0(GPIO1)    Mode1(BSI_RFIN)   Mode2()        Mode3() PD

+GPIO2 = Mode0(GPIO2)    Mode1(SCL)        Mode2()        Mode3() PU

+GPIO3 = Mode0(GPIO3)    Mode1(SDA)        Mode2()        Mode3() PU

+GPIO4 = Mode0(GPIO4)    Mode1(EDICK)      Mode2(URXD2)   Mode3(SWDBGD7) Z

+GPIO5 = Mode0(GPIO5)    Mode1(EDIWS)      Mode2(UTXD2)   Mode3(SWDBGD6) Z

+GPIO6 = Mode0(GPIO6)    Mode1(EDIDAT)     Mode2()        Mode3(SWDBGD5) Z

+GPIO7 = Mode0(GPIO7)    Mode1()           Mode2(USBVBUSON)  Mode3(SWDBGD4) Z

+GPIO8 = Mode0(GPIO8)    Mode1(32kHz)      Mode2(USBVBUSCHG) Mode3(SWDBGF) Z

+GPIO9 = Mode0(GPIO9)    Mode1(26MHz)      Mode2(13MHz)   Mode3(SWDBGE) Z

+GPIO10 = Mode0(GPIO10)  Mode1(NLD16)      Mode2(MCDA5)   Mode3(D2ID) PD

+GPIO11 = Mode0(GPIO11)  Mode1(NLD17)      Mode2(MCDA4)   Mode3(D2_TID1) PD

+GPIO12 = Mode0(GPIO12)  Mode1(CMRST)      Mode2()        Mode3(D1_TID0) PD

+GPIO13 = Mode0(GPIO13)  Mode1(CMPDN)      Mode2()        Mode3(D1_TID1) PD

+GPIO14 = Mode0(GPIO14)  Mode1(CMDAT1)     Mode2()        Mode3(D1IMS) Z

+GPIO15 = Mode0(GPIO15)  Mode1(CMDAT0)     Mode2()        Mode3(D1ICK) Z

+GPIO16 = Mode0(GPIO16)  Mode1(BPI_BUS6)   Mode2()        Mode3() PD

+GPIO17 = Mode0(GPIO17)  Mode1(BPI_BUS7)   Mode2(13MHz)   Mode3(26MHz) PD

+GPIO18 = Mode0(GPIO18)  Mode1(BPI_BUS8)   Mode2(6.5MHz)  Mode3(32KHz) PD

+GPIO19 = Mode0(GPIO19)  Mode1(BPI_BUS9)   Mode2(BSI_CS1) Mode3(BFEPRBO) PD

+GPIO20 = Mode0(GPIO20)  Mode1(LSCK)       Mode2(TDMA_CK) Mode3(TBTXEN) PU

+GPIO21 = Mode0(GPIO21)  Mode1(LSA0)       Mode2(TDMA_D1) Mode3(TDTIRQ) PU

+GPIO22 = Mode0(GPIO22)  Mode1(LSDA)       Mode2(TDMA_D0) Mode3(TCTIRQ2) PU

+GPIO23 = Mode0(GPIO23)  Mode1(LSCE0#)     Mode2(TDMA_FS) Mode3(TCTIRQ1) PU

+GPIO24 = Mode0(GPIO24)  Mode1(LSCE1#)     Mode2(LPCE2#)  Mode3(TEVTVAL) PU

+GPIO25 = Mode0(GPIO25)  Mode1(LPCE1#)     Mode2(NCE1#)   Mode3(D2_TID0) PU

+GPIO26 = Mode0(NRNB)    Mode1(GPIO26)     Mode2(USBSESSVLD) Mode3(SWDBGD2) PU

+GPIO27 = Mode0(NCLE)    Mode1(GPIO27)     Mode2(USBVBUSVLD) Mode3(SWDBGD1) PD

+GPIO28 = Mode0(NALE)    Mode1(GPIO28)     Mode2(USBSESSEND) Mode3(SWDBGD0) PD

+GPIO29 = Mode0(NWE#)    Mode1(GPIO29)     Mode2()        Mode3() PU

+GPIO30 = Mode0(NRE#)    Mode1(GPIO30)     Mode2(USBVBUSDSC) Mode3(SWDBGCK) PU

+GPIO31 = Mode0(NCE#)    Mode1(GPIO31)     Mode2()        Mode3() PU

+GPIO32 = Mode0(GPIO32)  Mode1(PWM1)       Mode2(TBTXFS0)  Mode3(DSP_TID2) PD

+GPIO33 = Mode0(GPIO33)  Mode1(PWM2)       Mode2(TBRXEN)  Mode3(DSP_TID3) PD

+GPIO34 = Mode0(GPIO34)  Mode1(ALERTER)    Mode2(TBRXFS)  Mode3(DSP_TID4) PD

+GPIO35 = Mode0(GPIO35)  Mode1(SRCLKENAI)  Mode2()        Mode3() PD

+GPIO36 = Mode0(GPIO36)  Mode1(MIRQ)       Mode2(6.5MHz)  Mode3(32KHz) PU

+GPIO37 = Mode0(GPIO37)  Mode1(URXD2)      Mode2(UCTS3)   Mode3() PU

+GPIO38 = Mode0(GPIO38)  Mode1(UTXD2)      Mode2(URTS3)   Mode3() PU

+GPIO39 = Mode0(GPIO39)  Mode1(URXD3)      Mode2()        Mode3(D1ID) PU

+GPIO40 = Mode0(GPIO40)  Mode1(UTXD3)      Mode2()        Mode3(D2_TID6) PU

+GPIO41 = Mode0(GPIO41)  Mode1(IRDA_RXD)   Mode2(UCTS2)   Mode3(SWDBG15) PU

+GPIO42 = Mode0(GPIO42)  Mode1(IRDA_TXD)   Mode2(URTS2)   Mode3(SWDBG14) PU

+GPIO43 = Mode0(GPIO43)  Mode1(IRDA_PDN)   Mode2()        Mode3(SWDBG13) PU

+GPIO44 = Mode0(KROW5)   Mode1(GPIO44)     Mode2(ARM_CK)  Mode3(TV_CK) Z

+GPIO45 = Mode0(KROW4)   Mode1(GPIO45)     Mode2(AHB_CK)  Mode3(DSP_CK) Z

+GPIO46 = Mode0(KROW3)   Mode1(GPIO46)     Mode2(FTV_CK)  Mode3(SLOW_CK) Z

+GPIO47 = Mode0(KROW2)   Mode1(GPIO47)     Mode2(FMCU_CK) Mode3(FUSB_CK) Z

+GPIO48 = Mode0(GPIO48)  Mode1(SIMSEL)     Mode2()        Mode3() PD

+GPIO49 = Mode0(GPIO49)  Mode1(DAICLK)     Mode2()        Mode3(SWDBGD12) PU

+GPIO50 = Mode0(GPIO50)  Mode1(DAIPCMOUT)  Mode2()        Mode3(SWDBGD11) PD

+GPIO51 = Mode0(GPIO51)  Mode1(DAIPCMIN)   Mode2()        Mode3(SWDBGD10) PU

+GPIO52 = Mode0(GPIO52)  Mode1(DAIRST)     Mode2()        Mode3(SWDBG9) PU

+GPIO53 = Mode0(GPIO53)  Mode1(DAISYNC)    Mode2()        Mode3(SWDBG8) PU

+GPIO54 = Mode0(NLD8)    Mode1(GPIO54)     Mode2(TBTXEN1) Mode3(SWDBGA1) PD

+GPIO55 = Mode0(NLD9)    Mode1(GPIO55)     Mode2(TBTXEN2) Mode3(SWDBGA0) PD

+GPIO56 = Mode0(NLD10)   Mode1(GPIO56)     Mode2(TBTXEN3) Mode3(SWDBGROE) PD

+GPIO57 = Mode0(NLD11)   Mode1(GPIO57)     Mode2(TBTXFS1) Mode3(SWDBGRD) PD

+GPIO58 = Mode0(NLD12)   Mode1(GPIO58)     Mode2(TBTXFS2) Mode3(SWDBGWR) PD

+GPIO59 = Mode0(NLD13)   Mode1(GPIO59)     Mode2(TBTXFS3) Mode3(SWDBGPKT) PD

+GPIO60 = Mode0(NLD14)   Mode1(GPIO60)     Mode2()        Mode3(D2ICK) PD

+GPIO61 = Mode0(NLD15)   Mode1(GPIO61)     Mode2()        Mode3(D2IMS) PD

+GPIO62 = Mode0(CMDAT2)  Mode1(GPIO62)     Mode2()        Mode3() PD

+GPIO63 = Mode0(GPIO63)  Mode1(MFIQ)       Mode2(USBID)   Mode3(SWDBGD3) PU

+GPIO64 = Mode0()    Mode1()           Mode2()        Mode3() Z

+GPIO65 = Mode0()    Mode1()           Mode2()        Mode3() Z

+GPIO66 = Mode0()    Mode1()           Mode2()        Mode3() Z

+GPIO67 = Mode0()    Mode1()           Mode2()        Mode3() Z

+GPIO68 = Mode0(CMDAT3)  Mode1(GPIO68)     Mode2()        Mode3() PD

+GPIO69 = Mode0(CMDAT4)  Mode1(GPIO69)     Mode2()        Mode3() PD

+GPIO70 = Mode0(CMDAT5)  Mode1(GPIO70)     Mode2()        Mode3() PD

+GPIO71 = Mode0(CMDAT6)  Mode1(GPIO71)     Mode2()        Mode3() PD

+GPIO72 = Mode0(CMDAT7)  Mode1(GPIO72)     Mode2()        Mode3() PD

+GPIO73 = Mode0(CMDAT8)  Mode1(GPIO73)     Mode2()        Mode3() PD

+GPIO74 = Mode0(CMDAT9)  Mode1(GPIO74)     Mode2()        Mode3() PD

+

+[GPO]

+GPO0 = Mode0(GPO0) Mode1(SRCLKENA) Mode2() Mode3()

+GPO1 = Mode0(GPO1) Mode1(SRCLKENAN)  Mode2() Mode3()

+GPO2 = Mode0(GPO2) Mode1(EPDN#)     Mode2(26MHz) Mode3(13MHz)

+

+[EINT]

+EINT_COUNT = 9

+EINT_DEBOUNCE_TIME_COUNT = 9

+

+[ADC]

+ADC_COUNT = 7

+

+[Keypad]

+KEY_ROW = 6

+KEY_COLUMN = 7

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6235.fig b/mcu/custom/driver/drv/Drv_Tool/MT6235.fig
new file mode 100644
index 0000000..39367c7
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6235.fig
@@ -0,0 +1,97 @@
+[Chip Type]

+Chip = MT6235

+GPIO_Pull_Sel=1

+

+[GPIO]

+GPIO0 = MODE0(GPIO0)              MODE1(CMRST)            MODE2(CLKM0)            MODE3(DSP_GPO0)            PUPD

+GPIO1 = MODE0(GPIO1)              MODE1(CMPDN)            MODE2()                   MODE3(DSP_GPO1)            PUPD

+GPIO2 = MODE0(GPIO2)              MODE1(CMVREF)           MODE2(TBTXEN)           MODE3(D1_TID0)             PUPD

+GPIO3 = MODE0(GPIO3)              MODE1(CMHREF)           MODE2(TBTXFS)           MODE3()                      PUPD

+GPIO4 = MODE0(GPIO4)              MODE1(CMPCLK)           MODE2(TBRXEN)           MODE3(D1_TID1)             PUPD

+GPIO5 = MODE0(GPIO5)              MODE1(CMMCLK)           MODE2(TBRXFS)           MODE3()                      PUPD

+GPIO6 = MODE0(GPIO6)              MODE1(CMDAT7)           MODE2()                   MODE3(D1ICK)               PUPD

+GPIO7 = MODE0(GPIO7)              MODE1(CMDAT6)           MODE2()                   MODE3(D1ID)                  PUPD

+GPIO8 = MODE0(GPIO8)              MODE1(CMDAT5)           MODE2()                   MODE3(D1IMS)               PUPD

+GPIO9 = MODE0(GPIO9)              MODE1(CMDAT4)           MODE2()                   MODE3(D2ICK)               PUPD

+GPIO10= MODE0(GPIO10)             MODE1(CMDAT3)           MODE2()                   MODE3(D2ID)                  PUPD

+GPIO11= MODE0(GPIO11)             MODE1(CMDAT2)           MODE2()                   MODE3(D2IMS)               PUPD

+GPIO12= MODE0(GPIO12)             MODE1(CMDAT1)           MODE2()                   MODE3(D2_TID0)             PUPD

+GPIO13= MODE0(GPIO13)             MODE1(CMDAT0)           MODE2()                   MODE3(D2_TID1)             PUPD

+GPIO14= MODE0(GPIO14)             MODE1(CMFLASH)          MODE2()                   MODE3(D2_TID2)             PUPD

+GPIO15= MODE0(GPIO15)             MODE1(SCL)                MODE2()                   MODE3(D2_TID3)             PUPD

+GPIO16= MODE0(GPIO16)             MODE1(SDA)                MODE2()                   MODE3(D2_TID4)             PUPD

+GPIO17= MODE0(GPIO17)             MODE1(PWM2)             MODE2()                   MODE3(D2_TID5)             PUPD

+GPIO18= MODE0(GPIO18)             MODE1(PWM3)             MODE2()                   MODE3(D2_TID6)             PUPD

+GPIO19= MODE0(GPIO19)             MODE1(BPI_BUS3)         MODE2()                   MODE3()                      PUPD

+GPIO20= MODE0(GPIO20)             MODE1(BPI_BUS6)         MODE2()                   MODE3()                      PUPD

+GPIO21= MODE0(GPIO21)             MODE1(BPI_BUS7)         MODE2()                   MODE3()                      PUPD

+GPIO22= MODE0(GPIO22)             MODE1(BPI_BUS8)         MODE2()                   MODE3()                      PUPD

+GPIO23= MODE0(GPIO23)             MODE1(BPI_BUS9)         MODE2(BSI_CS1)          MODE3()                      PUPD

+GPIO24= MODE0(GPIO24)             MODE1(LSCK)             MODE2(DSP_GPO2)         MODE3(IRQ0)                PUPD

+GPIO25= MODE0(GPIO25)             MODE1(LSA0)             MODE2(DSP_GPO3)         MODE3(IRQ1)                PUPD

+GPIO26= MODE0(GPIO26)             MODE1(LSDA)             MODE2(CLKM1)            MODE3(TDTIRQ)              PUPD

+GPIO27= MODE0(GPIO27)             MODE1(LSCE0B)           MODE2(CLKM2)            MODE3(TCTIRQ2)             PUPD

+GPIO28= MODE0(GPIO28)             MODE1(LSCE1B)           MODE2(LPCE2B)           MODE3(TCTIRQ1)             PUPD

+GPIO29= MODE0(GPIO29)             MODE1(LPCE1B)           MODE2(NCE1B)            MODE3(TEVTVAL)             PUPD

+GPIO30= MODE0(GPIO30)             MODE1(LPTE)             MODE2()                   MODE3()                      PUPD

+GPIO31= MODE0(GPIO31)             MODE1(NLD17)              MODE2()                   MODE3()                      PUPD

+GPIO32= MODE0(GPIO32)             MODE1(NLD16)              MODE2()                   MODE3()                      PUPD

+GPIO33= MODE0(GPIO33)             MODE1(NRNB)            MODE2()                   MODE3()                      PUPD

+GPIO34= MODE0(GPIO34)             MODE1(NCLE)             MODE2()                   MODE3()                      PUPD

+GPIO35= MODE0(GPIO35)             MODE1(NALE)             MODE2()                   MODE3()                      PUPD

+GPIO36= MODE0(GPIO36)             MODE1(NWEB)             MODE2()                   MODE3()                      PUPD

+GPIO37= MODE0(GPIO37)             MODE1(NREB)             MODE2()                   MODE3()                      PUPD

+GPIO38= MODE0(GPIO38)             MODE1(NCE0B)            MODE2()                   MODE3()                      PUPD

+GPIO39= MODE0(GPIO39)             MODE1(PWM0)             MODE2()                   MODE3()                      PUPD

+GPIO40= MODE0(GPIO40)             MODE1(PWM1)             MODE2(BSI_RFIN)         MODE3()                      PUPD

+GPIO41= MODE0(GPIO41)             MODE1(SRCLKENA)         MODE2()                   MODE3()                      PUPD

+GPIO42= MODE0(GPIO42)             MODE1(SRCLKENAN)        MODE2()                   MODE3()                      PUPD

+GPIO43= MODE0(GPIO43)             MODE1(SRCLKENAI)        MODE2()                   MODE3()                      PUPD

+GPIO44= MODE0(GPIO44)             MODE1(EINT3)            MODE2()                   MODE3(IRQ2)                PUPD

+GPIO45= MODE0(GPIO45)             MODE1(EINT4)            MODE2()                   MODE3(CLKM3)               PUPD

+GPIO46= MODE0(GPIO46)             MODE1(EINT5)            MODE2(EDICK)              MODE3()                      PUPD

+GPIO47= MODE0(GPIO47)             MODE1(EINT6)            MODE2(EDIWS)              MODE3()                      PUPD

+GPIO48= MODE0(GPIO48)             MODE1(EINT7)            MODE2(EDIDAT)             MODE3()                      PUPD

+GPIO49= MODE0(GPIO49)             MODE1(UCTS1)              MODE2(UCTS2)            MODE3()                      PUPD

+GPIO50= MODE0(GPIO50)             MODE1(URTS1)              MODE2(URTS2)            MODE3()                      PUPD

+GPIO51= MODE0(GPIO51)             MODE1(URXD2)            MODE2(UCTS3)            MODE3()                      PUPD

+GPIO52= MODE0(GPIO52)             MODE1(UTXD2)            MODE2(URTS3)            MODE3()                      PUPD

+GPIO53= MODE0(GPIO53)             MODE1(URXD3)            MODE2(IRDA_RXD)         MODE3()                      PUPD

+GPIO54= MODE0(GPIO54)             MODE1(UTXD3)            MODE2(IRDA_TXD)         MODE3()                      PUPD

+GPIO55= MODE0(GPIO55)             MODE1(KCOL7)            MODE2(IRDA_PDN)         MODE3()                      PUPD

+GPIO56= MODE0(GPIO56)             MODE1(KCOL6)            MODE2()                   MODE3()                      PUPD

+GPIO57= MODE0(GPIO57)             MODE1(KROW7)              MODE2(CLKM4)            MODE3()                      PUPD

+GPIO58= MODE0(GPIO58)             MODE1(KROW6)              MODE2()                   MODE3()                      PUPD

+GPIO59= MODE0(GPIO59)             MODE1(DAICLK)           MODE2()                   MODE3()                      PUPD

+GPIO60= MODE0(GPIO60)             MODE1(DAIPCMOUT)        MODE2()                   MODE3()                      PUPD

+GPIO61= MODE0(GPIO61)             MODE1(DAIPCMIN)         MODE2()                   MODE3()                      PUPD

+GPIO62= MODE0(GPIO62)             MODE1(DAIRST)           MODE2()                   MODE3()                      PUPD

+GPIO63= MODE0(GPIO63)             MODE1(DAISYNC)          MODE2()                   MODE3()                      PUPD

+GPIO64= MODE0(GPIO64)             MODE1(EA26)               MODE2(CLKM5)            MODE3()                      PUPD

+GPIO65= MODE0(GPIO65)             MODE1(EADMUX)           MODE2(CLKM6)            MODE3()                      PUPD

+GPIO66= MODE0(GPIO66)             MODE1(NFIQ)               MODE2(CLKM7)            MODE3()                      PUPD

+GPIO67= MODE0(GPIO67)             MODE1(MCCM0)              MODE2()                   MODE3(TDMA_CK)               PUPD

+GPIO68= MODE0(GPIO68)             MODE1(MCDA0)              MODE2()                   MODE3(TDMA_D1)               PUPD

+GPIO69= MODE0(GPIO69)             MODE1(MCDA1)              MODE2()                   MODE3(TDMA_D0)               PUPD

+GPIO70= MODE0(GPIO70)             MODE1(MCDA2)              MODE2()                   MODE3(TDMA_FS)               PUPD

+GPIO71= MODE0(GPIO71)             MODE1(MCDA3)              MODE2()                   MODE3()                      PUPD

+GPIO72= MODE0(GPIO72)             MODE1(MCCK)               MODE2()                   MODE3()                      PUPD

+GPIO73= MODE0(GPIO73)             MODE1(MCPWRON)          MODE2(CLKM8)            MODE3()                      PUPD

+GPIO74= MODE0(GPIO74)             MODE1(MCWP)             MODE2(CLKM9)            MODE3()                      PUPD

+GPIO75= MODE0(GPIO75)             MODE1(MCINS)            MODE2()                   MODE3()                      PUPD

+GPIO76 = MODE0(GPIO76)            MODE1(SCLK2)              MODE2()                   MODE3()                      Z

+GPIO77 = MODE0(GPIO77)            MODE1(SIO2)               MODE2()                   MODE3()                      Z

+GPIO78 = MODE0(GPIO78)            MODE1(SRST2)              MODE2()                   MODE3()                      Z

+

+[GPO]

+

+[EINT]

+EINT_COUNT=8

+EINT_DEBOUNCE_TIME_COUNT=8

+

+[ADC]

+ADC_COUNT=7

+

+[KEYPAD]

+KEY_ROW=8

+KEY_COLUMN=9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6236.fig b/mcu/custom/driver/drv/Drv_Tool/MT6236.fig
new file mode 100644
index 0000000..2073e49
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6236.fig
@@ -0,0 +1,86 @@
+[Chip Type]

+Chip = MT6236

+GPIO_Pull_Sel=1

+

+[GPIO]

+GPIO0 = MODE0(GPIO0)		  MODE1(BPI_BUS0)		MODE2()		        MODE3()		          PD

+GPIO1 = MODE0(GPIO1)		  MODE1(BPI_BUS1)		MODE2()		        MODE3()		          PD

+GPIO2 = MODE0(GPIO2)		  MODE1(BPI_BUS2)		MODE2()		        MODE3()		          PD

+GPIO3 = MODE0(GPIO3)		  MODE1(BPI_BUS3)		MODE2()		        MODE3()		          PD

+GPIO4 = MODE0(GPIO4)		  MODE1(BPI_BUS4)		MODE2()		        MODE3()		          PD

+GPIO5 = MODE0(GPIO5)		  MODE1(BPI_BUS5)		MODE2()		        MODE3()		          PD

+GPIO6 = MODE0(GPIO6)		  MODE1(BPI_BUS6)		MODE2()		        MODE3()		          PD

+GPIO7 = MODE0(GPIO7)		  MODE1(BPI_BUS7)		MODE2()		        MODE3()		          PD

+GPIO8 = MODE0(GPIO8)		  MODE1(BPI_BUS8)		MODE2(CLKM0)		  MODE3(MC0INS)		    PD

+GPIO9 = MODE0(GPIO9)		  MODE1(BPI_BUS9)		MODE2()		        MODE3()		          PD

+GPIO10 = MODE0(GPIO10)		MODE1(SPI_CS_N)		MODE2(MC1CM0)		  MODE3(MC0DA7)		    PU

+GPIO11 = MODE0(GPIO11)		MODE1(SPI_SCK)		MODE2(MC1DA0)		  MODE3(MC0DA6)		    PU

+GPIO12 = MODE0(GPIO12)		MODE1(SPI_MOSI)		MODE2(MC1CK)		  MODE3(MC0DA5)		    PU

+GPIO13 = MODE0(GPIO13)		MODE1(SPI_MISO)		MODE2(MC1DA1)		  MODE3(MC0DA4)		    PU

+GPIO14 = MODE0(GPIO14)		MODE1(KCOL7)		  MODE2(EDICK)		  MODE3(LPCE2B)		    PU

+GPIO15 = MODE0(GPIO15)		MODE1(KCOL6)		  MODE2(EDIWS)		  MODE3(BT2WIFI_0)    PU

+GPIO16 = MODE0(GPIO16)		MODE1(KROW7)		  MODE2(EDIDAT)		  MODE3(URXD3)		    PD

+GPIO17 = MODE0(GPIO17)		MODE1(KROW6)		  MODE2(CLKM1)		  MODE3(UTXD3)		    PD

+GPIO18 = MODE0(GPIO18)		MODE1(CMRST)		  MODE2(D2_TID0)	  MODE3(D1ICK)		    PD

+GPIO19 = MODE0(GPIO19)		MODE1(CMPDN)		  MODE2(D2_TID1)	  MODE3(D1ID)		      PD

+GPIO20 = MODE0(GPIO20)		MODE1(CMVREF)		  MODE2(CLKM3)		  MODE3(D1IMS)		    PD

+GPIO21 = MODE0(GPIO21)		MODE1(CMHREF)		  MODE2(D1_TID0)	  MODE3(D2ICK)		    PD

+GPIO22 = MODE0(GPIO22)		MODE1(CMPCLK)		  MODE2(D1_TID1)	  MODE3(D2ID)		      PD

+GPIO23 = MODE0(GPIO23)		MODE1(CMMCLK)		  MODE2(debug0)		  MODE3(D2IMS)		    PD

+GPIO24 = MODE0(GPIO24)		MODE1(CMDAT9)		  MODE2(debug1)		  MODE3(TDTIRQ)		    PD

+GPIO25 = MODE0(GPIO25)		MODE1(CMDAT8)		  MODE2(debug2)		  MODE3(TCTIRQ1)	    PD

+GPIO26 = MODE0(GPIO26)		MODE1(CMDAT7)		  MODE2(debug3)		  MODE3(TBTXEN)		    PD

+GPIO27 = MODE0(GPIO27)		MODE1(CMDAT6)		  MODE2(debug4)		  MODE3(TBTXFS)		    PD

+GPIO28 = MODE0(GPIO28)		MODE1(CMFLASH)		MODE2(debug5)		  MODE3(TBRXEN)		    PD

+GPIO29 = MODE0(GPIO29)		MODE1(SCL)		    MODE2(debug6)		  MODE3(TBRXFS)		    PU

+GPIO30 = MODE0(GPIO30)		MODE1(SDA)		    MODE2(debug7)		  MODE3(TCTIRQ2)	    PU

+GPIO31 = MODE0(GPIO31)		MODE1(LSA0)		    MODE2(URXD2)		  MODE3(CLKM3)		    PD

+GPIO32 = MODE0(GPIO32)		MODE1(LSCK)		    MODE2(UTXD2)		  MODE3(CLKM4)		    PD

+GPIO33 = MODE0(GPIO33)		MODE1(LSDA)		    MODE2(CAM_STROBE)	MODE3(LPCE2B)		    PD

+GPIO34 = MODE0(GPIO34)		MODE1(LPCE1B)		  MODE2(LSCE0B)		  MODE3()		          PU

+GPIO35 = MODE0(GPIO35)		MODE1(LPCE0B)		  MODE2(LSCE1B)		  MODE3()		          PU

+GPIO36 = MODE0(GPIO36)		MODE1(LPTE)		    MODE2(CLKM2)		  MODE3(TEVTVAL)	    PD

+GPIO37 = MODE0(GPIO37)		MODE1(NLD17)		  MODE2(CAM_MECH0)	MODE3()		          PD

+GPIO38 = MODE0(GPIO38)		MODE1(NLD16)		  MODE2(CAM_MECH1)	MODE3()		          PD

+GPIO39 = MODE0(GPIO39)		MODE1(URXD3)		  MODE2(UCTS2)		  MODE3(D2_TID4)	    PU

+GPIO40 = MODE0(GPIO40)		MODE1(UTXD3)		  MODE2(URTS2)		  MODE3(D2_TID5)	    PU

+GPIO41 = MODE0(GPIO41)		MODE1(EINT0)		  MODE2(CLKM4)		  MODE3(D2_TID6)	    PU

+GPIO42 = MODE0(GPIO42)		MODE1(EINT1)		  MODE2(EDICK)		  MODE3(CLKM5)		    PU

+GPIO43 = MODE0(GPIO43)		MODE1(EINT2)		  MODE2(EDIWS)		  MODE3(UTXD1)		    PU

+GPIO44 = MODE0(GPIO44)		MODE1(EINT3)		  MODE2(EDIDAT)		  MODE3(URXD1)		    PU

+GPIO45 = MODE0(GPIO45)		MODE1(URXD2)		  MODE2(UCTS3)		  MODE3(D2_TID2)	    PU

+GPIO46 = MODE0(GPIO46)		MODE1(UTXD2)		  MODE2(URTS3)		  MODE3(D2_TID3)	    PU

+GPIO47 = MODE0(GPIO47)		MODE1(DAICLK)		  MODE2(EDIDAT)		  MODE3(MC1CK)		    PD

+GPIO48 = MODE0(GPIO48)		MODE1(DAIPCMOUT)	MODE2(EDICK)		  MODE3(MC1CM0)		    PD

+GPIO49 = MODE0(GPIO49)		MODE1(DAIPCMIN)		MODE2(EDIWS)		  MODE3(MC1DA0)		    PD

+GPIO50 = MODE0(GPIO50)		MODE1(DAIRST)		  MODE2(LPCE2B)		  MODE3(MC1INS)		    PD

+GPIO51 = MODE0(GPIO51)		MODE1(DAISYNC)		MODE2(MC1DA1)		  MODE3(NCE1B)		    PD

+GPIO52 = MODE0(GPIO52)		MODE1(EINT4)		  MODE2(UCTS1)		  MODE3(TDMA_D1)	    PU

+GPIO53 = MODE0(GPIO53)		MODE1(EINT5)		  MODE2(URTS1)		  MODE3(TDMA_CK)	    PU

+GPIO54 = MODE0(GPIO54)		MODE1(EINT6)		  MODE2(LPCE1B)		  MODE3(TDMA_D0)	    PU

+GPIO55 = MODE0(GPIO55)		MODE1(IRDA_TXD)		MODE2(PWM3)		    MODE3(TDMA_FS)	    PU

+GPIO56 = MODE0(GPIO56)		MODE1(IRDA_RXD)		MODE2(PWM4)		    MODE3(UCTS1)		    PU

+GPIO57 = MODE0(GPIO57)		MODE1(IRDA_PDN)		MODE2(PWM5)		    MODE3(URTS1)		    PU

+GPIO58 = MODE0(GPIO58)		MODE1(UTXD1)		  MODE2(CLKM4)		  MODE3(ARM7_JTRST_B)	PU

+GPIO59 = MODE0(GPIO59)		MODE1(PWM3)		    MODE2(URXD2)		  MODE3(ARM7_JTCK)		PD

+GPIO60 = MODE0(GPIO60)		MODE1(PWM4)		    MODE2(UTXD2)		  MODE3(ARM7_JTDI)		PD

+GPIO61 = MODE0(GPIO61)		MODE1(PWM5)		    MODE2(URXD3)		  MODE3(ARM7_JTMS)		PD

+GPIO62 = MODE0(GPIO62)		MODE1(PWM6)		    MODE2(UTXD3)		  MODE3(ARM7_JTDO)		PD

+GPIO63 = MODE0(GPIO63)		MODE1(CLKM5)		  MODE2(WIFI2BT)		MODE3(ARM7_JRTCK)		PD

+GPIO64 = MODE0(GPIO64)		MODE1(URXD1)		  MODE2(BT2WIFI_0)	MODE3(SRCLKENAI)		PU

+GPIO65 = MODE0(GPIO65)		MODE1(IO_SIM2)		MODE2()		        MODE3()	            PD

+GPIO66 = MODE0(GPIO66)		MODE1(CLK_SIM2)		MODE2()		        MODE3()	            PD

+GPIO67 = MODE0(GPIO67)		MODE1(RST_SIM2)		MODE2()		        MODE3()	            PD

+

+[GPO]

+

+[EINT]

+EINT_COUNT=11

+EINT_DEBOUNCE_TIME_COUNT=11

+

+[ADC]

+ADC_COUNT=8

+

+[KEYPAD]

+KEY_ROW=8

+KEY_COLUMN=9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6238.fig b/mcu/custom/driver/drv/Drv_Tool/MT6238.fig
new file mode 100644
index 0000000..9f16620
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6238.fig
@@ -0,0 +1,103 @@
+[Chip Type]

+Chip = MT6238

+GPIO_Pull_Sel=1

+

+[GPIO]

+GPIO0 = MODE0(GPIO0)              MODE1(CMRST)            MODE2(DRF_DATA)           MODE3(D1_TID0)          PU

+GPIO1 = MODE0(GPIO1)              MODE1(CMPDN)            MODE2(DRF_EN)             MODE3(D1_TID1)          PU

+GPIO2 = MODE0(GPIO2)              MODE1(CMDAT1)           MODE2(D2_TID0)          MODE3(D1ICK)            PU

+GPIO3 = MODE0(GPIO3)              MODE1(CMDAT0)           MODE2(D2_TID1)          MODE3(D1ID)               PU

+GPIO4 = MODE0(GPIO4)              MODE1(CMFLASH)          MODE2(D2_TID2)          MODE3(D1IMS)            PD

+GPIO5 = MODE0(GPIO5)              MODE1(SCL)                MODE2(D2_TID3)          MODE3(D2ICK)            PU

+GPIO6 = MODE0(GPIO6)              MODE1(SDA)                MODE2(D2_TID4)          MODE3(D2ID)               PU

+GPIO7 = MODE0(GPIO7)              MODE1(PWM2)             MODE2(D2_TID5)          MODE3(D2IMS)            PU

+GPIO8 = MODE0(GPIO8)              MODE1(PWM3)             MODE2(D2_TID6)          MODE3(CLKM3)            PU

+GPIO9 = MODE0(GPIO9)              MODE1(BPI_BUS3)         MODE2()                   MODE3()                   PD

+GPIO10= MODE0(GPIO10)             MODE1(BPI_BUS6)         MODE2()                   MODE3()                   PD

+GPIO11= MODE0(GPIO11)             MODE1(BPI_BUS7)         MODE2()                   MODE3()                   PD

+GPIO12= MODE0(GPIO12)             MODE1(BPI_BUS8)         MODE2()                   MODE3()                   PD

+GPIO13= MODE0(GPIO13)             MODE1(BPI_BUS9)         MODE2(BSI_CS1)          MODE3()                   PD

+GPIO14= MODE0(GPIO14)             MODE1(LSCK)             MODE2(TDMA_CK)          MODE3()                   PU

+GPIO15= MODE0(GPIO15)             MODE1(LSA0)             MODE2(TDMA_D1)          MODE3(TDTIRQ)           PU

+GPIO16= MODE0(GPIO16)             MODE1(LSDA)               MODE2(TDMA_D0)          MODE3(TCTIRQ2)          PU

+GPIO17= MODE0(GPIO17)             MODE1(LSCE0B)           MODE2(TDMA_FS)          MODE3(TCTIRQ1)          PU

+GPIO18= MODE0(GPIO18)             MODE1(LSCE1B)           MODE2(LPCE2B)           MODE3(TEVTVAL)          PU

+GPIO19= MODE0(GPIO19)             MODE1(LPCE1B)           MODE2(NCE1B)            MODE3()                   PU

+GPIO20= MODE0(GPIO20)             MODE1(NLD17)              MODE2()                   MODE3()                   PD

+GPIO21= MODE0(GPIO21)             MODE1(NLD16)              MODE2()                   MODE3()                   PD

+GPIO22= MODE0(GPIO22)             MODE1(NRNB)            MODE2()                   MODE3()                   PU

+GPIO23= MODE0(GPIO23)             MODE1(NCLE)             MODE2()                   MODE3()                   PD

+GPIO24= MODE0(GPIO24)             MODE1(NALE)             MODE2()                   MODE3()                   PD

+GPIO25= MODE0(GPIO25)             MODE1(NWEB)             MODE2()                   MODE3()                   PU

+GPIO26= MODE0(GPIO26)             MODE1(NREB)             MODE2()                   MODE3()                   PU

+GPIO27= MODE0(GPIO27)             MODE1(NCE0B)            MODE2()                   MODE3()                   PU

+GPIO28= MODE0(GPIO28)             MODE1(PWM0)             MODE2()                   MODE3()                   PD

+GPIO29= MODE0(GPIO29)             MODE1(PWM1)             MODE2(BSI_RFIN)         MODE3()                   PD

+GPIO30= MODE0(GPIO30)             MODE1(SRCLKENA)         MODE2()                   MODE3()                   PU

+GPIO31= MODE0(GPIO31)             MODE1(SRCLKENAN)        MODE2()                   MODE3(EDICK)              PU

+GPIO32= MODE0(GPIO32)             MODE1(SRCLKENAI)        MODE2()                   MODE3()                   PD

+GPIO33= MODE0(GPIO33)             MODE1(EINT3)            MODE2(DSP_GPO2)         MODE3(TBTXFS)           PU

+GPIO34= MODE0(GPIO34)             MODE1(EINT4)            MODE2(DSP_GPO1)         MODE3(TBRXEN)           PU

+GPIO35= MODE0(GPIO35)             MODE1(EINT5)            MODE2(DSP_GPO0)         MODE3(TBRXFS)           PU

+GPIO36= MODE0(GPIO36)             MODE1(EINT6)            MODE2(EDIWS)              MODE3()                   PU

+GPIO37= MODE0(GPIO37)             MODE1(EINT7)            MODE2(EDIDAT)             MODE3()                   PU

+GPIO38= MODE0(GPIO38)             MODE1(SPI_CS_N)         MODE2(CAM_MECH1)          MODE3()                   PU

+GPIO39= MODE0(GPIO39)             MODE1(SPI_SCK)          MODE2(MC1DA1)             MODE3(CAM_STROBE)         PD

+GPIO40= MODE0(GPIO40)             MODE1(SPI_MOSI)         MODE2()                   MODE3()                   PU

+GPIO41= MODE0(GPIO41)             MODE1(SPI_MISO)         MODE2(MIRQ)             MODE3()                   PU

+GPIO42= MODE0(GPIO42)             MODE1(UCTS1)            MODE2()                   MODE3(UCTS2)            PU

+GPIO43= MODE0(GPIO43)             MODE1(URTS1)            MODE2()                   MODE3(URTS2)            PU

+GPIO44= MODE0(GPIO44)             MODE1(URXD2)            MODE2(UCTS3)            MODE3()                   PU

+GPIO45= MODE0(GPIO45)             MODE1(UTXD2)            MODE2(URTS3)            MODE3()                   PU

+GPIO46= MODE0(GPIO46)             MODE1(URXD3)            MODE2(UCTS2)            MODE3()                   PU

+GPIO47= MODE0(GPIO47)             MODE1(UTXD3)            MODE2(URTS2)            MODE3()                   PU

+GPIO48= MODE0(GPIO48)             MODE1(KCOL7)            MODE2()                   MODE3()                   PU

+GPIO49= MODE0(GPIO49)             MODE1(KCOL6)            MODE2()                   MODE3()                   PU

+GPIO50= MODE0(GPIO50)             MODE1(KROW7)              MODE2(CLKM6)            MODE3()                   PU

+GPIO51= MODE0(GPIO51)             MODE1(KROW6)              MODE2()                   MODE3()                   PU

+GPIO52= MODE0(GPIO52)             MODE1(DAICLK)           MODE2()                   MODE3()                   PD

+GPIO53= MODE0(GPIO53)             MODE1(DAIPCMOUT)        MODE2()                   MODE3()                   PD

+GPIO54= MODE0(GPIO54)             MODE1(DAIPCMIN)         MODE2()                   MODE3()                   PD

+GPIO55= MODE0(GPIO55)             MODE1(DAIRST)           MODE2(CLKM7)            MODE3()                   PD

+GPIO56= MODE0(GPIO56)             MODE1(DAISYNC)          MODE2()                   MODE3()                   PD

+GPIO57= MODE0(GPIO57)             MODE1(EA26)               MODE2(CLKM0)            MODE3()                   PU

+GPIO58= MODE0(GPIO58)             MODE1(EADMUX)           MODE2(CLKM1)            MODE3()                   PD

+GPIO59= MODE0(GPIO59)             MODE1(MC0CM0)             MODE2()                   MODE3()                   PU

+GPIO60= MODE0(GPIO60)             MODE1(MC0DA0)             MODE2()                   MODE3()                   PU

+GPIO61= MODE0(GPIO61)             MODE1(MC0DA1)             MODE2()                   MODE3()                   PU

+GPIO62= MODE0(GPIO62)             MODE1(MC0DA2)             MODE2()                   MODE3()                   PU

+GPIO63= MODE0(GPIO63)             MODE1(MC0DA3)             MODE2()                   MODE3()                   PD

+GPIO64= MODE0(GPIO64)             MODE1(MC0CK)              MODE2()                   MODE3()                   PU

+GPIO65= MODE0(GPIO65)             MODE1(MC0PWRON)         MODE2(CLKM2)            MODE3()                   PU

+GPIO66= MODE0(GPIO66)             MODE1(MC0WP)            MODE2()                   MODE3()                   PU

+GPIO67= MODE0(GPIO67)             MODE1(MC0INS)           MODE2()                   MODE3()                   PU

+GPIO68= MODE0(GPIO68)             MODE1(MC1CM0)             MODE2(MC0DA7)             MODE3()                   PU

+GPIO69= MODE0(GPIO69)             MODE1(MC1DA0)             MODE2(MC0DA6)             MODE3()                   PU

+GPIO70= MODE0(GPIO70)             MODE1(MC1CK)              MODE2(MC0DA5)             MODE3()                   PU

+GPIO71= MODE0(GPIO71)             MODE1(MC1PWRON)         MODE2(MC0DA4)             MODE3()                   PU

+GPIO72= MODE0(GPIO72)             MODE1(MC1WP)            MODE2()                   MODE3()                   PU

+GPIO73= MODE0(GPIO73)             MODE1(MC1INS)           MODE2()                   MODE3()                   PU

+GPIO74= MODE0(GPIO74)             MODE1(PAD_SIO2)           MODE2()                   MODE3()                   PU

+GPIO75= MODE0(GPIO75)             MODE1(PAD_SRST2)        MODE2()                   MODE3()                   PU

+GPIO76= MODE0(GPIO76)             MODE1(PAD_SCLK2)        MODE2()                   MODE3()                   PU

+GPIO77= MODE0(GPIO77)             MODE1(EINT0)            MODE2(CLKM4)            MODE3()                   PU

+GPIO78= MODE0(GPIO78)             MODE1(EINT1)            MODE2(CLKM5)            MODE3()                   PU

+GPIO79= MODE0(GPIO79)             MODE1(EINT2)            MODE2(DSP_GPO3)         MODE3(TBTXEN)           PU

+GPIO80= MODE0(GPIO80)             MODE1(LPTE)             MODE2()                   MODE3()                   PD

+GPIO81= MODE0(GPIO81)             MODE1(IRDA_TXD)         MODE2()                   MODE3()                   PU

+GPIO82= MODE0(GPIO82)             MODE1(IRDA_RXD)         MODE2()                   MODE3()                   PD

+GPIO83= MODE0(GPIO83)             MODE1(IRDA_PDN)         MODE2()                   MODE3()                   PD

+GPIO84= MODE0(GPIO84)             MODE1(USB_DRVVBUS)      MODE2()                   MODE3()                   PD

+

+[GPO]

+

+[EINT]

+EINT_COUNT = 8

+EINT_DEBOUNCE_TIME_COUNT = 8

+

+[ADC]

+ADC_COUNT = 7

+

+[Keypad]

+KEY_ROW = 8

+KEY_COLUMN = 9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6251.fig b/mcu/custom/driver/drv/Drv_Tool/MT6251.fig
new file mode 100644
index 0000000..c56d8f8
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6251.fig
@@ -0,0 +1,73 @@
+[Chip Type]

+Chip = MT6251

+GPIO_Pull_Sel = 1

+GPIO_ModeNum=8

+

+[GPIO]

+GPIO0	= MODE0(GPIO0)	          MODE1(BPI_BUS0)	    MODE2()		          MODE3()             MODE4(dbg_rf_test_sdatai)		  MODE5()            MODE6(dbg_mon[0])	    MODE7(usb_dp_in)                  PD

+GPIO1	= MODE0(GPIO1)	          MODE1(BPI_BUS1)	    MODE2()		          MODE3()             MODE4(dbg_rf_test_en)		      MODE5()            MODE6(dbg_mon[1])	    MODE7(usb_dm_in)                  PD

+GPIO2	= MODE0(GPIO2)	          MODE1(BPI_BUS2)	    MODE2()		          MODE3()             MODE4(dbg_rf_test_sclk)		  MODE5()            MODE6(dbg_mon[2])	    MODE7(usb_sd_in)                  PD

+GPIO3	= MODE0(GPIO3)	          MODE1(BPI_BUS3)	    MODE2()		          MODE3()             MODE4(dbg_rf_test_auxout)		  MODE5()            MODE6(dbg_mon[3])	    MODE7(usb_dp_out)                 PD

+GPIO4	= MODE0(GPIO4)	          MODE1(LSDI)		    MODE2()	              MODE3()             MODE4(dbg_rf_test_dcxodelay)	  MODE5(D1ID)	     MODE6(dbg_mon[4])      MODE7(usb_dm_out)                 PU

+GPIO5	= MODE0(GPIO5)	          MODE1(LSDA)		    MODE2()	              MODE3()             MODE4(dbg_rf_test_enext)	      MODE5(D1ICK)	     MODE6(dbg_mon[5])	    MODE7(usb_out_en_b)               PU

+GPIO6	= MODE0(GPIO6)	          MODE1(LSCE0B)		    MODE2()			      MODE3()             MODE4()                         MODE5()            MODE6()                MODE7()                           PU

+GPIO7	= MODE0(GPIO7)	          MODE1(LRSTB)		    MODE2()				  MODE3()             MODE4()                         MODE5()            MODE6()                MODE7()                           PU

+GPIO8	= MODE0(GPIO8)	          MODE1(URXD2)	        MODE2(UCTS1)	      MODE3(LSA0)	      MODE4(dbg_rf_test_enbt)		  MODE5()            MODE6(CLKSQ_SEL)	    MODE7(usb_suspend)                PU

+GPIO9	= MODE0(GPIO9)	          MODE1(EINT0)		    MODE2()		    	  MODE3()	          MODE4()                         MODE5()            MODE6()                MODE7()                           PU

+GPIO10	= MODE0(GPIO10)	          MODE1(URTS1)	        MODE2(SDA)	      MODE3()             MODE4(dbg_rf_test_enbb)	      MODE5()            MODE6()                MODE7()                           PU

+GPIO11	= MODE0(GPIO11)	          MODE1(UTXD1)	        MODE2(SCL)	          MODE3(PWM1)	      MODE4(dbg_rf_test_sdatao)		  MODE5()	         MODE6()                MODE7()                           PU

+GPIO12	= MODE0(GPIO12)	          MODE1(UTXD2)	        MODE2(URTS1)	      MODE3(LCD_TE)	      MODE4(dbg_rf_test_sdatai)		  MODE5()            MODE6(dbg_mon[6])	    MODE7()                           PU

+GPIO13	= MODE0(GPIO13)	          MODE1(URXD1)   	    MODE2(PWM0)		      MODE3()             MODE4(dbg_rf_test_en)			  MODE5()            MODE6()                MODE7()                           PU

+GPIO14	= MODE0(GPIO14)	          MODE1(UCTS1)   	    MODE2(SCL)	          MODE3(URXD2)	      MODE4(dbg_rf_test_sclk)	      MODE5()            MODE6()                MODE7()                           PU

+GPIO15	= MODE0(GPIO15)	          MODE1(KCOL2)   	    MODE2(SDA)	          MODE3(UTXD2)	      MODE4(dbg_fm_ids_out[0])	      MODE5(D1IMS)	     MODE6(dbg_mon[6])	    MODE7(CLKSW_ABIST_HMON_DATA[3])   PU

+GPIO16	= MODE0(GPIO16)	          MODE1(KROW0)	        MODE2(tdma_evtval)	  MODE3(UCTS2)	      MODE4(dbg_fm_ids_out[1])	      MODE5(D2ID)	     MODE6(dbg_mon[8])	    MODE7(CLKSW_ABIST_HMON_DATA[2])   PD

+GPIO17	= MODE0(GPIO17)	          MODE1(KROW3)	        MODE2(tdma_dtirq_f)	  MODE3()             MODE4(dbg_fm_ids_out[2])	      MODE5(D2ICK)	     MODE6(dbg_mon[9])	    MODE7(CLKSW_ABIST_HMON_DATA[1])   PD

+GPIO18	= MODE0(GPIO18)	          MODE1(KCOL1)          MODE2(ctirq1_irq_b)	  MODE3(daiclk)	      MODE4(dbg_fm_ids_out[3])	      MODE5(D2IMS)	     MODE6(dbg_mon[10])	    MODE7(CLKSW_ABIST_HMON_DATA[0])   PU

+GPIO19	= MODE0(GPIO19)	          MODE1(KROW4)	        MODE2(ctirq2_irq_b)	  MODE3(EDIDAT)	      MODE4(dbg_fm_ids_out[4])	      MODE5(D1_TID0)	 MODE6(dbg_mon[11])	    MODE7(CLKSW_ABIST_LMON_DATA[3])   PD

+GPIO20	= MODE0(GPIO20)	          MODE1(KCOL0)          MODE2(tdma_btxen)	  MODE3(EDICK)	      MODE4(dbg_fm_ids_out[5])	      MODE5(D1_TID1)	 MODE6(dbg_mon[12])	    MODE7(CLKSW_ABIST_LMON_DATA[2])   PU

+GPIO21	= MODE0(GPIO21)	          MODE1(KCOL3)          MODE2(tdma_btxfs)	  MODE3(EDIWS)	      MODE4(dbg_fm_ids_out[6])	      MODE5(D2_TID0)	 MODE6(dbg_mon[13])	    MODE7(CLKSW_ABIST_LMON_DATA[1])   PU

+GPIO22	= MODE0(GPIO22)	          MODE1(KCOL4)          MODE2(URTS2)	      MODE3(daipcmout)	  MODE4(dbg_fm_ids_out[7])	      MODE5(D2_TID1)	 MODE6(tdma_sdat[0])	MODE7(CLKSW_ABIST_LMON_DATA[0])   PU

+GPIO23	= MODE0(GPIO23)	          MODE1(KROW1)	        MODE2(clock_off)	  MODE3(daipcmin)	  MODE4(dbg_fm_ids_out[8])	      MODE5(D2_TID2)	 MODE6(tdma_sdat[1])	MODE7(MIXED_ABIST_HMON_DATA[3])   PD

+GPIO24	= MODE0(GPIO24)	          MODE1(KROW2)	        MODE2(mdsrclkena)	  MODE3(dairst)	      MODE4(dbg_fm_ids_out[9])	      MODE5(D2_TID3)	 MODE6(tdma_fs)	        MODE7(MIXED_ABIST_HMON_DATA[2])   PD

+GPIO25	= MODE0(GPIO25)	          MODE1(KROW5)	        MODE2(SRCLKENAI)	  MODE3(daisync)	  MODE4(dbg_fm_ids_out[10])	      MODE5(D2_TID4)	 MODE6(tdma_ck)	        MODE7(MIXED_ABIST_HMON_DATA[1])   PD

+GPIO26	= MODE0(GPIO26)	          MODE1(EINT1)	        MODE2(tdma_brxen)	  MODE3(BPI_BUS4)	  MODE4(dbg_fm_ids_out[11])	      MODE5(D2_TID5)	 MODE6(dbg_mon[14])	    MODE7()                           PU

+GPIO27	= MODE0(GPIO27)		      MODE1(JRTCK)               MODE2(tdma_brxfs)	  MODE3(BPI_BUS5)	  MODE4(dbg_fm_ids_out[12])	      MODE5(D2_TID6)	 MODE6(dbg_mon[15])	    MODE7(MIXED_ABIST_HMON_DATA[0])   PD

+GPIO28	= MODE0(GPIO28)		      MODE1(MC0CK)               MODE2(CLKM0)		  MODE3()	          MODE4()                         MODE5()            MODE6()                MODE7(MIXED_ABIST_LMON_DATA[3])   PD

+GPIO29	= MODE0(GPIO29)		      MODE1(MC0CM0)               MODE2(CLKM1)		  MODE3()             MODE4(dbg_srclkena)			  MODE5()            MODE6()                MODE7(MIXED_ABIST_LMON_DATA[2])   PD

+GPIO30	= MODE0(GPIO30)		      MODE1(MC0DA0)               MODE2(CLKM2)		  MODE3()	          MODE4()                         MODE5()            MODE6()                MODE7(MIXED_ABIST_LMON_DATA[1])   PD

+GPIO31	= MODE0(GPIO31)		      MODE1(JRTCK)               MODE2(CLKM3)		  MODE3(LSA0)	          MODE4()                         MODE5()            MODE6()                MODE7(MIXED_ABIST_LMON_DATA[0])   PD

+GPIO32  = MODEGPIO(GPIO32)      MODE1()               MODE2()		  MODE3()	          MODE4()                         MODE5()            MODE6()                MODE7()   PD

+GPIO33	= MODEGPIO(GPIO33)      MODE1()               MODE2()		  MODE3()	          MODE4()                         MODE5()            MODE6()                MODE7()   PD

+GPIO34	= MODEGPIO(GPIO34)      MODE1()               MODE2()		  MODE3()	          MODE4()                         MODE5()            MODE6()                MODE7()   PD

+GPIO35	= NONGPIO(GPIO35)      MODE1()               MODE2()		  MODE3()	          MODE4()                         MODE5()            MODE6()                MODE7()   PD

+GPIO36	= NONGPIO(GPIO36)      MODE1()               MODE2()		  MODE3()	          MODE4()                         MODE5()            MODE6()                MODE7()   PD

+GPIO37	= NONGPIO(GPIO37)      MODE1()               MODE2()		  MODE3()	          MODE4()                         MODE5()            MODE6()                MODE7()   PD

+GPIO38	= NONGPIO(GPIO38)      MODE1()               MODE2()		  MODE3()	          MODE4()                         MODE5()            MODE6()                MODE7()   PD

+

+

+[GPO]

+

+[EINT]

+EINT_COUNT = 2

+EINT_DEBOUNCE_TIME_COUNT = 2

+

+[EINT_EX_PIN]

+0

+1

+

+[ADC]

+ADC_COUNT=3

+

+[ADC_INT_CH]

+0 = ADC_VBAT

+1 = ADC_VISENSE

+2 = ADC_VCHARGER

+

+[ADC_EX_CH]

+6

+7

+8

+

+[KEYPAD]

+KEY_ROW = 6

+KEY_COLUMN = 9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6252.fig b/mcu/custom/driver/drv/Drv_Tool/MT6252.fig
new file mode 100644
index 0000000..bcd9778
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6252.fig
@@ -0,0 +1,121 @@
+[Chip Type]

+Chip = MT6252

+GPIO_Pull_Sel=1

+GPIO_ModeNum=8

+GPIO_Extend_Config=1

+

+[GPIO]

+GPIO0 =  MODE0(GPIO0)  MODE1(PWM)           MODE2(CLKSQ_SEL)            MODE3(MCWP)             MODE4(emi_ed0)          MODE5(sf_debug_out0)  MODE6(usb_debug_out0)             MODE7(usb_debug_out8)           PUPD

+GPIO1 =  MODE0(GPIO1)  MODE1(KCOL6)         MODE2(EINT4)                MODE3(CLKO0)            MODE4(emi_ed1)          MODE5(sf_debug_out3)  MODE6(usb_debug_out1)             MODE7(usb_debug_out9)           PUPD

+GPIO2 =  MODE0(GPIO2)  MODE1(KCOL5)         MODE2(TDMA_EVTVAL)          MODE3(CAM_SDA)          MODE4(emi_ed2)          MODE5(sf_debug_out1)  MODE6(MIXEDSYS_MON_DATA0)         MODE7()                         PUPD

+GPIO3 =  MODE0(GPIO3)  MODE1(KCOL4)         MODE2(TDMA_BTXEN)           MODE3(CAM_SCL)          MODE4(emi_ed3)          MODE5(CLKO1)          MODE6()                           MODE7()                         PUPD

+GPIO4 =  MODE0(GPIO4)  MODE1(KCOL3)         MODE2(UCTS1_B)              MODE3(BSI_CLK)          MODE4(emi_ed4)          MODE5(sf_debug_out2)  MODE6(MIXEDSYS_MON_DATA0)         MODE7(DBG_RF_TEST_AUXOUT_O)     PUPD

+GPIO5 =  MODE0(GPIO5)  MODE1(KCOL2)         MODE2(TDMA_CTIRQ2_B)        MODE3(D1_ID)            MODE4(emi_ed5)          MODE5(URXD3)          MODE6()                           MODE7()                         PUPD

+GPIO6 =  MODE0(GPIO6)  MODE1(KCOL1)         MODE2(TDMA_CTIRQ1_B)        MODE3(D1_ICK)           MODE4(emi_ed6)          MODE5(EDICK)          MODE6(usb_debug_out2)             MODE7(usb_debug_out10)          PUPD

+GPIO7 =  MODE0(GPIO7)  MODE1(KCOL0)         MODE2(TDMA_DTIRQ_B)         MODE3(D1_IMS)           MODE4(emi_ed7)          MODE5(sf_debug_out4)  MODE6(usb_debug_out3)             MODE7(usb_debug_out11)          PUPD

+GPIO8 =  MODE0(GPIO8)  MODE1(KROW5)         MODE2(EINT5)                MODE3(CLKO3)            MODE4(emi_ed8)          MODE5(EDIDAT)         MODE6(MIXEDSYS_MON_DATA1)         MODE7()                         PUPD

+GPIO9 =  MODE0(GPIO9)  MODE1(KROW4)         MODE2(TDMA_SDAT0)           MODE3(SRCLKENA)         MODE4(emi_ed9)          MODE5(EDIWS)          MODE6()                           MODE7()                         PUPD

+GPIO10 = MODE0(GPIO10) MODE1(KROW3)         MODE2(URTS1_B)              MODE3(BSI_EN)           MODE4(LSA0)             MODE5(sf_debug_out5)  MODE6(MIXEDSYS_MON_DATA1)         MODE7(DBG_RF_TEST_EN_DCXO_O)    PUPD

+GPIO11 = MODE0(GPIO11) MODE1(KROW2)         MODE2(TDMA_BTXFS)           MODE3(D2_ID)            MODE4(LSCK)             MODE5(UTXD3)          MODE6()                           MODE7()                         PUPD

+GPIO12 = MODE0(GPIO12) MODE1(KROW1)         MODE2(TDMA_BRXEN)           MODE3(D2_ICK)           MODE4(LSDA)             MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO13 = MODE0(GPIO13) MODE1(KROW0)         MODE2(TDMA_BRXFS)           MODE3(D2_IMS)           MODE4(LSDI)             MODE5(sf_debug_out6)  MODE6(usb_debug_out4)             MODE7(usb_debug_out12)          PUPD

+GPIO14 = MODE0(GPIO14) MODE1(CORE_ECS2_B)   MODE2(LPCE0_B)              MODE3(LSCE0_B)          MODE4(emi_ecs1_b)       MODE5()               MODE6(SEN2LCM_CS_B)               MODE7()                         PUPD

+GPIO15 = MODE0(GPIO15) MODE1(dai_clk)       MODE2(TDMA_SDAT1)           MODE3(EDICK)            MODE4(emi_ed10)         MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO16 = MODE0(GPIO16) MODE1(dai_pcmout)    MODE2(TDMA_FS)              MODE3(EDIDAT)           MODE4(emi_ed11)         MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO17 = MODE0(GPIO17) MODE1(dai_pcmin)     MODE2()                     MODE3(BSI_DATO)         MODE4(emi_ed12)         MODE5(sf_debug_out7)  MODE6(MIXEDSYS_MON_DATA2)         MODE7(DBG_RF_TEST_DCXODELAY_O)  PUPD

+GPIO18 = MODE0(GPIO18) MODE1(dai_rstb)      MODE2()                     MODE3(BSI_DATI)         MODE4(emi_ed13)         MODE5(sf_debug_out8)  MODE6(MIXEDSYS_MON_DATA3)         MODE7(DBG_RF_TEST_EN_O)         PUPD

+GPIO19 = MODE0(GPIO19) MODE1(dai_sync)      MODE2(TDMA_CK)              MODE3(EDIWS)            MODE4(emi_ed14)         MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO20 = MODE0(GPIO20) MODE1(URXD3)         MODE2(UCTS2_B)              MODE3()                 MODE4(emi_ea18)         MODE5(sf_debug_out10) MODE6(usb_debug_out5)             MODE7(usb_debug_out13)          PUPD

+GPIO21 = MODE0(GPIO21) MODE1(UTXD3)         MODE2(URTS2_B)              MODE3()                 MODE4(emi_ea19)         MODE5(sf_debug_out11) MODE6(usb_debug_out6)             MODE7(usb_debug_out14)          PUPD

+GPIO22 = MODE0(GPIO22) MODE1(URXD2)         MODE2(UCTS1_B)              MODE3(CAM_SCL)          MODE4(emi_ea20)         MODE5(sf_debug_out12) MODE6(MIXEDSYS_MON_DATA4)         MODE7(DBG_RF_TEST_SCLK_O)       PUPD

+GPIO23 = MODE0(GPIO23) MODE1(UTXD2)         MODE2(URTS1_B)              MODE3(CAM_SDA)          MODE4(emi_ea21)         MODE5(CLKO2_32K)      MODE6(MIXEDSYS_MON_DATA5)         MODE7(DBG_RF_TEST_SDATAI_O)     PUPD

+GPIO24 = MODE0(GPIO24) MODE1(UCTS1_B)       MODE2(CAM_SCL)              MODE3(NLD13)            MODE4(emi_eub_b)        MODE5(EINT5)          MODE6()                           MODE7()                         PUPD

+GPIO25 = MODE0(GPIO25) MODE1(URTS1_B)       MODE2(CAM_SDA)              MODE3(NLD14)            MODE4(emi_elb_b)        MODE5(EINT6)          MODE6()                           MODE7()                         PUPD

+GPIO26 = MODE0(GPIO26) MODE1(EINT0)         MODE2()                     MODE3(CLKO4)            MODE4()                 MODE5(sf_debug_out14) MODE6(mixedsys_mon_data[6])       MODE7(DBG_RF_TEST_SDATAO_O)     PUPD

+GPIO27 = MODE0(GPIO27) MODE1(EINT1)         MODE2()                     MODE3(CLKO3)            MODE4()                 MODE5(sf_debug_out15) MODE6(mixedsys_mon_data[7])       MODE7()                         PUPD

+GPIO28 = MODE0(GPIO28) MODE1(bpi_bus4)      MODE2()                     MODE3()                 MODE4(emi_eadv_b)       MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO29 = MODE0(GPIO29) MODE1(SIMIO)         MODE2()                     MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO30 = MODE0(GPIO30) MODE1(SIMCLK)        MODE2()                     MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO31 = MODE0(GPIO31) MODE1(SIMRST)        MODE2()                     MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO32 = MODE0(GPIO32) MODE1()              MODE2()                     MODE3()                 MODE4(emi_ed15)         MODE5(sf_debug_out9)  MODE6(usb_debug_out7)             MODE7(usb_debug_out15)          PUPD

+GPIO33 = MODE0(GPIO33) MODE1(CLKO2_32K)     MODE2()                     MODE3(LSCE1B)           MODE4(emi_ea16)         MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO34 = MODE0(GPIO34) MODE1(CLKO6)         MODE2(SRCLKENA)             MODE3()                 MODE4(emi_ea17)         MODE5(sf_debug_out13) MODE6()                           MODE7()                         PUPD

+GPIO35 = MODE0(GPIO35) MODE1(SRCLKENAI)     MODE2()                     MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO36 = MODE0(GPIO36) MODE1(MCINS)         MODE2()                     MODE3(NLD15)            MODE4(emi_erd_b)        MODE5(EINT6)          MODE6()                           MODE7()                         PUPD

+GPIO37 = MODE0(GPIO37) MODE1(MCCK)          MODE2()                     MODE3()                 MODE4(emi_eclk)         MODE5()               MODE6()                           MODE7(DBG_RF_TEST_SCLK_I)       PUPD

+GPIO38 = MODE0(GPIO38) MODE1(MCDA0)         MODE2()                     MODE3()                 MODE4(emi_ewait)        MODE5()               MODE6()                           MODE7(DBG_RF_TEST_EN_I)         PUPD

+GPIO39 = MODE0(GPIO39) MODE1(MCCM0)         MODE2()                     MODE3()                 MODE4(emi_ewr_b)        MODE5()               MODE6()                           MODE7(DBG_RF_TEST_SDATAI_I)     PUPD

+GPIO40 = MODE0(GPIO40) MODE1(LPTE)          MODE2()                     MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO41 = MODE0(GPIO41) MODE1(LRSTB)         MODE2()                     MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO42 = NONGPIO()     MODE1()              MODE2()                     MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO43 = MODE0(GPIO43) MODE1(KCOL7)         MODE2(EINT2)                MODE3(CLKO2)            MODE4(LSCK)             MODE5(jrtck)          MODE6()                           MODE7()                         PUPD

+GPIO44 = MODE0(GPIO44) MODE1(KROW6)         MODE2()                     MODE3()                 MODE4(LSDA)             MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO45 = MODE0(GPIO45) MODE1(KROW7)         MODE2(EINT3)                MODE3(CLKO5)            MODE4(CAM_SDA)          MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO46 = MODE0(GPIO46) MODE1()              MODE2()                     MODE3()                 MODE4(jrtck)            MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO47 = MODE0(GPIO47) MODE1(cmdat0)        MODE2(CAM_CSD)              MODE3(D2_TID0)          MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO48 = MODE0(GPIO48) MODE1(cmdat1)        MODE2(LSDA)                 MODE3(D2_TID1)          MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO49 = MODE0(GPIO49) MODE1(cmdat2)        MODE2()                     MODE3(D2_TID2)          MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO50 = MODE0(GPIO50) MODE1(cmdat3)        MODE2()                     MODE3(D2_TID3)          MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO51 = MODE0(GPIO51) MODE1(cmdat4)        MODE2()                     MODE3(D2_TID4)          MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO52 = MODE0(GPIO52) MODE1(cmdat5)        MODE2()                     MODE3(D2_TID5)          MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO53 = MODE0(GPIO53) MODE1(cmdat6)        MODE2()                     MODE3(D2_TID6)          MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO54 = MODE0(GPIO54) MODE1(cmdat7)        MODE2()                     MODE3(D1_TID0)          MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO55 = MODE0(GPIO55) MODE1(cmhref)        MODE2()                     MODE3(D1_TID1)          MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO56 = MODE0(GPIO56) MODE1(cmvref)        MODE2()                     MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO57 = MODE0(GPIO57) MODE1(cmpdn)         MODE2(LSCK)                 MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO58 = MODE0(GPIO58) MODE1(cmmclk)        MODE2()                     MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO59 = MODE0(GPIO59) MODE1(cmpclk)        MODE2(CAM_CSK)              MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO60 = MODE0(GPIO60) MODE1(cmrst)         MODE2()                     MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO61 = MODE0(GPIO61) MODE1(EDICK)         MODE2()                     MODE3(BPI_BUS5)         MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO62 = MODE0(GPIO62) MODE1(EDIDAT)        MODE2()                     MODE3(BPI_BUS6)         MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO63 = MODE0(GPIO63) MODE1(EDIWS)         MODE2()                     MODE3(BPI_BUS7)         MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO64 = MODE0(GPIO64) MODE1(SCK)           MODE2(LSCK)                 MODE3(CLKO2_32K)        MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO65 = MODE0(GPIO65) MODE1(SWP)           MODE2(LSA0)                 MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO66 = MODE0(GPIO66) MODE1(SHOLD)         MODE2(LSCE0_B)              MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO67 = MODE0(GPIO67) MODE1(SCS)           MODE2(LSCE1_B)              MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO68 = MODE0(GPIO68) MODE1(SIN)           MODE2(LSDI)                 MODE3(EINT3)            MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO69 = MODE0(GPIO69) MODE1(SOUT)          MODE2(LSDA)                 MODE3()                 MODE4()                 MODE5()               MODE6()                           MODE7()                         PUPD

+GPIO70 = MODE0(GPIO70) MODE1()              MODE2(EINT4)                MODE3(CLKO2_32K)        MODE4(CAM_SCL)          MODE5()               MODE6()                           MODE7()                         PUPD

+

+[GPO]

+

+[EINT]

+EINT_COUNT=12

+EINT_DEBOUNCE_TIME_COUNT=12

+

+[EINT_EX_PIN]

+0

+1

+2

+3

+4

+5

+6

+8

+9

+10

+11

+12

+

+[EINT_INT_PIN]

+7 = CHR_USB_EINT_NO

+

+[EINT_INT_TIME_DELAY]

+EINT7 = 40

+

+[ADC]

+ADC_COUNT=3

+

+[ADC_INT_CH]

+0 = ADC_VBAT

+1 = ADC_VISENSE

+2 = ADC_VCHARGER

+

+[ADC_EX_CH]

+3

+4

+5

+

+[KEYPAD]

+KEY_ROW=8

+KEY_COLUMN=9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6253.fig b/mcu/custom/driver/drv/Drv_Tool/MT6253.fig
new file mode 100644
index 0000000..abdbc8d
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6253.fig
@@ -0,0 +1,103 @@
+[Chip Type]

+Chip = MT6253

+GPIO_Pull_Sel=1

+

+[GPIO]

+

+GPIO0 = MODE0(GPIO0)          MODE1(PWM)         MODE2(CLKSQ_SEL) MODE3(Alerter)    PUPD

+GPIO1 = MODE0(GPIO1)          MODE1(KCOL6)       MODE2(EINT4)     MODE3()           PUPD

+GPIO2 = MODE0(GPIO2)          MODE1(KCOL5)       MODE2()          MODE3()           PUPD

+GPIO3 = MODE0(GPIO3)          MODE1(KCOL4)       MODE2(clko1)     MODE3()           PUPD

+GPIO4 = MODE0(GPIO4)          MODE1(KCOL3)       MODE2()          MODE3()           PUPD

+GPIO5 = MODE0(GPIO5)          MODE1(KCOL2)       MODE2()          MODE3()           PUPD

+GPIO6 = MODE0(GPIO6)          MODE1(KCOL1)       MODE2()          MODE3()           PUPD

+GPIO7 = MODE0(GPIO7)          MODE1(KCOL0)       MODE2()          MODE3()           PUPD

+GPIO8 = MODE0(GPIO8)          MODE1(KROW5)       MODE2(EINT5)     MODE3()           PUPD

+GPIO9 = MODE0(GPIO9)          MODE1(KROW4)       MODE2()          MODE3(SRCLKENA)   PUPD

+GPIO10 = MODE0(GPIO10)        MODE1(KROW3)       MODE2()          MODE3()           PUPD

+GPIO11 = MODE0(GPIO11)        MODE1(KROW2)       MODE2()          MODE3()           PUPD

+GPIO12 = MODE0(GPIO12)        MODE1(KROW1)       MODE2()          MODE3()           PUPD

+GPIO13 = MODE0(GPIO13)        MODE1(KROW0)       MODE2()          MODE3()           PUPD

+GPIO14 = MODE0(GPIO14)        MODE1(ECS2_B)      MODE2(MFIQ)      MODE3()           PUPD

+GPIO15 = MODE0(GPIO15)        MODE1(DAICLK)      MODE2(clko5)     MODE3()           PUPD

+GPIO16 = MODE0(GPIO16)        MODE1(DAIPCMOUT)   MODE2()          MODE3()           PUPD

+GPIO17 = MODE0(GPIO17)        MODE1()            MODE2(DAIPCMIN)  MODE3(IRDA_PDN)   PUPD

+GPIO18 = MODE0(GPIO18)        MODE1(DAIRST)      MODE2(clko0)     MODE3(IRDA_TX)    PUPD

+GPIO19 = MODE0(GPIO19)        MODE1(DAISYNC)     MODE2(XADMUX)    MODE3()           PUPD

+GPIO20 = MODE0(GPIO20)        MODE1(URXD3)       MODE2(UCTS2_B)   MODE3()           PUPD

+GPIO21 = MODE0(GPIO21)        MODE1(UTXD3)       MODE2(URTS2_B)   MODE3()           PUPD

+GPIO22 = MODE0(GPIO22)        MODE1(URXD2)       MODE2(LCD_TE)    MODE3(IRDA_RX)    PUPD

+GPIO23 = MODE0(GPIO23)        MODE1(UTXD2)       MODE2(EDIDAT)    MODE3(IRDA_TX)    PUPD

+GPIO24 = MODE0(GPIO24)        MODE1(UCTS1_B)     MODE2(CAM_SCL)   MODE3()           PUPD

+GPIO25 = MODE0(GPIO25)        MODE1(URTS1_B)     MODE2(CAM_SDA)   MODE3()           PUPD

+GPIO26 = MODE0(GPIO26)        MODE1(NCEB[0])     MODE2()          MODE3()           PUPD

+GPIO27 = MODE0(GPIO27)        MODE1(NREB)        MODE2()          MODE3()           PUPD

+GPIO28 = MODE0(GPIO28)        MODE1(NWEB)        MODE2()          MODE3()           PUPD

+GPIO29 = MODE0(GPIO29)        MODE1(NALE)        MODE2()          MODE3()           PUPD

+GPIO30 = MODE0(GPIO30)        MODE1(NCLE)        MODE2()          MODE3()           PUPD

+GPIO31 = MODE0(GPIO31)        MODE1(NRNB)        MODE2()          MODE3()           PUPD

+GPIO32 = MODE0(GPIO32)        MODE1(NLD0)        MODE2()          MODE3()           PUPD

+GPIO33 = MODE0(GPIO33)        MODE1(NLD1)        MODE2()          MODE3()           PUPD

+GPIO34 = MODE0(GPIO34)        MODE1(NLD2)        MODE2()          MODE3()           PUPD

+GPIO35 = MODE0(GPIO35)        MODE1(NLD3)        MODE2()          MODE3()           PUPD

+GPIO36 = MODE0(GPIO36)        MODE1(NLD4)        MODE2()          MODE3()           PUPD

+GPIO37 = MODE0(GPIO37)        MODE1(NLD5)        MODE2()          MODE3()           PUPD

+GPIO38 = MODE0(GPIO38)        MODE1(NLD6)        MODE2()          MODE3()           PUPD

+GPIO39 = MODE0(GPIO39)        MODE1(NLD7)        MODE2()          MODE3()           PUPD

+GPIO40 = MODE0(GPIO40)        MODE1(NLD8)        MODE2(EDICK)     MODE3(RF_AUXOUT)  PUPD

+GPIO41 = MODE0(GPIO41)        MODE1(LWRB)        MODE2()          MODE3()           PUPD

+GPIO42 = MODE0(GPIO42)        MODE1(LPA0)        MODE2()          MODE3(BSI_CLK)    PUPD

+GPIO43 = MODE0(GPIO43)        MODE1(LRDB)        MODE2()          MODE3()           PUPD

+GPIO44 = MODE0(GPIO44)        MODE1(LRSTB)       MODE2()          MODE3(BSI_EN)     PUPD

+GPIO45 = MODE0(GPIO45)        MODE1(LPCE0B)      MODE2()          MODE3(BSI_DATO)   PUPD

+GPIO46 = MODE0(GPIO46)        MODE1(LPCE1B)      MODE2(NCEB[1])   MODE3(BSI_DATI)   PUPD

+GPIO47 = MODE0(GPIO47)        MODE1(CMDAT0)      MODE2()          MODE3()           PUPD

+GPIO48 = MODE0(GPIO48)        MODE1(CMDAT1)      MODE2()          MODE3()           PUPD

+GPIO49 = MODE0(GPIO49)        MODE1(CMDAT2)      MODE2()          MODE3()           PUPD

+GPIO50 = MODE0(GPIO50)        MODE1(CMDAT3)      MODE2()          MODE3()           PUPD

+GPIO51 = MODE0(GPIO51)        MODE1(CMDAT4)      MODE2()          MODE3()           PUPD

+GPIO52 = MODE0(GPIO52)        MODE1(CMDAT5)      MODE2()          MODE3()           PUPD

+GPIO53 = MODE0(GPIO53)        MODE1(CMDAT6)      MODE2()          MODE3()           PUPD

+GPIO54 = MODE0(GPIO54)        MODE1(CMDAT7)      MODE2()          MODE3()           PUPD

+GPIO55 = MODE0(GPIO55)        MODE1(CMHREF)      MODE2()          MODE3()           PUPD

+GPIO56 = MODE0(GPIO56)        MODE1(CMVREF)      MODE2()          MODE3()           PUPD

+GPIO57 = MODE0(GPIO57)        MODE1(CMPDN)       MODE2()          MODE3()           PUPD

+GPIO58 = MODE0(GPIO58)        MODE1(CMMCLK)      MODE2()          MODE3()           PUPD

+GPIO59 = MODE0(GPIO59)        MODE1(CMPCLK)      MODE2()          MODE3()           PUPD

+GPIO60 = MODE0(GPIO60)        MODE1(CMRST)       MODE2()          MODE3()           PUPD

+GPIO61 = MODE0(GPIO61)        MODE1(EINT3)       MODE2(clko4)     MODE3()           PUPD

+GPIO62 = MODE0(GPIO62)        MODE1(EINT2)       MODE2(MIRQ)      MODE3(clko3)      PUPD

+GPIO63 = MODE0(GPIO63)        MODE1(EINT1)       MODE2()          MODE3()           PUPD

+GPIO64 = MODE0(GPIO64)        MODE1(EINT0)       MODE2()          MODE3()           PUPD

+GPIO65 = MODE0(GPIO65)        MODE1(MCINS)       MODE2()          MODE3()           PUPD

+GPIO66 = MODE0(GPIO66)        MODE1(MCWP)        MODE2()          MODE3()           PUPD

+GPIO67 = MODE0(GPIO67)        MODE1(MCCK)        MODE2()          MODE3()           PUPD

+GPIO68 = MODE0(GPIO68)        MODE1(MCDA3)       MODE2()          MODE3()           PUPD

+GPIO69 = MODE0(GPIO69)        MODE1(MCDA2)       MODE2()          MODE3()           PUPD

+GPIO70 = MODE0(GPIO70)        MODE1(MCDA1)       MODE2()          MODE3()           PUPD

+GPIO71 = MODE0(GPIO71)        MODE1(MCDA0)       MODE2()          MODE3()           PUPD

+GPIO72 = MODE0(GPIO72)        MODE1()            MODE2()          MODE3()           PUPD

+GPIO73 = MODE0(GPIO73)        MODE1()            MODE2()          MODE3()           PUPD

+GPIO74 = MODE0(GPIO74)        MODE1(clko6)       MODE2()          MODE3(SRCLKENA)   PUPD

+GPIO75 = MODE0(GPIO75)        MODE1()            MODE2()          MODE3(clko2)      PUPD

+GPIO76 = MODE0(GPIO76)        MODE1(IRDA_PDN)    MODE2(EINT6)     MODE3(EDIWS)      PUPD

+GPIO77 = MODE0(GPIO77)        MODE1(SRCLKENAI)   MODE2()          MODE3()           PUPD

+GPIO78 = MODE0(GPIO78)        MODE1(SCLK2)       MODE2()          MODE3()           Z

+GPIO79 = MODE0(GPIO79)        MODE1(SRST2)       MODE2()          MODE3()           Z

+GPIO80 = MODE0(GPIO80)        MODE1(SIO2)        MODE2()          MODE3()           Z

+GPIO81 = MODE0(GPIO81)        MODE1(BPI_BUS4)    MODE2()          MODE3()           PUPD

+

+

+[GPO]

+

+[EINT]

+EINT_COUNT=10

+EINT_DEBOUNCE_TIME_COUNT=10

+

+[ADC]

+ADC_COUNT=6

+

+[KEYPAD]

+;MT6253 use EXTEND_QWERTY_KEYPAD option. MT6253 is original ROW=6

+KEY_ROW=8

+KEY_COLUMN=9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6255.fig b/mcu/custom/driver/drv/Drv_Tool/MT6255.fig
new file mode 100644
index 0000000..a6f6f49
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6255.fig
@@ -0,0 +1,136 @@
+[Chip Type]

+Chip = MT6255

+GPIO_Pull_Sel=1

+GPIO_ModeNum=8

+

+[GPIO]

+GPIO0 =  MODE0(GPIO0)  MODE1(BPI_BUS0)  MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PD

+GPIO1 =  MODE0(GPIO1)  MODE1(BPI_BUS1)  MODE2(EINT5)        MODE3(PWM1)      MODE4(CLKM4)       MODE5(MC0WP)              MODE6()                         MODE7()                         PD

+GPIO2 =  MODE0(GPIO2)  MODE1(BPI_BUS2)  MODE2(EINT6)        MODE3(PWM2)      MODE4(CLKM5)       MODE5(MC0WP)              MODE6()                         MODE7()                         PD

+GPIO3 =  MODE0(GPIO3)  MODE1(BPI_BUS3)  MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PD

+GPIO4 =  MODE0(GPIO4)  MODE1(BPI_BUS4)  MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PD

+GPIO5 =  MODE0(GPIO5)  MODE1(MC0CM0)    MODE2(ARM7_JTRST_B) MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO6 =  MODE0(GPIO6)  MODE1(MC0DA0)    MODE2(ARM7_JTCK)    MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO7 =  MODE0(GPIO7)  MODE1(MC0DA1)    MODE2(ARM7_JTDI)    MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO8 =  MODE0(GPIO8)  MODE1(MC0DA2)    MODE2(ARM7_JTMS)    MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO9 =  MODE0(GPIO9)  MODE1(MC0DA3)    MODE2(ARM7_JTDO)    MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO10 = MODE0(GPIO10) MODE1(MC0CK)     MODE2(ARM7_JRTCK)   MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO11 = MODE0(GPIO11) MODE1(MC1CM0)    MODE2(NLD11)        MODE3(EDIWS)     MODE4(SPI_SCK)     MODE5(MC0DA4)             MODE6()                         MODE7()                         PU

+GPIO12 = MODE0(GPIO12) MODE1(MC1DA0)    MODE2(NLD10)        MODE3(EDIDAT)    MODE4(SPI_MOSI)    MODE5(MC0DA5)             MODE6()                         MODE7()                         PU

+GPIO13 = MODE0(GPIO13) MODE1(MC1DA1)    MODE2(NLD9)         MODE3(SPI_MISO)  MODE4()            MODE5(MC0DA6)             MODE6()                         MODE7()                         PU

+GPIO14 = MODE0(GPIO14) MODE1(MC1CK)     MODE2(NLD12)        MODE3(EDICK)     MODE4(SPI_CS_N)    MODE5(MC0DA7)             MODE6()                         MODE7()                         PU

+GPIO15 = MODE0(GPIO15) MODE1(LSA0)      MODE2(EINT3)        MODE3(EDICK)     MODE4(CLKM1)       MODE5(TDMA_SDAT[1])       MODE6()                         MODE7()                         PD

+GPIO16 = MODE0(GPIO16) MODE1(LSCK)      MODE2(EINT4)        MODE3(EDIWS)     MODE4(CLKM2)       MODE5(TDMA_CK)            MODE6()                         MODE7()                         PU

+GPIO17 = MODE0(GPIO17) MODE1(LSDA)      MODE2(SRCLKENAI)    MODE3(EDIDAT)    MODE4(CLKM3)       MODE5(TDMA_SDAT[0])       MODE6(PWM_IN)                   MODE7()                         PU

+GPIO18 = MODE0(GPIO18) MODE1(LPCE1B)    MODE2(SRCLKENAI)    MODE3(KCOL7)     MODE4(LSCE0B)      MODE5(PWM0)               MODE6(CLKM0)                    MODE7(NCE1B)                    PU

+GPIO19 = MODE0(GPIO19) MODE1(LPCE0B)    MODE2()             MODE3()          MODE4(LSCE1B)      MODE5(TDMA_FS)            MODE6()                         MODE7()                         PU

+GPIO20 = MODE0(GPIO20) MODE1(LPTE)      MODE2()             MODE3()          MODE4()            MODE5(TDMA_EVTVAL)        MODE6()                         MODE7()                         PD

+GPIO21 = MODE0(GPIO21) MODE1(LRSTB)     MODE2()             MODE3()          MODE4()            MODE5(TDMA_DTIRQ_F)       MODE6()                         MODE7()                         PU

+GPIO22 = MODE0(GPIO22) MODE1(LRDB)      MODE2()             MODE3()          MODE4()            MODE5(CTIRQ1_IRQ_B)       MODE6()                         MODE7()                         PU

+GPIO23 = MODE0(GPIO23) MODE1(LPA0)      MODE2()             MODE3()          MODE4()            MODE5(CTIRQ2_IRQ_B)       MODE6()                         MODE7()                         PD

+GPIO24 = MODE0(GPIO24) MODE1(LWRB)      MODE2()             MODE3()          MODE4()            MODE5(TDMA_BTXEN)         MODE6()                         MODE7()                         PU

+GPIO25 = MODE0(GPIO25) MODE1(NLD8)      MODE2()             MODE3()          MODE4()            MODE5(TDMA_BTXFS)         MODE6()                         MODE7()                         PD

+GPIO26 = MODE0(GPIO26) MODE1(NLD7)      MODE2()             MODE3()          MODE4()            MODE5(TDMA_BRXEN)         MODE6()                         MODE7()                         PD

+GPIO27 = MODE0(GPIO27) MODE1(NLD6)      MODE2()             MODE3()          MODE4()            MODE5(TDMA_BRXFS)         MODE6()                         MODE7()                         PD

+GPIO28 = MODE0(GPIO28) MODE1(NLD5)      MODE2()             MODE3()          MODE4()            MODE5(CLOCK_OFF)          MODE6()                         MODE7()                         PD

+GPIO29 = MODE0(GPIO29) MODE1(NLD4)      MODE2()             MODE3()          MODE4()            MODE5(MDSRCLKENA)         MODE6()                         MODE7()                         PD

+GPIO30 = MODE0(GPIO30) MODE1(NLD3)      MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PD

+GPIO31 = MODE0(GPIO31) MODE1(NLD2)      MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PD

+GPIO32 = MODE0(GPIO32) MODE1(NLD1)      MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PD

+GPIO33 = MODE0(GPIO33) MODE1(NLD0)      MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PD

+GPIO34 = MODE0(GPIO34) MODE1(NRNB)      MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO35 = MODE0(GPIO35) MODE1(NCLE)      MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PD

+GPIO36 = MODE0(GPIO36) MODE1(NALE)      MODE2(MC0RST)       MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PD

+GPIO37 = MODE0(GPIO37) MODE1(NWEB)      MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO38 = MODE0(GPIO38) MODE1(NREB)      MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO39 = MODE0(GPIO39) MODE1(NCE0B)     MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO40 = MODE0(GPIO40) MODE1(CMRST)     MODE2(D1_TID0)      MODE3()          MODE4(DBG_MON[0])  MODE5()                   MODE6()                         MODE7()                         PD

+GPIO41 = MODE0(GPIO41) MODE1(CMPDN)     MODE2(D1_TID1)      MODE3()          MODE4(DBG_MON[1])  MODE5(DBG_BT_IDS_IN)      MODE6()                         MODE7(DBG_FM_IDS_OUT[12])       PD

+GPIO42 = MODE0(GPIO42) MODE1(CMVREF)    MODE2()             MODE3()          MODE4(DBG_MON[2])  MODE5(DBG_BT_IDS_OUT[11]) MODE6(DBG_RF_TEST_SDATAI)       MODE7(DBG_FM_IDS_OUT[11])       PD

+GPIO43 = MODE0(GPIO43) MODE1(CMHREF)    MODE2()             MODE3()          MODE4(DBG_MON[3])  MODE5(DBG_BT_IDS_OUT[10]) MODE6(DBG_RF_TEST_EN)           MODE7(DBG_FM_IDS_OUT[10])       PD

+GPIO44 = MODE0(GPIO44) MODE1(CMPCLK)    MODE2()             MODE3()          MODE4(DBG_MON[4])  MODE5(DBG_BT_IDS_OUT[9])  MODE6(DBG_RF_TEST_SCLK)         MODE7(DBG_FM_IDS_OUT[9])        PD

+GPIO45 = MODE0(GPIO45) MODE1(CMMCLK)    MODE2()             MODE3(BPI_BUS5)  MODE4(DBG_MON[5])  MODE5(DBG_BT_IDS_OUT[8])  MODE6(DBG_RF_TEST_AUXOUT)       MODE7(DBG_FM_IDS_OUT[8])        PD

+GPIO46 = MODE0(GPIO46) MODE1(CMDAT7)    MODE2()             MODE3(BPI_BUS6)  MODE4(DBG_MON[6])  MODE5(DBG_BT_IDS_OUT[7])  MODE6(DBG_RF_TEST_DCXODELAY)    MODE7(DBG_FM_IDS_OUT[7])        PD

+GPIO47 = MODE0(GPIO47) MODE1(CMDAT6)    MODE2()             MODE3(BPI_BUS7)  MODE4(DBG_MON[7])  MODE5(DBG_BT_IDS_OUT[6])  MODE6(DBG_RF_TEST_ENEXT)        MODE7(DBG_FM_IDS_OUT[6])        PD

+GPIO48 = MODE0(GPIO48) MODE1(CMDAT5)    MODE2()             MODE3(BPI_BUS8)  MODE4(DBG_MON[8])  MODE5(DBG_BT_IDS_OUT[5])  MODE6(DBG_RF_TEST_ENBT)         MODE7(DBG_FM_IDS_OUT[5])        PD

+GPIO49 = MODE0(GPIO49) MODE1(CMDAT4)    MODE2()             MODE3(BPI_BUS9)  MODE4(DBG_MON[9])  MODE5(DBG_BT_IDS_OUT[4])  MODE6(DBG_RF_TEST_ENBB)         MODE7(DBG_FM_IDS_OUT[4])        PD

+GPIO50 = MODE0(GPIO50) MODE1(CMDAT3)    MODE2()             MODE3()          MODE4(DBG_MON[10]) MODE5(DBG_BT_IDS_OUT[3])  MODE6(DBG_RF_TEST_SDATAO)       MODE7(DBG_FM_IDS_OUT[3])        PD

+GPIO51 = MODE0(GPIO51) MODE1(CMDAT2)    MODE2(D2_TID2)      MODE3(D1IMS)     MODE4(DBG_MON[11]) MODE5(DBG_BT_IDS_OUT[2])  MODE6(DBG_RF_TEST_SDATAI)       MODE7(DBG_FM_IDS_OUT[2])        PD

+GPIO52 = MODE0(GPIO52) MODE1(CMDAT1)    MODE2(D2_TID0)      MODE3(D1ICK)     MODE4(DBG_MON[12]) MODE5(DBG_BT_IDS_OUT[1])  MODE6(DBG_RF_TEST_EN)           MODE7(DBG_FM_IDS_OUT[1])        PD

+GPIO53 = MODE0(GPIO53) MODE1(CMDAT0)    MODE2(D2_TID1)      MODE3(D1ID)      MODE4(DBG_MON[13]) MODE5(DBG_BT_IDS_OUT[0])  MODE6(DBG_RF_TEST_SCLK)         MODE7(DBG_FM_IDS_OUT[0])        PD

+GPIO54 = MODE0(GPIO54) MODE1(SCL)       MODE2(D2_TID3)      MODE3(D2ICK)     MODE4(DBG_MON[14]) MODE5(DBG_SRCLKENA)       MODE6()                         MODE7()                         PU

+GPIO55 = MODE0(GPIO55) MODE1(SDA)       MODE2(D2_TID4)      MODE3(D2ID)      MODE4(DBG_MON[15]) MODE5()                   MODE6()                         MODE7()                         PU

+GPIO56 = MODE0()       MODE1()          MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PD

+GPIO57 = MODE0(GPIO57) MODE1(URXD1)     MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO58 = MODE0(GPIO58) MODE1(UTXD1)     MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO59 = MODE0(GPIO59) MODE1(UCTS1)     MODE2(EINT10)       MODE3(NLD16)     MODE4(KROW6)       MODE5(IRDA_TXD)           MODE6(UTXD3)                    MODE7(PTA0)                     PU

+GPIO60 = MODE0(GPIO60) MODE1(URTS1)     MODE2(EINT9)        MODE3(NLD17)     MODE4(KCOL7)       MODE5(IRDA_RXD)           MODE6(URXD3)                    MODE7(PTA1)                     PU

+GPIO61 = MODE0(GPIO61) MODE1(URXD2)     MODE2(UCTS3)        MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO62 = MODE0(GPIO62) MODE1(UTXD2)     MODE2(URTS3)        MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO63 = MODE0()       MODE1()          MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PD

+GPIO64 = MODE0()       MODE1()          MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PD

+GPIO65 = MODE0(GPIO65) MODE1(DAICLK)    MODE2(KCOL7)        MODE3(IRDA_RXD)  MODE4(EDICK)       MODE5(SPI_CS_N)           MODE6(PWM_IN)                   MODE7()                         PD

+GPIO66 = MODE0(GPIO66) MODE1(DAIPCMOUT) MODE2(KROW6)        MODE3(IRDA_TXD)  MODE4(EDIWS)       MODE5(SPI_SCK)            MODE6()                         MODE7()                         PD

+GPIO67 = MODE0(GPIO67) MODE1(DAIPCMIN)  MODE2(KROW7)        MODE3(IRDA_PDN)  MODE4(EDIDAT)      MODE5(SPI_MOSI)           MODE6()                         MODE7()                         PD

+GPIO68 = MODE0(GPIO68) MODE1(DAIRST)    MODE2(MC0INS)       MODE3(SPI_MISO)  MODE4()            MODE5()                   MODE6(UCTS2)                    MODE7()                         PU

+GPIO69 = MODE0(GPIO69) MODE1(DAISYNC)   MODE2(MC0WP)        MODE3()          MODE4(KROW6)       MODE5(CLKM8)              MODE6(URTS2)                    MODE7()                         PD

+GPIO70 = MODE0(GPIO70) MODE1(MC0INS)    MODE2(NLD15)        MODE3(EDICK)     MODE4(SPI_CS_N)    MODE5(CLKM9)              MODE6(D2_TID5)                  MODE7(D2IMS)                    PU

+GPIO71 = MODE0(GPIO71) MODE1(EINT11)    MODE2(MC0WP)        MODE3(NLD14)     MODE4(KROW6)       MODE5(EDIWS)              MODE6(CLKM10)                   MODE7(D2_TID6)                  PU

+GPIO72 = MODE0(GPIO72) MODE1(EINT0)     MODE2(SPI_SCK)      MODE3(LPCE2B)    MODE4(NLD17)       MODE5()                   MODE6()                         MODE7()                         PU

+GPIO73 = MODE0(GPIO73) MODE1(EINT1)     MODE2(KCOL7)        MODE3(SPI_MOSI)  MODE4(NLD16)       MODE5()                   MODE6()                         MODE7()                         PU

+GPIO74 = MODE0(GPIO74) MODE1(EINT2)     MODE2(NLD13)        MODE3(KROW7)     MODE4(EDIDAT)      MODE5(SPI_MISO)           MODE6(PWM_IN)                   MODE7()                         PU

+GPIO75 = MODE0(GPIO75) MODE1(KCOL6)     MODE2(SRCLKENAI)    MODE3(MC0INS)    MODE4(IRDA_PDN)    MODE5(PWM3)               MODE6(CLKM6)                    MODE7(PTA0)                     PU

+GPIO76 = MODE0(GPIO76) MODE1(KCOL5)     MODE2(EINT7)        MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO77 = MODE0(GPIO77) MODE1(KCOL4)     MODE2(EINT8)        MODE3(URXD3)     MODE4()            MODE5()                   MODE6(CLKSW_ABIST_HMON_DATA[3]) MODE7(MIXED_ABIST_HMON_DATA[3]) PU

+GPIO78 = MODE0(GPIO78) MODE1(KCOL3)     MODE2()             MODE3()          MODE4()            MODE5()                   MODE6(CLKSW_ABIST_HMON_DATA[2]) MODE7(MIXED_ABIST_HMON_DATA[2]) PU

+GPIO79 = MODE0(GPIO79) MODE1(KCOL2)     MODE2()             MODE3()          MODE4()            MODE5()                   MODE6(CLKSW_ABIST_HMON_DATA[1]) MODE7(MIXED_ABIST_HMON_DATA[1]) PU

+GPIO80 = MODE0(GPIO80) MODE1(KCOL1)     MODE2()             MODE3()          MODE4()            MODE5()                   MODE6(CLKSW_ABIST_HMON_DATA[0]) MODE7(MIXED_ABIST_HMON_DATA[0]) PU

+GPIO81 = MODE0(GPIO81) MODE1(KCOL0)     MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PU

+GPIO82 = MODE0(GPIO82) MODE1(KROW5)     MODE2(UTXD3)        MODE3(PWM4)      MODE4(CLKM7)       MODE5(PTA1)               MODE6()                         MODE7()                         PD

+GPIO83 = MODE0(GPIO83) MODE1(KROW4)     MODE2()             MODE3()          MODE4()            MODE5()                   MODE6(CLKSW_ABIST_LMON_DATA[3]) MODE7(MIXED_ABIST_LMON_DATA[3]) PD

+GPIO84 = MODE0(GPIO84) MODE1(KROW3)     MODE2()             MODE3()          MODE4()            MODE5()                   MODE6(CLKSW_ABIST_LMON_DATA[2]) MODE7(MIXED_ABIST_LMON_DATA[2]) PD

+GPIO85 = MODE0(GPIO85) MODE1(KROW2)     MODE2()             MODE3()          MODE4()            MODE5()                   MODE6(CLKSW_ABIST_LMON_DATA[1]) MODE7(MIXED_ABIST_LMON_DATA[1]) PD

+GPIO86 = MODE0(GPIO86) MODE1(KROW1)     MODE2()             MODE3()          MODE4()            MODE5()                   MODE6(CLKSW_ABIST_LMON_DATA[0]) MODE7(MIXED_ABIST_LMON_DATA[0]) PD

+GPIO87 = MODE0(GPIO87) MODE1(KROW0)     MODE2()             MODE3()          MODE4()            MODE5()                   MODE6()                         MODE7()                         PD

+

+[GPO]

+

+[EINT]

+EINT_COUNT=12

+EINT_DEBOUNCE_TIME_COUNT=12

+

+[EINT_EX_PIN]

+0

+1

+2

+3

+4

+5

+6

+7

+8

+9

+10

+11

+

+

+[ADC]

+ADC_COUNT=3

+

+[ADC_INT_CH]

+0 = ADC_VBAT

+1 = ADC_VISENSE

+2 = ADC_VCHARGER

+3 = ADC_VBATTMP

+4 = ADC_PCBTMP

+5 = ADC_CHR_USB

+

+

+[ADC_EX_CH]

+6

+7

+8

+

+[KEYPAD]

+KEY_ROW=8

+KEY_COLUMN=9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6255MP.fig b/mcu/custom/driver/drv/Drv_Tool/MT6255MP.fig
new file mode 100644
index 0000000..bd06523
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6255MP.fig
@@ -0,0 +1,189 @@
+[Chip Type]

+Chip = MT6255

+GPIO_ModeNum = 8

+GPIO_Pull_Sel=1

+PMIC_Config=1

+PMIC_Volt_Format = 1

+

+[GPIO]

+GPIO0   = MODE0(GPIO0)   MODE1(SPI_MOSI)  MODE2(CLKM1)     MODE3(SCL)        MODE4(LSCE1B)      MODE5(BPI_BUS6)           MODE6(dbg_usb_din[0])        MODE7()                     PD

+GPIO1   = MODE0(GPIO1)   MODE1(SPI_MISO)  MODE2(PWM_B)     MODE3(UCTS2)      MODE4(EINT12)      MODE5(BPI_BUS7)           MODE6(dbg_usb_din[1])        MODE7()	                   PD

+GPIO2   = MODE0(GPIO2)   MODE1(SPI_SCK)   MODE2(SRCLKENAN) MODE3(URTS2)      MODE4(PTA1)        MODE5(BPI_BUS8)           MODE6(dbg_usb_din[2])        MODE7()	                   PD

+GPIO3   = MODE0(GPIO3)   MODE1(SPI_CS_N)  MODE2()          MODE3(SDA)        MODE4(PTA0)        MODE5(BPI_BUS9)           MODE6(dbg_usb_din[3])        MODE7()	                   PD

+GPIO4   = MODE0(GPIO4)   MODE1(URXD1)     MODE2()          MODE3(MC2INS)     MODE4(PTA1)        MODE5(PWM_C)              MODE6(dbg_usb_din[4])        MODE7(UTXD1)	           PU

+GPIO5   = MODE0(GPIO5)   MODE1(UTXD1)     MODE2(CLKM3)     MODE3(MC1INS)     MODE4(PTA0)        MODE5()                   MODE6(dbg_usb_din[5])        MODE7(URXD1)	           PU

+GPIO6   = MODE0(GPIO6)   MODE1(UCTS1)     MODE2(URXD3)     MODE3(EINT7)      MODE4(SRCLKENAI)   MODE5(SCL)                MODE6(dbg_usb_din[6])        MODE7()	                   PU

+GPIO7   = MODE0(GPIO7)   MODE1(URTS1)     MODE2(UTXD3)     MODE3(EINT8)      MODE4(SRCLKENA)    MODE5(SDA)                MODE6(dbg_usb_din[7])        MODE7()	                   PU

+GPIO8   = MODE0(GPIO8)   MODE1(URXD2)     MODE2(UCTS3)     MODE3(MC2INS)     MODE4(PTA1)        MODE5(CLKM2)              MODE6(dbg_usb_din[8])        MODE7(UTXD2)	           PD

+GPIO9   = MODE0(GPIO9)   MODE1(UTXD2)     MODE2(URTS3)     MODE3(MC1INS)     MODE4(PTA0)        MODE5()                   MODE6()                      MODE7(URXD2)	           PD

+GPIO10  = MODE0(GPIO10)  MODE1(LSA0)      MODE2(URXD3)     MODE3(PWM_IN)     MODE4(EDICK)       MODE5(SRCLKENA)           MODE6(TDMA_SDAT[1])          MODE7(UTXD3)	           PD

+GPIO11  = MODE0(GPIO11)  MODE1(LSCK)      MODE2(UTXD3)     MODE3(PWM_A)      MODE4(EDIWS)       MODE5(SRCLKENAI)          MODE6()                      MODE7(URXD3)	           PD

+GPIO12  = MODE0(GPIO12)  MODE1(LSDA)      MODE2(LPCE3B)    MODE3(EINT10)     MODE4(EDIDAT)      MODE5(SRCLKENAN)          MODE6(TDMA_SDAT[0])          MODE7()	                   PD

+GPIO13  = MODE0(GPIO13)  MODE1(LPCE2B)    MODE2(LSCE1B)    MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO14  = MODE0(GPIO14)  MODE1(LPCE1B)    MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO15  = MODE0(GPIO15)  MODE1(LPCE0B)    MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO16  = MODE0(GPIO16)  MODE1(LPTE)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO17  = MODE0(GPIO17)  MODE1(LRSTB)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO18  = MODE0(GPIO18)  MODE1(LRDB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO19  = MODE0(GPIO19)  MODE1(LPA0)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO20  = MODE0(GPIO20)  MODE1(LWRB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO21  = MODE0(GPIO21)  MODE1(NLD17)     MODE2(URXD3)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO22  = MODE0(GPIO22)  MODE1(NLD16)     MODE2(UTXD3)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO23  = MODE0(GPIO23)  MODE1(NLD15)     MODE2(SFIO0)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO24  = MODE0(GPIO24)  MODE1(NLD14)     MODE2(SFIO1)     MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[12])     MODE7()	                   PD

+GPIO25  = MODE0(GPIO25)  MODE1(NLD13)     MODE2(SFIO3)     MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_A_FUNC_DCK)  MODE7(dbg_MIXED_A_FUNC_DCK) PD

+GPIO26  = MODE0(GPIO26)  MODE1(NLD12)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO27  = MODE0(GPIO27)  MODE1(NLD11)     MODE2(SFCS)      MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[11])     MODE7()	                   PD

+GPIO28  = MODE0(GPIO28)  MODE1(NLD10)     MODE2(SFIO2)     MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[10])     MODE7()	                   PD

+GPIO29  = MODE0(GPIO29)  MODE1(NLD9)      MODE2(SFCLK)     MODE3()           MODE4()            MODE5(dbg_usb_dout[9])    MODE6(dbg_CLKSW_DIO[9])      MODE7()	                   PD

+GPIO30  = MODE0(GPIO30)  MODE1(NLD8)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[8])    MODE6(dbg_CLKSW_DIO[8])      MODE7()	                   PD

+GPIO31  = MODE0(GPIO31)  MODE1(NLD7)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[7])    MODE6(dbg_CLKSW_DIO[7])      MODE7(dbg_MIXED_DIO[7])	   PD

+GPIO32  = MODE0(GPIO32)  MODE1(NLD6)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[6])    MODE6(dbg_CLKSW_DIO[6])      MODE7(dbg_MIXED_DIO[6])	   PD

+GPIO33  = MODE0(GPIO33)  MODE1(NLD5)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[5])    MODE6(dbg_CLKSW_DIO[5])      MODE7(dbg_MIXED_DIO[5])	   PD

+GPIO34  = MODE0(GPIO34)  MODE1(NLD4)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[4])    MODE6(dbg_CLKSW_DIO[4])      MODE7(dbg_MIXED_DIO[4])	   PD

+GPIO35  = MODE0(GPIO35)  MODE1(NLD3)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[3])    MODE6(dbg_CLKSW_DIO[3])      MODE7(dbg_MIXED_DIO[3])	   PD

+GPIO36  = MODE0(GPIO36)  MODE1(NLD2)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[2])    MODE6(dbg_CLKSW_DIO[2])      MODE7(dbg_MIXED_DIO[2])	   PD

+GPIO37  = MODE0(GPIO37)  MODE1(NLD1)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[1])    MODE6(dbg_CLKSW_DIO[1])      MODE7(dbg_MIXED_DIO[1])	   PD

+GPIO38  = MODE0(GPIO38)  MODE1(NLD0)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[0])    MODE6(dbg_CLKSW_DIO[0])      MODE7(dbg_MIXED_DIO[0])	   PD

+GPIO39  = MODE0(GPIO39)  MODE1(NRNB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO40  = MODE0(GPIO40)  MODE1(NCLE)      MODE2(KROW7)     MODE3(MC1DA4)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO41  = MODE0(GPIO41)  MODE1(NALE)      MODE2(KCOL7)     MODE3(MC1DA5)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO42  = MODE0(GPIO42)  MODE1(NWEB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO43  = MODE0(GPIO43)  MODE1(NREB)      MODE2()          MODE3(MC1DA7)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO44  = MODE0(GPIO44)  MODE1(NCE0B)     MODE2(KROW6)     MODE3(MC1DA6)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO45  = MODE0(GPIO45)  MODE1(CMRST)     MODE2()          MODE3(D2_TID1)    MODE4(dbg_mon[0])  MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO46  = MODE0(GPIO46)  MODE1(CMPDN)     MODE2()          MODE3(D2_TID2)    MODE4(dbg_mon[1])  MODE5(dbg_bt_ids_in)      MODE6()                      MODE7(dbg_fm_ids_out[12])   PD

+GPIO47  = MODE0(GPIO47)  MODE1(CMVSYNC)   MODE2()          MODE3()           MODE4(dbg_mon[2])  MODE5(dbg_bt_ids_out[11]) MODE6(dbg_rf_test_sdatai)    MODE7(dbg_fm_ids_out[11])   PD

+GPIO48  = MODE0(GPIO48)  MODE1(CMHSYNC)   MODE2()          MODE3()           MODE4(dbg_mon[3])  MODE5(dbg_bt_ids_out[10]) MODE6(dbg_rf_test_en)        MODE7(dbg_fm_ids_out[10])   PD

+GPIO49  = MODE0(GPIO49)  MODE1(CMPCLK)    MODE2(CM_SSCK)   MODE3()           MODE4(dbg_mon[4])  MODE5(dbg_bt_ids_out[9])  MODE6(dbg_rf_test_sclk)      MODE7(dbg_fm_ids_out[9])	   PD

+GPIO50  = MODE0(GPIO50)  MODE1(CMMCLK)    MODE2()          MODE3()           MODE4(dbg_mon[5])  MODE5(dbg_bt_ids_out[8])  MODE6(dbg_rf_test_auxout)    MODE7(dbg_fm_ids_out[8])	   PD

+GPIO51  = MODE0(GPIO51)  MODE1(CMDAT7)    MODE2(BPI_BUS6)  MODE3(D2_TID3)    MODE4(dbg_mon[6])  MODE5(dbg_bt_ids_out[7])  MODE6(dbg_rf_test_dcxodelay) MODE7(dbg_fm_ids_out[7])	   PD

+GPIO52  = MODE0(GPIO52)  MODE1(CMDAT6)    MODE2(BPI_BUS7)  MODE3(D2_TID4)    MODE4(dbg_mon[7])  MODE5(dbg_bt_ids_out[6])  MODE6(dbg_rf_test_enext)     MODE7(dbg_fm_ids_out[6])	   PD

+GPIO53  = MODE0(GPIO53)  MODE1(CMDAT5)    MODE2(BPI_BUS8)  MODE3(D2_TID5)    MODE4(dbg_mon[8])  MODE5(dbg_bt_ids_out[5])  MODE6(dbg_rf_test_enbt)      MODE7(dbg_fm_ids_out[5])	   PD

+GPIO54  = MODE0(GPIO54)  MODE1(CMDAT4)    MODE2(BPI_BUS9)  MODE3(D2_TID6)    MODE4(dbg_mon[9])  MODE5(dbg_bt_ids_out[4])  MODE6(dbg_rf_test_enbb)      MODE7(dbg_fm_ids_out[4])	   PD

+GPIO55  = MODE0(GPIO55)  MODE1(CMDAT3)    MODE2()          MODE3(D2_TID7)    MODE4(dbg_mon[10]) MODE5(dbg_bt_ids_out[3])  MODE6(dbg_rf_test_sdatao)    MODE7(dbg_fm_ids_out[3])	   PD

+GPIO56  = MODE0(GPIO56)  MODE1(CMDAT2)    MODE2()          MODE3(D2_TID0)    MODE4(dbg_mon[11]) MODE5(dbg_bt_ids_out[2])  MODE6(dbg_rf_test_sdatai)    MODE7(dbg_fm_ids_out[2])	   PD

+GPIO57  = MODE0(GPIO57)  MODE1(CMDAT1)    MODE2()          MODE3()           MODE4(dbg_mon[12]) MODE5(dbg_bt_ids_out[1])  MODE6(dbg_rf_test_en)        MODE7(dbg_fm_ids_out[1])	   PD

+GPIO58  = MODE0(GPIO58)  MODE1(CMDAT0)    MODE2(CM_SSDA)   MODE3(D2ICK)      MODE4(dbg_mon[13]) MODE5(dbg_bt_ids_out[0])  MODE6(dbg_rf_test_sclk)      MODE7(dbg_fm_ids_out[0])	   PD

+GPIO59  = MODE0(GPIO59)  MODE1(SCL)       MODE2()          MODE3(D2ID)       MODE4(dbg_mon[14]) MODE5(dbg_srclkena)       MODE6(dbg_ABBSYS_DIO[0])     MODE7(dbg_MIXED_DIO[0])	   PD

+GPIO60  = MODE0(GPIO60)  MODE1(SDA)       MODE2()          MODE3(D2IMS)      MODE4(dbg_mon[15]) MODE5()                   MODE6(dbg_ABBSYS_DIO[1])     MODE7(dbg_MIXED_DIO[1])     PD

+GPIO61  = MODE0(GPIO61)  MODE1(EINT0)     MODE2(LSCE0B)    MODE3(CLKM6)      MODE4()            MODE5(NCE1B)              MODE6(dbg_ABBSYS_DIO[2])     MODE7(dbg_MIXED_DIO[2])     PD

+GPIO62  = MODE0(GPIO62)  MODE1(EINT1)     MODE2(CIRQ0)     MODE3(CLKM7)      MODE4()            MODE5()                   MODE6(dbg_ABBSYS_DIO[3])     MODE7(dbg_MIXED_DIO[3])     PD

+GPIO63  = MODE0(GPIO63)  MODE1(EINT2)     MODE2(CIRQ1)     MODE3()           MODE4()            MODE5()                   MODE6(dbg_ABBSYS_DIO[4])     MODE7(dbg_MIXED_DIO[4])     PD

+GPIO64  = MODE0(GPIO64)  MODE1(EINT3)     MODE2(CIRQ2)     MODE3(UCTS3)      MODE4()            MODE5()                   MODE6(dbg_ABBSYS_DIO[5])     MODE7(dbg_MIXED_DIO[5])     PD

+GPIO65  = MODE0(GPIO65)  MODE1(EINT4)     MODE2(PWM_C)     MODE3(URTS3)      MODE4(LSDI)        MODE5()                   MODE6(dbg_ABBSYS_DIO[6])     MODE7(dbg_MIXED_DIO[6])     PD

+GPIO66  = MODE0(GPIO66)  MODE1(DAICLK)    MODE2(KROW6)     MODE3(MC1INS)     MODE4()            MODE5()                   MODE6(dbg_ABBSYS_DIO[7])     MODE7(dbg_MIXED_DIO[7])     PD

+GPIO67  = MODE0(GPIO67)  MODE1(DAIPCMOUT) MODE2(EDICK)     MODE3(KCOL7)      MODE4(SRCLKENAN)   MODE5()                   MODE6(dbg_ABBSYS_DIO[8])     MODE7()	                   PD

+GPIO68  = MODE0(GPIO68)  MODE1(DAIPCMIN)  MODE2(EDIWS)     MODE3(CLKM4)      MODE4(SCL)         MODE5()                   MODE6(dbg_ABBSYS_DIO[9])     MODE7()	                   PD

+GPIO69  = MODE0(GPIO69)  MODE1(DAIRST)    MODE2(EDIDAT)    MODE3(SRCLKENA)   MODE4(SDA)         MODE5()                   MODE6(dbg_ABBSYS_DIO[10])    MODE7()	                   PD

+GPIO70  = MODE0(GPIO70)  MODE1(DAISYNC)   MODE2(KROW7)     MODE3(LSDI)       MODE4(PWM_IN)      MODE5()                   MODE6(dbg_ABBSYS_A_FUNC_DCK) MODE7(dbg_MIXED_A_FUNC_DCK) PD

+GPIO71  = MODE0(GPIO71)  MODE1(KCOL6)     MODE2(MC2INS)    MODE3(LSDI)       MODE4(PWM_IN)      MODE5(EINT4)              MODE6()                      MODE7()	                   PU

+GPIO72  = MODE0(GPIO72)  MODE1(KCOL5)     MODE2(EINT5)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO73  = MODE0(GPIO73)  MODE1(KCOL4)     MODE2(SCL)       MODE3()           MODE4()            MODE5(CLKSW_HMON_DATA[3]) MODE6(ABBSYS_HMON_DATA[3])   MODE7(MIXED_HMON_DATA[3])   PU

+GPIO74  = MODE0(GPIO74)  MODE1(KCOL3)     MODE2()          MODE3()           MODE4()            MODE5(CLKSW_HMON_DATA[2]) MODE6(ABBSYS_HMON_DATA[2])   MODE7(MIXED_HMON_DATA[2])   PU

+GPIO75  = MODE0(GPIO75)  MODE1(KCOL2)     MODE2()          MODE3()           MODE4()            MODE5(CLKSW_HMON_DATA[1]) MODE6(ABBSYS_HMON_DATA[1])   MODE7(MIXED_HMON_DATA[1])   PU

+GPIO76  = MODE0(GPIO76)  MODE1(KCOL1)     MODE2()          MODE3()           MODE4()            MODE5(CLKSW_HMON_DATA[0]) MODE6(ABBSYS_HMON_DATA[0])   MODE7(MIXED_HMON_DATA[0])   PU

+GPIO77  = MODE0(GPIO77)  MODE1(KCOL0)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO78  = MODE0(GPIO78)  MODE1(KROW5)     MODE2(EINT11)    MODE3(SRCLKENAI)  MODE4(MC2WP)       MODE5(CLKSW_LMON_DATA[3]) MODE6(ABBSYS_LMON_DATA[3])   MODE7(MIXED_LMON_DATA[3])   PD

+GPIO79  = MODE0(GPIO79)  MODE1(KROW4)     MODE2(PWM_D)     MODE3(CLKM5)      MODE4(MC1WP)       MODE5(EINT6)              MODE6(dbg_ABBSYS_DIO[11])    MODE7()                     PD

+GPIO80  = MODE0(GPIO80)  MODE1(KROW3)     MODE2(SDA)       MODE3()           MODE4()            MODE5()                   MODE6(dbg_ABBSYS_DIO[12])    MODE7()                     PD

+GPIO81  = MODE0(GPIO81)  MODE1(KROW2)     MODE2()          MODE3()           MODE4()            MODE5(CLKSW_LMON_DATA[2]) MODE6(ABBSYS_LMON_DATA[2])   MODE7(MIXED_LMON_DATA[2])   PD

+GPIO82  = MODE0(GPIO82)  MODE1(KROW1)     MODE2()          MODE3()           MODE4()            MODE5(CLKSW_LMON_DATA[1]) MODE6(ABBSYS_LMON_DATA[1])   MODE7(MIXED_LMON_DATA[1])   PD

+GPIO83  = MODE0(GPIO83)  MODE1(KROW0)     MODE2()          MODE3()           MODE4()            MODE5(CLKSW_LMON_DATA[0]) MODE6(ABBSYS_LMON_DATA[0])   MODE7(MIXED_LMON_DATA[0])   PD

+GPIO84  = MODE0(GPIO84)  MODE1(MC1RST)    MODE2(MC1WP)     MODE3(LSCE0B)     MODE4(PTA1)        MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO85  = MODE0(GPIO85)  MODE1(MC1CK_FB)  MODE2(MC2WP)     MODE3()           MODE4(PTA0)        MODE5(BT_DBGI_N)          MODE6()                      MODE7()	                   PU

+GPIO86  = MODE0(GPIO86)  MODE1(MC1CM0)    MODE2()          MODE3()           MODE4()            MODE5(BT_TRST_B)          MODE6(dbg_mon[0])            MODE7(dbg_usb_dio[0])       PU

+GPIO87  = MODE0(GPIO87)  MODE1(MC1DA0)    MODE2()          MODE3()           MODE4()            MODE5(BT_TCK)             MODE6(dbg_mon[1])            MODE7(dbg_usb_dio[1])       PU

+GPIO88  = MODE0(GPIO88)  MODE1(MC1DA1)    MODE2()          MODE3()           MODE4()            MODE5(BT_TDI)             MODE6(dbg_mon[2])            MODE7(dbg_usb_dio[2])       PU

+GPIO89  = MODE0(GPIO89)  MODE1(MC1DA2)    MODE2()          MODE3()           MODE4()            MODE5(BT_TMS)             MODE6(dbg_mon[3])            MODE7(dbg_usb_dio[3])       PU

+GPIO90  = MODE0(GPIO90)  MODE1(MC1DA3)    MODE2()          MODE3()           MODE4()            MODE5(BT_TDO)             MODE6(dbg_mon[4])            MODE7(dbg_usb_dio[4])       PU

+GPIO91  = MODE0(GPIO91)  MODE1(MC1CK)     MODE2(EINT13)    MODE3()           MODE4()            MODE5(BT_DBGACK_N)        MODE6()                      MODE7()	                   PU

+GPIO92  = MODE0(GPIO92)  MODE1(MC2CM0)    MODE2(MC1DA4)    MODE3(KROW7)      MODE4(URXD2)       MODE5(PTA1)               MODE6(dbg_mon[5])            MODE7(dbg_usb_dio[5])       PD

+GPIO93  = MODE0(GPIO93)  MODE1(MC2DA0)    MODE2(MC1DA5)    MODE3(KCOL7)      MODE4(UTXD2)       MODE5(PTA0)               MODE6(dbg_mon[6])            MODE7(dbg_usb_dio[6])       PD

+GPIO94  = MODE0(GPIO94)  MODE1(MC2DA1)    MODE2(MC1DA6)    MODE3(KROW6)      MODE4(PWM_A)       MODE5(EDICK)              MODE6(dbg_mon[7])            MODE7(dbg_usb_dio[7])       PD

+GPIO95  = MODE0(GPIO95)  MODE1(MC2CK)     MODE2(MC1DA7)    MODE3(PWM_IN)     MODE4(CLKM0)       MODE5(SRCLKENAI)          MODE6()                      MODE7()	                   PD

+GPIO96  = MODE0(GPIO96)  MODE1(BPI_BUS0)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_mon[10])           MODE7(dbg_usb_dio[10])      PD

+GPIO97  = MODE0(GPIO97)  MODE1(BPI_BUS1)  MODE2(LSCE0B)    MODE3()           MODE4()            MODE5()                   MODE6(dbg_mon[11])           MODE7(dbg_usb_dio[11])      PD

+GPIO98  = MODE0(GPIO98)  MODE1(BPI_BUS2)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_mon[12])           MODE7(dbg_usb_dio[12])      PD

+GPIO99  = MODE0(GPIO99)  MODE1(BPI_BUS3)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_mon[13])           MODE7(dbg_usb_dio[13])      PD

+GPIO100 = MODE0(GPIO100) MODE1(BPI_BUS4)  MODE2(MC2INS)    MODE3(LSCE1B)     MODE4()            MODE5()                   MODE6(dbg_mon[14])           MODE7(dbg_usb_dio[14])      PD

+GPIO101 = MODE0(GPIO101) MODE1(BPI_BUS5)  MODE2(MC1INS)    MODE3(EINT14)     MODE4()            MODE5(SRCLKENAI)          MODE6(dbg_mon[15])           MODE7(dbg_usb_dio[15])      PD

+GPIO102 = MODE0(GPIO102) MODE1(MC2DA2)    MODE2(EINT6)     MODE3()           MODE4(PWM_D)       MODE5(EDIWS)              MODE6(dbg_mon[8])            MODE7(dbg_usb_dio[8])       PD

+GPIO103 = MODE0(GPIO103) MODE1(MC2DA3)    MODE2(EINT9)     MODE3()           MODE4(MC1INS)      MODE5(EDIDAT)             MODE6(dbg_mon[9])            MODE7(dbg_usb_dio[9])       PD

+GPIO104 = MODE0(GPIO104) MODE1(EINT5)     MODE2(MC1INS)    MODE3(PWM_IN)     MODE4(CLKM8)       MODE5()                   MODE6()                      MODE7()	                   PD

+

+[GPO]

+

+[EINT]

+EINT_COUNT=16

+EINT_DEBOUNCE_TIME_COUNT=16

+

+[EINT_EX_PIN]  

+0              

+1              

+2              

+3              

+4              

+5              

+6              

+7              

+8              

+9              

+10             

+11             

+12             

+13             

+14             

+22

+               

+[EINT_INT_PIN] 

+

+

+[ADC]

+ADC_COUNT = 5

+

+[ADC_INT_CH]

+0 = ADC_VBAT

+1 = ADC_VISENSE

+2 = ADC_VCHARGER

+3 = ADC_VBATTMP

+

+

+[ADC_EX_CH]

+6 

+7 

+13 

+14 

+15 

+

+

+[KEYPAD]

+KEY_ROW=8

+KEY_COLUMN=9

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6255NP.fig b/mcu/custom/driver/drv/Drv_Tool/MT6255NP.fig
new file mode 100644
index 0000000..25c8dd3
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6255NP.fig
@@ -0,0 +1,189 @@
+[Chip Type]

+Chip = MT6255

+GPIO_ModeNum = 8

+GPIO_Pull_Sel=1

+PMIC_Config=1

+PMIC_Volt_Format = 1

+

+[GPIO]

+GPIO0   = MODE0(GPIO0)   MODE1(SPI_MOSI)  MODE2(CLKM1)     MODE3(SCL)        MODE4(LSCE1B)      MODE5(BPI_BUS6)           MODE6(dbg_usb_din[0])        MODE7()                     PD

+GPIO1   = MODE0(GPIO1)   MODE1(SPI_MISO)  MODE2(PWM_B)     MODE3(UCTS2)      MODE4(EINT12)      MODE5(BPI_BUS7)           MODE6(dbg_usb_din[1])        MODE7()	                   PD

+GPIO2   = MODE0(GPIO2)   MODE1(SPI_SCK)   MODE2(SRCLKENAN) MODE3(URTS2)      MODE4(PTA1)        MODE5(BPI_BUS8)           MODE6(dbg_usb_din[2])        MODE7()	                   PD

+GPIO3   = MODE0(GPIO3)   MODE1(SPI_CS_N)  MODE2()          MODE3(SDA)        MODE4(PTA0)        MODE5(BPI_BUS9)           MODE6(dbg_usb_din[3])        MODE7()	                   PD

+GPIO4   = MODE0(GPIO4)   MODE1(URXD1)     MODE2()          MODE3(MC2INS)     MODE4(PTA1)        MODE5(PWM_C)              MODE6(dbg_usb_din[4])        MODE7(UTXD1)	           PU

+GPIO5   = MODE0(GPIO5)   MODE1(UTXD1)     MODE2(CLKM3)     MODE3(MC1INS)     MODE4(PTA0)        MODE5()                   MODE6(dbg_usb_din[5])        MODE7(URXD1)	           PU

+GPIO6   = MODE0(GPIO6)   MODE1(UCTS1)     MODE2(URXD3)     MODE3(EINT7)      MODE4(SRCLKENAI)   MODE5(SCL)                MODE6(dbg_usb_din[6])        MODE7()	                   PU

+GPIO7   = MODE0(GPIO7)   MODE1(URTS1)     MODE2(UTXD3)     MODE3(EINT8)      MODE4(SRCLKENA)    MODE5(SDA)                MODE6(dbg_usb_din[7])        MODE7()	                   PU

+GPIO8   = MODE0(GPIO8)   MODE1(URXD2)     MODE2(UCTS3)     MODE3(MC2INS)     MODE4(PTA1)        MODE5(CLKM2)              MODE6(dbg_usb_din[8])        MODE7(UTXD2)	           PD

+GPIO9   = MODE0(GPIO9)   MODE1(UTXD2)     MODE2(URTS3)     MODE3(MC1INS)     MODE4(PTA0)        MODE5()                   MODE6()                      MODE7(URXD2)	           PD

+GPIO10  = MODE0(GPIO10)  MODE1(LSA0)      MODE2(URXD3)     MODE3(PWM_IN)     MODE4(EDICK)       MODE5(SRCLKENA)           MODE6(TDMA_SDAT[1])          MODE7(UTXD3)	           PD

+GPIO11  = MODE0(GPIO11)  MODE1(LSCK)      MODE2(UTXD3)     MODE3(PWM_A)      MODE4(EDIWS)       MODE5(SRCLKENAI)          MODE6()                      MODE7(URXD3)	           PD

+GPIO12  = MODE0(GPIO12)  MODE1(LSDA)      MODE2(LPCE3B)    MODE3(EINT10)     MODE4(EDIDAT)      MODE5(SRCLKENAN)          MODE6(TDMA_SDAT[0])          MODE7()	                   PD

+GPIO13  = MODE0(GPIO13)  MODE1(LPCE2B)    MODE2(LSCE1B)    MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO14  = MODE0(GPIO14)  MODE1(LPCE1B)    MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO15  = MODE0(GPIO15)  MODE1(LPCE0B)    MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO16  = MODE0(GPIO16)  MODE1(LPTE)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO17  = MODE0(GPIO17)  MODE1(LRSTB)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO18  = MODE0(GPIO18)  MODE1(LRDB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO19  = MODE0(GPIO19)  MODE1(LPA0)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO20  = MODE0(GPIO20)  MODE1(LWRB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO21  = MODE0(GPIO21)  MODE1(NLD17)     MODE2(URXD3)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO22  = MODE0(GPIO22)  MODE1(NLD16)     MODE2(UTXD3)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO23  = MODE0(GPIO23)  MODE1(NLD15)     MODE2(SFIO0)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO24  = MODE0(GPIO24)  MODE1(NLD14)     MODE2(SFIO1)     MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[12])     MODE7()	                   PD

+GPIO25  = MODE0(GPIO25)  MODE1(NLD13)     MODE2(SFIO3)     MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_A_FUNC_DCK)  MODE7(dbg_MIXED_A_FUNC_DCK) PD

+GPIO26  = MODE0(GPIO26)  MODE1(NLD12)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO27  = MODE0(GPIO27)  MODE1(NLD11)     MODE2(SFCS)      MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[11])     MODE7()	                   PD

+GPIO28  = MODE0(GPIO28)  MODE1(NLD10)     MODE2(SFIO2)     MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[10])     MODE7()	                   PD

+GPIO29  = MODE0(GPIO29)  MODE1(NLD9)      MODE2(SFCLK)     MODE3()           MODE4()            MODE5(dbg_usb_dout[9])    MODE6(dbg_CLKSW_DIO[9])      MODE7()	                   PD

+GPIO30  = MODE0(GPIO30)  MODE1(NLD8)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[8])    MODE6(dbg_CLKSW_DIO[8])      MODE7()	                   PD

+GPIO31  = MODE0(GPIO31)  MODE1(NLD7)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[7])    MODE6(dbg_CLKSW_DIO[7])      MODE7(dbg_MIXED_DIO[7])	   PD

+GPIO32  = MODE0(GPIO32)  MODE1(NLD6)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[6])    MODE6(dbg_CLKSW_DIO[6])      MODE7(dbg_MIXED_DIO[6])	   PD

+GPIO33  = MODE0(GPIO33)  MODE1(NLD5)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[5])    MODE6(dbg_CLKSW_DIO[5])      MODE7(dbg_MIXED_DIO[5])	   PD

+GPIO34  = MODE0(GPIO34)  MODE1(NLD4)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[4])    MODE6(dbg_CLKSW_DIO[4])      MODE7(dbg_MIXED_DIO[4])	   PD

+GPIO35  = MODE0(GPIO35)  MODE1(NLD3)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[3])    MODE6(dbg_CLKSW_DIO[3])      MODE7(dbg_MIXED_DIO[3])	   PD

+GPIO36  = MODE0(GPIO36)  MODE1(NLD2)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[2])    MODE6(dbg_CLKSW_DIO[2])      MODE7(dbg_MIXED_DIO[2])	   PD

+GPIO37  = MODE0(GPIO37)  MODE1(NLD1)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[1])    MODE6(dbg_CLKSW_DIO[1])      MODE7(dbg_MIXED_DIO[1])	   PD

+GPIO38  = MODE0(GPIO38)  MODE1(NLD0)      MODE2()          MODE3()           MODE4()            MODE5(dbg_usb_dout[0])    MODE6(dbg_CLKSW_DIO[0])      MODE7(dbg_MIXED_DIO[0])	   PD

+GPIO39  = MODE0(GPIO39)  MODE1(NRNB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO40  = MODE0(GPIO40)  MODE1(NCLE)      MODE2(KROW7)     MODE3(MC1DA4)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO41  = MODE0(GPIO41)  MODE1(NALE)      MODE2(KCOL7)     MODE3(MC1DA5)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO42  = MODE0(GPIO42)  MODE1(NWEB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO43  = MODE0(GPIO43)  MODE1(NREB)      MODE2()          MODE3(MC1DA7)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO44  = MODE0(GPIO44)  MODE1(NCE0B)     MODE2(KROW6)     MODE3(MC1DA6)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO45  = MODE0(GPIO45)  MODE1(CMRST)     MODE2()          MODE3(D2_TID1)    MODE4(dbg_mon[0])  MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO46  = MODE0(GPIO46)  MODE1(CMPDN)     MODE2()          MODE3(D2_TID2)    MODE4(dbg_mon[1])  MODE5(dbg_bt_ids_in)      MODE6()                      MODE7(dbg_fm_ids_out[12])   PD

+GPIO47  = MODE0(GPIO47)  MODE1(CMVSYNC)   MODE2()          MODE3()           MODE4(dbg_mon[2])  MODE5(dbg_bt_ids_out[11]) MODE6(dbg_rf_test_sdatai)    MODE7(dbg_fm_ids_out[11])   PD

+GPIO48  = MODE0(GPIO48)  MODE1(CMHSYNC)   MODE2()          MODE3()           MODE4(dbg_mon[3])  MODE5(dbg_bt_ids_out[10]) MODE6(dbg_rf_test_en)        MODE7(dbg_fm_ids_out[10])   PD

+GPIO49  = MODE0(GPIO49)  MODE1(CMPCLK)    MODE2(CM_SSCK)   MODE3()           MODE4(dbg_mon[4])  MODE5(dbg_bt_ids_out[9])  MODE6(dbg_rf_test_sclk)      MODE7(dbg_fm_ids_out[9])	   PD

+GPIO50  = MODE0(GPIO50)  MODE1(CMMCLK)    MODE2()          MODE3()           MODE4(dbg_mon[5])  MODE5(dbg_bt_ids_out[8])  MODE6(dbg_rf_test_auxout)    MODE7(dbg_fm_ids_out[8])	   PD

+GPIO51  = MODE0(GPIO51)  MODE1(CMDAT7)    MODE2(BPI_BUS6)  MODE3(D2_TID3)    MODE4(dbg_mon[6])  MODE5(dbg_bt_ids_out[7])  MODE6(dbg_rf_test_dcxodelay) MODE7(dbg_fm_ids_out[7])	   PD

+GPIO52  = MODE0(GPIO52)  MODE1(CMDAT6)    MODE2(BPI_BUS7)  MODE3(D2_TID4)    MODE4(dbg_mon[7])  MODE5(dbg_bt_ids_out[6])  MODE6(dbg_rf_test_enext)     MODE7(dbg_fm_ids_out[6])	   PD

+GPIO53  = MODE0(GPIO53)  MODE1(CMDAT5)    MODE2(BPI_BUS8)  MODE3(D2_TID5)    MODE4(dbg_mon[8])  MODE5(dbg_bt_ids_out[5])  MODE6(dbg_rf_test_enbt)      MODE7(dbg_fm_ids_out[5])	   PD

+GPIO54  = MODE0(GPIO54)  MODE1(CMDAT4)    MODE2(BPI_BUS9)  MODE3(D2_TID6)    MODE4(dbg_mon[9])  MODE5(dbg_bt_ids_out[4])  MODE6(dbg_rf_test_enbb)      MODE7(dbg_fm_ids_out[4])	   PD

+GPIO55  = MODE0(GPIO55)  MODE1(CMDAT3)    MODE2()          MODE3(D2_TID7)    MODE4(dbg_mon[10]) MODE5(dbg_bt_ids_out[3])  MODE6(dbg_rf_test_sdatao)    MODE7(dbg_fm_ids_out[3])	   PD

+GPIO56  = MODE0(GPIO56)  MODE1(CMDAT2)    MODE2()          MODE3(D2_TID0)    MODE4(dbg_mon[11]) MODE5(dbg_bt_ids_out[2])  MODE6(dbg_rf_test_sdatai)    MODE7(dbg_fm_ids_out[2])	   PD

+GPIO57  = MODE0(GPIO57)  MODE1(CMDAT1)    MODE2()          MODE3()           MODE4(dbg_mon[12]) MODE5(dbg_bt_ids_out[1])  MODE6(dbg_rf_test_en)        MODE7(dbg_fm_ids_out[1])	   PD

+GPIO58  = MODE0(GPIO58)  MODE1(CMDAT0)    MODE2(CM_SSDA)   MODE3(D2ICK)      MODE4(dbg_mon[13]) MODE5(dbg_bt_ids_out[0])  MODE6(dbg_rf_test_sclk)      MODE7(dbg_fm_ids_out[0])	   PD

+GPIO59  = MODE0(GPIO59)  MODE1(SCL)       MODE2()          MODE3(D2ID)       MODE4(dbg_mon[14]) MODE5(dbg_srclkena)       MODE6(dbg_ABBSYS_DIO[0])     MODE7(dbg_MIXED_DIO[0])	   PD

+GPIO60  = MODE0(GPIO60)  MODE1(SDA)       MODE2()          MODE3(D2IMS)      MODE4(dbg_mon[15]) MODE5()                   MODE6(dbg_ABBSYS_DIO[1])     MODE7(dbg_MIXED_DIO[1])     PD

+GPIO61  = MODE0(GPIO61)  MODE1(EINT0)     MODE2(LSCE0B)    MODE3(CLKM6)      MODE4()            MODE5(NCE1B)              MODE6(dbg_ABBSYS_DIO[2])     MODE7(dbg_MIXED_DIO[2])     PD

+GPIO62  = MODE0(GPIO62)  MODE1(EINT1)     MODE2(CIRQ0)     MODE3(CLKM7)      MODE4()            MODE5()                   MODE6(dbg_ABBSYS_DIO[3])     MODE7(dbg_MIXED_DIO[3])     PD

+GPIO63  = MODE0(GPIO63)  MODE1(EINT2)     MODE2(CIRQ1)     MODE3()           MODE4()            MODE5()                   MODE6(dbg_ABBSYS_DIO[4])     MODE7(dbg_MIXED_DIO[4])     PD

+GPIO64  = MODE0(GPIO64)  MODE1(EINT3)     MODE2(CIRQ2)     MODE3(UCTS3)      MODE4()            MODE5()                   MODE6(dbg_ABBSYS_DIO[5])     MODE7(dbg_MIXED_DIO[5])     PD

+GPIO65  = MODE0(GPIO65)  MODE1(EINT4)     MODE2(PWM_C)     MODE3(URTS3)      MODE4(LSDI)        MODE5()                   MODE6(dbg_ABBSYS_DIO[6])     MODE7(dbg_MIXED_DIO[6])     PD

+GPIO66  = MODE0(GPIO66)  MODE1(DAICLK)    MODE2(KROW6)     MODE3(MC1INS)     MODE4()            MODE5()                   MODE6(dbg_ABBSYS_DIO[7])     MODE7(dbg_MIXED_DIO[7])     PD

+GPIO67  = MODE0(GPIO67)  MODE1(DAIPCMOUT) MODE2(EDICK)     MODE3(KCOL7)      MODE4(SRCLKENAN)   MODE5()                   MODE6(dbg_ABBSYS_DIO[8])     MODE7()	                   PD

+GPIO68  = MODE0(GPIO68)  MODE1(DAIPCMIN)  MODE2(EDIWS)     MODE3(CLKM4)      MODE4(SCL)         MODE5()                   MODE6(dbg_ABBSYS_DIO[9])     MODE7()	                   PD

+GPIO69  = MODE0(GPIO69)  MODE1(DAIRST)    MODE2(EDIDAT)    MODE3(SRCLKENA)   MODE4(SDA)         MODE5()                   MODE6(dbg_ABBSYS_DIO[10])    MODE7()	                   PD

+GPIO70  = MODE0(GPIO70)  MODE1(DAISYNC)   MODE2(KROW7)     MODE3(LSDI)       MODE4(PWM_IN)      MODE5()                   MODE6(dbg_ABBSYS_A_FUNC_DCK) MODE7(dbg_MIXED_A_FUNC_DCK) PD

+GPIO71  = MODE0(GPIO71)  MODE1(KCOL6)     MODE2(MC2INS)    MODE3(LSDI)       MODE4(PWM_IN)      MODE5(EINT4)              MODE6()                      MODE7()	                   PU

+GPIO72  = MODE0(GPIO72)  MODE1(KCOL5)     MODE2(EINT5)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO73  = MODE0(GPIO73)  MODE1(KCOL4)     MODE2(SCL)       MODE3()           MODE4()            MODE5(CLKSW_HMON_DATA[3]) MODE6(ABBSYS_HMON_DATA[3])   MODE7(MIXED_HMON_DATA[3])   PU

+GPIO74  = MODE0(GPIO74)  MODE1(KCOL3)     MODE2()          MODE3()           MODE4()            MODE5(CLKSW_HMON_DATA[2]) MODE6(ABBSYS_HMON_DATA[2])   MODE7(MIXED_HMON_DATA[2])   PU

+GPIO75  = MODE0(GPIO75)  MODE1(KCOL2)     MODE2()          MODE3()           MODE4()            MODE5(CLKSW_HMON_DATA[1]) MODE6(ABBSYS_HMON_DATA[1])   MODE7(MIXED_HMON_DATA[1])   PU

+GPIO76  = MODE0(GPIO76)  MODE1(KCOL1)     MODE2()          MODE3()           MODE4()            MODE5(CLKSW_HMON_DATA[0]) MODE6(ABBSYS_HMON_DATA[0])   MODE7(MIXED_HMON_DATA[0])   PU

+GPIO77  = MODE0(GPIO77)  MODE1(KCOL0)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO78  = MODE0(GPIO78)  MODE1(KROW5)     MODE2(EINT11)    MODE3(SRCLKENAI)  MODE4(MC2WP)       MODE5(CLKSW_LMON_DATA[3]) MODE6(ABBSYS_LMON_DATA[3])   MODE7(MIXED_LMON_DATA[3])   PD

+GPIO79  = MODE0(GPIO79)  MODE1(KROW4)     MODE2(PWM_D)     MODE3(CLKM5)      MODE4(MC1WP)       MODE5(EINT6)              MODE6(dbg_ABBSYS_DIO[11])    MODE7()                     PD

+GPIO80  = MODE0(GPIO80)  MODE1(KROW3)     MODE2(SDA)       MODE3()           MODE4()            MODE5()                   MODE6(dbg_ABBSYS_DIO[12])    MODE7()                     PD

+GPIO81  = MODE0(GPIO81)  MODE1(KROW2)     MODE2()          MODE3()           MODE4()            MODE5(CLKSW_LMON_DATA[2]) MODE6(ABBSYS_LMON_DATA[2])   MODE7(MIXED_LMON_DATA[2])   PD

+GPIO82  = MODE0(GPIO82)  MODE1(KROW1)     MODE2()          MODE3()           MODE4()            MODE5(CLKSW_LMON_DATA[1]) MODE6(ABBSYS_LMON_DATA[1])   MODE7(MIXED_LMON_DATA[1])   PD

+GPIO83  = MODE0(GPIO83)  MODE1(KROW0)     MODE2()          MODE3()           MODE4()            MODE5(CLKSW_LMON_DATA[0]) MODE6(ABBSYS_LMON_DATA[0])   MODE7(MIXED_LMON_DATA[0])   PD

+GPIO84  = MODE0(GPIO84)  MODE1(MC1RST)    MODE2(MC1WP)     MODE3(LSCE0B)     MODE4(PTA1)        MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO85  = MODE0(GPIO85)  MODE1(MC1CK_FB)  MODE2(MC2WP)     MODE3()           MODE4(PTA0)        MODE5(BT_DBGI_N)          MODE6()                      MODE7()	                   PU

+GPIO86  = MODE0(GPIO86)  MODE1(MC1CM0)    MODE2()          MODE3()           MODE4()            MODE5(BT_TRST_B)          MODE6(dbg_mon[0])            MODE7(dbg_usb_dio[0])       PU

+GPIO87  = MODE0(GPIO87)  MODE1(MC1DA0)    MODE2()          MODE3()           MODE4()            MODE5(BT_TCK)             MODE6(dbg_mon[1])            MODE7(dbg_usb_dio[1])       PU

+GPIO88  = MODE0(GPIO88)  MODE1(MC1DA1)    MODE2()          MODE3()           MODE4()            MODE5(BT_TDI)             MODE6(dbg_mon[2])            MODE7(dbg_usb_dio[2])       PU

+GPIO89  = MODE0(GPIO89)  MODE1(MC1DA2)    MODE2()          MODE3()           MODE4()            MODE5(BT_TMS)             MODE6(dbg_mon[3])            MODE7(dbg_usb_dio[3])       PU

+GPIO90  = MODE0(GPIO90)  MODE1(MC1DA3)    MODE2()          MODE3()           MODE4()            MODE5(BT_TDO)             MODE6(dbg_mon[4])            MODE7(dbg_usb_dio[4])       PU

+GPIO91  = MODE0(GPIO91)  MODE1(MC1CK)     MODE2(EINT13)    MODE3()           MODE4()            MODE5(BT_DBGACK_N)        MODE6()                      MODE7()	                   PU

+GPIO92  = MODE0(GPIO92)  MODE1(MC2CM0)    MODE2(MC1DA4)    MODE3(KROW7)      MODE4(URXD2)       MODE5(PTA1)               MODE6(dbg_mon[5])            MODE7(dbg_usb_dio[5])       PD

+GPIO93  = MODE0(GPIO93)  MODE1(MC2DA0)    MODE2(MC1DA5)    MODE3(KCOL7)      MODE4(UTXD2)       MODE5(PTA0)               MODE6(dbg_mon[6])            MODE7(dbg_usb_dio[6])       PD

+GPIO94  = MODE0(GPIO94)  MODE1(MC2DA1)    MODE2(MC1DA6)    MODE3(KROW6)      MODE4(PWM_A)       MODE5(EDICK)              MODE6(dbg_mon[7])            MODE7(dbg_usb_dio[7])       PD

+GPIO95  = MODE0(GPIO95)  MODE1(MC2CK)     MODE2(MC1DA7)    MODE3(PWM_IN)     MODE4(CLKM0)       MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO96  = MODE0(GPIO96)  MODE1(BPI_BUS0)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_mon[10])           MODE7(dbg_usb_dio[10])      PD

+GPIO97  = MODE0(GPIO97)  MODE1(BPI_BUS1)  MODE2(LSCE0B)    MODE3()           MODE4()            MODE5()                   MODE6(dbg_mon[11])           MODE7(dbg_usb_dio[11])      PD

+GPIO98  = MODE0(GPIO98)  MODE1(BPI_BUS2)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_mon[12])           MODE7(dbg_usb_dio[12])      PD

+GPIO99  = MODE0(GPIO99)  MODE1(BPI_BUS3)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_mon[13])           MODE7(dbg_usb_dio[13])      PD

+GPIO100 = MODE0(GPIO100) MODE1(BPI_BUS4)  MODE2(MC2INS)    MODE3(LSCE1B)     MODE4()            MODE5()                   MODE6(dbg_mon[14])           MODE7(dbg_usb_dio[14])      PD

+GPIO101 = MODE0(GPIO101) MODE1(BPI_BUS5)  MODE2(MC1INS)    MODE3(EINT14)     MODE4()            MODE5()                   MODE6(dbg_mon[15])           MODE7(dbg_usb_dio[15])      PD

+GPIO102 = MODE0(GPIO102) MODE1(MC2DA2)    MODE2(EINT6)     MODE3()           MODE4(PWM_D)       MODE5(EDIWS)              MODE6(dbg_mon[8])            MODE7(dbg_usb_dio[8])       PD

+GPIO103 = MODE0(GPIO103) MODE1(MC2DA3)    MODE2(EINT9)     MODE3()           MODE4(MC1INS)      MODE5(EDIDAT)             MODE6(dbg_mon[9])            MODE7(dbg_usb_dio[9])       PD

+GPIO104 = MODE0(GPIO104) MODE1(EINT5)     MODE2(MC1INS)    MODE3(PWM_IN)     MODE4(CLKM8)       MODE5()                   MODE6()                      MODE7()	                   PD

+

+[GPO]

+

+[EINT]

+EINT_COUNT=16

+EINT_DEBOUNCE_TIME_COUNT=16

+

+[EINT_EX_PIN]  

+0              

+1              

+2              

+3              

+4              

+5              

+6              

+7              

+8              

+9              

+10             

+11             

+12             

+13             

+14             

+22

+               

+[EINT_INT_PIN] 

+

+

+[ADC]

+ADC_COUNT = 5

+

+[ADC_INT_CH]

+0 = ADC_VBAT

+1 = ADC_VISENSE

+2 = ADC_VCHARGER

+3 = ADC_VBATTMP

+

+

+[ADC_EX_CH]

+6 

+7 

+13 

+14 

+15 

+

+

+[KEYPAD]

+KEY_ROW=8

+KEY_COLUMN=9

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6256NP.fig b/mcu/custom/driver/drv/Drv_Tool/MT6256NP.fig
new file mode 100644
index 0000000..10f779f
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6256NP.fig
@@ -0,0 +1,154 @@
+[Chip Type]

+Chip = MT6256

+GPIO_Pull_Sel=1

+PMIC_Config=1

+PMIC_Volt_Format=1

+GPIO_ModeNum=8

+

+[GPIO]

+GPIO0	= MODE0(GPIO0)   MODE1(SPI_MOSI)  MODE2(CLKM1)     MODE3(SCL)        MODE4()            MODE5(BPI_BUS6)           MODE6()                      MODE7()                     PD

+GPIO1	= MODE0(GPIO1)   MODE1(SPI_MISO)  MODE2(PWM_B)     MODE3(UCTS2)      MODE4()            MODE5(BPI_BUS7)           MODE6()                      MODE7()	                   PD

+GPIO2	= MODE0(GPIO2)   MODE1(SPI_SCK)   MODE2(SRCLKENAN) MODE3(URTS2)      MODE4(PTA1)        MODE5(BPI_BUS8)           MODE6()                      MODE7()	                   PD

+GPIO3	= MODE0(GPIO3)   MODE1(SPI_CS_N)  MODE2()          MODE3(SDA)        MODE4(PTA0)        MODE5(BPI_BUS9)           MODE6()                      MODE7()	                   PD

+GPIO4	= MODE0(GPIO4)   MODE1(URXD1)     MODE2()          MODE3(MC2INS)     MODE4(PTA1)        MODE5(PWM_C)              MODE6()                      MODE7(UTXD1)	           PU

+GPIO5	= MODE0(GPIO5)   MODE1(UTXD1)     MODE2(CLKM3)     MODE3(MC1INS)     MODE4(PTA0)        MODE5()                   MODE6()                      MODE7(URXD1)	           PU

+GPIO6	= MODE0(GPIO6)   MODE1(UCTS1)     MODE2(URXD3)     MODE3(EINT7)      MODE4(SRCLKENAI)   MODE5(SCL)                MODE6()                      MODE7()	                   PU

+GPIO7	= MODE0(GPIO7)   MODE1(URTS1)     MODE2(UTXD3)     MODE3(EINT8)      MODE4(SRCLKENA)    MODE5(SDA)                MODE6()                      MODE7()	                   PU

+GPIO8	= MODE0(GPIO8)   MODE1(URXD2)     MODE2(UCTS3)     MODE3(MC2INS)     MODE4(PTA1)        MODE5(CLKM2)              MODE6()                      MODE7(UTXD2)	           PD

+GPIO9	= MODE0(GPIO9)   MODE1(UTXD2)     MODE2(URTS3)     MODE3(MC1INS)     MODE4(PTA0)        MODE5()                   MODE6()                      MODE7(URXD2)	           PD

+GPIO10	= MODE0(GPIO10)  MODE1(LSA0)      MODE2(URXD3)     MODE3(PWM_IN)     MODE4(EDICK)       MODE5(SRCLKENA)           MODE6(TDMA_SDAT[1])          MODE7(UTXD3)	           PD

+GPIO11	= MODE0(GPIO11)  MODE1(LSCK)      MODE2(UTXD3)     MODE3(PWM_A)      MODE4(EDIWS)       MODE5(SRCLKENAI)          MODE6()                      MODE7(URXD3)	           PD

+GPIO12	= MODE0(GPIO12)  MODE1(LSDA)      MODE2(LPCE3B)    MODE3(EINT10)     MODE4(EDIDAT)      MODE5(SRCLKENAN)          MODE6(TDMA_SDAT[0])          MODE7()	                   PD

+GPIO13	= MODE0(GPIO13)  MODE1(LPCE2B)    MODE2(LSCE1B)    MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO14	= MODE0(GPIO14)  MODE1(LPCE1B)    MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO15	= MODE0(GPIO15)  MODE1(LPCE0B)    MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO16	= MODE0(GPIO16)  MODE1(LPTE)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO17	= MODE0(GPIO17)  MODE1(LRSTB)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO18	= MODE0(GPIO18)  MODE1(LRDB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO19	= MODE0(GPIO19)  MODE1(LPA0)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO20	= MODE0(GPIO20)  MODE1(LWRB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO21	= MODE0(GPIO21)  MODE1(NLD17)     MODE2(URXD3)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO22	= MODE0(GPIO22)  MODE1(NLD16)     MODE2(UTXD3)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO23	= MODE0(GPIO23)  MODE1(NLD15)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO24	= MODE0(GPIO24)  MODE1(NLD14)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO25	= MODE0(GPIO25)  MODE1(NLD13)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_A_FUNC_DCK)  MODE7(dbg_MIXED_A_FUNC_DCK) PD

+GPIO26	= MODE0(GPIO26)  MODE1(NLD12)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[12])     MODE7()	                   PD

+GPIO27	= MODE0(GPIO27)  MODE1(NLD11)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[11])     MODE7()	                   PD

+GPIO28	= MODE0(GPIO28)  MODE1(NLD10)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[10])     MODE7()	                   PD

+GPIO29	= MODE0(GPIO29)  MODE1(NLD9)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[9])      MODE7()	                   PD

+GPIO30	= MODE0(GPIO30)  MODE1(NLD8)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[8])      MODE7()	                   PD

+GPIO31	= MODE0(GPIO31)  MODE1(NLD7)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[7])      MODE7(dbg_MIXED_DIO[7])	   PD

+GPIO32	= MODE0(GPIO32)  MODE1(NLD6)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[6])      MODE7(dbg_MIXED_DIO[6])	   PD

+GPIO33	= MODE0(GPIO33)  MODE1(NLD5)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[5])      MODE7(dbg_MIXED_DIO[5])	   PD

+GPIO34	= MODE0(GPIO34)  MODE1(NLD4)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[4])      MODE7(dbg_MIXED_DIO[4])	   PD

+GPIO35	= MODE0(GPIO35)  MODE1(NLD3)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[3])      MODE7(dbg_MIXED_DIO[3])	   PD

+GPIO36	= MODE0(GPIO36)  MODE1(NLD2)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[2])      MODE7(dbg_MIXED_DIO[2])	   PD

+GPIO37	= MODE0(GPIO37)  MODE1(NLD1)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[1])      MODE7(dbg_MIXED_DIO[1])	   PD

+GPIO38	= MODE0(GPIO38)  MODE1(NLD0)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[0])      MODE7(dbg_MIXED_DIO[0])	   PD

+GPIO39	= MODE0(GPIO39)  MODE1(NRNB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO40	= MODE0(GPIO40)  MODE1(NCLE)      MODE2(KROW7)     MODE3(MC1DA4)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO41	= MODE0(GPIO41)  MODE1(NALE)      MODE2(KCOL7)     MODE3(MC1DA5)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO42	= MODE0(GPIO42)  MODE1(NWEB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO43	= MODE0(GPIO43)  MODE1(NREB)      MODE2()          MODE3(MC1DA7)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO44	= MODE0(GPIO44)  MODE1(NCE0B)     MODE2(KROW6)     MODE3(MC1DA6)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO45	= MODE0(GPIO45)  MODE1(CMRST)     MODE2()          MODE3(D2_TID1)    MODE4(dbg_mon[0])  MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO46	= MODE0(GPIO46)  MODE1(CMPDN)     MODE2()          MODE3(D2_TID2)    MODE4(dbg_mon[1])  MODE5(dbg_bt_ids_in)      MODE6()                      MODE7(dbg_fm_ids_out[12])   PD

+GPIO47	= MODE0(GPIO47)  MODE1(CMVSYNC)   MODE2()          MODE3()           MODE4(dbg_mon[2])  MODE5(dbg_bt_ids_out[11]) MODE6(dbg_rf_test_sdatai)    MODE7(dbg_fm_ids_out[11])   PD

+GPIO48	= MODE0(GPIO48)  MODE1(CMHSYNC)   MODE2()          MODE3()           MODE4(dbg_mon[3])  MODE5(dbg_bt_ids_out[10]) MODE6(dbg_rf_test_en)        MODE7(dbg_fm_ids_out[10])   PD

+GPIO49	= MODE0(GPIO49)  MODE1(CMPCLK)    MODE2(CM_SSCK)   MODE3()           MODE4(dbg_mon[4])  MODE5(dbg_bt_ids_out[9])  MODE6(dbg_rf_test_sclk)      MODE7(dbg_fm_ids_out[9])	   PD

+GPIO50	= MODE0(GPIO50)  MODE1(CMMCLK)    MODE2()          MODE3()           MODE4(dbg_mon[5])  MODE5(dbg_bt_ids_out[8])  MODE6(dbg_rf_test_auxout)    MODE7(dbg_fm_ids_out[8])	   PD

+GPIO51	= MODE0(GPIO51)  MODE1(CMDAT7)    MODE2(BPI_BUS6)  MODE3(D2_TID3)    MODE4(dbg_mon[6])  MODE5(dbg_bt_ids_out[7])  MODE6(dbg_rf_test_dcxodelay) MODE7(dbg_fm_ids_out[7])	   PD

+GPIO52	= MODE0(GPIO52)  MODE1(CMDAT6)    MODE2(BPI_BUS7)  MODE3(D2_TID4)    MODE4(dbg_mon[7])  MODE5(dbg_bt_ids_out[6])  MODE6(dbg_rf_test_enext)     MODE7(dbg_fm_ids_out[6])	   PD

+GPIO53	= MODE0(GPIO53)  MODE1(CMDAT5)    MODE2(BPI_BUS8)  MODE3(D2_TID5)    MODE4(dbg_mon[8])  MODE5(dbg_bt_ids_out[5])  MODE6(dbg_rf_test_enbt)      MODE7(dbg_fm_ids_out[5])	   PD

+GPIO54	= MODE0(GPIO54)  MODE1(CMDAT4)    MODE2(BPI_BUS9)  MODE3(D2_TID6)    MODE4(dbg_mon[9])  MODE5(dbg_bt_ids_out[4])  MODE6(dbg_rf_test_enbb)      MODE7(dbg_fm_ids_out[4])	   PD

+GPIO55	= MODE0(GPIO55)  MODE1(CMDAT3)    MODE2()          MODE3(D2_TID7)    MODE4(dbg_mon[10]) MODE5(dbg_bt_ids_out[3])  MODE6(dbg_rf_test_sdatao)    MODE7(dbg_fm_ids_out[3])	   PD

+GPIO56	= MODE0(GPIO56)  MODE1(CMDAT2)    MODE2()          MODE3(D2_TID0)    MODE4(dbg_mon[11]) MODE5(dbg_bt_ids_out[2])  MODE6(dbg_rf_test_sdatai)    MODE7(dbg_fm_ids_out[2])	   PD

+GPIO57	= MODE0(GPIO57)  MODE1(CMDAT1)    MODE2()          MODE3()           MODE4(dbg_mon[12]) MODE5(dbg_bt_ids_out[1])  MODE6(dbg_rf_test_en)        MODE7(dbg_fm_ids_out[1])	   PD

+GPIO58	= MODE0(GPIO58)  MODE1(CMDAT0)    MODE2(CM_SSDA)   MODE3(D2ICK)      MODE4(dbg_mon[13]) MODE5(dbg_bt_ids_out[0])  MODE6(dbg_rf_test_sclk)      MODE7(dbg_fm_ids_out[0])	   PD

+GPIO59	= MODE0(GPIO59)  MODE1(SCL)       MODE2()          MODE3(D2ID)       MODE4(dbg_mon[14]) MODE5(dbg_srclkena)       MODE6()                      MODE7()	                   PD

+GPIO60	= MODE0(GPIO60)  MODE1(SDA)       MODE2()          MODE3(D2IMS)      MODE4(dbg_mon[15]) MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO61	= MODE0(GPIO61)  MODE1(EINT0)     MODE2(LSCE0B)    MODE3()           MODE4()            MODE5(NCE1B)              MODE6()                      MODE7()	                   PD

+GPIO62	= MODE0(GPIO62)  MODE1(EINT1)     MODE2(CIRQ0)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO63	= MODE0(GPIO63)  MODE1(EINT2)     MODE2(CIRQ1)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO64	= MODE0(GPIO64)  MODE1(EINT3)     MODE2(CIRQ2)     MODE3(UCTS3)      MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO65	= MODE0(GPIO65)  MODE1(EINT4)     MODE2(PWM_C)     MODE3(URTS3)      MODE4(LSDI)        MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO66	= MODE0(GPIO66)  MODE1(DAICLK)    MODE2(KROW6)     MODE3(MC1INS)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO67	= MODE0(GPIO67)  MODE1(DAIPCMOUT) MODE2(EDICK)     MODE3(KCOL7)      MODE4(SRCLKENAN)   MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO68	= MODE0(GPIO68)  MODE1(DAIPCMIN)  MODE2(EDIWS)     MODE3(CLKM4)      MODE4(SCL)         MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO69	= MODE0(GPIO69)  MODE1(DAIRST)    MODE2(EDIDAT)    MODE3(SRCLKENA)   MODE4(SDA)         MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO70	= MODE0(GPIO70)  MODE1(DAISYNC)   MODE2(KROW7)     MODE3(LSDI)       MODE4(PWM_IN)      MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO71	= MODE0(GPIO71)  MODE1(KCOL6)     MODE2(MC2INS)    MODE3(LSDI)       MODE4(PWM_IN)      MODE5(EINT4)              MODE6()                      MODE7()	                   PU

+GPIO72	= MODE0(GPIO72)  MODE1(KCOL5)     MODE2(EINT5)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO73	= MODE0(GPIO73)  MODE1(KCOL4)     MODE2(SCL)       MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_HMON_DATA[3])    MODE7(MIXED_HMON_DATA[3])   PU

+GPIO74	= MODE0(GPIO74)  MODE1(KCOL3)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_HMON_DATA[2])    MODE7(MIXED_HMON_DATA[2])   PU

+GPIO75	= MODE0(GPIO75)  MODE1(KCOL2)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_HMON_DATA[1])    MODE7(MIXED_HMON_DATA[1])   PU

+GPIO76	= MODE0(GPIO76)  MODE1(KCOL1)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_HMON_DATA[0])    MODE7(MIXED_HMON_DATA[0])   PU

+GPIO77	= MODE0(GPIO77)  MODE1(KCOL0)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO78	= MODE0(GPIO78)  MODE1(KROW5)     MODE2(EINT11)    MODE3(SRCLKENAI)  MODE4(MC2WP)       MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO79	= MODE0(GPIO79)  MODE1(KROW4)     MODE2(PWM_D)     MODE3(CLKM5)      MODE4(MC1WP)       MODE5(EINT6)              MODE6(CLKSW_LMON_DATA[3])    MODE7(MIXED_LMON_DATA[3])   PD

+GPIO80	= MODE0(GPIO80)  MODE1(KROW3)     MODE2(SDA)       MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_LMON_DATA[2])    MODE7(MIXED_LMON_DATA[2])   PD

+GPIO81	= MODE0(GPIO81)  MODE1(KROW2)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_LMON_DATA[1])    MODE7(MIXED_LMON_DATA[1])   PD

+GPIO82	= MODE0(GPIO82)  MODE1(KROW1)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_LMON_DATA[0])    MODE7(MIXED_LMON_DATA[0])   PD

+GPIO83	= MODE0(GPIO83)  MODE1(KROW0)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO84	= MODE0(GPIO84)  MODE1(MC1RST)    MODE2(MC1WP)     MODE3()           MODE4(PTA1)        MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO85	= MODE0(GPIO85)  MODE1(MC1CK_FB)  MODE2(MC2WP)     MODE3()           MODE4(PTA0)        MODE5(BT_DBGI_N)          MODE6()                      MODE7()	                   PU

+GPIO86	= MODE0(GPIO86)  MODE1(MC1CM0)    MODE2()          MODE3()           MODE4()            MODE5(BT_TRST_B)          MODE6()                      MODE7()	                   PU

+GPIO87	= MODE0(GPIO87)  MODE1(MC1DA0)    MODE2()          MODE3()           MODE4()            MODE5(BT_TCK)             MODE6()                      MODE7()	                   PU

+GPIO88	= MODE0(GPIO88)  MODE1(MC1DA1)    MODE2()          MODE3()           MODE4()            MODE5(BT_TDI)             MODE6()                      MODE7()	                   PU

+GPIO89	= MODE0(GPIO89)  MODE1(MC1DA2)    MODE2()          MODE3()           MODE4()            MODE5(BT_TMS)             MODE6()                      MODE7()	                   PU

+GPIO90	= MODE0(GPIO90)  MODE1(MC1DA3)    MODE2()          MODE3()           MODE4()            MODE5(BT_TDO)             MODE6()                      MODE7()	                   PU

+GPIO91	= MODE0(GPIO91)  MODE1(MC1CK)     MODE2()          MODE3()           MODE4()            MODE5(BT_DBGACK_N)        MODE6()                      MODE7()	                   PU

+GPIO92	= MODE0(GPIO92)  MODE1(MC2CM0)    MODE2(MC1DA4)    MODE3(KROW7)      MODE4(URXD2)       MODE5(PTA1)               MODE6()                      MODE7()	                   PD

+GPIO93	= MODE0(GPIO93)  MODE1(MC2DA0)    MODE2(MC1DA5)    MODE3(KCOL7)      MODE4(UTXD2)       MODE5(PTA0)               MODE6()                      MODE7()	                   PD

+GPIO94	= MODE0(GPIO94)  MODE1(MC2DA1)    MODE2(MC1DA6)    MODE3(KROW6)      MODE4(PWM_A)       MODE5(EDICK)              MODE6()                      MODE7()	                   PD

+GPIO95	= MODE0(GPIO95)  MODE1(MC2CK)     MODE2(MC1DA7)    MODE3(PWM_IN)     MODE4(CLKM0)       MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO96	= MODE0(GPIO96)  MODE1(BPI_BUS0)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO97	= MODE0(GPIO97)  MODE1(BPI_BUS1)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO98	= MODE0(GPIO98)  MODE1(BPI_BUS2)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO99	= MODE0(GPIO99)  MODE1(BPI_BUS3)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO100	= MODE0(GPIO100) MODE1(BPI_BUS4)  MODE2(MC2INS)    MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO101	= MODE0(GPIO101) MODE1(BPI_BUS5)  MODE2(MC1INS)    MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO102	= MODE0(GPIO102) MODE1(MC2DA2)    MODE2(EINT6)     MODE3()           MODE4(PWM_D)       MODE5(EDIWS)              MODE6()                      MODE7()	                   PD

+GPIO103	= MODE0(GPIO103) MODE1(MC2DA3)    MODE2(EINT9)     MODE3()           MODE4(MC1INS)      MODE5(EDIDAT)             MODE6()                      MODE7()	                   PD

+GPIO104	= MODE0(GPIO104) MODE1(EINT5)     MODE2(MC1INS)    MODE3(PWM_IN)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+

+[GPO]

+

+[EINT]

+EINT_COUNT=12

+EINT_DEBOUNCE_TIME_COUNT=12

+

+[EINT_EX_PIN]

+0

+1

+2

+3

+4

+5

+6

+7

+8

+9

+10

+11

+

+[ADC]

+ADC_COUNT=3

+

+[ADC_INT_CH]

+0 = ADC_VBAT

+1 = ADC_VISENSE

+2 = ADC_VCHARGER

+3 = ADC_VBATTMP

+4 = ADC_PCBTMP

+5 = ADC_CHR_USB

+

+

+[ADC_EX_CH]

+6

+7

+8

+

+[KEYPAD]

+KEY_ROW=8

+KEY_COLUMN=9
\ No newline at end of file
diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6256NP.fig.bak b/mcu/custom/driver/drv/Drv_Tool/MT6256NP.fig.bak
new file mode 100644
index 0000000..5a9ae18
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6256NP.fig.bak
@@ -0,0 +1,154 @@
+[Chip Type]

+Chip = MT6256

+GPIO_Pull_Sel=1

+PMIC_Config=0

+PMIC_Volt_Format=1

+GPIO_ModeNum=8

+

+[GPIO]

+GPIO0	= MODE0(GPIO0)   MODE1(SPI_MOSI)  MODE2(CLKM1)     MODE3(SCL)        MODE4()            MODE5(BPI_BUS6)           MODE6()                      MODE7()                     PD

+GPIO1	= MODE0(GPIO1)   MODE1(SPI_MISO)  MODE2(PWM_B)     MODE3(UCTS2)      MODE4()            MODE5(BPI_BUS7)           MODE6()                      MODE7()	                   PD

+GPIO2	= MODE0(GPIO2)   MODE1(SPI_SCK)   MODE2(SRCLKENAN) MODE3(URTS2)      MODE4(PTA1)        MODE5(BPI_BUS8)           MODE6()                      MODE7()	                   PD

+GPIO3	= MODE0(GPIO3)   MODE1(SPI_CS_N)  MODE2()          MODE3(SDA)        MODE4(PTA0)        MODE5(BPI_BUS9)           MODE6()                      MODE7()	                   PD

+GPIO4	= MODE0(GPIO4)   MODE1(URXD1)     MODE2()          MODE3(MC2INS)     MODE4(PTA1)        MODE5(PWM_C)              MODE6()                      MODE7(UTXD1)	           PU

+GPIO5	= MODE0(GPIO5)   MODE1(UTXD1)     MODE2(CLKM3)     MODE3(MC1INS)     MODE4(PTA0)        MODE5()                   MODE6()                      MODE7(URXD1)	           PU

+GPIO6	= MODE0(GPIO6)   MODE1(UCTS1)     MODE2(URXD3)     MODE3(EINT7)      MODE4(SRCLKENAI)   MODE5(SCL)                MODE6()                      MODE7()	                   PD

+GPIO7	= MODE0(GPIO7)   MODE1(URTS1)     MODE2(UTXD3)     MODE3(EINT8)      MODE4(SRCLKENA)    MODE5(SDA)                MODE6()                      MODE7()	                   PD

+GPIO8	= MODE0(GPIO8)   MODE1(URXD2)     MODE2(UCTS3)     MODE3(MC2INS)     MODE4(PTA1)        MODE5(CLKM2)              MODE6()                      MODE7(UTXD2)	           PD

+GPIO9	= MODE0(GPIO9)   MODE1(UTXD2)     MODE2(URTS3)     MODE3(MC1INS)     MODE4(PTA0)        MODE5()                   MODE6()                      MODE7(URXD2)	           PD

+GPIO10	= MODE0(GPIO10)  MODE1(LSA0)      MODE2(URXD3)     MODE3(PWM_IN)     MODE4(EDICK)       MODE5(SRCLKENA)           MODE6(TDMA_SDAT[1])          MODE7(UTXD3)	           PD

+GPIO11	= MODE0(GPIO11)  MODE1(LSCK)      MODE2(UTXD3)     MODE3(PWM_A)      MODE4(EDIWS)       MODE5(SRCLKENAI)          MODE6()                      MODE7(URXD3)	           PD

+GPIO12	= MODE0(GPIO12)  MODE1(LSDA)      MODE2(LPCE3B)    MODE3(EINT10)     MODE4(EDIDAT)      MODE5(SRCLKENAN)          MODE6(TDMA_SDAT[0])          MODE7()	                   PD

+GPIO13	= MODE0(GPIO13)  MODE1(LPCE2B)    MODE2(LSCE1B)    MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO14	= MODE0(GPIO14)  MODE1(LPCE1B)    MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO15	= MODE0(GPIO15)  MODE1(LPCE0B)    MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO16	= MODE0(GPIO16)  MODE1(LPTE)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO17	= MODE0(GPIO17)  MODE1(LRSTB)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO18	= MODE0(GPIO18)  MODE1(LRDB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO19	= MODE0(GPIO19)  MODE1(LPA0)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO20	= MODE0(GPIO20)  MODE1(LWRB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO21	= MODE0(GPIO21)  MODE1(NLD17)     MODE2(URXD3)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO22	= MODE0(GPIO22)  MODE1(NLD16)     MODE2(UTXD3)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO23	= MODE0(GPIO23)  MODE1(NLD15)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO24	= MODE0(GPIO24)  MODE1(NLD14)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO25	= MODE0(GPIO25)  MODE1(NLD13)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_A_FUNC_DCK)  MODE7(dbg_MIXED_A_FUNC_DCK) PD

+GPIO26	= MODE0(GPIO26)  MODE1(NLD12)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[12])     MODE7()	                   PD

+GPIO27	= MODE0(GPIO27)  MODE1(NLD11)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[11])     MODE7()	                   PD

+GPIO28	= MODE0(GPIO28)  MODE1(NLD10)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[10])     MODE7()	                   PD

+GPIO29	= MODE0(GPIO29)  MODE1(NLD9)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[9])      MODE7()	                   PD

+GPIO30	= MODE0(GPIO30)  MODE1(NLD8)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[8])      MODE7()	                   PD

+GPIO31	= MODE0(GPIO31)  MODE1(NLD7)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[7])      MODE7(dbg_MIXED_DIO[7])	   PD

+GPIO32	= MODE0(GPIO32)  MODE1(NLD6)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[6])      MODE7(dbg_MIXED_DIO[6])	   PD

+GPIO33	= MODE0(GPIO33)  MODE1(NLD5)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[5])      MODE7(dbg_MIXED_DIO[5])	   PD

+GPIO34	= MODE0(GPIO34)  MODE1(NLD4)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[4])      MODE7(dbg_MIXED_DIO[4])	   PD

+GPIO35	= MODE0(GPIO35)  MODE1(NLD3)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[3])      MODE7(dbg_MIXED_DIO[3])	   PD

+GPIO36	= MODE0(GPIO36)  MODE1(NLD2)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[2])      MODE7(dbg_MIXED_DIO[2])	   PD

+GPIO37	= MODE0(GPIO37)  MODE1(NLD1)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[1])      MODE7(dbg_MIXED_DIO[1])	   PD

+GPIO38	= MODE0(GPIO38)  MODE1(NLD0)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(dbg_CLKSW_DIO[0])      MODE7(dbg_MIXED_DIO[0])	   PD

+GPIO39	= MODE0(GPIO39)  MODE1(NRNB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO40	= MODE0(GPIO40)  MODE1(NCLE)      MODE2(KROW7)     MODE3(MC1DA4)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO41	= MODE0(GPIO41)  MODE1(NALE)      MODE2(KCOL7)     MODE3(MC1DA5)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO42	= MODE0(GPIO42)  MODE1(NWEB)      MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO43	= MODE0(GPIO43)  MODE1(NREB)      MODE2()          MODE3(MC1DA7)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO44	= MODE0(GPIO44)  MODE1(NCE0B)     MODE2(KROW6)     MODE3(MC1DA6)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO45	= MODE0(GPIO45)  MODE1(CMRST)     MODE2()          MODE3(D2_TID1)    MODE4(dbg_mon[0])  MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO46	= MODE0(GPIO46)  MODE1(CMPDN)     MODE2()          MODE3(D2_TID2)    MODE4(dbg_mon[1])  MODE5(dbg_bt_ids_in)      MODE6()                      MODE7(dbg_fm_ids_out[12])   PD

+GPIO47	= MODE0(GPIO47)  MODE1(CMVSYNC)   MODE2()          MODE3()           MODE4(dbg_mon[2])  MODE5(dbg_bt_ids_out[11]) MODE6(dbg_rf_test_sdatai)    MODE7(dbg_fm_ids_out[11])   PD

+GPIO48	= MODE0(GPIO48)  MODE1(CMHSYNC)   MODE2()          MODE3()           MODE4(dbg_mon[3])  MODE5(dbg_bt_ids_out[10]) MODE6(dbg_rf_test_en)        MODE7(dbg_fm_ids_out[10])   PD

+GPIO49	= MODE0(GPIO49)  MODE1(CMPCLK)    MODE2(CM_SSCK)   MODE3()           MODE4(dbg_mon[4])  MODE5(dbg_bt_ids_out[9])  MODE6(dbg_rf_test_sclk)      MODE7(dbg_fm_ids_out[9])	   PD

+GPIO50	= MODE0(GPIO50)  MODE1(CMMCLK)    MODE2()          MODE3()           MODE4(dbg_mon[5])  MODE5(dbg_bt_ids_out[8])  MODE6(dbg_rf_test_auxout)    MODE7(dbg_fm_ids_out[8])	   PD

+GPIO51	= MODE0(GPIO51)  MODE1(CMDAT7)    MODE2(BPI_BUS6)  MODE3(D2_TID3)    MODE4(dbg_mon[6])  MODE5(dbg_bt_ids_out[7])  MODE6(dbg_rf_test_dcxodelay) MODE7(dbg_fm_ids_out[7])	   PD

+GPIO52	= MODE0(GPIO52)  MODE1(CMDAT6)    MODE2(BPI_BUS7)  MODE3(D2_TID4)    MODE4(dbg_mon[7])  MODE5(dbg_bt_ids_out[6])  MODE6(dbg_rf_test_enext)     MODE7(dbg_fm_ids_out[6])	   PD

+GPIO53	= MODE0(GPIO53)  MODE1(CMDAT5)    MODE2(BPI_BUS8)  MODE3(D2_TID5)    MODE4(dbg_mon[8])  MODE5(dbg_bt_ids_out[5])  MODE6(dbg_rf_test_enbt)      MODE7(dbg_fm_ids_out[5])	   PD

+GPIO54	= MODE0(GPIO54)  MODE1(CMDAT4)    MODE2(BPI_BUS9)  MODE3(D2_TID6)    MODE4(dbg_mon[9])  MODE5(dbg_bt_ids_out[4])  MODE6(dbg_rf_test_enbb)      MODE7(dbg_fm_ids_out[4])	   PD

+GPIO55	= MODE0(GPIO55)  MODE1(CMDAT3)    MODE2()          MODE3(D2_TID7)    MODE4(dbg_mon[10]) MODE5(dbg_bt_ids_out[3])  MODE6(dbg_rf_test_sdatao)    MODE7(dbg_fm_ids_out[3])	   PD

+GPIO56	= MODE0(GPIO56)  MODE1(CMDAT2)    MODE2()          MODE3(D2_TID0)    MODE4(dbg_mon[11]) MODE5(dbg_bt_ids_out[2])  MODE6(dbg_rf_test_sdatai)    MODE7(dbg_fm_ids_out[2])	   PD

+GPIO57	= MODE0(GPIO57)  MODE1(CMDAT1)    MODE2()          MODE3()           MODE4(dbg_mon[12]) MODE5(dbg_bt_ids_out[1])  MODE6(dbg_rf_test_en)        MODE7(dbg_fm_ids_out[1])	   PD

+GPIO58	= MODE0(GPIO58)  MODE1(CMDAT0)    MODE2(CM_SSDA)   MODE3(D2ICK)      MODE4(dbg_mon[13]) MODE5(dbg_bt_ids_out[0])  MODE6(dbg_rf_test_sclk)      MODE7(dbg_fm_ids_out[0])	   PD

+GPIO59	= MODE0(GPIO59)  MODE1(SCL)       MODE2()          MODE3(D2ID)       MODE4(dbg_mon[14]) MODE5(dbg_srclkena)       MODE6()                      MODE7()	                   PD

+GPIO60	= MODE0(GPIO60)  MODE1(SDA)       MODE2()          MODE3(D2IMS)      MODE4(dbg_mon[15]) MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO61	= MODE0(GPIO61)  MODE1(EINT0)     MODE2(LSCE0B)    MODE3()           MODE4()            MODE5(NCE1B)              MODE6()                      MODE7()	                   PD

+GPIO62	= MODE0(GPIO62)  MODE1(EINT1)     MODE2(CIRQ0)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO63	= MODE0(GPIO63)  MODE1(EINT2)     MODE2(CIRQ1)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO64	= MODE0(GPIO64)  MODE1(EINT3)     MODE2(CIRQ2)     MODE3(UCTS3)      MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO65	= MODE0(GPIO65)  MODE1(EINT4)     MODE2(PWM_C)     MODE3(URTS3)      MODE4(LSDI)        MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO66	= MODE0(GPIO66)  MODE1(DAICLK)    MODE2(KROW6)     MODE3(MC1INS)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO67	= MODE0(GPIO67)  MODE1(DAIPCMOUT) MODE2(EDICK)     MODE3(KCOL7)      MODE4(SRCLKENAN)   MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO68	= MODE0(GPIO68)  MODE1(DAIPCMIN)  MODE2(EDIWS)     MODE3(CLKM4)      MODE4(SCL)         MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO69	= MODE0(GPIO69)  MODE1(DAIRST)    MODE2(EDIDAT)    MODE3(SRCLKENA)   MODE4(SDA)         MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO70	= MODE0(GPIO70)  MODE1(DAISYNC)   MODE2(KROW7)     MODE3(LSDI)       MODE4(PWM_IN)      MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO71	= MODE0(GPIO71)  MODE1(KCOL6)     MODE2(MC2INS)    MODE3(LSDI)       MODE4(PWM_IN)      MODE5(EINT4)              MODE6()                      MODE7()	                   PU

+GPIO72	= MODE0(GPIO72)  MODE1(KCOL5)     MODE2(EINT5)     MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO73	= MODE0(GPIO73)  MODE1(KCOL4)     MODE2(SCL)       MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_HMON_DATA[3])    MODE7(MIXED_HMON_DATA[3])   PU

+GPIO74	= MODE0(GPIO74)  MODE1(KCOL3)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_HMON_DATA[2])    MODE7(MIXED_HMON_DATA[2])   PU

+GPIO75	= MODE0(GPIO75)  MODE1(KCOL2)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_HMON_DATA[1])    MODE7(MIXED_HMON_DATA[1])   PU

+GPIO76	= MODE0(GPIO76)  MODE1(KCOL1)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_HMON_DATA[0])    MODE7(MIXED_HMON_DATA[0])   PU

+GPIO77	= MODE0(GPIO77)  MODE1(KCOL0)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO78	= MODE0(GPIO78)  MODE1(KROW5)     MODE2(EINT11)    MODE3(SRCLKENAI)  MODE4(MC2WP)       MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO79	= MODE0(GPIO79)  MODE1(KROW4)     MODE2(PWM_D)     MODE3(CLKM5)      MODE4(MC1WP)       MODE5(EINT6)              MODE6(CLKSW_LMON_DATA[3])    MODE7(MIXED_LMON_DATA[3])   PD

+GPIO80	= MODE0(GPIO80)  MODE1(KROW3)     MODE2(SDA)       MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_LMON_DATA[2])    MODE7(MIXED_LMON_DATA[2])   PD

+GPIO81	= MODE0(GPIO81)  MODE1(KROW2)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_LMON_DATA[1])    MODE7(MIXED_LMON_DATA[1])   PD

+GPIO82	= MODE0(GPIO82)  MODE1(KROW1)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6(CLKSW_LMON_DATA[0])    MODE7(MIXED_LMON_DATA[0])   PD

+GPIO83	= MODE0(GPIO83)  MODE1(KROW0)     MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO84	= MODE0(GPIO84)  MODE1(MC1RST)    MODE2(MC1WP)     MODE3()           MODE4(PTA1)        MODE5()                   MODE6()                      MODE7()	                   PU

+GPIO85	= MODE0(GPIO85)  MODE1(MC1CK_FB)  MODE2(MC2WP)     MODE3()           MODE4(PTA0)        MODE5(BT_DBGI_N)          MODE6()                      MODE7()	                   PU

+GPIO86	= MODE0(GPIO86)  MODE1(MC1CM0)    MODE2()          MODE3()           MODE4()            MODE5(BT_TRST_B)          MODE6()                      MODE7()	                   PU

+GPIO87	= MODE0(GPIO87)  MODE1(MC1DA0)    MODE2()          MODE3()           MODE4()            MODE5(BT_TCK)             MODE6()                      MODE7()	                   PU

+GPIO88	= MODE0(GPIO88)  MODE1(MC1DA1)    MODE2()          MODE3()           MODE4()            MODE5(BT_TDI)             MODE6()                      MODE7()	                   PU

+GPIO89	= MODE0(GPIO89)  MODE1(MC1DA2)    MODE2()          MODE3()           MODE4()            MODE5(BT_TMS)             MODE6()                      MODE7()	                   PU

+GPIO90	= MODE0(GPIO90)  MODE1(MC1DA3)    MODE2()          MODE3()           MODE4()            MODE5(BT_TDO)             MODE6()                      MODE7()	                   PU

+GPIO91	= MODE0(GPIO91)  MODE1(MC1CK)     MODE2()          MODE3()           MODE4()            MODE5(BT_DBGACK_N)        MODE6()                      MODE7()	                   PU

+GPIO92	= MODE0(GPIO92)  MODE1(MC2CM0)    MODE2(MC1DA4)    MODE3(KROW7)      MODE4(URXD2)       MODE5(PTA1)               MODE6()                      MODE7()	                   PD

+GPIO93	= MODE0(GPIO93)  MODE1(MC2DA0)    MODE2(MC1DA5)    MODE3(KCOL7)      MODE4(UTXD2)       MODE5(PTA0)               MODE6()                      MODE7()	                   PD

+GPIO94	= MODE0(GPIO94)  MODE1(MC2DA1)    MODE2(MC1DA6)    MODE3(KROW6)      MODE4(PWM_A)       MODE5(EDICK)              MODE6()                      MODE7()	                   PD

+GPIO95	= MODE0(GPIO95)  MODE1(MC2CK)     MODE2(MC1DA7)    MODE3(PWM_IN)     MODE4(CLKM0)       MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO96	= MODE0(GPIO96)  MODE1(BPI_BUS0)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO97	= MODE0(GPIO97)  MODE1(BPI_BUS1)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO98	= MODE0(GPIO98)  MODE1(BPI_BUS2)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO99	= MODE0(GPIO99)  MODE1(BPI_BUS3)  MODE2()          MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO100	= MODE0(GPIO100) MODE1(BPI_BUS4)  MODE2(MC2INS)    MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO101	= MODE0(GPIO101) MODE1(BPI_BUS5)  MODE2(MC1INS)    MODE3()           MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+GPIO102	= MODE0(GPIO102) MODE1(MC2DA2)    MODE2(EINT6)     MODE3()           MODE4(PWM_D)       MODE5(EDIWS)              MODE6()                      MODE7()	                   PD

+GPIO103	= MODE0(GPIO103) MODE1(MC2DA3)    MODE2(EINT9)     MODE3()           MODE4(MC1INS)      MODE5(EDIDAT)             MODE6()                      MODE7()	                   PD

+GPIO104	= MODE0(GPIO104) MODE1(EINT5)     MODE2(MC1INS)    MODE3(PWM_IN)     MODE4()            MODE5()                   MODE6()                      MODE7()	                   PD

+

+[GPO]

+

+[EINT]

+EINT_COUNT=12

+EINT_DEBOUNCE_TIME_COUNT=12

+

+[EINT_EX_PIN]

+0

+1

+2

+3

+4

+5

+6

+7

+8

+9

+10

+11

+

+[ADC]

+ADC_COUNT=3

+

+[ADC_INT_CH]

+0 = ADC_VBAT

+1 = ADC_VISENSE

+2 = ADC_VCHARGER

+3 = ADC_VBATTMP

+4 = ADC_PCBTMP

+5 = ADC_CHR_USB

+

+

+[ADC_EX_CH]

+6

+7

+8

+

+[KEYPAD]

+KEY_ROW=8

+KEY_COLUMN=9
\ No newline at end of file
diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6268.fig b/mcu/custom/driver/drv/Drv_Tool/MT6268.fig
new file mode 100644
index 0000000..02f72d2
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6268.fig
@@ -0,0 +1,118 @@
+[Chip Type]

+Chip = MT6268

+GPIO_Pull_Sel=1

+

+[GPIO]

+GPIO0 = MODE0(GPIO0)              MODE1(BPI_BUS0)         MODE2()                   MODE3()                      PUPD

+GPIO1 = MODE0(GPIO1)              MODE1(BPI_BUS1)         MODE2()                   MODE3()                      PUPD

+GPIO2 = MODE0(GPIO2)              MODE1(BPI_BUS2)         MODE2()                   MODE3()                      PUPD

+GPIO3 = MODE0(GPIO3)              MODE1(BPI_BUS3)         MODE2()                   MODE3()                      PUPD

+GPIO4 = MODE0(GPIO4)              MODE1(BPI_BUS9)         MODE2()                   MODE3()                      PUPD

+GPIO5 = MODE0(GPIO5)              MODE1(BPI_BUS10)        MODE2()                   MODE3()                      PUPD

+GPIO6 = MODE0(GPIO6)              MODE1(BPI_BUS16)        MODE2()                   MODE3()                      PUPD

+GPIO7 = MODE0(GPIO7)              MODE1(BPI_BUS17)        MODE2()                   MODE3()                      PUPD

+GPIO8 = MODE0(GPIO8)              MODE1(BPI_BUS18)        MODE2()                   MODE3()                      PUPD

+GPIO9 = MODE0(GPIO9)              MODE1(BPI_BUS19)        MODE2()                   MODE3()                      PUPD

+GPIO10= MODE0(GPIO10)             MODE1(BSI0_CS1)         MODE2()                   MODE3()                      PUPD

+GPIO11= MODE0(GPIO11)             MODE1(BSI1_CS0)         MODE2()                   MODE3()                      PUPD

+GPIO12= MODE0(GPIO12)             MODE1(BSI1_CS1)         MODE2()                   MODE3()                      PUPD

+GPIO13= MODE0(GPIO13)             MODE1(BSI1_DATA)          MODE2()                   MODE3()                      PUPD

+GPIO14= MODE0(GPIO14)             MODE1(BSI1_CLK)         MODE2()                   MODE3()                      PUPD

+GPIO15= MODE0(GPIO15)             MODE1(BSI_DIN)         MODE2()                   MODE3()                      PUPD

+GPIO16= MODE0(GPIO16)             MODE1(CMMCLK)           MODE2(LOG_DATA[15])     MODE3(TDTIRQ)              PUPD

+GPIO17= MODE0(GPIO17)             MODE1(I:CMPCLK)           MODE2(LOG_DATA[14])     MODE3(TCTIRQ1)             PUPD

+GPIO18= MODE0(GPIO18)             MODE1(CMRST)            MODE2(LOG_DATA[13])     MODE3(TBTXEN)              PUPD

+GPIO19= MODE0(GPIO19)             MODE1(CMPDN)            MODE2(LOG_DATA[12])     MODE3(TBTXFS)              PUPD

+GPIO20= MODE0(GPIO20)             MODE1(CMVREF)          MODE2(LOG_DATA[11])     MODE3(TBRXEN)              PUPD

+GPIO21= MODE0(GPIO21)             MODE1(CMHREF)          MODE2(LOG_DATA[10])     MODE3(TBRXFS)              PUPD

+GPIO22= MODE0(GPIO22)             MODE1(CMDAT9)          MODE2(LOG_DATA[9])      MODE3(D1ICK)              PUPD

+GPIO23= MODE0(GPIO23)             MODE1(CMDAT8)          MODE2(LOG_DATA[8])      MODE3(D1ID)              PUPD

+GPIO24= MODE0(GPIO24)             MODE1(CMDAT7)          MODE2(LOG_DATA[7])      MODE3(D1IMS)              PUPD

+GPIO25= MODE0(GPIO25)             MODE1(CMDAT6)          MODE2(LOG_DATA[6])      MODE3(D2ICK)              PUPD

+GPIO26= MODE0(GPIO26)             MODE1(CMDAT5)          MODE2(LOG_DATA[5])      MODE3(D2ID)              PUPD

+GPIO27= MODE0(GPIO27)             MODE1(CMDAT4)          MODE2(LOG_DATA[4])      MODE3(D2IMS)              PUPD

+GPIO28= MODE0(GPIO28)             MODE1(CMDAT3)          MODE2(LOG_DATA[3])      MODE3(TCTIRQ2)             PUPD

+GPIO29= MODE0(GPIO29)             MODE1(CMDAT2)          MODE2(LOG_DATA[2])      MODE3(TEVTVAL)             PUPD

+GPIO30= MODE0(GPIO30)             MODE1(CMDAT1)          MODE2(LOG_DATA[1])      MODE3(D2_TID0)             PUPD

+GPIO31= MODE0(GPIO31)             MODE1(CMDAT0)          MODE2(LOG_DATA[0])      MODE3(D2_TID1)             PUPD

+GPIO32= MODE0(GPIO32)             MODE1(CMFLASH)          MODE2(X4W_LOG_CLK)      MODE3(D2_TID2)             PUPD

+GPIO33= MODE0(GPIO33)             MODE1(SCL)            MODE2(LOG_SLOT_STRB)    MODE3(D2_TID3)             PUPD

+GPIO34= MODE0(GPIO34)             MODE1(SDA)            MODE2(LOG_DATA_RDY)     MODE3(D2_TID4)             PUPD

+GPIO35= MODE0(GPIO35)             MODE1(PWM1_OUT)         MODE2(DEBUG6)           MODE3(D2_TID5)             PUPD

+GPIO36= MODE0(GPIO36)             MODE1(PWM2_OUT)         MODE2(DEBUG7)           MODE3(D2_TID6)             PUPD

+GPIO37= MODE0(GPIO37)             MODE1(IRQ0)            MODE2(CLKM0)            MODE3(D1_TID0)             PUPD

+GPIO38= MODE0(GPIO38)             MODE1(IRQ1)            MODE2(CLKM1)            MODE3(D1_TID1)             PUPD

+GPIO39= MODE0(GPIO39)             MODE1(SRCLKENAI)       MODE2()                   MODE3()                      PUPD

+GPIO40= MODE0(GPIO40)             MODE1(SCL_DUAL)       MODE2()                   MODE3()                      PUPD

+GPIO41= MODE0(GPIO41)             MODE1(SDA_DUAL)       MODE2()                   MODE3()                      PUPD

+GPIO42= MODE0(GPIO42)             MODE1(PASEL)            MODE2()                   MODE3()                      PUPD

+GPIO43= MODE0(GPIO43)             MODE1(IRQ2)            MODE2(CLKM2)            MODE3(I:EXT_FRAME_SYNC)      PUPD

+GPIO44= MODE0(GPIO44)             MODE1(IRQ3)            MODE2(CLKM3)            MODE3()                      PUPD

+GPIO45= MODE0(GPIO45)             MODE1(SPI_CS)           MODE2(CAM_MECH1)        MODE3(TDMA_D1)             PUPD

+GPIO46= MODE0(GPIO46)             MODE1(SPI_SCK)          MODE2(CAM_STROBE)     MODE3(TDMA_CK)             PUPD

+GPIO47= MODE0(GPIO47)             MODE1(SPI_MOSI)         MODE2(SRCCLKENAI2)     MODE3(TDMA_D0)             PUPD

+GPIO48= MODE0(GPIO48)             MODE1(SPI_MISO)        MODE2(CAM_MECH0)        MODE3(TDMA_FS)             PUPD

+GPIO49= MODE0(GPIO49)             MODE1(EINT2)           MODE2()                   MODE3()                      PUPD

+GPIO50= MODE0(GPIO50)             MODE1(EINT3)           MODE2()                   MODE3()                      PUPD

+GPIO51= MODE0(GPIO51)             MODE1(DAICLK)           MODE2()                   MODE3()                      PUPD

+GPIO52= MODE0(GPIO52)             MODE1(DAIPCMOUT)        MODE2()                   MODE3()                      PUPD

+GPIO53= MODE0(GPIO53)             MODE1(DAIPCMIN)        MODE2()                   MODE3()                      PUPD

+GPIO54= MODE0(GPIO54)             MODE1(DAISYNC)          MODE2()                   MODE3()                      PUPD

+GPIO55= MODE0(GPIO55)             MODE1(DAIRST)          MODE2()                   MODE3()                      PUPD

+GPIO56= MODE0(GPIO56)             MODE1(URXD2)           MODE2()                   MODE3()                      PUPD

+GPIO57= MODE0(GPIO57)             MODE1(UTXD2)            MODE2()                   MODE3()                      PUPD

+GPIO58= MODE0(GPIO58)             MODE1(URTS2)            MODE2()                   MODE3()                      PUPD

+GPIO59= MODE0(GPIO59)             MODE1(UCTS2)           MODE2()                   MODE3()                      PUPD

+GPIO60= MODE0(GPIO60)             MODE1(MIRQ)            MODE2(CLKM2)            MODE3()                      PUPD

+GPIO61= MODE0(GPIO61)             MODE1(LSCK)             MODE2(EDICK)          MODE3(VM[0])               PUPD

+GPIO62= MODE0(GPIO62)             MODE1(LSA0)             MODE2(EDIWS)          MODE3(VM[1])               PUPD

+GPIO63= MODE0(GPIO63)             MODE1(LSDA)             MODE2(EDIDAT)         MODE3(DEBUG8)              PUPD

+GPIO64= MODE0(GPIO64)             MODE1(LSCE0B)           MODE2(CLKM4)            MODE3(DEBUG9)              PUPD

+GPIO65= MODE0(GPIO65)             MODE1(LSCE1B)           MODE2(LPCE2B)           MODE3(DEBUG10)             PUPD

+GPIO66= MODE0(GPIO66)             MODE1(LPCE1B)           MODE2(NCE1B)            MODE3(DEBUG11)             PUPD

+GPIO67= MODE0(GPIO67)             MODE1(LPTE)            MODE2()                   MODE3(DEBUG12)             PUPD

+GPIO68= MODE0(GPIO68)             MODE1(NLD17)              MODE2()                   MODE3(DEBUG13)             PUPD

+GPIO69= MODE0(GPIO69)             MODE1(NLD16)              MODE2()                   MODE3(DEBUG14)             PUPD

+GPIO70= MODE0(GPIO70)             MODE1(PWM3_OUT)         MODE2()                   MODE3()                      PUPD

+GPIO71= MODE0(GPIO71)             MODE1(PWM4_OUT)         MODE2()                   MODE3()                      PUPD

+GPIO72= MODE0(GPIO72)             MODE1(PWM5_OUT)         MODE2()                   MODE3()                      PUPD

+GPIO73= MODE0(GPIO73)             MODE1(PWM6_OUT)         MODE2()                   MODE3()                      PUPD

+GPIO74= MODE0(GPIO74)             MODE1(URTS1)            MODE2()                   MODE3()                      PUPD

+GPIO75= MODE0(GPIO75)             MODE1(UCTS1)           MODE2()                   MODE3()                      PUPD

+GPIO76= MODE0(GPIO76)             MODE1(URXD3)           MODE2(IRDA_RXD)        MODE3()                      PUPD

+GPIO77= MODE0(GPIO77)             MODE1(UTXD3)            MODE2(IRDA_TXD)         MODE3()                      PUPD

+GPIO78= MODE0(GPIO78)             MODE1(IRQ4)            MODE2(IRDA_PDN)         MODE3(DEBUG15)             PUPD

+GPIO79= MODE0(GPIO79)             MODE1(IRQ5)            MODE2()                   MODE3()                      PUPD

+GPIO80= MODE0(GPIO80)             MODE1(IRQ6)            MODE2(CLKM2)            MODE3()                      PUPD

+GPIO81= MODE0(GPIO81)             MODE1(USB_DRVVBUS)      MODE2(CLKM3)            MODE3()                      PUPD

+GPIO82= MODE0(GPIO82)             MODE1(EINT6)           MODE2(CLKM4)            MODE3()                      PUPD

+GPIO83= MODE0(GPIO83)             MODE1(EINT7)           MODE2(CLKM5)            MODE3()                      PUPD

+GPIO84= MODE0(GPIO84)             MODE1(MC1CM0)         MODE2()                   MODE3(DEBUG0)              PUPD

+GPIO85= MODE0(GPIO85)             MODE1(MC1DA0)         MODE2(CLKM0)            MODE3(DEBUG1)              PUPD

+GPIO86= MODE0(GPIO86)             MODE1(MC1DA1)         MODE2(IMC0DA4)          MODE3(DEBUG2)              PUPD

+GPIO87= MODE0(GPIO87)             MODE1(MC1CK)          MODE2(IMC0DA5)          MODE3(DEBUG3)              PUPD

+GPIO88= MODE0(GPIO88)             MODE1(MC1WP)           MODE2(IMC0DA6)          MODE3(DEBUG4)              PUPD

+GPIO89= MODE0(GPIO89)             MODE1(MC1INS)          MODE2(IMC0DA7)          MODE3(DEBUG5)              PUPD

+GPIO90= MODE0(GPIO90)             MODE1(KCOL7)           MODE2(CLKM1)            MODE3()                      PUPD

+GPIO91= MODE0(GPIO91)             MODE1(KCOL6)           MODE2()                   MODE3()                      PUPD

+GPIO92= MODE0(GPIO92)             MODE1(KROW7)              MODE2()                   MODE3()                      PUPD

+GPIO93= MODE0(GPIO93)             MODE1(KROW6)              MODE2()                   MODE3()                      PUPD

+GPIO94= MODE0(GPIO94)             MODE1(EINT0)           MODE2()                   MODE3()                      PUPD

+GPIO95= MODE0(GPIO95)             MODE1(EINT1)           MODE2()                   MODE3()                      PUPD

+GPIO96= MODE0(GPIO96)             MODE1(EINT4)           MODE2()                   MODE3()                      PUPD

+GPIO97= MODE0(GPIO97)             MODE1(EINT5)           MODE2()                   MODE3()                      PUPD

+GPIO98= MODE0(GPIO98)             MODE1()                   MODE2(CLKM2)            MODE3()                      PUPD

+GPIO99= MODE0(GPIO99)             MODE1()                   MODE2(CLKM3)            MODE3()                      PUPD

+

+[GPO]

+

+[EINT]

+EINT_COUNT=14

+EINT_DEBOUNCE_TIME_COUNT=14

+

+[ADC]

+ADC_COUNT=10

+

+[KEYPAD]

+KEY_ROW=8

+KEY_COLUMN=9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6268A.fig b/mcu/custom/driver/drv/Drv_Tool/MT6268A.fig
new file mode 100644
index 0000000..901e301
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6268A.fig
@@ -0,0 +1,119 @@
+[Chip Type]

+Chip = MT6268A

+GPIO_Pull_Sel=1

+

+[GPIO]

+GPIO0 = MODE0(GPIO0)              MODE1(O:BPI_BUS0)         MODE2()                   MODE3()                      PUPD

+GPIO1 = MODE0(GPIO1)              MODE1(O:BPI_BUS1)         MODE2()                   MODE3()                      PUPD

+GPIO2 = MODE0(GPIO2)              MODE1(O:BPI_BUS2)         MODE2()                   MODE3()                      PUPD

+GPIO3 = MODE0(GPIO3)              MODE1(O:BPI_BUS3)         MODE2()                   MODE3()                      PUPD

+GPIO4 = MODE0(GPIO4)              MODE1(O:BPI_BUS9)         MODE2()                   MODE3()                      PUPD

+GPIO5 = MODE0(GPIO5)              MODE1(O:BPI_BUS10)        MODE2()                   MODE3()                      PUPD

+GPIO6 = MODE0(GPIO6)              MODE1(O:BPI_BUS16)        MODE2()                   MODE3()                      PUPD

+GPIO7 = MODE0(GPIO7)              MODE1(O:BPI_BUS17)        MODE2()                   MODE3()                      PUPD

+GPIO8 = MODE0(GPIO8)              MODE1(O:BPI_BUS18)        MODE2()                   MODE3()                      PUPD

+GPIO9 = MODE0(GPIO9)              MODE1(O:BPI_BUS19)        MODE2()                   MODE3()                      PUPD

+GPIO10= MODE0(GPIO10)             MODE1(O:BSI0_CS1)         MODE2()                   MODE3()                      PUPD

+GPIO11= MODE0(GPIO11)             MODE1(O:BSI1_CS0)         MODE2()                   MODE3()                      PUPD

+GPIO12= MODE0(GPIO12)             MODE1(O:BSI1_CS1)         MODE2()                   MODE3()                      PUPD

+GPIO13= MODE0(GPIO13)             MODE1(BSI1_DATA)          MODE2()                   MODE3()                      PUPD

+GPIO14= MODE0(GPIO14)             MODE1(O:BSI1_CLK)         MODE2()                   MODE3()                      PUPD

+GPIO15= MODE0(GPIO15)             MODE1(I0:BSI_DIN)         MODE2()                   MODE3()                      PUPD

+GPIO16= MODE0(GPIO16)             MODE1(O:CMRST)            MODE2(O:TDTIRQ)           MODE3(O:TBTXEN)              PUPD

+GPIO17= MODE0(GPIO17)             MODE1(O:CMPDN)            MODE2(O:TCTIRQ1)          MODE3(O:TBTXFS)              PUPD

+GPIO18= MODE0(GPIO18)             MODE1(I0:CMVREF)          MODE2(O:TCTIRQ2)          MODE3(O:TBRXEN)              PUPD

+GPIO19= MODE0(GPIO19)             MODE1(I0:CMHREF)          MODE2(O:TEVTVAL)          MODE3(O:TBRXFS)              PUPD

+GPIO20= MODE0(GPIO20)             MODE1(I0:CMDAT9)          MODE2()                   MODE3(I0:D1ICK)              PUPD

+GPIO21= MODE0(GPIO21)             MODE1(I0:CMDAT8)          MODE2()                   MODE3(IO0:D1ID)              PUPD

+GPIO22= MODE0(GPIO22)             MODE1(I0:CMDAT7)          MODE2()                   MODE3(I0:D1IMS)              PUPD

+GPIO23= MODE0(GPIO23)             MODE1(I0:CMDAT6)          MODE2()                   MODE3(I0:D2ICK)              PUPD

+GPIO24= MODE0(GPIO24)             MODE1(I0:CMDAT5)          MODE2()                   MODE3(IO0:D2ID)              PUPD

+GPIO25= MODE0(GPIO25)             MODE1(I0:CMDAT4)          MODE2()                   MODE3(I0:D2IMS)              PUPD

+GPIO26= MODE0(GPIO26)             MODE1(I0:CMDAT1)          MODE2()                   MODE3(O:D2_TID0)             PUPD

+GPIO27= MODE0(GPIO27)             MODE1(I0:CMDAT0)          MODE2()                   MODE3(O:D2_TID1)             PUPD

+GPIO28= MODE0(GPIO28)             MODE1(O:CMFLASH)          MODE2()                   MODE3(O:D2_TID2)             PUPD

+GPIO29= MODE0(GPIO29)             MODE1(IO1:SCL0)           MODE2()                   MODE3(O:D2_TID3)             PUPD

+GPIO30= MODE0(GPIO30)             MODE1(IO1:SDA0)           MODE2()                   MODE3(O:D2_TID4)             PUPD

+GPIO31= MODE0(GPIO31)             MODE1(O:PWM0)             MODE2()                   MODE3(O:D2_TID5)             PUPD

+GPIO32= MODE0(GPIO32)             MODE1(O:PWM1)             MODE2()                   MODE3(O:D2_TID6)             PUPD

+GPIO33= MODE0(GPIO33)             MODE1(I1:IRQ0)            MODE2(O:CLKM0)            MODE3(O:D1_TID0)             PUPD

+GPIO34= MODE0(GPIO34)             MODE1(I1:IRQ1)            MODE2(O:CLKM1)            MODE3(O:D1_TID1)             PUPD

+GPIO35= MODE0(GPIO35)             MODE1(I0:SRCLKENAI)       MODE2()                   MODE3()                      PUPD

+GPIO36= MODE0(GPIO36)             MODE1(IO1:SCL1)           MODE2()                   MODE3()                      PUPD

+GPIO37= MODE0(GPIO37)             MODE1(IO1:SDA1)           MODE2()                   MODE3()                      PUPD

+GPIO38= MODE0(GPIO38)             MODE1(O:PASEL)            MODE2()                   MODE3()                      PUPD

+GPIO39= MODE0(GPIO39)             MODE1(I1:IRQ2)            MODE2(O:CLKM2)            MODE3()                      PUPD

+GPIO40= MODE0(GPIO40)             MODE1(I1:IRQ3)            MODE2(O:CLKM3)            MODE3()                      PUPD

+GPIO41= MODE0(GPIO41)             MODE1(O:SPI_CS)           MODE2(O:CAM_MECH1)        MODE3(O:TDMA_D1)             PUPD

+GPIO42= MODE0(GPIO42)             MODE1(O:SPI_SCK)          MODE2(IO0:CAM_STROBE)     MODE3(O:TDMA_CK)             PUPD

+GPIO43= MODE0(GPIO43)             MODE1(O:SPI_MOSI)         MODE2()                   MODE3(O:TDMA_D0)             PUPD

+GPIO44= MODE0(GPIO44)             MODE1(I1:SPI_MISO)        MODE2(O:CAM_MECH0)        MODE3(O:TDMA_FS)             PUPD

+GPIO45= MODE0(GPIO45)             MODE1(I1:EINT2)           MODE2()                   MODE3()                      PUPD

+GPIO46= MODE0(GPIO46)             MODE1(I1:EINT3)           MODE2()                   MODE3()                      PUPD

+GPIO47= MODE0(GPIO47)             MODE1(O:DAICLK)           MODE2()                   MODE3()                      PUPD

+GPIO48= MODE0(GPIO48)             MODE1(O:DAIPCMOUT)        MODE2()                   MODE3()                      PUPD

+GPIO49= MODE0(GPIO49)             MODE1(I0:DAIPCMIN)        MODE2()                   MODE3()                      PUPD

+GPIO50= MODE0(GPIO50)             MODE1(O:DAISYNC)          MODE2()                   MODE3()                      PUPD

+GPIO51= MODE0(GPIO51)             MODE1(I1:DAIRST)          MODE2()                   MODE3()                      PUPD

+GPIO52= MODE0(GPIO52)             MODE1(I1:URXD2)           MODE2()                   MODE3()                      PUPD

+GPIO53= MODE0(GPIO53)             MODE1(O:UTXD2)            MODE2()                   MODE3()                      PUPD

+GPIO54= MODE0(GPIO54)             MODE1(O:URTS2)            MODE2()                   MODE3()                      PUPD

+GPIO55= MODE0(GPIO55)             MODE1(I1:UCTS2)           MODE2()                   MODE3()                      PUPD

+GPIO56= MODE0(GPIO56)             MODE1(I1:MIRQ)            MODE2()                   MODE3()                      PUPD

+GPIO57= MODE0(GPIO57)             MODE1(O:TRACEPKT0)        MODE2(O:X4W_LOG_CLK)      MODE3()                      PUPD

+GPIO58= MODE0(GPIO58)             MODE1(O:TRACEPKT1)        MODE2(O:LOG_SLOT_STRB)    MODE3()                      PUPD

+GPIO59= MODE0(GPIO59)             MODE1(O:TRACEPKT2)        MODE2(O:LOG_DATA_RDY)     MODE3()                      PUPD

+GPIO60= MODE0(GPIO60)             MODE1(O:TRACEPKT3)        MODE2(O:LOG_DATA[0])      MODE3(O:DBG_DATA[0])         PUPD

+GPIO61= MODE0(GPIO61)             MODE1(O:TRACEPKT4)        MODE2(O:LOG_DATA[1])      MODE3(O:DBG_DATA[1])         PUPD

+GPIO62= MODE0(GPIO62)             MODE1(O:TRACEPKT5)        MODE2(O:LOG_DATA[2])      MODE3(O:DBG_DATA[2])         PUPD

+GPIO63= MODE0(GPIO63)             MODE1(O:TRACEPKT6)        MODE2(O:LOG_DATA[3])      MODE3(O:DBG_DATA[3])         PUPD

+GPIO64= MODE0(GPIO64)             MODE1(O:TRACEPKT7)        MODE2(O:LOG_DATA[4])      MODE3(O:DBG_DATA[4])         PUPD

+GPIO65= MODE0(GPIO65)             MODE1(O:TRACEPKT8)        MODE2(O:LOG_DATA[5])      MODE3(O:DBG_DATA[5])         PUPD

+GPIO66= MODE0(GPIO66)             MODE1(O:TRACEPKT9)        MODE2(O:LOG_DATA[6])      MODE3(O:DBG_DATA[6])         PUPD

+GPIO67= MODE0(GPIO67)             MODE1(O:TRACEPKT10)       MODE2(O:LOG_DATA[7])      MODE3(O:DBG_DATA[7])         PUPD

+GPIO68= MODE0(GPIO68)             MODE1(O:TRACEPKT11)       MODE2(O:LOG_DATA[8])      MODE3(O:DBG_DATA[8])         PUPD

+GPIO69= MODE0(GPIO69)             MODE1(O:TRACEPKT12)       MODE2(O:LOG_DATA[9])      MODE3(O:DBG_DATA[9])         PUPD

+GPIO70= MODE0(GPIO70)             MODE1(O:TRACEPKT13)       MODE2(O:LOG_DATA[10])     MODE3(O:DBG_DATA[10])        PUPD

+GPIO71= MODE0(GPIO71)             MODE1(O:TRACEPKT14)       MODE2(O:LOG_DATA[11])     MODE3(O:DBG_DATA[11])        PUPD

+GPIO72= MODE0(GPIO72)             MODE1(O:TRACEPKT15)       MODE2(O:LOG_DATA[12])     MODE3(O:DBG_DATA[12])        PUPD

+GPIO73= MODE0(GPIO73)             MODE1(O:TRACESYNC)        MODE2(O:LOG_DATA[13])     MODE3(O:DBG_DATA[13])        PUPD

+GPIO74= MODE0(GPIO74)             MODE1(O:TRACECLK)         MODE2(O:LOG_DATA[14])     MODE3(O:DBG_DATA[14])        PUPD

+GPIO75= MODE0(GPIO75)             MODE1(O:PIPESTAT0)        MODE2(O:LOG_DATA[15])     MODE3(O:DBG_DATA[15])        PUPD

+GPIO76= MODE0(GPIO76)             MODE1(O:PIPESTAT1)        MODE2()                   MODE3(O:AUX_PEN_IRQ)         PUPD

+GPIO77= MODE0(GPIO77)             MODE1(O:PIPESTAT2)        MODE2()                   MODE3()                      PUPD

+GPIO78= MODE0(GPIO78)             MODE1(O:LSCK)             MODE2(IO0:EDICK)          MODE3(O:VM[0])               PUPD

+GPIO79= MODE0(GPIO79)             MODE1(O:LSA0)             MODE2(IO0:EDIWS)          MODE3(O:VM[1])               PUPD

+GPIO80= MODE0(GPIO80)             MODE1(O:LSDA)             MODE2(IO0:EDIDAT)         MODE3()                      PUPD

+GPIO81= MODE0(GPIO81)             MODE1(O:LSCE0B)           MODE2(O:CLKM4)            MODE3()                      PUPD

+GPIO82= MODE0(GPIO82)             MODE1(O:LSCE1B)           MODE2(O:LPCE2B)           MODE3()                      PUPD

+GPIO83= MODE0(GPIO83)             MODE1(O:LPCE1B)           MODE2(O:NCE1B)            MODE3()                      PUPD

+GPIO84= MODE0(GPIO84)             MODE1(I0:LPTE)            MODE2()                   MODE3()                      PUPD

+GPIO85= MODE0(GPIO85)             MODE1(NLD17)              MODE2()                   MODE3()                      PUPD

+GPIO86= MODE0(GPIO86)             MODE1(NLD16)              MODE2()                   MODE3()                      PUPD

+GPIO87= MODE0(GPIO87)             MODE1(O:PWM2)             MODE2()                   MODE3()                      PUPD

+GPIO88= MODE0(GPIO88)             MODE1(O:PWM3)             MODE2()                   MODE3()                      PUPD

+GPIO89= MODE0(GPIO89)             MODE1(O:PWM4)             MODE2()                   MODE3()                      PUPD

+GPIO90= MODE0(GPIO90)             MODE1(O:PWM5)             MODE2()                   MODE3()                      PUPD

+GPIO91= MODE0(GPIO91)             MODE1(O:URTS1)            MODE2()                   MODE3()                      PUPD

+GPIO92= MODE0(GPIO92)             MODE1(I:UCTS1)            MODE2()                   MODE3()                      PUPD

+GPIO93= MODE0(GPIO93)             MODE1(I1:URXD3)           MODE2(I1:IRDA_RXD)        MODE3()                      PUPD

+GPIO94= MODE0(GPIO94)             MODE1(O:UTXD3)            MODE2(O:IRDA_TXD)         MODE3()                      PUPD

+GPIO95= MODE0(GPIO95)             MODE1(I1:IRQ4)            MODE2(O:IRDA_PDN)         MODE3()                      PUPD

+GPIO96= MODE0(GPIO96)             MODE1(I1:IRQ5)            MODE2()                   MODE3()                      PUPD

+GPIO97= MODE0(GPIO97)             MODE1()                   MODE2(O:CLKM2)            MODE3()                      PUPD

+GPIO98= MODE0(GPIO98)             MODE1(O:USB_DRVVBUS)      MODE2(O:CLKM3)            MODE3()                      PUPD

+GPIO99= MODE0(GPIO99)             MODE1(I1:EINT6)           MODE2(O:CLKM4)            MODE3()                      PUPD

+GPIO100= MODE0(GPIO100)            MODE1(I1:EINT7)           MODE2(O:CLKM5)            MODE3()                      PUPD

+

+[GPO]

+

+[EINT]

+EINT_COUNT=14

+EINT_DEBOUNCE_TIME_COUNT=14

+

+[ADC]

+ADC_COUNT=9

+

+[KEYPAD]

+KEY_ROW=8

+KEY_COLUMN=9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6268B.fig b/mcu/custom/driver/drv/Drv_Tool/MT6268B.fig
new file mode 100644
index 0000000..3d9789e
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6268B.fig
@@ -0,0 +1,118 @@
+[Chip Type]

+Chip = MT6268

+GPIO_Pull_Sel=1

+

+[GPIO]

+GPIO0 = MODE0(GPIO0)              MODE1(O:BPI_BUS0)         MODE2()                   MODE3()                      PUPD

+GPIO1 = MODE0(GPIO1)              MODE1(O:BPI_BUS1)         MODE2()                   MODE3()                      PUPD

+GPIO2 = MODE0(GPIO2)              MODE1(O:BPI_BUS2)         MODE2()                   MODE3()                      PUPD

+GPIO3 = MODE0(GPIO3)              MODE1(O:BPI_BUS3)         MODE2()                   MODE3()                      PUPD

+GPIO4 = MODE0(GPIO4)              MODE1(O:BPI_BUS9)         MODE2()                   MODE3()                      PUPD

+GPIO5 = MODE0(GPIO5)              MODE1(O:BPI_BUS10)        MODE2()                   MODE3()                      PUPD

+GPIO6 = MODE0(GPIO6)              MODE1(O:BPI_BUS16)        MODE2()                   MODE3()                      PUPD

+GPIO7 = MODE0(GPIO7)              MODE1(O:BPI_BUS17)        MODE2()                   MODE3()                      PUPD

+GPIO8 = MODE0(GPIO8)              MODE1(O:BPI_BUS18)        MODE2()                   MODE3()                      PUPD

+GPIO9 = MODE0(GPIO9)              MODE1(O:BPI_BUS19)        MODE2()                   MODE3()                      PUPD

+GPIO10= MODE0(GPIO10)             MODE1(O:BSI0_CS1)         MODE2()                   MODE3()                      PUPD

+GPIO11= MODE0(GPIO11)             MODE1(O:BSI1_CS0)         MODE2()                   MODE3()                      PUPD

+GPIO12= MODE0(GPIO12)             MODE1(O:BSI1_CS1)         MODE2()                   MODE3()                      PUPD

+GPIO13= MODE0(GPIO13)             MODE1(BSI1_DATA)          MODE2()                   MODE3()                      PUPD

+GPIO14= MODE0(GPIO14)             MODE1(O:BSI1_CLK)         MODE2()                   MODE3()                      PUPD

+GPIO15= MODE0(GPIO15)             MODE1(I0:BSI_DIN)         MODE2()                   MODE3()                      PUPD

+GPIO16= MODE0(GPIO16)             MODE1(O:CMMCLK)           MODE2(O:LOG_DATA[15])     MODE3(O:TDTIRQ)              PUPD

+GPIO17= MODE0(GPIO17)             MODE1(I:CMPCLK)           MODE2(O:LOG_DATA[14])     MODE3(O:TCTIRQ1)             PUPD

+GPIO18= MODE0(GPIO18)             MODE1(O:CMRST)            MODE2(O:LOG_DATA[13])     MODE3(O:TBTXEN)              PUPD

+GPIO19= MODE0(GPIO19)             MODE1(O:CMPDN)            MODE2(O:LOG_DATA[12])     MODE3(O:TBTXFS)              PUPD

+GPIO20= MODE0(GPIO20)             MODE1(I0:CMVREF)          MODE2(O:LOG_DATA[11])     MODE3(O:TBRXEN)              PUPD

+GPIO21= MODE0(GPIO21)             MODE1(I0:CMHREF)          MODE2(O:LOG_DATA[10])     MODE3(O:TBRXFS)              PUPD

+GPIO22= MODE0(GPIO22)             MODE1(I0:CMDAT9)          MODE2(O:LOG_DATA[9])      MODE3(I0:D1ICK)              PUPD

+GPIO23= MODE0(GPIO23)             MODE1(I0:CMDAT8)          MODE2(O:LOG_DATA[8])      MODE3(IO0:D1ID)              PUPD

+GPIO24= MODE0(GPIO24)             MODE1(I0:CMDAT7)          MODE2(O:LOG_DATA[7])      MODE3(I0:D1IMS)              PUPD

+GPIO25= MODE0(GPIO25)             MODE1(I0:CMDAT6)          MODE2(O:LOG_DATA[6])      MODE3(I0:D2ICK)              PUPD

+GPIO26= MODE0(GPIO26)             MODE1(I0:CMDAT5)          MODE2(O:LOG_DATA[5])      MODE3(IO0:D2ID)              PUPD

+GPIO27= MODE0(GPIO27)             MODE1(I0:CMDAT4)          MODE2(O:LOG_DATA[4])      MODE3(I0:D2IMS)              PUPD

+GPIO28= MODE0(GPIO28)             MODE1(I0:CMDAT3)          MODE2(O:LOG_DATA[3])      MODE3(O:TCTIRQ2)             PUPD

+GPIO29= MODE0(GPIO29)             MODE1(I0:CMDAT2)          MODE2(O:LOG_DATA[2])      MODE3(O:TEVTVAL)             PUPD

+GPIO30= MODE0(GPIO30)             MODE1(I0:CMDAT1)          MODE2(O:LOG_DATA[1])      MODE3(O:D2_TID0)             PUPD

+GPIO31= MODE0(GPIO31)             MODE1(I0:CMDAT0)          MODE2(O:LOG_DATA[0])      MODE3(O:D2_TID1)             PUPD

+GPIO32= MODE0(GPIO32)             MODE1(O:CMFLASH)          MODE2(O:X4W_LOG_CLK)      MODE3(O:D2_TID2)             PUPD

+GPIO33= MODE0(GPIO33)             MODE1(IO1:SCL)            MODE2(O:LOG_SLOT_STRB)    MODE3(O:D2_TID3)             PUPD

+GPIO34= MODE0(GPIO34)             MODE1(IO1:SDA)            MODE2(O:LOG_DATA_RDY)     MODE3(O:D2_TID4)             PUPD

+GPIO35= MODE0(GPIO35)             MODE1(O:PWM1_OUT)         MODE2(O:DEBUG6)           MODE3(O:D2_TID5)             PUPD

+GPIO36= MODE0(GPIO36)             MODE1(O:PWM2_OUT)         MODE2(O:DEBUG7)           MODE3(O:D2_TID6)             PUPD

+GPIO37= MODE0(GPIO37)             MODE1(I1:IRQ0)            MODE2(O:CLKM0)            MODE3(O:D1_TID0)             PUPD

+GPIO38= MODE0(GPIO38)             MODE1(I1:IRQ1)            MODE2(O:CLKM1)            MODE3(O:D1_TID1)             PUPD

+GPIO39= MODE0(GPIO39)             MODE1(I0:SRCLKENAI)       MODE2()                   MODE3()                      PUPD

+GPIO40= MODE0(GPIO40)             MODE1(IO1:SCL_DUAL)       MODE2()                   MODE3()                      PUPD

+GPIO41= MODE0(GPIO41)             MODE1(IO1:SDA_DUAL)       MODE2()                   MODE3()                      PUPD

+GPIO42= MODE0(GPIO42)             MODE1(O:PASEL)            MODE2()                   MODE3()                      PUPD

+GPIO43= MODE0(GPIO43)             MODE1(I1:IRQ2)            MODE2(O:CLKM2)            MODE3(I:EXT_FRAME_SYNC)      PUPD

+GPIO44= MODE0(GPIO44)             MODE1(I1:IRQ3)            MODE2(O:CLKM3)            MODE3()                      PUPD

+GPIO45= MODE0(GPIO45)             MODE1(O:SPI_CS)           MODE2(O:CAM_MECH1)        MODE3(O:TDMA_D1)             PUPD

+GPIO46= MODE0(GPIO46)             MODE1(O:SPI_SCK)          MODE2(IO0:CAM_STROBE)     MODE3(O:TDMA_CK)             PUPD

+GPIO47= MODE0(GPIO47)             MODE1(O:SPI_MOSI)         MODE2(I0:SRCCLKENAI2)     MODE3(O:TDMA_D0)             PUPD

+GPIO48= MODE0(GPIO48)             MODE1(I1:SPI_MISO)        MODE2(O:CAM_MECH0)        MODE3(O:TDMA_FS)             PUPD

+GPIO49= MODE0(GPIO49)             MODE1(I1:EINT2)           MODE2()                   MODE3()                      PUPD

+GPIO50= MODE0(GPIO50)             MODE1(I1:EINT3)           MODE2()                   MODE3()                      PUPD

+GPIO51= MODE0(GPIO51)             MODE1(O:DAICLK)           MODE2()                   MODE3()                      PUPD

+GPIO52= MODE0(GPIO52)             MODE1(O:DAIPCMOUT)        MODE2()                   MODE3()                      PUPD

+GPIO53= MODE0(GPIO53)             MODE1(I0:DAIPCMIN)        MODE2()                   MODE3()                      PUPD

+GPIO54= MODE0(GPIO54)             MODE1(O:DAISYNC)          MODE2()                   MODE3()                      PUPD

+GPIO55= MODE0(GPIO55)             MODE1(I1:DAIRST)          MODE2()                   MODE3()                      PUPD

+GPIO56= MODE0(GPIO56)             MODE1(I1:URXD2)           MODE2()                   MODE3()                      PUPD

+GPIO57= MODE0(GPIO57)             MODE1(O:UTXD2)            MODE2()                   MODE3()                      PUPD

+GPIO58= MODE0(GPIO58)             MODE1(O:URTS2)            MODE2()                   MODE3()                      PUPD

+GPIO59= MODE0(GPIO59)             MODE1(I1:UCTS2)           MODE2()                   MODE3()                      PUPD

+GPIO60= MODE0(GPIO60)             MODE1(I1:MIRQ)            MODE2(O:CLKM2)            MODE3()                      PUPD

+GPIO61= MODE0(GPIO61)             MODE1(O:LSCK)             MODE2(IO0:EDICK)          MODE3(O:VM[0])               PUPD

+GPIO62= MODE0(GPIO62)             MODE1(O:LSA0)             MODE2(IO0:EDIWS)          MODE3(O:VM[1])               PUPD

+GPIO63= MODE0(GPIO63)             MODE1(O:LSDA)             MODE2(IO0:EDIDAT)         MODE3(O:DEBUG8)              PUPD

+GPIO64= MODE0(GPIO64)             MODE1(O:LSCE0B)           MODE2(O:CLKM4)            MODE3(O:DEBUG9)              PUPD

+GPIO65= MODE0(GPIO65)             MODE1(O:LSCE1B)           MODE2(O:LPCE2B)           MODE3(O:DEBUG10)             PUPD

+GPIO66= MODE0(GPIO66)             MODE1(O:LPCE1B)           MODE2(O:NCE1B)            MODE3(O:DEBUG11)             PUPD

+GPIO67= MODE0(GPIO67)             MODE1(I0:LPTE)            MODE2()                   MODE3(O:DEBUG12)             PUPD

+GPIO68= MODE0(GPIO68)             MODE1(NLD17)              MODE2()                   MODE3(O:DEBUG13)             PUPD

+GPIO69= MODE0(GPIO69)             MODE1(NLD16)              MODE2()                   MODE3(O:DEBUG14)             PUPD

+GPIO70= MODE0(GPIO70)             MODE1(O:PWM3_OUT)         MODE2()                   MODE3()                      PUPD

+GPIO71= MODE0(GPIO71)             MODE1(O:PWM4_OUT)         MODE2()                   MODE3()                      PUPD

+GPIO72= MODE0(GPIO72)             MODE1(O:PWM5_OUT)         MODE2()                   MODE3()                      PUPD

+GPIO73= MODE0(GPIO73)             MODE1(O:PWM6_OUT)         MODE2()                   MODE3()                      PUPD

+GPIO74= MODE0(GPIO74)             MODE1(O:URTS1)            MODE2()                   MODE3()                      PUPD

+GPIO75= MODE0(GPIO75)             MODE1(I1:UCTS1)           MODE2()                   MODE3()                      PUPD

+GPIO76= MODE0(GPIO76)             MODE1(I1:URXD3)           MODE2(I1:IRDA_RXD)        MODE3()                      PUPD

+GPIO77= MODE0(GPIO77)             MODE1(O:UTXD3)            MODE2(O:IRDA_TXD)         MODE3()                      PUPD

+GPIO78= MODE0(GPIO78)             MODE1(I1:IRQ4)            MODE2(O:IRDA_PDN)         MODE3(O:DEBUG15)             PUPD

+GPIO79= MODE0(GPIO79)             MODE1(I1:IRQ5)            MODE2()                   MODE3()                      PUPD

+GPIO80= MODE0(GPIO80)             MODE1(I1:IRQ6)            MODE2(O:CLKM2)            MODE3()                      PUPD

+GPIO81= MODE0(GPIO81)             MODE1(O:USB_DRVVBUS)      MODE2(O:CLKM3)            MODE3()                      PUPD

+GPIO82= MODE0(GPIO82)             MODE1(I1:EINT6)           MODE2(O:CLKM4)            MODE3()                      PUPD

+GPIO83= MODE0(GPIO83)             MODE1(I1:EINT7)           MODE2(O:CLKM5)            MODE3()                      PUPD

+GPIO84= MODE0(GPIO84)             MODE1(IO0:MC1CM0)         MODE2()                   MODE3(O:DEBUG0)              PUPD

+GPIO85= MODE0(GPIO85)             MODE1(IO0:MC1DA0)         MODE2(O:CLKM0)            MODE3(O:DEBUG1)              PUPD

+GPIO86= MODE0(GPIO86)             MODE1(IO0:MC1DA1)         MODE2(IO:MC0DA4)          MODE3(O:DEBUG2)              PUPD

+GPIO87= MODE0(GPIO87)             MODE1(IO0:MC1CK)          MODE2(IO:MC0DA5)          MODE3(O:DEBUG3)              PUPD

+GPIO88= MODE0(GPIO88)             MODE1(I0:MC1WP)           MODE2(IO:MC0DA6)          MODE3(O:DEBUG4)              PUPD

+GPIO89= MODE0(GPIO89)             MODE1(I0:MC1INS)          MODE2(IO:MC0DA7)          MODE3(O:DEBUG5)              PUPD

+GPIO90= MODE0(GPIO90)             MODE1(I1:KCOL7)           MODE2(O:CLKM1)            MODE3()                      PUPD

+GPIO91= MODE0(GPIO91)             MODE1(I1:KCOL6)           MODE2()                   MODE3()                      PUPD

+GPIO92= MODE0(GPIO92)             MODE1(KROW7)              MODE2()                   MODE3()                      PUPD

+GPIO93= MODE0(GPIO93)             MODE1(KROW6)              MODE2()                   MODE3()                      PUPD

+GPIO94= MODE0(GPIO94)             MODE1(I1:EINT0)           MODE2()                   MODE3()                      PUPD

+GPIO95= MODE0(GPIO95)             MODE1(I1:EINT1)           MODE2()                   MODE3()                      PUPD

+GPIO96= MODE0(GPIO96)             MODE1(I1:EINT4)           MODE2()                   MODE3()                      PUPD

+GPIO97= MODE0(GPIO97)             MODE1(I1:EINT5)           MODE2()                   MODE3()                      PUPD

+GPIO98= MODE0(GPIO98)             MODE1()                   MODE2(O:CLKM2)            MODE3()                      PUPD

+GPIO99= MODE0(GPIO99)             MODE1()                   MODE2(O:CLKM3)            MODE3()                      PUPD

+

+[GPO]

+

+[EINT]

+EINT_COUNT=14

+EINT_DEBOUNCE_TIME_COUNT=14

+

+[ADC]

+ADC_COUNT=10

+

+[KEYPAD]

+KEY_ROW=8

+KEY_COLUMN=8

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6268T.fig b/mcu/custom/driver/drv/Drv_Tool/MT6268T.fig
new file mode 100644
index 0000000..62c8b36
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6268T.fig
@@ -0,0 +1,33 @@
+[Chip Type]

+Chip = MT6268T

+

+[GPIO]

+GPIO0 = MODE0(GPIO0)              MODE1(O:TDMA_CTIRQ1_B)    MODE2(O:PWM1)             MODE3()                      PU

+GPIO1 = MODE0(GPIO1)              MODE1(O:TDMA_CTIRQ2_B)    MODE2(O:PWM2)             MODE3()                      PU

+GPIO2 = MODE0(GPIO2)              MODE1(O:O:TDMA_BTXEN)     MODE2(O:TDMA_CK)          MODE3()                      PU

+GPIO3 = MODE0(GPIO3)              MODE1(O:TDMA_BTXFS)       MODE2(O:TDMA_FS)          MODE3()                      PU

+GPIO4 = MODE0(GPIO4)              MODE1(O:TDMA_BRXEN)       MODE2(O:TDMA_SDAT[0])     MODE3()                      PU

+GPIO5 = MODE0(GPIO5)              MODE1(O:TDMA_BRXFS)       MODE2(O:TDMA_SDAT[1])     MODE3()                      PU

+GPIO6 = MODE0(GPIO6)              MODE1(I:BSI_DIN)          MODE2()                   MODE3()                      PU

+GPIO7 = MODE0(GPIO7)              MODE1(O:DSP1_TID[0])      MODE2()                   MODE3()                      PU

+GPIO8 = MODE0(GPIO8)              MODE1(O:DSP1_TID[1])      MODE2()                   MODE3()                      PU

+GPIO9 = MODE0(GPIO9)              MODE1(O:DSP2_TID[0])      MODE2()                   MODE3()                      PU

+GPIO10= MODE0(GPIO10)             MODE1(O:DSP2_TID[1])      MODE2()                   MODE3()                      PU

+GPIO11= MODE0(GPIO11)             MODE1(O:DSP2_TID[2])      MODE2()                   MODE3()                      PU

+GPIO12= MODE0(GPIO12)             MODE1(O:DSP2_TID[3])      MODE2()                   MODE3()                      PU

+GPIO13= MODE0(GPIO13)             MODE1(O:DSP2_TID[4])      MODE2()                   MODE3()                      PU

+GPIO14= MODE0(GPIO14)             MODE1(O:DSP2_TID[5])      MODE2()                   MODE3()                      PU

+GPIO15= MODE0(GPIO15)             MODE1(O:DSP2_TID[6])      MODE2()                   MODE3()                      PU

+

+[GPO]

+

+[EINT]

+EINT_COUNT = 8

+EINT_DEBOUNCE_TIME_COUNT = 4

+

+[ADC]

+ADC_COUNT=8

+

+[KEYPAD]

+KEY_ROW=7

+KEY_COLUMN=8

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6270A.fig b/mcu/custom/driver/drv/Drv_Tool/MT6270A.fig
new file mode 100644
index 0000000..31a2931
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6270A.fig
@@ -0,0 +1,48 @@
+[Chip Type]

+Chip = MT6270A

+GPIO_Pull_Sel=1

+PMIC_Config=0

+

+[GPIO]

+GPIO0 = MODE0(GPIO0)		MODE1(EINT3)		    MODE2()		            MODE3()		    PU

+GPIO1 = MODE0(GPIO1)		MODE1(EINT2)		    MODE2()		            MODE3()		    PU

+GPIO2 = MODE0(GPIO2)		MODE1(TRACEPKT7)		MODE2(USB_DRVVBUS)		MODE3(DEBUG0)	PU	

+GPIO3 = MODE0(GPIO3)		MODE1(TRACEPKT6)		MODE2(CLKM0)		    MODE3(DEBUG1)	PU	

+GPIO4 = MODE0(GPIO4)		MODE1(TRACEPKT5)		MODE2(CLKM1)		    MODE3(DEBUG2)	PU	

+GPIO5 = MODE0(GPIO5)		MODE1(TRACEPKT4)		MODE2(CLKM2)		    MODE3(DEBUG3)	PU	

+GPIO6 = MODE0(GPIO6)		MODE1(TRACEPKT3)		MODE2(CLKM3)		    MODE3(DEBUG4)	PU	

+GPIO7 = MODE0(GPIO7)		MODE1(TRACEPKT2)		MODE2(CLKM4)		    MODE3(DEBUG5)	PU	

+GPIO8 = MODE0(GPIO8)		MODE1(TRACEPKT1)		MODE2(CLKM5)		    MODE3(DEBUG6)	PU	

+GPIO9 = MODE0(GPIO9)		MODE1(TRACEPKT0)		MODE2()		            MODE3(DEBUG7)	PU	

+GPIO10 = MODE0(GPIO10)		MODE1(FPGA_IRQ30_B)		MODE2(HSL_ETM_DATA15)	MODE3()		    PU

+GPIO11 = MODE0(GPIO11)		MODE1(FPGA_IRQ29_B)		MODE2(HSL_ETM_DATA14)	MODE3()		    PU

+GPIO12 = MODE0(GPIO12)		MODE1(FPGA_IRQ28_B)		MODE2(HSL_ETM_DATA13)	MODE3()		    PU

+GPIO13 = MODE0(GPIO13)		MODE1(FPGA_IRQ27_B)		MODE2(HSL_ETM_DATA12)	MODE3()		    PU

+GPIO14 = MODE0(GPIO14)		MODE1(FPGA_IRQ26_B)		MODE2(HSL_ETM_DATA11)	MODE3()		    PU

+GPIO15 = MODE0(GPIO15)		MODE1(FPGA_IRQ25_B)		MODE2(HSL_ETM_DATA10)	MODE3()		    PU

+GPIO16 = MODE0(GPIO16)		MODE1(FPGA_IRQ24_B)		MODE2(HSL_ETM_DATA9)	MODE3()		    PU

+GPIO17 = MODE0(GPIO17)		MODE1(FPGA_IRQ23_B)		MODE2(HSL_ETM_DATA8)	MODE3()		    PU

+GPIO18 = MODE0(GPIO18)		MODE1(FPGA_IRQ22_B)		MODE2(HSL_ETM_DATA7)	MODE3()		    PU

+GPIO19 = MODE0(GPIO19)		MODE1(FPGA_IRQ21_B)		MODE2(HSL_ETM_DATA6)	MODE3()		    PU

+GPIO20 = MODE0(GPIO20)		MODE1(FPGA_IRQ20_B)		MODE2(HSL_ETM_DATA5)	MODE3()		    PU

+GPIO21 = MODE0(GPIO21)		MODE1(FPGA_IRQ19_B)		MODE2(HSL_ETM_DATA4)	MODE3()		    PU

+GPIO22 = MODE0(GPIO22)		MODE1(FPGA_IRQ18_B)		MODE2(HSL_ETM_DATA3)	MODE3()		    PU

+GPIO23 = MODE0(GPIO23)		MODE1(FPGA_IRQ17_B)		MODE2(HSL_ETM_DATA2)	MODE3()		    PU

+GPIO24 = MODE0(GPIO24)		MODE1(FPGA_IRQ16_B)		MODE2(HSL_ETM_DATA1)	MODE3()		    PU

+GPIO25 = MODE0(GPIO25)		MODE1(FPGA_IRQ15_B)		MODE2(HSL_ETM_DATA0)	MODE3()		    PU

+GPIO26 = MODE0(GPIO26)		MODE1(FPGA_IRQ14_B)		MODE2(HSL_ETM_CLKOUT)	MODE3()		    PU

+GPIO27 = MODE0(GPIO27)		MODE1(NCE1_B)		    MODE2(LPECS2_B)		    MODE3()		    PU

+

+

+[GPO]

+

+[EINT]

+EINT_COUNT=4

+EINT_DEBOUNCE_TIME_COUNT=4

+

+[ADC]

+ADC_COUNT=1

+

+[KEYPAD]

+KEY_ROW=8

+KEY_COLUMN=9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6270MP.fig b/mcu/custom/driver/drv/Drv_Tool/MT6270MP.fig
new file mode 100644
index 0000000..0358f72
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6270MP.fig
@@ -0,0 +1,184 @@
+[Chip Type]

+Chip = MT6270MP

+GPIO_ModeNum = 5

+GPIO_Pull_Sel = 1

+GPIO_Extend_Config=1

+

+[GPIO]

+GPIO0   = MODE0(GPIO0)            MODE1(MC0INS)           MODE2(MC2INS)           MODE3(EINT9)            MODE4()                 PU

+GPIO1   = MODE0(GPIO1)            MODE1(BSI1_DATA1)       MODE2(BSI1_CS1)         MODE3()                 MODE4()                 PD

+GPIO2   = MODE0(GPIO2)            MODE1(BSI0_CS1)         MODE2(URTS2)            MODE3()                 MODE4()                 PD

+GPIO3   = MODE0(GPIO3)            MODE1(VM0)              MODE2()                 MODE3(EXT_FRAME_SYNC)   MODE4()                 PD

+GPIO4   = MODE0(GPIO4)            MODE1(VM1)              MODE2(EDI0DAT)          MODE3()                 MODE4()                 PD

+GPIO5   = MODE0(GPIO5)            MODE1(DUAL_BPI_BUS13)   MODE2(EDI1WS)           MODE3(EXT_FRAME_SYNC)   MODE4(CLKM9)            PD

+GPIO6   = MODE0(GPIO6)            MODE1(DUAL_BPI_BUS9)    MODE2(EDI1CK)           MODE3(USB_DRVVBUS)      MODE4(UCTS2)            PD

+GPIO7   = MODE0(GPIO7)            MODE1(DUAL_BPI_BUS6)    MODE2(EDI0CK)           MODE3()                 MODE4()                 PD

+GPIO8   = MODE0(GPIO8)            MODE1(DUAL_BPI_BUS7)    MODE2(EDI0WS)           MODE3()                 MODE4(CLKM10)           PD

+GPIO9   = MODE0(GPIO9)            MODE1(DUAL_BPI_BUS14)   MODE2(EDI1DAT)          MODE3(CLKM1)            MODE4()                 PD

+GPIO10  = MODE0(GPIO10)           MODE1(DUAL_BPI_BUS8)    MODE2()                 MODE3(URTS1)            MODE4()                 PD

+GPIO11  = MODE0(GPIO11)           MODE1(URXD1)            MODE2(UTXD1)            MODE3(CLKM7)            MODE4()                 PU

+GPIO12  = MODE0(GPIO12)           MODE1(UTXD1)            MODE2(URXD1)            MODE3(CLKM8)            MODE4()                 --

+GPIO13  = MODE0(GPIO13)           MODE1(URXD2)            MODE2(UTXD2)            MODE3(EINT7)            MODE4(CINT0)            PU

+GPIO14  = MODE0(GPIO14)           MODE1(UTXD2)            MODE2(URXD2)            MODE3(EINT6)            MODE4(SRCLKENAI0)       --

+GPIO15  = MODE0(GPIO15)           MODE1(DAICLK)           MODE2(EDI0CK)           MODE3(IRDA_PDN)         MODE4(UCTS1)            PD

+GPIO16  = MODE0(GPIO16)           MODE1(DAIPCMOUT)        MODE2(EDI0WS)           MODE3(PTA0)             MODE4()                 PD

+GPIO17  = MODE0(GPIO17)           MODE1(DAIPCMIN)         MODE2(EDI0DAT)          MODE3(URXD3)            MODE4(UTXD3)            PD

+GPIO18  = MODE0(GPIO18)           MODE1(DAISYNC)          MODE2(EDI1CK)           MODE3(UTXD3)            MODE4(URXD3)            PD

+GPIO19  = MODE0(GPIO19)           MODE1(DAIRST)           MODE2(EDI1WS)           MODE3(SRCLKENAI1)       MODE4(PTA1)             PD

+GPIO20  = MODE0(GPIO20)           MODE1(EINT3)            MODE2(EDI1DAT)          MODE3(TDD_SYNC)         MODE4(CINT1)            PU

+GPIO21  = MODE0(GPIO21)           MODE1(EINT4)            MODE2(GPS_SYNC)         MODE3(SRCLKENAI2)       MODE4()                 PU

+GPIO22  = MODE0(GPIO22)           MODE1(MCU_JTRST_B)      MODE2()                 MODE3()                 MODE4()                 PD

+GPIO23  = MODE0(GPIO23)           MODE1(MCU_JTCK)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO24  = MODE0(GPIO24)           MODE1(MCU_JTDI)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO25  = MODE0(GPIO25)           MODE1(MCU_JTMS)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO26  = MODE0(GPIO26)           MODE1(MCU_JTDO)         MODE2()                 MODE3()                 MODE4()                 --

+GPIO27  = MODE0(GPIO27)           MODE1(MCU_JRTCK)        MODE2()                 MODE3()                 MODE4()                 --

+GPIO28  = MODE0(GPIO28)           MODE1(SWCLKTCK)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO29  = MODE0(GPIO29)           MODE1(SWDIOTMS)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO30  = MODE0(GPIO30)           MODE1(PWM1_OUT)         MODE2(MC1WP)            MODE3()                 MODE4()                 PD

+GPIO31  = MODE0(GPIO31)           MODE1(PWM2_OUT)         MODE2(DSP_JTRST_B)      MODE3(EINT8)            MODE4(CINT0)            PD

+GPIO32  = MODE0(GPIO32)           MODE1(PWM3_OUT)         MODE2()                 MODE3(CLKM3)            MODE4()                 PD

+GPIO33  = MODE0(GPIO33)           MODE1(EINT0)            MODE2(CLKM4)            MODE3()                 MODE4(CINT1)            PU

+GPIO34  = MODE0(GPIO34)           MODE1(EINT1)            MODE2(CLKM5)            MODE3(GPS_SYNC)         MODE4()                 PU

+GPIO35  = MODE0(GPIO35)           MODE1(EINT2)            MODE2(TDD_SYNC)         MODE3(LPCE3B)           MODE4()                 PU

+GPIO36  = MODE0(GPIO36)           MODE1(KCOL7)            MODE2(URXD3)            MODE3(IRDA_TXD)         MODE4()                 PU

+GPIO37  = MODE0(GPIO37)           MODE1(KCOL6)            MODE2(UTXD3)            MODE3(PWM4_OUT)         MODE4()                 PU

+GPIO38  = MODE0(GPIO38)           MODE1(KCOL5)            MODE2(EINT14)           MODE3(SPI1_CS)          MODE4()                 PU

+GPIO39  = MODE0(GPIO39)           MODE1(KCOL4)            MODE2(EINT15)           MODE3(SPI1_MOSI)        MODE4()                 PU

+GPIO40  = MODE0(GPIO40)           MODE1(KCOL3)            MODE2(PWM5_OUT)         MODE3(URTS1)            MODE4()                 PU

+GPIO41  = MODE0(GPIO41)           MODE1(KCOL2)            MODE2(PWM6_OUT)         MODE3(UCTS1)            MODE4()                 PU

+GPIO42  = MODE0(GPIO42)           MODE1(KCOL1)            MODE2()                 MODE3()                 MODE4()                 PU

+GPIO43  = MODE0(GPIO43)           MODE1(KCOL0)            MODE2()                 MODE3()                 MODE4()                 PU

+GPIO44  = MODE0(GPIO44)           MODE1(KROW7)            MODE2(URTS2)            MODE3(IRDA_RXD)         MODE4()                 --

+GPIO45  = MODE0(GPIO45)           MODE1(KROW6)            MODE2(UCTS2)            MODE3(CLKM6)            MODE4()                 --

+GPIO46  = MODE0(GPIO46)           MODE1(KROW5)            MODE2(EINT16)           MODE3(SPI1_MISO)        MODE4()                 --

+GPIO47  = MODE0(GPIO47)           MODE1(KROW4)            MODE2(EINT17)           MODE3(SPI1_SCK)         MODE4()                 --

+GPIO48  = MODE0(GPIO48)           MODE1(KROW3)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO49  = MODE0(GPIO49)           MODE1(KROW2)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO50  = MODE0(GPIO50)           MODE1(KROW1)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO51  = MODE0(GPIO51)           MODE1(KROW0)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO52  = MODE0(GPIO52)           MODE1(SCL)              MODE2()                 MODE3(DEBUG_OUT[17])    MODE4()                 PU

+GPIO53  = MODE0(GPIO53)           MODE1(SDA)              MODE2()                 MODE3(DEBUG_OUT[16])    MODE4()                 PU

+GPIO54  = MODE0(GPIO54)           MODE1(CMRST)            MODE2()                 MODE3(DEBUG_OUT[13])    MODE4()                 PD

+GPIO55  = MODE0(GPIO55)           MODE1(CMPDN)            MODE2(BT_MDS_IN)        MODE3(DEBUG_OUT[12])    MODE4()                 PD

+GPIO56  = MODE0(GPIO56)           MODE1(CMVREF)           MODE2()                 MODE3(DEBUG_OUT[11])    MODE4()                 PD

+GPIO57  = MODE0(GPIO57)           MODE1(CMHREF)           MODE2()                 MODE3(DEBUG_OUT[10])    MODE4()                 PD

+GPIO58  = MODE0(GPIO58)           MODE1(CMDAT9)           MODE2()                 MODE3(DEBUG_OUT[9])     MODE4()                 PD

+GPIO59  = MODE0(GPIO59)           MODE1(CMDAT8)           MODE2()                 MODE3(DEBUG_OUT[8])     MODE4()                 PD

+GPIO60  = MODE0(GPIO60)           MODE1(CMDAT7)           MODE2()                 MODE3(DEBUG_OUT[7])     MODE4()                 PD

+GPIO61  = MODE0(GPIO61)           MODE1(CMDAT6)           MODE2()                 MODE3(DEBUG_OUT[6])     MODE4()                 PD

+GPIO62  = MODE0(GPIO62)           MODE1(CMDAT5)           MODE2()                 MODE3(DEBUG_OUT[5])     MODE4()                 PD

+GPIO63  = MODE0(GPIO63)           MODE1(CMDAT4)           MODE2()                 MODE3(DEBUG_OUT[4])     MODE4()                 PD

+GPIO64  = MODE0(GPIO64)           MODE1(CMDAT3)           MODE2()                 MODE3(DEBUG_OUT[3])     MODE4()                 PD

+GPIO65  = MODE0(GPIO65)           MODE1(CMDAT2)           MODE2()                 MODE3(DEBUG_OUT[2])     MODE4()                 PD

+GPIO66  = MODE0(GPIO66)           MODE1(CMDAT1)           MODE2(PTA0)             MODE3(DEBUG_OUT[1])     MODE4()                 PD

+GPIO67  = MODE0(GPIO67)           MODE1(CMDAT0)           MODE2(PTA1)             MODE3(DEBUG_OUT[0])     MODE4()                 PD

+GPIO68  = MODE0(GPIO68)           MODE1(CMPCLK)           MODE2()                 MODE3(DEBUG_OUT[14])    MODE4()                 PD

+GPIO69  = MODE0(GPIO69)           MODE1(CMMCLK)           MODE2(PLL_TCLK_650M_CK) MODE3(DEBUG_OUT[15])    MODE4()                 PD

+GPIO70  = MODE0(GPIO70)           MODE1(LSCK)             MODE2(NCE1B)            MODE3(MC2WP)            MODE4(DSP_JTDI)         PD

+GPIO71  = MODE0(GPIO71)           MODE1(LSA0)             MODE2()                 MODE3(CLKM11)           MODE4(DSP_JTMS)         PD

+GPIO72  = MODE0(GPIO72)           MODE1(LSDA)             MODE2()                 MODE3(CLKM12)           MODE4(DSP_JTDO)         PD

+GPIO73  = MODE0(GPIO73)           MODE1(LSCE0B)           MODE2(USB_DRVVBUS)      MODE3(EINT11)           MODE4(DSP_EMU_B)        --

+GPIO74  = MODE0(GPIO74)           MODE1(LSCE1B)           MODE2(IRDA_TXD)         MODE3(LPCE2B)           MODE4(DSP_JTCK)         PU

+GPIO75  = MODE0(GPIO75)           MODE1(LPCE1B)           MODE2()                 MODE3(IRDA_RXD)         MODE4()                 PU

+GPIO76  = MODE0(GPIO76)           MODE1(LPTE)             MODE2()                 MODE3()                 MODE4()                 PD

+GPIO77  = MODE0(GPIO77)           MODE1(NLD17)            MODE2(EINT12)           MODE3()                 MODE4(CINT0)            PD

+GPIO78  = MODE0(GPIO78)           MODE1(NLD16)            MODE2(EINT13)           MODE3()                 MODE4()                 PD

+GPIO79  = MODE0(GPIO79)           MODE1(NRNB)             MODE2()                 MODE3()                 MODE4()                 PU

+GPIO80  = MODE0(GPIO80)           MODE1(NCLE)             MODE2()                 MODE3(SRCLKENAI3)       MODE4()                 --

+GPIO81  = MODE0(GPIO81)           MODE1(NALE)             MODE2()                 MODE3(SRCLKENAI4)       MODE4()                 --

+GPIO82  = MODE0(GPIO82)           MODE1(NWEB)             MODE2()                 MODE3()                 MODE4()                 --

+GPIO83  = MODE0(GPIO83)           MODE1(NREB)             MODE2()                 MODE3()                 MODE4()                 --

+GPIO84  = MODE0(GPIO84)           MODE1(NCE0B)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO85  = MODE0(GPIO85)           MODE1(MC2CM0)           MODE2()                 MODE3(DEBUG_OUT[21])    MODE4()                 PU

+GPIO86  = MODE0(GPIO86)           MODE1(MC2DA0)           MODE2(MC0DA7)           MODE3(DEBUG_OUT[20])    MODE4()                 PU

+GPIO87  = MODE0(GPIO87)           MODE1(MC2DA1)           MODE2(MC0DA6)           MODE3(DEBUG_OUT[19])    MODE4()                 PU

+GPIO88  = MODE0(GPIO88)           MODE1(MC2DA2)           MODE2(MC0DA5)           MODE3(EINT4)            MODE4(DEBUG_OUT[31])    PU

+GPIO89  = MODE0(GPIO89)           MODE1(MC2DA3)           MODE2(MC0DA4)           MODE3(EINT5)            MODE4()                 PU

+GPIO90  = MODE0(GPIO90)           MODE1(MC2CK)            MODE2()                 MODE3(DEBUG_OUT[22])    MODE4(BT_JTMS)          PU

+GPIO91  = MODE0(GPIO91)           MODE1(MC2CK_FB)         MODE2(MC1INS)           MODE3(IRDA_PDN)         MODE4()                 PU

+GPIO92  = MODE0(GPIO92)           MODE1(MC0CM0)           MODE2()                 MODE3(DEBUG_OUT[29])    MODE4()                 PU

+GPIO93  = MODE0(GPIO93)           MODE1(MC0DA0)           MODE2()                 MODE3(DEBUG_OUT[28])    MODE4()                 PU

+GPIO94  = MODE0(GPIO94)           MODE1(MC0DA1)           MODE2()                 MODE3(DEBUG_OUT[27])    MODE4()                 PU

+GPIO95  = MODE0(GPIO95)           MODE1(MC0DA2)           MODE2()                 MODE3(DEBUG_OUT[26])    MODE4()                 PU

+GPIO96  = MODE0(GPIO96)           MODE1(MC0DA3)           MODE2()                 MODE3(DEBUG_OUT[25])    MODE4()                 PU

+GPIO97  = MODE0(GPIO97)           MODE1(MC0CK)            MODE2()                 MODE3(DEBUG_OUT[30])    MODE4()                 PU

+GPIO98  = MODE0(GPIO98)           MODE1(MC0CK_FB)         MODE2()                 MODE3(DEBUG_OUT[23])    MODE4()                 PU

+GPIO99  = MODE0(GPIO99)           MODE1(MC0WP)            MODE2(EINT10)           MODE3(CLKM2)            MODE4(BT_JTDI)          PU

+GPIO100 = MODE0(GPIO100)          MODE1(MC0RST)           MODE2()                 MODE3(DEBUG_OUT[24])    MODE4()                 --

+GPIO101 = MODE0(GPIO101)          MODE1(MC1CM0)           MODE2(SPI0_CS)          MODE3(BT_JRTCK)         MODE4()                 PU

+GPIO102 = MODE0(GPIO102)          MODE1(MC1DA0)           MODE2(SPI0_MOSI)        MODE3(BT_JTRST_B)       MODE4()                 PU

+GPIO103 = MODE0(GPIO103)          MODE1(MC1DA1)           MODE2(SPI0_MISO)        MODE3(BT_JTCK)          MODE4()                 PU

+GPIO104 = MODE0(GPIO104)          MODE1(MC1CK)            MODE2(SPI0_SCK)         MODE3(BT_JTDO)          MODE4()                 PU

+GPIO105 = MODE0(GPIO105)          MODE1(MC1CK_FB)         MODE2()                 MODE3(DEBUG_OUT[18])    MODE4(CLKM13)           PU

+GPIO106 = MODE0(GPIO106)          MODE1()                 MODE2()                 MODE3()                 MODE4()                 --

+GPIO107 = MODE0(GPIO107)          MODE1()                 MODE2()                 MODE3()                 MODE4()                 --

+GPIO108 = MODE0(GPIO108)          MODE1()                 MODE2()                 MODE3()                 MODE4()                 --

+GPIO109 = MODE0(GPIO109)          MODE1()                 MODE2()                 MODE3()                 MODE4()                 PD

+

+[GPO]

+

+[EINT]

+EINT_COUNT = 29

+EINT_DEBOUNCE_TIME_COUNT = 29

+

+[EINT_EX_PIN]

+0

+1

+2

+3

+4

+5

+6

+7

+8

+9

+10

+11

+12

+13

+14

+15

+16

+17

+18

+19

+20

+21

+23

+24

+25

+26

+27

+28

+30

+

+[EINT_INT_PIN]

+22 = OTG_IDPIN_EINT_NO

+29 = CHR_USB_EINT_NO

+31 = FM_EINT_NO

+

+[EINT_INT_TIME_DELAY]

+EINT22 = 50

+EINT29 = 40

+EINT31 = 0

+

+[ADC]

+ADC_COUNT = 5

+

+[ADC_INT_CH]

+0 = ADC_VBAT

+1 = ADC_VISENSE

+2 = ADC_VCHARGER

+3 = ADC_VBATTMP

+

+[ADC_EX_CH]

+4

+5

+6

+7

+8

+

+[KEYPAD]

+KEY_ROW = 8

+KEY_COLUMN = 9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6276.fig b/mcu/custom/driver/drv/Drv_Tool/MT6276.fig
new file mode 100644
index 0000000..89f6588
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6276.fig
@@ -0,0 +1,141 @@
+[Chip Type]

+Chip = MT6276

+GPIO_Pull_Sel = 1

+

+[GPIO]

+GPIO0   = MODE0(GPIO0)            MODE1()                 MODE2()                 MODE3()                 PUPD

+GPIO1   = MODE0(GPIO1)            MODE1()                 MODE2()                 MODE3()                 PUPD

+GPIO2   = MODE0(GPIO2)            MODE1()                 MODE2()                 MODE3()                 PUPD

+GPIO3   = MODE0(GPIO3)            MODE1()                 MODE2()                 MODE3()                 PD

+GPIO4   = MODE0(GPIO4)            MODE1(MC0INS)           MODE2(MC2INS)           MODE3(EINT9)            PU

+GPIO5   = MODE0(GPIO5)            MODE1(BSI1_DATA1)       MODE2(BSI1_CS1)         MODE3(DSP_JTRST_B)      PD

+GPIO6   = MODE0(GPIO6)            MODE1(BSI0_CS1)         MODE2(URTS2)            MODE3(DSP_JTCK)         PD

+GPIO7   = MODE0(GPIO7)            MODE1(VM0)              MODE2()                 MODE3(EXT_FRAME_SYNC)   PD

+GPIO8   = MODE0(GPIO8)            MODE1(VM1)              MODE2(EDI0DAT)          MODE3()                 PD

+GPIO9   = MODE0(GPIO9)            MODE1(DUAL_BPI_BUS6)    MODE2(EDI0CK)           MODE3()                 PD

+GPIO10  = MODE0(GPIO10)           MODE1(DUAL_BPI_BUS7)    MODE2(EDI0WS)           MODE3()                 PD

+GPIO11  = MODE0(GPIO11)           MODE1(DUAL_BPI_BUS9)    MODE2(EDI1CK)           MODE3(USB_DRVVBUS)      PD

+GPIO12  = MODE0(GPIO12)           MODE1(DUAL_BPI_BUS13)   MODE2(EDI1WS)           MODE3(EXT_FRAME_SYNC)   PD

+GPIO13  = MODE0(GPIO13)           MODE1(DUAL_BPI_BUS14)   MODE2(EDI1DAT)          MODE3(CLKM1)            PD

+GPIO14  = MODE0(GPIO14)           MODE1(EINT0)            MODE2(CLKM4)            MODE3()                 PU

+GPIO15  = MODE0(GPIO15)           MODE1(EINT1)            MODE2(CLKM5)            MODE3(GPS_SYNC)         PU

+GPIO16  = MODE0(GPIO16)           MODE1(EINT2)            MODE2(UCTS2)            MODE3(DSP_JTDI)         PU

+GPIO17  = MODE0(GPIO17)           MODE1(DUAL_BPI_BUS8)    MODE2()                 MODE3(GPS_SYNC)         PD

+GPIO18  = MODE0(GPIO18)           MODE1(KCOL7)            MODE2(URXD3)            MODE3(IRDA_TXD)         PU

+GPIO19  = MODE0(GPIO19)           MODE1(KCOL6)            MODE2(UTXD3)            MODE3(PWM4_OUT)         PU

+GPIO20  = MODE0(GPIO20)           MODE1(KCOL5)            MODE2(EINT14)           MODE3(SPI_CS)           PU

+GPIO21  = MODE0(GPIO21)           MODE1(KCOL4)            MODE2(EINT15)           MODE3(SPI_MOSI)         PU

+GPIO22  = MODE0(GPIO22)           MODE1(KCOL3)            MODE2(PWM5_OUT)         MODE3(URTS1)            PU

+GPIO23  = MODE0(GPIO23)           MODE1(KCOL2)            MODE2(PWM6_OUT)         MODE3(UCTS1)            PU

+GPIO24  = MODE0(GPIO24)           MODE1(KCOL1)            MODE2()                 MODE3()                 PU

+GPIO25  = MODE0(GPIO25)           MODE1(KCOL0)            MODE2()                 MODE3()                 PU

+GPIO26  = MODE0(GPIO26)           MODE1(KROW7)            MODE2(URTS2)            MODE3(IRDA_RXD)         PUPD

+GPIO27  = MODE0(GPIO27)           MODE1(KROW6)            MODE2(UCTS2)            MODE3(CLKM6)            PUPD

+GPIO28  = MODE0(GPIO28)           MODE1(KROW5)            MODE2(EINT16)           MODE3(SPI_MISO)         PUPD

+GPIO29  = MODE0(GPIO29)           MODE1(KROW4)            MODE2(EINT17)           MODE3(SPI_SCK)          PUPD

+GPIO30  = MODE0(GPIO30)           MODE1(KROW3)            MODE2(EINT6)            MODE3(SRCLKENAI)        PUPD

+GPIO31  = MODE0(GPIO31)           MODE1(KROW2)            MODE2(EINT7)            MODE3()                 PUPD

+GPIO32  = MODE0(GPIO32)           MODE1(KROW1)            MODE2()                 MODE3()                 PUPD

+GPIO33  = MODE0(GPIO33)           MODE1(KROW0)            MODE2()                 MODE3()                 PUPD

+GPIO34  = MODE0(GPIO34)           MODE1(URXD1)            MODE2()                 MODE3()                 PU

+GPIO35  = MODE0(GPIO35)           MODE1(UTXD1)            MODE2()                 MODE3()                 PUPD

+GPIO36  = MODE0(GPIO36)           MODE1(MCU_JTRST_B)      MODE2()                 MODE3()                 PD

+GPIO37  = MODE0(GPIO37)           MODE1(MCU_JTCK)         MODE2()                 MODE3()                 PU

+GPIO38  = MODE0(GPIO38)           MODE1(MCU_JTDI)         MODE2()                 MODE3()                 PU

+GPIO39  = MODE0(GPIO39)           MODE1(MCU_JTMS)         MODE2()                 MODE3()                 PU

+GPIO40  = MODE0(GPIO40)           MODE1(MCU_JTDO)         MODE2()                 MODE3()                 PUPD

+GPIO41  = MODE0(GPIO41)           MODE1(MCU_JRTCK)        MODE2()                 MODE3()                 PUPD

+GPIO42  = MODE0(GPIO42)           MODE1(SWCLKTCK)         MODE2()                 MODE3()                 PU

+GPIO43  = MODE0(GPIO43)           MODE1(SWDIOTMS)         MODE2()                 MODE3()                 PU

+GPIO44  = MODE0(GPIO44)           MODE1(DAICLK)           MODE2(EDI0CK)           MODE3(IRDA_PDN)         PD

+GPIO45  = MODE0(GPIO45)           MODE1(DAIPCMOUT)        MODE2(EDI0WS)           MODE3(PTA0)             PD

+GPIO46  = MODE0(GPIO46)           MODE1(DAIPCMIN)         MODE2(EDI0DAT)          MODE3(URXD3)            PD

+GPIO47  = MODE0(GPIO47)           MODE1(DAISYNC)          MODE2(EDI1CK)           MODE3(UTXD3)            PD

+GPIO48  = MODE0(GPIO48)           MODE1(DAIRST)           MODE2(EDI1WS)           MODE3(SRCLKENAI)        PD

+GPIO49  = MODE0(GPIO49)           MODE1(PWM1_OUT)         MODE2(MC1WP)            MODE3()                 PD

+GPIO50  = MODE0(GPIO50)           MODE1(PWM2_OUT)         MODE2(PTA1)             MODE3(EINT8)            PD

+GPIO51  = MODE0(GPIO51)           MODE1(PWM3_OUT)         MODE2(BT_JTDI)          MODE3(CLKM3)            PD

+GPIO52  = MODE0(GPIO52)           MODE1(URXD2)            MODE2()                 MODE3()                 PU

+GPIO53  = MODE0(GPIO53)           MODE1(UTXD2)            MODE2()                 MODE3()                 PUPD

+GPIO54  = MODE0(GPIO54)           MODE1(EINT3)            MODE2(UCTS1)            MODE3(DEBUG_OUT[31])    PU

+GPIO55  = MODE0(GPIO55)           MODE1(MC1CM0)           MODE2(SPI_CS)           MODE3(BT_JRTCK)         PU

+GPIO56  = MODE0(GPIO56)           MODE1(MC1DA0)           MODE2(SPI_MOSI)         MODE3(BT_JTRST_B)       PU

+GPIO57  = MODE0(GPIO57)           MODE1(MC1DA1)           MODE2(SPI_MISO)         MODE3(BT_JTCK)          PU

+GPIO58  = MODE0(GPIO58)           MODE1(MC1CK)            MODE2(SPI_SCK)          MODE3(BT_JTDO)          PU

+GPIO59  = MODE0(GPIO59)           MODE1(MC1CK_FB)         MODE2(EDI1DAT)          MODE3(DEBUG_OUT[18])    PU

+GPIO60  = MODE0(GPIO60)           MODE1(CMMCLK)           MODE2(PLL_TCLK_650M_CK) MODE3(DEBUG_OUT[15])    PD

+GPIO61  = MODE0(GPIO61)           MODE1(CMPCLK)           MODE2()                 MODE3(DEBUG_OUT[14])    PD

+GPIO62  = MODE0(GPIO62)           MODE1(CMRST)            MODE2()                 MODE3(DEBUG_OUT[13])    PD

+GPIO63  = MODE0(GPIO63)           MODE1(CMPDN)            MODE2(BT_MDS_IN)        MODE3(DEBUG_OUT[12])    PD

+GPIO64  = MODE0(GPIO64)           MODE1(CMVREF)           MODE2()                 MODE3(DEBUG_OUT[11])    PD

+GPIO65  = MODE0(GPIO65)           MODE1(CMHREF)           MODE2()                 MODE3(DEBUG_OUT[10])    PD

+GPIO66  = MODE0(GPIO66)           MODE1(CMDAT9)           MODE2()                 MODE3(DEBUG_OUT[9])     PD

+GPIO67  = MODE0(GPIO67)           MODE1(CMDAT8)           MODE2()                 MODE3(DEBUG_OUT[8])     PD

+GPIO68  = MODE0(GPIO68)           MODE1(CMDAT7)           MODE2()                 MODE3(DEBUG_OUT[7])     PD

+GPIO69  = MODE0(GPIO69)           MODE1(CMDAT6)           MODE2()                 MODE3(DEBUG_OUT[6])     PD

+GPIO70  = MODE0(GPIO70)           MODE1(CMDAT5)           MODE2()                 MODE3(DEBUG_OUT[5])     PD

+GPIO71  = MODE0(GPIO71)           MODE1(CMDAT4)           MODE2()                 MODE3(DEBUG_OUT[4])     PD

+GPIO72  = MODE0(GPIO72)           MODE1(CMDAT3)           MODE2()                 MODE3(DEBUG_OUT[3])     PD

+GPIO73  = MODE0(GPIO73)           MODE1(CMDAT2)           MODE2()                 MODE3(DEBUG_OUT[2])     PD

+GPIO74  = MODE0(GPIO74)           MODE1(CMDAT1)           MODE2(PTA0)             MODE3(DEBUG_OUT[1])     PD

+GPIO75  = MODE0(GPIO75)           MODE1(CMDAT0)           MODE2(PTA1)             MODE3(DEBUG_OUT[0])     PD

+GPIO76  = MODE0(GPIO76)           MODE1(SCL)              MODE2()                 MODE3(DEBUG_OUT[17])    PU

+GPIO77  = MODE0(GPIO77)           MODE1(SDA)              MODE2()                 MODE3(DEBUG_OUT[16])    PU

+GPIO78  = MODE0(GPIO78)           MODE1(LSCK)             MODE2(USB_DRVVBUS)      MODE3(MC2WP)            PD

+GPIO79  = MODE0(GPIO79)           MODE1(LSA0)             MODE2(MC1DA2)           MODE3(DSP_JTMS)         PD

+GPIO80  = MODE0(GPIO80)           MODE1(LSDA)             MODE2(MC1DA3)           MODE3(DSP_JTDO)         PD

+GPIO81  = MODE0(GPIO81)           MODE1(LSCE0B)           MODE2(URTS1)            MODE3(EINT11)           PUPD

+GPIO82  = MODE0(GPIO82)           MODE1(LSCE1B)           MODE2(IRDA_TXD)         MODE3(LPCE2B)           PU

+GPIO83  = MODE0(GPIO83)           MODE1(LPCE1B)           MODE2(NCE1B)            MODE3(IRDA_RXD)         PU

+GPIO84  = MODE0(GPIO84)           MODE1(LPTE)             MODE2()                 MODE3()                 PD

+GPIO85  = MODE0(GPIO85)           MODE1(NLD17)            MODE2(EINT12)           MODE3(DSP_EMU_B)        PD

+GPIO86  = MODE0(GPIO86)           MODE1(NLD16)            MODE2(EINT13)           MODE3(BT_JTMS)          PD

+GPIO87  = MODE0(GPIO87)           MODE1(MC2CM0)           MODE2()                 MODE3(DEBUG_OUT[21])    PU

+GPIO88  = MODE0(GPIO88)           MODE1(MC2DA0)           MODE2(MC0DA7)           MODE3(DEBUG_OUT[20])    PU

+GPIO89  = MODE0(GPIO89)           MODE1(MC2DA1)           MODE2(MC0DA6)           MODE3(DEBUG_OUT[19])    PU

+GPIO90  = MODE0(GPIO90)           MODE1(MC2DA2)           MODE2(MC0DA5)           MODE3(EINT4)            PU

+GPIO91  = MODE0(GPIO91)           MODE1(MC2DA3)           MODE2(MC0DA4)           MODE3(EINT5)            PU

+GPIO92  = MODE0(GPIO92)           MODE1(MC2CK)            MODE2()                 MODE3(DEBUG_OUT[22])    PU

+GPIO93  = MODE0(GPIO93)           MODE1(MC2CK_FB)         MODE2(MC1INS)           MODE3(IRDA_PDN)         PU

+GPIO94  = MODE0(GPIO94)           MODE1(MC0CM0)           MODE2()                 MODE3(DEBUG_OUT[29])    PU

+GPIO95  = MODE0(GPIO95)           MODE1(MC0DA0)           MODE2()                 MODE3(DEBUG_OUT[28])    PU

+GPIO96  = MODE0(GPIO96)           MODE1(MC0DA1)           MODE2()                 MODE3(DEBUG_OUT[27])    PU

+GPIO97  = MODE0(GPIO97)           MODE1(MC0DA2)           MODE2()                 MODE3(DEBUG_OUT[26])    PU

+GPIO98  = MODE0(GPIO98)           MODE1(MC0DA3)           MODE2()                 MODE3(DEBUG_OUT[25])    PU

+GPIO99  = MODE0(GPIO99)           MODE1(MC0CK)            MODE2()                 MODE3(DEBUG_OUT[30])    PU

+GPIO100 = MODE0(GPIO100)          MODE1(MC0CK_FB)         MODE2()                 MODE3(DEBUG_OUT[23])    PU

+GPIO101 = MODE0(GPIO101)          MODE1(MC0WP)            MODE2(EINT10)           MODE3(CLKM2)            PU

+GPIO102 = MODE0(GPIO102)          MODE1(MC0RST)           MODE2()                 MODE3(DEBUG_OUT[24])    PUPD

+GPIO103 = MODE0(GPIO103)          MODE1(NRNB)             MODE2()                 MODE3()                 PU

+GPIO104 = MODE0(GPIO104)          MODE1(NCLE)             MODE2()                 MODE3()                 PUPD

+GPIO105 = MODE0(GPIO105)          MODE1(NALE)             MODE2()                 MODE3()                 PUPD

+GPIO106 = MODE0(GPIO106)          MODE1(NWEB)             MODE2()                 MODE3()                 PUPD

+GPIO107 = MODE0(GPIO107)          MODE1(NREB)             MODE2()                 MODE3()                 PUPD

+GPIO108 = MODE0(GPIO108)          MODE1(NCE0B)            MODE2()                 MODE3()                 PUPD

+

+[GPO]

+

+[EINT]

+EINT_COUNT = 32

+EINT_DEBOUNCE_TIME_COUNT = 32

+

+

+[ADC]

+ADC_COUNT = 5

+

+[ADC_INT_CH]

+0 = ADC_VBAT

+1 = ADC_VISENSE

+2 = ADC_VCHARGER

+3 = ADC_VBATTMP

+

+[ADC_EX_CH]

+4

+5

+6

+7

+8

+

+[KEYPAD]

+KEY_ROW = 8

+KEY_COLUMN = 9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6276M.fig b/mcu/custom/driver/drv/Drv_Tool/MT6276M.fig
new file mode 100644
index 0000000..bc9aed8
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6276M.fig
@@ -0,0 +1,186 @@
+[Chip Type]

+Chip = MT6276M

+GPIO_ModeNum = 5

+GPIO_Pull_Sel = 1

+PMIC_Config = 1

+PMIC_Volt_Format = 1

+GPIO_Extend_Config=1

+

+[GPIO]

+GPIO0   = MODE0(GPIO0)            MODE1(MC0INS)           MODE2(MC2INS)           MODE3(EINT9)            MODE4()                 PU

+GPIO1   = MODE0(GPIO1)            MODE1(BSI1_DATA1)       MODE2(BSI1_CS1)         MODE3()                 MODE4()                 PD

+GPIO2   = MODE0()            			MODE1()         				MODE2()            			MODE3()                 MODE4()                 PD

+GPIO3   = MODE0(GPIO3)            MODE1(VM0)              MODE2()                 MODE3(EXT_FRAME_SYNC)   MODE4()                 PD

+GPIO4   = MODE0(GPIO4)            MODE1(VM1)              MODE2(EDI0DAT)          MODE3()                 MODE4()                 PD

+GPIO5   = MODE0(GPIO5)            MODE1(DUAL_BPI_BUS13)   MODE2(EDI1WS)           MODE3(EXT_FRAME_SYNC)   MODE4(CLKM9)            PD

+GPIO6   = MODE0(GPIO6)            MODE1(DUAL_BPI_BUS9)    MODE2(EDI1CK)           MODE3(USB_DRVVBUS)      MODE4(UCTS2)            PD

+GPIO7   = MODE0(GPIO7)            MODE1(DUAL_BPI_BUS6)    MODE2(EDI0CK)           MODE3()                 MODE4()                 PD

+GPIO8   = MODE0(GPIO8)            MODE1(DUAL_BPI_BUS7)    MODE2(EDI0WS)           MODE3()                 MODE4(CLKM10)           PD

+GPIO9   = MODE0(GPIO9)            MODE1(DUAL_BPI_BUS14)   MODE2(EDI1DAT)          MODE3(CLKM1)            MODE4()                 PD

+GPIO10  = MODE0(GPIO10)           MODE1(DUAL_BPI_BUS8)    MODE2()                 MODE3(URTS1)            MODE4()                 PD

+GPIO11  = MODE0(GPIO11)           MODE1(URXD1)            MODE2(UTXD1)            MODE3(CLKM7)            MODE4()                 PU

+GPIO12  = MODE0(GPIO12)           MODE1(UTXD1)            MODE2(URXD1)            MODE3(CLKM8)            MODE4()                 --

+GPIO13  = MODE0(GPIO13)           MODE1(URXD2)            MODE2(UTXD2)            MODE3(EINT7)            MODE4(CINT0)            PU

+GPIO14  = MODE0(GPIO14)           MODE1(UTXD2)            MODE2(URXD2)            MODE3(EINT6)            MODE4(SRCLKENAI0)       --

+GPIO15  = MODE0(GPIO15)           MODE1(DAICLK)           MODE2(EDI0CK)           MODE3(IRDA_PDN)         MODE4(UCTS1)            PD

+GPIO16  = MODE0(GPIO16)           MODE1(DAIPCMOUT)        MODE2(EDI0WS)           MODE3(PTA0)             MODE4()                 PD

+GPIO17  = MODE0(GPIO17)           MODE1(DAIPCMIN)         MODE2(EDI0DAT)          MODE3(URXD3)            MODE4(UTXD3)            PD

+GPIO18  = MODE0(GPIO18)           MODE1(DAISYNC)          MODE2(EDI1CK)           MODE3(UTXD3)            MODE4(URXD3)            PD

+GPIO19  = MODE0(GPIO19)           MODE1(DAIRST)           MODE2(EDI1WS)           MODE3(SRCLKENAI1)       MODE4(PTA1)             PD

+GPIO20  = MODE0(GPIO20)           MODE1(EINT3)            MODE2(EDI1DAT)          MODE3()        					 MODE4(CINT1)            PU

+GPIO21  = MODE0(GPIO21)           MODE1(EINT4)            MODE2(GPS_SYNC)         MODE3(SRCLKENAI2)       MODE4()                 PU

+GPIO22  = MODE0(GPIO22)           MODE1(MCU_JTRST_B)      MODE2()                 MODE3()                 MODE4()                 PD

+GPIO23  = MODE0(GPIO23)           MODE1(MCU_JTCK)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO24  = MODE0(GPIO24)           MODE1(MCU_JTDI)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO25  = MODE0(GPIO25)           MODE1(MCU_JTMS)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO26  = MODE0(GPIO26)           MODE1(MCU_JTDO)         MODE2()                 MODE3()                 MODE4()                 --

+GPIO27  = MODE0(GPIO27)           MODE1(MCU_JRTCK)        MODE2()                 MODE3()                 MODE4()                 --

+GPIO28  = MODE0(GPIO28)           MODE1(SWCLKTCK)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO29  = MODE0(GPIO29)           MODE1(SWDIOTMS)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO30  = MODE0(GPIO30)           MODE1(PWM1_OUT)         MODE2(MC1WP)            MODE3()                 MODE4()                 PD

+GPIO31  = MODE0(GPIO31)           MODE1(PWM2_OUT)         MODE2(DSP_JTRST_B)      MODE3(EINT8)            MODE4(CINT0)            PD

+GPIO32  = MODE0(GPIO32)           MODE1(PWM3_OUT)         MODE2()                 MODE3(CLKM3)            MODE4()                 PD

+GPIO33  = MODE0(GPIO33)           MODE1(EINT0)            MODE2(CLKM4)            MODE3()                 MODE4(CINT1)            PU

+GPIO34  = MODE0(GPIO34)           MODE1(EINT1)            MODE2(CLKM5)            MODE3(GPS_SYNC)         MODE4()                 PU

+GPIO35  = MODE0(GPIO35)           MODE1(EINT2)            MODE2()         				MODE3()         			  MODE4()                 PU

+GPIO36  = MODE0(GPIO36)           MODE1(KCOL7)            MODE2(URXD3)            MODE3(IRDA_TXD)         MODE4()                 PU

+GPIO37  = MODE0(GPIO37)           MODE1(KCOL6)            MODE2(UTXD3)            MODE3(PWM4_OUT)         MODE4()                 PU

+GPIO38  = MODE0(GPIO38)           MODE1(KCOL5)            MODE2(EINT14)           MODE3(SPI1_CS)          MODE4()                 PU

+GPIO39  = MODE0(GPIO39)           MODE1(KCOL4)            MODE2(EINT15)           MODE3(SPI1_MOSI)        MODE4()                 PU

+GPIO40  = MODE0(GPIO40)           MODE1(KCOL3)            MODE2(PWM5_OUT)         MODE3(URTS1)            MODE4()                 PU

+GPIO41  = MODE0(GPIO41)           MODE1(KCOL2)            MODE2(PWM6_OUT)         MODE3(UCTS1)            MODE4()                 PU

+GPIO42  = MODE0(GPIO42)           MODE1(KCOL1)            MODE2()                 MODE3()                 MODE4()                 PU

+GPIO43  = MODE0(GPIO43)           MODE1(KCOL0)            MODE2()                 MODE3()                 MODE4()                 PU

+GPIO44  = MODE0(GPIO44)           MODE1(KROW7)            MODE2(URTS2)            MODE3(IRDA_RXD)         MODE4()                 --

+GPIO45  = MODE0(GPIO45)           MODE1(KROW6)            MODE2(UCTS2)            MODE3(CLKM6)            MODE4()                 --

+GPIO46  = MODE0(GPIO46)           MODE1(KROW5)            MODE2(EINT16)           MODE3(SPI1_MISO)        MODE4()                 --

+GPIO47  = MODE0(GPIO47)           MODE1(KROW4)            MODE2(EINT17)           MODE3(SPI1_SCK)         MODE4()                 --

+GPIO48  = MODE0(GPIO48)           MODE1(KROW3)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO49  = MODE0(GPIO49)           MODE1(KROW2)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO50  = MODE0(GPIO50)           MODE1(KROW1)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO51  = MODE0(GPIO51)           MODE1(KROW0)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO52  = MODE0(GPIO52)           MODE1(SCL)              MODE2()                 MODE3(DEBUG_OUT[17])    MODE4()                 PU

+GPIO53  = MODE0(GPIO53)           MODE1(SDA)              MODE2()                 MODE3(DEBUG_OUT[16])    MODE4()                 PU

+GPIO54  = MODE0(GPIO54)           MODE1(CMRST)            MODE2()                 MODE3(DEBUG_OUT[13])    MODE4()                 PD

+GPIO55  = MODE0(GPIO55)           MODE1(CMPDN)            MODE2(BT_MDS_IN)        MODE3(DEBUG_OUT[12])    MODE4()                 PD

+GPIO56  = MODE0(GPIO56)           MODE1(CMVREF)           MODE2()                 MODE3(DEBUG_OUT[11])    MODE4()                 PD

+GPIO57  = MODE0(GPIO57)           MODE1(CMHREF)           MODE2()                 MODE3(DEBUG_OUT[10])    MODE4()                 PD

+GPIO58  = MODE0(GPIO58)           MODE1(CMDAT9)           MODE2()                 MODE3(DEBUG_OUT[9])     MODE4()                 PD

+GPIO59  = MODE0(GPIO59)           MODE1(CMDAT8)           MODE2()                 MODE3(DEBUG_OUT[8])     MODE4()                 PD

+GPIO60  = MODE0(GPIO60)           MODE1(CMDAT7)           MODE2()                 MODE3(DEBUG_OUT[7])     MODE4()                 PD

+GPIO61  = MODE0(GPIO61)           MODE1(CMDAT6)           MODE2()                 MODE3(DEBUG_OUT[6])     MODE4()                 PD

+GPIO62  = MODE0(GPIO62)           MODE1(CMDAT5)           MODE2()                 MODE3(DEBUG_OUT[5])     MODE4()                 PD

+GPIO63  = MODE0(GPIO63)           MODE1(CMDAT4)           MODE2()                 MODE3(DEBUG_OUT[4])     MODE4()                 PD

+GPIO64  = MODE0(GPIO64)           MODE1(CMDAT3)           MODE2()                 MODE3(DEBUG_OUT[3])     MODE4()                 PD

+GPIO65  = MODE0(GPIO65)           MODE1(CMDAT2)           MODE2()                 MODE3(DEBUG_OUT[2])     MODE4()                 PD

+GPIO66  = MODE0(GPIO66)           MODE1(CMDAT1)           MODE2(PTA0)             MODE3(DEBUG_OUT[1])     MODE4()                 PD

+GPIO67  = MODE0(GPIO67)           MODE1(CMDAT0)           MODE2(PTA1)             MODE3(DEBUG_OUT[0])     MODE4()                 PD

+GPIO68  = MODE0(GPIO68)           MODE1(CMPCLK)           MODE2()                 MODE3(DEBUG_OUT[14])    MODE4()                 PD

+GPIO69  = MODE0()         			  MODE1()         			  MODE2() 								MODE3()  							  MODE4()                 PD

+GPIO70  = MODE0(GPIO70)           MODE1(LSCK)             MODE2(NCE1B)            MODE3(MC2WP)            MODE4(DSP_JTDI)         PD

+GPIO71  = MODE0(GPIO71)           MODE1(LSA0)             MODE2()                 MODE3(CLKM11)           MODE4(DSP_JTMS)         PD

+GPIO72  = MODE0(GPIO72)           MODE1(LSDA)             MODE2()                 MODE3(CLKM12)           MODE4(DSP_JTDO)         PD

+GPIO73  = MODE0(GPIO73)           MODE1(LSCE0B)           MODE2(USB_DRVVBUS)      MODE3(EINT11)           MODE4(DSP_EMU_B)        --

+GPIO74  = MODE0(GPIO74)           MODE1()         			  MODE2()        					MODE3()           			MODE4()      				    PU

+GPIO75  = MODE0()           			MODE1()           			MODE2()                 MODE3()         				MODE4()                 PU

+GPIO76  = MODE0(GPIO76)           MODE1(LPTE)             MODE2()                 MODE3()                 MODE4()                 PD

+GPIO77  = MODE0()           			MODE1()            			MODE2()           			MODE3()                 MODE4()            			PD

+GPIO78  = MODE0(GPIO78)           MODE1(NLD16)            MODE2(EINT13)           MODE3()                 MODE4()                 PD

+GPIO79  = MODE0(GPIO79)           MODE1(NRNB)             MODE2()                 MODE3()                 MODE4()                 PU

+GPIO80  = MODE0(GPIO80)           MODE1(NCLE)             MODE2()                 MODE3(SRCLKENAI3)       MODE4()                 --

+GPIO81  = MODE0(GPIO81)           MODE1(NALE)             MODE2()                 MODE3(SRCLKENAI4)       MODE4()                 --

+GPIO82  = MODE0(GPIO82)           MODE1(NWEB)             MODE2()                 MODE3()                 MODE4()                 --

+GPIO83  = MODE0(GPIO83)           MODE1(NREB)             MODE2()                 MODE3()                 MODE4()                 --

+GPIO84  = MODE0(GPIO84)           MODE1(NCE0B)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO85  = MODE0(GPIO85)           MODE1(MC2CM0)           MODE2()                 MODE3(DEBUG_OUT[21])    MODE4()                 PU

+GPIO86  = MODE0()           			MODE1()           			MODE2()           			MODE3()    							MODE4()                 PU

+GPIO87  = MODE0()           			MODE1()           			MODE2()           			MODE3()    							MODE4()                 PU

+GPIO88  = MODE0()           			MODE1()           			MODE2()           			MODE3()            			MODE4()    							PU

+GPIO89  = MODE0()           			MODE1()           			MODE2()           			MODE3()            			MODE4()                 PU

+GPIO90  = MODE0()           			MODE1()            			MODE2()                 MODE3()    							MODE4()          				PU

+GPIO91  = MODE0()           			MODE1()         				MODE2()           			MODE3()         				MODE4()                 PU

+GPIO92  = MODE0(GPIO92)           MODE1(MC0CM0)           MODE2()                 MODE3(DEBUG_OUT[29])    MODE4()                 PU

+GPIO93  = MODE0(GPIO93)           MODE1(MC0DA0)           MODE2()                 MODE3(DEBUG_OUT[28])    MODE4()                 PU

+GPIO94  = MODE0(GPIO94)           MODE1(MC0DA1)           MODE2()                 MODE3(DEBUG_OUT[27])    MODE4()                 PU

+GPIO95  = MODE0(GPIO95)           MODE1(MC0DA2)           MODE2()                 MODE3(DEBUG_OUT[26])    MODE4()                 PU

+GPIO96  = MODE0(GPIO96)           MODE1(MC0DA3)           MODE2()                 MODE3(DEBUG_OUT[25])    MODE4()                 PU

+GPIO97  = MODE0(GPIO97)           MODE1(MC0CK)            MODE2()                 MODE3(DEBUG_OUT[30])    MODE4()                 PU

+GPIO98  = MODE0(GPIO98)           MODE1(MC0CK_FB)         MODE2()                 MODE3(DEBUG_OUT[23])    MODE4()                 PU

+GPIO99  = MODE0(GPIO99)           MODE1(MC0WP)            MODE2(EINT10)           MODE3(CLKM2)            MODE4(BT_JTDI)          PU

+GPIO100 = MODE0(GPIO100)          MODE1(MC0RST)           MODE2()                 MODE3(DEBUG_OUT[24])    MODE4()                 --

+GPIO101 = MODE0(GPIO101)          MODE1(MC1CM0)           MODE2(SPI0_CS)          MODE3(BT_JRTCK)         MODE4()                 PU

+GPIO102 = MODE0(GPIO102)          MODE1(MC1DA0)           MODE2(SPI0_MOSI)        MODE3(BT_JTRST_B)       MODE4()                 PU

+GPIO103 = MODE0(GPIO103)          MODE1(MC1DA1)           MODE2(SPI0_MISO)        MODE3(BT_JTCK)          MODE4()                 PU

+GPIO104 = MODE0(GPIO104)          MODE1(MC1CK)            MODE2(SPI0_SCK)         MODE3(BT_JTDO)          MODE4()                 PU

+GPIO105 = MODE0(GPIO105)          MODE1(MC1CK_FB)         MODE2()                 MODE3(DEBUG_OUT[18])    MODE4(CLKM13)           PU

+GPIO106 = MODE0(GPIO106)          MODE1()                 MODE2()                 MODE3()                 MODE4()                 --

+GPIO107 = MODE0(GPIO107)          MODE1()                 MODE2()                 MODE3()                 MODE4()                 --

+GPIO108 = MODE0(GPIO108)          MODE1()                 MODE2()                 MODE3()                 MODE4()                 --

+GPIO109 = MODE0(GPIO109)          MODE1()                 MODE2()                 MODE3()                 MODE4()                 PD

+

+[GPO]

+

+[EINT]

+EINT_COUNT = 29

+EINT_DEBOUNCE_TIME_COUNT = 29

+

+[EINT_EX_PIN]

+0

+1

+2

+3

+4

+5

+6

+7

+8

+9

+10

+11

+12

+13

+14

+15

+16

+17

+18

+19

+20

+21

+23

+24

+25

+26

+27

+28

+30

+

+[EINT_INT_PIN]

+22 = OTG_IDPIN_EINT_NO

+29 = CHR_USB_EINT_NO

+31 = FM_EINT_NO

+

+[EINT_INT_TIME_DELAY]

+EINT22 = 50

+EINT29 = 40

+EINT31 = 0

+

+[ADC]

+ADC_COUNT = 5

+

+[ADC_INT_CH]

+0 = ADC_VBAT

+1 = ADC_VISENSE

+2 = ADC_VCHARGER

+3 = ADC_VBATTMP

+

+[ADC_EX_CH]

+4

+5

+6

+7

+8

+

+[KEYPAD]

+KEY_ROW = 8

+KEY_COLUMN = 9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6276MP.fig b/mcu/custom/driver/drv/Drv_Tool/MT6276MP.fig
new file mode 100644
index 0000000..6278ee5
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6276MP.fig
@@ -0,0 +1,184 @@
+[Chip Type]

+Chip = MT6276MP

+GPIO_ModeNum = 5

+GPIO_Pull_Sel = 1

+GPIO_Extend_Config=1

+

+[GPIO]

+GPIO0   = MODE0(GPIO0)            MODE1(MC0INS)           MODE2(MC2INS)           MODE3(EINT9)            MODE4()                 PU

+GPIO1   = MODE0(GPIO1)            MODE1(BSI1_DATA1)       MODE2(BSI1_CS1)         MODE3()                 MODE4()                 PD

+GPIO2   = MODE0(GPIO2)            MODE1(BSI0_CS1)         MODE2(URTS2)            MODE3()                 MODE4()                 PD

+GPIO3   = MODE0(GPIO3)            MODE1(VM0)              MODE2()                 MODE3(EXT_FRAME_SYNC)   MODE4()                 PD

+GPIO4   = MODE0(GPIO4)            MODE1(VM1)              MODE2(EDI0DAT)          MODE3()                 MODE4()                 PD

+GPIO5   = MODE0(GPIO5)            MODE1(DUAL_BPI_BUS13)   MODE2(EDI1WS)           MODE3(EXT_FRAME_SYNC)   MODE4(CLKM9)            PD

+GPIO6   = MODE0(GPIO6)            MODE1(DUAL_BPI_BUS9)    MODE2(EDI1CK)           MODE3(USB_DRVVBUS)      MODE4(UCTS2)            PD

+GPIO7   = MODE0(GPIO7)            MODE1(DUAL_BPI_BUS6)    MODE2(EDI0CK)           MODE3()                 MODE4()                 PD

+GPIO8   = MODE0(GPIO8)            MODE1(DUAL_BPI_BUS7)    MODE2(EDI0WS)           MODE3()                 MODE4(CLKM10)           PD

+GPIO9   = MODE0(GPIO9)            MODE1(DUAL_BPI_BUS14)   MODE2(EDI1DAT)          MODE3(CLKM1)            MODE4()                 PD

+GPIO10  = MODE0(GPIO10)           MODE1(DUAL_BPI_BUS8)    MODE2()                 MODE3(URTS1)            MODE4()                 PD

+GPIO11  = MODE0(GPIO11)           MODE1(URXD1)            MODE2(UTXD1)            MODE3(CLKM7)            MODE4()                 PU

+GPIO12  = MODE0(GPIO12)           MODE1(UTXD1)            MODE2(URXD1)            MODE3(CLKM8)            MODE4()                 --

+GPIO13  = MODE0(GPIO13)           MODE1(URXD2)            MODE2(UTXD2)            MODE3(EINT7)            MODE4(CINT0)            PU

+GPIO14  = MODE0(GPIO14)           MODE1(UTXD2)            MODE2(URXD2)            MODE3(EINT6)            MODE4(SRCLKENAI0)       --

+GPIO15  = MODE0(GPIO15)           MODE1(DAICLK)           MODE2(EDI0CK)           MODE3(IRDA_PDN)         MODE4(UCTS1)            PD

+GPIO16  = MODE0(GPIO16)           MODE1(DAIPCMOUT)        MODE2(EDI0WS)           MODE3(PTA0)             MODE4()                 PD

+GPIO17  = MODE0(GPIO17)           MODE1(DAIPCMIN)         MODE2(EDI0DAT)          MODE3(URXD3)            MODE4(UTXD3)            PD

+GPIO18  = MODE0(GPIO18)           MODE1(DAISYNC)          MODE2(EDI1CK)           MODE3(UTXD3)            MODE4(URXD3)            PD

+GPIO19  = MODE0(GPIO19)           MODE1(DAIRST)           MODE2(EDI1WS)           MODE3(SRCLKENAI1)       MODE4(PTA1)             PD

+GPIO20  = MODE0(GPIO20)           MODE1(EINT3)            MODE2(EDI1DAT)          MODE3(TDD_SYNC)         MODE4(CINT1)            PU

+GPIO21  = MODE0(GPIO21)           MODE1(EINT4)            MODE2(GPS_SYNC)         MODE3(SRCLKENAI2)       MODE4()                 PU

+GPIO22  = MODE0(GPIO22)           MODE1(MCU_JTRST_B)      MODE2()                 MODE3()                 MODE4()                 PD

+GPIO23  = MODE0(GPIO23)           MODE1(MCU_JTCK)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO24  = MODE0(GPIO24)           MODE1(MCU_JTDI)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO25  = MODE0(GPIO25)           MODE1(MCU_JTMS)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO26  = MODE0(GPIO26)           MODE1(MCU_JTDO)         MODE2()                 MODE3()                 MODE4()                 --

+GPIO27  = MODE0(GPIO27)           MODE1(MCU_JRTCK)        MODE2()                 MODE3()                 MODE4()                 --

+GPIO28  = MODE0(GPIO28)           MODE1(SWCLKTCK)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO29  = MODE0(GPIO29)           MODE1(SWDIOTMS)         MODE2()                 MODE3()                 MODE4()                 PU

+GPIO30  = MODE0(GPIO30)           MODE1(PWM1_OUT)         MODE2(MC1WP)            MODE3()                 MODE4()                 PD

+GPIO31  = MODE0(GPIO31)           MODE1(PWM2_OUT)         MODE2(DSP_JTRST_B)      MODE3(EINT8)            MODE4(CINT0)            PD

+GPIO32  = MODE0(GPIO32)           MODE1(PWM3_OUT)         MODE2()                 MODE3(CLKM3)            MODE4()                 PD

+GPIO33  = MODE0(GPIO33)           MODE1(EINT0)            MODE2(CLKM4)            MODE3()                 MODE4(CINT1)            PU

+GPIO34  = MODE0(GPIO34)           MODE1(EINT1)            MODE2(CLKM5)            MODE3(GPS_SYNC)         MODE4()                 PU

+GPIO35  = MODE0(GPIO35)           MODE1(EINT2)            MODE2(TDD_SYNC)         MODE3(LPCE3B)           MODE4()                 PU

+GPIO36  = MODE0(GPIO36)           MODE1(KCOL7)            MODE2(URXD3)            MODE3(IRDA_TXD)         MODE4()                 PU

+GPIO37  = MODE0(GPIO37)           MODE1(KCOL6)            MODE2(UTXD3)            MODE3(PWM4_OUT)         MODE4()                 PU

+GPIO38  = MODE0(GPIO38)           MODE1(KCOL5)            MODE2(EINT14)           MODE3(SPI1_CS)          MODE4()                 PU

+GPIO39  = MODE0(GPIO39)           MODE1(KCOL4)            MODE2(EINT15)           MODE3(SPI1_MOSI)        MODE4()                 PU

+GPIO40  = MODE0(GPIO40)           MODE1(KCOL3)            MODE2(PWM5_OUT)         MODE3(URTS1)            MODE4()                 PU

+GPIO41  = MODE0(GPIO41)           MODE1(KCOL2)            MODE2(PWM6_OUT)         MODE3(UCTS1)            MODE4()                 PU

+GPIO42  = MODE0(GPIO42)           MODE1(KCOL1)            MODE2()                 MODE3()                 MODE4()                 PU

+GPIO43  = MODE0(GPIO43)           MODE1(KCOL0)            MODE2()                 MODE3()                 MODE4()                 PU

+GPIO44  = MODE0(GPIO44)           MODE1(KROW7)            MODE2(URTS2)            MODE3(IRDA_RXD)         MODE4()                 --

+GPIO45  = MODE0(GPIO45)           MODE1(KROW6)            MODE2(UCTS2)            MODE3(CLKM6)            MODE4()                 --

+GPIO46  = MODE0(GPIO46)           MODE1(KROW5)            MODE2(EINT16)           MODE3(SPI1_MISO)        MODE4()                 --

+GPIO47  = MODE0(GPIO47)           MODE1(KROW4)            MODE2(EINT17)           MODE3(SPI1_SCK)         MODE4()                 --

+GPIO48  = MODE0(GPIO48)           MODE1(KROW3)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO49  = MODE0(GPIO49)           MODE1(KROW2)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO50  = MODE0(GPIO50)           MODE1(KROW1)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO51  = MODE0(GPIO51)           MODE1(KROW0)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO52  = MODE0(GPIO52)           MODE1(SCL)              MODE2()                 MODE3(DEBUG_OUT[17])    MODE4()                 PU

+GPIO53  = MODE0(GPIO53)           MODE1(SDA)              MODE2()                 MODE3(DEBUG_OUT[16])    MODE4()                 PU

+GPIO54  = MODE0(GPIO54)           MODE1(CMRST)            MODE2()                 MODE3(DEBUG_OUT[13])    MODE4()                 PD

+GPIO55  = MODE0(GPIO55)           MODE1(CMPDN)            MODE2(BT_MDS_IN)        MODE3(DEBUG_OUT[12])    MODE4()                 PD

+GPIO56  = MODE0(GPIO56)           MODE1(CMVREF)           MODE2()                 MODE3(DEBUG_OUT[11])    MODE4()                 PD

+GPIO57  = MODE0(GPIO57)           MODE1(CMHREF)           MODE2()                 MODE3(DEBUG_OUT[10])    MODE4()                 PD

+GPIO58  = MODE0(GPIO58)           MODE1(CMDAT9)           MODE2()                 MODE3(DEBUG_OUT[9])     MODE4()                 PD

+GPIO59  = MODE0(GPIO59)           MODE1(CMDAT8)           MODE2()                 MODE3(DEBUG_OUT[8])     MODE4()                 PD

+GPIO60  = MODE0(GPIO60)           MODE1(CMDAT7)           MODE2()                 MODE3(DEBUG_OUT[7])     MODE4()                 PD

+GPIO61  = MODE0(GPIO61)           MODE1(CMDAT6)           MODE2()                 MODE3(DEBUG_OUT[6])     MODE4()                 PD

+GPIO62  = MODE0(GPIO62)           MODE1(CMDAT5)           MODE2()                 MODE3(DEBUG_OUT[5])     MODE4()                 PD

+GPIO63  = MODE0(GPIO63)           MODE1(CMDAT4)           MODE2()                 MODE3(DEBUG_OUT[4])     MODE4()                 PD

+GPIO64  = MODE0(GPIO64)           MODE1(CMDAT3)           MODE2()                 MODE3(DEBUG_OUT[3])     MODE4()                 PD

+GPIO65  = MODE0(GPIO65)           MODE1(CMDAT2)           MODE2()                 MODE3(DEBUG_OUT[2])     MODE4()                 PD

+GPIO66  = MODE0(GPIO66)           MODE1(CMDAT1)           MODE2(PTA0)             MODE3(DEBUG_OUT[1])     MODE4()                 PD

+GPIO67  = MODE0(GPIO67)           MODE1(CMDAT0)           MODE2(PTA1)             MODE3(DEBUG_OUT[0])     MODE4()                 PD

+GPIO68  = MODE0(GPIO68)           MODE1(CMPCLK)           MODE2()                 MODE3(DEBUG_OUT[14])    MODE4()                 PD

+GPIO69  = MODE0(GPIO69)           MODE1(CMMCLK)           MODE2(PLL_TCLK_650M_CK) MODE3(DEBUG_OUT[15])    MODE4()                 PD

+GPIO70  = MODE0(GPIO70)           MODE1(LSCK)             MODE2(NCE1B)            MODE3(MC2WP)            MODE4(DSP_JTDI)         PD

+GPIO71  = MODE0(GPIO71)           MODE1(LSA0)             MODE2()                 MODE3(CLKM11)           MODE4(DSP_JTMS)         PD

+GPIO72  = MODE0(GPIO72)           MODE1(LSDA)             MODE2()                 MODE3(CLKM12)           MODE4(DSP_JTDO)         PD

+GPIO73  = MODE0(GPIO73)           MODE1(LSCE0B)           MODE2(USB_DRVVBUS)      MODE3(EINT11)           MODE4(DSP_EMU_B)        --

+GPIO74  = MODE0(GPIO74)           MODE1(LSCE1B)           MODE2(IRDA_TXD)         MODE3(LPCE2B)           MODE4(DSP_JTCK)         PU

+GPIO75  = MODE0(GPIO75)           MODE1(LPCE1B)           MODE2()                 MODE3(IRDA_RXD)         MODE4()                 PU

+GPIO76  = MODE0(GPIO76)           MODE1(LPTE)             MODE2()                 MODE3()                 MODE4()                 PD

+GPIO77  = MODE0(GPIO77)           MODE1(NLD17)            MODE2(EINT12)           MODE3()                 MODE4(CINT0)            PD

+GPIO78  = MODE0(GPIO78)           MODE1(NLD16)            MODE2(EINT13)           MODE3()                 MODE4()                 PD

+GPIO79  = MODE0(GPIO79)           MODE1(NRNB)             MODE2()                 MODE3()                 MODE4()                 PU

+GPIO80  = MODE0(GPIO80)           MODE1(NCLE)             MODE2()                 MODE3(SRCLKENAI3)       MODE4()                 --

+GPIO81  = MODE0(GPIO81)           MODE1(NALE)             MODE2()                 MODE3(SRCLKENAI4)       MODE4()                 --

+GPIO82  = MODE0(GPIO82)           MODE1(NWEB)             MODE2()                 MODE3()                 MODE4()                 --

+GPIO83  = MODE0(GPIO83)           MODE1(NREB)             MODE2()                 MODE3()                 MODE4()                 --

+GPIO84  = MODE0(GPIO84)           MODE1(NCE0B)            MODE2()                 MODE3()                 MODE4()                 --

+GPIO85  = MODE0(GPIO85)           MODE1(MC2CM0)           MODE2()                 MODE3(DEBUG_OUT[21])    MODE4()                 PU

+GPIO86  = MODE0(GPIO86)           MODE1(MC2DA0)           MODE2(MC0DA7)           MODE3(DEBUG_OUT[20])    MODE4()                 PU

+GPIO87  = MODE0(GPIO87)           MODE1(MC2DA1)           MODE2(MC0DA6)           MODE3(DEBUG_OUT[19])    MODE4()                 PU

+GPIO88  = MODE0(GPIO88)           MODE1(MC2DA2)           MODE2(MC0DA5)           MODE3(EINT4)            MODE4(DEBUG_OUT[31])    PU

+GPIO89  = MODE0(GPIO89)           MODE1(MC2DA3)           MODE2(MC0DA4)           MODE3(EINT5)            MODE4()                 PU

+GPIO90  = MODE0(GPIO90)           MODE1(MC2CK)            MODE2()                 MODE3(DEBUG_OUT[22])    MODE4(BT_JTMS)          PU

+GPIO91  = MODE0(GPIO91)           MODE1(MC2CK_FB)         MODE2(MC1INS)           MODE3(IRDA_PDN)         MODE4()                 PU

+GPIO92  = MODE0(GPIO92)           MODE1(MC0CM0)           MODE2()                 MODE3(DEBUG_OUT[29])    MODE4()                 PU

+GPIO93  = MODE0(GPIO93)           MODE1(MC0DA0)           MODE2()                 MODE3(DEBUG_OUT[28])    MODE4()                 PU

+GPIO94  = MODE0(GPIO94)           MODE1(MC0DA1)           MODE2()                 MODE3(DEBUG_OUT[27])    MODE4()                 PU

+GPIO95  = MODE0(GPIO95)           MODE1(MC0DA2)           MODE2()                 MODE3(DEBUG_OUT[26])    MODE4()                 PU

+GPIO96  = MODE0(GPIO96)           MODE1(MC0DA3)           MODE2()                 MODE3(DEBUG_OUT[25])    MODE4()                 PU

+GPIO97  = MODE0(GPIO97)           MODE1(MC0CK)            MODE2()                 MODE3(DEBUG_OUT[30])    MODE4()                 PU

+GPIO98  = MODE0(GPIO98)           MODE1(MC0CK_FB)         MODE2()                 MODE3(DEBUG_OUT[23])    MODE4()                 PU

+GPIO99  = MODE0(GPIO99)           MODE1(MC0WP)            MODE2(EINT10)           MODE3(CLKM2)            MODE4(BT_JTDI)          PU

+GPIO100 = MODE0(GPIO100)          MODE1(MC0RST)           MODE2()                 MODE3(DEBUG_OUT[24])    MODE4()                 --

+GPIO101 = MODE0(GPIO101)          MODE1(MC1CM0)           MODE2(SPI0_CS)          MODE3(BT_JRTCK)         MODE4()                 PU

+GPIO102 = MODE0(GPIO102)          MODE1(MC1DA0)           MODE2(SPI0_MOSI)        MODE3(BT_JTRST_B)       MODE4()                 PU

+GPIO103 = MODE0(GPIO103)          MODE1(MC1DA1)           MODE2(SPI0_MISO)        MODE3(BT_JTCK)          MODE4()                 PU

+GPIO104 = MODE0(GPIO104)          MODE1(MC1CK)            MODE2(SPI0_SCK)         MODE3(BT_JTDO)          MODE4()                 PU

+GPIO105 = MODE0(GPIO105)          MODE1(MC1CK_FB)         MODE2()                 MODE3(DEBUG_OUT[18])    MODE4(CLKM13)           PU

+GPIO106 = MODE0(GPIO106)          MODE1()                 MODE2()                 MODE3()                 MODE4()                 --

+GPIO107 = MODE0(GPIO107)          MODE1()                 MODE2()                 MODE3()                 MODE4()                 --

+GPIO108 = MODE0(GPIO108)          MODE1()                 MODE2()                 MODE3()                 MODE4()                 --

+GPIO109 = MODE0(GPIO109)          MODE1()                 MODE2()                 MODE3()                 MODE4()                 PD

+

+[GPO]

+

+[EINT]

+EINT_COUNT = 29

+EINT_DEBOUNCE_TIME_COUNT = 29

+

+[EINT_EX_PIN]

+0

+1

+2

+3

+4

+5

+6

+7

+8

+9

+10

+11

+12

+13

+14

+15

+16

+17

+18

+19

+20

+21

+23

+24

+25

+26

+27

+28

+30

+

+[EINT_INT_PIN]

+22 = OTG_IDPIN_EINT_NO

+29 = CHR_USB_EINT_NO

+31 = FM_EINT_NO

+

+[EINT_INT_TIME_DELAY]

+EINT22 = 50

+EINT29 = 40

+EINT31 = 0

+

+[ADC]

+ADC_COUNT = 5

+

+[ADC_INT_CH]

+0 = ADC_VBAT

+1 = ADC_VISENSE

+2 = ADC_VCHARGER

+3 = ADC_VBATTMP

+

+[ADC_EX_CH]

+4

+5

+6

+7

+8

+

+[KEYPAD]

+KEY_ROW = 8

+KEY_COLUMN = 9

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6280NS_1.fig b/mcu/custom/driver/drv/Drv_Tool/MT6280NS_1.fig
new file mode 100644
index 0000000..2f4e6b7
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6280NS_1.fig
@@ -0,0 +1,133 @@
+[Chip Type]
+Chip = MT6280NS
+GPIO_ModeNum = 9
+GPIO_Pull_Sel=1
+PMIC_Config=1
+PMIC_Volt_Format = 1
+
+[GPIO]
+GPIO0   = MODE0(GPIO0)         MODE1(NLD0)          MODE2()              MODE3(EINT0)         MODE4(CINT0)         MODE5(SDIO_INTB)     MODE6(MCWP)          MODE7(DEBUGOUT6)     MODE8(DEBUGOUT1)     PU
+GPIO1   = MODE0(GPIO1)         MODE1(NLD1)          MODE2()              MODE3(EINT1)         MODE4(CINT1)         MODE5(MCINS)         MODE6(CLKM0)         MODE7(DEBUGOUT7)     MODE8(DEBUGOUT0)     PU
+GPIO2   = MODE0(GPIO2)         MODE1(NLD2)          MODE2(DEBUGOUT8)     MODE3(U1RXD)         MODE4(U1TXD)         MODE5(DEBUGOUT5)     MODE6(U0RXD)         MODE7(SCL)           MODE8(DSPJTCK)       PU
+GPIO3   = MODE0(GPIO3)         MODE1(NLD3)          MODE2(DEBUGOUT9)     MODE3(U1TXD)         MODE4(U1RXD)         MODE5(DEBUGOUT6)     MODE6(U0TXD)         MODE7(SDA)           MODE8(DSPJTMS)       PU
+GPIO4   = MODE0(GPIO4)         MODE1(NLD4)          MODE2(DAIPCMIN)      MODE3(DEBUGOUT10)    MODE4()              MODE5(DEBUGOUT7)     MODE6(U1RTS)         MODE7(DEBUGOUT2)     MODE8(DSPJTD)        PU
+GPIO5   = MODE0(GPIO5)         MODE1(NLD5)          MODE2(DAICLK)        MODE3()              MODE4()              MODE5()              MODE6(U1CTS)         MODE7(DEBUGOUT3)     MODE8(DCXO32K)       PD
+GPIO6   = MODE0(GPIO6)         MODE1(NLD6)          MODE2(DAISYNC)       MODE3()              MODE4()              MODE5()              MODE6(U0CTS)         MODE7(DEBUGOUT6)     MODE8(DEBUGOUT0)     PU
+GPIO7   = MODE0(GPIO7)         MODE1(NLD7)          MODE2(DAIPCMOUT)     MODE3()              MODE4(BSIACS)        MODE5(CLKM1)         MODE6(U0RTS)         MODE7(DEBUGOUT8)     MODE8()              PU
+GPIO8   = MODE0(GPIO8)         MODE1(NLD8)          MODE2()              MODE3(CLK32K)        MODE4()              MODE5()              MODE6(DEBUGOUT6)     MODE7()              MODE8()              PD
+GPIO9   = MODE0(GPIO9)         MODE1(NLD9)          MODE2()              MODE3(DSPJTCK)       MODE4(DEBUGOUT10)    MODE5(BSIACS)        MODE6(DEBUGOUT7)     MODE7(MCUJTDO)       MODE8()              PD
+GPIO10  = MODE0(GPIO10)        MODE1(NLD10)         MODE2()              MODE3(DSPJTMS)       MODE4()              MODE5(BSIADATAO)     MODE6(DEBUGOUT8)     MODE7(MCUJTDI)       MODE8()              PD
+GPIO11  = MODE0(GPIO11)        MODE1(NLD11)         MODE2()              MODE3(DSPJTD)        MODE4()              MODE5(BSIADATAI)     MODE6(DEBUGOUT9)     MODE7(MCUJTCK)       MODE8()              PD
+GPIO12  = MODE0(GPIO12)        MODE1(NLD12)         MODE2()              MODE3() 					    MODE4()              MODE5(BSIACLK)       MODE6(DEBUGOUT10)    MODE7(MCUJTMS)       MODE8()              PD
+GPIO13  = MODE0(GPIO13)        MODE1(NLD13)         MODE2()              MODE3()  				    MODE4()              MODE5()              MODE6(DEBUGOUT11)    MODE7(MCUJTRSTB)     MODE8()              PD
+GPIO14  = MODE0(GPIO14)        MODE1(NLD14)         MODE2()              MODE3(U0RXD)         MODE4()              MODE5()              MODE6(DEBUGOUT12)    MODE7()              MODE8()              PU
+GPIO15  = MODE0(GPIO15)        MODE1(NLD15)         MODE2(WCDMA_EXT_FRAME_SYNC) MODE3(U0TXD)         MODE4()              MODE5()              MODE6(DEBUGOUT13)    MODE7()              MODE8()              PU
+GPIO16  = MODE0(GPIO16)        MODE1(BSIB0CS0)      MODE2(BSIB4CS1)      MODE3(CLK32K)        MODE4(USBIDDIG)      MODE5(BSIACLK)       MODE6(DAIRST)        MODE7(CLKM0)         MODE8(EINT0)         PU
+GPIO17  = MODE0(GPIO17)        MODE1(CLK32K)        MODE2()              MODE3(BSIADATAO)     MODE4(MCINS)         MODE5(CLKM0)         MODE6(PWM)           MODE7(DEBUGOUT6)     MODE8()              PD
+GPIO18  = MODE0(GPIO18)        MODE1()              MODE2()              MODE3()              MODE4(NLD0)          MODE5()              MODE6()              MODE7(DEBUGOUT0)     MODE8()              PD
+GPIO19  = MODE0(GPIO19)        MODE1()              MODE2()              MODE3()              MODE4(NLD1)          MODE5()              MODE6()              MODE7(DEBUGOUT1)     MODE8()              PD
+GPIO20  = MODE0(GPIO20)        MODE1()              MODE2()              MODE3()              MODE4(NLD2)          MODE5()              MODE6()              MODE7(DEBUGOUT2)     MODE8()              PD
+GPIO21  = MODE0(GPIO21)        MODE1()              MODE2()              MODE3()              MODE4(NLD3)          MODE5()              MODE6()              MODE7(DEBUGOUT3)     MODE8()              PD
+GPIO22  = MODE0(GPIO22)        MODE1()              MODE2()              MODE3()              MODE4(NLD4)          MODE5()              MODE6()              MODE7(DEBUGOUT4)     MODE8()              PD
+GPIO23  = MODE0(GPIO23)        MODE1()              MODE2()              MODE3()              MODE4(NLD5)          MODE5()              MODE6()              MODE7(DEBUGOUT5)     MODE8()              PD
+GPIO24  = MODE0(GPIO24)        MODE1()              MODE2()              MODE3()              MODE4(NLD6)          MODE5()              MODE6()              MODE7(DEBUGOUT6)     MODE8()              PD
+GPIO25  = MODE0(GPIO25)        MODE1()              MODE2()              MODE3()              MODE4(NLD7)          MODE5()              MODE6()              MODE7(DEBUGOUT7)     MODE8()              PD
+GPIO26  = MODE0(GPIO26)        MODE1(U1RTS)         MODE2(BSIB2CLK)      MODE3(CLKM0)         MODE4(LPCE0B)        MODE5(DEBUGOUT11)    MODE6()   				   MODE7(DEBUGOUT6)     MODE8()              PD
+GPIO27  = MODE0(GPIO27)        MODE1(DEBUGOUT12)    MODE2(BSIB2DATA)     MODE3(MCUJRTCK)      MODE4(LPCE1B)        MODE5(BSIADATAI)     MODE6()   				   MODE7(DEBUGOUT6)     MODE8(DEBUGOUT1)     PD
+GPIO28  = MODE0(GPIO28)        MODE1(U1CTS)         MODE2()              MODE3()              MODE4(LPRSTB)        MODE5(DEBUGOUT13)    MODE6()              MODE7(DEBUGOUT7)     MODE8(DEBUGOUT1)     PD
+GPIO29  = MODE0(GPIO29)        MODE1()              MODE2()              MODE3()              MODE4(LPRDB)         MODE5(CLKM1)         MODE6(EINT2)         MODE7(DEBUGOUT14)    MODE8()              --
+GPIO30  = MODE0(GPIO30)        MODE1()              MODE2()              MODE3(LPTE)          MODE4(LPWRB)         MODE5(WCDMA_EXT_FRAME_SYNC) MODE6(EINT3)         MODE7(DEBUGOUT15)    MODE8()              PD
+GPIO31  = MODE0(GPIO31)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO32  = MODE0(GPIO32)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO33  = MODE0(GPIO33)        MODE1()              MODE2()              MODE3()              MODE4(BPIBUS8)       MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO34  = MODE0(GPIO34)        MODE1(SRCLKENA)      MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO35  = MODE0(GPIO35)        MODE1(VM0)           MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO36  = MODE0(GPIO36)        MODE1(VM1)           MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO37  = MODE0(GPIO37)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO38  = MODE0(GPIO38)        MODE1(BPIBUS12)      MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO39  = MODE0(GPIO39)        MODE1(BPIBUS13)      MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO40  = MODE0(GPIO40)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO41  = MODE0(GPIO41)        MODE1()              MODE2()              MODE3()              MODE4(BPIBUS0)       MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO42  = MODE0(GPIO42)        MODE1()              MODE2()              MODE3()              MODE4(BPIBUS1)       MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO43  = MODE0(GPIO43)        MODE1()              MODE2()              MODE3()              MODE4(BPIBUS2)       MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO44  = MODE0(GPIO44)        MODE1()              MODE2()              MODE3()              MODE4(BPIBUS3)       MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO45  = MODE0(GPIO45)        MODE1()              MODE2(BSIC0DATA)     MODE3()              MODE4(BPIBUS4)       MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO46  = MODE0(GPIO46)        MODE1()              MODE2(BSIC0CLK)      MODE3()              MODE4(BPIBUS5)       MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO47  = MODE0(GPIO47)        MODE1()              MODE2()              MODE3()              MODE4(BPIBUS6)       MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO48  = MODE0(GPIO48)        MODE1()              MODE2()              MODE3()              MODE4(BPIBUS7)       MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO49  = MODE0(GPIO49)        MODE1()              MODE2()              MODE3(GPS_SYNC)      MODE4(USBDRVVBUS)    MODE5(WCDMA_EXT_FRAME_SYNC) MODE6(CLKM0)         MODE7(DEBUGOUT11)    MODE8()              PD
+GPIO50  = MODE0(GPIO50)        MODE1()              MODE2()              MODE3()              MODE4(U2RXD)         MODE5(U2TXD)         MODE6()              MODE7()              MODE8()              PD
+GPIO51  = MODE0(GPIO51)        MODE1()              MODE2()              MODE3()              MODE4(U2TXD)         MODE5(U2RXD)         MODE6()              MODE7()              MODE8()              PU
+GPIO52  = MODE0(GPIO52)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO53  = MODE0(GPIO53)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO54  = MODE0(GPIO54)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO55  = MODE0(GPIO55)        MODE1(SDA)           MODE2(BSIB1DATA)     MODE3(U2RXD)         MODE4(CLK32K)        MODE5(DAIPCMIN)      MODE6(U1CTS)         MODE7()              MODE8()              PU
+GPIO56  = MODE0(GPIO56)        MODE1(SCL)           MODE2(BSIB1CS1)      MODE3(U2TXD)         MODE4()              MODE5(DAICLK)        MODE6(U1RTS)         MODE7()              MODE8()              PU
+GPIO57  = MODE0(GPIO57)        MODE1()              MODE2(BSIB1CLK)      MODE3(U2CTS)         MODE4()              MODE5(DAIPCMOUT)     MODE6(U0CTS)         MODE7()              MODE8()              PD
+GPIO58  = MODE0(GPIO58)        MODE1()              MODE2(BSIB1CS0)      MODE3(U2RTS)         MODE4()              MODE5(DAISYNC)       MODE6(U0RTS)         MODE7()              MODE8()              PD
+GPIO59  = MODE0(GPIO59)        MODE1()              MODE2()              MODE3(U0RXD)         MODE4(U0TXD)         MODE5(U2RXD)         MODE6(U2TXD)         MODE7()              MODE8()              PU
+GPIO60  = MODE0(GPIO60)        MODE1()              MODE2()              MODE3(U0TXD)         MODE4(U0RXD)         MODE5(U2TXD)         MODE6(U2RXD)         MODE7()              MODE8()              PU
+GPIO61  = MODE0(GPIO61)        MODE1(MCCM)          MODE2(SPICS)         MODE3(SDRESP)        MODE4(DEBUGOUT0)     MODE5(DSPJTCK)       MODE6(BSIADATAI)     MODE7(MCUJTDO)       MODE8(DEBUGOUT7)     PU
+GPIO62  = MODE0(GPIO62)        MODE1(MCDA0)         MODE2(SPIMOSI)       MODE3(SDDATA0)       MODE4(DEBUGOUT1)     MODE5(DSPJTMS)       MODE6(BSIACLK)       MODE7(MCUJTDI)       MODE8(DEBUGOUT6)     PU
+GPIO63  = MODE0(GPIO63)        MODE1(MCDA1)         MODE2(SPIMISO)       MODE3(SDDATA1)       MODE4(DEBUGOUT2)     MODE5(DSPJTD)        MODE6(BSIACS)        MODE7(MCUJTCK)       MODE8(DEBUGOUT5)     PU
+GPIO64  = MODE0(GPIO64)        MODE1(MCDA2)         MODE2(SPISCK)        MODE3(SDDATA2)       MODE4(DEBUGOUT3)     MODE5(CLKM0)   		  MODE6(BSIADATAO)     MODE7(MCUJTMS)       MODE8(DEBUGOUT4)     PU
+GPIO65  = MODE0(GPIO65)        MODE1(MCDA3)         MODE2(WCDMA_EXT_FRAME_SYNC) MODE3(SDDATA3)       MODE4(DEBUGOUT4)     MODE5(CLKM1)      MODE6(BSIADATAO)     MODE7(MCUJTRSTB)     MODE8(DEBUGOUT3)     PU
+GPIO66  = MODE0(GPIO66)        MODE1(MCCK)          MODE2(DSPJTCK)       MODE3(SDCLK)         MODE4(DEBUGOUT5)     MODE5(BPIBUS14)      MODE6(BPIBUS15)      MODE7(BSIACLK)       MODE8(DEBUGOUT2)     PU
+GPIO67  = MODE0(GPIO67)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO68  = MODE0(GPIO68)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO69  = MODE0(GPIO69)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              --
+GPIO70  = MODE0(GPIO70)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO71  = MODE0(GPIO71)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO72  = MODE0(GPIO72)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO73  = MODE0(GPIO73)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO74  = MODE0(GPIO74)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO75  = MODE0(GPIO75)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO76  = MODE0(GPIO76)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO77  = MODE0(GPIO77)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO78  = MODE0(GPIO78)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO79  = MODE0(GPIO79)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO80  = MODE0(GPIO80)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO81  = MODE0(GPIO81)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO82  = MODE0(GPIO82)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO83  = MODE0(GPIO83)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO84  = MODE0(GPIO84)        MODE1(NRNB)          MODE2(SFIO2)         MODE3(SCL)           MODE4(U0RXD)         MODE5(U0TXD)         MODE6(SDCLK_OUT)     MODE7(DEBUGOUT0)     MODE8()              PU
+GPIO85  = MODE0(GPIO85)        MODE1(NWEB)          MODE2(SFIO1)         MODE3(SDA)           MODE4(U0TXD)         MODE5(U0RXD)         MODE6(SDIO_INTB)     MODE7(DEBUGOUT1)     MODE8()              PU
+GPIO86  = MODE0(GPIO86)        MODE1(NREB)          MODE2(SFIO0)         MODE3(BSIB3CLK)      MODE4(U1RTS)         MODE5()              MODE6()              MODE7(DEBUGOUT2)     MODE8()              PU
+GPIO87  = MODE0(GPIO87)        MODE1(NCLE)          MODE2(SFCS)          MODE3(BSIB3CS0)      MODE4(U0RTS)         MODE5()              MODE6()              MODE7(DEBUGOUT3)     MODE8()              PU
+GPIO88  = MODE0(GPIO88)        MODE1(NALE)          MODE2(SFCLK)         MODE3(BSIB3DATA)     MODE4(U1CTS)         MODE5(SDA)           MODE6()              MODE7(DEBUGOUT4)     MODE8()              PD
+GPIO89  = MODE0(GPIO89)        MODE1(NCE0B)         MODE2(SFIO3)         MODE3(BSIB3CS1)      MODE4(U0CTS)         MODE5(SCL)           MODE6()              MODE7(DEBUGOUT5)     MODE8(WCDMA_EXT_FRAME_SYNC) PU
+GPIO90  = MODE0(GPIO90)        MODE1(WATCHDOG)      MODE2(GPS_SYNC)      MODE3(SRCLKENAI)     MODE4()              MODE5()              MODE6()              MODE7(CLK32K)        MODE8()              PD
+GPIO91  = MODE0(GPIO91)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO92  = MODE0(GPIO92)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO93  = MODE0(GPIO93)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO94  = MODE0(GPIO94)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO95  = MODE0(GPIO95)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO96  = MODE0(GPIO96)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              --
+GPIO97  = MODE0(GPIO97)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              --
+GPIO98  = MODE0(GPIO98)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              --
+GPIO99  = MODE0(GPIO99)        MODE1()              MODE2(BSIB2CS0)      MODE3(CLK32K)        MODE4(LPA0)          MODE5(DAIRST)        MODE6(CLKM1)         MODE7(DEBUGOUT12)    MODE8(DEBUGOUT5)     --
+GPIO100  = MODE0(GPIO100)        MODE1()            MODE2()              MODE3()              MODE4()              MODE5(SCL)           MODE6(U2RXD)         MODE7()              MODE8()              --
+GPIO101  = MODE0(GPIO101)        MODE1()            MODE2()              MODE3(EINT2)    			MODE4()              MODE5(SDA)        		MODE6(U2TXD)         MODE7()              MODE8()              --
+GPIO102  = MODE0(GPIO102)        MODE1()            MODE2()              MODE3(EINT3)     		MODE4()              MODE5()     	        MODE6()              MODE7()              MODE8()              --
+GPIO103  = MODE0(GPIO103)        MODE1()            MODE2()              MODE3(U2RXD)         MODE4(CLKM0)         MODE5(SDA)           MODE6()              MODE7()              MODE8()              --
+GPIO104  = MODE0(GPIO104)        MODE1()            MODE2()              MODE3(U2TXD)         MODE4(CLKM1)         MODE5(SCL)           MODE6()              MODE7()              MODE8()              --
+
+
+[GPO]
+
+[EINT]
+EINT_COUNT = 4
+EINT_DEBOUNCE_TIME_COUNT = 4
+
+[ADC]
+ADC_COUNT = 1
+
+[KEYPAD]
+KEY_ROW = 0
+KEY_COLUMN = 0
+
+
+
+
+
+
diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6280SP_1.fig b/mcu/custom/driver/drv/Drv_Tool/MT6280SP_1.fig
new file mode 100644
index 0000000..4f5ddfe
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6280SP_1.fig
@@ -0,0 +1,130 @@
+[Chip Type]
+Chip = MT6280SP
+GPIO_ModeNum = 9
+GPIO_Pull_Sel=1
+PMIC_Config=1
+PMIC_Volt_Format = 1
+
+[GPIO]
+GPIO0   = MODE0(GPIO0)         MODE1(NLD0)          MODE2()              MODE3(EINT0)         MODE4(CINT0)         MODE5(SDIO_INTB)     MODE6(MCWP)          MODE7(DEBUGOUT6)     MODE8(DEBUGOUT1)     PU
+GPIO1   = MODE0(GPIO1)         MODE1(NLD1)          MODE2()              MODE3(EINT1)         MODE4(CINT1)         MODE5(MCINS)         MODE6(CLKM0)         MODE7(DEBUGOUT7)     MODE8(DEBUGOUT0)     PU
+GPIO2   = MODE0(GPIO2)         MODE1(NLD2)          MODE2(DEBUGOUT8)     MODE3(U1RXD)         MODE4(U1TXD)         MODE5(DEBUGOUT5)     MODE6(U0RXD)         MODE7(SCL)           MODE8(DSPJTCK)       PU
+GPIO3   = MODE0(GPIO3)         MODE1(NLD3)          MODE2(DEBUGOUT9)     MODE3(U1TXD)         MODE4(U1RXD)         MODE5(DEBUGOUT6)     MODE6(U0TXD)         MODE7(SDA)           MODE8(DSPJTMS)       PU
+GPIO4   = MODE0(GPIO4)         MODE1(NLD4)          MODE2(DAIPCMIN)      MODE3(DEBUGOUT10)    MODE4()              MODE5(DEBUGOUT7)     MODE6(U1RTS)         MODE7(DEBUGOUT2)     MODE8(DSPJTD)        PU
+GPIO5   = MODE0(GPIO5)         MODE1(NLD5)          MODE2(DAICLK)        MODE3()              MODE4()              MODE5()              MODE6(U1CTS)         MODE7(DEBUGOUT3)     MODE8(DCXO32K)       PD
+GPIO6   = MODE0(GPIO6)         MODE1(NLD6)          MODE2(DAISYNC)       MODE3()              MODE4()              MODE5()              MODE6(U0CTS)         MODE7(DEBUGOUT6)     MODE8(DEBUGOUT0)     PU
+GPIO7   = MODE0(GPIO7)         MODE1(NLD7)          MODE2(DAIPCMOUT)     MODE3()              MODE4(BSIACS)        MODE5(CLKM1)         MODE6(U0RTS)         MODE7(DEBUGOUT8)     MODE8()              PU
+GPIO8   = MODE0(GPIO8)         MODE1(NLD8)          MODE2()              MODE3(CLK32K)        MODE4()              MODE5()              MODE6(DEBUGOUT6)     MODE7()              MODE8()              PD
+GPIO9   = MODE0(GPIO9)         MODE1(NLD9)          MODE2()              MODE3(DSPJTCK)       MODE4(DEBUGOUT10)    MODE5(BSIACS)        MODE6(DEBUGOUT7)     MODE7(MCUJTDO)       MODE8()              PD
+GPIO10  = MODE0(GPIO10)        MODE1(NLD10)         MODE2()              MODE3(DSPJTMS)       MODE4()              MODE5(BSIADATAO)     MODE6(DEBUGOUT8)     MODE7(MCUJTDI)       MODE8()              PD
+GPIO11  = MODE0(GPIO11)        MODE1(NLD11)         MODE2()              MODE3(DSPJTD)        MODE4()              MODE5(BSIADATAI)     MODE6(DEBUGOUT9)     MODE7(MCUJTCK)       MODE8()              PD
+GPIO12  = MODE0(GPIO12)        MODE1(NLD12)         MODE2()              MODE3()      				MODE4()              MODE5(BSIACLK)       MODE6(DEBUGOUT10)    MODE7(MCUJTMS)       MODE8()              PD
+GPIO13  = MODE0(GPIO13)        MODE1(NLD13)         MODE2()              MODE3()      				MODE4()              MODE5()              MODE6(DEBUGOUT11)    MODE7(MCUJTRSTB)     MODE8()              PD
+GPIO14  = MODE0(GPIO14)        MODE1(NLD14)         MODE2()              MODE3(U0RXD)         MODE4()              MODE5()              MODE6(DEBUGOUT12)    MODE7()              MODE8()              PU
+GPIO15  = MODE0(GPIO15)        MODE1(NLD15)         MODE2(WCDMA_EXT_FRAME_SYNC) MODE3(U0TXD)         MODE4()              MODE5()              MODE6(DEBUGOUT13)    MODE7()              MODE8()              PU
+GPIO16  = MODE0(GPIO16)        MODE1(BSIB0CS0)      MODE2(BSIB4CS1)      MODE3(CLK32K)        MODE4(USBIDDIG)      MODE5(BSIACLK)       MODE6(DAIRST)        MODE7(CLKM0)         MODE8(EINT0)         PU
+GPIO17  = MODE0(GPIO17)        MODE1(CLK32K)        MODE2()              MODE3(BSIADATAO)     MODE4(MCINS)         MODE5(CLKM0)         MODE6(PWM)           MODE7(DEBUGOUT6)     MODE8()              PD
+GPIO18  = MODE0(GPIO18)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO19  = MODE0(GPIO19)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO20  = MODE0(GPIO20)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO21  = MODE0(GPIO21)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO22  = MODE0(GPIO22)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO23  = MODE0(GPIO23)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO24  = MODE0(GPIO24)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO25  = MODE0(GPIO25)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO26  = MODE0(GPIO26)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO27  = MODE0(GPIO27)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO28  = MODE0(GPIO28)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO29  = MODE0(GPIO29)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              --
+GPIO30  = MODE0(GPIO30)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO31  = MODE0(GPIO31)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO32  = MODE0(GPIO32)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO33  = MODE0(GPIO33)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO34  = MODE0(GPIO34)        MODE1(SRCLKENA)      MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO35  = MODE0(GPIO35)        MODE1(VM0)           MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO36  = MODE0(GPIO36)        MODE1(VM1)           MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO37  = MODE0(GPIO37)        MODE1(BPIBUS6)       MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO38  = MODE0(GPIO38)        MODE1(BPIBUS12)      MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO39  = MODE0(GPIO39)        MODE1(BPIBUS13)      MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO40  = MODE0(GPIO40)        MODE1(BPIBUS8)       MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO41  = MODE0(GPIO41)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO42  = MODE0(GPIO42)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO43  = MODE0(GPIO43)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO44  = MODE0(GPIO44)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO45  = MODE0(GPIO45)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO46  = MODE0(GPIO46)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO47  = MODE0(GPIO47)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO48  = MODE0(GPIO48)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO49  = MODE0(GPIO49)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO50  = MODE0(GPIO50)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO51  = MODE0(GPIO51)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO52  = MODE0(GPIO52)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO53  = MODE0(GPIO53)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO54  = MODE0(GPIO54)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO55  = MODE0(GPIO55)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO56  = MODE0(GPIO56)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO57  = MODE0(GPIO57)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO58  = MODE0(GPIO58)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO59  = MODE0(GPIO59)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO60  = MODE0(GPIO60)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO61  = MODE0(GPIO61)        MODE1(MCCM)          MODE2(SPICS)         MODE3(SDRESP)        MODE4(DEBUGOUT0)     MODE5(DSPJTCK)       MODE6(BSIADATAI)     MODE7(MCUJTDO)       MODE8(DEBUGOUT7)     PU
+GPIO62  = MODE0(GPIO62)        MODE1(MCDA0)         MODE2(SPIMOSI)       MODE3(SDDATA0)       MODE4(DEBUGOUT1)     MODE5(DSPJTMS)       MODE6(BSIACLK)       MODE7(MCUJTDI)       MODE8(DEBUGOUT6)     PU
+GPIO63  = MODE0(GPIO63)        MODE1(MCDA1)         MODE2(SPIMISO)       MODE3(SDDATA1)       MODE4(DEBUGOUT2)     MODE5(DSPJTD)        MODE6(BSIACS)        MODE7(MCUJTCK)       MODE8(DEBUGOUT5)     PU
+GPIO64  = MODE0(GPIO64)        MODE1(MCDA2)         MODE2(SPISCK)        MODE3(SDDATA2)       MODE4(DEBUGOUT3)     MODE5(CLKM0)      				MODE6(BSIADATAO)     MODE7(MCUJTMS)       MODE8(DEBUGOUT4)     PU
+GPIO65  = MODE0(GPIO65)        MODE1(MCDA3)         MODE2(WCDMA_EXT_FRAME_SYNC) MODE3(SDDATA3)       MODE4(DEBUGOUT4)     MODE5(CLKM1) 	     MODE6(BSIADATAO)     MODE7(MCUJTRSTB)     MODE8(DEBUGOUT3)     PU
+GPIO66  = MODE0(GPIO66)        MODE1(MCCK)          MODE2(DSPJTCK)       MODE3(SDCLK)         MODE4(DEBUGOUT5)     MODE5(BPIBUS14)      MODE6(BPIBUS15)      MODE7(BSIACLK)       MODE8(DEBUGOUT2)     PU
+GPIO67  = MODE0(GPIO67)        MODE1(DAIPCMOUT)     MODE2(DEBUGOUT1)     MODE3(DSPJTMS)       MODE4(DEBUGOUT6)     MODE5(BSIADATAI)     MODE6(MON_EDQ8D)     MODE7(MON_ECATQ)     MODE8(EINT0)         PD
+GPIO68  = MODE0(GPIO68)        MODE1(DAIPCMIN)      MODE2(BSIB0CLK)      MODE3(BPIBUS14)      MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO69  = MODE0(GPIO69)        MODE1(DAISYNC)       MODE2(DEBUGOUT0)     MODE3(BSIACS)        MODE4(DEBUGOUT7)     MODE5(BSIADATAO)     MODE6(DSPJTD)        MODE7(MON_ECKE)      MODE8(MCWP)          --
+GPIO70  = MODE0(GPIO70)        MODE1(SCL)           MODE2(BSIB0CS1)      MODE3(BPIBUS15)      MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO71  = MODE0(GPIO71)        MODE1(SDA)           MODE2(BSIB0DATA)     MODE3()              MODE4()              MODE5()              MODE6(DEBUGOUT13)    MODE7()              MODE8()              PU
+GPIO72  = MODE0(GPIO72)        MODE1(DAICLK)        MODE2(BSIB0DATA)     MODE3()              MODE4(EINT0)         MODE5(BSIACS)        MODE6(DEBUGOUT14)    MODE7(MON_EWRB)      MODE8()              PD
+GPIO73  = MODE0(GPIO73)        MODE1(BPIBUS0)       MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO74  = MODE0(GPIO74)        MODE1(BPIBUS1)       MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO75  = MODE0(GPIO75)        MODE1(BPIBUS2)       MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO76  = MODE0(GPIO76)        MODE1(BPIBUS3)       MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO77  = MODE0(GPIO77)        MODE1(BPIBUS4)       MODE2()              MODE3()              MODE4(BSIC1DATA)     MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO78  = MODE0(GPIO78)        MODE1()              MODE2()              MODE3(U2TXD)         MODE4(U2RXD)         MODE5()              MODE6()              MODE7(MON_ECASB)     MODE8()              PD
+GPIO79  = MODE0(GPIO79)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7(MON_ERASB)     MODE8()              PD
+GPIO80  = MODE0(GPIO80)        MODE1(BPIBUS5)       MODE2()              MODE3()              MODE4(BSIC1CLK)      MODE5()              MODE6()              MODE7()              MODE8()              PD
+GPIO81  = MODE0(GPIO81)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6(MON_EDQS1)     MODE7(MON_EDTQ)      MODE8()              PD
+GPIO82  = MODE0(GPIO82)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6(MON_EDQS0)     MODE7(MON_ECACLK)    MODE8()              PU
+GPIO83  = MODE0(GPIO83)        MODE1()              MODE2()              MODE3(U2RXD)         MODE4(U2TXD)         MODE5()              MODE6(MON_EDQ0D)     MODE7(MON_EDCLK)     MODE8()              PU
+GPIO84  = MODE0(GPIO84)        MODE1(NRNB)          MODE2(SFIO2)         MODE3(SCL)           MODE4(U0RXD)         MODE5(U0TXD)         MODE6(SDCLK_OUT)     MODE7(DEBUGOUT0)     MODE8()              PU
+GPIO85  = MODE0(GPIO85)        MODE1(NWEB)          MODE2(SFIO1)         MODE3(SDA)           MODE4(U0TXD)         MODE5(U0RXD)         MODE6(SDIO_INTB)     MODE7(DEBUGOUT1)     MODE8()              PU
+GPIO86  = MODE0(GPIO86)        MODE1(NREB)          MODE2(SFIO0)         MODE3(BSIB3CLK)      MODE4(U1RTS)         MODE5()              MODE6()              MODE7(DEBUGOUT2)     MODE8()              PU
+GPIO87  = MODE0(GPIO87)        MODE1(NCLE)          MODE2(SFCS)          MODE3(BSIB3CS0)      MODE4(U0RTS)         MODE5()              MODE6()              MODE7(DEBUGOUT3)     MODE8()              PU
+GPIO88  = MODE0(GPIO88)        MODE1(NALE)          MODE2(SFCLK)         MODE3(BSIB3DATA)     MODE4(U1CTS)         MODE5(SDA)           MODE6()              MODE7(DEBUGOUT4)     MODE8()              PD
+GPIO89  = MODE0(GPIO89)        MODE1(NCE0B)         MODE2(SFIO3)         MODE3(BSIB3CS1)      MODE4(U0CTS)         MODE5(SCL)           MODE6()              MODE7(DEBUGOUT5)     MODE8(WCDMA_EXT_FRAME_SYNC) PU
+GPIO90  = MODE0(GPIO90)        MODE1(WATCHDOG)      MODE2(GPS_SYNC)      MODE3(SRCLKENAI)     MODE4()              MODE5()              MODE6()              MODE7(CLK32K)        MODE8()              PD
+GPIO91  = MODE0(GPIO91)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO92  = MODE0(GPIO92)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO93  = MODE0(GPIO93)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO94  = MODE0(GPIO94)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO95  = MODE0(GPIO95)        MODE1()              MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              PU
+GPIO96  = MODE0(GPIO96)        MODE1(U0RXD)         MODE2(U0TXD)         MODE3(U2RXD)         MODE4(U2TXD)         MODE5()              MODE6()              MODE7()              MODE8()              --
+GPIO97  = MODE0(GPIO97)        MODE1(U0TXD)         MODE2(U0RXD)         MODE3(U2TXD)         MODE4(U2RXD)         MODE5()              MODE6()              MODE7()              MODE8()              --
+GPIO98  = MODE0(GPIO98)        MODE1(MCINS)         MODE2(WCDMA_EXT_FRAME_SYNC) MODE3(CLKM1)         MODE4(EINT0)         MODE5(CINT0)         MODE6()              MODE7()              MODE8()              --
+GPIO99  = MODE0(GPIO99)        MODE1()              MODE2(BSIB2CS0)      MODE3(CLK32K)        MODE4(LPA0)          MODE5(DAIRST)        MODE6(CLKM1)         MODE7(DEBUGOUT12)    MODE8(DEBUGOUT5)     --
+GPIO100  = MODE0(GPIO100)        MODE1()            MODE2()              MODE3()              MODE4()              MODE5()              MODE6()              MODE7()              MODE8()              --
+GPIO101  = MODE0(GPIO101)        MODE1()            MODE2()              MODE3()  			      MODE4()              MODE5()    		      MODE6()              MODE7()              MODE8()              --
+GPIO102  = MODE0(GPIO102)        MODE1()            MODE2()              MODE3()   			      MODE4()              MODE5()     			    MODE6()              MODE7()              MODE8()              --
+GPIO103  = MODE0(GPIO103)        MODE1()            MODE2()              MODE3(U2RXD)         MODE4(CLKM0)         MODE5(SDA)           MODE6()              MODE7()              MODE8()              --
+GPIO104  = MODE0(GPIO104)        MODE1()            MODE2()              MODE3(U2TXD)         MODE4(CLKM1)         MODE5(SCL)           MODE6()              MODE7()              MODE8()              --
+
+
+[GPO]
+
+[EINT]
+EINT_COUNT = 4
+EINT_DEBOUNCE_TIME_COUNT = 4
+
+[ADC]
+ADC_COUNT = 1
+
+[KEYPAD]
+KEY_ROW = 0
+KEY_COLUMN = 0
+
+
+
diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6290.fig b/mcu/custom/driver/drv/Drv_Tool/MT6290.fig
new file mode 100644
index 0000000..78f052e
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6290.fig
@@ -0,0 +1,50 @@
+[Chip Type]

+Chip = MT6290

+IOMUX_ModeNum = 6

+GPIO_COUNT = 64

+GPIO_Pull_Sel = 1

+PMIC_Config=1

+

+[EINT]

+EINT_COUNT = 16

+EINT_DEBOUNCE_TIME_COUNT = 255

+DEDICATED_EINT_COUNT = 4

+

+[IOMUX_MODE]

+SEL_NFI_0    		= MODE0(NFI)     		MODE1()         		 				MODE2(SRCLKEN_OUT)      		MODE3(EHPI_SLV)      MODE4(GPIO)         MODE5(DBG)     

+SEL_NFI_1   		= MODE0(NFI)     		MODE1()         		 				MODE2()              	 			MODE3(EHPI_SLV)      MODE4(GPO)          MODE5(DBG)         

+SEL_NFI_2   		= MODE0(NFI)     		MODE1()         		 				MODE2(PCM)     			   			MODE3(EHPI_SLV)      MODE4(GPIO)         MODE5(DBG)     

+SEL_NFI_3  			= MODE0(NFI)     		MODE1()             				MODE2(IDC)    			     		MODE3(EHPI_SLV)      MODE4(GPIO)         MODE5(DBG)     

+SEL_NFI_4    		= MODE0(NFI)     		MODE1()             				MODE2(AGPS_OUT)         		MODE3(EHPI_SLV)    	 MODE4(GPIO)         MODE5(DBG)     

+SEL_JTAG  			= MODE0(TDO)     		MODE1(2GDSP_SICE)   				MODE2(MD32)        	   			MODE3()         		 MODE4()             MODE5(DBG)              

+SEL_SPI0    		= MODE0(SPI)     		MODE1(STP0)         				MODE2()       				   		MODE3()              MODE4(GPIO)         MODE5(DBG)              

+SEL_SPI1  			= MODE0(SPI)     		MODE1(STP0)         				MODE2()     					  	 	MODE3(SRCLKEN_OUT)   MODE4(GPIO)         MODE5(DBG)         

+SEL_SUART0 		  = MODE0(SUART0)  		MODE1(EXT_FRAME_SYNC)  			MODE2()              				MODE3()        			 MODE4()             MODE5()             

+SEL_SDIO  			= MODE0(SDIO)    		MODE1(F32K_CLK_OUT)         MODE2()              				MODE3()       			 MODE4(GPIO)    		 MODE5(DBG)        

+SEL_MSDC0P_0  	= MODE0(MSDC0P)  		MODE1(STP1)         				MODE2(MAS_CCDDIF)           MODE3()       			 MODE4(GPIO)         MODE5(DBG)    

+SEL_MSDC0P_1  	= MODE0(MSDC0P)  		MODE1(STP1)         				MODE2(MAS_CCDDIF)           MODE3()        			 MODE4(GPIO)         MODE5(DBG)     

+SEL_MSDC0P_2  	= MODE0(MSDC0P)  		MODE1(STP1)         				MODE2(SLV_CCDDIF)           MODE3()      				 MODE4(GPIO)         MODE5(DBG)       

+SEL_MSDC1P      = MODE0(MSDC1P)     MODE1()         						MODE2(SLV_CCDDIF)           MODE3()      				 MODE4(GPIO)         MODE5(DBG)              

+SEL_PMIC_BSI    = MODE0(PMIC_BSI)   MODE1()         						MODE2()              				MODE3(SRCLKEN_OUT)   MODE4(GPIO)         MODE5(DBG)              

+SEL_RFIC1_BSI   = MODE0(RFIC1_BSI)  MODE1()         						MODE2() 										MODE3()         		 MODE4(GPIO)         MODE5(DBG)          

+SEL_MISC_BSI_0  = MODE0(MISC_BSI)   MODE1(MIPI)         				MODE2(USIM)              		MODE3()     				 MODE4(GPO/GPIO58)   MODE5(DBG)         

+SEL_MISC_BSI_1  = MODE0(MISC_BSI)   MODE1()         						MODE2()              				MODE3()     				 MODE4(GPIO)         MODE5(DBG)         

+SEL_I2C   			= MODE0(I2C)        MODE1()         						MODE2()              				MODE3()         		 MODE4(GPIO)         MODE5(DBG)             

+SEL_BPI_0 			= MODE0(BPI)        MODE1()         						MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)              

+SEL_BPI_1  			= MODE0(BPI)        MODE1()         						MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)            

+SEL_BPI_2  			= MODE0(BPI)        MODE1()         						MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)              

+SEL_BPI_3   		= MODE0(BPI)        MODE1()        							MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)              

+SEL_BPI_4  			= MODE0(BPI)        MODE1()         						MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)              

+SEL_BPI_5  			= MODE0(BPI)        MODE1()         						MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)              

+SEL_USIM1  			= MODE0(USIM0)      MODE1()         						MODE2()              				MODE3()         		 MODE4(GPO)          MODE5(DBG)              

+SEL_USIM2   		= MODE0(USIM1)      MODE1(F32K_CLK_OUT)         MODE2()              				MODE3()         		 MODE4(GPO)          MODE5(DBG)             

+SEL_GPIO_0_0  	= MODE0(LED)        MODE1(STP0_1)         			MODE2(CA_INTF)              MODE3(MII)         	 MODE4(GPIO)          MODE5(DBG)              

+SEL_GPIO_0_1 		= MODE0(LED)        MODE1(STP0)         				MODE2(CA_INTF)              MODE3(MII)         	 MODE4(GPIO)         MODE5(DBG)              

+SEL_GPIO_1   		= MODE0(LED)        MODE1(STP0)         				MODE2(CA_INTF)              MODE3(MII)         	 MODE4(GPIO)         MODE5(DBG)             

+SEL_GPIO_2_0   	= MODE0(LED)        MODE1(STP0)         				MODE2(CA_INTF)              MODE3(MII)         	 MODE4(GPIO)         MODE5(DBG)              

+SEL_GPIO_2_1  	= MODE0(LED)        MODE1(STP0)         				MODE2(CA_INTF)              MODE3(MII)         	 MODE4(GPIO)         MODE5(DBG)             

+SEL_GPIO_3  		= MODE0(LED)        MODE1(STP1)         				MODE2(CA_INTF)              MODE3(MII)         	 MODE4(GPIO)         MODE5(DBG)              

+SEL_GPIO_4   		= MODE0(IDC)        MODE1(STP1)         				MODE2(MAS_CCDDIF)           MODE3(MII)         	 MODE4(GPIO)         MODE5(DBG)              

+SEL_SDIO_INT  	= MODE0(SDIO_HOST_INTB)    MODE1()         			MODE2()              				MODE3()         		 MODE4(GPO)          MODE5(DBG)             

+SEL_DMCMDPHY   	= MODE0(GPO)        MODE1()         						MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)              

+

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6290m.fig b/mcu/custom/driver/drv/Drv_Tool/MT6290m.fig
new file mode 100644
index 0000000..7436a16
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6290m.fig
@@ -0,0 +1,51 @@
+[Chip Type]

+Chip = MT6290m

+IOMUX_ModeNum = 6

+GPIO_COUNT = 64

+GPIO_Pull_Sel = 1

+PMIC_Config=1

+

+[EINT]

+EINT_COUNT = 16

+EINT_DEBOUNCE_TIME_COUNT = 255

+DEDICATED_EINT_COUNT = 4

+

+[IOMUX_MODE]

+SEL_NFI_0    		= MODE0(NFI)     		MODE1()         		 				MODE2(SRCLKEN_OUT)      		MODE3(EHPI_SLV)      MODE4(GPIO)         MODE5(DBG)     

+SEL_NFI_1   		= MODE0(NFI)     		MODE1()         		 				MODE2()              	 			MODE3(EHPI_SLV)      MODE4(GPO)          MODE5(DBG)         

+SEL_NFI_2   		= MODE0(NFI)     		MODE1()         		 				MODE2(PCM)     			   			MODE3(EHPI_SLV)      MODE4(GPIO)         MODE5(DBG)     

+SEL_NFI_3  			= MODE0(NFI)     		MODE1()             				MODE2(IDC)    			     		MODE3(EHPI_SLV)      MODE4(GPIO)         MODE5(DBG)     

+SEL_NFI_4    		= MODE0(NFI)     		MODE1()             				MODE2(AGPS_OUT)         		MODE3(EHPI_SLV)    	 MODE4(GPIO)         MODE5(DBG)     

+SEL_JTAG  			= MODE0(TDO)     		MODE1(2GDSP_SICE)   				MODE2(MD32)        	   			MODE3()         		 MODE4()             MODE5(DBG)              

+SEL_SPI0    		= MODE0(SPI)     		MODE1(STP0)         				MODE2()       				   		MODE3()              MODE4(GPIO)         MODE5(DBG)              

+SEL_SPI1  			= MODE0(SPI)     		MODE1(STP0)         				MODE2()     					  	 	MODE3(SRCLKEN_OUT)   MODE4(GPIO)         MODE5(DBG)         

+SEL_SUART0 		  = MODE0(SUART0)  		MODE1(EXT_FRAME_SYNC)  			MODE2()              				MODE3()        			 MODE4()             MODE5()             

+SEL_SDIO  			= MODE0(SDIO)    		MODE1(F32K_CLK_OUT)         MODE2()              				MODE3()       			 MODE4(GPIO)    		 MODE5(DBG)        

+SEL_MSDC0P_0  	= MODE0(MSDC0P)  		MODE1(STP1)         				MODE2(MAS_CCDDIF)           MODE3()       			 MODE4(GPIO)         MODE5(DBG)    

+SEL_MSDC0P_1  	= MODE0(MSDC0P)  		MODE1(STP1)         				MODE2(MAS_CCDDIF)           MODE3()        			 MODE4(GPIO)         MODE5(DBG)     

+SEL_MSDC0P_2  	= MODE0(MSDC0P)  		MODE1(STP1)         				MODE2(SLV_CCDDIF)           MODE3()      				 MODE4(GPIO)         MODE5(DBG)       

+SEL_MSDC1P      = MODE0(MSDC1P)     MODE1()         						MODE2(SLV_CCDDIF)           MODE3()      				 MODE4(GPIO)         MODE5(DBG)              

+SEL_PMIC_BSI    = MODE0(PMIC_BSI)   MODE1()         						MODE2()              				MODE3(SRCLKEN_OUT)   MODE4(GPIO)         MODE5(DBG)              

+SEL_RFIC1_BSI   = MODE0(RFIC1_BSI)  MODE1()         						MODE2() 										MODE3()         		 MODE4(GPIO)         MODE5(DBG)          

+SEL_MISC_BSI_0  = MODE0(MISC_BSI)   MODE1(MIPI)         				MODE2(USIM)              		MODE3()     				 MODE4(GPO/GPIO58)   MODE5(DBG)         

+SEL_MISC_BSI_1  = MODE0(MISC_BSI)   MODE1()         						MODE2()              				MODE3()     				 MODE4(GPIO)         MODE5(DBG)         

+SEL_I2C   			= MODE0(I2C)        MODE1()         						MODE2()              				MODE3()         		 MODE4(GPIO)         MODE5(DBG)             

+SEL_BPI_0 			= MODE0(BPI)        MODE1()         						MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)              

+SEL_BPI_1  			= MODE0(BPI)        MODE1()         						MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)            

+SEL_BPI_2  			= MODE0(BPI)        MODE1()         						MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)              

+SEL_BPI_3   		= MODE0(BPI)        MODE1()        							MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)              

+SEL_BPI_4  			= MODE0(BPI)        MODE1()         						MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)              

+SEL_BPI_5  			= MODE0(BPI)        MODE1()         						MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)              

+SEL_USIM1  			= MODE0(USIM0)      MODE1()         						MODE2()              				MODE3()         		 MODE4(GPO)          MODE5(DBG)              

+SEL_USIM2   		= MODE0(USIM1)      MODE1(F32K_CLK_OUT)         MODE2()              				MODE3()         		 MODE4(GPO)          MODE5(DBG)             

+SEL_GPIO_0_0  	= MODE0(LED)        MODE1(STP0_1)         			MODE2(CA_INTF)              MODE3(MII)         	 MODE4(GPIO)          MODE5(DBG)              

+SEL_GPIO_0_1 		= MODE0(LED)        MODE1(STP0)         				MODE2(CA_INTF)              MODE3(MII)         	 MODE4(GPIO)         MODE5(DBG)              

+SEL_GPIO_1   		= MODE0(LED)        MODE1(STP0)         				MODE2(CA_INTF)              MODE3(MII)         	 MODE4(GPIO)         MODE5(DBG)             

+SEL_GPIO_2_0   	= MODE0(LED)        MODE1(STP0)         				MODE2(CA_INTF)              MODE3(MII)         	 MODE4(GPIO)         MODE5(DBG)              

+SEL_GPIO_2_1  	= MODE0(LED)        MODE1(STP0)         				MODE2(CA_INTF)              MODE3(MII)         	 MODE4(GPIO)         MODE5(DBG)             

+SEL_GPIO_3  		= MODE0(LED)        MODE1(STP1)         				MODE2(CA_INTF)              MODE3(MII)         	 MODE4(GPIO)         MODE5(DBG)              

+SEL_GPIO_4   		= MODE0(IDC)        MODE1(STP1)         				MODE2(MAS_CCDDIF)           MODE3(MII)         	 MODE4(GPIO)         MODE5(DBG)              

+SEL_SDIO_INT  	= MODE0(SDIO_HOST_INTB)    MODE1()         			MODE2()              				MODE3()         		 MODE4(GPO)          MODE5(DBG)             

+SEL_DMCMDPHY   	= MODE0(GPO)        MODE1()         						MODE2()              				MODE3()         		 MODE4()             MODE5(DBG)              

+

+

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6516.fig b/mcu/custom/driver/drv/Drv_Tool/MT6516.fig
new file mode 100644
index 0000000..dde3394
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6516.fig
@@ -0,0 +1,22 @@
+[Chip Type]

+Chip = MT6516

+GPIO_Pull_Sel=1

+

+[GPIO]

+GPIO0 = MODE0(GPIO0)          MODE1(BPI_BUS6)         MODE2()        MODE3()          PUPD

+GPIO1 = MODE0(GPIO1)          MODE1(BPI_BUS7)         MODE2()        MODE3()          PUPD

+GPIO2 = MODE0(GPIO2)          MODE1(BPI_BUS8)         MODE2()        MODE3()          PUPD

+GPIO3 = MODE0(GPIO3)          MODE1(BPI_BUS9)         MODE2()        MODE3()          PUPD

+

+[GPO]

+

+[EINT]

+EINT_COUNT=24

+EINT_DEBOUNE_TIME_COUNT=24

+

+[ADC]

+ADC_COUNT=7

+

+[KEYPAD]

+KEY_ROW=0

+KEY_COLUMN=0

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6573.fig b/mcu/custom/driver/drv/Drv_Tool/MT6573.fig
new file mode 100644
index 0000000..0420a12
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6573.fig
@@ -0,0 +1,249 @@
+[Chip Type]

+Chip = MT6573

+GPIO_Pull_Sel = 1

+PMIC_Config = 1

+GPIO_ModeNum = 8

+

+[GPIO]

+GPIO0       = MODE0(GPIO0)      MODE1(EINT5)            MODE2(I2S0_CK)      MODE3(CLKM5)        MODE4(PWM4)         MODE5()             MODE6(dbg1_bus[11])         MODE7()         PU

+GPIO1       = MODE0(GPIO1)      MODE1(EINT6)            MODE2(I2S0_WS)      MODE3(CLKM3)        MODE4(PWM5)         MODE5()             MODE6(dbg1_bus[12])         MODE7()         PU

+GPIO2       = MODE0(GPIO2)      MODE1(EINT7)            MODE2(I2S0_DAT)     MODE3(CLKM4)        MODE4(PWM6)         MODE5(usb_drvvbus)  MODE6(dbg1_bus[13])         MODE7()         PU

+GPIO3       = MODE0(GPIO3)      MODE1(URXD1)            MODE2(EINT8)        MODE3(IRDA_RXD)     MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO4       = MODE0(GPIO4)      MODE1(UTXD1)            MODE2(EINT9)        MODE3(IRDA_TXD)     MODE4()             MODE5()             MODE6()                     MODE7()         PUPD

+GPIO5       = MODE0(GPIO5)      MODE1(URXD2)            MODE2(EINT12)       MODE3()             MODE4()             MODE5()             MODE6(dbg1_bus[14])         MODE7()         PU

+GPIO6       = MODE0(GPIO6)      MODE1(UTXD2)            MODE2(EINT13)       MODE3()             MODE4()             MODE5()             MODE6(dbg1_bus[15])         MODE7()         PU

+GPIO7       = MODE0(GPIO7)      MODE1(PWM3)             MODE2(CLKM2)        MODE3(I2S0_DAT)     MODE4(EINT10)       MODE5()             MODE6()                     MODE7()         PUPD

+GPIO8       = MODE0(GPIO8)      MODE1(PWM2)             MODE2(CLKM1)        MODE3(I2S0_WS)      MODE4(EINT9)        MODE5()             MODE6()                     MODE7()         PUPD

+GPIO9       = MODE0(GPIO9)      MODE1(PWM1)             MODE2(CLKM0)        MODE3(I2S0_CK)      MODE4(EINT8)        MODE5()             MODE6()                     MODE7()         PUPD

+GPIO10      = MODE0(GPIO10)     MODE1(VM0)              MODE2(URTS2)        MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO11      = MODE0(GPIO11)     MODE1(VM1)              MODE2(UCTS2)        MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO12      = MODE0(GPIO12)     MODE1(DUAL_BPI_BUS0)    MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO13      = MODE0(GPIO13)     MODE1(DUAL_BPI_BUS1)    MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO14      = MODE0(GPIO14)     MODE1(DUAL_BPI_BUS2)    MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO15      = MODE0(GPIO15)     MODE1(DUAL_BPI_BUS3)    MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO16      = MODE0(GPIO16)     MODE1(DUAL_BPI_BUS4)    MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO17      = MODE0(GPIO17)     MODE1(DUAL_BPI_BUS5)    MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO18      = MODE0(GPIO18)     MODE1(DUAL_BPI_BUS6)    MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO19      = MODE0(GPIO19)     MODE1(DUAL_BPI_BUS7)    MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO20      = MODE0(GPIO20)     MODE1(DUAL_BPI_BUS9)    MODE2()             MODE3(DSP_JTMS)     MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO21      = MODE0(GPIO21)     MODE1(DUAL_BPI_BUS10)   MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO22      = MODE0(GPIO22)     MODE1(DUAL_BPI_BUS11)   MODE2(URTS1)        MODE3(DSP_JTDI)     MODE4(SDA1)         MODE5()             MODE6()                     MODE7()         PD

+GPIO23      = MODE0(GPIO23)     MODE1(DUAL_BPI_BUS12)   MODE2(UCTS1)        MODE3()             MODE4(SCL1)         MODE5()             MODE6()                     MODE7()         PD

+GPIO24      = MODE0(GPIO24)     MODE1(DUAL_BPI_BUS13)   MODE2(URXD1)        MODE3(URXD4)        MODE4(SDA0)         MODE5()             MODE6()                     MODE7()         PD

+GPIO25      = MODE0(GPIO25)     MODE1(DUAL_BPI_BUS14)   MODE2(UTXD1)        MODE3(UTXD4)        MODE4(SCL0)         MODE5()             MODE6()                     MODE7()         PD

+GPIO26      = MODE0(GPIO26)     MODE1(DUAL_BPI_BUS8)    MODE2(gps_sync)     MODE3(DSP_JTDO)     MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO27      = MODE0(GPIO27)     MODE1(BSI1_CLK)         MODE2()             MODE3()             MODE4(URTS2)        MODE5()             MODE6()                     MODE7()         PD

+GPIO28      = MODE0(GPIO28)     MODE1(BSI1_DATA)        MODE2()             MODE3()             MODE4(UCTS2)        MODE5()             MODE6()                     MODE7()         PD

+GPIO29      = MODE0(GPIO29)     MODE1(BSI1_DATA1)       MODE2(BSI1_CS1)     MODE3()             MODE4(URTS3)        MODE5(DSP_JTRST_B)  MODE6()                     MODE7()         PD

+GPIO30      = MODE0(GPIO30)     MODE1(BSI1_CS0)         MODE2()             MODE3()             MODE4(UCTS3)        MODE5(DSP_EMU_B)    MODE6()                     MODE7()         PD

+GPIO31      = MODE0(GPIO31)     MODE1(BSI0_CLK)         MODE2(URXD2)        MODE3(EINT15)       MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO32      = MODE0(GPIO32)     MODE1(BSI0_DATA)        MODE2(UTXD2)        MODE3(EINT12)       MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO33      = MODE0(GPIO33)     MODE1(BSI0_CS1)         MODE2(URXD3)        MODE3(UCTS2)        MODE4(EINT13)       MODE5(DSP_JTCK)     MODE6()                     MODE7()         PD

+GPIO34      = MODE0(GPIO34)     MODE1(BSI0_CS0)         MODE2(UTXD3)        MODE3(URTS2)        MODE4(EINT14)       MODE5()             MODE6()                     MODE7()         PD

+GPIO35      = MODE0(GPIO35)     MODE1(KCOL7)            MODE2(SPI_CS_N)     MODE3(MC3CM0)       MODE4(EINT10)       MODE5(I2S1_WS)      MODE6(dbg2_bus[0])          MODE7()         PU

+GPIO36      = MODE0(GPIO36)     MODE1(KCOL6)            MODE2(SPI_SCK)      MODE3(MC3CK)        MODE4(EINT11)       MODE5(I2S1_DAT)     MODE6(dbg2_bus[1])          MODE7()         PU

+GPIO37      = MODE0(GPIO37)     MODE1(KCOL5)            MODE2()             MODE3(MC3DA1)       MODE4(EINT12)       MODE5(I2S1_CK)      MODE6(dbg2_bus[2])          MODE7()         PU

+GPIO38      = MODE0(GPIO38)     MODE1(KCOL4)            MODE2(SPI_MOSI)     MODE3(MC3DA2)       MODE4(EINT13)       MODE5(URXD3)        MODE6(dbg2_bus[3])          MODE7()         PU

+GPIO39      = MODE0(GPIO39)     MODE1(KCOL3)            MODE2(SPI_MISO)     MODE3(MC3DA3)       MODE4(EINT14)       MODE5(UTXD3)        MODE6(dbg2_bus[4])          MODE7()         PU

+GPIO40      = MODE0(GPIO40)     MODE1(KCOL2)            MODE2()             MODE3(MC3DA0)       MODE4(PWM4)         MODE5(URXD1)        MODE6(dbg2_bus[5])          MODE7()         PU

+GPIO41      = MODE0(GPIO41)     MODE1(KCOL1)            MODE2()             MODE3()             MODE4(PWM5)         MODE5(UTXD1)        MODE6(dbg2_bus[6])          MODE7()         PU

+GPIO42      = MODE0(GPIO42)     MODE1(KCOL0)            MODE2()             MODE3()             MODE4()             MODE5()             MODE6(dbg2_bus[7])          MODE7()         PU

+GPIO43      = MODE0(GPIO43)     MODE1(KROW7)            MODE2(MC1CM0)       MODE3(MC2CM0)       MODE4(EINT15)       MODE5(URXD4)        MODE6(dbg2_bus[8])          MODE7()         PD

+GPIO44      = MODE0(GPIO44)     MODE1(KROW6)            MODE2(MC1CK)        MODE3(MC2DA0)       MODE4(EINT12)       MODE5(UTXD4)        MODE6(dbg2_bus[9])          MODE7()         PD

+GPIO45      = MODE0(GPIO45)     MODE1(KROW5)            MODE2(MC1DA1)       MODE3(MC2DA1)       MODE4(EINT13)       MODE5(PWM6)         MODE6(dbg2_bus[10])         MODE7()         PD

+GPIO46      = MODE0(GPIO46)     MODE1(KROW4)            MODE2(MC1DA2)       MODE3(MC2DA2)       MODE4(EINT14)       MODE5()             MODE6(dbg2_bus[11])         MODE7()         PD

+GPIO47      = MODE0(GPIO47)     MODE1(KROW3)            MODE2(MC1DA3)       MODE3(MC2DA3)       MODE4(EINT15)       MODE5()             MODE6(dbg2_bus[12])         MODE7()         PD

+GPIO48      = MODE0(GPIO48)     MODE1(KROW2)            MODE2(MC1DA0)       MODE3(MC2CK)        MODE4(IRDA_PDN)     MODE5()             MODE6(dbg2_bus[13])         MODE7()         PD

+GPIO49      = MODE0(GPIO49)     MODE1(KROW1)            MODE2()             MODE3()             MODE4(IRDA_RXD)     MODE5()             MODE6(dbg2_bus[14])         MODE7()         PD

+GPIO50      = MODE0(GPIO50)     MODE1(KROW0)            MODE2()             MODE3()             MODE4(IRDA_TXD)     MODE5()             MODE6(dbg2_bus[15])         MODE7()         PD

+GPIO51      = MODE0(GPIO51)     MODE1(MC0INS)           MODE2(PWM6)         MODE3(CLKM1)        MODE4(EINT11)       MODE5(IRDA_PDN)     MODE6()                     MODE7()         PU

+GPIO52      = MODE0(GPIO52)     MODE1(MC1INS)           MODE2(PWM5)         MODE3(CLKM2)        MODE4(EINT12)       MODE5()             MODE6()                     MODE7()         PU

+GPIO53      = MODE0(GPIO53)     MODE1(MC0CM0)           MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO54      = MODE0(GPIO54)     MODE1(MC0DA0)           MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO55      = MODE0(GPIO55)     MODE1(MC0DA1)           MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO56      = MODE0(GPIO56)     MODE1(MC0DA2)           MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO57      = MODE0(GPIO57)     MODE1(MC0DA3)           MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO58      = MODE0(GPIO58)     MODE1(MC0CK)            MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO59      = MODE0(GPIO59)     MODE1(MC0CK_FB)         MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO60      = MODE0(GPIO60)     MODE1(MC0RST)           MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PUPD

+GPIO61      = MODE0(GPIO61)     MODE1(MC0WP)            MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO62      = MODE0(GPIO62)     MODE1(MC1CM0)           MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO63      = MODE0(GPIO63)     MODE1(MC1DA0)           MODE2(MC0DA4)       MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO64      = MODE0(GPIO64)     MODE1(MC1DA1)           MODE2(MC0DA5)       MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO65      = MODE0(GPIO65)     MODE1(MC1DA2)           MODE2(MC0DA6)       MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO66      = MODE0(GPIO66)     MODE1(MC1DA3)           MODE2(MC0DA7)       MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO67      = MODE0(GPIO67)     MODE1(MC1CK)            MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO68      = MODE0(GPIO68)     MODE1(MC1CK_FB)         MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO69      = MODE0(GPIO69)     MODE1(MC1WP)            MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO70      = MODE0(GPIO70)     MODE1(MC2CM0)           MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO71      = MODE0(GPIO71)     MODE1(MC2DA0)           MODE2(MC0DA4)       MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO72      = MODE0(GPIO72)     MODE1(MC2DA1)           MODE2(MC0DA5)       MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO73      = MODE0(GPIO73)     MODE1(MC2DA2)           MODE2(MC0DA6)       MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO74      = MODE0(GPIO74)     MODE1(MC2DA3)           MODE2(MC0DA7)       MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO75      = MODE0(GPIO75)     MODE1(MC2CK)            MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO76      = MODE0(GPIO76)     MODE1(CMMCLK)           MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO77      = MODE0(GPIO77)     MODE1(CMPCLK)           MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO78      = MODE0(GPIO78)     MODE1(CMRST)            MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO79      = MODE0(GPIO79)     MODE1(CMPDN)            MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO80      = MODE0(GPIO80)     MODE1(CMVREF)           MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO81      = MODE0(GPIO81)     MODE1(CMHREF)           MODE2()             MODE3(I2S1_WS)      MODE4(DSP_GPO2)     MODE5(TBTXFS)       MODE6()                     MODE7()         PD

+GPIO82      = MODE0(GPIO82)     MODE1(CMDAT9)           MODE2()             MODE3(I2S1_DAT)     MODE4(DSP_GPO1)     MODE5(TBRXEN)       MODE6()                     MODE7()         PD

+GPIO83      = MODE0(GPIO83)     MODE1(CMDAT8)           MODE2()             MODE3(I2S1_CK)      MODE4(DSP_GPO0)     MODE5(TBRXFS)       MODE6()                     MODE7()         PD

+GPIO84      = MODE0(GPIO84)     MODE1(CMDAT7)           MODE2(MC2CM0)       MODE3(SPI_CS_N)     MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO85      = MODE0(GPIO85)     MODE1(CMDAT6)           MODE2(MC2DA0)       MODE3(SPI_SCK)      MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO86      = MODE0(GPIO86)     MODE1(CMDAT5)           MODE2(MC2DA1)       MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO87      = MODE0(GPIO87)     MODE1(CMDAT4)           MODE2(MC2DA2)       MODE3(SPI_MOSI)     MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO88      = MODE0(GPIO88)     MODE1(CMDAT3)           MODE2(MC2DA3)       MODE3(SPI_MISO)     MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO89      = MODE0(GPIO89)     MODE1(CMDAT2)           MODE2(MC2CK)        MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO90      = MODE0(GPIO90)     MODE1(CMDAT1)           MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO91      = MODE0(GPIO91)     MODE1(CMDAT0)           MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO92      = MODE0(GPIO92)     MODE1(SCL1)             MODE2(EINT10)       MODE3(URXD4)        MODE4()             MODE5()             MODE6(dbg3_bus[0])          MODE7()         PU

+GPIO93      = MODE0(GPIO93)     MODE1(SDA1)             MODE2(EINT11)       MODE3(UTXD4)        MODE4()             MODE5()             MODE6(dbg3_bus[1])          MODE7()         PU

+GPIO94      = MODE0(GPIO94)     MODE1(PWM4)             MODE2()             MODE3(EINT7)        MODE4()             MODE5(CLKM3)        MODE6(dbg3_bus[2])          MODE7()         PD

+GPIO95      = MODE0(GPIO95)     MODE1(CMFLASH)          MODE2(PWM4)         MODE3(EINT8)        MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO96      = MODE0(GPIO96)     MODE1(CAM_MECHSH0)      MODE2(PWM5)         MODE3(EINT9)        MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO97      = MODE0(GPIO97)     MODE1(CAM_MECHSH1)      MODE2(PWM6)         MODE3(EINT10)       MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO98      = MODE0(GPIO98)     MODE1(CAM_STROBE)       MODE2()             MODE3(EINT11)       MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO99      = MODE0(GPIO99)     MODE1(PWM1)             MODE2(CLKM0)        MODE3(EINT5)        MODE4()             MODE5()             MODE6(dbg3_bus[3])          MODE7()         PD

+GPIO100     = MODE0(GPIO100)    MODE1(PWM2)             MODE2(CLKM1)        MODE3(EINT6)        MODE4()             MODE5()             MODE6(dbg3_bus[4])          MODE7()         PD

+GPIO101     = MODE0(GPIO101)    MODE1(PWM3)             MODE2(usb_drvvbus)  MODE3(EINT12)       MODE4()             MODE5(CLKM3)        MODE6(dbg3_bus[5])          MODE7()         PD

+GPIO102     = MODE0(GPIO102)    MODE1(LSCK)             MODE2(I2S1_CK)      MODE3()             MODE4(TDMA_CK)      MODE5()             MODE6()                     MODE7()         PD

+GPIO103     = MODE0(GPIO103)    MODE1(LSA0)             MODE2(I2S1_WS)      MODE3(SCL0)         MODE4(TDMA_D1)      MODE5(TDTIRQ)       MODE6()                     MODE7()         PD

+GPIO104     = MODE0(GPIO104)    MODE1(LSDA)             MODE2(I2S1_DAT)     MODE3(SDA0)         MODE4(TDMA_D0)      MODE5(TCTIRQ2)      MODE6()                     MODE7()         PD

+GPIO105     = MODE0(GPIO105)    MODE1(LSCE0B)           MODE2()             MODE3(CLKM3)        MODE4(TDMA_FS)      MODE5(TCTIRQ1)      MODE6()                     MODE7()         PU

+GPIO106     = MODE0(GPIO106)    MODE1(LSCE1B)           MODE2(EINT13)       MODE3(CLKM4)        MODE4(LPCE2B)       MODE5(TEVTVAL)      MODE6()                     MODE7()         PU

+GPIO107     = MODE0(GPIO107)    MODE1(DPICK)            MODE2(IRDA_RXD)     MODE3(CLKM1)        MODE4(SCL0)         MODE5(EINT10)       MODE6()                     MODE7()         PD

+GPIO108     = MODE0(GPIO108)    MODE1(DPIDE)            MODE2(IRDA_TXD)     MODE3(CLKM2)        MODE4(SDA0)         MODE5(EINT11)       MODE6()                     MODE7()         PD

+GPIO109     = MODE0(GPIO109)    MODE1(DPIVSYNC)         MODE2(MC2INS)       MODE3(CLKM3)        MODE4(SCL1)         MODE5(EINT12)       MODE6()                     MODE7()         PD

+GPIO110     = MODE0(GPIO110)    MODE1(DPIHSYNC)         MODE2(MC3INS)       MODE3(IRDA_PDN)     MODE4(SDA1)         MODE5(EINT13)       MODE6()                     MODE7()         PD

+GPIO111     = MODE0(GPIO111)    MODE1(DPIR_PO[7])       MODE2(MC2CM0)       MODE3(SPI_CS_N)     MODE4(I2S0_CK)      MODE5(EINT0)        MODE6(dbg4_bus[0])          MODE7()         PD

+GPIO112     = MODE0(GPIO112)    MODE1(DPIR_PO[6])       MODE2(MC2DA0)       MODE3(SPI_SCK)      MODE4(I2S0_WS)      MODE5(EINT1)        MODE6(dbg4_bus[1])          MODE7()         PD

+GPIO113     = MODE0(GPIO113)    MODE1(DPIR_PO[5])       MODE2(MC3CM0)       MODE3(URXD1)        MODE4(I2S0_DAT)     MODE5(EINT2)        MODE6(dbg4_bus[2])          MODE7()         PD

+GPIO114     = MODE0(GPIO114)    MODE1(DPIR_PO[4])       MODE2(MC3DA0)       MODE3(UTXD1)        MODE4(I2S1_WS)      MODE5(EINT3)        MODE6(dbg4_bus[3])          MODE7()         PD

+GPIO115     = MODE0(GPIO115)    MODE1(DPIR_PO[3])       MODE2(CLKM0)        MODE3(URTS1)        MODE4(I2S1_DAT)     MODE5(EINT4)        MODE6(dbg4_bus[4])          MODE7()         PD

+GPIO116     = MODE0(GPIO116)    MODE1(DPIR_PO[2])       MODE2(CLKM5)        MODE3(UCTS1)        MODE4(I2S1_CK)      MODE5(EINT5)        MODE6(dbg4_bus[5])          MODE7()         PD

+GPIO117     = MODE0(GPIO117)    MODE1(DPIR_PO[1])       MODE2(CLKM2)        MODE3(MC2INS)       MODE4(PWM4)         MODE5(EINT6)        MODE6(dbg4_bus[6])          MODE7()         PD

+GPIO118     = MODE0(GPIO118)    MODE1(DPIR_PO[0])       MODE2()             MODE3(MC3INS)       MODE4(PWM5)         MODE5(EINT7)        MODE6(dbg4_bus[7])          MODE7()         PD

+GPIO119     = MODE0(GPIO119)    MODE1(DPIG_PO[7])       MODE2(MC2DA1)       MODE3()             MODE4()             MODE5(EINT8)        MODE6(dbg4_bus[8])          MODE7()         PD

+GPIO120     = MODE0(GPIO120)    MODE1(DPIG_PO[6])       MODE2(MC2DA2)       MODE3(SPI_MOSI)     MODE4(I2S1_WS)      MODE5(EINT9)        MODE6(dbg4_bus[9])          MODE7()         PD

+GPIO121     = MODE0(GPIO121)    MODE1(DPIG_PO[5])       MODE2(MC3DA1)       MODE3(URXD2)        MODE4(IRDA_RXD)     MODE5(EINT10)       MODE6(dbg4_bus[10])         MODE7()         PD

+GPIO122     = MODE0(GPIO122)    MODE1(DPIG_PO[4])       MODE2(MC3DA2)       MODE3(UTXD2)        MODE4(IRDA_TXD)     MODE5(EINT11)       MODE6(dbg4_bus[11])         MODE7()         PD

+GPIO123     = MODE0(GPIO123)    MODE1(DPIG_PO[3])       MODE2(MC3DA3)       MODE3(URTS2)        MODE4(PWM3)         MODE5(EINT12)       MODE6(dbg4_bus[12])         MODE7()         PD

+GPIO124     = MODE0(GPIO124)    MODE1(DPIG_PO[2])       MODE2(MC3CK)        MODE3(UCTS2)        MODE4(PWM4)         MODE5(EINT13)       MODE6(dbg4_bus[13])         MODE7()         PD

+GPIO125     = MODE0(GPIO125)    MODE1(DPIG_PO[1])       MODE2()             MODE3()             MODE4(PWM6)         MODE5(EINT14)       MODE6(dbg4_bus[14])         MODE7()         PD

+GPIO126     = MODE0(GPIO126)    MODE1(DPIG_PO[0])       MODE2()             MODE3()             MODE4()             MODE5(EINT15)       MODE6(dbg4_bus[15])         MODE7()         PD

+GPIO127     = MODE0(GPIO127)    MODE1(DPIB_PO[7])       MODE2(MC2DA3)       MODE3(SPI_MISO)     MODE4(I2S1_DAT)     MODE5(EINT12)       MODE6(dbg4_bus[16])         MODE7()         PD

+GPIO128     = MODE0(GPIO128)    MODE1(DPIB_PO[6])       MODE2(MC2CK)        MODE3(URXD3)        MODE4(I2S1_CK)      MODE5(EINT13)       MODE6(dbg4_bus[17])         MODE7()         PD

+GPIO129     = MODE0(GPIO129)    MODE1(DPIB_PO[5])       MODE2()             MODE3(UTXD3)        MODE4(URXD4)        MODE5(EINT14)       MODE6(dbg4_bus[18])         MODE7()         PD

+GPIO130     = MODE0(GPIO130)    MODE1(DPIB_PO[4])       MODE2()             MODE3(URTS3)        MODE4(UTXD4)        MODE5(EINT15)       MODE6(dbg4_bus[19])         MODE7()         PD

+GPIO131     = MODE0(GPIO131)    MODE1(DPIB_PO[3])       MODE2()             MODE3(UCTS3)        MODE4(URTS4)        MODE5(IRDA_PDN)     MODE6(dbg4_bus[20])         MODE7()         PD

+GPIO132     = MODE0(GPIO132)    MODE1(DPIB_PO[2])       MODE2()             MODE3()             MODE4(UCTS4)        MODE5(PWM1)         MODE6(dbg4_bus[21])         MODE7()         PD

+GPIO133     = MODE0(GPIO133)    MODE1(DPIB_PO[1])       MODE2()             MODE3()             MODE4()             MODE5(PWM2)         MODE6(dbg4_bus[22])         MODE7()         PD

+GPIO134     = MODE0(GPIO134)    MODE1(DPIB_PO[0])       MODE2()             MODE3()             MODE4()             MODE5()             MODE6(dbg4_bus[23])         MODE7()         PD

+GPIO135     = MODE0(GPIO135)    MODE1(LPCE1B)           MODE2(NCE1B)        MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO136     = MODE0(GPIO136)    MODE1(LPCE0B)           MODE2(DPIDE)        MODE3()             MODE4(MC3CM0)       MODE5(SPI_CS_N)     MODE6()                     MODE7()         PU

+GPIO137     = MODE0(GPIO137)    MODE1(LPTE)             MODE2(DPICK)        MODE3(IRDA_RXD)     MODE4(MC3DA0)       MODE5(SPI_SCK)      MODE6()                     MODE7()         PD

+GPIO138     = MODE0(GPIO138)    MODE1(LRSTB)            MODE2()             MODE3(IRDA_TXD)     MODE4(MC3DA1)       MODE5()             MODE6()                     MODE7()         PUPD

+GPIO139     = MODE0(GPIO139)    MODE1(LRDB)             MODE2(DPIHSYNC)     MODE3()             MODE4(MC3DA2)       MODE5(SPI_MOSI)     MODE6()                     MODE7()         PUPD

+GPIO140     = MODE0(GPIO140)    MODE1(LPA0)             MODE2()             MODE3()             MODE4(MC3DA3)       MODE5(SPI_MISO)     MODE6()                     MODE7()         PUPD

+GPIO141     = MODE0(GPIO141)    MODE1(LWRB)             MODE2(DPIVSYNC)     MODE3()             MODE4(MC3CK)        MODE5(EINT14)       MODE6()                     MODE7()         PUPD

+GPIO142     = MODE0(GPIO142)    MODE1(I2S1_CK)          MODE2(SPI_CS_N)     MODE3(MC2CK)        MODE4(IRDA_RXD)     MODE5(EINT14)       MODE6()                     MODE7()         PUPD

+GPIO143     = MODE0(GPIO143)    MODE1(I2S1_WS)          MODE2(SPI_SCK)      MODE3(MC2DA3)       MODE4(IRDA_TXD)     MODE5(EINT15)       MODE6()                     MODE7()         PUPD

+GPIO144     = MODE0(GPIO144)    MODE1(I2S1_DAT)         MODE2()             MODE3(MC2DA2)       MODE4(URTS2)        MODE5(EINT12)       MODE6()                     MODE7()         PUPD

+GPIO145     = MODE0(GPIO145)    MODE1(I2S0_CK)          MODE2(SPI_MOSI)     MODE3(MC2DA1)       MODE4(UCTS2)        MODE5(EINT13)       MODE6()                     MODE7()         PUPD

+GPIO146     = MODE0(GPIO146)    MODE1(I2S0_WS)          MODE2(SPI_MISO)     MODE3(MC2DA0)       MODE4(URTS3)        MODE5(EINT14)       MODE6()                     MODE7()         PUPD

+GPIO147     = MODE0(GPIO147)    MODE1(I2S0_DAT)         MODE2(IRDA_PDN)     MODE3(MC2CM0)       MODE4(UCTS3)        MODE5(EINT15)       MODE6()                     MODE7()         PUPD

+GPIO148     = MODE0(GPIO148)    MODE1(MC3CM0)           MODE2(I2S0_DAT)     MODE3()             MODE4()             MODE5(EINT13)       MODE6()                     MODE7()         PUPD

+GPIO149     = MODE0(GPIO149)    MODE1(MC3DA0)           MODE2(PWM4)         MODE3(DAIRST)       MODE4()             MODE5(EINT12)       MODE6()                     MODE7()         PUPD

+GPIO150     = MODE0(GPIO150)    MODE1(MC3DA1)           MODE2(PWM5)         MODE3(DAISYNC)      MODE4()             MODE5(EINT11)       MODE6()                     MODE7()         PUPD

+GPIO151     = MODE0(GPIO151)    MODE1(MC3DA2)           MODE2(PWM6)         MODE3(DAIPCMIN)     MODE4(CLKM3)        MODE5(EINT10)       MODE6()                     MODE7()         PUPD

+GPIO152     = MODE0(GPIO152)    MODE1(MC3DA3)           MODE2(I2S0_CK)      MODE3(DAIPCMOUT)    MODE4(CLKM2)        MODE5(EINT9)        MODE6()                     MODE7()         PUPD

+GPIO153     = MODE0(GPIO153)    MODE1(MC3CK)            MODE2(I2S0_WS)      MODE3(DAICLK)       MODE4(CLKM1)        MODE5(EINT8)        MODE6()                     MODE7()         PUPD

+GPIO154     = MODE0(GPIO154)    MODE1(NLD15)            MODE2(MC3CM0)       MODE3(SPI_CS_N)     MODE4(CLKM0)        MODE5(EINT15)       MODE6()                     MODE7()         PD

+GPIO155     = MODE0(GPIO155)    MODE1(NLD14)            MODE2(MC3DA0)       MODE3(SPI_SCK)      MODE4(CLKM1)        MODE5(EINT14)       MODE6()                     MODE7()         PD

+GPIO156     = MODE0(GPIO156)    MODE1(NLD13)            MODE2(MC3DA1)       MODE3()             MODE4(CLKM2)        MODE5(EINT13)       MODE6()                     MODE7()         PD

+GPIO157     = MODE0(GPIO157)    MODE1(NLD12)            MODE2(MC3DA2)       MODE3(SPI_MOSI)     MODE4(CLKM5)        MODE5(EINT12)       MODE6()                     MODE7()         PD

+GPIO158     = MODE0(GPIO158)    MODE1(NLD11)            MODE2(MC3DA3)       MODE3(SPI_MISO)     MODE4(PWM4)         MODE5(EINT15)       MODE6()                     MODE7()         PD

+GPIO159     = MODE0(GPIO159)    MODE1(NLD10)            MODE2(MC3CK)        MODE3()             MODE4(PWM5)         MODE5(EINT14)       MODE6()                     MODE7()         PD

+GPIO160     = MODE0(GPIO160)    MODE1(NLD9)             MODE2()             MODE3()             MODE4(PWM6)         MODE5(EINT13)       MODE6()                     MODE7()         PD

+GPIO161     = MODE0(GPIO161)    MODE1(NLD8)             MODE2()             MODE3()             MODE4()             MODE5(EINT12)       MODE6()                     MODE7()         PD

+GPIO162     = MODE0(GPIO162)    MODE1(NLD7)             MODE2()             MODE3(I2S0_CK)      MODE4()             MODE5(EINT11)       MODE6()                     MODE7()         PD

+GPIO163     = MODE0(GPIO163)    MODE1(NLD6)             MODE2()             MODE3(I2S0_WS)      MODE4()             MODE5(EINT10)       MODE6()                     MODE7()         PD

+GPIO164     = MODE0(GPIO164)    MODE1(NLD5)             MODE2()             MODE3(I2S0_DAT)     MODE4()             MODE5(EINT9)        MODE6()                     MODE7()         PD

+GPIO165     = MODE0(GPIO165)    MODE1(NLD4)             MODE2()             MODE3()             MODE4()             MODE5(EINT8)        MODE6()                     MODE7()         PD

+GPIO166     = MODE0(GPIO166)    MODE1(NLD3)             MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO167     = MODE0(GPIO167)    MODE1(NLD2)             MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO168     = MODE0(GPIO168)    MODE1(NLD1)             MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO169     = MODE0(GPIO169)    MODE1(NLD0)             MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO170     = MODE0(GPIO170)    MODE1(NRNB)             MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO171     = MODE0(GPIO171)    MODE1(NCLE)             MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PUPD

+GPIO172     = MODE0(GPIO172)    MODE1(NALE)             MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PUPD

+GPIO173     = MODE0(GPIO173)    MODE1(NWEB)             MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PUPD

+GPIO174     = MODE0(GPIO174)    MODE1(NREB)             MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PUPD

+GPIO175     = MODE0(GPIO175)    MODE1(NCE0B)            MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PUPD

+GPIO176     = MODE0(GPIO176)    MODE1(DAICLK)           MODE2(I2S0_CK)      MODE3(IRDA_PDN)     MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO177     = MODE0(GPIO177)    MODE1(DAIPCMOUT)        MODE2(I2S0_DAT)     MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO178     = MODE0(GPIO178)    MODE1(DAIPCMIN)         MODE2()             MODE3(URXD3)        MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO179     = MODE0(GPIO179)    MODE1(DAISYNC)          MODE2(I2S0_WS)      MODE3(UTXD3)        MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO180     = MODE0(GPIO180)    MODE1(DAIRST)           MODE2()             MODE3(CLKM5)        MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO181     = MODE0(GPIO181)    MODE1(SCL0)             MODE2(EINT14)       MODE3()             MODE4()             MODE5()             MODE6(dbg1_bus[0])          MODE7()         PU

+GPIO182     = MODE0(GPIO182)    MODE1(SDA0)             MODE2(EINT15)       MODE3()             MODE4()             MODE5()             MODE6(dbg1_bus[1])          MODE7()         PU

+GPIO183     = MODE0(GPIO183)    MODE1(URXD3)            MODE2(EINT12)       MODE3(PWM4)         MODE4(CLKM3)        MODE5()             MODE6(dbg1_bus[2])          MODE7()         PU

+GPIO184     = MODE0(GPIO184)    MODE1(UTXD3)            MODE2(EINT13)       MODE3(PWM5)         MODE4(CLKM4)        MODE5()             MODE6(dbg1_bus[3])          MODE7()         PU

+GPIO185     = MODE0(GPIO185)    MODE1(URXD4)            MODE2(EINT14)       MODE3()             MODE4()             MODE5()             MODE6(dbg1_bus[4])          MODE7()         PU

+GPIO186     = MODE0(GPIO186)    MODE1(UTXD4)            MODE2(EINT15)       MODE3(MC3DA0)       MODE4()             MODE5()             MODE6(dbg1_bus[5])          MODE7()         PU

+GPIO187     = MODE0(GPIO187)    MODE1(EINT0)            MODE2(SPI_CS_N)     MODE3(MC3CM0)       MODE4()             MODE5()             MODE6(dbg1_bus[6])          MODE7()         PU

+GPIO188     = MODE0(GPIO188)    MODE1(EINT1)            MODE2(SPI_SCK)      MODE3(MC3CK)        MODE4(IRDA_PDN)     MODE5()             MODE6(dbg1_bus[7])          MODE7()         PU

+GPIO189     = MODE0(GPIO189)    MODE1(EINT2)            MODE2()             MODE3(MC3DA1)       MODE4(DSP_GPO3)     MODE5(TBTXEN)       MODE6(dbg1_bus[8])          MODE7()         PU

+GPIO190     = MODE0(GPIO190)    MODE1(EINT3)            MODE2(SPI_MOSI)     MODE3(MC3DA2)       MODE4(PWM6)         MODE5()             MODE6(dbg1_bus[9])          MODE7()         PU

+GPIO191     = MODE0(GPIO191)    MODE1(EINT4)            MODE2(SPI_MISO)     MODE3(MC3DA3)       MODE4(HDQ_ONEWIRE)  MODE5()             MODE6(dbg1_bus[10])         MODE7()         PU

+GPIO192     = MODE0(GPIO192)    MODE1(MCU_JTRST_B)      MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO193     = MODE0(GPIO193)    MODE1(MCU_JTCK)         MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO194     = MODE0(GPIO194)    MODE1(MCU_JTDI)         MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO195     = MODE0(GPIO195)    MODE1(MCU_JTMS)         MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PU

+GPIO196     = MODE0(GPIO196)    MODE1(MCU_JTDO)         MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PUPD

+GPIO197     = MODE0(GPIO197)    MODE1(MCU_JRTCK)        MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PUPD

+GPIO198     = MODE0(GPIO198)    MODE1(SWCLKTCK)         MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO199     = MODE0(GPIO199)    MODE1(SWDIOTMS)         MODE2()             MODE3()             MODE4()             MODE5()             MODE6()                     MODE7()         PD

+GPIO200     = MODE0(GPIO200)    MODE1(I2S1_CK)          MODE2()             MODE3(IRDA_RXD)     MODE4(URTS4)        MODE5(EINT8)        MODE6()                     MODE7()         PD

+GPIO201     = MODE0(GPIO201)    MODE1(I2S1_WS)          MODE2()             MODE3(IRDA_TXD)     MODE4(UCTS4)        MODE5(EINT9)        MODE6(dbg3_bus[6])          MODE7()         PD

+GPIO202     = MODE0(GPIO202)    MODE1(I2S1_DAT)         MODE2()             MODE3(IRDA_PDN)     MODE4()             MODE5(EINT13)       MODE6(dbg3_bus[7])          MODE7()         PD

+

+[GPO]

+

+[EINT]

+EINT_COUNT = 16

+EINT_DEBOUNCE_TIME_COUNT = 16

+

+[EINT_EX_PIN]

+0

+1

+2

+3

+4

+5

+6

+7

+8

+9

+10

+11

+12

+13

+14

+15

+

+[ADC]

+ADC_COUNT = 5

+

+[ADC_EX_PIN]

+4

+5

+6

+7

+8

+

+[KEYPAD]

+KEY_ROW = 8

+KEY_COLUMN = 9

+

diff --git a/mcu/custom/driver/drv/Drv_Tool/MT6575_NP.fig b/mcu/custom/driver/drv/Drv_Tool/MT6575_NP.fig
new file mode 100644
index 0000000..d9c6ae1
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/MT6575_NP.fig
@@ -0,0 +1,291 @@
+[Chip Type]

+Chip = MT6575

+GPIO_Pull_Sel = 1

+GPIO_ModeNum = 8

+

+[GPIO]

+GPIO0   = MODE0(GPIO0)           MODE1(EINT0)             MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO1   = MODE0(GPIO1)           MODE1(EINT3)             MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO2   = MODE0(GPIO2)           MODE1(EINT2)             MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO3   = MODE0(GPIO3)           MODE1(EINT5)             MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO4   = MODE0(GPIO4)           MODE1(EINT4)             MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO5   = MODE0(GPIO5)           MODE1(EINT6)             MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO6   = MODE0(GPIO6)           MODE1(EINT7)             MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO7   = MODE0(GPIO7)           MODE1(EINT8)             MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO8   = MODE0(GPIO8)           MODE1(EINT10)            MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO9   = MODE0(GPIO9)           MODE1(EINT9)             MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO10  = MODE0(GPIO10)          MODE1(EINT1)             MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO11  = MODE0(GPIO11)          MODE1(EINT11)            MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO12  = MODE0(GPIO12)          MODE1(LPA0)              MODE2(EINT16)            MODE3(PWM4)              MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO13  = MODE0(GPIO13)          MODE1(LPCE1B)            MODE2(EINT14)            MODE3(PWM2)              MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO14  = MODE0(GPIO14)          MODE1(LPTE)              MODE2(EINT12)            MODE3(PWM0)              MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO15  = MODE0(GPIO15)          MODE1(LWRB)              MODE2(EINT18)            MODE3(PWM6)              MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO16  = MODE0(GPIO16)          MODE1(LPCE0B)            MODE2(EINT15)            MODE3(PWM3)              MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO17  = MODE0(GPIO17)          MODE1(LRDB)              MODE2(EINT17)            MODE3(PWM5)              MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO18  = MODE0(GPIO18)          MODE1(LRSTB)             MODE2(EINT13)            MODE3(PWM1)              MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO19  = MODE0(GPIO19)          MODE1(DPIHSYNC)          MODE2(EINT22)            MODE3(CM2PCLK)           MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO20  = MODE0(GPIO20)          MODE1(DPIB_PO_6)         MODE2(EINT8)             MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT0_17)      MODE7()                 PD                       

+GPIO21  = MODE0(GPIO21)          MODE1(DPIVSYNC)          MODE2(EINT21)            MODE3(CM2VREF)           MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO22  = MODE0(GPIO22)          MODE1(DPIR_PO_5)         MODE2(EINT25)            MODE3(CM2DAT5)           MODE4()                  MODE5()                 MODE6(DBG_OUT0_10)      MODE7()                 PD                       

+GPIO23  = MODE0(GPIO23)          MODE1(DPIB_PO_2)         MODE2(EINT12)            MODE3(I2S1_CK)           MODE4()                  MODE5()                 MODE6(DBG_OUT0_21)      MODE7()                 PD                       

+GPIO24  = MODE0(GPIO24)          MODE1(DPIB_PO_5)         MODE2(EINT9)             MODE3(I2S0_CK)           MODE4()                  MODE5()                 MODE6(DBG_OUT0_18)      MODE7()                 PD                       

+GPIO25  = MODE0(GPIO25)          MODE1(DPIB_PO_0)         MODE2(EINT14)            MODE3(I2S1_WS)           MODE4()                  MODE5()                 MODE6(DBG_OUT0_23)      MODE7()                 PD                       

+GPIO26  = MODE0(GPIO26)          MODE1(DPIR_PO_7)         MODE2(EINT23)            MODE3(CM2DAT7)           MODE4()                  MODE5()                 MODE6(DBG_OUT0_8)       MODE7()                 PD                       

+GPIO27  = MODE0(GPIO27)          MODE1(DPIR_PO_4)         MODE2(EINT26)            MODE3(CM2DAT4)           MODE4()                  MODE5()                 MODE6(DBG_OUT0_11)      MODE7()                 PD                       

+GPIO28  = MODE0(GPIO28)          MODE1(DPIG_PO_3)         MODE2(EINT3)             MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT0_4)       MODE7()                 PD                       

+GPIO29  = MODE0(GPIO29)          MODE1(DPIB_PO_4)         MODE2(EINT10)            MODE3(I2S0_DAT)          MODE4()                  MODE5()                 MODE6(DBG_OUT0_19)      MODE7()                 PD                       

+GPIO30  = MODE0(GPIO30)          MODE1(DPIDE)             MODE2(EINT20)            MODE3(CM2HREF)           MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO31  = MODE0(GPIO31)          MODE1(DPIB_PO_3)         MODE2(EINT11)            MODE3(I2S0_WS)           MODE4()                  MODE5()                 MODE6(DBG_OUT0_20)      MODE7()                 PD                       

+GPIO32  = MODE0(GPIO32)          MODE1(DPIR_PO_6)         MODE2(EINT24)            MODE3(CM2DAT6)           MODE4()                  MODE5()                 MODE6(DBG_OUT0_9)       MODE7()                 PD                       

+GPIO33  = MODE0(GPIO33)          MODE1(DPIG_PO_2)         MODE2(EINT4)             MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT0_5)       MODE7()                 PD                       

+GPIO34  = MODE0(GPIO34)          MODE1(DPIG_PO_7)         MODE2(EINT31)            MODE3(CM2RST)            MODE4()                  MODE5()                 MODE6(DBG_OUT0_0)       MODE7()                 PD                       

+GPIO35  = MODE0(GPIO35)          MODE1(DPIR_PO_2)         MODE2(EINT28)            MODE3(CM2DAT2)           MODE4()                  MODE5()                 MODE6(DBG_OUT0_13)      MODE7()                 PD                       

+GPIO36  = MODE0(GPIO36)          MODE1(DPIB_PO_1)         MODE2(EINT13)            MODE3(I2S1_DAT)          MODE4()                  MODE5()                 MODE6(DBG_OUT0_22)      MODE7()                 PD                       

+GPIO37  = MODE0(GPIO37)          MODE1(DPIG_PO_0)         MODE2(EINT6)             MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT0_7)       MODE7()                 PD                       

+GPIO38  = MODE0(GPIO38)          MODE1(DPIG_PO_6)         MODE2(EINT0)             MODE3(CM2PDN)            MODE4()                  MODE5()                 MODE6(DBG_OUT0_1)       MODE7()                 PD                       

+GPIO39  = MODE0(GPIO39)          MODE1(DPIG_PO_4)         MODE2(EINT2)             MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT0_3)       MODE7()                 PD                       

+GPIO40  = MODE0(GPIO40)          MODE1(DPIR_PO_3)         MODE2(EINT27)            MODE3(CM2DAT3)           MODE4()                  MODE5()                 MODE6(DBG_OUT0_12)      MODE7()                 PD                       

+GPIO41  = MODE0(GPIO41)          MODE1(DPICK)             MODE2(EINT19)            MODE3(CM2MCLK)           MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO42  = MODE0(GPIO42)          MODE1(DPIB_PO_7)         MODE2(EINT7)             MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT0_16)      MODE7()                 PD                       

+GPIO43  = MODE0(GPIO43)          MODE1(DPIG_PO_1)         MODE2(EINT5)             MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT0_6)       MODE7()                 PD                       

+GPIO44  = MODE0(GPIO44)          MODE1(DPIR_PO_0)         MODE2(EINT30)            MODE3(CM2DAT0)           MODE4()                  MODE5()                 MODE6(DBG_OUT0_15)      MODE7()                 PD                       

+GPIO45  = MODE0(GPIO45)          MODE1(DPIR_PO_1)         MODE2(EINT29)            MODE3(CM2DAT1)           MODE4()                  MODE5()                 MODE6(DBG_OUT0_14)      MODE7()                 PD                       

+GPIO46  = MODE0(GPIO46)          MODE1(DPIG_PO_5)         MODE2(EINT1)             MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT0_2)       MODE7()                 PD                       

+GPIO47  = MODE0(GPIO47)          MODE1(LSCE0B)            MODE2()                  MODE3(URXD3)             MODE4(SCL_2)             MODE5(TDMA_FS)          MODE6(TCTIRQ1)          MODE7()                 PU                       

+GPIO48  = MODE0(GPIO48)          MODE1(LSDI)              MODE2()                  MODE3(UTXD2)             MODE4(SDA_1)             MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO49  = MODE0(GPIO49)          MODE1(LSA0)              MODE2(MD_TXD1)           MODE3(MD_RXD1)           MODE4(SDA_0)             MODE5(TDMA_D1)          MODE6(TDTIRQ)           MODE7()                 PD                       

+GPIO50  = MODE0(GPIO50)          MODE1(LSCE1B)            MODE2()                  MODE3(UTXD3)             MODE4(SDA_2)             MODE5()                 MODE6(TEVTVAL)          MODE7()                 PU                       

+GPIO51  = MODE0(GPIO51)          MODE1(LSCK)              MODE2(MD_RXD1)           MODE3(MD_TXD1)           MODE4(SCL_0)             MODE5(TDMA_CK)          MODE6()                 MODE7()                 PD                       

+GPIO52  = MODE0(GPIO52)          MODE1(LSDA)              MODE2()                  MODE3(URXD2)             MODE4(SCL_1)             MODE5(TDMA_D0)          MODE6(TCTIRQ2)          MODE7()                 PD                       

+GPIO53  = MODE0(GPIO53)          MODE1(I2S0_DAT)          MODE2()                  MODE3(CLKM4)             MODE4(I2S1_DAT)          MODE5()                 MODE6(DBG_OUT0_24)      MODE7()                 PD                       

+GPIO54  = MODE0(GPIO54)          MODE1(I2S0_WS)           MODE2()                  MODE3(CLKM5)             MODE4(I2S1_WS)           MODE5()                 MODE6(DBG_OUT0_25)      MODE7()                 PD                       

+GPIO55  = MODE0(GPIO55)          MODE1(I2S0_CK)           MODE2(EINT15)            MODE3(CLKM3)             MODE4(I2S1_CK)           MODE5()                 MODE6(DBG_OUT0_26)      MODE7()                 PD                       

+GPIO56  = MODE0(GPIO56)          MODE1(I2S1_CK)           MODE2()                  MODE3(IRDA_RXD)          MODE4(I2S0_CK)           MODE5()                 MODE6(DBG_OUT0_27)      MODE7()                 PD                       

+GPIO57  = MODE0(GPIO57)          MODE1(I2S1_WS)           MODE2(EINT1)             MODE3(IRDA_PDN)          MODE4(I2S0_WS)           MODE5()                 MODE6(DBG_OUT0_28)      MODE7()                 PD                       

+GPIO58  = MODE0(GPIO58)          MODE1(I2S1_DAT)          MODE2(EINT0)             MODE3(IRDA_TXD)          MODE4(I2S0_DAT)          MODE5()                 MODE6(DBG_OUT0_29)      MODE7()                 PD                       

+GPIO59  = MODE0(GPIO59)          MODE1(DAIRSTB)           MODE2(EINT8)             MODE3(PWM6)              MODE4(MD_RXD2)           MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO60  = MODE0(GPIO60)          MODE1(EINT8)             MODE2(EINT5)             MODE3(PWM3)              MODE4(WATCHDOG_RSTB)     MODE5(DSP_GPO3)         MODE6()                 MODE7()                 PD                       

+GPIO61  = MODE0(GPIO61)          MODE1(EINT9)             MODE2(EINT6)             MODE3(PWM4)              MODE4(GPS_SYNC)          MODE5(WATCHDOG_RSTB)    MODE6()                 MODE7()                 PD                       

+GPIO62  = MODE0(GPIO62)          MODE1(DAIPCMOUT)         MODE2(EINT2)             MODE3(PWM0)              MODE4(I2S0_DAT)          MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO63  = MODE0(GPIO63)          MODE1(DAICLK)            MODE2(EINT3)             MODE3(PWM1)              MODE4(I2S0_CK)           MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO64  = MODE0(GPIO64)          MODE1(DAIPCMIN)          MODE2(EINT4)             MODE3(PWM2)              MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO65  = MODE0(GPIO65)          MODE1(BTSYNC)            MODE2(EINT7)             MODE3(PWM5)              MODE4(I2S0_WS)           MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO66  = MODE0(GPIO66)          MODE1(PWM2)              MODE2(EINT10)            MODE3(IRDA_RXD)          MODE4(URXD3)             MODE5(UTXD3)            MODE6(DBG_OUT1_17)      MODE7()                 PD                       

+GPIO67  = MODE0(GPIO67)          MODE1(PWM1)              MODE2(EINT9)             MODE3(IRDA_PDN)          MODE4(MD_TXD2)           MODE5(USB_DRVVBUS)      MODE6(DBG_OUT1_16)      MODE7()                 PD                       

+GPIO68  = MODE0(GPIO68)          MODE1(PWM3)              MODE2(EINT11)            MODE3(IRDA_TXD)          MODE4(UTXD3)             MODE5(URXD3)            MODE6(DBG_OUT1_18)      MODE7()                 PD                       

+GPIO69  = MODE0(GPIO69)          MODE1(EINT3)             MODE2(PWM3)              MODE3(MD_RXD1)           MODE4(CLKM2)             MODE5(SPI_MO)           MODE6(DBG_IN_9)         MODE7()                 PD                       

+GPIO70  = MODE0(GPIO70)          MODE1(EINT0)             MODE2(PWM0)              MODE3(URXD2)             MODE4(CLKM5)             MODE5(SPI_CSN)          MODE6(DBG_IN_6)         MODE7()                 PD                       

+GPIO71  = MODE0(GPIO71)          MODE1(UTXD3)             MODE2(EINT17)            MODE3(URXD3)             MODE4(PWM6)              MODE5(DSP_EMU_B)        MODE6(DBG_IN_3)         MODE7()                 PU                       

+GPIO72  = MODE0(GPIO72)          MODE1(EINT4)             MODE2(PWM4)              MODE3(MD_TXD2)           MODE4(CLKM1)             MODE5(GPS_SYNC)         MODE6(DBG_IN_10)        MODE7()                 PD                       

+GPIO73  = MODE0(GPIO73)          MODE1(EINT7)             MODE2(CLKM0)             MODE3(IRDA_TXD)          MODE4(I2S0_WS)           MODE5(USB_DRVVBUS)      MODE6(DBG_IN_13)        MODE7()                 PD                       

+GPIO74  = MODE0(GPIO74)          MODE1(UTXD2)             MODE2(EINT13)            MODE3(URXD2)             MODE4(PWM2)              MODE5(DSP_JTCK)         MODE6(DBG_IN_15)        MODE7()                 PU                       

+GPIO75  = MODE0(GPIO75)          MODE1(EINT6)             MODE2(PWM6)              MODE3(IRDA_RXD)          MODE4(I2S0_DAT)          MODE5(MD_RXD2)          MODE6(DBG_IN_12)        MODE7()                 PD                       

+GPIO76  = MODE0(GPIO76)          MODE1(EINT1)             MODE2(PWM1)              MODE3(UTXD2)             MODE4(CLKM4)             MODE5(SPI_CLK)          MODE6(DBG_IN_7)         MODE7()                 PD                       

+GPIO77  = MODE0(GPIO77)          MODE1(URXD2)             MODE2(EINT12)            MODE3(UTXD2)             MODE4(PWM1)              MODE5(DSP_JTRST_B)      MODE6(DBG_IN_14)        MODE7()                 PU                       

+GPIO78  = MODE0(GPIO78)          MODE1(EINT5)             MODE2(PWM5)              MODE3(IRDA_PDN)          MODE4(I2S0_CK)           MODE5(USB_DRVVBUS)      MODE6(DBG_IN_11)        MODE7()                 PD                       

+GPIO79  = MODE0(GPIO79)          MODE1(URXD3)             MODE2(EINT16)            MODE3(UTXD3)             MODE4(PWM5)              MODE5(DSP_JTDO)         MODE6(DBG_IN_2)         MODE7()                 PU                       

+GPIO80  = MODE0(GPIO80)          MODE1(UCTS2)             MODE2(EINT14)            MODE3(MD_TXD2)           MODE4(PWM3)              MODE5(DSP_JTMS)         MODE6()                 MODE7()                 PD                       

+GPIO81  = MODE0(GPIO81)          MODE1(EINT2)             MODE2(PWM2)              MODE3(MD_TXD1)           MODE4(CLKM3)             MODE5(SPI_MI)           MODE6(DBG_IN_8)         MODE7()                 PD                       

+GPIO82  = MODE0(GPIO82)          MODE1(URTS2)             MODE2(EINT15)            MODE3(MD_RXD2)           MODE4(PWM4)              MODE5(DSP_JTDI)         MODE6()                 MODE7()                 PD                       

+GPIO83  = MODE0(GPIO83)          MODE1(SPI_CSN)           MODE2(EINT18)            MODE3(IRDA_PDN)          MODE4(SPI_CSN)           MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO84  = MODE0(GPIO84)          MODE1(SPI_MI)            MODE2(EINT20)            MODE3(IRDA_TXD)          MODE4(SPI_MO)            MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO85  = MODE0(GPIO85)          MODE1(SPI_MO)            MODE2(EINT21)            MODE3(CLKM5)             MODE4(SPI_MI)            MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO86  = MODE0(GPIO86)          MODE1(SPI_CLK)           MODE2(EINT19)            MODE3(IRDA_RXD)          MODE4(SPI_CLK)           MODE5()                 MODE6(DBG_OUT0_30)      MODE7()                 PD                       

+GPIO87  = MODE0(GPIO87)          MODE1(SCL_0)             MODE2(EINT22)            MODE3(CLKM4)             MODE4()                  MODE5()                 MODE6(DBG_IN_0)         MODE7()                 PU                       

+GPIO88  = MODE0(GPIO88)          MODE1(SDA_0)             MODE2(EINT23)            MODE3(CLKM3)             MODE4()                  MODE5()                 MODE6(DBG_IN_1)         MODE7()                 PU                       

+GPIO89  = MODE0(GPIO89)          MODE1(MSDC3_DAT2)        MODE2(EINT28)            MODE3(URXD3)             MODE4(CLKM1)             MODE5(UTXD3)            MODE6(DBG_OUT1_4)       MODE7()                 PU                       

+GPIO90  = MODE0(GPIO90)          MODE1(MSDC3_DAT1)        MODE2(EINT27)            MODE3(MD_RXD2)           MODE4(CLKM2)             MODE5(MD_TXD2)          MODE6(DBG_OUT1_0)       MODE7()                 PU                       

+GPIO91  = MODE0(GPIO91)          MODE1(MSDC3_CMD)         MODE2(EINT25)            MODE3(MD_RXD1)           MODE4(CLKM4)             MODE5(MD_TXD1)          MODE6(DBG_OUT1_1)       MODE7()                 PU                       

+GPIO92  = MODE0(GPIO92)          MODE1(MSDC3_CLK)         MODE2(EINT24)            MODE3(MD_TXD1)           MODE4(CLKM5)             MODE5(MD_RXD1)          MODE6(DBG_OUT1_2)       MODE7()                 PU                       

+GPIO93  = MODE0(GPIO93)          MODE1(MSDC3_DAT3)        MODE2(EINT29)            MODE3(UTXD3)             MODE4(CLKM0)             MODE5(URXD3)            MODE6(DBG_OUT1_3)       MODE7()                 PU                       

+GPIO94  = MODE0(GPIO94)          MODE1(MSDC3_DAT0)        MODE2(EINT26)            MODE3(MD_TXD2)           MODE4(CLKM3)             MODE5(MD_RXD2)          MODE6(DBG_OUT0_31)      MODE7()                 PU                       

+GPIO95  = MODE0(GPIO95)          MODE1(KP_ROW2)           MODE2(EINT8)             MODE3(CLKM2)             MODE4(I2S1_DAT)          MODE5()                 MODE6(DBG_IN_29)        MODE7()                 PD                       

+GPIO96  = MODE0(GPIO96)          MODE1(KP_COL7)           MODE2(EINT5)             MODE3(CLKM5)             MODE4(I2S0_DAT)          MODE5()                 MODE6(DBG_IN_16)        MODE7()                 PD                       

+GPIO97  = MODE0(GPIO97)          MODE1(KP_ROW1)           MODE2(EINT7)             MODE3(CLKM3)             MODE4(I2S1_CK)           MODE5()                 MODE6(DBG_IN_30)        MODE7()                 PD                       

+GPIO98  = MODE0(GPIO98)          MODE1(KP_ROW0)           MODE2(EINT6)             MODE3(CLKM4)             MODE4(I2S0_WS)           MODE5()                 MODE6(DBG_IN_31)        MODE7()                 PD                       

+GPIO99  = MODE0(GPIO99)          MODE1(KP_ROW3)           MODE2(EINT9)             MODE3(CLKM1)             MODE4(I2S1_WS)           MODE5()                 MODE6(DBG_IN_28)        MODE7()                 PD                       

+GPIO100 = MODE0(GPIO100)         MODE1(KP_COL5)           MODE2(EINT3)             MODE3(PWM5)              MODE4(DSP_JTCK)          MODE5()                 MODE6(DBG_IN_18)        MODE7()                 PD                       

+GPIO101 = MODE0(GPIO101)         MODE1(KP_COL3)           MODE2(EINT1)             MODE3(PWM3)              MODE4(DSP_JTRST_B)       MODE5()                 MODE6(DBG_IN_20)        MODE7()                 PD                       

+GPIO102 = MODE0(GPIO102)         MODE1(KP_COL4)           MODE2(EINT2)             MODE3(PWM4)              MODE4(DSP_EMU_B)         MODE5()                 MODE6(DBG_IN_19)        MODE7()                 PD                       

+GPIO103 = MODE0(GPIO103)         MODE1(KP_COL0)           MODE2(EINT30)            MODE3(PWM0)              MODE4(DSP_JTDI)          MODE5()                 MODE6(DBG_IN_23)        MODE7()                 PU                       

+GPIO104 = MODE0(GPIO104)         MODE1(KP_ROW4)           MODE2(EINT10)            MODE3(CLKM0)             MODE4(SCL_0)             MODE5()                 MODE6(DBG_IN_27)        MODE7()                 PD                       

+GPIO105 = MODE0(GPIO105)         MODE1(KP_COL2)           MODE2(EINT0)             MODE3(PWM2)              MODE4(DSP_JTDO)          MODE5()                 MODE6(DBG_IN_21)        MODE7()                 PD                       

+GPIO106 = MODE0(GPIO106)         MODE1(KP_ROW5)           MODE2(EINT11)            MODE3(IRDA_PDN)          MODE4(SDA_0)             MODE5()                 MODE6(DBG_IN_26)        MODE7()                 PD                       

+GPIO107 = MODE0(GPIO107)         MODE1(KP_ROW7)           MODE2(EINT13)            MODE3(IRDA_TXD)          MODE4(SDA_1)             MODE5()                 MODE6(DBG_IN_24)        MODE7()                 PD                       

+GPIO108 = MODE0(GPIO108)         MODE1(KP_COL1)           MODE2(EINT31)            MODE3(PWM1)              MODE4(DSP_JTMS)          MODE5()                 MODE6(DBG_IN_22)        MODE7()                 PU                       

+GPIO109 = MODE0(GPIO109)         MODE1(KP_COL6)           MODE2(EINT4)             MODE3(PWM6)              MODE4(I2S0_CK)           MODE5()                 MODE6(DBG_IN_17)        MODE7()                 PD                       

+GPIO110 = MODE0(GPIO110)         MODE1(KP_ROW6)           MODE2(EINT12)            MODE3(IRDA_RXD)          MODE4(SCL_1)             MODE5(EXT_FRAME_SYNC)   MODE6(DBG_IN_25)        MODE7()                 PD                       

+GPIO111 = MODE0(GPIO111)         MODE1(DUAL_BPI_BUS3)     MODE2(EINT17)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_22)      MODE7()                 PD                       

+GPIO112 = MODE0(GPIO112)         MODE1(TDD_AFC_SW)        MODE2(EINT29)            MODE3(IRDA_TXD)          MODE4(SDA_1)             MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO113 = MODE0(GPIO113)         MODE1(DUAL_BPI_BUS1)     MODE2(EINT15)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_20)      MODE7()                 PD                       

+GPIO114 = MODE0(GPIO114)         MODE1(DUAL_BPI_BUS4)     MODE2(EINT18)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_23)      MODE7()                 PD                       

+GPIO115 = MODE0(GPIO115)         MODE1(DUAL_BPI_BUS0)     MODE2(EINT14)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_19)      MODE7()                 PD                       

+GPIO116 = MODE0(GPIO116)         MODE1(DUAL_BPI_BUS5)     MODE2(EINT19)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_24)      MODE7()                 PD                       

+GPIO117 = MODE0(GPIO117)         MODE1(DUAL_BPI_BUS2)     MODE2(EINT16)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_21)      MODE7()                 PD                       

+GPIO118 = MODE0(GPIO118)         MODE1(DUAL_BPI_BUS8)     MODE2(EINT0)             MODE3(GPS_SYNC)          MODE4()                  MODE5()                 MODE6(DBG_OUT1_27)      MODE7()                 PD                       

+GPIO119 = MODE0(GPIO119)         MODE1(DUAL_BPI_BUS9)     MODE2(EINT22)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_28)      MODE7()                 PD                       

+GPIO120 = MODE0(GPIO120)         MODE1(DUAL_BPI_BUS7)     MODE2(EINT21)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_26)      MODE7()                 PD                       

+GPIO121 = MODE0(GPIO121)         MODE1(DUAL_BPI_BUS6)     MODE2(EINT20)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_25)      MODE7()                 PD                       

+GPIO122 = MODE0(GPIO122)         MODE1(TDD_TIMINGSYNC)    MODE2(EINT28)            MODE3(IRDA_RXD)          MODE4(SCL_1)             MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO123 = MODE0(GPIO123)         MODE1(DUAL_BPI_BUS10)    MODE2(EINT23)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_29)      MODE7()                 PD                       

+GPIO124 = MODE0(GPIO124)         MODE1(DUAL_BPI_BUS14)    MODE2(EINT27)            MODE3(IRDA_PDN)          MODE4(SDA_0)             MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO125 = MODE0(GPIO125)         MODE1(DUAL_BPI_BUS13)    MODE2(EINT26)            MODE3(EXT_FRAME_SYNC)    MODE4(SCL_0)             MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO126 = MODE0(GPIO126)         MODE1(DUAL_BPI_BUS11)    MODE2(EINT24)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_30)      MODE7()                 PD                       

+GPIO127 = MODE0(GPIO127)         MODE1(DUAL_BPI_BUS12)    MODE2(EINT25)            MODE3(EXT_FRAME_SYNC)    MODE4()                  MODE5()                 MODE6(DBG_OUT1_31)      MODE7()                 PD                       

+GPIO128 = MODE0(GPIO128)         MODE1(VM1)               MODE2(EINT31)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO129 = MODE0(GPIO129)         MODE1(VM0)               MODE2(EINT30)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO130 = MODE0(GPIO130)         MODE1(BSI0_CS1)          MODE2(EINT4)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO131 = MODE0(GPIO131)         MODE1(BSI1_DATA)         MODE2(EINT6)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO132 = MODE0(GPIO132)         MODE1(BSI1_DATA1)        MODE2(EINT8)             MODE3(BSI1_CS1)          MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO133 = MODE0(GPIO133)         MODE1(BSI1_CS0)          MODE2(EINT7)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO134 = MODE0(GPIO134)         MODE1(BSI1_CLK)          MODE2(EINT5)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO135 = MODE0(GPIO135)         MODE1(BSI0_DATA)         MODE2(EINT3)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO136 = MODE0(GPIO136)         MODE1(BSI0_CS0)          MODE2(EINT1)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO137 = MODE0(GPIO137)         MODE1(BSI0_CLK)          MODE2(EINT2)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO138 = MODE0(GPIO138)         MODE1(CLKM2)             MODE2(EINT9)             MODE3(PWM0)              MODE4(IRDA_PDN)          MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO139 = MODE0(GPIO139)         MODE1(CLKM1)             MODE2(EINT10)            MODE3(PWM5)              MODE4(IRDA_RXD)          MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO140 = MODE0(GPIO140)         MODE1(CLKM0)             MODE2(EINT11)            MODE3(PWM6)              MODE4(IRDA_TXD)          MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO141 = MODE0(GPIO141)         MODE1(IDDIG)             MODE2(EINT12)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO142 = MODE0(GPIO142)         MODE1(SDA_2)             MODE2(EINT14)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO143 = MODE0(GPIO143)         MODE1(PACTRL2)           MODE2(EINT19)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_15)      MODE7()                 PU/PD                         

+GPIO144 = MODE0(GPIO144)         MODE1(PMUCTRL0)          MODE2(EINT15)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_11)      MODE7()                 PU/PD                         

+GPIO145 = MODE0(GPIO145)         MODE1(SCL_2)             MODE2(EINT13)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO146 = MODE0(GPIO146)         MODE1(PACTRL1)           MODE2(EINT18)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_14)      MODE7()                 PU/PD                         

+GPIO147 = MODE0(GPIO147)         MODE1(PMUCTRL1)          MODE2(EINT16)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_12)      MODE7()                 PU/PD                         

+GPIO148 = MODE0(GPIO148)         MODE1(PACTRL0)           MODE2(EINT17)            MODE3()                  MODE4()                  MODE5()                 MODE6(DBG_OUT1_13)      MODE7()                 PU/PD                         

+GPIO149 = MODE0(GPIO149)         MODE1(SWCLKTCK)          MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO150 = MODE0(GPIO150)         MODE1(SWDIOTMS)          MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO151 = MODE0(GPIO151)         MODE1(JTCK)              MODE2(DSP_JTCK)          MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO152 = MODE0(GPIO152)         MODE1(JTDO)              MODE2(DSP_JTDO)          MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO153 = MODE0(GPIO153)         MODE1(JTRST_B)           MODE2(DSP_JTRST_B)       MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO154 = MODE0(GPIO154)         MODE1(JTDI)              MODE2(DSP_JTDI)          MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO155 = MODE0(GPIO155)         MODE1(JRTCK)             MODE2(DSP_EMU_B)         MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU/PD                         

+GPIO156 = MODE0(GPIO156)         MODE1(JTMS)              MODE2(DSP_JTMS)          MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO157 = MODE0(GPIO157)         MODE1(UTXD1)             MODE2(EINT20)            MODE3(URXD1)             MODE4(MD_RXD1)           MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO158 = MODE0(GPIO158)         MODE1(UTXD4)             MODE2(EINT24)            MODE3(URXD4)             MODE4(MD_RXD2)           MODE5()                 MODE6(DBG_IN_5)         MODE7()                 PU                       

+GPIO159 = MODE0(GPIO159)         MODE1(URXD4)             MODE2(EINT23)            MODE3(UTXD4)             MODE4(MD_TXD2)           MODE5()                 MODE6(DBG_IN_4)         MODE7()                 PU                       

+GPIO160 = MODE0(GPIO160)         MODE1(URXD1)             MODE2()                  MODE3(UTXD1)             MODE4(MD_TXD1)           MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO161 = MODE0(GPIO161)         MODE1(URTS1)             MODE2(EINT22)            MODE3(MD_RXD1)           MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO162 = MODE0(GPIO162)         MODE1(UCTS1)             MODE2(EINT21)            MODE3(MD_TXD1)           MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO163 = MODE0(GPIO163)         MODE1(MSDC0_INSI)        MODE2(EINT25)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO164 = MODE0(GPIO164)         MODE1(MSDC0_DAT6)        MODE2(EINT2)             MODE3(SPI_MI)            MODE4(NLD11)             MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO165 = MODE0(GPIO165)         MODE1(MSDC0_DAT7)        MODE2(EINT3)             MODE3(SPI_MO)            MODE4(NLD3)              MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO166 = MODE0(GPIO166)         MODE1(MSDC0_DAT5)        MODE2(EINT1)             MODE3(SPI_CLK)           MODE4(NLD2)              MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO167 = MODE0(GPIO167)         MODE1(MSDC0_RSTB)        MODE2(NCLE)              MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO168 = MODE0(GPIO168)         MODE1(MSDC0_DAT4)        MODE2(EINT0)             MODE3(SPI_CSN)           MODE4(NLD10)             MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO169 = MODE0(GPIO169)         MODE1(MSDC0_DAT2)        MODE2(EINT30)            MODE3(NLD9)              MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO170 = MODE0(GPIO170)         MODE1(MSDC0_DAT3)        MODE2(EINT31)            MODE3(NLD1)              MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO171 = MODE0(GPIO171)         MODE1(MSDC0_CMD)         MODE2(EINT27)            MODE3(NRNB)              MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO172 = MODE0(GPIO172)         MODE1(MSDC0_CLK)         MODE2(EINT26)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO173 = MODE0(GPIO173)         MODE1(MSDC0_DAT1)        MODE2(EINT29)            MODE3(NLD0)              MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO174 = MODE0(GPIO174)         MODE1(MSDC0_SDWPI)       MODE2(EINT4)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO175 = MODE0(GPIO175)         MODE1(MSDC0_DAT0)        MODE2(EINT28)            MODE3(NLD8)              MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO176 = MODE0(GPIO176)         MODE1(MSDC1_DAT1)        MODE2(EINT7)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO177 = MODE0(GPIO177)         MODE1(MSDC1_DAT2)        MODE2(EINT8)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO178 = MODE0(GPIO178)         MODE1(MSDC1_DAT0)        MODE2(EINT6)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO179 = MODE0(GPIO179)         MODE1(MSDC1_DAT3)        MODE2(EINT9)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO180 = MODE0(GPIO180)         MODE1(MSDC1_CLK)         MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO181 = MODE0(GPIO181)         MODE1(MSDC1_CMD)         MODE2(EINT5)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO182 = MODE0(GPIO182)         MODE1(MSDC2_CLK)         MODE2(EINT10)            MODE3()                  MODE4(UTXD2)             MODE5()                 MODE6(DBG_OUT1_5)       MODE7()                 PU                       

+GPIO183 = MODE0(GPIO183)         MODE1(MSDC2_DAT3)        MODE2(EINT15)            MODE3(UTXD2)             MODE4(SPI_MO)            MODE5(SPI_MI)           MODE6(DBG_OUT1_10)      MODE7()                 PU                       

+GPIO184 = MODE0(GPIO184)         MODE1(MSDC2_CMD)         MODE2(EINT11)            MODE3(IRDA_PDN)          MODE4(URXD2)             MODE5()                 MODE6(DBG_OUT1_6)       MODE7()                 PU                       

+GPIO185 = MODE0(GPIO185)         MODE1(MSDC2_DAT2)        MODE2(EINT14)            MODE3(URXD2)             MODE4(SPI_MI)            MODE5(SPI_MO)           MODE6(DBG_OUT1_9)       MODE7()                 PU                       

+GPIO186 = MODE0(GPIO186)         MODE1(MSDC2_DAT0)        MODE2(EINT12)            MODE3(IRDA_RXD)          MODE4(SPI_CSN)           MODE5(SPI_CSN)          MODE6(DBG_OUT1_7)       MODE7()                 PU                       

+GPIO187 = MODE0(GPIO187)         MODE1(MSDC2_DAT1)        MODE2(EINT13)            MODE3(IRDA_TXD)          MODE4(SPI_CLK)           MODE5(SPI_CLK)          MODE6(DBG_OUT1_8)       MODE7()                 PU                       

+GPIO188 = MODE0(GPIO188)         MODE1(NLD12)             MODE2(EINT2)             MODE3(CLKM3)             MODE4(PWM3)              MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO189 = MODE0(GPIO189)         MODE1(NLD6)              MODE2(EINT28)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO190 = MODE0(GPIO190)         MODE1(NREB)              MODE2(EINT17)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO191 = MODE0(GPIO191)         MODE1(NLD3)              MODE2(EINT25)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO192 = MODE0(GPIO192)         MODE1(NLD11)             MODE2(EINT1)             MODE3(CLKM4)             MODE4(PWM2)              MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO193 = MODE0(GPIO193)         MODE1(NLD5)              MODE2(EINT27)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO194 = MODE0(GPIO194)         MODE1(NLD9)              MODE2(EINT31)            MODE3(URXD3)             MODE4(PWM0)              MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO195 = MODE0(GPIO195)         MODE1(NCEB1)             MODE2(EINT20)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO196 = MODE0(GPIO196)         MODE1(NLD10)             MODE2(EINT0)             MODE3(CLKM5)             MODE4(PWM1)              MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO197 = MODE0(GPIO197)         MODE1(NCEB0)             MODE2(EINT19)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO198 = MODE0(GPIO198)         MODE1(NLD4)              MODE2(EINT26)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO199 = MODE0(GPIO199)         MODE1(NWEB)              MODE2(EINT18)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO200 = MODE0(GPIO200)         MODE1(NALE)              MODE2(EINT16)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO201 = MODE0(GPIO201)         MODE1(NLD15)             MODE2(EINT5)             MODE3(CLKM0)             MODE4(PWM6)              MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO202 = MODE0(GPIO202)         MODE1(NLD14)             MODE2(EINT4)             MODE3(CLKM1)             MODE4(PWM5)              MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO203 = MODE0(GPIO203)         MODE1(NLD2)              MODE2(EINT24)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO204 = MODE0(GPIO204)         MODE1(NRNB)              MODE2(EINT21)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO205 = MODE0(GPIO205)         MODE1(NLD1)              MODE2(EINT23)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO206 = MODE0(GPIO206)         MODE1(NLD8)              MODE2(EINT30)            MODE3(UTXD3)             MODE4(GPS_SYNC)          MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO207 = MODE0(GPIO207)         MODE1(NLD7)              MODE2(EINT29)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO208 = MODE0(GPIO208)         MODE1(NCLE)              MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO209 = MODE0(GPIO209)         MODE1(NLD13)             MODE2(EINT3)             MODE3(CLKM2)             MODE4(PWM4)              MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO210 = MODE0(GPIO210)         MODE1(NLD0)              MODE2(EINT22)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO211 = MODE0(GPIO211)         MODE1(CMDAT2)            MODE2(EINT20)            MODE3(CAM_CSD2_S1)       MODE4(TBRXFS)            MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO212 = MODE0(GPIO212)         MODE1(CMMCLK)            MODE2(EINT6)             MODE3(CMMCLK_S1)         MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO213 = MODE0(GPIO213)         MODE1(CMDAT7)            MODE2(EINT15)            MODE3(CAM_CSD3_S2)       MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO214 = MODE0(GPIO214)         MODE1(CMDAT0)            MODE2(EINT22)            MODE3(CAM_CSD0_S1)       MODE4(TBTXFS)            MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO215 = MODE0(GPIO215)         MODE1(CMDAT4)            MODE2(EINT18)            MODE3(CAM_CSD0_S2)       MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO216 = MODE0(GPIO216)         MODE1(CMDAT6)            MODE2(EINT16)            MODE3(CAM_CSD2_S2)       MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO217 = MODE0(GPIO217)         MODE1(CMDAT3)            MODE2(EINT19)            MODE3(CAM_CSD3_S1)       MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO218 = MODE0(GPIO218)         MODE1(CMDAT8)            MODE2(EINT23)            MODE3()                  MODE4(DSP_GPO0)          MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO219 = MODE0(GPIO219)         MODE1(CMDAT9)            MODE2(EINT24)            MODE3()                  MODE4(DSP_GPO1)          MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO220 = MODE0(GPIO220)         MODE1(PWM4)              MODE2(EINT9)             MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO221 = MODE0(GPIO221)         MODE1(CMRST)             MODE2(EINT12)            MODE3(CMPDN_S2)          MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO222 = MODE0(GPIO222)         MODE1(SCL_1)             MODE2(EINT7)             MODE3(SCL_1)             MODE4()                  MODE5()                 MODE6(DBG_IN_32)        MODE7()                 PU                       

+GPIO223 = MODE0(GPIO223)         MODE1(CMDAT5)            MODE2(EINT17)            MODE3(CAM_CSD1_S2)       MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO224 = MODE0(GPIO224)         MODE1(SDA_1)             MODE2(EINT8)             MODE3(SDA_1)             MODE4()                  MODE5()                 MODE6()                 MODE7()                 PU                       

+GPIO225 = MODE0(GPIO225)         MODE1(CMVREF)            MODE2(EINT11)            MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO226 = MODE0(GPIO226)         MODE1(CMPCLK)            MODE2(EINT13)            MODE3(CAM_CSK_S1)        MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO227 = MODE0(GPIO227)         MODE1(CMHREF)            MODE2(EINT10)            MODE3(CAM_CSK_S2)        MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO228 = MODE0(GPIO228)         MODE1(CMPDN)             MODE2(EINT14)            MODE3(CMPDN_S1)          MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO229 = MODE0(GPIO229)         MODE1(CMDAT1)            MODE2(EINT21)            MODE3(CAM_CSD1_S1)       MODE4(TBRXEN)            MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO230 = MODE0(GPIO230)         MODE1(CMFLASH)           MODE2(EINT26)            MODE3(CMMCLK_S2)         MODE4(DSP_GPO2)          MODE5()                 MODE6()                 MODE7()                 PD                       

+GPIO231 = MODE0(GPIO231)         MODE1(SRCLKENAI)         MODE2()                  MODE3()                  MODE4()                  MODE5()                 MODE6()                 MODE7()                 PD                        

+

+[GPO]

+

+[EINT]

+EINT_COUNT = 29

+EINT_DEBOUNCE_TIME_COUNT = 29

+

+[EINT_EX_PIN]

+0

+1

+2

+3

+4

+5

+6

+7

+8

+9

+10

+11

+12

+13

+14

+15

+16

+17

+18

+19

+20

+21

+22

+23

+24

+25

+26

+30

+31

+

+[ADC]

+ADC_COUNT = 5

+

+[ADC_EX_PIN]

+0

+1

+2

+3

+4

+

+[KEYPAD]

+KEY_ROW = 8

+KEY_COLUMN = 9

+

+

diff --git a/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6236PMU.cmp b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6236PMU.cmp
new file mode 100644
index 0000000..1162d77
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6236PMU.cmp
@@ -0,0 +1,171 @@
+[PMIC_TABLE]

+NUM_LDO = 15

+

+[LDO_NAME1]

+LDO_NAME=VCORE	

+[CONFIGURABLE1]

+CONFIG=YES

+[LDO_VOLTAGE_SEL1]

+1.2

+1.1

+1.0

+0.9

+[LDO_VOLTAGE_CAL1]

+CAL_STEP=20

+

+[LDO_NAME2]

+LDO_NAME=VIO

+[CONFIGURABLE2]

+CONFIG=NO

+[LDO_VOLTAGE_SEL2]

+2.8

+[LDO_VOLTAGE_CAL2]

+CAL_STEP=30

+

+[LDO_NAME3]

+LDO_NAME=VRF

+[CONFIGURABLE3]

+CONFIG=NO

+[LDO_VOLTAGE_SEL3]

+2.8

+[LDO_VOLTAGE_CAL3]

+CAL_STEP=30

+

+[LDO_NAME4]

+LDO_NAME=VA

+[CONFIGURABLE4]

+CONFIG=NO

+[LDO_VOLTAGE_SEL4]

+2.8

+[LDO_VOLTAGE_CAL4]

+CAL_STEP=30

+

+[LDO_NAME5]

+LDO_NAME=VTCXO

+[CONFIGURABLE5]

+CONFIG=NO

+[LDO_VOLTAGE_SEL5]

+2.8

+[LDO_VOLTAGE_CAL5]

+CAL_STEP=30

+

+[LDO_NAME6]

+LDO_NAME=VRTC

+[CONFIGURABLE6]

+CONFIG=NO

+[LDO_VOLTAGE_SEL6]

+2.6

+[LDO_VOLTAGE_CAL6]

+CAL_STEP=30

+

+[LDO_NAME7]

+LDO_NAME=VM

+[CONFIGURABLE7]

+CONFIG=NO

+[LDO_VOLTAGE_SEL7]

+2.8

+1.8

+[LDO_VOLTAGE_CAL7]

+CAL_STEP=30

+

+[LDO_NAME8]

+LDO_NAME=VSIM

+[CONFIGURABLE8]

+CONFIG=YES

+[LDO_VOLTAGE_SEL8]

+2.8

+1.8

+[LDO_VOLTAGE_CAL8]

+CAL_STEP=30

+

+[LDO_NAME9]

+LDO_NAME=VSIM2

+[CONFIGURABLE9]

+CONFIG=YES

+[LDO_VOLTAGE_SEL9]

+2.8

+2.5

+1.8

+1.3

+[LDO_VOLTAGE_CAL9]

+CAL_STEP=30

+

+[LDO_NAME10]

+LDO_NAME=VMC

+[CONFIGURABLE10]

+CONFIG=NO

+[LDO_VOLTAGE_SEL10]

+2.5

+1.8

+1.5

+[LDO_VOLTAGE_CAL10]

+CAL_STEP=30

+

+[LDO_NAME11]

+LDO_NAME=VBT

+[CONFIGURABLE11]

+CONFIG=NO

+[LDO_VOLTAGE_SEL11]

+2.8

+3.0

+[LDO_VOLTAGE_CAL11]

+CAL_STEP=30

+

+[LDO_NAME12]

+LDO_NAME=VUSB

+[CONFIGURABLE12]

+CONFIG=NO

+[LDO_VOLTAGE_SEL12]

+3.3

+[LDO_VOLTAGE_CAL12]

+CAL_STEP=30

+

+[LDO_NAME13]

+LDO_NAME=VCAMD

+[CONFIGURABLE13]

+CONFIG=NO

+[LDO_VOLTAGE_SEL13]

+2.8

+1.8

+1.5

+1.3

+[LDO_VOLTAGE_CAL13]

+CAL_STEP=30

+

+[LDO_NAME14]

+LDO_NAME=VCAMA

+[CONFIGURABLE14]

+CONFIG=NO

+[LDO_VOLTAGE_SEL14]

+2.8

+1.8

+1.5

+1.3

+[LDO_VOLTAGE_CAL14]

+CAL_STEP=30

+

+[LDO_NAME15]

+LDO_NAME=VIBR

+[CONFIGURABLE15]

+CONFIG=NO

+[LDO_VOLTAGE_SEL15]

+2.8

+1.8

+1.5

+1.3

+[LDO_VOLTAGE_CAL15]

+CAL_STEP=30

+

+[pmic_drv.h_HEADER]

+#ifndef _PMIC_DRV_H

+#define _PMIC_DRV_H

+

+[pmic_drv.h_TAILER]

+#endif /* _PMIC_DRV_H */

+

+[pmic_drv.c_HEADER]

+#ifdef __CUST_NEW__

+#include "pmic_drv.h"

+

+[pmic_drv.c_TAILER]

+#endif /* __CUST_NEW__ */

diff --git a/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6251PMUNONMP.cmp b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6251PMUNONMP.cmp
new file mode 100644
index 0000000..5b7439d
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6251PMUNONMP.cmp
@@ -0,0 +1,125 @@
+[PMIC_TABLE]

+NUM_LDO = 8

+

+[LDO_NAME1]

+LDO_NAME=VRF

+[CONFIGURABLE1]

+CONFIG=NO

+[LDO_VOLTAGE_SEL1]

+2.8

+[LDO_VOLTAGE_CAL1]

+CAL_STEP=20

+

+[LDO_NAME2]

+LDO_NAME=VTCXO

+[CONFIGURABLE2]

+CONFIG=NO

+[LDO_VOLTAGE_SEL2]

+2.8

+[LDO_VOLTAGE_CAL2]

+CAL_STEP=20

+

+[LDO_NAME3]

+LDO_NAME=VUSB

+[CONFIGURABLE3]

+CONFIG=NO

+[LDO_VOLTAGE_SEL3]

+3.3

+[LDO_VOLTAGE_CAL3]

+CAL_STEP=20

+[INTERNAL_USE3]

+INTERNAL = YES

+[INTERNAL_CAL_LEVEL3]

+INT_CAL_LEVEL = 0

+[INTERNAL_APPLICATION3]

+INT_APPLICATION=USB

+[INTERNAL_VOLT_SEL3]

+INT_VOLT_SEL = 3.3

+

+[LDO_NAME4]

+LDO_NAME=VSF

+[CONFIGURABLE4]

+CONFIG = NO

+[LDO_VOLTAGE_SEL4]

+1.8

+[LDO_VOLTAGE_CAL4]

+CAL_STEP=20

+[INTERNAL_USE4]

+INTERNAL = YES

+[INTERNAL_CAL_LEVEL4]

+INT_CAL_LEVEL = 0

+[INTERNAL_APPLICATION4]

+INT_APPLICATION=SF

+[INTERNAL_VOLT_SEL4]

+INT_VOLT_SEL = 1.8

+

+[LDO_NAME5]

+LDO_NAME=VSIM

+[CONFIGURABLE5]

+CONFIG=YES

+[LDO_VOLTAGE_SEL5]

+1.8

+3

+[LDO_VOLTAGE_CAL5]

+CAL_STEP=20

+

+[LDO_NAME6]

+LDO_NAME=VSIM2

+[CONFIGURABLE6]

+CONFIG=YES

+[LDO_VOLTAGE_SEL6]

+1.3

+1.5

+1.8

+2.5

+2.8

+3

+3.3

+[LDO_VOLTAGE_CAL6]

+CAL_STEP=20

+

+[LDO_NAME7]

+LDO_NAME=VIBR

+[CONFIGURABLE7]

+CONFIG=YES

+[LDO_VOLTAGE_SEL7]

+1.3

+1.5

+1.8

+2.5

+2.8

+3

+3.3

+[LDO_VOLTAGE_CAL7]

+CAL_STEP=20

+

+[LDO_NAME8]

+LDO_NAME=VFM

+[CONFIGURABLE8]

+CONFIG=YES

+[LDO_VOLTAGE_SEL8]

+1.3

+1.5

+1.8

+2.5

+2.8

+3

+3.3

+[LDO_VOLTAGE_CAL8]

+CAL_STEP=20

+

+

+

+[pmic_drv.h_HEADER]

+#ifndef _PMIC_DRV_H

+#define _PMIC_DRV_H

+

+[pmic_drv.h_TAILER]

+#endif /* _PMIC_DRV_H */

+

+[pmic_drv.c_HEADER]

+#ifdef __CUST_NEW__

+#include "pmic_drv.h"

+

+[pmic_drv.c_TAILER]

+#endif /* __CUST_NEW__ */

diff --git a/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6255PMUMP.cmp b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6255PMUMP.cmp
new file mode 100644
index 0000000..e0af8a5
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6255PMUMP.cmp
@@ -0,0 +1,121 @@
+[PMIC_TABLE]

+NUM_LDO = 8

+

+[LDO_NAME1]

+LDO_NAME=VRF

+[LDO_ENABLE_CONFIGURABLE1]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL1]

+2.8

+[SlEEP_VOLTAGE_CONFIGURABLE1]

+CONFIGURABLE = NO

+

+[LDO_NAME2]

+LDO_NAME=VCAMA

+[LDO_ENABLE_CONFIGURABLE2]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL2]

+1.5

+1.8

+2.5

+2.8

+[SlEEP_VOLTAGE_CONFIGURABLE2]

+CONFIGURABLE = NO

+

+[LDO_NAME3]

+LDO_NAME=VSIM

+[LDO_ENABLE_CONFIGURABLE3]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL3]

+1.8

+3.0

+[SlEEP_VOLTAGE_CONFIGURABLE3]

+CONFIGURABLE = NO

+

+[LDO_NAME4]

+LDO_NAME=VSIM2

+[LDO_ENABLE_CONFIGURABLE4]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL4]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE4]

+CONFIGURABLE = NO

+

+[LDO_NAME5]

+LDO_NAME=VCAMD

+[LDO_ENABLE_CONFIGURABLE5]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL5]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE5]

+CONFIGURABLE = NO

+

+[LDO_NAME6]

+LDO_NAME=VBT

+[LDO_ENABLE_CONFIGURABLE6]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL6]

+1.5

+1.8

+2.5

+2.8

+3.0

+3.1

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE6]

+CONFIGURABLE = NO

+

+[LDO_NAME7]

+LDO_NAME=VIBR

+[LDO_ENABLE_CONFIGURABLE7]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL7]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE7]

+CONFIGURABLE = NO

+

+[LDO_NAME8]

+LDO_NAME=VMC

+[LDO_ENABLE_CONFIGURABLE8]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL8]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE8]

+CONFIGURABLE = NO

+

+

+[pmic_drv.h_HEADER]

+#include "dcl.h"

+

+[pmic_drv.h_TAILER]

+

+[pmic_drv.c_HEADER]

+#include "dcl.h"

+#include "pmic_drv.h"

+

+[pmic_drv.c_TAILER]

+//end of pmic_drv

diff --git a/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6255PMUNONMP.cmp b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6255PMUNONMP.cmp
new file mode 100644
index 0000000..f60ca32
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6255PMUNONMP.cmp
@@ -0,0 +1,167 @@
+[PMIC_TABLE]

+NUM_LDO = 11

+

+[LDO_NAME1]

+LDO_NAME=VRF

+[CONFIGURABLE1]

+CONFIG=NO

+[LDO_VOLTAGE_SEL1]

+2.8

+[LDO_VOLTAGE_CAL1]

+CAL_STEP=20

+

+[LDO_NAME2]

+LDO_NAME=VTCXO

+[CONFIGURABLE2]

+CONFIG=NO

+[LDO_VOLTAGE_SEL2]

+2.8

+[LDO_VOLTAGE_CAL2]

+CAL_STEP=20

+

+[LDO_NAME3]

+LDO_NAME=VCAMA

+[CONFIGURABLE3]

+CONFIG=YES

+[LDO_VOLTAGE_SEL3]

+1.5

+1.8

+2.5

+2.8

+[LDO_VOLTAGE_CAL3]

+CAL_STEP=20

+

+[LDO_NAME4]

+LDO_NAME=VCAMD

+[CONFIGURABLE4]

+CONFIG=YES

+[LDO_VOLTAGE_SEL4]

+1.5

+1.8

+2.5

+2.8

+[LDO_VOLTAGE_CAL4]

+CAL_STEP=20

+

+[LDO_NAME5]

+LDO_NAME=VUSB

+[CONFIGURABLE5]

+CONFIG=NO

+[LDO_VOLTAGE_SEL5]

+3.3

+[LDO_VOLTAGE_CAL5]

+CAL_STEP=20

+[INTERNAL_USE5]

+INTERNAL = YES

+[INTERNAL_CAL_LEVEL5]

+INT_CAL_LEVEL = 0

+[INTERNAL_APPLICATION5]

+INT_APPLICATION=USB

+[INTERNAL_VOLT_SEL5]

+INT_VOLT_SEL = 3.3

+

+[LDO_NAME6]

+LDO_NAME=VBT

+[CONFIGURABLE6]

+CONFIG=YES

+[LDO_VOLTAGE_SEL6]

+2.8

+3.0

+3.1

+3.3

+[LDO_VOLTAGE_CAL6]

+CAL_STEP=20

+

+[LDO_NAME7]

+LDO_NAME=VSIM

+[CONFIGURABLE7]

+CONFIG=YES

+[LDO_VOLTAGE_SEL7]

+1.8

+3.0

+[LDO_VOLTAGE_CAL7]

+CAL_STEP=20

+

+[LDO_NAME8]

+LDO_NAME=VSIM2

+[CONFIGURABLE8]

+CONFIG=YES

+[LDO_VOLTAGE_SEL8]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[LDO_VOLTAGE_CAL8]

+CAL_STEP=20

+

+[LDO_NAME9]

+LDO_NAME=VIBR

+[CONFIGURABLE9]

+CONFIG=YES

+[LDO_VOLTAGE_SEL9]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[LDO_VOLTAGE_CAL9]

+CAL_STEP=20

+

+[LDO_NAME10]

+LDO_NAME=VMC

+[CONFIGURABLE10]

+CONFIG=YES

+[LDO_VOLTAGE_SEL10]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[LDO_VOLTAGE_CAL10]

+CAL_STEP=20

+

+[LDO_NAME11]

+LDO_NAME=VFM

+[CONFIGURABLE11]

+CONFIG=YES

+[LDO_VOLTAGE_SEL11]

+2.8

+[LDO_VOLTAGE_CAL11]

+CAL_STEP=20

+

+

+[pmic_drv.h_HEADER]

+#ifndef _PMIC_DRV_H

+#define _PMIC_DRV_H

+

+[pmic_drv.h_TAILER]

+#endif /* _PMIC_DRV_H */

+

+[pmic_drv.c_HEADER]

+#ifdef __CUST_NEW__

+#include "pmic_drv.h"

+

+[pmic_drv.c_TAILER]

+#endif /* __CUST_NEW__ */

+

+

+

+[pmic_drv.h_YuSu_HEADER]

+#ifndef _PMIC_DRV_H

+#define _PMIC_DRV_H

+

+[pmic_drv.h_YuSu_TAILER]

+#endif /* _PMIC_DRV_H */

+

+[pmic_drv.c_YuSu_HEADER]

+#include "pmic_drv.h"

+

+[pmic_drv.c_YuSu_TAILER]

+/* End of pmic_drv.c */

diff --git a/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6256PMUMP.cmp b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6256PMUMP.cmp
new file mode 100644
index 0000000..03d7c1c
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6256PMUMP.cmp
@@ -0,0 +1,121 @@
+[PMIC_TABLE]

+NUM_LDO = 8

+

+[LDO_NAME1]

+LDO_NAME=VRF

+[LDO_ENABLE_CONFIGURABLE1]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL1]

+2.8

+[SlEEP_VOLTAGE_CONFIGURABLE1]

+CONFIGURABLE = NO

+

+[LDO_NAME2]

+LDO_NAME=VCAMA

+[LDO_ENABLE_CONFIGURABLE2]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL2]

+1.5

+1.8

+2.5

+2.8

+[SlEEP_VOLTAGE_CONFIGURABLE2]

+CONFIGURABLE = NO

+

+[LDO_NAME3]

+LDO_NAME=VSIM

+[LDO_ENABLE_CONFIGURABLE3]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL3]

+1.8

+3.0

+[SlEEP_VOLTAGE_CONFIGURABLE3]

+CONFIGURABLE = NO

+

+[LDO_NAME4]

+LDO_NAME=VSIM2

+[LDO_ENABLE_CONFIGURABLE4]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL4]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE4]

+CONFIGURABLE = NO

+

+[LDO_NAME5]

+LDO_NAME=VCAMD

+[LDO_ENABLE_CONFIGURABLE5]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL5]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE5]

+CONFIGURABLE = NO

+

+[LDO_NAME6]

+LDO_NAME=VBT

+[LDO_ENABLE_CONFIGURABLE6]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL6]

+1.5

+1.8

+2.5

+2.8

+3.0

+3.1

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE6]

+CONFIGURABLE = NO

+

+[LDO_NAME7]

+LDO_NAME=VIBR

+[LDO_ENABLE_CONFIGURABLE7]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL7]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE7]

+CONFIGURABLE = NO

+

+[LDO_NAME8]

+LDO_NAME=VMC

+[LDO_ENABLE_CONFIGURABLE8]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL8]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE8]

+CONFIGURABLE = NO

+

+

+[pmic_drv.h_HEADER]

+#include "dcl.h"

+

+[pmic_drv.h_TAILER]

+

+[pmic_drv.c_HEADER]

+#include "dcl.h"

+#include "pmic_drv.h"

+

+[pmic_drv.c_TAILER]

+//end of pmic_drv
\ No newline at end of file
diff --git a/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6256PMUNONMP.cmp b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6256PMUNONMP.cmp
new file mode 100644
index 0000000..550bd60
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6256PMUNONMP.cmp
@@ -0,0 +1,121 @@
+[PMIC_TABLE]

+NUM_LDO = 8

+

+[LDO_NAME1]

+LDO_NAME=VRF

+[LDO_ENABLE_CONFIGURABLE1]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL1]

+2.8

+[SlEEP_VOLTAGE_CONFIGURABLE1]

+CONFIGURABLE = NO

+

+[LDO_NAME2]

+LDO_NAME=VCAMA

+[LDO_ENABLE_CONFIGURABLE2]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL2]

+1.5

+1.8

+2.5

+2.8

+[SlEEP_VOLTAGE_CONFIGURABLE2]

+CONFIGURABLE = NO

+

+[LDO_NAME3]

+LDO_NAME=VSIM

+[LDO_ENABLE_CONFIGURABLE3]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL3]

+1.8

+3.0

+[SlEEP_VOLTAGE_CONFIGURABLE3]

+CONFIGURABLE = NO

+

+[LDO_NAME4]

+LDO_NAME=VSIM2

+[LDO_ENABLE_CONFIGURABLE4]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL4]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE4]

+CONFIGURABLE = NO

+

+[LDO_NAME5]

+LDO_NAME=VCAMD

+[LDO_ENABLE_CONFIGURABLE5]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL5]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE5]

+CONFIGURABLE = NO

+

+[LDO_NAME6]

+LDO_NAME=VBT

+[LDO_ENABLE_CONFIGURABLE6]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL6]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE6]

+CONFIGURABLE = NO

+

+[LDO_NAME7]

+LDO_NAME=VIBR

+[LDO_ENABLE_CONFIGURABLE7]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL7]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE7]

+CONFIGURABLE = NO

+

+[LDO_NAME8]

+LDO_NAME=VMC

+[LDO_ENABLE_CONFIGURABLE8]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL8]

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE8]

+CONFIGURABLE = NO

+

+

+[pmic_drv.h_HEADER]

+#include "dcl.h"

+

+[pmic_drv.h_TAILER]

+

+[pmic_drv.c_HEADER]

+#include "dcl.h"

+#include "pmic_drv.h"

+

+[pmic_drv.c_TAILER]

+//end of pmic_drv
\ No newline at end of file
diff --git a/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6276MPMUNONMP.cmp b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6276MPMUNONMP.cmp
new file mode 100644
index 0000000..ad15ce3
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6276MPMUNONMP.cmp
@@ -0,0 +1,185 @@
+[PMIC_TABLE]

+NUM_LDO = 13

+

+[LDO_NAME1]

+LDO_NAME=VRF

+[CONFIGURABLE1]

+CONFIG=NO

+[LDO_VOLTAGE_SEL1]

+2.85

+[LDO_VOLTAGE_CAL1]

+CAL_STEP=20

+

+[LDO_NAME2]

+LDO_NAME=VTCXO

+[CONFIGURABLE2]

+CONFIG=NO

+[LDO_VOLTAGE_SEL2]

+2.75

+[LDO_VOLTAGE_CAL2]

+CAL_STEP=20

+

+[LDO_NAME3]

+LDO_NAME=VCAMA

+[CONFIGURABLE3]

+CONFIG=YES

+[LDO_VOLTAGE_SEL3]

+1.5

+1.8

+2.5

+2.8

+[LDO_VOLTAGE_CAL3]

+CAL_STEP=20

+

+[LDO_NAME4]

+LDO_NAME=VCAMD

+[CONFIGURABLE4]

+CONFIG=YES

+[LDO_VOLTAGE_SEL4]

+1.3

+1.5

+1.8

+2.5

+2.8

+3

+3.3

+[LDO_VOLTAGE_CAL4]

+CAL_STEP=20

+

+

+[LDO_NAME5]

+LDO_NAME=VUSB

+[CONFIGURABLE5]

+CONFIG=NO

+[LDO_VOLTAGE_SEL5]

+3.3

+[LDO_VOLTAGE_CAL5]

+CAL_STEP=20

+[INTERNAL_USE5]

+INTERNAL = YES

+[INTERNAL_CAL_LEVEL5]

+INT_CAL_LEVEL = 0

+[INTERNAL_APPLICATION5]

+INT_APPLICATION=USB

+[INTERNAL_VOLT_SEL5]

+INT_VOLT_SEL = 3.3

+

+[LDO_NAME6]

+LDO_NAME=VBT

+[CONFIGURABLE6]

+CONFIG=YES

+[LDO_VOLTAGE_SEL6]

+1.5

+1.8

+2.5

+2.8

+3.1

+3

+3.3

+[LDO_VOLTAGE_CAL6]

+CAL_STEP=20

+

+[LDO_NAME7]

+LDO_NAME=VSIM

+[CONFIGURABLE7]

+CONFIG=YES

+[LDO_VOLTAGE_SEL7]

+1.8

+3

+[LDO_VOLTAGE_CAL7]

+CAL_STEP=20

+

+[LDO_NAME8]

+LDO_NAME=VSIM2

+[CONFIGURABLE8]

+CONFIG=YES

+[LDO_VOLTAGE_SEL8]

+1.3

+1.5

+1.8

+2.5

+2.8

+3

+3.3

+[LDO_VOLTAGE_CAL8]

+CAL_STEP=20

+

+[LDO_NAME9]

+LDO_NAME=VIBR

+[CONFIGURABLE9]

+CONFIG=YES

+[LDO_VOLTAGE_SEL9]

+1.3

+1.5

+1.8

+2.5

+2.8

+3

+3.3

+[LDO_VOLTAGE_CAL9]

+CAL_STEP=20

+

+[LDO_NAME10]

+LDO_NAME=VMC

+[CONFIGURABLE10]

+CONFIG=YES

+[LDO_VOLTAGE_SEL10]

+1.3

+1.5

+1.8

+2.5

+2.8

+3

+3.3

+[LDO_VOLTAGE_CAL10]

+CAL_STEP=20

+

+[LDO_NAME11]

+LDO_NAME=VCAMA2

+[CONFIGURABLE11]

+CONFIG=YES

+[LDO_VOLTAGE_SEL11]

+1.5

+1.8

+2.5

+2.8

+[LDO_VOLTAGE_CAL11]

+CAL_STEP=20

+

+[LDO_NAME12]

+LDO_NAME=VCAMD2

+[CONFIGURABLE12]

+CONFIG=YES

+[LDO_VOLTAGE_SEL12]

+1.3

+1.5

+1.8

+2.5

+2.8

+3

+3.3

+[LDO_VOLTAGE_CAL12]

+CAL_STEP=20

+

+[LDO_NAME13]

+LDO_NAME=VFM

+[CONFIGURABLE13]

+CONFIG=YES

+[LDO_VOLTAGE_SEL13]

+2.8

+[LDO_VOLTAGE_CAL13]

+CAL_STEP=20

+

+[pmic_drv.h_HEADER]

+#ifndef _PMIC_DRV_H

+#define _PMIC_DRV_H

+

+[pmic_drv.h_TAILER]

+#endif /* _PMIC_DRV_H */

+

+[pmic_drv.c_HEADER]

+#ifdef __CUST_NEW__

+#include "pmic_drv.h"

+

+[pmic_drv.c_TAILER]

+#endif /* __CUST_NEW__ */

diff --git a/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6276PMUNONMP.cmp b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6276PMUNONMP.cmp
new file mode 100644
index 0000000..ad15ce3
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6276PMUNONMP.cmp
@@ -0,0 +1,185 @@
+[PMIC_TABLE]

+NUM_LDO = 13

+

+[LDO_NAME1]

+LDO_NAME=VRF

+[CONFIGURABLE1]

+CONFIG=NO

+[LDO_VOLTAGE_SEL1]

+2.85

+[LDO_VOLTAGE_CAL1]

+CAL_STEP=20

+

+[LDO_NAME2]

+LDO_NAME=VTCXO

+[CONFIGURABLE2]

+CONFIG=NO

+[LDO_VOLTAGE_SEL2]

+2.75

+[LDO_VOLTAGE_CAL2]

+CAL_STEP=20

+

+[LDO_NAME3]

+LDO_NAME=VCAMA

+[CONFIGURABLE3]

+CONFIG=YES

+[LDO_VOLTAGE_SEL3]

+1.5

+1.8

+2.5

+2.8

+[LDO_VOLTAGE_CAL3]

+CAL_STEP=20

+

+[LDO_NAME4]

+LDO_NAME=VCAMD

+[CONFIGURABLE4]

+CONFIG=YES

+[LDO_VOLTAGE_SEL4]

+1.3

+1.5

+1.8

+2.5

+2.8

+3

+3.3

+[LDO_VOLTAGE_CAL4]

+CAL_STEP=20

+

+

+[LDO_NAME5]

+LDO_NAME=VUSB

+[CONFIGURABLE5]

+CONFIG=NO

+[LDO_VOLTAGE_SEL5]

+3.3

+[LDO_VOLTAGE_CAL5]

+CAL_STEP=20

+[INTERNAL_USE5]

+INTERNAL = YES

+[INTERNAL_CAL_LEVEL5]

+INT_CAL_LEVEL = 0

+[INTERNAL_APPLICATION5]

+INT_APPLICATION=USB

+[INTERNAL_VOLT_SEL5]

+INT_VOLT_SEL = 3.3

+

+[LDO_NAME6]

+LDO_NAME=VBT

+[CONFIGURABLE6]

+CONFIG=YES

+[LDO_VOLTAGE_SEL6]

+1.5

+1.8

+2.5

+2.8

+3.1

+3

+3.3

+[LDO_VOLTAGE_CAL6]

+CAL_STEP=20

+

+[LDO_NAME7]

+LDO_NAME=VSIM

+[CONFIGURABLE7]

+CONFIG=YES

+[LDO_VOLTAGE_SEL7]

+1.8

+3

+[LDO_VOLTAGE_CAL7]

+CAL_STEP=20

+

+[LDO_NAME8]

+LDO_NAME=VSIM2

+[CONFIGURABLE8]

+CONFIG=YES

+[LDO_VOLTAGE_SEL8]

+1.3

+1.5

+1.8

+2.5

+2.8

+3

+3.3

+[LDO_VOLTAGE_CAL8]

+CAL_STEP=20

+

+[LDO_NAME9]

+LDO_NAME=VIBR

+[CONFIGURABLE9]

+CONFIG=YES

+[LDO_VOLTAGE_SEL9]

+1.3

+1.5

+1.8

+2.5

+2.8

+3

+3.3

+[LDO_VOLTAGE_CAL9]

+CAL_STEP=20

+

+[LDO_NAME10]

+LDO_NAME=VMC

+[CONFIGURABLE10]

+CONFIG=YES

+[LDO_VOLTAGE_SEL10]

+1.3

+1.5

+1.8

+2.5

+2.8

+3

+3.3

+[LDO_VOLTAGE_CAL10]

+CAL_STEP=20

+

+[LDO_NAME11]

+LDO_NAME=VCAMA2

+[CONFIGURABLE11]

+CONFIG=YES

+[LDO_VOLTAGE_SEL11]

+1.5

+1.8

+2.5

+2.8

+[LDO_VOLTAGE_CAL11]

+CAL_STEP=20

+

+[LDO_NAME12]

+LDO_NAME=VCAMD2

+[CONFIGURABLE12]

+CONFIG=YES

+[LDO_VOLTAGE_SEL12]

+1.3

+1.5

+1.8

+2.5

+2.8

+3

+3.3

+[LDO_VOLTAGE_CAL12]

+CAL_STEP=20

+

+[LDO_NAME13]

+LDO_NAME=VFM

+[CONFIGURABLE13]

+CONFIG=YES

+[LDO_VOLTAGE_SEL13]

+2.8

+[LDO_VOLTAGE_CAL13]

+CAL_STEP=20

+

+[pmic_drv.h_HEADER]

+#ifndef _PMIC_DRV_H

+#define _PMIC_DRV_H

+

+[pmic_drv.h_TAILER]

+#endif /* _PMIC_DRV_H */

+

+[pmic_drv.c_HEADER]

+#ifdef __CUST_NEW__

+#include "pmic_drv.h"

+

+[pmic_drv.c_TAILER]

+#endif /* __CUST_NEW__ */

diff --git a/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6327PMUMP.cmp b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6327PMUMP.cmp
new file mode 100644
index 0000000..00f93d8
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6327PMUMP.cmp
@@ -0,0 +1,36 @@
+[PMIC_TABLE]

+NUM_LDO = 2

+

+[LDO_NAME1]

+LDO_NAME=VSIM

+[LDO_ENABLE_CONFIGURABLE1]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL1]

+1.8

+3.0

+[SlEEP_VOLTAGE_CONFIGURABLE1]

+CONFIGURABLE = NO

+

+[LDO_NAME2]

+LDO_NAME=VMC

+[LDO_ENABLE_CONFIGURABLE2]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL2]

+2.8

+3.0

+3.1

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE2]

+CONFIGURABLE = NO

+

+[pmic_drv.h_HEADER]

+#include "dcl.h"

+

+[pmic_drv.h_TAILER]

+

+[pmic_drv.c_HEADER]

+#include "dcl.h"

+#include "pmic_drv.h"

+

+[pmic_drv.c_TAILER]

+//end of pmic_drv

diff --git a/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6339PMUMP.cmp b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6339PMUMP.cmp
new file mode 100644
index 0000000..0f3b0ac
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/PMIC_MT6339PMUMP.cmp
@@ -0,0 +1,95 @@
+[PMIC_TABLE]

+NUM_LDO = 5

+

+[LDO_NAME1]

+LDO_NAME=VMC

+[LDO_ENABLE_CONFIGURABLE1]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL1]

+1.2

+1.3

+1.5

+1.8

+2.0

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE1]

+CONFIGURABLE = NO

+

+[LDO_NAME2]

+LDO_NAME=VMCH

+[LDO_ENABLE_CONFIGURABLE2]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL2]

+1.2

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE2]

+CONFIGURABLE = NO

+

+[LDO_NAME3]

+LDO_NAME=VSIM

+[LDO_ENABLE_CONFIGURABLE3]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL3]

+1.2

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE3]

+CONFIGURABLE = NO

+

+

+[LDO_NAME4]

+LDO_NAME=VSIM2

+[LDO_ENABLE_CONFIGURABLE4]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL4]

+1.2

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE4]

+CONFIGURABLE = NO

+

+[LDO_NAME5]

+LDO_NAME=VIO28

+[LDO_ENABLE_CONFIGURABLE5]

+CONFIGURABLE = YES

+[LDO_VOLTAGE_SEL5]

+1.2

+1.3

+1.5

+1.8

+2.5

+2.8

+3.0

+3.3

+[SlEEP_VOLTAGE_CONFIGURABLE5]

+CONFIGURABLE = NO

+

+[pmic_drv.h_HEADER]

+#include "dcl.h"

+

+[pmic_drv.h_TAILER]

+

+[pmic_drv.c_HEADER]

+#include "dcl.h"

+#include "pmic_drv.h"

+

+[pmic_drv.c_TAILER]

+//end of pmic_drv

diff --git a/mcu/custom/driver/drv/Drv_Tool/PMIC_NC.cmp b/mcu/custom/driver/drv/Drv_Tool/PMIC_NC.cmp
new file mode 100644
index 0000000..a300c6f
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/PMIC_NC.cmp
@@ -0,0 +1,18 @@
+[PMIC_TABLE]

+NUM_LDO = 0

+

+

+[pmic_drv.h_HEADER]

+#ifndef _PMIC_DRV_H

+#define _PMIC_DRV_H

+

+[pmic_drv.h_TAILER]

+#endif /* _PMIC_DRV_H */

+

+[pmic_drv.c_HEADER]

+#ifdef __CUST_NEW__

+#include "pmic_drv.h"

+#include "dcl.h"

+

+[pmic_drv.c_TAILER]

+#endif /* __CUST_NEW__ */

diff --git a/mcu/custom/driver/drv/Drv_Tool/PMIC_NCPMU.cmp b/mcu/custom/driver/drv/Drv_Tool/PMIC_NCPMU.cmp
new file mode 100644
index 0000000..a300c6f
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/PMIC_NCPMU.cmp
@@ -0,0 +1,18 @@
+[PMIC_TABLE]

+NUM_LDO = 0

+

+

+[pmic_drv.h_HEADER]

+#ifndef _PMIC_DRV_H

+#define _PMIC_DRV_H

+

+[pmic_drv.h_TAILER]

+#endif /* _PMIC_DRV_H */

+

+[pmic_drv.c_HEADER]

+#ifdef __CUST_NEW__

+#include "pmic_drv.h"

+#include "dcl.h"

+

+[pmic_drv.c_TAILER]

+#endif /* __CUST_NEW__ */

diff --git a/mcu/custom/driver/drv/Drv_Tool/TK6280.fig b/mcu/custom/driver/drv/Drv_Tool/TK6280.fig
new file mode 100644
index 0000000..2c028f9
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/TK6280.fig
@@ -0,0 +1,63 @@
+[Chip Type]

+Chip = TK6280

+GPIO_ModeNum = 4

+GPIO_Pull_Sel=1

+PMIC_Config=0

+PMIC_Volt_Format = 1

+

+[GPIO]

+GPIO0 = MODE0(GPIO0)		MODE1(EINT3)		MODE2()		MODE3()		PD

+GPIO1 = MODE0(GPIO1)		MODE1(EINT2)		MODE2()		MODE3()		PD

+GPIO2 = MODE0(GPIO2)		MODE1()		MODE2(USB_DRVVBUS)		MODE3(DEBUG0)		PD

+GPIO3 = MODE0(GPIO3)		MODE1()		MODE2(CLKM0)		MODE3(DEBUG1)		PD

+GPIO4 = MODE0(GPIO4)		MODE1()		MODE2(CLKM1)		MODE3(DEBUG2)		PD

+GPIO5 = MODE0(GPIO5)		MODE1()		MODE2(CLKM2)		MODE3(DEBUG3)		PD

+GPIO6 = MODE0(GPIO6)		MODE1()		MODE2(CLKM3)		MODE3(DEBUG4)		PD

+GPIO7 = MODE0(GPIO7)		MODE1()		MODE2(CLKM4)		MODE3(DEBUG5)		PD

+GPIO8 = MODE0(GPIO8)		MODE1()		MODE2(CLKM5)		MODE3(DEBUG6)		PD

+GPIO9 = MODE0(GPIO9)		MODE1()		MODE2()		MODE3(DEBUG7)		PD

+GPIO10 = MODE0(GPIO10)		MODE1(FPGA_IRQ30_B)		MODE2()		MODE3()		PD

+GPIO11 = MODE0(GPIO11)		MODE1(FPGA_IRQ29_B)		MODE2()		MODE3()		PD

+GPIO12 = MODE0(GPIO12)		MODE1(FPGA_IRQ28_B)		MODE2()		MODE3()		PD

+GPIO13 = MODE0(GPIO13)		MODE1(FPGA_IRQ27_B)		MODE2()		MODE3()		PD

+GPIO14 = MODE0(GPIO14)		MODE1(FPGA_IRQ26_B)		MODE2()		MODE3()		PD

+GPIO15 = MODE0(GPIO15)		MODE1(FPGA_IRQ25_B)		MODE2()		MODE3()		PD

+GPIO16 = MODE0(GPIO16)		MODE1(FPGA_IRQ24_B)		MODE2()		MODE3()		PD

+GPIO17 = MODE0(GPIO17)		MODE1(FPGA_IRQ23_B)		MODE2()		MODE3()		PD

+GPIO18 = MODE0(GPIO18)		MODE1(FPGA_IRQ22_B)		MODE2()		MODE3()		PD

+GPIO19 = MODE0(GPIO19)		MODE1(FPGA_IRQ21_B)		MODE2()		MODE3()		PD

+GPIO20 = MODE0(GPIO20)		MODE1(FPGA_IRQ20_B)		MODE2()		MODE3()		PD

+GPIO21 = MODE0(GPIO21)		MODE1(FPGA_IRQ19_B)		MODE2()		MODE3()		PD

+GPIO22 = MODE0(GPIO22)		MODE1(FPGA_IRQ18_B)		MODE2()		MODE3()		PD

+GPIO23 = MODE0(GPIO23)		MODE1(FPGA_IRQ17_B)		MODE2()		MODE3()		PD

+GPIO24 = MODE0(GPIO24)		MODE1(FPGA_IRQ16_B)		MODE2()		MODE3()		PD

+GPIO25 = MODE0(GPIO25)		MODE1(FPGA_IRQ15_B)		MODE2()		MODE3()		PD

+GPIO26 = MODE0(GPIO26)		MODE1(FPGA_IRQ14_B)		MODE2()		MODE3()		PD

+GPIO27 = MODE0(GPIO27)		MODE1(NCE1_B)		MODE2(LPECS2_B)		MODE3()		PD

+

+

+[GPO]

+

+[EINT]

+EINT_COUNT=4

+EINT_DEBOUNCE_TIME_COUNT=4

+

+[EINT_EX_PIN]  

+0              

+1              

+2              

+3              

+               

+[EINT_INT_PIN] 

+

+

+[ADC]

+ADC_COUNT = 1

+

+[ADC_INT_CH]

+

+[ADC_EX_CH]

+

+[KEYPAD]

+KEY_ROW=8

+KEY_COLUMN=9
\ No newline at end of file
diff --git a/mcu/custom/driver/drv/Drv_Tool/TK6516.fig b/mcu/custom/driver/drv/Drv_Tool/TK6516.fig
new file mode 100644
index 0000000..476b277
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/TK6516.fig
@@ -0,0 +1,22 @@
+[Chip Type]

+Chip = TK6516

+GPIO_Pull_Sel=1

+

+[GPIO]

+GPIO0 = MODE0(GPIO0)          MODE1(BPI_BUS6)         MODE2()        MODE3()          PUPD

+GPIO1 = MODE0(GPIO1)          MODE1(BPI_BUS7)         MODE2()        MODE3()          PUPD

+GPIO2 = MODE0(GPIO2)          MODE1(BPI_BUS8)         MODE2()        MODE3()          PUPD

+GPIO3 = MODE0(GPIO3)          MODE1(BPI_BUS9)         MODE2()        MODE3()          PUPD

+

+[GPO]

+

+[EINT]

+EINT_COUNT=24

+EINT_DEBOUNE_TIME_COUNT=24

+

+[ADC]

+ADC_COUNT=7

+

+[KEYPAD]

+KEY_ROW=0

+KEY_COLUMN=0

diff --git a/mcu/custom/driver/drv/Drv_Tool/UEM.cmp b/mcu/custom/driver/drv/Drv_Tool/UEM.cmp
new file mode 100644
index 0000000..0a45a0e
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/UEM.cmp
@@ -0,0 +1,13 @@
+[UEM]

+MAX_NETNAME_TEXT = 32

+

+[uem_drv.c_HEADER]

+#ifdef __CUST_NEW__

+#include "kal_public_api.h"

+#include "gpio_drv.h"

+#include "custom_em.h"

+#include "custom_equipment.h"

+

+

+[uem_drv.c_TAILER]

+#endif /* __CUST_NEW__ */

diff --git a/mcu/custom/driver/drv/Drv_Tool/iomux.cmp b/mcu/custom/driver/drv/Drv_Tool/iomux.cmp
new file mode 100644
index 0000000..ddb3d88
--- /dev/null
+++ b/mcu/custom/driver/drv/Drv_Tool/iomux.cmp
@@ -0,0 +1,2 @@
+[iomux_drv.c_HEADER]

+#include "iomux_drv.h"

diff --git a/mcu/custom/driver/drv/misc_drv/MT2735_IVT/DEFAULT/temp.txt b/mcu/custom/driver/drv/misc_drv/MT2735_IVT/DEFAULT/temp.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/MT2735_IVT/DEFAULT/temp.txt
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/MT6302_custom.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/MT6302_custom.c
new file mode 100644
index 0000000..3301ba8
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/MT6302_custom.c
@@ -0,0 +1,439 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * MT6302_interface.C
+ *
+ * Project:
+ * --------
+ *   Gemini
+ *
+ * Description:
+ * ------------
+ *   this file is custom implementation of MT6302 SPI 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!
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+#include	"drv_comm.h"
+#include	"gpio_sw.h"
+#include	"MT6302_spi.h"
+#include	"MT6302_custom.h"
+#include "kal_public_api.h"
+
+#ifndef __CUST_NEW__
+kal_uint8 gpio_MT6302_cs_pin=32;
+kal_uint8 gpio_MT6302_clk_pin=29;
+kal_uint8 gpio_MT6302_dat_pin=31;
+
+//for gemini plus 2rd 6302 spi pins
+kal_uint8 gpio_MT6302_cs2_pin=32;
+kal_uint8 gpio_MT6302_clk2_pin=29;
+kal_uint8 gpio_MT6302_dat2_pin=31;
+#else
+extern const char gpio_MT6302_cs_pin;
+extern const char gpio_MT6302_clk_pin;
+extern const char gpio_MT6302_dat_pin;
+
+//for gemini plus 2rd 6302 spi pins
+extern const char gpio_MT6302_cs2_pin;
+extern const char gpio_MT6302_clk2_pin;
+extern const char gpio_MT6302_dat2_pin;
+#endif
+
+/*
+* FUNCTION
+*	MT6302_getLCDSerialInterface
+*
+* DESCRIPTION
+*   	This function is to return which LCD serial interface we use to implement SPI
+*	If customer doesn't use LCD interface, this function should return 0xff
+*
+* CALLS
+*
+* PARAMETERS
+*	none
+*
+* RETURNS
+*	0~maximum number of serial interface BB has: the interface we use
+*	0xff: customer doesn't use LCD interface to implement SPI
+*
+*/
+kal_uint32 MT6302_getLCDSerialInterface(kal_uint32 MT6302Interface)
+{
+/* dual SIMIF dual SIM solution doesn't need this
+	if(0 == MT6302Interface){
+		return 1;
+	}
+	else
+*/
+	{
+		ASSERT(0);
+		return 0;
+	}
+}
+
+
+/*
+* FUNCTION
+*	MT6302_getSPIInterface
+*
+* DESCRIPTION
+*   	This function is to return which method do we use to implement SPI interface
+*
+* CALLS
+*
+* PARAMETERS
+*	none
+*
+* RETURNS
+*	0: use LCD serial interface
+*	1: use GPIO
+*
+* GLOBALS AFFECTED
+*   external_global
+*/
+kal_uint32 MT6302_getSPIInterface(kal_uint32 MT6302Interface)
+{
+/* dual SIMIF dual SIM solution doesn't need this
+	if(0 == MT6302Interface)
+		return MT6302_SPI_USE_LCD;	//MT6302_SPI_USE_LCD
+	else if(1 == MT6302Interface)
+		return MT6302_SPI_USE_DEDICATED_GPIO;
+	else
+*/
+		ASSERT(0);
+	//return MT6302_SPI_USE_LCD;
+	//return MT6302_SPI_USE_GPIO;
+	//return MT6302_SPI_USE_DEDICATED_GPIO;
+		return 0;
+}
+
+
+/*
+* FUNCTION
+*	MT6302_checkSPIMode
+*
+* DESCRIPTION
+*   	This function is check the SPI 3 pins are in correct mode, no matter use LCD or GPIO to implement
+*	customer should add its check code here, or just return kal_true in case they don't want to protect
+*
+* CALLS
+*
+* PARAMETERS
+*	none
+*
+* RETURNS
+*	kal_true: control pins are all in correct mode
+*	kal_false: control pins are not in correct mode
+*
+*/
+kal_bool MT6302_checkSPIMode(kal_uint32 MT6302Interface)
+{
+/* dual SIMIF dual SIM solution doesn't need this
+	if(MT6302Interface == 0)
+	{
+		if(MT6302_SPI_USE_LCD == MT6302_getSPIInterface(MT6302Interface))
+		{
+			//16 is SPI clk, 18 is SPI dat, 20 is SPI cs
+			//14 is SPI clk, 16 is SPI dat, 18 is SPI cs in MT6238
+			if(1 != GPIO_ReturnMode(46) || 1 != GPIO_ReturnMode(39) || 1 != GPIO_ReturnMode(40))
+				return KAL_FALSE;
+			else
+				return KAL_TRUE;
+		}
+		else if(MT6302_SPI_USE_GPIO == MT6302_getSPIInterface(MT6302Interface) || MT6302_SPI_USE_DEDICATED_GPIO == MT6302_getSPIInterface(MT6302Interface))
+		{
+				if(0 != GPIO_ReturnMode(MT6302_CS_GPIO_NO) || \
+				0 != GPIO_ReturnMode(MT6302_CLK_GPIO_NO) || \
+				0 != GPIO_ReturnMode(MT6302_DAT_GPIO_NO) || \
+				1 != GPIO_ReturnDir(MT6302_CS_GPIO_NO) || \
+				1 != GPIO_ReturnDir(MT6302_CLK_GPIO_NO) || \
+				1 != GPIO_ReturnDir(MT6302_DAT_GPIO_NO) || \
+				1 != GPIO_ReturnDout(MT6302_CS_GPIO_NO) || \
+				0 != GPIO_ReturnDout(MT6302_CLK_GPIO_NO) || \
+				0 != GPIO_ReturnDout(MT6302_DAT_GPIO_NO))
+					return KAL_FALSE;
+				else
+					return KAL_TRUE;
+		}
+	}
+	else if(MT6302Interface == 1)
+	{
+		if(MT6302_SPI_USE_LCD == MT6302_getSPIInterface(MT6302Interface))
+		{
+			//16 is SPI clk, 18 is SPI dat, 20 is SPI cs
+			//14 is SPI clk, 16 is SPI dat, 18 is SPI cs in MT6238
+			if(1 != GPIO_ReturnMode(46) || 1 != GPIO_ReturnMode(39) || 1 != GPIO_ReturnMode(40))
+				return KAL_FALSE;
+			else
+				return KAL_TRUE;
+		}
+		else if(MT6302_SPI_USE_GPIO == MT6302_getSPIInterface(MT6302Interface) || MT6302_SPI_USE_DEDICATED_GPIO == MT6302_getSPIInterface(MT6302Interface))
+		{
+				//if(0 != GPIO_ReturnMode(MT6302_CS2_GPIO_NO) || \
+				//0 != GPIO_ReturnMode(MT6302_CLK2_GPIO_NO) || \
+				//0 != GPIO_ReturnMode(MT6302_DAT2_GPIO_NO) || \
+				//1 != GPIO_ReturnDir(MT6302_CS2_GPIO_NO) || \
+				//1 != GPIO_ReturnDir(MT6302_CLK2_GPIO_NO) || \
+				//1 != GPIO_ReturnDir(MT6302_DAT2_GPIO_NO) || \
+				//1 != GPIO_ReturnDout(MT6302_CS2_GPIO_NO) || \
+				//0 != GPIO_ReturnDout(MT6302_CLK2_GPIO_NO) || \
+				//0 != GPIO_ReturnDout(MT6302_DAT2_GPIO_NO))
+				//	return KAL_FALSE;
+				//else
+				//	return KAL_TRUE;
+				ASSERT(0);
+		}
+	}
+	else
+*/
+		ASSERT(0);
+		return KAL_FALSE;
+}
+
+
+
+/*
+* FUNCTION
+*	MT6302_getGPIOCLK
+*
+* DESCRIPTION
+*   	This function is to return which GPIO we use to implement SPI CLK
+*	If customer doesn't GPIO to implement SPI, this function should return 0xff
+*	This function is only work when customer used GPIO to implement SPI and CUSTOM_NEW is not defined.
+*
+* CALLS
+*
+* PARAMETERS
+*	none
+*
+* RETURNS
+*	0~maximum number of GPIO BB has: the GPIO we use
+*	0xff: customer doesn't use GPIO to implement SPI CLK
+*
+*/
+kal_uint32 MT6302_getGPIOCLK(kal_uint32 MT6302Interface)
+{
+/* dual SIMIF dual SIM solution doesn't need this
+	//return 0xff;
+	if(0 == MT6302Interface)
+		return MT6302_CLK_GPIO_NO;
+	else if(1 == MT6302Interface){
+		//return MT6302_CLK2_GPIO_NO;
+		ASSERT(0);
+	}
+	else
+*/
+		ASSERT(0);
+		return 0;
+}
+
+/*
+* FUNCTION
+*	MT6302_getGPIOCLK
+*
+* DESCRIPTION
+*   	This function is to return which GPIO we use to implement SPI CLK
+*	If customer doesn't GPIO to implement SPI, this function should return 0xff
+*	This function is only work when customer used GPIO to implement SPI and CUSTOM_NEW is not defined.
+*
+* CALLS
+*
+* PARAMETERS
+*	none
+*
+* RETURNS
+*	0~maximum number of GPIO BB has: the GPIO we use
+*	0xff: customer doesn't use GPIO to implement SPI CLK
+*
+*/
+kal_uint32 MT6302_getGPIOCS(kal_uint32 MT6302Interface)
+{
+/* dual SIMIF dual SIM solution doesn't need this
+	//return 0xff;
+	if(0 == MT6302Interface)
+		return MT6302_CS_GPIO_NO;
+	else if(1 == MT6302Interface){
+		//return MT6302_CS2_GPIO_NO;
+		ASSERT(0);
+	}
+	else
+*/
+		ASSERT(0);
+		return 0;
+}
+
+/*
+* FUNCTION
+*	MT6302_getGPIOCLK
+*
+* DESCRIPTION
+*   	This function is to return which GPIO we use to implement SPI CLK
+*	If customer doesn't GPIO to implement SPI, this function should return 0xff
+*	This function is only work when customer used GPIO to implement SPI and CUSTOM_NEW is not defined.
+*
+* CALLS
+*
+* PARAMETERS
+*	none
+*
+* RETURNS
+*	0~maximum number of GPIO BB has: the GPIO we use
+*	0xff: customer doesn't use GPIO to implement SPI CLK
+*
+*/
+kal_uint32 MT6302_getGPIODAT(kal_uint32 MT6302Interface)
+{
+/* dual SIMIF dual SIM solution doesn't need this
+	//return 0xff;
+	if(0 == MT6302Interface)
+		return MT6302_DAT_GPIO_NO;
+	else if(1 == MT6302Interface){
+		//return MT6302_DAT2_GPIO_NO;
+		ASSERT(0);
+	}
+	else
+*/
+		ASSERT(0);
+		return 0;
+}
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/MT6302_custom.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/MT6302_custom.h
new file mode 100644
index 0000000..77b1877
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/MT6302_custom.h
@@ -0,0 +1,134 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * MT6302_custom.h
+ *
+ * Project:
+ * --------
+ *   Gemini
+ *
+ * Description:
+ * ------------
+ *   this file is the header file of MT6302 custom control
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef __MT6302_CUSTOM_H__
+#define __MT6302_CUSTOM_H__
+
+#ifndef __CUST_NEW__
+extern kal_uint8 gpio_MT6302_cs_pin;
+extern kal_uint8 gpio_MT6302_clk_pin;
+extern kal_uint8 gpio_MT6302_dat_pin;
+#else
+extern const char gpio_MT6302_cs_pin;
+extern const char gpio_MT6302_clk_pin;
+extern const char gpio_MT6302_dat_pin;
+#endif
+
+#define MT6302_CS_GPIO_NO gpio_MT6302_cs_pin
+#define MT6302_CLK_GPIO_NO gpio_MT6302_clk_pin
+#define MT6302_DAT_GPIO_NO gpio_MT6302_dat_pin
+
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/MT6306_custom.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/MT6306_custom.c
new file mode 100644
index 0000000..f7a9b39
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/MT6306_custom.c
@@ -0,0 +1,321 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * MT6302_interface.C
+ *
+ * Project:
+ * --------
+ *   Gemini
+ *
+ * Description:
+ * ------------
+ *   this file is custom implementation of MT6302 SPI 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!
+ *
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+#include	"drv_comm.h"
+//#include	"gpio_sw.h"
+#include	"mt6306_i2c.h"
+#include	"mt6306_custom.h"
+#include "kal_public_api.h"
+
+extern const char gpio_sim_switch_clk_pin;
+extern const char gpio_sim_switch_dat_pin;
+
+/*
+* FUNCTION                                                            
+*	MT6306_geti2cInterface
+*
+* DESCRIPTION                                                           
+*   	This function is to return which method do we use to implement SPI interface
+*
+* CALLS  
+*
+* PARAMETERS
+*	none
+*
+* RETURNS
+*	0: use LCD serial interface
+*	1: use GPIO
+*
+* GLOBALS AFFECTED
+*   external_global
+*/
+kal_uint32 MT6306_geti2cInterface(kal_uint32 MT6306Interface)
+{
+	return MT6306_I2C_USE_HW_I2C;
+}
+
+
+/*
+* FUNCTION                                                            
+*	MT6306_checkSPIMode
+*
+* DESCRIPTION                                                           
+*   	This function is check the SPI 3 pins are in correct mode, no matter use LCD or GPIO to implement
+*	customer should add its check code here, or just return kal_true in case they don't want to protect
+*
+* CALLS  
+*
+* PARAMETERS
+*	none
+*
+* RETURNS
+*	kal_true: control pins are all in correct mode
+*	kal_false: control pins are not in correct mode
+*
+*/
+kal_bool MT6306_checki2cMode(kal_uint32 MT6306Interface)
+{
+   return KAL_TRUE;
+}
+
+
+
+/*
+* FUNCTION                                                            
+*	MT6306_getGPIOCLK
+*
+* DESCRIPTION                                                           
+*   	This function is to return which GPIO we use to implement SPI CLK
+*	If customer doesn't GPIO to implement SPI, this function should return 0xff
+*	This function is only work when customer used GPIO to implement SPI and CUSTOM_NEW is not defined.
+*
+* CALLS  
+*
+* PARAMETERS
+*	none
+*
+* RETURNS
+*	0~maximum number of GPIO BB has: the GPIO we use
+*	0xff: customer doesn't use GPIO to implement SPI CLK
+*
+*/
+kal_uint32 MT6306_getGPIOCLK(void)
+{   
+   return 43;
+}
+
+/*
+* FUNCTION                                                            
+*	MT6306_getGPIODAT
+*
+* DESCRIPTION                                                           
+*   	This function is to return which GPIO we use to implement SPI dAT
+*	If customer doesn't GPIO to implement SPI, this function should return 0xff
+*	This function is only work when customer used GPIO to implement SPI and CUSTOM_NEW is not defined.
+*
+* CALLS  
+*
+* PARAMETERS
+*	none
+*
+* RETURNS
+*	0~maximum number of GPIO BB has: the GPIO we use
+*	0xff: customer doesn't use GPIO to implement SPI CLK
+*
+*/
+kal_uint32 MT6306_getGPIODAT(void)
+{       	
+   return 44;
+}
+kal_uint8 MT6306_getDeviceAddr(void)
+{
+   return 0x64;
+}
+kal_uint32 MT6306_getVIOLevel()
+{
+	return MT6306_VIO_1V8;
+//	return MT6306_VIO_2V8;
+}
+
+kal_bool MT6306_disable_SIM_HOT_SWAP_feature(void)
+{
+    //return KAL_FALSE;
+
+    // MTK internal test
+    return KAL_TRUE;
+}
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/adc_channel.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/adc_channel.c
new file mode 100644
index 0000000..4a4bf0c
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/adc_channel.c
@@ -0,0 +1,227 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    uart_def.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines ADC channel.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+//MSBB remove #include "kal_non_specific_general_types.h"
+
+#ifndef __CUST_NEW__
+#include "kal_general_types.h"
+
+const kal_uint8 ADC_VBAT = 0;
+const kal_uint8 ADC_VBATTMP = 3;		// Note::: Not used in MT6268A
+const kal_uint8 ADC_VISENSE = 1;
+const kal_uint8 ADC_ACCESSORYID = 4;
+const kal_uint8 ADC_VCHARGER = 2;
+const kal_uint8 ADC_PCBTMP = 6;
+const kal_uint8 ADC_CHR_USB = 3;  // adc to distinguish between charger with usb
+const kal_uint8 ADC_OTG_VBUS = 6;
+const kal_uint8 ADC_RFTMP=5;
+#endif /* __CUST_NEW__ */
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/adc_channel.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/adc_channel.h
new file mode 100644
index 0000000..57e6393
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/adc_channel.h
@@ -0,0 +1,274 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    adc_channel.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file is intends for GPT driver.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef _ADC_CHANNEL_H
+#define _ADC_CHANNEL_H
+
+/*voltage to temperature*/
+#define ADC_TEMP_T1  0*1000000   /*0C*/
+#define ADC_TEMP_T2  25*1000000  /*25C*/
+#define ADC_TEMP_T3  50*1000000  /*50C*/
+
+#define ADC_TEMP_NTCR1 26490.0   /*resistor at 0C*/
+#define ADC_TEMP_NTCR2 10000.0   /*resistor at 25C*/
+#define ADC_TEMP_NTCR3 4171.0    /*resistor at 50C*/
+
+#define ADC_TEMP_PUR 24000.0      /*orginal registor*/
+#define ADC_TEMP_AVDD 2800000.0
+#define ADC_TEMP_SCALE 10.0
+
+#define ADC_TEMP_V1 (ADC_TEMP_AVDD*(ADC_TEMP_NTCR1/(ADC_TEMP_NTCR1+ADC_TEMP_PUR))) /*voltage at 0C*/
+#define ADC_TEMP_V2 (ADC_TEMP_AVDD*(ADC_TEMP_NTCR2/(ADC_TEMP_NTCR2+ADC_TEMP_PUR))) /*voltage at 25C*/
+#define ADC_TEMP_V3 (ADC_TEMP_AVDD*(ADC_TEMP_NTCR3/(ADC_TEMP_NTCR3+ADC_TEMP_PUR))) /*voltage at 50C*/
+
+#define ADC_TEMP_M12 (((ADC_TEMP_T1-ADC_TEMP_T2)*ADC_TEMP_SCALE)/(ADC_TEMP_V1-ADC_TEMP_V2))  /*T1T2's slope */
+#define ADC_TEMP_M23 (((ADC_TEMP_T2-ADC_TEMP_T3)*ADC_TEMP_SCALE)/(ADC_TEMP_V2-ADC_TEMP_V3))  /*T2T3's slppe*/
+
+#define ADC_TEMPV2_FACTOR    ADC_TEMP_V2
+#define ADC_TEMPA12_FACTOR   (ADC_TEMP_T1-ADC_TEMP_M12/ADC_TEMP_SCALE*ADC_TEMP_V1)
+#define ADC_TEMPA23_FACTOR   (ADC_TEMP_T2-ADC_TEMP_M23/ADC_TEMP_SCALE*ADC_TEMP_V2)
+#define ADC_TEMPM12_FACTOR   ADC_TEMP_M12
+#define ADC_TEMPM23_FACTOR   ADC_TEMP_M23
+#define ADC_TEMPSCALE_FACTOR ADC_TEMP_SCALE
+
+
+#define ADC_ISENSE_FACTOR 2.5 //BMT ISENSE RESISTENCE FACTOR 5 = 1/0.2 --> resister use 0.2 Ohm
+
+//only use channels < ADC_MAX_CHANNEL define in mcu\hal\drv_def\drv_features_adc.h
+#define ADC_CALIBRATION_SLOPE_CH0  1232
+#define ADC_CALIBRATION_SLOPE_CH1  1232
+#define ADC_CALIBRATION_SLOPE_CH2  1232
+#define ADC_CALIBRATION_SLOPE_CH3  1232
+#define ADC_CALIBRATION_SLOPE_CH4  1232
+#define ADC_CALIBRATION_SLOPE_CH5  1232
+#define ADC_CALIBRATION_SLOPE_CH6  1232
+#define ADC_CALIBRATION_SLOPE_CH7  1232
+#define ADC_CALIBRATION_SLOPE_CH8  1232
+#define ADC_CALIBRATION_SLOPE_CH9  1232
+#define ADC_CALIBRATION_SLOPE_CH10 1232
+#define ADC_CALIBRATION_SLOPE_CH11 1232
+#define ADC_CALIBRATION_SLOPE_CH12 1232
+#define ADC_CALIBRATION_SLOPE_CH13 1232
+#define ADC_CALIBRATION_SLOPE_CH14 1232
+#define ADC_CALIBRATION_SLOPE_CH15 1232
+#define ADC_CALIBRATION_SLOPE_CH16 1232
+#define ADC_CALIBRATION_SLOPE_CH17 1232
+#define ADC_CALIBRATION_SLOPE_CH18 1232
+#define ADC_CALIBRATION_SLOPE_CH19 1232
+
+#define ADC_CALIBRATION_OFFSET_CH0  28673
+#define ADC_CALIBRATION_OFFSET_CH1  28673
+#define ADC_CALIBRATION_OFFSET_CH2  28673
+#define ADC_CALIBRATION_OFFSET_CH3  28673
+#define ADC_CALIBRATION_OFFSET_CH4  28673
+#define ADC_CALIBRATION_OFFSET_CH5  28673
+#define ADC_CALIBRATION_OFFSET_CH6  28673
+#define ADC_CALIBRATION_OFFSET_CH7  28673
+#define ADC_CALIBRATION_OFFSET_CH8  28673
+#define ADC_CALIBRATION_OFFSET_CH9  28673
+#define ADC_CALIBRATION_OFFSET_CH10 28673
+#define ADC_CALIBRATION_OFFSET_CH11 28673
+#define ADC_CALIBRATION_OFFSET_CH12 28673
+#define ADC_CALIBRATION_OFFSET_CH13 28673
+#define ADC_CALIBRATION_OFFSET_CH14 28673
+#define ADC_CALIBRATION_OFFSET_CH15 28673
+#define ADC_CALIBRATION_OFFSET_CH16 28673
+#define ADC_CALIBRATION_OFFSET_CH17 28673
+#define ADC_CALIBRATION_OFFSET_CH18 28673
+#define ADC_CALIBRATION_OFFSET_CH19 28673
+
+#define ADC_VOLT_FACTOR_CH0  100
+#define ADC_VOLT_FACTOR_CH1  100
+#define ADC_VOLT_FACTOR_CH2  100
+#define ADC_VOLT_FACTOR_CH3  250
+#define ADC_VOLT_FACTOR_CH4  100
+#define ADC_VOLT_FACTOR_CH5  100
+#define ADC_VOLT_FACTOR_CH6  100
+#define ADC_VOLT_FACTOR_CH7  100
+#define ADC_VOLT_FACTOR_CH8  100
+#define ADC_VOLT_FACTOR_CH9  100
+#define ADC_VOLT_FACTOR_CH10 100
+#define ADC_VOLT_FACTOR_CH11 100
+#define ADC_VOLT_FACTOR_CH12 100
+#define ADC_VOLT_FACTOR_CH13 100
+#define ADC_VOLT_FACTOR_CH14 100
+#define ADC_VOLT_FACTOR_CH15 100
+#define ADC_VOLT_FACTOR_CH16 100
+#define ADC_VOLT_FACTOR_CH17 100
+#define ADC_VOLT_FACTOR_CH18 100
+#define ADC_VOLT_FACTOR_CH19 100
+
+#endif   /*_ADC_H*/
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/alerter_tone.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/alerter_tone.c
new file mode 100644
index 0000000..4e643f8
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/alerter_tone.c
@@ -0,0 +1,461 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    tone.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file is intended for tone table.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#include "drv_comm.h"
+
+#define ALERT_TONE_ENABLE
+
+#ifdef ALERT_TONE_ENABLE
+const kal_uint16 MusicalNoteTable_C1[] = {
+   16250,         /*    C0     */
+   15294,         /*    C0#    */
+   14444,         /*    D0     */
+   14254,         /*    D0#    */
+   13542,         /*    E0     */
+   12897,         /*    F0     */
+   12287,         /*    F0#    */
+   11775,         /*    G0     */
+   11304,         /*    G0#    */
+   10943,         /*    A0     */
+   10188,         /*    A0#    */
+   9849,          /*    B0     */
+                             
+   9673,          /*    C1     */
+   9104,          /*    C1#    */
+   8598,          /*    D1     */
+   8553,          /*    D1#    */
+   7927,          /*    E1     */
+   7558,          /*    F1     */
+   7437,          /*    F1#    */
+   6982,          /*    G1     */
+   6708,          /*    G1#    */
+   6220,          /*    A1     */
+   6226,          /*    A1#    */
+   5920,          /*    B1     */
+                             
+   5556,          /*    C2     */
+   5234,          /*    C2#    */
+   5238,          /*    D2     */
+   4966,          /*    D2#    */
+   4663,          /*    E2     */
+   4395,          /*    F2     */
+   4416,          /*    F2#    */
+   4145,          /*    G2     */
+   3944,          /*    G2#    */
+   3693,          /*    A2     */
+   3736,          /*    A2#    */
+   3523,          /*    B2     */
+                            
+   3333,          /*    C3     */
+   3140,          /*    C3#    */
+   2968,          /*    D3     */
+   2995,          /*    D3#    */
+   2831,          /*    E3     */
+   2668,          /*    F3     */
+   2510,          /*    F3#    */
+   2551,          /*    G3#    */
+   2415,          /*    G3#    */
+   2273,          /*    A3     */
+   2146,          /*    A3#    */
+   2033,          /*    B3     */
+                            
+   1916,          /*    C4     */
+   1956,          /*    C4#    */
+   1849,          /*    D4     */
+   1742,          /*    D4#    */
+   1646,          /*    E4     */
+   1552,          /*    F4     */
+   1464,          /*    F4#    */
+   1507,          /*    G4#    */
+   1424,          /*    G4#    */
+   1343,          /*    A4     */
+   1268,          /*    A4#    */
+   1199,          /*    B4     */
+                            
+   1130,          /*    C5     */
+   1173,          /*    C5#    */
+   1107,          /*    D5     */
+   1045,          /*    D5#    */
+   986,           /*    E5     */
+   931,           /*    F5     */
+   878,           /*    F5#    */
+   829,           /*    G5#    */
+   870,           /*    G5#    */
+   821,           /*    A5     */
+   775,           /*    A5#    */
+   732,           /*    B5     */
+                            
+   690,           /*    C6     */
+   652,           /*    C6#    */
+   615,           /*    D6     */
+   581,           /*    D6#    */
+   617,           /*    E6     */
+   582,           /*    F6     */
+   549,           /*    F6#    */
+   518,           /*    G6#    */
+   489,           /*    G6#    */
+   462,           /*    A6     */
+   436,           /*    A6#    */
+   411,           /*    B6     */
+                            
+   444,           /*    C7     */
+   419,           /*    C7#    */
+   395,           /*    D7     */
+   373,           /*    D7#    */
+   352,           /*    E7     */
+   332,           /*    F7     */
+   314,           /*    F7#    */
+   296,           /*    G7#    */
+   280,           /*    G7#    */
+   264,           /*    A7     */
+   291,           /*    A7#    */
+   274            /*    B7     */
+};
+   
+const kal_uint16 MusicalNoteTable_C2[] = {
+   25,            /*    C0     */
+   25,            /*    C0#    */
+   25,            /*    D0     */
+   24,            /*    D0#    */
+   24,            /*    E0     */
+   24,            /*    F0     */
+   23,            /*    F0#    */
+   23,            /*    G0     */
+   23,            /*    G0#    */
+   22,            /*    A0     */
+   22,            /*    A0#    */
+   22,            /*    B0     */
+                                 
+   21,            /*    C1     */
+   21,            /*    C1#    */
+   21,            /*    D1     */
+   20,            /*    D1#    */
+   20,            /*    E1     */
+   20,            /*    F1     */
+   19,            /*    F1#    */
+   19,            /*    G1     */
+   19,            /*    G1#    */
+   19,            /*    A1     */
+   18,            /*    A1#    */
+   18,            /*    B1     */
+                                 
+   18,            /*    C2     */
+   18,            /*    C2#    */
+   17,            /*    D2     */
+   17,            /*    D2#    */
+   17,            /*    E2     */
+   17,            /*    F2     */
+   16,            /*    F2#    */
+   16,            /*    G2     */
+   16,            /*    G2#    */
+   16,            /*    A2     */
+   15,            /*    A2#    */
+   15,            /*    B2     */
+                                 
+   15,            /*    C3     */
+   15,            /*    C3#    */
+   15,            /*    D3     */
+   14,            /*    D3#    */
+   14,            /*    E3     */
+   14,            /*    F3     */
+   14,            /*    F3#    */
+   13,            /*    G3#    */
+   13,            /*    G3#    */
+   13,            /*    A3     */
+   13,            /*    A3#    */
+   13,            /*    B3     */
+                                 
+   13,            /*    C4     */
+   12,            /*    C4#    */
+   12,            /*    D4     */
+   12,            /*    D4#    */
+   12,            /*    E4     */
+   12,            /*    F4     */
+   12,            /*    F4#    */
+   11,            /*    G4#    */
+   11,            /*    G4#    */
+   11,            /*    A4     */
+   11,            /*    A4#    */
+   11,            /*    B4     */
+                                 
+   11,            /*    C5     */
+   10,            /*    C5#    */
+   10,            /*    D5     */
+   10,            /*    D5#    */
+   10,            /*    E5     */
+   10,            /*    F5     */
+   10,            /*    F5#    */
+   10,            /*    G5#    */
+   9,             /*    G5#    */
+   9,             /*    A5     */
+   9,             /*    A5#    */
+   9,             /*    B5     */
+                                 
+   9,             /*    C6     */
+   9,             /*    C6#    */
+   9,             /*    D6     */
+   9,             /*    D6#    */
+   8,             /*    E6     */
+   8,             /*    F6     */
+   8,             /*    F6#    */
+   8,             /*    G6#    */
+   8,             /*    G6#    */
+   8,             /*    A6     */
+   8,             /*    A6#    */
+   8,             /*    B6     */
+                                 
+   7,             /*    C7     */
+   7,             /*    C7#    */
+   7,             /*    D7     */
+   7,             /*    D7#    */
+   7,             /*    E7     */
+   7,             /*    F7     */
+   7,             /*    F7#    */
+   7,             /*    G7#    */
+   7,             /*    G7#    */
+   7,             /*    A7     */
+   6,             /*    A7#    */
+   6              /*    B7     */
+}; 
+
+const kal_uint16 MusicalNoteTable_Thres[] = {
+   508,           /*    C0     */
+   478,           /*    C0#    */
+   451,           /*    D0     */
+   445,           /*    D0#    */
+   423,           /*    E0     */
+   403,           /*    F0     */
+   384,           /*    F0#    */
+   368,           /*    G0     */
+   353,           /*    G0#    */
+   342,           /*    A0     */
+   318,           /*    A0#    */
+   308,           /*    B0     */
+                                 
+   302,           /*    C1     */
+   285,           /*    C1#    */
+   269,           /*    D1     */
+   267,           /*    D1#    */
+   248,           /*    E1     */
+   236,           /*    F1     */
+   232,           /*    F1#    */
+   218,           /*    G1     */
+   210,           /*    G1#    */
+   194,           /*    A1     */
+   195,           /*    A1#    */
+   185,           /*    B1     */
+                                 
+   174,           /*    C2     */
+   164,           /*    C2#    */
+   164,           /*    D2     */
+   155,           /*    D2#    */
+   146,           /*    E2     */
+   137,           /*    F2     */
+   138,           /*    F2#    */
+   130,           /*    G2     */
+   123,           /*    G2#    */
+   115,           /*    A2     */
+   117,           /*    A2#    */
+   110,           /*    B2     */
+                                 
+   104,           /*    C3     */
+   98,            /*    C3#    */
+   93,            /*    D3     */
+   94,            /*    D3#    */
+   89,            /*    E3     */
+   83,            /*    F3     */
+   78,            /*    F3#    */
+   80,            /*    G3#    */
+   76,            /*    G3#    */
+   71,            /*    A3     */
+   67,            /*    A3#    */
+   64,            /*    B3     */
+                                 
+   60,            /*    C4     */
+   61,            /*    C4#    */
+   58,            /*    D4     */
+   54,            /*    D4#    */
+   51,            /*    E4     */
+   49,            /*    F4     */
+   46,            /*    F4#    */
+   47,            /*    G4#    */
+   45,            /*    G4#    */
+   42,            /*    A4     */
+   40,            /*    A4#    */
+   38,            /*    B4     */
+                                 
+   35,            /*    C5     */
+   37,            /*    C5#    */
+   35,            /*    D5     */
+   33,            /*    D5#    */
+   31,            /*    E5     */
+   29,            /*    F5     */
+   27,            /*    F5#    */
+   26,            /*    G5#    */
+   27,            /*    G5#    */
+   26,            /*    A5     */
+   24,            /*    A5#    */
+   23,            /*    B5     */
+                                 
+   22,            /*    C6     */
+   20,            /*    C6#    */
+   19,            /*    D6     */
+   18,            /*    D6#    */
+   19,            /*    E6     */
+   18,            /*    F6     */
+   17,            /*    F6#    */
+   16,            /*    G6#    */
+   15,            /*    G6#    */
+   14,            /*    A6     */
+   14,            /*    A6#    */
+   13,            /*    B6     */
+                                 
+   14,            /*    C7     */
+   13,            /*    C7#    */
+   12,            /*    D7     */
+   12,            /*    D7#    */
+   11,            /*    E7     */
+   10,            /*    F7     */
+   10,            /*    F7#    */
+   9,             /*    G7#    */
+   9,             /*    G7#    */
+   8,             /*    A7     */
+   9,             /*    A7#    */
+   9              /*    B7     */
+};
+#endif   /*ALERT_TONE_ENABLE*/
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/alerterdrv.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/alerterdrv.c
new file mode 100644
index 0000000..3abe393
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/alerterdrv.c
@@ -0,0 +1,203 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    alerterdrv.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file is defined for external interrupt channel.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#include "drv_comm.h"
+#include "alerter_sw.h"
+#include "gpt_sw.h"
+#include "custom_hw_default.h"
+
+#if !defined(DRV_ALERTER_NOT_EXIST)
+extern ALterNoteStruct ALterNote;
+#endif /*!defined(DRV_ALERTER_NOT_EXIST)*/
+
+/*
+* FUNCTION                                                            
+*  Alter_init
+*
+* DESCRIPTION                                                           
+*     This function is to intial the Alter module.
+*
+* CALLS  
+*
+* PARAMETERS
+*  outtype : pwm, pdm
+*  
+* RETURNS
+*  None
+*
+* GLOBALS AFFECTED
+*   external_global
+*/
+void Alter_init(void)
+{
+#if !defined(DRV_ALERTER_NOT_EXIST)
+   GPTI_GetHandle(&ALterNote.handle);
+   ALERTER_Config(m3,c13_1MHZ);
+   ALERTER_Output(pwm);
+#endif /*!defined(DRV_ALERTER_NOT_EXIST)*/
+}
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/aux_custom.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/aux_custom.c
new file mode 100644
index 0000000..bfe00ab
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/aux_custom.c
@@ -0,0 +1,170 @@
+#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 !*/
+/* 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 !*/
+/* 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 !*/
+/* 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 !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#ifndef __L1_STANDALONE__
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#ifdef TV_OUT_SUPPORT  
+/* under construction !*/
+/* under construction !*/
+#endif
+/* under construction !*/
+/* under construction !*/
+#if (defined(__PHONE_CLAMSHELL__) || defined(__PHONE_SLIDE__))
+/* under construction !*/
+/* under construction !*/
+#endif //(defined(__PHONE_CLAMSHELL__) || defined(__PHONE_SLIDE__))
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+	#ifdef TV_OUT_SUPPORT
+/* under construction !*/
+/* under construction !*/
+	#endif //TV_OUT_SUPPORT    
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#if (defined(__PHONE_CLAMSHELL__) || defined(__PHONE_SLIDE__))
+/* under construction !*/
+#endif //(defined(__PHONE_CLAMSHELL__) || defined(__PHONE_SLIDE__))
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+	#ifdef TV_OUT_SUPPORT
+/* under construction !*/
+	#endif //#ifdef TV_OUT_SUPPORT
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+	#ifdef TV_OUT_SUPPORT
+/* under construction !*/
+	#endif //#ifdef TV_OUT_SUPPORT
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+	#ifdef TV_OUT_SUPPORT
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+	#endif //TV_OUT_SUPPORT
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+	#ifdef TV_OUT_SUPPORT
+/* under construction !*/
+	#endif //TV_OUT_SUPPORT 
+/* 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 !*/
+/* under construction !*/
+/* under construction !*/
+#endif /*__L1_STANDALONE__*/
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/aux_custom.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/aux_custom.h
new file mode 100644
index 0000000..c109e59
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/aux_custom.h
@@ -0,0 +1,120 @@
+#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 !*/
+/* 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 !*/
+/* 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 !*/
+/* 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 !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#ifndef __AUX_CUSTOM_H__
+/* under construction !*/
+/* under construction !*/
+#ifndef __L1_STANDALONE__
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#ifdef TV_OUT_SUPPORT  
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif //TV_OUT_SUPPOR
+/* under construction !*/
+/* under construction !*/
+#if (defined(__PHONE_CLAMSHELL__) || defined(__PHONE_SLIDE__))
+/* under construction !*/
+/* under construction !*/
+#endif //(defined(__PHONE_CLAMSHELL__) || defined(__PHONE_SLIDE__))
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#ifdef TV_OUT_SUPPORT 
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif //TV_OUT_SUPPORT 
+/* 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 !*/
+/* under construction !*/
+#ifdef __CUST_NEW__
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#else // __CUST_NEW__
+/* under construction !*/
+/* under construction !*/
+#endif  // __CUST_NEW__
+/* under construction !*/
+#endif //__L1_STANDALONE__
+#endif //__AUX_CUSTOM_H__
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/batvalue.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/batvalue.h
new file mode 100644
index 0000000..6766df9
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/batvalue.h
@@ -0,0 +1 @@
+/* Empty by Anderson */
\ No newline at end of file
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/bt_hw_define.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/bt_hw_define.h
new file mode 100644
index 0000000..77f1352
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/bt_hw_define.h
@@ -0,0 +1,84 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    bt_hw_define.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines Bluetooth hw 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 _BT_HW_DEFINE_H
+#define _BT_HW_DEFINE_H
+
+
+/*UART Definition*/
+#define BT_UART_PORT uart_port3 /* UART port for BCHS */
+
+/*GPIO Definition*/
+/*output*/
+#define BT_GPIO_RESET 	39	//GPIO_39 : PMIC reset
+#define BT_GPIO_DSC		4	//GPIO_4 : to disconnect RFComm link
+#define BT_GPIO_POWER	12 //GPIO_12: Power
+/*input*/
+#define BT_GPIO_DATASELECT 3 //GPIO_3: DataSelect
+
+#endif
+
+
+
+
+
+
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/chr_parameter.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/chr_parameter.h
new file mode 100644
index 0000000..914c933
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/chr_parameter.h
@@ -0,0 +1,249 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    chr_parameter.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file is defined for charging parameters.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef __CHR_PARAMETER_H__
+#define __CHR_PARAMETER_H__
+//MSBB remove #include "kal_non_specific_general_types.h"
+#include "dcl.h"
+
+//////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////// Common Part /////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////
+// Configuration of Battery Type
+#define LI_ION_BATTERY					0
+#define NI_MH_BATTERY					1
+#define CHR_BATTERY_TYPE    			LI_ION_BATTERY
+
+// Configuration of GPIO (Phase Out?)
+#define CHR_GPIO_CHR_CTRL               31
+#define CHR_GPIO_BATDET                 14
+#define CHR_GPIO_VIBRATOR               7
+
+// Configuration of Checking
+#define CHR_CHECK_BATTERY               KAL_FALSE
+#define CHR_CHECK_CHARGER_VOLTAGE		KAL_TRUE
+#define CHR_CHECK_BATT_TEMP				KAL_TRUE
+
+// Configuration of Li / Ni Battery Detect
+#define CHR_TYPICAL_LI_BATTYPE          1100000
+#define CHR_TYPICAL_NI_BATTYPE          1100000
+
+// Configuration of AC/USB Charge Current
+#define CHR_AC_CHARGE_CURRENT           PMU_CHARGE_CURRENT_650_00_MA
+#define CHR_USB_CHARGE_CURRENT          PMU_CHARGE_CURRENT_450_00_MA
+
+////////////////////////////////////////////////////////////////////
+// PHY Check Threshold 										      //
+////////////////////////////////////////////////////////////////////
+
+// For Battery check, turn on by CHR_CHECK_BATTERY = KAL_TRUE
+#define CHR_BATT_EXIST_ADC_THRESHOLD    4600000
+
+// For V Charge check, turn on by CHR_CHECK_CHARGER_VOLTAGE = KAL_TRUE
+#define CHR_VCHARGER_HIGH               6500000
+#define CHR_VCHARGER_LOW                0
+
+// For Battery Temperature check, turn on by CHR_CHECK_TEMP = KAL_TRUE
+#define CHR_BATTMP_MINUS_40C            2500000
+#define CHR_BATTMP_0C                   1469409
+#define CHR_BATTMP_45C                  520042
+
+// For I Charge check
+#define CHR_ICHARGE_ON_HIGH             1000000
+#define CHR_ICHARGE_ON_LOW              50000
+#define CHR_ICHARGE_OFF_HIGH            1000000
+
+////////////////////////////////////////////////////////////////////
+// Misc Configuration										      //
+////////////////////////////////////////////////////////////////////
+
+// For current offset of different mode
+#define CURRENT_OFFSET_IDLE_MODE		100000	/* unit : mA */
+#define CURRENT_OFFSET_TALK_MODE		100000	/* unit : mA */
+#define CURRENT_OFFSET_SWOFF_MODE		100000	/* unit : mA */
+
+// Fast Charge ON/OFF duty configuration for different charge current of Normal Mode
+#define FAST_ICHARGE_HI_NORMAL_ON		7		/* unit : sec */
+#define FAST_ICHARGE_HI_NORMAL_OFF		1		/* unit : sec */
+#define FAST_ICHARGE_MID_NORMAL_ON		8		/* unit : sec */
+#define FAST_ICHARGE_MID_NORMAL_OFF		1		/* unit : sec */
+#define FAST_ICHARGE_LO_NORMAL_ON		9		/* unit : sec */
+#define FAST_ICHARGE_LO_NORMAL_OFF		1		/* unit : sec */
+
+// Fast Charge ON/OFF duty configuration for different charge current of Talk Mode
+#define FAST_ICHARGE_HI_TALK_ON			7		/* unit : sec */
+#define FAST_ICHARGE_HI_TALK_OFF		1		/* unit : sec */
+#define FAST_ICHARGE_MID_TALK_ON		8		/* unit : sec */
+#define FAST_ICHARGE_MID_TALK_OFF		1		/* unit : sec */
+#define FAST_ICHARGE_LO_TALK_ON			9		/* unit : sec */
+#define FAST_ICHARGE_LO_TALK_OFF		1		/* unit : sec */
+  
+////////////////////////////////////////////////////////////////////
+// State Transition Configuration								  //
+////////////////////////////////////////////////////////////////////
+
+// For state transition threshold
+#define CHR_V_PRE2FAST_THRES            3400000
+
+// For Fast Charge State, charge duty adjustment
+#define CHR_FAST_ICHARGE_HIGHLEVEL      600000  /* 600ma,for table search */
+#define CHR_FAST_ICHARGE_LOWLEVEL       400000  /* 400ma,for table search */
+
+#define CHR_I_TOPOFF2FAST_THRES         250000  /* 250ma, TOPOFF->FAST */ // No use right now
+#define CHR_I_TOPOFF2FULL_THRES         120000  /* 120ma, TOPOFF->BATFULL */ 
+
+//////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////// Individual Part ///////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////
+
+// Start of Li-Ion Battery Configuration
+/* Li-Ion Battery Configuration */
+#define CHR_V_FAST2TOPOFF_THRES_LI      4050000
+#define CHR_V_FULL2FAST_THRES_LI        4110000 /* BATFULL->FAST */
+#define CHR_MAX_VBAT_LI                 6000000
+#define CHR_V_PROTECT_HIGH_LI           4050000
+#define CHR_V_PROTECT_LOW_LI            3800000
+// End of Li-Ion Battery Configuration
+
+// Start of Ni-MH Battery
+/* Ni-MH Battery Configuration */
+#define CHR_V_TEMP_FAST2FULL_THRES_NI   414557  /* 50oC, FAST->BATFULL */
+#define CHR_V_FULL2FAST_THRES_NI        4050000
+#define CHR_MAX_VBAT_NI                 5500000
+// End of Ni-MH Battery
+
+////////////////////////////////////////////////////////////////////
+// Charge Duty Configuration									  //
+////////////////////////////////////////////////////////////////////
+/* PRE CHARGE, search table */
+#define PRE_TON_TIME               	    3		/* unit : second */
+#define PRE_TOFF_TIME              	    2		/* unit : second */
+
+/* TOPOFF CHARGE, search table */
+#define TOPOFF_TON_TIME            	    3
+#define TOPOFF_TOFF_TIME                3
+
+/* Only for Pulse Charge Start */
+#define PULSE_POSTFULL_TWAIT_TIME      	90
+#define PULSE_POSTFULL_TON_TIME        	3
+#define PULSE_POSTFULL_TOFF_TIME       	1
+/* Only for Pulse Charge End */
+
+/* Only for Li-Ion Battery Start */
+#define BATFULL_TON_TIME_LI        	    6       /* unit : second */
+#define BATFULL_TOFF_TIME_LI       	    0		/* unit : second */
+/* Only for Li-Ion Battery End */
+
+/* Only for Ni-MH Battery Start */
+#define BATFULL_TON_TIME_NI        	    1       /* unit : second */
+#define BATFULL_TOFF_TIME_NI       	    9		/* unit : second */
+/* Only for Ni-MH Battery End */
+
+#define CHR_STOP_TOFF_TIME        	    6
+#define BATHOLD_TOFF_TIME          	    10
+#define MEASURE_DISCARD_TIME            24      /* unit : ticks */
+
+#endif
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/cmmb_custom_if.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/cmmb_custom_if.c
new file mode 100644
index 0000000..ebbbada
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/cmmb_custom_if.c
@@ -0,0 +1,60 @@
+#if defined(__CMMB_SUPPORT__)
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"      // Basic data type 
+
+#include "cmmb_custom_if.h"
+#include "gpio_sw.h"
+
+/**
+ * Power on Demodulator
+ *
+ * @param None.
+ *
+ * @return None.
+ */
+void cmmb_power_on_custom(void)
+{
+	DCL_HANDLE cmmb_reset_handle;
+	DCL_HANDLE cmmb_power_on_handle;
+
+	cmmb_reset_handle = DclGPIO_Open(DCL_GPIO, CMMB_GPIO_RESET_PIN);
+	cmmb_power_on_handle = DclGPIO_Open(DCL_GPIO, CMMB_GPIO_POWER_ON_PIN);
+
+	DclGPIO_Control(cmmb_reset_handle, GPIO_CMD_SET_DIR_OUT, NULL);
+	DclGPIO_Control(cmmb_reset_handle, GPIO_CMD_WRITE_LOW, NULL);
+
+	//need wait about 50ms
+	kal_sleep_task(15);
+	
+	DclGPIO_Control(cmmb_reset_handle, GPIO_CMD_WRITE_HIGH, NULL);
+
+	//need wait about 50ms
+	kal_sleep_task(15);
+
+	//enable all LDO
+	DclGPIO_Control(cmmb_power_on_handle, GPIO_CMD_SET_DIR_OUT, NULL);
+	DclGPIO_Control(cmmb_power_on_handle, GPIO_CMD_WRITE_HIGH, NULL);
+
+	DclGPIO_Close(cmmb_reset_handle);
+	DclGPIO_Close(cmmb_power_on_handle);
+}
+
+void cmmb_power_off_custom(void)
+{
+	DCL_HANDLE cmmb_reset_handle;
+	DCL_HANDLE cmmb_power_on_handle;
+
+	cmmb_reset_handle = DclGPIO_Open(DCL_GPIO, CMMB_GPIO_RESET_PIN);
+	cmmb_power_on_handle = DclGPIO_Open(DCL_GPIO, CMMB_GPIO_POWER_ON_PIN);
+
+	DclGPIO_Control(cmmb_reset_handle, GPIO_CMD_SET_DIR_OUT, NULL);
+	DclGPIO_Control(cmmb_power_on_handle, GPIO_CMD_SET_DIR_OUT, NULL);
+
+	//pull low reset pin and disable all LDO
+	DclGPIO_Control(cmmb_reset_handle, GPIO_CMD_WRITE_LOW, NULL);
+	DclGPIO_Control(cmmb_power_on_handle, GPIO_CMD_WRITE_LOW, NULL);
+
+	DclGPIO_Close(cmmb_reset_handle);
+	DclGPIO_Close(cmmb_power_on_handle);
+}
+
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/cmmb_custom_if.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/cmmb_custom_if.h
new file mode 100644
index 0000000..0e8f006
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/cmmb_custom_if.h
@@ -0,0 +1,74 @@
+#ifndef CMMB_CUSTOM_IF_H
+#define CMMB_CUSTOM_IF_H
+
+#define INTERFACE_SPIONLY
+#define INNO_DOWNLOAD_FROM_BB
+
+//This define to indicate Innofidei cmmb chip using 26M clk or 20M clk. 
+//Because different clk should download different firmware.
+//The following define can define "INNO_26M_FW" or "INNO_20M_FW"
+#define INNO_26M_FW	
+
+#ifdef __CUST_NEW__
+
+extern const char gpio_cmmb_power_on_pin;
+extern const char gpio_cmmb_reset_pin;
+extern const char gpio_cmmb_spi_eint_pin;
+extern const char gpio_cmmb_spi_cs_n_pin;
+extern const char gpio_cmmb_spi_sck_pin;
+extern const char gpio_cmmb_spi_mosi_pin;
+extern const char gpio_cmmb_spi_miso_pin;
+
+extern const char gpio_cmmb_spi_eint_pin_M_EINT;
+extern const char gpio_cmmb_reset_pin_M_GPIO;
+extern const char gpio_cmmb_power_on_pin_M_GPIO;
+extern const char gpio_cmmb_spi_cs_n_pin_M_SPI_CS_N;
+extern const char gpio_cmmb_spi_sck_pin_M_SPI_SCK;
+extern const char gpio_cmmb_spi_mosi_pin_M_SPI_MOSI;
+extern const char gpio_cmmb_spi_miso_pin_M_SPI_MISO;
+
+#define CMMB_GPIO_RESET_PIN     gpio_cmmb_reset_pin
+#define CMMB_GPIO_POWER_ON_PIN  gpio_cmmb_power_on_pin
+#define CMMB_SPI_EINT_GPIO_PIN  gpio_cmmb_spi_eint_pin
+#define CMMB_SPI_CS_N_GPIO_PIN  gpio_cmmb_spi_cs_n_pin
+#define CMMB_SPI_SCK_GPIO_PIN   gpio_cmmb_spi_sck_pin
+#define CMMB_SPI_MOSI_GPIO_PIN  gpio_cmmb_spi_mosi_pin
+#define CMMB_SPI_MISO_GPIO_PIN  gpio_cmmb_spi_miso_pin
+
+#define CMMB_SPI_EINT_PIN_MODE  gpio_cmmb_spi_eint_pin_M_EINT
+#define CMMB_GPIO_RESET_MODE    gpio_cmmb_reset_pin_M_GPIO
+#define CMMB_GPIO_PWR_ON_MODE   gpio_cmmb_power_on_pin_M_GPIO
+#define CMMB_SPI_CS_N_PIN_MODE  gpio_cmmb_spi_cs_n_pin_M_SPI_CS_N
+#define CMMB_SPI_SCK_PIN_MODE   gpio_cmmb_spi_sck_pin_M_SPI_SCK
+#define CMMB_SPI_MOSI_PIN_MODE  gpio_cmmb_spi_mosi_pin_M_SPI_MOSI
+#define CMMB_SPI_MISO_PIN_MODE  gpio_cmmb_spi_miso_pin_M_SPI_MISO
+
+#else //__CUST_NEW__
+
+	enum
+	{
+	  //SDIO
+	  CMMB_GPIO_MCCM0_PIN    =  67,
+	  CMMB_GPIO_MCDA0_PIN    =  68,
+	  CMMB_GPIO_MCDA1_PIN    =  69,
+	  CMMB_GPIO_MCDA2_PIN    =  70,
+	  CMMB_GPIO_MCDA3_PIN    =  71,
+	  CMMB_GPIO_MCCK_PIN     =  72,
+
+	  CMMB_GPIO_POWER_ON_PIN  =  83,
+	  CMMB_GPIO_RESET_PIN     =  62,
+
+	  CMMB_SPI_CS_N_GPIO_PIN   = 63,
+	  CMMB_SPI_SCK_GPIO_PIN    = 59,
+	  CMMB_SPI_MOSI_GPIO_PIN   = 61,
+	  CMMB_SPI_MISO_GPIO_PIN   = 60,
+
+	  CMMB_SPI_EINT_GPIO_PIN   = 48
+
+	};
+#endif //__CUST_NEW__
+
+extern void cmmb_power_on_custom(void);
+extern void cmmb_power_off_custom(void);
+
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_drv_init.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_drv_init.c
new file mode 100644
index 0000000..dde2c75
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_drv_init.c
@@ -0,0 +1,254 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    custom_drv_init.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file defines the driver init functions
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+//#include "kal_release.h"
+#include "kal_public_api.h" 
+
+
+extern void Alter_init(void);
+extern void PWM_initialize(void);
+extern void EINT_Setting_SW_Init(void);
+
+#if defined(__OFN_SUPPORT__)
+extern void OFN_ChipInit(void);
+#endif
+
+#if defined(__NFC_SUPPORT__)
+extern int phDal4Nfc_uart_reset(long level);
+#endif
+
+#if defined(__BTMODULE_MT6236__)||defined(__BTMODULE_MT6276__)
+void Brt_MT6236_76_ARM7_Workaround_Stage_1_Bootloader_Step_0_PowerOn_Once_Only_Fake_BtOff(void);
+#endif
+
+
+void custom_drv_init(void)
+{
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// This Workaround should be placed at 1st line of custom_drv_init.
+#if defined(__BTMODULE_MT6236__)||defined(__BTMODULE_MT6276__)
+    Brt_MT6236_76_ARM7_Workaround_Stage_1_Bootloader_Step_0_PowerOn_Once_Only_Fake_BtOff();
+#endif
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+	EINT_Setting_SW_Init(); /*initial dct setting sw part, hw part do in bootloader init*/
+  
+    //spi_ini(); /* For LCD module */
+	//LCD_FunConfig();
+	Alter_init();
+#ifndef __L1_STANDALONE__
+   PWM_initialize();
+#endif
+#if defined(__OFN_SUPPORT__)
+	OFN_ChipInit();
+#endif
+}
+
+
+
+void custom_drv_deinit(void)
+{
+#ifdef __NFC_SUPPORT__
+  //Do NFC hardware reset for NFC chip enter active mode
+  phDal4Nfc_uart_reset(1);
+  phDal4Nfc_uart_reset(0);
+  phDal4Nfc_uart_reset(1);
+#endif
+}
+
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_equipment.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_equipment.c
new file mode 100644
index 0000000..c694ec5
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_equipment.c
@@ -0,0 +1,692 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   custom_equipment.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   The file contains definition of custom component module configuration
+ *   variables, and routines handle for equipment device.
+ *
+ * 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!
+ * 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 __L1_STANDALONE__
+
+/*
+**   Includes
+*/
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"
+#include "kal_general_types.h"
+#include "kal_public_api.h"
+#include "kal_public_defs.h" //MSBB change #include "stack_config.h"
+#include "kal_trace.h"
+#include "nvram_editor_data_item.h"
+#include "stack_types.h"
+#include "syscomp_config.h"
+//MSBB remove #include "custom_config.h"
+#include "stack_buff_pool.h"
+#include "ctrl_buff_pool.h"
+
+#include "device.h"
+#include "l1audio.h"
+#include "resource_audio.h"
+#include "custom_equipment.h"
+#include "custom_hw_default.h"
+#include "custom_em.h"
+
+/*
+**   Typedefs
+*/
+
+/*
+**   Defines
+*/
+
+/* 
+**   Extern Functions
+*/
+#ifndef __CUST_NEW__
+extern void GPIO_WriteIO(char data, char port);
+extern void PWM_level(kal_uint8 level);
+extern void PWM2_level(kal_uint8 level);
+#endif /* __CUST_NEW__ */
+//extern void Alter_level(kal_uint8 level);
+
+/* 
+**   Extern Varibales 
+*/
+
+
+/* 
+**   Globol Varibales 
+*/
+
+/* 
+**   Local Functions 
+*/
+
+/* 
+**   Local Variables 
+*/
+//static kal_uint8  l_ext_device_id = EXT_DEV_NONE;
+
+#ifndef __CUST_NEW__
+/***********************************************************
+  **
+  **  GPIO MAPPING TABLE
+  **
+  ***********************************************************/
+
+const unsigned char netname[][MAX_NETNAME_TEXT] = {
+   "GPIO#0",
+   "GPIO#1",
+   "GPIO#2",
+   "GPIO#3",
+   "GPIO#4",
+   "GPIO#5",
+   "GPIO#6",
+   "GPIO#7",
+   "GPIO#8",
+   "GPIO#9",
+   "GPIO#10",
+   "GPIO#11",
+   "GPIO#12",
+   "GPIO#13",
+   "GPIO#14",
+   "GPIO#15",
+   "GPIO#16",
+   "GPIO#17",
+   "GPIO#18",
+   "GPIO#19",
+   "GPIO#20",
+   "GPO#1",
+   "GPO#2",
+   "GPO#3"
+};
+
+
+
+GPIO_MAP_ENTRY gpio_map_tbl[] = {
+/*GPIO_LABEL_LED_LCD */      {GPIO_VAILD, GPIO_PORT_12, netname[GPIO_PORT_12], NULL },
+/*GPIO_LABEL_DEV_LED_KEY */      {GPIO_VAILD, GPIO_PORT_13, netname[GPIO_PORT_13], NULL },
+/*GPIO_LABEL_DEV_LED_STATUS */      {GPIO_VAILD, GPIO_PORT_14, netname[GPIO_PORT_14], NULL },
+/*GPIO_LABEL_DEV_VIBRATOR */      {GPIO_VAILD, GPIO_PORT_15, netname[GPIO_PORT_15], NULL },
+/*GPIO_LABELID_4 */      {GPIO_INVAILD, GPIO_PORT_4, netname[GPIO_PORT_4], NULL },
+/*GPIO_LABELID_5 */      {GPIO_INVAILD, GPIO_PORT_5, netname[GPIO_PORT_5], NULL },
+/*GPIO_LABELID_6 */      {GPIO_INVAILD, GPIO_PORT_6, netname[GPIO_PORT_6], NULL },
+/*GPIO_LABELID_7 */      {GPIO_INVAILD, GPIO_PORT_7, netname[GPIO_PORT_7], NULL },
+/*GPIO_LABELID_8 */      {GPIO_INVAILD, GPIO_PORT_8, netname[GPIO_PORT_8], NULL },
+/*GPIO_LABELID_9 */      {GPIO_INVAILD, GPIO_PORT_9, netname[GPIO_PORT_9], NULL },
+/*GPIO_LABELID_10 */      {GPIO_INVAILD, GPIO_PORT_10, netname[GPIO_PORT_10], NULL },
+/*GPIO_LABELID_11 */      {GPIO_INVAILD, GPIO_PORT_11, netname[GPIO_PORT_11], NULL },
+/*GPIO_LABELID_12 */      {GPIO_INVAILD, GPIO_PORT_12, netname[GPIO_PORT_12], NULL },
+/*GPIO_LABELID_13 */      {GPIO_INVAILD, GPIO_PORT_13, netname[GPIO_PORT_13], NULL },
+/*GPIO_LABELID_14 */      {GPIO_INVAILD, GPIO_PORT_14, netname[GPIO_PORT_14], NULL },
+/*GPIO_LABELID_15 */      {GPIO_INVAILD, GPIO_PORT_15, netname[GPIO_PORT_15], NULL },
+/*GPIO_LABELID_16 */      {GPIO_INVAILD, GPIO_PORT_16, netname[GPIO_PORT_16], NULL },
+/*GPIO_LABELID_17 */      {GPIO_INVAILD, GPIO_PORT_17, netname[GPIO_PORT_17], NULL },
+/*GPIO_LABELID_18 */      {GPIO_INVAILD, GPIO_PORT_18, netname[GPIO_PORT_18], NULL },
+/*GPIO_LABELID_19 */      {GPIO_INVAILD, GPIO_PORT_19, netname[GPIO_PORT_19], NULL },
+/*GPIO_LABELID_20 */      {GPIO_INVAILD, GPIO_PORT_20, netname[GPIO_PORT_20], NULL },
+/*GPO_LABELID_1 */      {GPIO_INVAILD, 0, netname[21], NULL },
+/*GPO_LABELID_2 */      {GPIO_INVAILD, 0, netname[22], NULL },
+/*GPO_LABELID_3 */      {GPIO_INVAILD, 0, netname[23], NULL }
+};
+
+
+
+
+/***********************************************************
+  **
+  **  EINT MAPPING TABLE  ( Execution Table )
+  **
+  ***********************************************************/
+
+const unsigned char eintname[][MAX_NETNAME_TEXT] = {
+   "Charger",
+   "Cable",
+   "SendKey",
+   "Earphone",
+   "ClamShell"
+};
+
+GPIO_MAP_ENTRY eint_map_tbl[] = {
+/*EINT_LABELID_0 */      {GPIO_VAILD, 0, eintname[0], NULL },
+/*EINT_LABELID_1 */      {GPIO_VAILD, 1, eintname[1], NULL },
+/*EINT_LABELID_2 */      {GPIO_VAILD, 1, eintname[2], NULL },
+/*EINT_LABELID_3 */      {GPIO_VAILD, 1, eintname[3], NULL },
+/*EINT_LABELID_4 */      {GPIO_INVAILD, 2, eintname[4], NULL },
+};
+
+
+
+/***********************************************************
+  **
+  **  ADC MAPPING TABLE  ( Execution Table )
+  **
+  ***********************************************************/
+const unsigned char adcname[][MAX_NETNAME_TEXT] = {
+   "VBAT",
+   "BTemp",
+   "VAUX",
+   "Current",
+   "VChgr"
+};
+
+GPIO_MAP_ENTRY adc_map_tbl[] = {
+/*ADC_LABELID_0 */      {GPIO_VAILD, 0, adcname[0], NULL },
+/*ADC_LABELID_1 */      {GPIO_VAILD, 1, adcname[1], NULL },
+/*ADC_LABELID_2 */      {GPIO_VAILD, 2, adcname[2], NULL },
+/*ADC_LABELID_3 */      {GPIO_VAILD, 3, adcname[3], NULL },
+/*ADC_LABELID_4 */      {GPIO_VAILD, 4, adcname[4], NULL },
+};
+#endif /* __CUST_NEW__*/
+
+/* 
+*   Function 
+*      custom_cfg_vbat_level_regulator
+*   DESCRIPTION
+*      The function is used to convert the vbat value to the end-user level .
+*     And it will be call by audio manager.
+*   PARAMETERS
+*     vbat      IN
+*   RETURNS
+*      kal_uint8
+*   GLOBALS AFFECTED
+*/
+kal_uint8 custom_cfg_vbat_level_regulator( kal_uint32 measure_voltage, kal_uint8 *last_level, kal_uint8 *disp_level, kal_uint8 *hit_count )
+{
+   kal_uint8 level=0; 
+   //kal_uint8 regulated_level=0; 
+
+   for( level=0; level<BATTERY_MAX_LEVEL; level++)
+      if( measure_voltage <= Battery_Level_Info[level] )
+         break;
+         
+   if( level > *disp_level )
+      {
+            for( level=0; level<BATTERY_MAX_LEVEL; level++)
+               if( measure_voltage <= (Battery_Level_Info[level] + VBAT_GROWUP_PENALTY) )
+                  break;
+      }
+
+   if( level == *last_level )
+      {
+           if( *hit_count >= VBAT_HIT_COUNT_BOUND )
+            {
+                 //regulated_level = *disp_level = level;
+            }
+           else 
+           {
+                (*hit_count)++;
+                //regulated_level = *disp_level;
+            }
+      }
+   else
+      {
+           *hit_count=1;
+           //regulated_level = *disp_level;
+
+      }
+   
+  *last_level = level;
+
+   if( level <= BATTERY_LOW_WARNING )
+      return ( level );
+   else
+   return ( *disp_level );
+   
+}
+
+/*
+*      custom_cfg_vbat_level_convert
+*   DESCRIPTION
+*      The function is used to convert the vbat value to the end-user level .
+*     And it will be call by audio manager.
+*   PARAMETERS
+*     vbat      IN
+*   RETURNS
+*      kal_uint8
+*   GLOBALS AFFECTED
+*/
+kal_uint8 custom_cfg_vbat_level_convert
+(
+ kal_int32  vbat
+ )
+{
+   /*----------------------------------------------------------------*/
+   /* Local Variables                                                */
+   /*----------------------------------------------------------------*/
+   kal_uint8 level=0; /* the level could be customized by user */
+   /*----------------------------------------------------------------*/
+   /* Code Body                                                      */
+   /*----------------------------------------------------------------*/
+
+   for( level=0; level<BATTERY_MAX_LEVEL; level++)
+      if( vbat <= Battery_Level_Info[level] )
+         return level;
+      
+   return (BATTERY_MAX_LEVEL-1);
+
+}
+
+/*
+*      custom_cfg_vbat_percentage_convert
+*   DESCRIPTION
+*      The function is used to convert the vbat value to the end-user level .
+*     And it will be call by audio manager.
+*   PARAMETERS
+*     vbat      IN
+*   RETURNS
+*      kal_uint8
+*   GLOBALS AFFECTED
+*/
+kal_uint32 custom_cfg_vbat_percentage_convert
+(
+ kal_uint32  vbat
+ )
+{
+   kal_uint32 int_result;
+   double result;
+
+   if( BATLEV_MAX_IDX == 0 )
+   {
+      ASSERT(BATLEV_MAX_VOLTAGE > 0);
+      result = (double)vbat/(double)BATLEV_MAX_VOLTAGE;
+      
+   }
+   else if( BATLEV_MAX_IDX > 0 && BATLEV_MAX_IDX < BATTERY_MAX_LEVEL ) 
+   {
+      ASSERT(Battery_Level_Info[BATLEV_MAX_IDX] > 0);
+      result = (double)vbat/(double)Battery_Level_Info[BATLEV_MAX_IDX] ;
+   }
+   else
+   {
+       result = 0.0;
+   }
+   
+   int_result = (kal_uint32) (result * 10000);
+   
+   return (int_result);
+}
+
+#ifndef __CUST_NEW__
+/***********************************************************
+  **
+  **  GPIO SETTTING
+  **
+  ***********************************************************/
+
+
+
+/* 
+*   Function 
+*      custom_cfg_outward_gpio_port
+*   DESCRIPTION
+*      The function is used to handle the port number of the outward gpio device.
+*     And it will be call by audio manager.
+*   PARAMETERS
+*     gpio_device_id      IN
+*     port_num            IN/OUT
+*   RETURNS
+*      kal_bool
+*   GLOBALS AFFECTED
+*/
+kal_uint8 custom_cfg_outward_gpio_port(  kal_uint8  gpio_device_id /* gpio_device_enum */)
+{
+   if( (gpio_device_id < GPIO_LABELID_MAX) && (gpio_map_tbl[gpio_device_id].vaild != GPIO_INVAILD) )
+      return gpio_map_tbl[gpio_device_id].port;
+   else
+      return 0;
+}
+
+
+
+
+kal_bool custom_cfg_gpio_set_level(kal_uint8 gpio_dev_type, kal_uint8 gpio_dev_level )
+{
+   kal_bool res=KAL_TRUE;
+#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 !*/
+/* 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 !*/
+/* under construction !*/
+#endif
+   return res;
+}
+
+void custom_start_flashlight(kal_uint8 red_level, kal_uint8 green_level, kal_uint8 blue_level, kal_uint8 duty)
+{
+	custom_cfg_gpio_set_level(GPIO_DEV_LED_STATUS_1, ((red_level>0) ? LED_LIGHT_LEVEL5 : LED_LIGHT_LEVEL0));
+	custom_cfg_gpio_set_level(GPIO_DEV_LED_STATUS_2, ((green_level>0) ? LED_LIGHT_LEVEL5 : LED_LIGHT_LEVEL0));
+	custom_cfg_gpio_set_level(GPIO_DEV_LED_STATUS_3, ((blue_level>0) ? LED_LIGHT_LEVEL5 : LED_LIGHT_LEVEL0));
+#if defined(DRV_PWM_PWM2)
+       PWM2_Configure(PWM2_Level_Info[0][0], duty);   
+       PWM2_Start();
+#endif
+}
+
+void custom_stop_flashlight(void)
+{ 
+       custom_cfg_gpio_set_level(GPIO_DEV_LED_STATUS_1, LED_LIGHT_LEVEL0);
+       custom_cfg_gpio_set_level(GPIO_DEV_LED_STATUS_2, LED_LIGHT_LEVEL0);
+       custom_cfg_gpio_set_level(GPIO_DEV_LED_STATUS_3, LED_LIGHT_LEVEL0);
+#if defined(DRV_PWM_PWM2)
+       PWM2_Stop();
+#endif
+}
+#endif /* __CUST_NEW__ */
+
+#endif /* !__L1_STANDALONE__ */
+
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_equipment.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_equipment.h
new file mode 100644
index 0000000..e837230
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_equipment.h
@@ -0,0 +1,416 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   custom_config.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file provides the custom task index and module index configuration.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _CUSTOM_EQUIPMENT_H
+#define _CUSTOM_EQUIPMENT_H
+
+#include "kal_general_types.h"
+
+#define VBAT_HIT_COUNT_BOUND  3
+#define VBAT_GROWUP_PENALTY  (30 /*mA*/ * 1000 )
+
+// MTK_BEGIN Lisen added
+#define LCD_CLAM_CLOSE_HALFLITE_TO_OFF_TIME 15000
+#define LCD_CLAM_OPEN_HALFLITE_TO_OFF_TIME 15000
+// MTK_END
+
+#define GPIO_OFF  0x0
+#define GPIO_ON    0x1
+
+typedef struct _GPIO_MAP_ENTRY {
+   unsigned char vaild;
+   unsigned char port;
+   const unsigned char *netname;
+   const unsigned char *netname2;
+} GPIO_MAP_ENTRY;
+
+#ifndef __CUST_NEW__
+typedef enum {
+   GPIO_PORT_0 = 0x0,
+   GPIO_PORT_1,
+   GPIO_PORT_2,
+   GPIO_PORT_3,
+   GPIO_PORT_4,
+   GPIO_PORT_5,
+   GPIO_PORT_6,
+   GPIO_PORT_7,
+   GPIO_PORT_8,
+   GPIO_PORT_9,
+   GPIO_PORT_10,
+   GPIO_PORT_11,
+   GPIO_PORT_12,
+   GPIO_PORT_13,
+   GPIO_PORT_14,
+   GPIO_PORT_15,
+   GPIO_PORT_16,
+   GPIO_PORT_17,
+   GPIO_PORT_18,
+   GPIO_PORT_19,
+   GPIO_PORT_20,
+   GPIO_PORT_21,
+   GPIO_PORT_22,
+   GPIO_PORT_23,
+   GPIO_PORT_24,
+   GPIO_PORT_25,
+   GPIO_PORT_26,
+   GPIO_PORT_27,
+   GPIO_PORT_28,
+   GPIO_PORT_29,
+   GPIO_PORT_30,
+   GPIO_PORT_31,
+   GPIO_PORT_32,
+   GPIO_PORT_33,
+   GPIO_PORT_34,
+   GPIO_PORT_35,
+   GPIO_PORT_36,
+   GPIO_PORT_37,
+   GPIO_PORT_38,
+   GPIO_PORT_39,
+   GPIO_PORT_40,
+   GPO_PORT_0,
+   GPO_PORT_1,
+   GPO_PORT_2,
+
+   /* shound NOT modify this value*/
+   GPIO_PORT_MAX
+} GPIO_PORT_ENUM;
+
+
+typedef enum {
+   GPIO_LABEL_LED_LCD = 0x0,
+   GPIO_LABEL_DEV_LED_KEY,
+   GPIO_LABEL_DEV_LED_STATUS,
+   GPIO_LABEL_DEV_VIBRATOR,
+   GPIO_LABELID_4,
+   GPIO_LABELID_5,
+   GPIO_LABELID_6,
+   GPIO_LABELID_7,
+   GPIO_LABELID_8,
+   GPIO_LABELID_9,
+   GPIO_LABELID_11,
+   GPIO_LABELID_10,
+   GPIO_LABELID_12,
+   GPIO_LABELID_13,
+   GPIO_LABELID_14,
+   GPIO_LABELID_15,
+   GPIO_LABELID_16,
+   GPIO_LABELID_17,
+   GPIO_LABELID_18,
+   GPIO_LABELID_19,
+   GPIO_LABELID_20,
+   GPIO_LABELID_21,
+   GPIO_LABELID_22,
+   GPIO_LABELID_23,
+   GPIO_LABELID_24,
+   GPIO_LABELID_25,
+   GPIO_LABELID_26,
+   GPIO_LABELID_27,
+   GPIO_LABELID_28,
+   GPIO_LABELID_29,
+   GPIO_LABELID_30,
+   GPIO_LABELID_31,
+   GPIO_LABELID_32,
+   GPIO_LABELID_33,
+   GPIO_LABELID_34,
+   GPIO_LABELID_35,
+   GPIO_LABELID_36,
+   GPIO_LABELID_37,
+   GPIO_LABELID_38,
+   GPIO_LABELID_39,
+   GPIO_LABELID_40,
+   GPO_LABELID_0,
+   GPO_LABELID_1,
+   GPO_LABELID_2,
+
+   /* shound NOT modify this value*/
+   GPIO_LABELID_MAX
+} GPIO_LABELID_ENUM;
+
+
+typedef enum {
+
+   EINT_LABELID_0 = 0x0,
+   EINT_LABELID_1,
+   EINT_LABELID_2,
+   EINT_LABELID_3,
+   EINT_LABELID_4,
+
+   EINT_LABELID_MAX = EINT_LABELID_4
+   
+} EINT_LABELID_ENUM;
+
+typedef enum {
+
+   ADC_LABELID_0 = 0x0,
+   ADC_LABELID_1,
+   ADC_LABELID_2,
+   ADC_LABELID_3,
+   ADC_LABELID_4,
+
+   ADC_LABELID_MAX = ADC_LABELID_4
+   
+} ADC_LABELID_ENUM;
+
+#else /* __CUST_NEW__ */
+
+extern const kal_uint8 GPIO_LABELID_MAX;
+extern const kal_uint8 EINT_LABELID_MAX;
+extern const kal_uint8 ADC_LABELID_MAX;
+extern kal_uint8 EmGpioIdxMenu2Tbl[];
+
+#endif /* __CUST_NEW__ */
+
+
+extern GPIO_MAP_ENTRY gpio_map_tbl[];
+extern GPIO_MAP_ENTRY eint_map_tbl[];
+extern GPIO_MAP_ENTRY adc_map_tbl[];
+
+extern void custom_cfg_audio_ec_range
+(
+ kal_uint8 *min_vol, /* min volume level */
+ kal_uint8 *max_vol /* max volume level */
+ );
+
+extern kal_bool custom_cfg_audio_out_device
+(
+ kal_uint8 audio_sound_id, /* audio_id_enum */
+ kal_uint8 *out_device_path /* audio_type_enum */
+ );
+
+extern kal_bool custom_cfg_speech_out_device
+(
+ kal_uint8  ext_device_id, /* ext_device_enum */
+ kal_uint8 *out_device_path /* audio_type_enum */
+ );
+
+extern kal_uint8 custom_cfg_hw_aud_output_path
+(
+   kal_uint8 speaker_id /*audio_type_enum*/
+   
+   /* return  l1sp audio output device enum */
+);
+
+extern kal_uint8 custom_cfg_hw_aud_input_path
+(
+   kal_uint8 mic_id /* audio_input_path_enum */
+);
+
+
+extern kal_uint8 custom_cfg_outward_gpio_port
+(
+ kal_uint8  gpio_device_id /* gpio_device_enum */
+ );
+
+extern kal_bool custom_cfg_gpio_set_level
+   (
+   kal_uint8 gpio_dev_type, /* gpio_device_enum */
+   kal_uint8 gpio_dev_level 
+   );
+
+
+extern kal_uint8 custom_cfg_vbat_level_convert
+(
+ kal_int32  vbat
+ );
+
+extern kal_uint8 custom_cfg_vbat_level_regulator
+(
+ kal_uint32 measure_voltage, 
+ kal_uint8 *last_level, 
+ kal_uint8 *disp_level, 
+ kal_uint8 *hit_count 
+ );
+
+extern void custom_start_flashlight(kal_uint8 red_level, kal_uint8 green_level, kal_uint8 blue_level, kal_uint8 duty);
+
+extern void custom_stop_flashlight(void);
+
+#endif /* _CUSTOM_EQUIPMENT_H */
+
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_hw_default.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_hw_default.c
new file mode 100644
index 0000000..03f1a64
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_hw_default.c
@@ -0,0 +1,480 @@
+#if !defined(__LTE_SM__)
+
+/*****************************************************************************
+*  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:
+ * ---------
+ *   custom_hw_default.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   The file contains definition of custom component module configuration
+ *   variables, and routines handle for equipment device.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+/*
+**   Includes
+*/
+
+
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"
+#include "custom_hw_default.h"
+
+#ifndef __L1_STANDALONE__
+
+#include "stack_types.h"
+#include "syscomp_config.h"
+//MSBB remove #include "custom_config.h"
+#include "stack_buff_pool.h"
+#include "ctrl_buff_pool.h"
+
+//#include "custom_nvram_editor_data_item.h"
+#include "nvram_editor_data_item.h"
+#include "l4_nvram_editor.h"
+#endif /* __L1_STANDALONE__ */
+
+
+ 
+/* 
+**   Globol Varibales 
+*/
+
+#if ( (defined(MT6326))  )
+kal_uint8 PMIC6326_KP_Level_Info[5][2] = 
+{
+   /*Freq,duty*/
+   /*Freq, unit is HZ */
+   /*Freq, unit is HZ */
+   /*Duty, uint is % */
+   {200,20},     /*Level 1*/
+   {200,40},     /*Level 2*/
+   {200,60},     /*Level 3*/
+   {200,80},    /*Level 4*/
+   {200,100}     /*Level 5*/
+};
+kal_uint8 PMIC6326_MAINLCD_Level_Info[5][2] = 
+{
+   /*(Freq,duty)*/
+   /*Freq, unit is HZ */
+   /*Duty, uint is % */
+   {200,20},     /*Level 1*/
+   {200,40},     /*Level 2*/
+   {200,60},     /*Level 3*/
+   {200,80},    /*Level 4*/
+   {200,100}     /*Level 5*/
+};
+kal_uint8 PMIC6326_VIBR_Level_Info[5][2] = 
+{
+   /*(Freq,duty)*/
+   /*Freq, unit is HZ */
+   /*Duty, uint is % */
+   {200,20},     /*Level 1*/
+   {200,40},     /*Level 2*/
+   {200,60},     /*Level 3*/
+   {200,80},    /*Level 4*/
+   {200,100}     /*Level 5*/
+};
+
+#endif // #if ( (defined(MT6326))  )
+
+
+kal_uint32 PWM1_Level_Info[PWM_MAX_LEVEL][2] = 
+{
+   /*Freq,duty*/
+   {200,20},    /*Level 1*/
+   {200,40},    /*Level 2*/
+   {200,60},    /*Level 3*/
+   {200,80},    /*Level 4*/
+   {200,100}    /*Level 5*/
+};
+
+kal_uint32 PWM2_Level_Info[PWM_MAX_LEVEL][2] = 
+{
+   /*Freq,duty*/
+   {200,20},    /*Level 1*/
+   {200,40},    /*Level 2*/
+   {200,60},    /*Level 3*/
+   {200,80},    /*Level 4*/
+   {200,100}    /*Level 5*/
+};
+
+kal_uint32 PWM3_Level_Info[PWM_MAX_LEVEL][2] = 
+{
+   /*Freq,duty*/
+   {200,20},    /*Level 1*/
+   {200,40},    /*Level 2*/
+   {200,60},    /*Level 3*/
+   {200,80},    /*Level 4*/
+   {200,100}    /*Level 5*/
+};
+// PWM4, 5, 6 for old PWN configuration begin
+kal_uint32 PWM4_Level_Info[PWM_MAX_LEVEL][2] = 
+{
+   /*Freq,duty*/
+   {200,20},    /*Level 1*/
+   {200,40},    /*Level 2*/
+   {200,60},    /*Level 3*/
+   {200,80},    /*Level 4*/
+   {200,100}    /*Level 5*/
+};
+
+// We use PWM5 as LCD backlight
+// And the LCD backlight component is configured insided to invert the signal from PWM
+// So we need to invert duty setting for each level
+kal_uint32 PWM5_Level_Info[PWM_MAX_LEVEL][2] = 
+{
+   /*Freq,duty*/
+   {200,80},    /*Level 1*/
+   {200,60},    /*Level 2*/
+   {200,40},    /*Level 3*/
+   {200,20},    /*Level 4*/
+   {200,0}    /*Level 5*/
+};
+kal_uint32 PWM6_Level_Info[PWM_MAX_LEVEL][2] = 
+{
+   /*Freq,duty*/
+   {200,20},    /*Level 1*/
+   {200,40},    /*Level 2*/
+   {200,60},    /*Level 3*/
+   {200,80},    /*Level 4*/
+   {200,100}    /*Level 5*/
+};
+// PWM4, 5, 6 for old PWN configuration end
+
+kal_uint32 Alter_Level_Info[PWM_MAX_LEVEL][2] = 
+{
+   /*Freq,duty*/
+   {200,20},    /*Level 1*/
+   {200,40},    /*Level 2*/
+   {200,60},    /*Level 3*/
+   {200,80},    /*Level 4*/
+   {200,100}    /*Level 5*/
+};
+
+#if defined(MT6318)
+kal_uint32 PMIC6318_PWM_Level_Info[PWM_MAX_LEVEL][2] = 
+{
+   /*Freq,duty*/
+   {200,20},    /*Level 1*/
+   {200,40},    /*Level 2*/
+   {200,60},    /*Level 3*/
+   {200,80},    /*Level 4*/
+   {200,100}    /*Level 5*/
+};
+
+kal_uint16 pmic_custom_get_bl_pmw_type(void)
+{
+   // Choose BL_LED or KP_LED. If no use, just return 0.
+   return BL_LED;
+}
+#endif
+
+const kal_uint8 DEFAULT_HARDWARE_YEAR = 4; //2004
+const kal_uint8 DEFAULT_HARDWARE_MON = 1;
+const kal_uint8 DEFAULT_HARDWARE_DAY = 1;
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+//50ms * 10 = 0.5 sec
+const kal_uint32 ADC_BOOTUP_EVAL_PERIOD  =  KAL_TICKS_50_MSEC;  
+const kal_uint32 ADC_BOOTUP_EVAL_COUNT   =  10;
+
+//10sec * 6 = 1min
+const kal_uint32 ADC_IDLE_EVAL_PERIOD  =  (2*KAL_TICKS_5_SEC);
+const kal_uint32 ADC_IDLE_EVAL_COUNT   =   6;
+
+//5sec * 6 = 30sec
+const kal_uint32 ADC_TALKING_EVAL_PERIOD  = (KAL_TICKS_5_SEC);
+const kal_uint32 ADC_TALKING_EVAL_COUNT   =  6;
+
+//150 * 10 ms = 1.5 sec  (unit : 10ms )
+const kal_uint32 KPD_LONGPRESS_PERIOD  = 60;
+
+//50 * 10ms = 0.5 sec  (unit : 10ms )
+const kal_uint32 KPD_REPEAT_PERIOD     = 50;
+
+#ifndef __L1_STANDALONE__
+
+kal_uint8   MainLCD_Contrast_Level_Info[LCD_CONTRAST_MAX_LEVEL];
+kal_uint8   MainLCD_Bias_Level_Info[LCD_PARAM_MAX_LEVEL];
+kal_uint8   MainLCD_Linerate_Level_Info[LCD_PARAM_MAX_LEVEL];
+kal_uint8   MainLCD_Temp_Level_Info[LCD_PARAM_MAX_LEVEL];
+   
+#ifdef DUAL_LCD
+kal_uint8   SubLCD_Contrast_Level_Info[LCD_CONTRAST_MAX_LEVEL];
+kal_uint8   SubLCD_Bias_Level_Info[LCD_PARAM_MAX_LEVEL];
+kal_uint8   SubLCD_Linerate_Level_Info[LCD_PARAM_MAX_LEVEL];
+kal_uint8   SubLCD_Temp_Level_Info[LCD_PARAM_MAX_LEVEL];
+#endif
+
+kal_uint32   Battery_Level_Info[BATTERY_MAX_LEVEL];
+
+
+void  custom_init_hardware_level(void *hw_level_struct)
+{
+    kal_uint8 i, j;
+
+   custom_hw_level_struct *hw_level = (custom_hw_level_struct *)hw_level_struct;
+
+    for( i=0; i< LCD_CONTRAST_MAX_LEVEL; i++ )
+    {
+        MainLCD_Contrast_Level_Info[i]= hw_level->MainLCD_Contrast[i];
+#ifdef DUAL_LCD        
+        SubLCD_Contrast_Level_Info[i]= hw_level->SubLCD_Contrast[i];
+#endif        
+    }
+
+    for( i=0; i< LCD_PARAM_MAX_LEVEL; i++ )
+    {
+        MainLCD_Bias_Level_Info[i]= hw_level->MainLCD_Bias[i];
+        MainLCD_Linerate_Level_Info[i]= hw_level->MainLCD_Linerate[i];
+        MainLCD_Temp_Level_Info[i] =  hw_level->MainLCD_Temp[i];
+#ifdef DUAL_LCD
+        SubLCD_Bias_Level_Info[i]= hw_level->SubLCD_Bias[i];
+        SubLCD_Linerate_Level_Info[i]= hw_level->SubLCD_Linerate[i];
+        SubLCD_Temp_Level_Info[i] =  hw_level->SubLCD_Temp[i];
+#endif        
+    }
+
+    for( i=0; i< BATTERY_MAX_LEVEL; i++ )
+      Battery_Level_Info[i] = hw_level->BatteryLevel[i];
+
+   for( i=0; i<PWM_MAX_LEVEL; i++ )
+      for( j=0; j<2; j++ )
+         {
+               PWM1_Level_Info[i][j] = hw_level->PWM1[i][j];
+               PWM2_Level_Info[i][j] = hw_level->PWM2[i][j];
+               Alter_Level_Info[i][j] = hw_level->PWM3[i][j];
+         }
+      
+#if defined(MT6318)   
+   for( i=0; i<PWM_MAX_LEVEL; i++ )
+      for( j=0; j<2; j++ )
+         {
+             PMIC6318_PWM_Level_Info[i][j] = hw_level->PMIC6318BLPWM[i][j];
+         }
+#endif      
+
+}
+
+#endif /* __L1_STANDALONE__ */
+
+#endif /* end of __LTE_SM__ */
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_hw_default.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_hw_default.h
new file mode 100644
index 0000000..ce4ef97
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_hw_default.h
@@ -0,0 +1,160 @@
+/*****************************************************************************
+*  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).
+*
+*****************************************************************************/
+
+/* Configure which backlight source we use */
+#define EXTERNAL_BL_DRIVER_SOURCE
+//#define INTERNAL_BL_DRIVER_SOURCE
+
+/* LED_MAINLCD PWM Configuration */
+#define PWM_MAX_LEVEL 5
+
+#if defined(__MULTI_LEVEL_BACKLIGHT_SUPPORT__)
+#define PWM_MAX_BACKLIGHT_LEVEL     20
+#else
+#define PWM_MAX_BACKLIGHT_LEVEL     PWM_MAX_LEVEL
+#endif // End of #if defined(__MULTI_LEVEL_BACKLIGHT_SUPPORT__)
+
+#if defined(EXTERNAL_BL_DRIVER_SOURCE)
+
+// #define LED_MAINLCD_USE_PWM_1
+// #define LED_MAINLCD_USE_PWM_2
+#define LED_MAINLCD_USE_PWM_3
+//#define LED_MAINLCD_USE_PWM_NONE
+
+#if !defined(LED_MAINLCD_USE_PWM_NONE)
+
+#define EXTERNAL_BL_DRIVER_STEPS    PWM_MAX_BACKLIGHT_LEVEL
+
+#else
+
+#define EXTERNAL_BL_DRIVER_STEPS    (16)
+
+#endif
+
+#elif defined(INTERNAL_BL_DRIVER_SOURCE)
+
+// #define LED_MAINLCD_USE_PWM_1
+#define LED_MAINLCD_USE_PWM_2
+// #define LED_MAINLCD_USE_PWM_3
+// #define LED_MAINLCD_USE_PWM_NONE
+
+#endif // End of #if defined(__EXTERNAL_BL_DRIVER_SOURCE__)
+
+/* LED_SUBLCD PWM Configuration */
+// #define LED_SUBLCD_USE_PWM_1
+// #define LED_SUBLCD_USE_PWM_2
+// #define LED_SUBLCD_USE_PWM_3
+#define LED_SUBLCD_USE_PWM_NONE
+
+/* LED_KEY PWM Configuration */
+#define LED_KEY_USE_PWM_1
+// #define LED_KEY_USE_PWM_2
+// #define LED_KEY_USE_PWM_3
+// #define LED_KEY_USE_PWM_NONE
+
+/* VIBRATOR PWM Configuration */
+// #define VIBRATOR_USE_PWM_1
+// #define VIBRATOR_USE_PWM_2
+// #define VIBRATOR_USE_PWM_3
+#define VIBRATOR_USE_PWM_NONE
+
+#define LCD_CONTRAST_MAX_LEVEL 15
+#define LCD_PARAM_MAX_LEVEL 5
+#define BATTERY_MAX_LEVEL 10
+
+extern const kal_uint8 DEFAULT_HARDWARE_YEAR;
+extern const kal_uint8 DEFAULT_HARDWARE_MON;
+extern const kal_uint8 DEFAULT_HARDWARE_DAY;
+
+/* For AT command query voltage percentage */
+#define BATLEV_MAX_IDX          0 /* 0: turn off, reference to BATLEV_MAX_VOLTAGE directly */
+#define BATLEV_MAX_VOLTAGE 4200000
+
+
+extern const kal_uint32 ADC_BOOTUP_EVAL_PERIOD;
+extern const kal_uint32 ADC_BOOTUP_EVAL_COUNT;
+extern const kal_uint32 ADC_IDLE_EVAL_PERIOD;
+extern const kal_uint32 ADC_IDLE_EVAL_COUNT;
+extern const kal_uint32 ADC_TALKING_EVAL_PERIOD;
+extern const kal_uint32 ADC_TALKING_EVAL_COUNT;
+
+extern const kal_uint32 KPD_LONGPRESS_PERIOD;
+extern const kal_uint32 KPD_REPEAT_PERIOD;
+
+#if defined(__MULTI_LEVEL_BACKLIGHT_SUPPORT__) && defined(LED_MAINLCD_USE_PWM_1)
+extern kal_uint32 PWM1_Level_Info[PWM_MAX_BACKLIGHT_LEVEL][2];
+#else
+extern kal_uint32 PWM1_Level_Info[PWM_MAX_LEVEL][2];
+#endif
+
+#if defined(__MULTI_LEVEL_BACKLIGHT_SUPPORT__) && defined(LED_MAINLCD_USE_PWM_2)
+extern kal_uint32 PWM2_Level_Info[PWM_MAX_BACKLIGHT_LEVEL][2];
+#else
+extern kal_uint32 PWM2_Level_Info[PWM_MAX_LEVEL][2];
+#endif
+
+#if defined(__MULTI_LEVEL_BACKLIGHT_SUPPORT__) && defined(LED_MAINLCD_USE_PWM_3)
+extern kal_uint32 PWM3_Level_Info[PWM_MAX_BACKLIGHT_LEVEL][2];
+#else
+extern kal_uint32 PWM3_Level_Info[PWM_MAX_LEVEL][2];
+#endif
+
+// PWM4, 5, 6 for old PWN configuration begin
+extern kal_uint32 PWM4_Level_Info[PWM_MAX_LEVEL][2];
+extern kal_uint32 PWM5_Level_Info[PWM_MAX_LEVEL][2];
+extern kal_uint32 PWM6_Level_Info[PWM_MAX_LEVEL][2];
+// PWM4, 5, 6 for old PWN configuration end
+
+extern kal_uint32 Alter_Level_Info[PWM_MAX_LEVEL][2];
+
+extern kal_uint8   MainLCD_Contrast_Level_Info[LCD_CONTRAST_MAX_LEVEL];
+extern kal_uint8   MainLCD_Bias_Level_Info[LCD_PARAM_MAX_LEVEL];
+extern kal_uint8   MainLCD_Linerate_Level_Info[LCD_PARAM_MAX_LEVEL];
+extern kal_uint8   MainLCD_Temp_Level_Info[LCD_PARAM_MAX_LEVEL];
+   
+#ifdef DUAL_LCD
+extern kal_uint8   SubLCD_Contrast_Level_Info[LCD_CONTRAST_MAX_LEVEL];
+extern kal_uint8   SubLCD_Bias_Level_Info[LCD_PARAM_MAX_LEVEL];
+extern kal_uint8   SubLCD_Linerate_Level_Info[LCD_PARAM_MAX_LEVEL];
+extern kal_uint8   SubLCD_Temp_Level_Info[LCD_PARAM_MAX_LEVEL];
+#endif
+
+extern kal_uint32   Battery_Level_Info[BATTERY_MAX_LEVEL];
+
+#if defined(MT6318)
+extern kal_uint32 PMIC6318_PWM_Level_Info[PWM_MAX_LEVEL][2];
+extern kal_uint16 pmic_custom_get_bl_pmw_type(void);
+#endif
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_sim_driver.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_sim_driver.c
new file mode 100644
index 0000000..3660d5c
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/custom_sim_driver.c
@@ -0,0 +1,850 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * custom_sim_driver.C
+ *
+ * Project:
+ * --------
+ *   Gemini
+ *
+ * Description:
+ * ------------
+ *   this file is custom implementation of SIM driver
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#include "drv_comm.h"
+#include "reg_base.h"
+#include "intrCtrl.h"
+#include "multi_icc_custom.h"
+#include "kal_public_api.h"
+#include "sim_sw_comm.h"
+#include "sim_drv_HW_reg_MTK.h"
+#include "sim_drv_trc.h"
+
+#ifdef __SIM_HOT_SWAP_SUPPORT__
+#include "eint.h"
+#include "ccci_rpc_if.h"
+#if defined(SIM_DRV_FAST_DISCHARGE_BY_PMIC_EINT)
+#include "dcl.h"
+#endif
+#endif
+#if defined(__MTK_TARGET__)
+#ifdef DRV_SIM_ALL_SOLUTION_BUILT
+
+extern void sim_init_hwCb(void);
+extern void DRV_ICC_interface_init(SIM_ICC_APPLICATION application);
+extern kal_bool sim_physicalSlotChanged;
+extern void sim_dump_eint(sim_HW_cb *hw_cb);
+
+/*following is the template for dual SIM platform, I test it on TF68*/
+/****************************************************
+	customer and HW SA please fill from here
+*****************************************************/
+kal_char sim_dbg_custom_str[200];
+#define    PLUG_OUT_TIME_COUNT    1   // for plug out detect time can be modified
+
+#if !defined(__SIM_DRV_CO_LOAD_MT6306__)
+#if defined(SIM_DRV_SWITCH_MT6306) || defined(SIM_DRV_GEMINI_WITH_MT6306)
+#define iccSlotNum 4
+#else
+#define iccSlotNum 2
+#endif
+
+#ifdef __SIM_HOT_SWAP_SUPPORT__
+    SIM_ICC_HOT_PLUG iccHotPlugTable[iccSlotNum];
+#endif
+
+const SIM_ICC_HW_SW_MAPPING iccMappingTable[iccSlotNum] =
+{
+    /*
+    logical number, application usage from user's view, do it connect to MT6302, owned by which SIM controller, MT6302 chip #, interface # of this MT6302
+    */
+#if !defined(SIM_DRV_SWITCH_MT6306)
+    {0, SIM_ICC_APPLICATION_PHONE1, MTK_SIMIF0, KAL_FALSE, 0, 1},
+    {1, SIM_ICC_APPLICATION_PHONE2, MTK_SIMIF1, KAL_FALSE, 0, 1},
+#elif defined (SIM_DRV_GEMINI_WITH_MT6306)
+    {0, SIM_ICC_APPLICATION_PHONE1, MTK_SIMIF0, SIM_SWITCH_6306, 0, 0}, //SIM_IF0,switch0, port 0
+    {1, SIM_ICC_APPLICATION_PHONE2, MTK_SIMIF1, SIM_SWITCH_6306, 1, 0}, //SIM_IF1,switch1, port 0
+    {2, SIM_ICC_APPLICATION_PHONE3, MTK_SIMIF0, SIM_SWITCH_6306, 0, 1},
+    {3, SIM_ICC_APPLICATION_PHONE4, MTK_SIMIF1, SIM_SWITCH_6306, 1, 1},
+#else
+    {0, SIM_ICC_APPLICATION_PHONE1, MTK_SIMIF0, SIM_SWITCH_6306, 0, 0},
+    {1, SIM_ICC_APPLICATION_PHONE2, MTK_SIMIF0, SIM_SWITCH_6306, 0, 1},
+    {2, SIM_ICC_APPLICATION_PHONE3, MTK_SIMIF1, SIM_SWITCH_6306, 1, 0},
+    {3, SIM_ICC_APPLICATION_PHONE4, MTK_SIMIF1, SIM_SWITCH_6306, 1, 1},
+#endif
+};
+#else // #if !defined(__SIM_DRV_CO_LOAD_MT6306__)
+extern kal_bool sim_connectMT6306;
+kal_uint32 iccSlotNum = 4;
+
+#ifdef __SIM_HOT_SWAP_SUPPORT__
+    SIM_ICC_HOT_PLUG iccHotPlugTable[4];
+#endif
+
+SIM_ICC_HW_SW_MAPPING *iccMappingTable;
+
+SIM_ICC_HW_SW_MAPPING iccMappingTable_2SIM[2] =
+{
+    {0, SIM_ICC_APPLICATION_PHONE1, MTK_SIMIF0, KAL_FALSE, 0, 1},
+    {1, SIM_ICC_APPLICATION_PHONE2, MTK_SIMIF1, KAL_FALSE, 0, 1},
+};
+
+SIM_ICC_HW_SW_MAPPING iccMappingTable_4SIM[4] =
+{
+#if defined (SIM_DRV_GEMINI_WITH_MT6306)
+    {0, SIM_ICC_APPLICATION_PHONE1, MTK_SIMIF0, SIM_SWITCH_6306, 0, 0}, //SIM_IF0,switch0, port 0
+    {1, SIM_ICC_APPLICATION_PHONE2, MTK_SIMIF1, SIM_SWITCH_6306, 1, 0}, //SIM_IF1,switch1, port 0
+    {2, SIM_ICC_APPLICATION_PHONE3, MTK_SIMIF0, SIM_SWITCH_6306, 0, 1},
+    {3, SIM_ICC_APPLICATION_PHONE4, MTK_SIMIF1, SIM_SWITCH_6306, 1, 1},
+#else
+    {0, SIM_ICC_APPLICATION_PHONE1, MTK_SIMIF0, SIM_SWITCH_6306, 0, 0},
+    {1, SIM_ICC_APPLICATION_PHONE2, MTK_SIMIF0, SIM_SWITCH_6306, 0, 1},
+    {2, SIM_ICC_APPLICATION_PHONE3, MTK_SIMIF1, SIM_SWITCH_6306, 1, 0},
+    {3, SIM_ICC_APPLICATION_PHONE4, MTK_SIMIF1, SIM_SWITCH_6306, 1, 1},
+#endif
+};
+#endif
+
+/****************************************************
+	end of custom table
+*****************************************************/
+
+/****************************************************
+	only SW guys familiar with multiple SIM driver can modify following
+*****************************************************/
+
+void sim_init_all_cb(void)
+{
+    kal_uint32 loopIndex;
+#if defined(__SIM_DRV_CO_LOAD_MT6306__) && defined(SIM_DRV_SWITCH_MT6306)
+    extern void USIM_connect_mt6306(void);
+    USIM_connect_mt6306();
+
+    if (sim_connectMT6306 == KAL_FALSE)
+    {
+        iccSlotNum = 2;
+        iccMappingTable = iccMappingTable_2SIM;
+    }
+    else
+    {
+        iccSlotNum = 4;
+        iccMappingTable = iccMappingTable_4SIM;
+    }
+#endif
+    sim_init_hwCb();
+
+    for(loopIndex = 0; iccSlotNum > loopIndex; loopIndex++)
+    {
+        DRV_ICC_interface_init(iccMappingTable[loopIndex].application);
+    }
+#ifdef SIM_DRV_GEMINI_WITH_MT6306
+    sim_MT6306_init_for_GEMINI();
+#endif
+#if defined(SIM_DRV_DYNAMIC_GET_GPIO_NUM) && defined(__MTK_TARGET__)
+    extern void sim_query_GpioNumOfSimPins(void);
+    sim_query_GpioNumOfSimPins();
+#endif
+}
+
+kal_uint32 sim_get_logicalNum_from_app(SIM_ICC_APPLICATION application)
+{
+    kal_uint32 loopIndex, loopMax = iccSlotNum;
+
+    for(loopIndex = 0; loopIndex < loopMax; loopIndex++)
+    {
+        if(application == iccMappingTable[loopIndex].application)
+        {
+            if(iccSlotNum <= iccMappingTable[loopIndex].logicalNum)
+                ASSERT(0);
+            return iccMappingTable[loopIndex].logicalNum;
+        }
+    }
+
+    return 0xffffffff;
+}
+kal_uint32 sim_get_app_from_logicalNum(kal_uint32 logicalNum)
+{
+    kal_uint32 loopIndex, loopMax = iccSlotNum;
+    if(iccSlotNum <= logicalNum)
+        ASSERT(0);
+    for(loopIndex = 0; loopIndex < loopMax; loopIndex++)
+    {
+        if(logicalNum == iccMappingTable[loopIndex].logicalNum)
+        {
+            return iccMappingTable[loopIndex].application;
+        }
+    }
+
+    return 0xffffffff;
+}
+kal_uint32 sim_get_MT6302_from_logicalNum(kal_uint32 logicalNum)
+{
+    kal_uint32 loopIndex, loopMax = iccSlotNum;
+
+    if(iccSlotNum <= logicalNum)
+        ASSERT(0);
+
+    for(loopIndex = 0; loopIndex < loopMax; loopIndex++)
+    {
+        if(logicalNum == iccMappingTable[loopIndex].logicalNum)
+        {
+            if(SIM_SWITCH_6302 == (SIM_ICC_SWITCHCONTROL) iccMappingTable[loopIndex].needMT6302)
+                return (iccMappingTable[loopIndex].MT6302ChipNum << 8) | (iccMappingTable[loopIndex].MT6302PortNum);
+            else if(SIM_SWITCH_6306 == (SIM_ICC_SWITCHCONTROL) iccMappingTable[loopIndex].needMT6302)
+                return (iccMappingTable[loopIndex].MT6302ChipNum << 8) | (iccMappingTable[loopIndex].MT6302PortNum) | (SIM_SWITCH_6306 << 16);
+            else if(SIM_SWITCH_6314 == (SIM_ICC_SWITCHCONTROL) iccMappingTable[loopIndex].needMT6302)
+                return(iccMappingTable[loopIndex].MT6302ChipNum << 8) | (iccMappingTable[loopIndex].MT6302PortNum) | (SIM_SWITCH_6314 << 16);
+            else
+                return SIM_ICC_MT6302_NONE;
+        }
+    }
+
+    /*there is no this logical number*/
+    ASSERT(0);
+    return 0;
+}
+
+kal_uint32 sim_get_hwCtrl_from_logicalNum(kal_uint32 logicalNum)
+{
+    kal_uint32 loopIndex, loopMax = iccSlotNum;
+
+    if(iccSlotNum <= logicalNum)
+        ASSERT(0);
+
+    for(loopIndex = 0; loopIndex < loopMax; loopIndex++)
+    {
+        if(logicalNum == iccMappingTable[loopIndex].logicalNum)
+        {
+            return iccMappingTable[loopIndex].hwCtrl;
+        }
+    }
+
+    /*there is no this logical number*/
+    ASSERT(0);
+    return 0;
+}
+
+kal_uint32 sim_get_MT6302PeerInterface(kal_uint8 chipNum, kal_uint32 portNum)
+{
+    kal_uint32 loopIndex, loopMax = iccSlotNum;
+
+    for(loopIndex = 0; loopIndex < loopMax; loopIndex++)
+    {
+        if(chipNum == iccMappingTable[loopIndex].MT6302ChipNum && portNum == iccMappingTable[loopIndex].MT6302PortNum)
+        {
+            if(iccSlotNum <= iccMappingTable[loopIndex].logicalNum)
+                ASSERT(0);
+            return iccMappingTable[loopIndex].logicalNum;
+        }
+    }
+
+    /*there is no this logical number*/
+    return SIM_ICC_MT6302_NONE;
+}
+
+#if defined(__MTK_TARGET__)
+kal_uint32 sim_get_ToalInterfaceCount()
+{
+    return iccSlotNum;
+}
+#endif
+
+kal_uint32 get_CAS_icc_logicalNum()
+{
+    kal_uint32 loopIndex, loopMax = iccSlotNum;
+
+    for(loopIndex = 0; loopIndex < loopMax; loopIndex++)
+    {
+        if(SIM_ICC_APPLICATION_CMMB_SMD == iccMappingTable[loopIndex].application)
+        {
+            if(iccSlotNum <= iccMappingTable[loopIndex].logicalNum)
+                ASSERT(0);
+            return iccMappingTable[loopIndex].logicalNum;
+        }
+    }
+
+    /*there is no this logical number*/
+    ASSERT(0);
+    return 0;
+}
+
+kal_uint32 sim_custom_task_2_driver(kal_uint32 taskInterface)
+{
+    return taskInterface;
+}
+
+#ifdef __SIM_HOT_SWAP_SUPPORT__
+void sim_reg_hot_plug_cb(SIM_ICC_APPLICATION application,
+                         SIM_HOT_PLUG_CALLBACK hotPlugInCb,
+                         SIM_HOT_PLUG_CALLBACK hotPlugOutCb)
+{
+    kal_uint32 loopIndex;
+
+    for(loopIndex = 0; loopIndex < iccSlotNum; loopIndex++)
+    {
+        if(application == iccMappingTable[loopIndex].application)
+        {
+            iccHotPlugTable[loopIndex].application = application;
+            iccHotPlugTable[loopIndex].plugInCb = hotPlugInCb;
+            iccHotPlugTable[loopIndex].plugOutcb = hotPlugOutCb;
+            break;
+        }
+    }
+}
+#if defined(__SIM_HOT_SWAP_POLL_TIMER__)
+extern void sim_hot_swap_poll_timer_rollback(kal_uint32 which_sim);
+void sim_rollback_timer(SIM_ICC_APPLICATION app)
+{
+    if (app <= SIM_ICC_APPLICATION_PHONE2 && app >= SIM_ICC_APPLICATION_PHONE1)
+    {
+        kal_uint32 simInterface = sim_get_logicalNum_from_app(app);
+        sim_HW_cb * hw_cb = (sim_HW_cb *)sim_get_hwCb(simInterface);
+        if (hw_cb->PollTimerStart == KAL_TRUE)
+        {
+            hw_cb->PollTimerStart = KAL_FALSE;
+            sim_hot_swap_poll_timer_rollback(app);
+            kal_sprintf(sim_dbg_custom_str, "\r\n[SIM_CUS_DRV:%d]: rollback when insert", simInterface);
+            DRV_ICC_print_str(sim_dbg_custom_str);
+        }
+        hw_cb->PollTimerPluggedOut = KAL_FALSE;
+        hw_cb->PollTimerEnd = KAL_TRUE;
+    }
+}
+#endif
+void sim_get_card_status(kal_uint32 logicalNum, kal_bool *isRemoved)
+{
+    kal_uint32 loopIndex;
+
+    for(loopIndex = 0; loopIndex < iccSlotNum; loopIndex++)
+    {
+        if(logicalNum == iccHotPlugTable[loopIndex].logicalNum)
+        {
+            *isRemoved = iccHotPlugTable[loopIndex].removed;
+            break;
+        }
+    }
+}
+
+#ifdef __TC01__
+kal_bool sim_get_card_status_tc01(kal_uint32 logicalNum)
+{
+#define GPIO_FOR_SIM1_EINT  47
+#define GPIO_FOR_SIM2_EINT  46
+extern char GPIO_ReadIO(kal_int16 port);
+
+    kal_uint32 loopIndex = 0;
+    kal_bool pin_sts = KAL_FALSE;
+
+    for(loopIndex = 0; loopIndex < iccSlotNum; loopIndex++){
+        if(logicalNum == iccHotPlugTable[loopIndex].logicalNum) break;
+    }
+
+    if (iccHotPlugTable[loopIndex].application == SIM_ICC_APPLICATION_PHONE1)
+        pin_sts = (kal_bool)GPIO_ReadIO(GPIO_FOR_SIM1_EINT);
+    else if (iccHotPlugTable[loopIndex].application == SIM_ICC_APPLICATION_PHONE2)
+        pin_sts = (kal_bool)GPIO_ReadIO(GPIO_FOR_SIM2_EINT);
+
+    return (kal_bool)(pin_sts != iccHotPlugTable[loopIndex].remove_polarity);
+
+}
+#endif
+
+#if defined(SIM_DRV_FAST_DISCHARGE_BY_PMIC_EINT)
+void sim_config_pmic_fast_dischage(SIM_ICC_APPLICATION application, kal_uint32 rm_pol, kal_bool enable)
+{
+    #if defined(SIM_DRV_CTRL_VSIM_BY_SPMI)
+    DCL_HANDLE handle;
+    SPMI_CTRL_EXT_REGISTER_WRITEL cmd;
+
+    handle = DclSPMI_Open(DCL_SPMI, FLAGS_NONE);
+    cmd.type = DCL_MAIN_PMIC;
+    cmd.len = 1;
+
+    if(application == SIM_ICC_APPLICATION_PHONE1) {
+        cmd.addr = RG_LDO_VSIM1_EINT;
+    } else if (application == SIM_ICC_APPLICATION_PHONE2) {
+        cmd.addr = RG_LDO_VSIM2_EINT;
+    } else {
+        SIM_DEBUG_ASSERT(0);
+    }
+
+    // config POLarity and DBounce
+    cmd.value = RG_LDO_VSIMx_EINT_DB_SEL;   // 0-5us; 1-10us
+    if (rm_pol != 0) {
+        cmd.value |= RG_LDO_VSIMx_EINT_POL;
+    }
+    DclSPMI_Control(handle, EXT_REGISTER_WRITEL, (DCL_CTRL_DATA_T *)&cmd);
+
+    // config EINT_EN
+    if (enable) {
+        cmd.value |= RG_LDO_VSIMx_EINT_EN;
+        DclSPMI_Control(handle, EXT_REGISTER_WRITEL, (DCL_CTRL_DATA_T *)&cmd);
+        kal_sprintf(sim_dbg_custom_str, "[SIM_CUS_DRV:%d]: Enable PMIC Fast Discharge", application);
+        DRV_ICC_print_str(sim_dbg_custom_str);
+    } else {
+        kal_sprintf(sim_dbg_custom_str, "[SIM_CUS_DRV:%d]: Disable PMIC Fast Discharge", application);
+        DRV_ICC_print_str(sim_dbg_custom_str);
+    }
+    
+    DclSPMI_Close(handle);
+    #endif
+}
+#endif
+
+
+void sim_hot_plug_handle(SIM_ICC_HOT_PLUG *hotPlugCnf, kal_bool removed)
+{
+    SIM_ICC_APPLICATION app;
+    //ASSERT(hotPlugCnf->removed != removed);
+    hotPlugCnf->removed = removed;
+
+    if (sim_physicalSlotChanged == KAL_TRUE)
+        app = 1 - hotPlugCnf->application;
+    else
+        app = hotPlugCnf->application;
+
+    if (removed)
+    {
+        if (hotPlugCnf->plugOutcb != NULL)
+        {
+#if defined(__SIM_HOT_SWAP_POLL_TIMER__)
+            SIM_PlugEvent_Poll_Timer_Cb(app);
+#else
+            hotPlugCnf->plugOutcb(app);
+            SIM_PlugEvent_Cb(app);
+#endif
+        }
+    }
+    else
+    {
+        if (hotPlugCnf->plugInCb!= NULL)
+        {
+            hotPlugCnf->plugInCb(app);
+#if defined(__SIM_HOT_SWAP_POLL_TIMER__)
+            sim_rollback_timer(app);
+#endif
+        }
+    }
+}
+
+void sim_hot_plug_eint_cb(SIM_ICC_APPLICATION app)
+{
+    kal_int32 idx;
+    kal_bool removed;
+
+    for (idx = 0; idx < iccSlotNum; idx++)
+    {
+        if(app == iccHotPlugTable[idx].application)
+        break;
+    }
+
+    ASSERT(idx != iccSlotNum);
+
+    removed = (iccHotPlugTable[idx].polarity == iccHotPlugTable[idx].remove_polarity);
+
+    iccHotPlugTable[idx].polarity = !iccHotPlugTable[idx].polarity;
+    EINT_Set_HW_Debounce_Enable(iccHotPlugTable[idx].eintNo, EINT_DISABLE);
+    EINT_Set_Polarity(iccHotPlugTable[idx].eintNo, iccHotPlugTable[idx].polarity);
+    if (removed == KAL_TRUE)
+        EINT_Set_HW_Debounce(iccHotPlugTable[idx].eintNo,iccHotPlugTable[idx].debounceTime); //Removed, Set for Insert, 1s
+    else
+        EINT_Set_HW_Debounce_32KCycle(iccHotPlugTable[idx].eintNo, PLUG_OUT_TIME_COUNT); // Set for Remove
+    EINT_Set_HW_Debounce_Enable(iccHotPlugTable[idx].eintNo, EINT_ENABLE);
+
+    sim_hot_plug_handle(&iccHotPlugTable[idx], removed);
+#if defined (__DUAL_SIM_HOT_SWAP_CO_DECK_SUPPORT__)
+    sim_hot_plug_handle(&iccHotPlugTable[1 - idx], removed);  // 1-idx must be legal, or ASSERT will happen in sim_reg_hot_plug_eint
+#endif
+
+#if defined(SIM_DRV_FAST_DISCHARGE_BY_PMIC_EINT)
+    // sim_config_pmic_fast_dischage(app, iccHotPlugTable[idx].remove_polarity, !removed);
+#endif
+
+    if (removed == KAL_TRUE)
+    {
+        MD_TRC_LOG_SIM_DRV_REMOVE_SIM(__LINE__,
+            idx,
+            app,
+            iccHotPlugTable[idx].polarity,
+            iccHotPlugTable[idx].removed,
+            iccHotPlugTable[((idx <= SIM_ICC_APPLICATION_PHONE2) ? (1 - idx) : idx)].polarity,
+            iccHotPlugTable[((idx <= SIM_ICC_APPLICATION_PHONE2) ? (1 - idx) : idx)].removed,
+            drv_get_current_time());
+    }
+    else
+    {
+        MD_TRC_LOG_SIM_DRV_INSERT_SIM(__LINE__,
+            idx,
+            app,
+            iccHotPlugTable[idx].polarity,
+            iccHotPlugTable[idx].removed,
+            iccHotPlugTable[((idx <= SIM_ICC_APPLICATION_PHONE2) ? (1 - idx) : idx)].polarity,
+            iccHotPlugTable[((idx <= SIM_ICC_APPLICATION_PHONE2) ? (1 - idx) : idx)].removed,
+            drv_get_current_time());
+    }
+
+    sim_dump_eint(sim_get_hwCb(sim_get_logicalNum_from_app(app)));
+}
+
+void sim1_hot_plug_eint_cb(void)
+{
+    sim_hot_plug_eint_cb(SIM_ICC_APPLICATION_PHONE1);
+}
+
+void sim2_hot_plug_eint_cb(void)
+{
+    sim_hot_plug_eint_cb(SIM_ICC_APPLICATION_PHONE2);
+}
+
+#if defined(SIM_DRV_SWITCH_MT6306)
+void sim3_hot_plug_eint_cb(void)
+{
+    sim_hot_plug_eint_cb(SIM_ICC_APPLICATION_PHONE3);
+}
+#endif
+
+void sim_reg_hot_plug_eint(SIM_ICC_APPLICATION application,
+                           kal_uint32 eintNo,
+                           kal_uint32 debounceTime,
+                           kal_uint32 polarity,
+                           kal_uint32 sensitivity,
+                           kal_uint32 socketType)
+{
+    kal_uint32 loopIndex;
+
+    for(loopIndex = 0; loopIndex < iccSlotNum; loopIndex++)
+    {
+        if(application == iccMappingTable[loopIndex].application)
+        {
+            if(iccHotPlugTable[loopIndex].registed == KAL_TRUE)
+            {
+                kal_sprintf(sim_dbg_custom_str, "[SIM_DRV]sim_registed\n\r");
+                DRV_ICC_print_str(sim_dbg_custom_str);
+                return;
+            }
+            else
+            {
+                iccHotPlugTable[loopIndex].logicalNum = iccMappingTable[loopIndex].logicalNum;
+                iccHotPlugTable[loopIndex].application = iccMappingTable[loopIndex].application;
+                iccHotPlugTable[loopIndex].eintNo = eintNo;
+                iccHotPlugTable[loopIndex].debounceTime = debounceTime;
+                iccHotPlugTable[loopIndex].polarity = (kal_bool)polarity;
+		        iccHotPlugTable[loopIndex].remove_polarity = (kal_bool)polarity;
+                iccHotPlugTable[loopIndex].sensitivity = sensitivity;
+                iccHotPlugTable[loopIndex].socketType = socketType;
+                iccHotPlugTable[loopIndex].registed = KAL_TRUE;
+#if defined (__DUAL_SIM_HOT_SWAP_CO_DECK_SUPPORT__)
+                ASSERT(1-loopIndex >= 0);   // To make it simple
+                iccHotPlugTable[1 - loopIndex].logicalNum = iccMappingTable[1 - loopIndex].logicalNum;
+                iccHotPlugTable[1 - loopIndex].application = iccMappingTable[1 - loopIndex].application;
+                iccHotPlugTable[1 - loopIndex].eintNo = eintNo;
+                iccHotPlugTable[1 - loopIndex].debounceTime = debounceTime;
+                iccHotPlugTable[1 - loopIndex].polarity = (kal_bool)polarity;
+		        iccHotPlugTable[1 - loopIndex].remove_polarity = (kal_bool)polarity;
+                iccHotPlugTable[1 - loopIndex].sensitivity = sensitivity;
+                iccHotPlugTable[1 - loopIndex].socketType = socketType;
+                iccHotPlugTable[1 - loopIndex].registed = KAL_TRUE;
+#endif
+                break;
+            }
+        }
+    }
+
+    // need to set HW debounce & sensitivity before registration
+    EINT_Set_HW_Debounce_Enable(eintNo, EINT_DISABLE);
+    //EINT_SW_Debounce_Modify(eintNo, 0); // unit: 10 ms
+    //EINT_Set_HW_Debounce(eintNo, debounceTime * 10); // unit: ms
+    EINT_Set_HW_Debounce_32KCycle(eintNo, PLUG_OUT_TIME_COUNT); // Set for Remove
+    EINT_Set_Sensitivity(eintNo, sensitivity);
+
+    if(application == SIM_ICC_APPLICATION_PHONE1)
+    {
+        EINT_Registration(eintNo, KAL_TRUE, (kal_bool)polarity, sim1_hot_plug_eint_cb, KAL_TRUE);
+    }
+    else if(application == SIM_ICC_APPLICATION_PHONE2)
+    {
+        EINT_Registration(eintNo, KAL_TRUE, (kal_bool)polarity, sim2_hot_plug_eint_cb, KAL_TRUE);
+    }
+#if defined(SIM_DRV_SWITCH_MT6306)
+    else if(application == SIM_ICC_APPLICATION_PHONE3)
+    {
+        EINT_Registration(eintNo, KAL_TRUE, (kal_bool)polarity, sim3_hot_plug_eint_cb, KAL_TRUE);
+    }
+#endif
+
+#if defined(SIM_DRV_FAST_DISCHARGE_BY_PMIC_EINT)
+    sim_config_pmic_fast_dischage(application, polarity, KAL_TRUE);
+#if defined (__DUAL_SIM_HOT_SWAP_CO_DECK_SUPPORT__)
+    ASSERT(1-application >= 0);   // To make it simple
+    sim_config_pmic_fast_dischage(1-application, polarity, KAL_TRUE);
+#endif
+#endif
+}
+#endif
+
+void sim_custom_setting_before_turning_on_vsim(kal_uint32 hwInterfaceNo)
+{
+    return;
+}
+
+void sim_custom_setting_after_turning_off_vsim(kal_uint32 hwInterfaceNo)
+{
+    return;
+}
+
+void sim_custom_setting_before_resetting_sim(kal_uint32 hwInterfaceNo)
+{
+    return;
+}
+#if defined (__SIM_HOT_SWAP_SUPPORT__)
+kal_uint32 SIM_EINT_GetAttribute(kal_uint32 simInterface,kal_uint8 *EintName, kal_uint32 EintNameLength, kal_uint32 queryType, void *result, kal_uint32 resultLength)
+{
+    #if !defined( MT6297)
+        return IPC_RPC_EINT_GetAttribute(EintName,EintNameLength,queryType,result,resultLength);
+    #else
+        switch(queryType)
+        {
+            case SIM_HOT_PLUG_EINT_NUMBER:
+                if (simInterface==0)
+                    *(kal_uint32*)result=1;
+                else
+                    *(kal_uint32*)result=2;
+                break;
+            case SIM_HOT_PLUG_EINT_DEBOUNCETIME:
+                *(kal_uint32*)result = 100;
+                break;
+            case SIM_HOT_PLUG_EINT_POLARITY:
+                *(kal_uint32*)result = 1;
+                break;
+            case SIM_HOT_PLUG_EINT_SOCKETTYPE:
+                *(kal_uint32*)result = 0;
+                break;
+            case SIM_HOT_PLUG_EINT_SENSITIVITY:
+                *(kal_uint32*)result = 0;
+                break;
+            default:
+                ASSERT(0);
+        }
+    #endif
+
+    return 0;
+}
+#endif
+
+#endif
+#else
+kal_bool sim_get_card_status_tc01(kal_uint32 logicalNum){return KAL_TRUE;}
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/e_compass_sensor_hw_define.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/e_compass_sensor_hw_define.h
new file mode 100644
index 0000000..cf12384
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/e_compass_sensor_hw_define.h
@@ -0,0 +1,88 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    e_compass_sensor_hw_define.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines GPIO for serial interface.
+ *
+ * Author:
+ * Peter Zhang
+ *
+ *
+ *============================================================================
+ *             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 E_COMPASS_SENSOR_HW_DEFINE_H
+#define E_COMPASS_SENSOR_HW_DEFINE_H
+
+#ifdef __CUST_NEW__
+
+extern const char gpio_e_compass_sensor_sck_pin;
+extern const char gpio_e_compass_sensor_sda_pin;
+extern const char gpio_e_compass_sensor_pwr_pin;
+   
+#define E_COMPASS_SENSOR_SCK     gpio_e_compass_sensor_sck_pin
+#define E_COMPASS_SENSOR_SDA     gpio_e_compass_sensor_sda_pin
+#define E_COMPASS_SENSOR_PWR     gpio_e_compass_sensor_pwr_pin
+
+
+#else /* __CUST_NEW__ */
+
+#define E_COMPASS_SENSOR_SCK 25
+#define E_COMPASS_SENSOR_SDA 26
+#define E_COMPASS_SENSOR_PWR 28
+
+#endif /* __CUST_NEW__ */
+
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/eint_def.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/eint_def.c
new file mode 100644
index 0000000..7aadb33
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/eint_def.c
@@ -0,0 +1,490 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    eint_def.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file is defined for external interrupt channel.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#include "drv_comm.h"
+#include "eint.h"
+#include "kal_public_api.h"
+
+#ifdef __CUST_NEW__
+
+#include "eint_drv.h"
+extern const kal_uint8 AUX_EINT_NO;
+extern const kal_uint8 CHRDET_EINT_NO;
+
+#if defined(JOGBALL_SUPPORT)
+extern const kal_uint8 JB_UP_EINT_NO;
+extern const kal_uint8 JB_DOWN_EINT_NO;
+extern const kal_uint8 JB_RIGHT_EINT_NO;
+extern const kal_uint8 JB_LEFT_EINT_NO;
+#endif//#if defined(JOGBALL_SUPPORT)
+
+#if defined(__PHONE_CLAMSHELL__) || defined(__PHONE_SLIDE__)
+extern const kal_uint8 CLAMDET_EINT_NO;
+#endif   /* __PHONE_CLAMSHELL__ || __PHONE_SLIDE__ */
+
+#ifdef __USB_ENABLE__
+extern const kal_uint8 USB_EINT_NO;
+#else /* __USB_ENABLE__ */
+extern const kal_uint8 USB_EINT_NO;
+#endif   /* __USB_ENABLE__ */
+
+#ifdef __BT_SUPPORT__
+extern const kal_uint8 BT_EINT_NO;
+#endif   /* __BT_SUPPORT__ */
+
+#if defined(__CHARGER_USB_DETECT_WIHT_ONE_EINT__)
+extern const kal_uint8 CHR_USB_EINT_NO;
+#endif   /* __CHARGER_USB_DETECT_WIHT_ONE_EINT__ */
+
+#ifdef __SWDBG_SUPPORT__
+extern const kal_uint8 SWDBG_EINT_NO;
+#endif   /* __SWDBG_SUPPORT__ */
+
+#if defined(MOTION_SENSOR_SUPPORT)
+extern const kal_uint8 MOTION_SENSOR_EINT_NO;
+#endif   /* MOTION_SENSOR_SUPPORT */
+
+#if defined(TOUCH_PANEL_SUPPORT) || defined(HAND_WRITING)
+extern const kal_uint8 TOUCH_PANEL_EINT_NO;
+#endif   /* TOUCH_PANEL_SUPPORT || HAND_WRITING */
+
+#ifdef __WIFI_SUPPORT__
+extern const kal_uint8 WIFI_EINT_NO;
+#endif   /* __WIFI_SUPPORT__ */
+
+#ifdef __OTG_DETECT_IDPIN_WITH_EINT__
+extern const kal_uint8 OTG_IDPIN_EINT_NO;
+#endif
+
+#ifdef __EXTRA_A_B_KEY_SUPPORT__
+extern const kal_uint8 EXTRA_A_KEY_EINT_NO;
+extern const kal_uint8 EXTRA_B_KEY_EINT_NO;
+#endif
+
+#ifdef __GPS_SUPPORT__
+extern const kal_uint8 GPS_EINT_NO;
+#endif   /* __GPS_SUPPORT__ */
+#else /* __CUST_NEW__ */
+
+const kal_uint8 AUX_EINT_NO = 3;
+const kal_uint8 CHRDET_EINT_NO = 0;
+
+#if defined(__PHONE_CLAMSHELL__) || defined(__PHONE_SLIDE__)
+const kal_uint8 CLAMDET_EINT_NO = ?;
+#endif   /* __PHONE_CLAMSHELL__ || __PHONE_SLIDE__ */
+
+#ifdef __USB_ENABLE__
+const kal_uint8 USB_EINT_NO = 0;
+#else /* __USB_ENABLE__ */
+const kal_uint8 USB_EINT_NO = EINT_CHANNEL_NOT_EXIST;
+#endif   /* __USB_ENABLE__ */
+
+#ifdef __BT_SUPPORT__
+const kal_uint8 BT_EINT_NO = 4;
+#endif   /* __BT_SUPPORT__ */
+
+#if defined(__CHARGER_USB_DETECT_WIHT_ONE_EINT__)
+const kal_uint8 CHR_USB_EINT_NO = 0;
+#endif   /* __CHARGER_USB_DETECT_WIHT_ONE_EINT__ */
+
+#ifdef __SWDBG_SUPPORT__
+const kal_uint8 SWDBG_EINT_NO = EINT_CHANNEL_NOT_EXIST;
+#endif   /* __SWDBG_SUPPORT__ */
+
+#if defined(MOTION_SENSOR_SUPPORT)
+const kal_uint8 MOTION_SENSOR_EINT_NO = 4;
+#endif   /* MOTION_SENSOR_SUPPORT */
+
+#if defined(TOUCH_PANEL_SUPPORT) || defined(HAND_WRITING)
+const kal_uint8 TOUCH_PANEL_EINT_NO = 2;
+#endif   /* TOUCH_PANEL_SUPPORT || HAND_WRITING */
+
+#ifdef __WIFI_SUPPORT__
+const kal_uint8 WIFI_EINT_NO = ?;
+#endif   /* __WIFI_SUPPORT__ */
+
+#ifdef __OTG_DETECT_IDPIN_WITH_EINT__
+const kal_uint8 OTG_IDPIN_EINT_NO = ?;
+#endif
+
+#ifdef __EXTRA_A_B_KEY_SUPPORT__
+const kal_uint8 EXTRA_A_KEY_EINT_NO = ?;
+const kal_uint8 EXTRA_B_KEY_EINT_NO = ?;
+#endif
+
+#ifdef __GPS_SUPPORT__
+const kal_uint8 GPS_EINT_NO = EINT_CHANNEL_NOT_EXIST;
+#endif   /* __WIFI_SUPPORT__ */
+
+#endif /* __CUST_NEW__ */
+
+#if defined(__CUST_NEW__) && defined(EINT0_DEBOUNCE_TIME_DELAY) && defined(EINT1_DEBOUNCE_TIME_DELAY) && defined(EINT2_DEBOUNCE_TIME_DELAY) && defined(EINT3_DEBOUNCE_TIME_DELAY)
+
+/*Unit: 10ms*/
+kal_uint8 custom_eint_sw_debounce_time_delay[EINT_MAX_CHANNEL] = 
+{
+   EINT0_DEBOUNCE_TIME_DELAY,
+   EINT1_DEBOUNCE_TIME_DELAY,
+   EINT2_DEBOUNCE_TIME_DELAY,
+   EINT3_DEBOUNCE_TIME_DELAY
+};
+
+#else /* __CUST_NEW__ */
+
+/*Unit: 10ms*/
+kal_uint8 custom_eint_sw_debounce_time_delay[EINT_MAX_CHANNEL] = 
+{
+   50,   /*EINT 0,500ms*/
+   50,   /*EINT 1,500ms*/
+   50,    /*EINT 2,500ms*/
+   1
+};
+
+#endif /* __CUST_NEW__ */
+
+kal_uint8 *custom_config_eint_sw_debounce_time_delay()
+{
+   return custom_eint_sw_debounce_time_delay;
+}
+
+kal_uint8 custom_eint_get_channel(eint_channel_type type)
+{
+   switch(type)
+   {
+      case aux_eint_chann:
+         return ((kal_uint8)AUX_EINT_NO);
+
+      case chrdet_eint_chann:
+         return ((kal_uint8)CHRDET_EINT_NO);
+
+#if defined(__PHONE_CLAMSHELL__) || defined(__PHONE_SLIDE__)
+      case clamdet_eint_chann:
+         return ((kal_uint8)CLAMDET_EINT_NO);
+#endif   /* __PHONE_CLAMSHELL__ || __PHONE_SLIDE__ */
+
+      case usb_eint_chann:
+         return ((kal_uint8)USB_EINT_NO);
+
+#ifdef __BT_SUPPORT__
+      case bt_eint_chann:
+         return ((kal_uint8)BT_EINT_NO);
+#endif   /* __BT_SUPPORT__ */
+
+#if defined(__CHARGER_USB_DETECT_WIHT_ONE_EINT__)
+      case chr_usb_eint_chann:
+      	return ((kal_uint8)CHR_USB_EINT_NO);
+#endif
+
+#ifdef __SWDBG_SUPPORT__
+      case swdbg_eint_chann:
+         return SWDBG_EINT_NO;
+#endif   /* __SWDBG_SUPPORT__ */
+
+#if defined(MOTION_SENSOR_SUPPORT)
+      case motion_senosr_eint_chann:
+         return ((kal_uint8)MOTION_SENSOR_EINT_NO);
+#endif   /* MOTION_SENSOR_SUPPORT */
+
+#if defined(TOUCH_PANEL_SUPPORT) || defined(HAND_WRITING)
+      case touch_panel_eint_chann:   
+         return TOUCH_PANEL_EINT_NO;
+#endif   /* TOUCH_PANEL_SUPPORT || HAND_WRITING */
+
+#ifdef __WIFI_SUPPORT__
+      case wifi_eint_chann:
+         return WIFI_EINT_NO;
+#endif   /* __SWDBG_SUPPORT__ */
+#ifdef __TDMB_SUPPORT__
+      case tdmb_eint_chann:
+         return TDMB_EINT_NO;
+#endif   /* __TDMB_SUPPORT__ */
+#ifdef __CMMB_SUPPORT__
+      case cmmb_eint_chann:
+         return CMMB_EINT_NO;
+#endif   /* __CMMB_SUPPORT__ */
+#ifdef __OTG_DETECT_IDPIN_WITH_EINT__
+      case otg_idpin_eint_chann:
+         return OTG_IDPIN_EINT_NO;
+#endif   /* __SWDBG_SUPPORT__ */
+
+#ifdef __EXTRA_A_B_KEY_SUPPORT__
+      case extra_a_key_eint_chann:
+         return EXTRA_A_KEY_EINT_NO;
+
+      case extra_b_key_eint_chann:
+         return EXTRA_B_KEY_EINT_NO;
+#endif
+
+#ifdef __GPS_SUPPORT__
+      case gps_eint_chann:
+         return ((kal_uint8)GPS_EINT_NO);
+#endif   /* __GPS_SUPPORT__ */
+#if defined(JOGBALL_SUPPORT)
+      case jogball_up_eint_chann:
+         return JB_UP_EINT_NO;
+      case jogball_down_eint_chann:
+         return JB_DOWN_EINT_NO;
+      case jogball_right_eint_chann:
+         return JB_RIGHT_EINT_NO;
+      case jogball_left_eint_chann:
+         return JB_LEFT_EINT_NO;
+#endif   /* JOGBALL_SUPPORT */
+      default:
+         ASSERT(0);         
+   }
+   return 100;
+}
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/exif_custom.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/exif_custom.c
new file mode 100644
index 0000000..f6bc76e
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/exif_custom.c
@@ -0,0 +1,92 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   exif_custom.c
+ *
+ * Project:
+ * --------
+ *   MT6226,MT6227,MT6228,MT6229
+ *
+ * Description:
+ * ------------
+ *   This file is intends for Exif encoder.
+ *
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+#if (!defined(__MAUI_BASIC__)&& !defined(__L1_STANDALONE__) && defined(EXIF_SUPPORT))
+
+#include "exif.h"
+
+#define CusIFD_Encode_Number_of_Entry 2
+
+exif_ASCII*		Make="N/A";
+exif_ASCII*		Model="N/A";
+
+exif_extend_entry_struct Custom_Specific_Tags[CusIFD_Encode_Number_of_Entry]=
+	{	
+		{EXIF_IFD0,{0x010f,EXIF_ASCII,0,&Make}},		//--Make--
+		{EXIF_IFD0,{0x0110,EXIF_ASCII,0,&Model}}		//--Model--
+		
+	 };
+
+//--This Function Call Must be implemented always--
+exif_extend_entry_struct* exif_get_custom_specific_IFD(kal_uint8* Number_of_Entry)
+{
+/*
+ *Number_of_Entry=0;
+ return 0;
+*/ 
+*Number_of_Entry=CusIFD_Encode_Number_of_Entry;
+ return Custom_Specific_Tags;
+ }
+
+#else	/*__MAUI_BASIC__ || __L1_STANDALONE__*/
+#include "drv_comm.h"
+#endif /*__MAUI_BASIC__ || __L1_STANDALONE__*/
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/gpio_def.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/gpio_def.h
new file mode 100644
index 0000000..f706604
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/gpio_def.h
@@ -0,0 +1,132 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   gpio_def.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file provides definition for GPIO mode, direction, pull-up/pull down 
+ *   enable, data inversion value.
+ *
+ * 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 _GPIO_DEF_H
+#define _GPIO_DEF_H
+
+#define MODE_0		0
+#define MODE_1		1
+#define MODE_2		2
+#define MODE_3		3
+#define MODE_4		4
+#define MODE_5		5
+#define MODE_6		6
+#define MODE_7		7
+#define MODE_NC		0
+
+#define	DIR_NULL		  0
+#define	DIR_INPUT		  0
+#define	DIR_OUTPUT		1
+
+#define PULL_NULL       1
+#define	PULL_DISABLE	0
+#define	PULL_ENABLE		1
+
+#define	INV_NULL	    0
+#define	INV_DISABLE	  0
+#define	INV_ENABLE		1
+
+#define GPIO_CLK0 0
+#define GPIO_CLK1 1
+#define GPIO_CLK2 2
+#define GPIO_CLK3 3
+#define GPIO_CLK4 4
+#define GPIO_CLK5 5
+#define GPIO_CLK6 6
+#define GPIO_CLK7 7
+#define GPIO_CLK8 8
+#define GPIO_CLK9 9
+#define GPIO_CLK10 10
+#define GPIO_CLK11 11
+
+#define DCT_none_clk 0
+
+#if defined (MT6235) 
+#define GPIO_CLKSRC_65mHz 0x0
+#define GPIO_CLKSRC_104mHz 0x1
+#define GPIO_CLKSRC_52mHz 0x2
+#define GPIO_CLKSRC_26mHz 0x3
+#define GPIO_CLKSRC_13mHz 0x4
+#define GPIO_CLKSRC_32kHz 0x6
+
+#elif defined (MT6256) 
+#define GPIO_CLKSRC_52mHz 0xB
+#define GPIO_CLKSRC_32kHz 0xC
+
+#elif defined(MT6236)
+#define GPIO_CLKSRC_32kHz 0x40
+
+#elif defined(MT6238) || defined(MT6239)
+#define GPIO_CLKSRC_32kHz 0x6
+
+#elif defined(MT6268)
+#define GPIO_CLKSRC_32kHz 0x40
+
+#elif defined(TK6291)
+#define MD_OWNED   0
+#define AP_OWNED   1
+
+#endif
+
+#endif /* _GPIO_DEF_H */
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/gpio_drv.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/gpio_drv.c
new file mode 100644
index 0000000..ad3afe6
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/gpio_drv.c
@@ -0,0 +1,267 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    gpio.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines the GPIO driver.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#include "drv_comm.h"
+#include "reg_base.h"
+
+#ifdef __CUST_NEW__
+extern void GPIO_setting_init(void);
+kal_bool   gpio_debug_enable = KAL_FALSE;
+#endif
+
+/*
+* FUNCTION                                                            
+*	GPIO_init
+*
+* DESCRIPTION                                                           
+*   	This function is to initialize the GPIO pins as DrvTool setting.
+*
+* CALLS  
+*	None
+*
+* PARAMETERS
+*	None
+*	
+* RETURNS
+*	None
+*
+* GLOBALS AFFECTED
+*   external_global
+*/
+void GPIO_init(void)
+{
+
+#ifdef __CUST_NEW__
+   GPIO_setting_init();
+#endif /* __CUST_NEW__ */
+
+}
+
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/irda_custom.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/irda_custom.c
new file mode 100644
index 0000000..b705911
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/irda_custom.c
@@ -0,0 +1,219 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    irda_custom.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file implements irda customer support
+ *
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+ #ifdef __IRDA_SUPPORT__
+#include "drv_comm.h"
+//#include "gpio_sw.h"
+#include "irda_sw.h"
+#include "reg_base.h"
+#include "dcl.h"
+/************************************************************
+	device descriptor parameters
+*************************************************************/
+kal_uint8 device_info[17] = { 
+/* hint bits set for COMM, OBEX, LAN, IRMC, TRAN-P 
+*/
+      0xb1,  /* set pnp, Modem, Fax and extension bit */ 
+      0x25,  /* set IrOBEX hint bit and IrCOMM hint bit */ 
+      0x00,  /* char set = 0 */
+      //'W','C','P','1','C','S','I','I','I',' ', 0x00,  
+      'M','e','d','i','a','T','e','k',' ','I','n','c',' ',0x00,  
+};
+/************************************************************
+	customization functinos
+*************************************************************/
+kal_uint8 *irda_get_device_info(void) 
+{
+   return (device_info);
+}
+kal_uint16 irda_get_device_info_size(void) 
+{
+   return (sizeof(device_info));
+}
+/*The following are for SIR/MIR/FIR mode switch according to 
+  different IRDA transceiver*/
+#define IR_TRANSCEIVER_PDN (IRDA_base+0x003c)
+#define __IRDA_AGILENT_3220__
+//#undef __IRDA_AGILENT_3220__
+#if defined(__IRDA_VISHAY_6102__)
+   #ifdef __CUST_NEW__
+      extern const char gpio_irda_mode_switch_pin;
+      #define IRDA_GPIO_MODE_SWITCH   gpio_irda_mode_switch_pin
+   #else /* __CUST_NEW__ */
+      #define IRDA_GPIO_MODE_SWITCH 40
+   #endif /* __CUST_NEW__ */
+#endif /* defined(__IRDA_VISHAY_6102__) */
+
+//kal_uint32 test_delay=20;
+#define irda_test_delay 60
+kal_uint8 irda_get_mode_gpio(void) 
+{   
+#if defined(__IRDA_VISHAY_6102__)
+   return (IRDA_GPIO_MODE_SWITCH);
+#else
+   return 0;
+#endif /* defined(__IRDA_VISHAY_6102__) */
+}
+
+void irda_delay(kal_uint32 count)
+{
+   kal_uint32 i;
+   for(i=0;i<count;i++){};      
+}   
+void irda_switch_to_sir(void)
+{
+#if defined(__IRDA_VISHAY_6102__)
+	/*Vishay 6614*/
+	DCL_HANDLE handle;
+	handle=DclGPIO_Open(DCL_GPIO,IRDA_GPIO_MODE_SWITCH);
+	#ifndef __CUST_NEW__
+	//GPIO_ModeSetup(IRDA_GPIO_MODE_SWITCH, 0);		
+	DclGPIO_Control(handle,GPIO_CMD_SET_MODE_0,0);
+
+	//GPIO_InitIO(OUTPUT, IRDA_GPIO_MODE_SWITCH); 
+	DclGPIO_Control(handle,GPIO_CMD_SET_DIR_OUT,0);
+	#endif /* __CUST_NEW__ */
+	//GPIO_WriteIO(0, IRDA_GPIO_MODE_SWITCH);	
+	DclGPIO_Control(handle,GPIO_CMD_WRITE_LOW,0);
+	DclGPIO_Close(handle);
+#elif defined(__IRDA_AGILENT_3220__)||defined(__IRDA_VISHAY_6614__)	
+	#if 0
+/* under construction !*/
+/* under construction !*/
+	#ifndef __CUST_NEW__
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+	#endif /* __CUST_NEW__ */
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+	#endif
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x1);   
+	irda_delay(irda_test_delay);
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x5);   
+	irda_delay(irda_test_delay);
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x4);         
+	irda_delay(irda_test_delay);
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x0);
+#endif
+}	
+void irda_switch_to_mir(void)
+{
+	/*Vishay 6614*/
+#if defined(__IRDA_VISHAY_6102__)
+	DCL_HANDLE handle;
+	handle=DclGPIO_Open(DCL_GPIO,IRDA_GPIO_MODE_SWITCH);
+
+	//GPIO_WriteIO(1, IRDA_GPIO_MODE_SWITCH);	
+	DclGPIO_Control(handle,GPIO_CMD_WRITE_HIGH,0);
+	DclGPIO_Close(handle);
+#elif defined(__IRDA_VISHAY_6614__)
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x1);	
+	irda_delay(irda_test_delay);
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x7);   
+	irda_delay(irda_test_delay);
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x6);   	   
+	irda_delay(irda_test_delay);
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x4);   
+	irda_delay(irda_test_delay);
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x0);
+#endif
+}
+void irda_switch_to_fir(void)
+{	
+#if defined(__IRDA_VISHAY_6102__)
+	/*Vishay 6614*/
+	DCL_HANDLE handle;
+	handle=DclGPIO_Open(DCL_GPIO,IRDA_GPIO_MODE_SWITCH);
+
+	//GPIO_WriteIO(1, IRDA_GPIO_MODE_SWITCH);
+	DclGPIO_Control(handle,GPIO_CMD_WRITE_HIGH,0);
+	DclGPIO_Close(handle);
+	/*Vishay 6102, Anilent 3220*/
+#elif defined(__IRDA_AGILENT_3220__)||defined(__IRDA_VISHAY_6614__)
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x1);	
+	irda_delay(irda_test_delay);
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x7);   
+	irda_delay(irda_test_delay);
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x6);   	   
+	irda_delay(irda_test_delay);
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x4);   
+	irda_delay(irda_test_delay);
+	DRV_WriteReg(IR_TRANSCEIVER_PDN,0x0);
+#endif
+}   
+
+const irda_customize_function_struct irda_custom_func=
+{
+   irda_switch_to_sir,
+   irda_switch_to_mir, 
+   irda_switch_to_fir
+};       
+
+const irda_customize_function_struct *irda_GetFunc(void)
+{
+   return (&irda_custom_func);  
+}   
+
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/keypad_def.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/keypad_def.c
new file mode 100644
index 0000000..1e3cdaa
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/keypad_def.c
@@ -0,0 +1,455 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    keypad_def.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file is defined for keypad table
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#include "drv_comm.h"
+#include "kbd_table.h"
+#include "reg_base.h"
+#include "keypad_sw.h"
+#include "keypad_hw.h"
+#include "gpio_sw.h"
+#ifdef __CUST_NEW__
+#include "keypad_drv.h"
+#endif /*__CUST_NEW__*/
+
+#if !defined(DRV_KBD_NOT_EXIST)
+const keypad_struct *keypad_Get_Data(void); 
+
+#ifdef __KBD_2STEP_KEY_SUPPORT__
+kal_bool keypad_check_fullpress(void);
+kal_bool keypad_is_fullpress(kal_uint8 key); 
+#endif
+#ifdef __CUST_NEW__
+   #define Custom_Keypress_Period KEY_PRESS_PERIOD
+   kal_uint8 powerkey_position=POWERKEY_POSITION;
+
+   #ifdef __KBD_2STEP_KEY_SUPPORT__
+   /*the first key*/
+   #define Custom_2Step_Key_Position TWO_STEP_KEY
+   /*the second key for detection*/
+   #define CUSTOM_2STEP_SEC_KEY_ROW  SECOND_KEY_ROW
+   #define CUSTOM_2STEP_SEC_KEY_COL  SECOND_KEY_COLUMN
+   #endif
+#else /*__CUST_NEW__*/
+   #define Custom_Keypress_Period 2500
+   kal_uint8 powerkey_position=DEVICE_KEY_END;
+   #ifdef __KBD_2STEP_KEY_SUPPORT__ 
+   /*the first key*/
+   #define Custom_2Step_Key_Position DEVICE_KEY_FUNCTION
+   /*the second key for detection*/
+   #define CUSTOM_2STEP_SEC_KEY_ROW 5
+   #define CUSTOM_2STEP_SEC_KEY_COL 0
+   #endif
+#endif  /*__CUST_NEW__*/
+const keypad_struct  keypad_custom_def = {          
+      /*keypad mapping*/
+      {
+      #ifndef __CUST_NEW__
+          /* row 0 */
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,          
+          DEVICE_KEY_NONE,   
+          DEVICE_KEY_NONE, 
+          DEVICE_KEY_NONE, 
+          DEVICE_KEY_NONE,          
+          DEVICE_KEY_END,
+          DEVICE_KEY_NONE,          
+          DEVICE_KEY_NONE,          
+      
+      	 /* row 1 */
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,          
+          DEVICE_KEY_NONE,           
+          DEVICE_KEY_NONE, 
+          DEVICE_KEY_NONE, 
+          DEVICE_KEY_NONE,           
+      	  DEVICE_KEY_END,
+          DEVICE_KEY_NONE,          
+          DEVICE_KEY_NONE,           
+          
+      	 /* row 2 */
+          DEVICE_KEY_1,
+          DEVICE_KEY_2,
+          DEVICE_KEY_3,
+          DEVICE_KEY_SEND, 
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_VOL_UP,           
+          DEVICE_KEY_END,             
+          DEVICE_KEY_NONE,          
+          DEVICE_KEY_NONE,             
+                    
+      	 /* row 3 */
+          DEVICE_KEY_4,
+          DEVICE_KEY_5,
+          DEVICE_KEY_6,
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,          
+          DEVICE_KEY_VOL_DOWN,          
+          DEVICE_KEY_END, 
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,            
+                  
+      	 /* row 4 */
+          DEVICE_KEY_7,
+          DEVICE_KEY_8,
+          DEVICE_KEY_9,
+          DEVICE_KEY_SK_LEFT,
+          DEVICE_KEY_UP,
+          DEVICE_KEY_SK_RIGHT,          
+          DEVICE_KEY_END,
+          DEVICE_KEY_NONE,          
+          DEVICE_KEY_NONE,            
+      
+      	 /* row 5 */
+          DEVICE_KEY_STAR,
+          DEVICE_KEY_0,
+          DEVICE_KEY_HASH,
+          DEVICE_KEY_LEFT,
+          DEVICE_KEY_DOWN,
+          DEVICE_KEY_RIGHT,              
+          DEVICE_KEY_END,
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,          
+          
+          /* row 6 */
+          DEVICE_KEY_NONE,      	 
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,              
+          DEVICE_KEY_NONE,
+          
+          /* row 7 */
+          DEVICE_KEY_NONE,      	 
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,              
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,
+          DEVICE_KEY_NONE,          
+          
+      #else /* __CUST_NEW__ */
+          KEYPAD_MAPPING
+      #endif /* __CUST_NEW__ */
+      },
+      /*power on period*/
+      Custom_Keypress_Period,                  
+      /*powerkey position*/
+      #ifdef __CUST_NEW__
+      POWERKEY_POSITION
+      #else /* __CUST_NEW__ */
+      /*powerkey position*/
+      DEVICE_KEY_END            
+      #endif /* __CUST_NEW__ */
+      };      
+const keypad_customize_function_struct keypad_custom_func=
+{
+     keypad_Get_Data
+#ifdef __KBD_2STEP_KEY_SUPPORT__
+     ,keypad_is_fullpress,
+     keypad_check_fullpress
+#endif
+};            
+const keypad_customize_function_struct *keypad_GetFunc(void)
+{
+   return (&keypad_custom_func);  
+}   
+const keypad_struct *keypad_Get_Data(void) 
+{
+   return (&keypad_custom_def);
+}
+kal_uint32 Customer_Period_Period(void)
+{         
+   return ((kal_uint32) Custom_Keypress_Period);
+}   
+
+#ifdef __KBD_2STEP_KEY_SUPPORT__
+/*************************************************************************
+* FUNCTION
+*	keypad_is_fullpress
+*
+* DESCRIPTION
+*	This function is to check if this is a 2step key
+*
+* PARAMETERS
+*	key
+*
+* RETURNS
+*	True or False
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+kal_bool keypad_is_fullpress(kal_uint8 key) 
+{
+   if(key==Custom_2Step_Key_Position)  
+      return KAL_TRUE;
+   else
+      return KAL_FALSE;   
+}
+/*************************************************************************
+* FUNCTION
+*	keypad_check_fullpress
+*
+* DESCRIPTION
+*	This function is to check if 2step key is pressed
+*
+* PARAMETERS
+*	none
+*
+* RETURNS
+*	True or False
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+kal_bool keypad_check_fullpress(void) 
+{
+   kal_uint16 iKey;
+   kal_uint16 key_reg, key_bit, key_status;
+   
+   iKey = CUSTOM_2STEP_SEC_KEY_ROW * 9 + CUSTOM_2STEP_SEC_KEY_COL;
+   key_reg = iKey / 16;
+   key_bit = 0x0001 << (iKey & 0xF);
+   
+    switch (key_reg) {
+    case low_key:
+        key_status = DRV_Reg(KP_LOW_KEY);
+        break;
+        
+#if defined(DRV_KBD_32KEYS_ABOVE)
+    case medium_key:
+        key_status = DRV_Reg(KP_MID_KEY);
+        break;
+#endif
+
+#if defined(DRV_KBD_48KEYS_ABOVE)
+    case medium_key:
+            key_status = DRV_Reg(KP_MID_KEY);
+            break;
+
+    case medium_key1:
+        key_status = DRV_Reg(KP_MID1_KEY);
+        break;
+#endif
+
+#if defined(DRV_KBD_64KEYS_ABOVE)
+    case medium_key:
+              key_status = DRV_Reg(KP_MID_KEY);
+              break;
+
+      case medium_key1:
+          key_status = DRV_Reg(KP_MID1_KEY);
+          break;
+
+    case medium_key2:
+        key_status = DRV_Reg(KP_MID2_KEY);
+        break;
+#endif
+
+    case high_key:
+        key_status = DRV_Reg(KP_HI_KEY);
+        break;
+
+    default:
+        ASSERT(0);
+        break;
+    }
+
+    if ((DRV_Reg(KP_STS) & KP_STS_KEYPRESS) && ((~key_status) & key_bit)) {
+        return KAL_TRUE;
+    }else {
+        return KAL_FALSE;
+    }
+}
+#endif
+
+#else   //define (DRV_KBD_NOT_EXIST)
+kal_uint32 Customer_Period_Period(void) { return 0; } //for bmt_main.c
+const keypad_struct  keypad_custom_def = {{DEVICE_KEY_NONE},0,0};
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/motion_sensor_hw_define.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/motion_sensor_hw_define.h
new file mode 100644
index 0000000..a0a3889
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/motion_sensor_hw_define.h
@@ -0,0 +1,80 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    motion_sensor_hw_define.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines GPIO for serial interface.
+ *
+ * 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 MOTION_SENSOR_HW_DEFINE_H
+#define MOTION_SENSOR_HW_DEFINE_H
+
+// How is Motion Sensor mounted ?
+//#define MOTION_SENSOR_FRONT_0
+#define MOTION_SENSOR_FRONT_90
+//#define MOTION_SENSOR_FRONT_180
+//#define MOTION_SENSOR_FRONT_270
+//#define MOTION_SENSOR_BACK_0
+//#define MOTION_SENSOR_BACK_90
+//#define MOTION_SENSOR_BACK_180
+//#define MOTION_SENSOR_BACK_270
+
+#if defined(MXC6202_I2C)
+	//define slave address
+	#define MXC62020
+#endif
+
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/msdc_custom.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/msdc_custom.c
new file mode 100644
index 0000000..c890007
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/msdc_custom.c
@@ -0,0 +1,218 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    msdc_custom.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file implements msdc customer support
+ *
+ * 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!
+ ****************************************************************************/
+#include "drv_comm.h"
+#include "msdc_api.h"
+
+// it only apply to the SD card io control
+static const msdc_io_ctrl_struct msdc_io_ctrl_sd_custom = 
+{
+	MSDC_ODC_8MA,	// driving capacity of CMD/BS and SCLK
+	MSDC_ODC_8MA,	// driving capacity of data lines
+	MSDC_ODC_SLEW_FAST, // slew rate of CMD/BS and SCLK
+	MSDC_ODC_SLEW_FAST // slew rate of data lines
+};
+
+#if defined(__MSDC_SD_MMC__) && defined(__MSDC2_SD_MMC__)&& !defined(__MSDC_SD_SDIO__)
+static  const kal_uint32 msdc_custom = (MSDC_HOT_PLUG|MSDC_WP|MSDC2_HOT_PLUG|MSDC2_WP);
+#elif defined(__MSDC_SD_SDIO__) && defined(__MSDC2_SD_MMC__)
+static  const kal_uint32 msdc_custom = (MSDC2_HOT_PLUG|MSDC2_WP|MSDC_SDIO4_SD1);
+#elif defined(__MSDC_SD_MMC__) && defined(__MSDC2_SD_SDIO__)
+static  const kal_uint32 msdc_custom = (MSDC_HOT_PLUG|MSDC_WP|MSDC_SD4_SDIO1);
+#else
+static const kal_uint32 msdc_custom = (MSDC_HOT_PLUG|MSDC_WP|MSDC2_HOT_PLUG|MSDC2_WP);
+#endif
+ 
+kal_uint8 MSDC_GetIOCtrlParam(void)
+{
+	kal_uint8 reg = 0;
+	
+	reg = (msdc_io_ctrl_sd_custom.dat_slew << 7) | (msdc_io_ctrl_sd_custom.cmd_clk_slew << 6) 
+			|(msdc_io_ctrl_sd_custom.dat_odc<<3)|(msdc_io_ctrl_sd_custom.cmd_clk_odc);
+	return reg;
+}
+
+/*
+	We provide this API because that memory card's layout affect the signal,
+	customer can use this API to tuning the suitable DLT when their layout did need.
+	In addition to solve the bad layout, we can also try to set a higher clk and tuning the DLT here,
+	so that we can run in high CLK stablely.
+	
+*/
+kal_int8 MSDC_GetDLTFromOPCLK(kal_uint32 opClk, kal_uint8 *setRED)
+{
+	*setRED = 0;
+	
+	if(1000 > opClk) //this means we use a CLK < 1Mhz, should be used to initialize a card
+		return 0xf0;
+	switch(opClk){
+		case 45500:	//45.5 MHz CLK, this should be only used on MT6268 with second CLK source
+			*setRED = 1;
+			return 2;
+			break;
+		case 22750:	//22.75 MHz CLK, this should be only used on MT6268 with second CLK source
+			return 4;
+			break;
+		case 30500:	//30.5 MHz CLK, this should be only used on MT6268 with first CLK source
+			return 4;
+		case 15250:	//15.25 MHz CLK, this should be only used on MT6268 with first CLK source
+			return 4;
+			break;
+		default:		//deafult return a non-zero value
+			return 1;
+			break;
+	}
+		
+}
+
+
+#if defined(__MSDC2_SD_MMC__) || defined(__MSDC2_SD_SDIO__)
+
+static const msdc_io_ctrl_struct msdc_io_ctrl_sd_custom2 = 
+{
+	MSDC_ODC_8MA,	// driving capacity of CMD/BS and SCLK
+	MSDC_ODC_8MA,	// driving capacity of data lines
+	MSDC_ODC_SLEW_FAST, // slew rate of CMD/BS and SCLK
+	MSDC_ODC_SLEW_FAST // slew rate of data lines
+};
+
+kal_uint8 MSDC_GetIOCtrlParam2(void)
+{
+	kal_uint8 reg = 0;
+	
+	reg = (msdc_io_ctrl_sd_custom2.dat_slew << 7) | (msdc_io_ctrl_sd_custom2.cmd_clk_slew << 6) 
+			|(msdc_io_ctrl_sd_custom2.dat_odc<<3)|(msdc_io_ctrl_sd_custom2.cmd_clk_odc);
+	return reg;
+}
+#endif // __MSDC2_SD_MMC__
+
+kal_uint32 MSDC_GetCustom(void)
+{
+	return msdc_custom;
+}
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/mt6306_custom.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/mt6306_custom.h
new file mode 100644
index 0000000..84f28a8
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/mt6306_custom.h
@@ -0,0 +1,150 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ * MT6302_custom.h
+ *
+ * Project:
+ * --------
+ *   Gemini
+ *
+ * Description:
+ * ------------
+ *   this file is the header file of MT6302 custom control
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef __MT6306_CUSTOM_H__
+#define __MT6306_CUSTOM_H__
+
+#define MT6306_CLK_GPIO_NO gpio_sim_switch_clk_pin
+#define MT6306_DAT_GPIO_NO gpio_sim_switch_dat_pin
+
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/parameter_data_file.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/parameter_data_file.h
new file mode 100644
index 0000000..df2783a
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/parameter_data_file.h
@@ -0,0 +1,100 @@
+#ifndef PARAMETER_DATA_FILE_H
+#define PARAMETER_DATA_FILE_H
+
+#define TWOMICNR_INIT_PARA_LENGTH    29
+
+unsigned char parameter_data_Init[] = {
+    0xC0,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x52, 0x00, 0x13,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x60, 0x00, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x70, 0x05, 0xC0,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x3A, 0x00, 0x00
+};
+
+#define TWOMICNR_BYPASS_PARA_LENGTH    64
+
+unsigned char parameter_data_bypass_mode[] = {
+    0xC0,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x34, 0x00, 0x22,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x36, 0x00, 0x1D,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x4A, 0x00, 0x22,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x4C, 0x00, 0x1D,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x3D, 0x01, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x52, 0x00, 0x13,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x60, 0x00, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x70, 0x05, 0xC0,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x3A, 0x00, 0x00
+};
+
+#define TWOMICNR_HANDSET_PARA_LENGTH    134
+
+unsigned char parameter_data_handset_mode[] = {
+    0xC0,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x34, 0x00, 0xCA,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x3D, 0x02, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x45, 0x01, 0x0F,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x46, 0x00, 0x14,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x47, 0x18, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x57, 0x7F, 0xFF,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x60, 0x00, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x70, 0x05, 0xC0,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xDA, 0x54, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xB3, 0x10, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xB4, 0x10, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xB6, 0x10, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xCE, 0x70, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xCF, 0x04, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1F, 0x0A, 0x01, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1F, 0x0B, 0x00, 0xB0,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x63, 0x00, 0x03,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x52, 0x00, 0x13,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x3A, 0x00, 0x00
+};
+
+#define TWOMICNR_HANDFREE_PARA_LENGTH    281
+
+unsigned char parameter_data_handfree_mode[] = {
+    0xC0,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x30, 0x02, 0x31,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x34, 0x00, 0x6B,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x3D, 0x04, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x41, 0x01, 0x01,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x44, 0x00, 0x81,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x45, 0x03, 0xCF,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x46, 0x00, 0x11,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x4D, 0x03, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x60, 0x00, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x63, 0x00, 0x03,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x70, 0x05, 0xC0,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x88, 0x38, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x89, 0x00, 0x01,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x8B, 0x00, 0x80,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x8C, 0x00, 0x10,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x92, 0x38, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xA0, 0x10, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xBC, 0x68, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xBD, 0x01, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xBF, 0x70, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xC0, 0x26, 0x80,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xC1, 0x10, 0x80,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xC5, 0x2B, 0x06,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xC6, 0x0C, 0x1F,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xC8, 0x28, 0x79,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xC9, 0x65, 0xAB,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xCA, 0x40, 0x26,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xCB, 0x7F, 0xFF,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xCC, 0x7F, 0xFE,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xF8, 0x04, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xF9, 0x01, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0xFF, 0x4B, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1F, 0x00, 0x7F, 0xFF,
+    0xFC, 0xF3, 0x3B, 0x1F, 0x0A, 0x0A, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1F, 0x0C, 0x01, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1F, 0x0D, 0x78, 0x00,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x86, 0x00, 0x07,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x87, 0x00, 0x03,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x52, 0x00, 0x13,
+    0xFC, 0xF3, 0x3B, 0x1E, 0x3A, 0x00, 0x00
+};
+
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pmic_custom.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pmic_custom.c
new file mode 100644
index 0000000..a5a202a
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pmic_custom.c
@@ -0,0 +1,94 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    pmic_custom.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines the pmic customization settings
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#if defined(MT6327)
+#include "kal_public_api.h" //MSBB change #include 	"kal_release.h"
+#include "dcl_pmu_common_sw.h"
+
+void pmic6327_customization_init(void)
+{
+	/* Customization */
+#ifdef __FUE__
+
+#else
+
+#endif
+	/* End of customization */
+}   
+    
+#endif // End of #if defined(MT6327)
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pmu_custom.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pmu_custom.c
new file mode 100644
index 0000000..d4b5b40
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pmu_custom.c
@@ -0,0 +1 @@
+/* This file can be deleted */
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pwmdrv.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pwmdrv.c
new file mode 100644
index 0000000..70a30eb
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pwmdrv.c
@@ -0,0 +1,215 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    pwmdrv.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file is defined for external interrupt channel.
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#include "drv_comm.h"
+#include "pwm_sw.h"
+#include "custom_hw_default.h"
+//#include "kal_non_specific_general_types.h"
+#include "stack_config.h"
+#include "rwg_sw.h"
+#include "dcl.h"
+
+void PWM_initialize(void)
+{
+#if 0
+#if 0
+#if ( (defined(MT6205)) || (defined(MT6208)) || (defined(FPGA)))
+/* under construction !*/
+#endif   /*(MT6205,MT6208)*/
+#if ( (defined(MT6205B)) || (defined(MT6218)) )
+/* under construction !*/
+/* under construction !*/
+#endif   /*(MT6205B,MT6218)*/
+#endif
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#if defined(DRV_PWM_PWM2)
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+/* under construction !*/
+#if defined(DRV_PWM_PWM3)
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif//#if defined(DRV_PWM_PWM3)
+#endif /* end of __LTE_SM__ */
+
+}
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pxs_custom.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pxs_custom.c
new file mode 100644
index 0000000..d2a7f55
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pxs_custom.c
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * pxs_custom.c
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ *   PXS driver custom file
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *******************************************************************************/
+
+#if defined(__PXS_CM3623__)
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"
+#include "pxs_cm3623.h"
+#include "pxs_custom.h"
+#include "drv_comm.h"
+
+
+
+static kal_uint16 cm3623_thrshold_array[]=
+{
+	10,
+	4
+	
+};
+
+kal_bool cm3623_sensitivity_level_num(kal_uint16 *pData)
+{
+	*pData = sizeof(cm3623_thrshold_array)/sizeof(kal_uint16);
+	return KAL_TRUE;
+}
+
+kal_bool cm3623_get_sensitivity_table(kal_uint16 **pData)
+{
+	*pData = &cm3623_thrshold_array[0];
+	return KAL_TRUE;
+}
+
+
+kal_bool cm3623_power_enable(kal_bool enable)
+{
+	
+//#if defined(LUFFY76V2_DEMO_BB)
+	{
+		// Only for Luffy76 V2
+		// Luffy76 V2 PXS SDA use GPIO101
+		// GPIO101 GPIO mode pull HIGH is controlled by MSDC2 (From 1 to 3)
+		// So we need to configure MSDC1 controller to enable pull HIGH (I2C open gain)
+		kal_uint32 val32;
+		
+		// Clear MSDC1 clock gating
+		DRV_WriteReg(0x610D0320, 0x200);
+		// Configure MSDC1 controller to enable PULL HIGH functionality
+		val32 = DRV_Reg32(0x60120018);
+		val32 &= ~(0x00000700);
+		val32 |= (0x00000200);
+		DRV_WriteReg32(0x60120018, val32);
+	}
+//#endif // #if defined(LUFFY76V2_DEMO_BB)
+	return KAL_TRUE;
+}
+
+//kal_uint16 cm3623_get_pxs_threshold(void)
+//{
+//	return CM3623_PXS_THRESHOLD;
+//}
+
+
+kal_bool pxs_custom_hw_cmd_handler(PXS_HW_CMD_ENUM cmd, void *pData)
+{
+	switch (cmd)
+	{
+		case PXS_HW_CMD_POWER_ENABLE:
+			return cm3623_power_enable(*((kal_bool *)pData));
+		break;
+		case PXS_HW_CMD_GET_SENSITIVITY_LEVEL_NUM:
+			return cm3623_sensitivity_level_num((kal_uint16 *)pData);
+		break;
+		case PXS_HW_CMD_GET_SENSITIVITY_TABLE:
+			return cm3623_get_sensitivity_table((kal_uint16 **)pData);
+		break;
+		default:
+			return KAL_FALSE;
+		//break;
+	}
+}
+
+
+extern kal_uint16 cm3623_get_pxs_sensitivity_level_num(void);
+extern kal_uint16 *cm3623_get_pxs_sensitivity_level_table(void);
+
+
+
+#endif // #if defined(__PXS_CM3623__)
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pxs_custom.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pxs_custom.h
new file mode 100644
index 0000000..bad40e0
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/pxs_custom.h
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * pxs_custom.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *
+ *   PXS driver custom header file
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *******************************************************************************/
+#if defined(__PXS_CM3623__)
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"
+#include "drv_comm.h"
+#include "dcl.h"
+
+// Use GPIO to simulate I2C communication interface
+#define USE_SW_I2C
+
+// Use HW I2C
+//#define USE_HW_I2C
+
+
+#if defined(USE_SW_I2C)
+extern const char gpio_pxs_i2c_scl_pin;
+extern const char gpio_pxs_i2c_sda_pin;
+
+//#define CM3623_SCL   gpio_pxs_scl_pin
+//#define CM3623_SDA   gpio_pxs_sda_pin
+
+#define CM3623_SCL   gpio_pxs_i2c_scl_pin
+#define CM3623_SDA   gpio_pxs_i2c_sda_pin
+
+#define SCL_GPIO_MODE()   DclGPIO_Control(pxs_scl_gpio_dcl_handle,GPIO_CMD_SET_MODE_0,0); //GPIO_ModeSetup(CM3623_SCL, 0)
+#define SCL_HIGH()        DclGPIO_Control(pxs_scl_gpio_dcl_handle,GPIO_CMD_WRITE_HIGH,0); //GPIO_WriteIO(1, CM3623_SCL)
+#define SCL_LOW()         DclGPIO_Control(pxs_scl_gpio_dcl_handle,GPIO_CMD_WRITE_LOW,0); //GPIO_WriteIO(0, CM3623_SCL)
+#define SCL_OUTPUT()      DclGPIO_Control(pxs_scl_gpio_dcl_handle,GPIO_CMD_SET_DIR_OUT,0); //GPIO_InitIO(GPIO_DIR_OUTPUT, CM3623_SCL)
+#define SDA_GPIO_MODE()   DclGPIO_Control(pxs_sda_gpio_dcl_handle,GPIO_CMD_SET_MODE_0,0); //GPIO_ModeSetup(CM3623_SDA, 0)
+#define SDA_HIGH()        DclGPIO_Control(pxs_sda_gpio_dcl_handle,GPIO_CMD_WRITE_HIGH,0); //GPIO_WriteIO(1, CM3623_SDA)
+#define SDA_LOW()         DclGPIO_Control(pxs_sda_gpio_dcl_handle,GPIO_CMD_WRITE_LOW,0); //GPIO_WriteIO(0, CM3623_SDA)
+#define SDA_OUTPUT()      DclGPIO_Control(pxs_sda_gpio_dcl_handle,GPIO_CMD_SET_DIR_OUT,0); //GPIO_InitIO(GPIO_DIR_OUTPUT, CM3623_SDA)
+#define SDA_INPUT()       DclGPIO_Control(pxs_sda_gpio_dcl_handle,GPIO_CMD_SET_DIR_IN,0); //GPIO_InitIO(GPIO_DIR_INPUT, CM3623_SDA)
+#define SDA_VAL()         pxs_GPIO_ReadIO(pxs_sda_gpio_dcl_handle) //GPIO_ReadIO(CM3623_SDA)
+
+#endif // #if defined(USE_SW_I2C)
+
+// PXS EINT
+extern const unsigned char PXS_EINT_NO;
+#define CM3623_EINT  PXS_EINT_NO
+
+
+//extern kal_bool cm3623_power_enable(kal_bool enable);
+//extern kal_uint16 cm3623_get_pxs_threshold(void);
+//extern kal_uint16 cm3623_get_pxs_sensitivity_level_num(void);
+//extern kal_uint16 *cm3623_get_pxs_sensitivity_level_table(void);
+
+extern kal_bool pxs_custom_hw_cmd_handler(PXS_HW_CMD_ENUM cmd, void *pData);
+
+
+
+#endif // #if defined(__PXS_CM3623__)
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/sccb_v2_custom.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/sccb_v2_custom.h
new file mode 100644
index 0000000..930831c
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/sccb_v2_custom.h
@@ -0,0 +1,138 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   sccb_v2_custom.c
+ *
+ *
+ * Description:
+ * ------------
+ *   SCCB/I2C V2 Driver
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ *****************************************************************************/
+//#if (defined(_USE_SCCB_V2_DRIVER_))
+#if (defined(DRV_I2C_25_SERIES))
+
+typedef enum
+{
+ SCCB_OWNER_CAMERA=0,
+ SCCB_OWNER_FM, 	
+ SCCB_OWNER_TP,
+ SCCB_OWNER_MS,
+ SCCB_NUM_OF_OWNER
+}SCCB_OWNER;
+
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/touch_panel_custom.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/touch_panel_custom.c
new file mode 100644
index 0000000..a2317e2
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/touch_panel_custom.c
@@ -0,0 +1,920 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    keypad_def.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file is defined for keypad table
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#if defined(TOUCH_PANEL_SUPPORT) || defined(HAND_WRITING)
+#include "drv_features.h"
+#include "drv_comm.h"
+#include "eint.h"
+#include "touch_panel_custom.h"
+#include "touch_panel.h"
+#include "touch_panel_spi.h"
+
+
+TouchPanel_custom_data_struct  tp_custom_data_def = 
+{
+#if defined(DRV_TOUCH_PANEL_CUSTOMER_PARAMETER)
+    TS_DEBOUNCE_TIME,
+    TOUCH_PANEL_CALI_CHECK_OFFSET,
+    MIN_PEN_MOVE_OFFSET,
+    HAND_WRITING_MAX_OFFSET,
+    NONHAND_WRITING_MAX_OFFSET, 
+    MAX_STROKE_MOVE_OFFSET, 
+    TOUCH_PRESSURE_THRESHOLD_HIGH, 
+#if defined(DRV_TOUCH_PANEL_MULTIPLE_PICK) 
+   MULTIPLE_POINT_SELECTION, 
+#endif //#if defined(DRV_TOUCH_PANEL_MULTIPLE_PICK) 
+#if defined(__DRV_TP_DISCARD_SHIFTING__) 
+    PRESSURE_CHECK_BOUNDARY, 
+    PRESSURE_SHIFTING_BOUNDARY, 
+#endif //#if defined(__DRV_TP_DISCARD_SHIFTING__) 
+#endif //#if defined(DRV_TOUCH_PANEL_CUSTOMER_PARAMETER)
+	TOUCH_PANEL_FILTER_THRESOLD,
+   /*ADC*/
+   TOUCH_PANEL_ADC_X_START,   
+	TOUCH_PANEL_ADC_X_END,     
+	TOUCH_PANEL_ADC_Y_START,
+	TOUCH_PANEL_ADC_Y_END,     
+	/*Coord.*/
+	TOUCH_PANEL_COORD_X_START,
+	TOUCH_PANEL_COORD_X_END,   
+	TOUCH_PANEL_COORD_Y_START, 
+	TOUCH_PANEL_COORD_Y_END,
+	/*Size.*/
+	TOUCH_PANEL_X_MILLIMETER,
+	TOUCH_PANEL_Y_MILLIMETER,
+	/*eint level*/
+	TOUCH_PANEL_EINT_DOWN_LEVEL   
+};
+
+#if defined(DRV_TP_NO_EXT_EINT)
+
+extern void tp_read_adc(kal_int16 *x, kal_int16 *y);
+extern void tp_irq_enable(kal_bool on);
+#ifdef TOUCH_PANEL_PRESSURE
+   extern kal_bool tp_pressure_check(void);
+#endif /*TOUCH_PANEL_PRESSURE*/
+
+const kal_int16 touch_panel_filter_thresold = TOUCH_PANEL_FILTER_THRESOLD;
+#ifdef TOUCH_PANEL_PRESSURE
+   const kal_uint16 touch_pressure_threshold_high = TOUCH_PRESSURE_THRESHOLD_HIGH;
+   const kal_uint16 touch_pressure_threshold_low = TOUCH_PRESSURE_THRESHOLD_LOW;
+#endif /*TOUCH_PANEL_PRESSURE*/
+
+#else // #if defined(DRV_TP_NO_EXT_EINT)
+
+void tp_read_adc(kal_int16 *x, kal_int16 *y)
+{
+#if !defined(__TOUCH_PANEL_CAPACITY__)
+   kal_uint8 command=0, retry;        
+   kal_int16 temp_x=0, temp_y=0, diff_x=0, diff_y=0;
+   
+   for(retry=0;retry<TOUCH_PANEL_RETRY;retry++)
+   {
+   /*Y ADC*/
+   command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_X_PLUS|TOUCH_PANEL_12BIT_SAMPLE|
+           TOUCH_PANEL_DIFF_MODE;
+   serial_write_data(command);
+   *y=serial_read_data();   
+   
+   /*X ADC*/
+   command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_Y_PLUS|TOUCH_PANEL_12BIT_SAMPLE|
+           TOUCH_PANEL_DIFF_MODE;
+   serial_write_data(command);
+   *x=serial_read_data();      
+      
+      if(temp_x==0&&temp_y==0)
+      {
+         temp_x=*x;
+         temp_y=*y;
+      }
+      else
+      {
+         diff_x=temp_x-*x;
+         diff_y=temp_y-*y;
+         if(diff_x>TOUCH_PANEL_FILTER_THRESOLD||diff_x<-TOUCH_PANEL_FILTER_THRESOLD
+            ||diff_y>TOUCH_PANEL_FILTER_THRESOLD||diff_y<-TOUCH_PANEL_FILTER_THRESOLD)
+         {
+            temp_x=*x;
+            temp_y=*y;
+            *x=4095;                  
+            *y=4095;            
+         }
+         else
+         {
+         	if(*x!=4095&&*y!=4095)
+            	return;
+         }                        
+      }                  
+   }   
+#endif //#if !defined(__TOUCH_PANEL_CAPACITY__)
+}
+
+#ifdef TOUCH_PANEL_PRESSURE
+kal_bool tp_pressure_check(void)
+{
+#if !defined(__TOUCH_PANEL_CAPACITY__)
+   kal_uint8 command=0, retry;        
+   kal_int16 x, z1, z2;
+   kal_uint32 pressure;
+   
+   for(retry=0;retry<TOUCH_PANEL_RETRY;retry++)
+   {
+      /*X ADC*/
+      command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_Y_PLUS|TOUCH_PANEL_12BIT_SAMPLE|
+           TOUCH_PANEL_SINGLE_MODE;
+      serial_write_data(command);
+      x=serial_read_data();   
+      //kal_prompt_trace(MOD_TP_TASK, "pressure x value: %d", x);
+
+      /*Z1 ADC*/
+      command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_Z1_POS|TOUCH_PANEL_12BIT_SAMPLE|
+           TOUCH_PANEL_DIFF_MODE;
+      serial_write_data(command);
+      z1=serial_read_data();   
+      //kal_prompt_trace(MOD_TP_TASK, "pressure z1 value: %d", z1);
+
+      /*Z2 ADC*/
+      command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_Z2_POS|TOUCH_PANEL_12BIT_SAMPLE|
+           TOUCH_PANEL_DIFF_MODE;
+      serial_write_data(command);
+      z2=serial_read_data();
+      //kal_prompt_trace(MOD_TP_TASK, "pressure z2 value: %d", z2);
+      if((z1 > 0) && (z2 > z1))
+      {
+         pressure = (x*(z2-z1)/z1) >> 2; /* Rx*x/4096*(z2/z1 - 1), assume Rx=1024 */
+         //kal_prompt_trace(MOD_TP_TASK, "pressure: %d", pressure);
+         //if (pressure > TOUCH_PRESSURE_THRESHOLD2)
+           // kal_prompt_trace(MOD_TP_TASK, "pressure is above %d. value: %d", TOUCH_PRESSURE_THRESHOLD2, pressure);
+         if ((pressure > TOUCH_PRESSURE_THRESHOLD_HIGH) || (pressure <= TOUCH_PRESSURE_THRESHOLD_LOW))
+            return KAL_FALSE; 
+         else
+            return KAL_TRUE; 
+      }
+   }
+   //kal_prompt_trace(MOD_TP_TASK, "pressure: 0 (no value)");
+#endif //#if !defined(__TOUCH_PANEL_CAPACITY__)
+   return KAL_FALSE;
+}
+#endif /*TOUCH_PANEL_PRESSURE*/
+
+void tp_irq_enable(kal_bool on)
+{
+#if !defined(__TOUCH_PANEL_CAPACITY__)
+   kal_uint8 command=0;   
+   kal_uint32 savedMask;
+
+#ifdef TOUCH_PANEL_PRESSURE
+   volatile kal_uint32  i;
+   //savedMask = SaveAndSetIRQMask();
+   GPIO_WriteIO(0,SPI_CS_PIN);
+   for (i=0;i<50;i++)
+   {;}
+#endif
+   
+   if(on==KAL_TRUE)
+   {
+      command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_PWD_ENBLE;               
+   }   
+   else
+   {
+      command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_IRQ_DISABLE;
+   }  
+   serial_write_data(command);
+   serial_read_data(); 
+
+#ifdef TOUCH_PANEL_PRESSURE
+    if(on==KAL_TRUE)            
+        GPIO_WriteIO(0,SPI_CS_PIN);
+    else
+        GPIO_WriteIO(1,SPI_CS_PIN);
+#endif
+   
+   //RestoreIRQMask(savedMask);
+#endif //#if !defined(__TOUCH_PANEL_CAPACITY__)
+}        
+
+#endif // #if defined(DRV_TP_NO_EXT_EINT)
+
+TouchPanel_custom_data_struct *tp_Get_Data(void) 
+{
+   return (&tp_custom_data_def);
+}      
+TouchPanel_customize_function_struct tp_custom_func=
+{
+     tp_Get_Data,
+     tp_read_adc,
+#ifdef TOUCH_PANEL_PRESSURE
+     tp_pressure_check,
+#endif
+     tp_irq_enable
+};            
+TouchPanel_customize_function_struct *tp_GetFunc(void)
+{
+   return (&tp_custom_func);  
+}   
+
+
+
+
+
+
+
+/*************************************************************************
+ * [Set the config for MMI handwriting pad is enabled]
+ *************************************************************************/
+#include "MMI_features.h"
+#ifdef __MMI_HANDWRITING_PAD__
+#include "mmi_frm_gprot.h" /* get tp_area_struct declaraction */
+#include "kbd_table.h"
+
+
+
+/*************************************************************************
+ * [Get the calibration point]
+ *************************************************************************/
+#define NUM_TP_CALIBRATION_POINTS 3
+const mmi_pen_point_struct tp_calibration_point[NUM_TP_CALIBRATION_POINTS]={
+      {TOUCH_PANEL_CALIBRATION_X_1, TOUCH_PANEL_CALIBRATION_Y_1}, /* top-left point */
+      {TOUCH_PANEL_CALIBRATION_X_2, TOUCH_PANEL_CALIBRATION_Y_2}, /* bottom-right point */
+      {TOUCH_PANEL_CALIBRATION_X_3, TOUCH_PANEL_CALIBRATION_Y_3}  /* the thrid point */
+   };
+
+
+/*************************************************************************
+ * [handwriting pad information setting]
+ * Define the coordinate for control areas
+ * Below is the reference setting ...
+ *************************************************************************/
+#if defined(__MMI_MAINLCD_176X220__)
+#define TP_SCREEN_ROW_H		(9)
+#define TP_SCREEN_ROW_0		(TOUCH_PANEL_COORD_Y_START)
+#define TP_SCREEN_ROW_1		(TOUCH_PANEL_COORD_Y_START+10)
+#define TP_SCREEN_ROW_2		(TOUCH_PANEL_COORD_Y_START+20)
+#define TP_SCREEN_ROW_3		(TOUCH_PANEL_COORD_Y_START+30)
+#define TP_SCREEN_ROW_4		(TOUCH_PANEL_COORD_Y_START+40)
+#define TP_SCREEN_ROW_5		(TOUCH_PANEL_COORD_Y_START+50)
+#define TP_SCREEN_ROW_6		(TOUCH_PANEL_COORD_Y_START+60)
+#define TP_SCREEN_ROW_7		(TOUCH_PANEL_COORD_Y_START+70)
+#define TP_SCREEN_ROW_8		(TOUCH_PANEL_COORD_Y_START+80)
+#define TP_SCREEN_ROW_9		(TOUCH_PANEL_COORD_Y_START+90)
+
+#define TP_SCREEN_COL_W		(57)
+#define TP_SCREEN_COL_0		(TOUCH_PANEL_COORD_X_START)
+#define TP_SCREEN_COL_1		(TOUCH_PANEL_COORD_X_START+58)
+#define TP_SCREEN_COL_2		(TOUCH_PANEL_COORD_X_START+116)
+#define TP_SCREEN_COL_3		(TOUCH_PANEL_COORD_X_START+174)
+
+#elif defined(__MMI_MAINLCD_240X320__)
+
+#define TP_SCREEN_ROW_H		(19)
+#define TP_SCREEN_ROW_0		(TOUCH_PANEL_COORD_Y_START)
+#define TP_SCREEN_ROW_1		(TOUCH_PANEL_COORD_Y_START+20)
+#define TP_SCREEN_ROW_2		(TOUCH_PANEL_COORD_Y_START+40)
+#define TP_SCREEN_ROW_3		(TOUCH_PANEL_COORD_Y_START+60)
+#define TP_SCREEN_ROW_4		(TOUCH_PANEL_COORD_Y_START+80)
+#define TP_SCREEN_ROW_5		(TOUCH_PANEL_COORD_Y_START+100)
+#define TP_SCREEN_ROW_6		(TOUCH_PANEL_COORD_Y_START+120)
+#define TP_SCREEN_ROW_7		(TOUCH_PANEL_COORD_Y_START+140)
+#define TP_SCREEN_ROW_8		(TOUCH_PANEL_COORD_Y_START+160)
+#define TP_SCREEN_ROW_9		(TOUCH_PANEL_COORD_Y_START+180)
+
+#define TP_SCREEN_COL_W		(79)
+#define TP_SCREEN_COL_0		(TOUCH_PANEL_COORD_X_START)
+#define TP_SCREEN_COL_1		(TOUCH_PANEL_COORD_X_START+80)
+#define TP_SCREEN_COL_2		(TOUCH_PANEL_COORD_X_START+160)
+#define TP_SCREEN_COL_3		(TOUCH_PANEL_COORD_X_START+240)
+
+#endif
+
+
+/* If the customer want to handle the pen events, register the function handler here. */
+
+void custom_dummy_pen_hdlr(mmi_pen_point_struct pos)
+{
+}
+
+
+mmi_pen_hdlr custom_extra_func_hdlr[MMI_PEN_EVENT_TYPE_MAX]={
+                        	NULL, /* MMI_PEN_EVENT_DOWN, */
+                        	NULL, /* MMI_PEN_EVENT_UP, */
+                        	NULL, /* MMI_PEN_EVENT_LONG_TAP, */
+                        	NULL, /* MMI_PEN_EVENT_REPEAT, */
+                        	NULL, /* MMI_PEN_EVENT_MOVE, */
+                        	NULL,  /* MMI_PEN_EVENT_ABORT, */ 
+                        };
+
+/* 
+ * control area:
+ * The points of the region need to be successive and end at {-1,-1}
+ *
+ * TP_SCREEN_COL_0
+ * |     TP_SCREEN_COL_1
+ * |     |     TP_SCREEN_COL_2
+ * |     |     |     TP_SCREEN_COL_3
+ * v     v     v     v
+ * +-----+-----+-----+ <-- TP_SCREEN_ROW_0
+ * | LSK |  ^  | RSK |
+ * +-----+-----+-----+ <-- TP_SCREEN_ROW_1
+ * | <-- |  v  | --> |
+ * +-----+-----+-----+ <-- TP_SCREEN_ROW_2
+ * |Send |  C  | End |
+ * +-----+-----+-----+ <-- TP_SCREEN_ROW_3
+ * |  1  |  2  |  3  |
+ * +-----+-----+-----+ <-- TP_SCREEN_ROW_4
+ * |  4  |  5  |  6  |
+ * +-----+-----+-----+ <-- TP_SCREEN_ROW_5
+ * |  7  |  8  |  9  |
+ * +-----+-----+-----+ <-- TP_SCREEN_ROW_6
+ * |  *  |  0  |  #  |
+ * +-----+-----+-----+ <-- TP_SCREEN_ROW_7
+ *
+ * handwriting area:
+ * The region must be the rectangle and the points should be successive and end at {-1,-1}
+ */
+const mmi_pen_point_struct tp_lsk_region[]= {
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_0}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_0}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_1-1}, 
+                           {TP_SCREEN_COL_0,	   TP_SCREEN_ROW_1-1}, 
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_up_arrow_region[]={
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_0}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_0}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_1-1}, 
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_1-1}, 
+                           {-1,-1}
+                        };
+                        
+const mmi_pen_point_struct tp_rsk_region[]={
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_0}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_0}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_1-1}, 
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_1-1}, 
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_left_arrow_region[]= {
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_1}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_1}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_2-1}, 
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_2-1}, 
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_down_arrow_region[]={
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_1}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_1}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_2-1}, 
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_2-1}, 
+                           {-1,-1}
+                        };
+                        
+const mmi_pen_point_struct tp_right_arrow_region[]={
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_1}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_1}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_2-1}, 
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_2-1}, 
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_send_region[]= {
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_2}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_2}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_3-1}, 
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_3-1}, 
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_clean_region[]={
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_2}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_2}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_3-1}, 
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_3-1}, 
+                           {-1,-1}
+                        };
+                        
+const mmi_pen_point_struct tp_end_region[]={
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_2}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_2}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_3-1}, 
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_3-1}, 
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_1_region[]= {
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_3}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_3}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_4-1}, 
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_4-1}, 
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_2_region[]={
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_3}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_3}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_4-1}, 
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_4-1}, 
+                           {-1,-1}
+                        };
+                        
+const mmi_pen_point_struct tp_3_region[]={
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_3}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_3}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_4-1}, 
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_4-1}, 
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_4_region[]= {
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_4}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_4}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_5-1}, 
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_5-1}, 
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_5_region[]={
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_4}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_4}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_5-1}, 
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_5-1}, 
+                           {-1,-1}
+                        };
+                        
+const mmi_pen_point_struct tp_6_region[]={
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_4}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_4}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_5-1}, 
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_5-1}, 
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_7_region[]= {
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_5}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_5}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_6-1}, 
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_6-1}, 
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_8_region[]={
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_5}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_5}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_6-1}, 
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_6-1}, 
+                           {-1,-1}
+                        };
+                        
+const mmi_pen_point_struct tp_9_region[]={
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_5}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_5}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_6-1}, 
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_6-1}, 
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_star_region[]= {
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_6}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_6}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_7-1}, 
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_7-1}, 
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_0_region[]={
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_6}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_6}, 
+                           {TP_SCREEN_COL_2-1,  TP_SCREEN_ROW_7-1}, 
+                           {TP_SCREEN_COL_1,    TP_SCREEN_ROW_7-1}, 
+                           {-1,-1}
+                        };
+                        
+const mmi_pen_point_struct tp_hash_region[]={
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_6}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_6}, 
+                           {TP_SCREEN_COL_3-1,  TP_SCREEN_ROW_7-1}, 
+                           {TP_SCREEN_COL_2,    TP_SCREEN_ROW_7-1}, 
+                           {-1,-1}
+                        };
+
+
+
+
+
+
+
+
+const mmi_pen_point_struct tp_extra_func_region[]={
+                           {TP_SCREEN_COL_0,	TP_SCREEN_ROW_7},
+                           {TP_SCREEN_COL_0+TP_SCREEN_COL_3/4,    TP_SCREEN_ROW_7+TP_SCREEN_ROW_H/2},
+                           {TP_SCREEN_COL_0+TP_SCREEN_COL_3/2,    TP_SCREEN_ROW_7+TP_SCREEN_ROW_H},
+                           {TP_SCREEN_COL_0+TP_SCREEN_COL_3*3/4,  TP_SCREEN_ROW_7+TP_SCREEN_ROW_H/2},
+                           {TP_SCREEN_COL_3-1,                    TP_SCREEN_ROW_7},
+                           {-1,-1}
+                        };
+
+const mmi_pen_point_struct tp_handwriting_region[]={
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_2}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_2}, 
+                           {TP_SCREEN_COL_1-1,  TP_SCREEN_ROW_8-1}, 
+                           {TP_SCREEN_COL_0,    TP_SCREEN_ROW_8-1}, 
+                           {-1,-1}
+                        };
+
+/* 
+ * The area table information... 
+ * 1. tp_area_id_enum
+ *
+ * 2. flag
+ *       TP_HANDWRITING_AREA  - it is the handwriting area
+ *       TP_CONTROL_AREA      - it is the control area
+ *       TP_MAPPING_KEY       - for control area only; Translate the pen event to 
+ *                              the key event
+ *       TP_CUSTOM_HANDLE     - the custom want to handler pen event by themselves. 
+ *       TP_HANDWRITING_SUPPORTS_FULL_AREA - extend handwriting area to full touch 
+ *                                           pad area when the first stroke down.
+ *
+ * 3. region
+ *    control area:
+ *       The points of the region need to be successive and end at {-1,-1}
+ *
+ *    handwriting area:
+ *       The region must be the rectangle and the points should be in clock wise order
+ *
+ * 4. pen_handler_table
+ *    NULL - use the default handler
+ *    Others - the customers provide the special handlers
+ */
+const tp_area_struct tp_area_table[TP_AREA_MAX_NUM] = {
+   /* Handwriting Area */
+   {
+      TP_AREA_HANDWRITING,
+      TP_HANDWRITING_AREA|TP_HANDWRITING_SUPPORTS_FULL_AREA,
+      tp_handwriting_region,
+      NULL
+   },
+
+   /* Control Area */
+   {
+      TP_CONTROL_AREA_LSK,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_SK_LEFT,
+      tp_lsk_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_UP_ARROW,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_UP,
+      tp_up_arrow_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_RSK,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_SK_RIGHT,
+      tp_rsk_region,
+      NULL
+   },
+
+   {
+      TP_CONTROL_AREA_LEFT_ARROW,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_LEFT,
+      tp_left_arrow_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_DOWN_ARROW,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_DOWN,
+      tp_down_arrow_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_RIGHT_ARROW,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_RIGHT,
+      tp_right_arrow_region,
+      NULL
+   },
+
+   {
+      TP_CONTROL_AREA_SEND,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_SEND,
+      tp_send_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_CLEAN,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_CLEAR,
+      tp_clean_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_END,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_END,
+      tp_end_region,
+      NULL
+   },
+
+   {
+      TP_CONTROL_AREA_1,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_1,
+      tp_1_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_2,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_2,
+      tp_2_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_3,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_3,
+      tp_3_region,
+      NULL
+   },
+
+   {
+      TP_CONTROL_AREA_4,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_4,
+      tp_4_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_5,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_5,
+      tp_5_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_6,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_6,
+      tp_6_region,
+      NULL
+   },
+
+   {
+      TP_CONTROL_AREA_7,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_7,
+      tp_7_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_8,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_8,
+      tp_8_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_9,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_9,
+      tp_9_region,
+      NULL
+   },
+
+   {
+      TP_CONTROL_AREA_STAR,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_STAR,
+      tp_star_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_0,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_0,
+      tp_0_region,
+      NULL
+   },
+   {
+      TP_CONTROL_AREA_HASH,
+      TP_CONTROL_AREA|TP_MAPPING_KEY|DEVICE_KEY_HASH,
+      tp_hash_region,
+      NULL
+   },
+
+
+   {
+      TP_CONTROL_AREA_EXTRA_FUNC,
+      TP_CONTROL_AREA|TP_CUSTOM_HANDLE,
+      tp_extra_func_region,
+      custom_extra_func_hdlr
+   },
+};
+
+#endif /* __MMI_HANDWRITING_PAD__ */
+
+
+
+#endif
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/touch_panel_custom.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/touch_panel_custom.h
new file mode 100644
index 0000000..db46611
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/touch_panel_custom.h
@@ -0,0 +1,383 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    keypad_def.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file is defined for keypad table
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef TOUCH_PANEL_CUSTOM_H
+#define TOUCH_PANEL_CUSTOM_H
+#include "eint.h"
+#include "lcd_sw_inc.h"
+
+#define CTP_I2C_LDO         VCAMA //MT6276E2 use VACMA, MT6276E1 use VCAMD
+#define CTP_I2C_LDO_VOLTAGE PMU_VOLT_02_800000_V
+
+#define TOUCH_PANEL_COORD_X_START 0
+#define TOUCH_PANEL_COORD_X_END   (LCD_WIDTH - 1)
+#define TOUCH_PANEL_COORD_Y_START 0
+#define TOUCH_PANEL_COORD_Y_END   (LCD_HEIGHT - 1)
+
+/*ADC*/ 
+#if defined(__TOUCH_PANEL_CAPACITY__)
+#define TOUCH_PANEL_ADC_X_START   0 
+#define TOUCH_PANEL_ADC_X_END     (2048*TOUCH_PANEL_COORD_X_END)/479
+#define TOUCH_PANEL_ADC_Y_START   0 
+#define TOUCH_PANEL_ADC_Y_END     (2048*TOUCH_PANEL_COORD_Y_END)/799
+#else
+#define TOUCH_PANEL_ADC_X_START   230 
+#define TOUCH_PANEL_ADC_X_END     3867
+#define TOUCH_PANEL_ADC_Y_START   287 
+#define TOUCH_PANEL_ADC_Y_END     3853
+#endif //#if defined(__TOUCH_PANEL_CAPACITY__)
+
+#define TOUCH_PANEL_X_MILLIMETER 42
+#define TOUCH_PANEL_Y_MILLIMETER 70
+#define TOUCH_PANEL_EINT_DOWN_LEVEL  LEVEL_LOW
+
+
+/*touch panel control*/
+#define TOUCH_PANEL_START_BIT    0x80
+
+#define TOUCH_PANEL_TEMP0        0x00
+#define TOUCH_PANEL_X_PLUS       0x10
+#define TOUCH_PANEL_VBAT         0x20
+#define TOUCH_PANEL_Z1_POS       0x30
+#define TOUCH_PANEL_Z2_POS       0x40
+#define TOUCH_PANEL_Y_PLUS       0x50
+#define TOUCH_PANEL_TEMP1        0x70
+
+#define TOUCH_PANEL_ADC3         0x20
+#define TOUCH_PANEL_ADC4         0x60
+#define TOUCH_PANEL_12BIT_SAMPLE 0x0
+#define TOUCH_PANEL_8BIT_SAMPLE  0x8
+#define TOUCH_PANEL_DIFF_MODE    0x0
+#define TOUCH_PANEL_SINGLE_MODE  0x4
+
+#define TOUCH_PANEL_PWD_ENBLE    0x0
+#define TOUCH_PANEL_IRQ_DISABLE  0x1
+#define TOUCH_PANEL_PWD_DISABLE  0x3
+#define TOUCH_PANEL_PWD_RESET    0x2
+
+
+/*retry and filter*/
+#ifdef TOUCH_PANEL_PRESSURE
+   #define TOUCH_PANEL_RETRY 1
+   #define TOUCH_PANEL_FILTER_THRESOLD        10000
+   #define   TOUCH_PRESSURE_THRESHOLD_LOW       150
+#else /*TOUCH_PANEL_PRESSURE*/
+#define TOUCH_PANEL_RETRY 4
+#define TOUCH_PANEL_FILTER_THRESOLD 50
+#endif /*TOUCH_PANEL_PRESSURE*/ 
+   #define   TOUCH_PRESSURE_THRESHOLD_HIGH     6500
+
+#if defined(DRV_TOUCH_PANEL_CUSTOMER_PARAMETER) 
+#define TS_DEBOUNCE_TIME 36*32 
+#define TOUCH_PANEL_CALI_CHECK_OFFSET 6 
+#define MIN_PEN_MOVE_OFFSET  8 
+#define HAND_WRITING_MAX_OFFSET  50 
+#define NONHAND_WRITING_MAX_OFFSET  100 
+#define MAX_STROKE_MOVE_OFFSET 1 
+#if defined(DRV_TOUCH_PANEL_MULTIPLE_PICK) 
+#define MULTIPLE_POINT_SELECTION 7 
+#endif /*#if defined(DRV_TOUCH_PANEL_MULTIPLE_PICK)*/ 
+#if defined(__DRV_TP_DISCARD_SHIFTING__) 
+#define PRESSURE_CHECK_BOUNDARY 2000 
+#define PRESSURE_SHIFTING_BOUNDARY 800 
+#endif /*#if defined(__DRV_TP_DISCARD_SHIFTING__)*/ 
+#endif /*#if defined(DRV_TOUCH_PANEL_CUSTOMER_PARAMETER)*/ 
+
+/*************************************************************************
+ * [Define the cailbration point only for HAND_WRITING feature ]
+ *************************************************************************/
+/* top-left point */
+#define TOUCH_PANEL_CALIBRATION_X_1   (20)
+#define TOUCH_PANEL_CALIBRATION_Y_1   (170)
+/* bottom-right point */
+#define TOUCH_PANEL_CALIBRATION_X_2   (220)
+#define TOUCH_PANEL_CALIBRATION_Y_2   (270)
+/* 3rd point should be different from the ceter point 
+ * such that driver can check it's ADC value
+ */
+#define TOUCH_PANEL_CALIBRATION_X_3   (150)
+#define TOUCH_PANEL_CALIBRATION_Y_3   (250)
+
+
+/*************************************************************************
+ * [handwriting pad information setting]
+ * 1. Define the enum of the control areas
+ * 
+ * The flag for control areas or handwriting areas...
+ *
+ * #define TP_MAPPING_KEY        (0x00000100)
+ * #define TP_CUSTOM_HANDLE      (0x00000200)
+ * #define TP_CONTROL_AREA       (0x80000000)
+ * #define TP_HANDWRITING_AREA   (0x40000000)
+ * #define TP_HANDWRITING_SUPPORTS_FULL_AREA   (0x20000000)
+ *
+ * 2.
+ *************************************************************************/
+typedef enum
+{
+   TP_AREA_HANDWRITING,
+   TP_CONTROL_AREA_LSK,
+   TP_CONTROL_AREA_UP_ARROW,
+   TP_CONTROL_AREA_RSK,
+   TP_CONTROL_AREA_DOWN_ARROW,
+   TP_CONTROL_AREA_LEFT_ARROW,
+   TP_CONTROL_AREA_RIGHT_ARROW,
+
+   TP_CONTROL_AREA_SEND,
+   TP_CONTROL_AREA_CLEAN,
+   TP_CONTROL_AREA_END,
+
+   TP_CONTROL_AREA_1,
+   TP_CONTROL_AREA_2,
+   TP_CONTROL_AREA_3,
+
+   TP_CONTROL_AREA_4,
+   TP_CONTROL_AREA_5,
+   TP_CONTROL_AREA_6,
+
+   TP_CONTROL_AREA_7,
+   TP_CONTROL_AREA_8,
+   TP_CONTROL_AREA_9,
+
+   TP_CONTROL_AREA_STAR,
+   TP_CONTROL_AREA_0,
+   TP_CONTROL_AREA_HASH,   
+   
+   TP_CONTROL_AREA_EXTRA_FUNC,
+   
+   /* don't add the enum after this line */
+   TP_AREA_MAX_NUM
+}tp_area_id_enum;
+
+
+
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/touch_panel_spi.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/touch_panel_spi.c
new file mode 100644
index 0000000..1fe01a1
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/touch_panel_spi.c
@@ -0,0 +1,290 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    serial_interface.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines Serial Interface.
+ *
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+#if defined(TOUCH_PANEL_SUPPORT) || defined(HAND_WRITING)
+#include    "drv_features.h"
+#include "kal_public_api.h" //MSBB change #include 	"kal_release.h" 
+#include    "drv_comm.h" 
+#include    "gpio_hw.h"
+#include    "gpio_sw.h"
+#include    "touch_panel_spi.h"
+//#include    "serial_interface.h"
+
+#if !defined(DRV_TP_NO_EXT_EINT) && !defined(__TOUCH_PANEL_CAPACITY__)
+ 
+#define 	 ZERO_FIELD_COUNT 0 /*zero filled cycles*/
+void serial_write_data(kal_uint8 data);
+kal_uint16 serial_read_data(void);
+     
+ 
+/*************************************************************************
+* FUNCTION
+*	serial_init
+*
+* DESCRIPTION
+*	This function initializes serial interface.
+*
+* PARAMETERS
+*  None
+* RETURNS
+*	None
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+void serial_init(void) 
+{ 
+   kal_uint16 delay;
+	kal_int16 x, y;
+   
+	GPIO_WriteIO(0,SPI_CS_PIN);
+   GPIO_ModeSetup(SPI_DIN_PIN,  0x0);
+   GPIO_ModeSetup(SPI_CLK_PIN,  0x0);
+   GPIO_ModeSetup(SPI_DOUT_PIN, 0x0); 
+   GPIO_ModeSetup(SPI_CS_PIN,   0x0);
+   GPIO_ModeSetup(SPI_BUSY_PIN, 0x0);  
+   GPIO_InitIO(OUTPUT,SPI_DIN_PIN); 
+   GPIO_InitIO(OUTPUT,SPI_CLK_PIN);
+   GPIO_InitIO(INPUT,SPI_DOUT_PIN);
+   GPIO_InitIO(OUTPUT,SPI_CS_PIN);
+   GPIO_InitIO(INPUT,SPI_BUSY_PIN);
+   GPIO_WriteIO(0,SPI_CS_PIN);
+   
+   /*AR7643 needs this, so weird*/
+   for(delay=0;delay<1000;delay++){};   
+   //tp_read_adc(&x, &y);
+}
+/*************************************************************************
+* FUNCTION
+*	serial_delay
+*
+* DESCRIPTION
+*	This function is to add delay.
+*
+* PARAMETERS
+*  None
+* RETURNS
+*	None
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+void serial_delay(void)
+{
+   kal_uint16 delay;
+   for(delay=0;delay<0;delay++){}
+}
+/*************************************************************************
+* FUNCTION
+*	serial_write_bit_high
+*
+* DESCRIPTION
+*	This function is to set a bit as high.
+*
+* PARAMETERS
+*  None
+* RETURNS
+*	None    
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+/*write 1*/
+void serial_write_bit_high(void)
+{
+   SET_DATA_HIGH();         /*    ----              */
+   SET_CLK_LOW();           /*     _-_             */
+   serial_delay();
+   SET_CLK_HIGH();
+   serial_delay();
+   SET_CLK_LOW();
+}
+/*************************************************************************
+* FUNCTION
+*	serial_write_bit_low
+*
+* DESCRIPTION
+*	This function is to set a bit as low.
+*
+* PARAMETERS
+*  None
+* RETURNS
+*	None
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+/*write 0*/
+void serial_write_bit_low(void)
+{
+   SET_DATA_LOW();          /*    ____              */
+   SET_CLK_LOW();           /*     _-_             */
+   serial_delay();
+   SET_CLK_HIGH();
+   serial_delay();
+   SET_CLK_LOW();
+}
+/*************************************************************************
+* FUNCTION
+*	serial_read_data
+*
+* DESCRIPTION
+*	This function is to read data via SPI.
+*
+* PARAMETERS
+*  None
+*
+* RETURNS
+*	received data
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+/*read*/
+kal_uint16 serial_read_data(void)
+{ 
+   kal_uint16 data=0; 
+   kal_int16    i;        
+   kal_uint32 savedMask;
+   kal_uint32 retry=0;	
+
+   //savedMask = SaveAndSetIRQMask();
+   SET_CLK_LOW();
+   SET_CLK_HIGH();
+   while(GET_BUSY_BIT())
+   {
+
+ 	   SET_CLK_LOW();
+   	SET_CLK_HIGH();
+   	retry++;
+   	if(retry>1000000)/*give up the read. controller may be broken*/
+   		return 0;
+   	};
+   for(i=11;i>=0;i--)
+   {
+      //SET_CLK_LOW();
+      //serial_delay();
+      SET_CLK_HIGH();
+      serial_delay();
+		if(GET_DATA_BIT())
+			data |= (1<<i); 
+
+		SET_CLK_LOW();
+		serial_delay();
+   }
+   for(i=0;i<ZERO_FIELD_COUNT;i++)
+   {
+      SET_CLK_LOW();
+      serial_delay();
+      SET_CLK_HIGH();
+      SET_CLK_LOW();  
+   }
+   data&=0x3fff;
+   //RestoreIRQMask(savedMask);
+   return data;
+}
+/*************************************************************************
+* FUNCTION
+*	serial_write_data
+*
+* DESCRIPTION
+*	This function is to write data via SPI.
+*
+* PARAMETERS
+*  transmitted data
+*
+* RETURNS
+*	None
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+void serial_write_data(kal_uint8 data)
+{
+   kal_int8 i;
+   //kal_uint32 savedMask;
+   //savedMask = SaveAndSetIRQMask();
+
+	for (i=7;i>=0;i--)
+	{	/* data bit 7~0 */
+		if (data & (1<<i))
+		{
+		   serial_write_bit_high();
+		}
+		else
+		{
+			serial_write_bit_low();
+		}
+	}
+   SET_DATA_LOW(); 
+	//RestoreIRQMask(savedMask);
+}
+
+#endif /*!defined(DRV_TP_NO_EXT_EINT)*/
+
+#endif
+
+
+
+
+
+
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/touch_panel_spi.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/touch_panel_spi.h
new file mode 100644
index 0000000..2369ce2
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/touch_panel_spi.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:
+ * ---------
+ *    serial_interface.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines Serial Interface.
+ *
+ * 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 TOUCH_PANEL_SPI_H
+#define TOUCH_PANEL_SPI_H
+ 
+#ifdef __CUST_NEW__
+   extern const char gpio_tp_spi_din_pin;
+   extern const char gpio_tp_spi_clk_pin;
+   extern const char gpio_tp_spi_dout_pin;
+   extern const char gpio_tp_spi_cs_pin;
+   extern const char gpio_tp_spi_busy_pin;
+
+   #define SPI_DIN_PIN     gpio_tp_spi_din_pin  /*GPO*/
+   #define SPI_CLK_PIN     gpio_tp_spi_clk_pin /*GPO*/ 
+   #define SPI_DOUT_PIN    gpio_tp_spi_dout_pin /*GPI*/ 
+   #define SPI_CS_PIN      gpio_tp_spi_cs_pin /*GPO*/ 
+   #define SPI_BUSY_PIN    gpio_tp_spi_busy_pin /*GPI*/ 
+#else /* __CUST_NEW__ */
+#define SPI_DIN_PIN     50  /*GPO*/ 
+#define SPI_CLK_PIN     5   /*GPO*/ 
+#define SPI_DOUT_PIN    22  /*GPI*/ 
+#define SPI_CS_PIN      23  /*GPO*/ 
+#define SPI_BUSY_PIN    21  /*GPI*/ 
+#endif /* __CUST_NEW__ */
+
+#define SET_CLK_HIGH()			(GPIO_WriteIO(1,SPI_CLK_PIN))
+#define SET_CLK_LOW()			(GPIO_WriteIO(0,SPI_CLK_PIN))
+#define SET_DATA_HIGH()	      GPIO_WriteIO(1,SPI_DIN_PIN)
+#define SET_DATA_LOW()			GPIO_WriteIO(0,SPI_DIN_PIN)
+#define GET_DATA_BIT()			GPIO_ReadIO(SPI_DOUT_PIN)
+#define GET_BUSY_BIT()        GPIO_ReadIO(SPI_BUSY_PIN)
+
+void serial_write_bit_high(void);
+void serial_write_bit_low(void);
+void serial_delay(void);
+void serial_write_data(kal_uint8 data);
+kal_uint16 serial_read_data(void);
+void serial_init(void);
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/tv_custom.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/tv_custom.c
new file mode 100644
index 0000000..6df89fc
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/tv_custom.c
@@ -0,0 +1,75 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   tv_custom.c
+ *
+ * Project:
+ * --------
+ *		MT6228, MT6229
+ *
+ * Description:
+ * ------------
+ *   MT6228, MT6229 tv output control function
+ *
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+#include "reg_base.h"
+#include "intrCtrl.h"
+#include "drv_comm.h"
+#include "drvpdn.h"
+#ifdef TV_OUT_SUPPORT
+kal_uint16 tv_gamma_table[5][9]=
+{{0, 103, 291, 534, 822, 1149, 1510, 1903, 2311},
+ {0, 173, 411, 681, 976, 1291, 1621, 1965, 2311},
+ {0, 290, 580, 870, 1160, 1450, 1740, 2030, 2320},
+ {0, 487, 819, 1111, 1378, 1629, 1868, 2097, 2311},
+ {0, 819, 1158, 1418, 1637, 1831, 2005, 2166, 2311}
+};
+#endif//TV_OUT_SUPPORT
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/tv_custom.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/tv_custom.h
new file mode 100644
index 0000000..b217211
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/tv_custom.h
@@ -0,0 +1,65 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   tv_custom.h
+ *
+ * Project:
+ * --------
+ *		MT6228, MT6229
+ *
+ * Description:
+ * ------------
+ *   MT6228, MT6229 tv output control function
+ *
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+#ifdef TV_OUT_SUPPORT
+extern kal_uint16 tv_gamma_table[5][9];
+#endif //TV_OUT_SUPPORT
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/two_mic_NR_custom_if.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/two_mic_NR_custom_if.c
new file mode 100644
index 0000000..f8a1d33
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/two_mic_NR_custom_if.c
@@ -0,0 +1,682 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   two_mic_NR_custom_if.h
+ *
+ * DateTime:
+ * ---------
+ *   9/27/2009 3:10PM
+ *
+ * Project:
+ * --------
+ *   2-mic NR
+ *
+ * Description:
+ * ------------
+ *   This file contains the function for the state transition of the FM chip.
+ *
+ * Author:
+ *   
+ *
+ **************************************************************************
+ **************************************************************************/
+#if defined(__TWOMICNR_SUPPORT__)
+
+ /*****************************************************************************
+ * System Include Files
+ ****************************************************************************/
+#include "two_mic_NR_custom_if.h"
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"      /* Basic data type */
+#include "parameter_data_file.h"
+#include "gpio_sw.h"
+
+/*****************************************************************************
+ * Local Definitions
+ ****************************************************************************/ 
+#define START_TOKEN	0
+#define STOP_TOKEN	1
+#define DW_TOKEN	2
+#define DR_N_TOKEN	3
+
+/* #define TWOMICNR_I2C_DELAY    (0x08) */
+#define TWOMICNR_I2C_DELAY    (0x28)
+static kal_uint32 TWOMICNR_I2C_MAX_RETRY_COUNT = 0x100;
+
+#define SET_TWOMICNR_I2C_CLK_OUTPUT     GPIO_InitIO(OUTPUT,TWOMICNR_I2C_SCL_GPIO_PIN)
+#define SET_TWOMICNR_I2C_CLK_INPUT      GPIO_InitIO(INPUT,TWOMICNR_I2C_SCL_GPIO_PIN)
+#define SET_TWOMICNR_I2C_DATA_OUTPUT    GPIO_InitIO(OUTPUT,TWOMICNR_I2C_SDA_GPIO_PIN)
+#define SET_TWOMICNR_I2C_DATA_INPUT     GPIO_InitIO(INPUT,TWOMICNR_I2C_SDA_GPIO_PIN)
+#define SET_TWOMICNR_I2C_CLK_HIGH       GPIO_WriteIO(1,TWOMICNR_I2C_SCL_GPIO_PIN)
+#define SET_TWOMICNR_I2C_CLK_LOW        GPIO_WriteIO(0,TWOMICNR_I2C_SCL_GPIO_PIN)
+#define SET_TWOMICNR_I2C_DATA_HIGH      GPIO_WriteIO(1,TWOMICNR_I2C_SDA_GPIO_PIN)
+#define SET_TWOMICNR_I2C_DATA_LOW       GPIO_WriteIO(0,TWOMICNR_I2C_SDA_GPIO_PIN)
+#define GET_TWOMICNR_I2C_DATA_BIT       GPIO_ReadIO(TWOMICNR_I2C_SDA_GPIO_PIN)
+
+#define TWOMICNR_I2C_RESET_TRANSMISSION             \
+  {                                             \
+    SET_TWOMICNR_I2C_DATA_OUTPUT;                   \
+    SET_TWOMICNR_I2C_DATA_HIGH;                     \
+    SET_TWOMICNR_I2C_CLK_OUTPUT;                    \
+    SET_TWOMICNR_I2C_CLK_HIGH;                      \
+  }
+  
+#define TWOMICNR_I2C_START_TRANSMISSION \
+{ \
+    kal_uint8 j_start; \
+    SET_TWOMICNR_I2C_CLK_OUTPUT; \
+    SET_TWOMICNR_I2C_DATA_OUTPUT; \
+    SET_TWOMICNR_I2C_CLK_HIGH; \
+    SET_TWOMICNR_I2C_DATA_HIGH; \
+    for (j_start = 0; j_start < TWOMICNR_I2C_DELAY; j_start++);\
+    SET_TWOMICNR_I2C_DATA_LOW; \
+    for (j_start = 0; j_start < TWOMICNR_I2C_DELAY; j_start++);\
+    SET_TWOMICNR_I2C_CLK_LOW; \
+}
+
+
+
+#define TWOMICNR_I2C_STOP_TRANSMISSION \
+{ \
+    kal_uint8 j_stop; \
+    SET_TWOMICNR_I2C_CLK_OUTPUT; \
+    SET_TWOMICNR_I2C_DATA_OUTPUT; \
+    SET_TWOMICNR_I2C_CLK_LOW; \
+    SET_TWOMICNR_I2C_DATA_LOW; \
+    for (j_stop = 0; j_stop < TWOMICNR_I2C_DELAY; j_stop++);\
+    SET_TWOMICNR_I2C_CLK_HIGH; \
+    for (j_stop = 0; j_stop < TWOMICNR_I2C_DELAY; j_stop++);\
+    SET_TWOMICNR_I2C_DATA_HIGH; \
+}
+
+
+#define NACK_BIT                                \
+  {                                             \
+    kal_uint8  i_nack;                      \
+    for (i_nack=0; i_nack<TWOMICNR_I2C_DELAY; i_nack++);           \
+    SET_TWOMICNR_I2C_DATA_OUTPUT;                   \
+    SET_TWOMICNR_I2C_DATA_HIGH;                     \
+    for (i_nack=0; i_nack<TWOMICNR_I2C_DELAY; i_nack++);           \
+    SET_TWOMICNR_I2C_CLK_HIGH;                      \
+    for (i_nack=0; i_nack<TWOMICNR_I2C_DELAY; i_nack++);           \
+    SET_TWOMICNR_I2C_CLK_LOW;                       \
+    for (i_nack=0;i_nack<TWOMICNR_I2C_DELAY;i_nack++);             \
+  }  
+
+unsigned short length_twomicBR_para;
+
+/*****************************************************************************
+ * Local Definitions
+ ****************************************************************************/
+
+static kal_bool TWOMICNR_I2C_wait_readComplete(void)
+{
+  kal_uint32 i=0; 
+  SET_TWOMICNR_I2C_DATA_INPUT;
+  while(1)
+  {
+    i++;
+    if(GET_TWOMICNR_I2C_DATA_BIT == 0)
+       break;
+    if(i > TWOMICNR_I2C_MAX_RETRY_COUNT)   
+       return KAL_FALSE;  
+  }
+    
+  return KAL_TRUE;      
+}
+
+
+/*****************************************************************************
+    Function:  Two_Mic_NR_send_byte
+    Parameters:  
+  	       send_byte: the 8-bits data which will be sent out by I2C mode
+    Returns:  
+    Side Effects:  -
+              
+ Description:  To send one-byte parameter into FM chip
+*****************************************************************************/
+static void Two_Mic_NR_send_byte(kal_uint8 send_byte)
+{
+    kal_uint8 i_send_byte;
+    kal_uint8 j_send_byte;
+
+    for (i_send_byte = 8; i_send_byte > 0; i_send_byte--) { /* data bit 7~0 */
+        if (send_byte & (1 << (i_send_byte-1))) {
+            SET_TWOMICNR_I2C_DATA_HIGH;
+        }else {
+            SET_TWOMICNR_I2C_DATA_LOW;
+        }
+
+        for (j_send_byte = 0; j_send_byte < TWOMICNR_I2C_DELAY; j_send_byte++);
+        SET_TWOMICNR_I2C_CLK_HIGH;        
+        for (j_send_byte = 0; j_send_byte < TWOMICNR_I2C_DELAY; j_send_byte++);
+        SET_TWOMICNR_I2C_CLK_LOW;
+        for (j_send_byte = 0; j_send_byte < TWOMICNR_I2C_DELAY; j_send_byte++);
+    }
+    /* don't care bit, 9th bit */
+    SET_TWOMICNR_I2C_DATA_LOW;
+    SET_TWOMICNR_I2C_DATA_INPUT;
+    SET_TWOMICNR_I2C_CLK_HIGH;
+    for (j_send_byte = 0; j_send_byte < TWOMICNR_I2C_DELAY; j_send_byte++);
+/*    ret = TWOMICNR_I2C_wait_readComplete(); */
+    SET_TWOMICNR_I2C_CLK_LOW;
+    SET_TWOMICNR_I2C_DATA_OUTPUT;
+    
+    return;
+}
+
+/*****************************************************************************
+    Function:  Two_Mic_NR_get_byte
+    Parameters:  
+  	        
+    Returns:  the 8-bits data which comes from FM chip by I2C mode
+    Side Effects:  -
+              
+ Description:  To fetch the one-byte parameter from FM chip
+*****************************************************************************/
+static kal_uint8 Two_Mic_NR_get_byte(void)
+{
+    signed char i;
+    kal_uint8 j;
+    kal_uint8 get_byte = 0;
+
+    SET_TWOMICNR_I2C_DATA_INPUT;
+
+    for (i = 7; i >= 0; i--) { /* data bit 7~0 */
+        SET_TWOMICNR_I2C_CLK_HIGH;
+	for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+        if (GET_TWOMICNR_I2C_DATA_BIT)
+            get_byte |= (1 << i);
+        for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+        SET_TWOMICNR_I2C_CLK_LOW;
+        for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+    }
+    /* don't care bit, 9th bit */
+    SET_TWOMICNR_I2C_DATA_HIGH;
+    SET_TWOMICNR_I2C_DATA_OUTPUT;
+    for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+    SET_TWOMICNR_I2C_CLK_HIGH;
+    for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+    SET_TWOMICNR_I2C_CLK_LOW;
+
+    return get_byte;
+} 
+
+
+
+/*****************************************************************************
+    Function:  Two_Mic_NR_Readback_para
+    Parameters:  
+  	       length_send: the total number of bytes which will be sent out by I2C mode
+  	       parameter_array: pointer to the parameter array which will be sent out by I2C mode
+   	       length_receive: the total number of bytes which will be received by I2C mode
+ 	       receive_parameter_array: pointer to the parameter array which will keep the parameters received by I2C mode
+    Returns:
+    Side Effects:  -
+              
+ Description:  To fetch the parameters from FM chip
+*****************************************************************************/
+void Two_Mic_NR_Readback_para(kal_uint32  length_send, unsigned char* send_parameter_array, kal_uint32  length_receive, unsigned char* receive_parameter_array)
+{
+    kal_uint8 i,j;
+
+        TWOMICNR_I2C_START_TRANSMISSION;
+        for (i = 0; i < length_send; i++);
+        {
+        	for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+        	Two_Mic_NR_send_byte(send_parameter_array[i]);
+        }
+/*        for (j = 0; j < TWOMICNR_I2C_DELAY; j++); */
+
+        for (i = 0; i < length_receive; i++);
+        {
+        	for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+        	receive_parameter_array[i] = Two_Mic_NR_get_byte();
+        }
+        for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+
+        TWOMICNR_I2C_STOP_TRANSMISSION;
+
+
+    return;
+} 
+
+
+/*****************************************************************************
+    Function:  Two_Mic_NR_Download
+    Parameters:  
+  	       mode: 0 -> handset mode; 1 -> handfree mode; 2 -> bypass mode;  3 -> Init mode
+    Returns:  
+    Side Effects:  -
+              
+ Description:  To download corresponding parameters into FM chip
+*****************************************************************************/
+void Two_Mic_NR_Download(unsigned short mode)
+{
+    kal_uint8 j;
+    unsigned short i_NR_Download_para;
+   
+   switch (mode){
+
+   	case 0:
+        TWOMICNR_I2C_START_TRANSMISSION;
+        for (i_NR_Download_para = 0; i_NR_Download_para < TWOMICNR_HANDSET_PARA_LENGTH; i_NR_Download_para++)
+        {
+        	for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+        	Two_Mic_NR_send_byte((kal_uint8)(parameter_data_handset_mode[i_NR_Download_para]));
+        }
+        for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+        TWOMICNR_I2C_STOP_TRANSMISSION;
+   		break;
+   	case 1:
+        TWOMICNR_I2C_START_TRANSMISSION;
+        for (i_NR_Download_para = 0; i_NR_Download_para < TWOMICNR_HANDFREE_PARA_LENGTH; i_NR_Download_para++)
+        {
+        	for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+        	Two_Mic_NR_send_byte((kal_uint8)(parameter_data_handfree_mode[i_NR_Download_para]));
+        }
+        for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+        TWOMICNR_I2C_STOP_TRANSMISSION;
+   		break;
+   	case 2:
+        TWOMICNR_I2C_START_TRANSMISSION;
+        for (i_NR_Download_para = 0; i_NR_Download_para < TWOMICNR_BYPASS_PARA_LENGTH; i_NR_Download_para++)
+        {
+        	for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+        	Two_Mic_NR_send_byte((kal_uint8)(parameter_data_bypass_mode[i_NR_Download_para]));
+        }
+        for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+        TWOMICNR_I2C_STOP_TRANSMISSION;
+   		break;
+   	case 3:
+        TWOMICNR_I2C_START_TRANSMISSION;
+        for (i_NR_Download_para = 0; i_NR_Download_para < TWOMICNR_INIT_PARA_LENGTH; i_NR_Download_para++)
+        {
+        	for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+        	Two_Mic_NR_send_byte((kal_uint8)(parameter_data_Init[i_NR_Download_para]));
+        }
+        for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+        TWOMICNR_I2C_STOP_TRANSMISSION;
+   		break;
+   	default:
+   		break;
+   }
+      		
+   return;
+}
+
+
+/*****************************************************************************
+    Function:  Two_Mic_NR_chip_Sleep
+    Parameters:  
+  	       
+    Returns:  
+    Side Effects:  -
+              
+ Description:  To sleep the FM chip.
+	1. Set PWD low
+	2. Wait 15ms
+	3. Turn off the main clock
+****************************************************************************/
+void Two_Mic_NR_chip_Sleep(void)
+{
+  /*Set PWD low */
+  GPIO_WriteIO(0,TWOMICNR_FM_PWDN_GPIO_PIN);
+
+  /*Wait 15ms */
+  kal_sleep_task(4);
+
+  /*Turn off the main clock */
+  GPIO_ModeSetup(TWOMICNR_FM_13MHZ_GPIO_PIN, 0); /* GPIO mode */
+  GPIO_InitIO(OUTPUT,TWOMICNR_FM_13MHZ_GPIO_PIN);
+  GPIO_WriteIO(0,TWOMICNR_FM_13MHZ_GPIO_PIN);  /* low voltage */
+
+  return;
+}
+
+
+/*****************************************************************************
+    Function:  Two_Mic_NR_chip_Init
+    Parameters:  
+  	       
+    Returns:  
+    Side Effects:  -
+              
+ Description:  To initialize the FM chip after power on of the handset
+	1.  RST/PWD/BYPASS power on default at low 
+	2.  Open main clock
+	3.  Set PWD high
+	4.  Wait 5ms
+	5.  Set RST high
+	6.  Wait 15ms
+*****************************************************************************/
+void Two_Mic_NR_chip_Init(void)
+{
+  /*RST/PWD/BYPASS power on default at low */
+  GPIO_ModeSetup(TWOMICNR_FM_RST_GPIO_PIN, 0); /* GPIO mode */
+  GPIO_InitIO(OUTPUT,TWOMICNR_FM_RST_GPIO_PIN);
+  GPIO_WriteIO(0,TWOMICNR_FM_RST_GPIO_PIN);
+  GPIO_ModeSetup(TWOMICNR_FM_PWDN_GPIO_PIN, 0); /* GPIO mode */
+  GPIO_InitIO(OUTPUT,TWOMICNR_FM_PWDN_GPIO_PIN);
+  GPIO_WriteIO(0,TWOMICNR_FM_PWDN_GPIO_PIN);
+  GPIO_ModeSetup(TWOMICNR_FM_BYPASS_GPIO_PIN, 0); /* GPIO mode */
+  GPIO_InitIO(OUTPUT,TWOMICNR_FM_BYPASS_GPIO_PIN);
+  GPIO_WriteIO(0,TWOMICNR_FM_BYPASS_GPIO_PIN);
+
+  /*Open main clock */
+  (*(volatile kal_uint16 *)(0x84023200)) = 0x3;	/* 13MHz */
+  GPIO_ModeSetup(TWOMICNR_FM_13MHZ_GPIO_PIN, 2); /* CLKM2 mode */
+  
+  /*Set PWD high */
+  GPIO_WriteIO(1,TWOMICNR_FM_PWDN_GPIO_PIN);
+
+  /*Wait 5ms */
+  /*1 ticks = 4.615ms */
+  kal_sleep_task(2);
+
+  /*Set RST high */
+  GPIO_WriteIO(1,TWOMICNR_FM_RST_GPIO_PIN);
+
+  /*Wait 15ms */
+  kal_sleep_task(4);
+  
+  /*Download Init_para */
+  Two_Mic_NR_Download(3);
+  
+  /*Enter power-down state */
+  Two_Mic_NR_chip_Sleep();
+  
+  return;
+}
+
+/*****************************************************************************
+    Function:  FM_chip_Reset
+    Parameters:  
+  	       
+    Returns:  
+    Side Effects:  -
+              
+ Description:  To reset the FM chip
+	1.  Mute UL path
+	2.  If clock is not running, turn on the main clock first
+	3.  Set BYPASS low
+	4.  Set PWD high
+	5.  Set RST low
+	6.  Wait 1ms.
+	7.  Set RST high
+	8.  Wait 15 ms.
+	9.  Un-mute UL path
+*****************************************************************************/
+void FM_chip_Reset(void)
+{
+  /*Mute UL path */
+
+  /*If clock is not running, turn on the main clock first */
+  (*(volatile unsigned short *)(0x84023200)) = 0x3;	/* 13MHz */
+  GPIO_ModeSetup(TWOMICNR_FM_13MHZ_GPIO_PIN, 2); /* CLKM2 mode */
+  
+  /*Set BYPASS low */
+  GPIO_WriteIO(0,TWOMICNR_FM_BYPASS_GPIO_PIN);
+
+  /*Set PWD high */
+  GPIO_WriteIO(1,TWOMICNR_FM_PWDN_GPIO_PIN);
+
+  /* Set RST low */
+  GPIO_WriteIO(0,TWOMICNR_FM_RST_GPIO_PIN);
+
+  /* Wait 1ms */
+  kal_sleep_task(2);
+
+  /* Set RST high */
+  GPIO_WriteIO(1,TWOMICNR_FM_RST_GPIO_PIN);
+
+  /* Wait 15ms */
+  kal_sleep_task(4);
+  
+  /* Un-mute UL path */
+  
+  return;
+}
+
+
+
+/*****************************************************************************
+    Function:  Two_Mic_NR_chip_Bypass_mode
+    Parameters:  
+  	       
+    Returns:  
+    Side Effects:  -
+              
+ Description:  Make the FM chip to enter bypass mode
+*****************************************************************************/
+void Two_Mic_NR_chip_Bypass_mode(void)
+{
+  FM_chip_Reset();
+  
+  /* Download bypass parameter */
+  Two_Mic_NR_Download(2);
+
+  /* Wait 100 ms */
+  kal_sleep_task(25);
+
+  /*Set BYPASS high */
+  GPIO_WriteIO(1,TWOMICNR_FM_BYPASS_GPIO_PIN);
+  
+  return;
+}
+
+/*****************************************************************************
+    Function:  Two_Mic_NR_chip_exit_Bypass_mode
+    Parameters:  
+  	       
+    Returns:  
+    Side Effects:  -
+              
+ Description:  Make the FM chip to exit bypass mode, into power down mode
+*****************************************************************************/
+void Two_Mic_NR_chip_exit_Bypass_mode(void)
+{
+  /*Set BYPASS low */
+  GPIO_WriteIO(0,TWOMICNR_FM_BYPASS_GPIO_PIN);
+  Two_Mic_NR_chip_Sleep();
+  
+  return;
+}
+
+
+/*****************************************************************************
+    Function:  Two_Mic_NR_chip_Handset_mode
+    Parameters:  
+  	       
+    Returns:  
+    Side Effects:  -
+              
+ Description:  Make the FM chip to enter handset mode
+*****************************************************************************/
+void Two_Mic_NR_chip_Handset_mode(void)
+{
+  FM_chip_Reset();
+  
+  /* Download handset parameter */
+  Two_Mic_NR_Download(0);
+  
+  return;
+}
+
+
+/*****************************************************************************
+    Function:  Two_Mic_NR_chip_Handfree_mode
+    Parameters:  
+  	       
+    Returns:  
+    Side Effects:  -
+              
+ Description:  Make the FM chip to enter handfree mode
+*****************************************************************************/
+void Two_Mic_NR_chip_Handfree_mode(void)
+{
+  FM_chip_Reset();
+  
+  /*Download handfree parameter */
+  Two_Mic_NR_Download(1);
+  
+  return;
+}
+
+
+
+
+/****************************************************************************************************************************
+    Function:  Two_Mic_NR_GPIO_con
+    Parameters:  
+  	       GPIO_pin_name: the GPIO pin to be manipulated. 				0 -> reset  1 -> PWDN  2 -> bypass
+  	       GPIO_pin_voltage : the voltage level which needs to be reached. 		0 -> low  1 -> high
+    Returns:  
+    Side Effects:  -
+              
+ Description:  To manipulate the GPIO pin according to the command, which comes from PC tools through UART port
+****************************************************************************************************************************/
+void Two_Mic_NR_GPIO_con(unsigned short GPIO_pin_name,unsigned short GPIO_pin_voltage)
+{
+   switch (GPIO_pin_name){
+   	case 0:
+		GPIO_ModeSetup(TWOMICNR_FM_RST_GPIO_PIN, 0); /* GPIO mode */
+		GPIO_InitIO(OUTPUT,TWOMICNR_FM_RST_GPIO_PIN);
+		if (GPIO_pin_voltage == 0)
+		{
+			GPIO_WriteIO(0,TWOMICNR_FM_RST_GPIO_PIN);
+		}
+		else
+		{
+			GPIO_WriteIO(1,TWOMICNR_FM_RST_GPIO_PIN);
+		}
+   		break;
+   	case 1:
+		GPIO_ModeSetup(TWOMICNR_FM_PWDN_GPIO_PIN, 0); /* GPIO mode */
+		GPIO_InitIO(OUTPUT,TWOMICNR_FM_PWDN_GPIO_PIN);
+		if (GPIO_pin_voltage == 0)
+		{
+			GPIO_WriteIO(0,TWOMICNR_FM_PWDN_GPIO_PIN);
+		}
+		else
+		{
+			GPIO_WriteIO(1,TWOMICNR_FM_PWDN_GPIO_PIN);
+		}
+   		break;
+   	case 2:
+		GPIO_ModeSetup(TWOMICNR_FM_BYPASS_GPIO_PIN, 0); /* GPIO mode */
+		GPIO_InitIO(OUTPUT,TWOMICNR_FM_BYPASS_GPIO_PIN);
+		if (GPIO_pin_voltage == 0)
+		{
+			GPIO_WriteIO(0,TWOMICNR_FM_BYPASS_GPIO_PIN);
+		}
+		else
+		{
+			GPIO_WriteIO(1,TWOMICNR_FM_BYPASS_GPIO_PIN);
+		}
+   		break;
+   	default:
+   		break;
+   }
+
+
+  return;
+}
+
+
+/****************************************************************************************************************************
+    Function:  Two_mic_NR_I2C_download_data
+    Parameters:  
+  	       Command_data_to_be_sent: this array contains the command data to be downloaded into the FM2018x chip
+  	       One_command_data_length : the length of this array
+    Returns:  
+    Side Effects:  -
+              
+ Description:  To download the corresponding parameters into FM chip, which comes from PC tools through UART port
+****************************************************************************************************************************/
+void Two_mic_NR_I2C_download_data(unsigned char* Command_data_to_be_sent,kal_uint16 One_command_data_length)
+{
+  kal_uint8 j;
+  kal_uint16 counter;
+   
+   TWOMICNR_I2C_START_TRANSMISSION;
+   for (counter = 0; counter < One_command_data_length; counter++)
+   {
+   	for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+   	Two_Mic_NR_send_byte((kal_uint8)(Command_data_to_be_sent[counter]));
+   }
+   for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+   TWOMICNR_I2C_STOP_TRANSMISSION;
+
+      		
+   return;
+}
+
+
+/****************************************************************************************************************************
+    Function:  Two_mic_NR_I2C_readback_data
+    Parameters:  
+  	       readback_command_to_be_sent: the chip ID of the FM2018x for reading back operation, '0xC1' now
+  	       readback_data_length : the length of this array
+    Returns:  
+    Side Effects:  -
+              
+ Description:  To download the corresponding parameters into FM chip, which comes from PC tools through UART port
+****************************************************************************************************************************/
+unsigned char Two_mic_NR_I2C_readback_data(unsigned char readback_command_to_be_sent)
+{
+  kal_uint8 j;
+  kal_uint8 return_value;
+
+   
+   TWOMICNR_I2C_START_TRANSMISSION;
+   
+   for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+   Two_Mic_NR_send_byte((kal_uint8)readback_command_to_be_sent);
+
+   for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+   return_value = Two_Mic_NR_get_byte();
+   	
+   for (j = 0; j < TWOMICNR_I2C_DELAY; j++);
+   TWOMICNR_I2C_STOP_TRANSMISSION;
+      		
+  
+   return (unsigned char)return_value;
+}
+
+
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/two_mic_NR_custom_if.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/two_mic_NR_custom_if.h
new file mode 100644
index 0000000..f71a2d1
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/two_mic_NR_custom_if.h
@@ -0,0 +1,109 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   two_mic_NR_custom_if.h
+ *
+ * DateTime:
+ * ---------
+ *   9/27/2009 3:10PM
+ *
+ * Project:
+ * --------
+ *   2-mic NR
+ *
+ * Description:
+ * ------------
+ *   This file contains the function for the state transition of the FM chip.
+ *
+ * Author:
+ *   
+ *
+ **************************************************************************
+ **************************************************************************/
+
+#ifndef TWO_MIC_NR_CUSTOM_IF_H
+#define TWO_MIC_NR_CUSTOM_IF_H
+
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"      /* Basic data type */
+
+#ifdef __CUST_NEW__
+
+extern const char gpio_2micNR_scl_pin;
+extern const char gpio_2micNR_sda_pin;
+extern const char gpio_2micNR_bypass_pin;
+extern const char gpio_2micNR_13mhz_pin;
+extern const char gpio_2micNR_rst_pin;
+extern const char gpio_2micNR_pwdn_pin;
+
+#define TWOMICNR_I2C_SCL_GPIO_PIN	gpio_2micNR_scl_pin
+#define TWOMICNR_I2C_SDA_GPIO_PIN	gpio_2micNR_sda_pin
+#define TWOMICNR_FM_13MHZ_GPIO_PIN	gpio_2micNR_13mhz_pin
+#define TWOMICNR_FM_RST_GPIO_PIN	gpio_2micNR_rst_pin
+#define TWOMICNR_FM_PWDN_GPIO_PIN	gpio_2micNR_pwdn_pin
+#define TWOMICNR_FM_BYPASS_GPIO_PIN	gpio_2micNR_bypass_pin
+
+ 
+#else //__CUST_NEW__
+
+enum
+{ 
+  TWOMICNR_I2C_SCL_GPIO_PIN 	= 36,
+  TWOMICNR_I2C_SDA_GPIO_PIN	= 37,
+  TWOMICNR_FM_13MHZ_GPIO_PIN	= 43,
+  TWOMICNR_FM_RST_GPIO_PIN	= 52,
+  TWOMICNR_FM_PWDN_GPIO_PIN	= 53,
+  TWOMICNR_FM_BYPASS_GPIO_PIN	= 54
+};
+
+#endif //__CUST_NEW__
+
+
+/***************************************************************************
+ *  Function Prototypes
+ **************************************************************************/
+extern void Two_Mic_NR_chip_Handfree_mode(void);
+extern void Two_Mic_NR_chip_Init(void);
+extern void Two_Mic_NR_chip_Handset_mode(void);
+extern void Two_Mic_NR_chip_Bypass_mode(void);
+extern void Two_Mic_NR_chip_exit_Bypass_mode(void);
+extern void Two_Mic_NR_chip_Sleep(void);
+
+extern unsigned char Two_mic_NR_I2C_readback_data(unsigned char readback_command_to_be_sent);
+extern void Two_mic_NR_I2C_download_data(unsigned char* Command_data_to_be_sent,kal_uint16 One_command_data_length);
+extern void Two_Mic_NR_GPIO_con(unsigned short GPIO_pin_name,unsigned short GPIO_pin_voltage);
+#endif
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/uart_def.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/uart_def.c
new file mode 100644
index 0000000..eb960b6
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/uart_def.c
@@ -0,0 +1,482 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    uart_def.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines the size of UART ring buffer
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#include "drv_comm.h"
+#include "uart_sw.h"
+
+/*
+1. remove get_mem by using allocate static array
+2. use different buffer size for __PRODUCTION_RELEASE__
+3. the buffer size is depending on the owner instead uart port
+*/
+
+UART_flowCtrlMode  *UART_Get_FlowCtrl_Mode(void);
+const UART_rings_struct *UART_Get_Data(void);
+
+	
+// define the uart ring buffer size
+#define L4_RX_LENGTH				2048
+#define L4_TX_LENGTH				3584
+#define L4_TXISR_LENGTH			3072
+#define TST_RX_LENGTH			2048
+#define TST_TX_LENGTH			3584
+#define TST_TXISR_LENGTH		3072
+#define CUSTOM_RX_LENGTH		2048
+#define CUSTOM_TX_LENGTH		3584
+#define CUSTOM_TXISR_LENGTH	3072
+
+
+
+//#pragma for D-cacheable, UART have VFIFO therefore use non-cacheable.
+#ifdef __MTK_TARGET__
+//#pragma arm section zidata = "NONCACHEDZI",  rwdata = "NONCACHEDRW"
+//#pragma arm section zidata = "INTSRAM_ZI",  rwdata = "INTSRAM_RW"    
+//liming add :for 6255 bring up(MCU mode)
+// L4 ring buffer
+//__attribute__ ((zero_init, section ("NONCACHEDZI"))) 
+__attribute__((aligned(8)))
+ kal_uint8 L4_RxRingBuffer[L4_RX_LENGTH];
+//__attribute__ ((zero_init, section ("NONCACHEDZI"))) 
+__attribute__((aligned(8)))
+ kal_uint8 L4_TxRingBuffer[L4_TX_LENGTH];
+//__attribute__ ((zero_init, section ("NONCACHEDZI"))) 
+__attribute__((aligned(8)))
+ kal_uint8 L4_TxISRRingBuffer[L4_TXISR_LENGTH];
+
+#if !defined(DRV_MD_1_UART)// for MD only have one uart port,like MT6280
+// tst ring buffer
+__attribute__ ((zero_init, section ("NONCACHEDZI"))) 
+__attribute__((aligned(8)))
+ kal_uint8 TST_RxRingBuffer[TST_RX_LENGTH];
+__attribute__ ((zero_init, section ("NONCACHEDZI"))) 
+__attribute__((aligned(8)))
+ kal_uint8 TST_TxRingBuffer[TST_TX_LENGTH];
+__attribute__ ((zero_init, section ("NONCACHEDZI"))) 
+__attribute__((aligned(8)))
+ kal_uint8 TST_TxISRRingBuffer[TST_TXISR_LENGTH];
+#endif
+
+#ifdef __UART3_SUPPORT__
+// uart3 ring buffer
+__attribute__ ((zero_init, section ("NONCACHEDZI"))) 
+__attribute__((aligned(8)))
+ kal_uint8 CUSTOM_RxRingBuffer[CUSTOM_RX_LENGTH];
+__attribute__ ((zero_init, section ("NONCACHEDZI")))
+__attribute__((aligned(8)))
+ kal_uint8 CUSTOM_TxRingBuffer[CUSTOM_TX_LENGTH];
+__attribute__ ((zero_init, section ("NONCACHEDZI")))
+__attribute__((aligned(8)))
+ kal_uint8 CUSTOM_TxISRRingBuffer[CUSTOM_TXISR_LENGTH];
+#endif //__UART3_SUPPORT__
+
+
+#else//#ifdef __MTK_TARGET__
+
+kal_uint8 L4_RxRingBuffer[L4_RX_LENGTH];
+kal_uint8 L4_TxRingBuffer[L4_TX_LENGTH];
+kal_uint8 L4_TxISRRingBuffer[L4_TXISR_LENGTH];
+
+kal_uint8 TST_RxRingBuffer[TST_RX_LENGTH];
+kal_uint8 TST_TxRingBuffer[TST_TX_LENGTH];
+kal_uint8 TST_TxISRRingBuffer[TST_TXISR_LENGTH];
+
+#ifdef __UART3_SUPPORT__
+// uart3 ring buffer
+kal_uint8 CUSTOM_RxRingBuffer[CUSTOM_RX_LENGTH];
+kal_uint8 CUSTOM_TxRingBuffer[CUSTOM_TX_LENGTH];
+kal_uint8 CUSTOM_TxISRRingBuffer[CUSTOM_TXISR_LENGTH];
+#endif //__UART3_SUPPORT__
+
+#endif //#ifdef __MTK_TARGET__
+
+
+const UART_rings_struct	UART_custom_rings = 
+{
+	{
+		{
+			L4_RxRingBuffer,
+			L4_TxRingBuffer,			
+			L4_TxISRRingBuffer,			
+			sizeof L4_RxRingBuffer,
+			sizeof L4_TxRingBuffer,			
+			sizeof L4_TxISRRingBuffer,			
+			MOD_L4C,
+		},	
+		#if !defined(DRV_MD_1_UART)// for MD only have one uart port,like MT6280
+		{  
+			TST_RxRingBuffer,
+			TST_TxRingBuffer,			
+			TST_TxISRRingBuffer,			
+			sizeof TST_RxRingBuffer,
+			sizeof TST_TxRingBuffer,			
+			sizeof TST_TxISRRingBuffer,			
+			MOD_TST_READER,
+		}, 
+		#endif
+		#ifdef __UART3_SUPPORT__		
+		{
+			CUSTOM_RxRingBuffer,
+			CUSTOM_TxRingBuffer,
+			CUSTOM_TxISRRingBuffer,
+			sizeof CUSTOM_RxRingBuffer,
+			sizeof CUSTOM_TxRingBuffer,
+			sizeof CUSTOM_TxISRRingBuffer,
+			MOD_UART3_HISR,
+		},						 
+		#endif	// __UART3_SUPPORT__
+	},
+	#ifdef __UART3_SUPPORT__		
+	uart_port2/*which one not support VFIFO*/			
+	#else
+	uart_port_null/*which one not support VFIFO*/			
+	#endif
+};
+const UART_rings_struct *UART_Get_Data(void) 
+{
+   return (&UART_custom_rings);
+}
+
+const UART_customize_function_struct uart_custom_func =
+{
+     UART_Get_Data
+};            
+
+const UART_customize_function_struct *UART_GetFunc(void)
+{
+   return (&uart_custom_func);  
+}   
+        
+UART_flowCtrlMode  UART_GetFlowCtrl(UART_PORT uart_port)
+{
+ UART_flowCtrlMode flow_ctrl;
+ 
+   switch(uart_port)
+   {
+      case uart_port1:
+//#if defined(__EXT_MODEM__) || defined(EMPTY_MMI) //for g+c or modem
+//	flow_ctrl = fc_hw;
+//#else
+    flow_ctrl = fc_none;
+//#endif
+         break;
+      case uart_port2:
+         flow_ctrl=fc_none;
+         break;
+#ifdef __UART3_SUPPORT__
+      case uart_port3:
+         flow_ctrl=fc_none;
+         break;
+#endif         
+#ifdef __IRDA_SUPPORT__
+      case uart_port_irda:
+         flow_ctrl=fc_none;
+         break;
+#endif
+#ifdef __USB_ENABLE__
+      case uart_port_usb:
+         flow_ctrl=fc_none;
+         break;    
+#endif      
+#ifdef __BT_SUPPORT__
+      case uart_port_bluetooth:
+         flow_ctrl=fc_none;
+         break;
+#endif         
+      default:
+         flow_ctrl=fc_none;
+         break;
+                               
+   } 
+   return(flow_ctrl);      
+}
+
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/uem_gpio.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/uem_gpio.c
new file mode 100644
index 0000000..77c6e02
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/uem_gpio.c
@@ -0,0 +1,267 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   uem_gpio.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   The file contains definition of custom component module configuration
+ *   variables, and routines handle for equipment device.
+ *
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+#ifdef __CUST_NEW__
+#ifndef __L1_STANDALONE__
+
+/*
+**   Includes
+*/
+
+#include "device.h"
+#include "custom_equipment.h"
+#include "custom_em.h"
+//MSBB remove #include "kal_non_specific_general_types.h"
+#include "custom_hw_default.h"
+#include "dcl.h"
+
+#ifdef LQT_SUPPORT /* Please don't remove LQT code segments */
+#include "lcd_lqt.h"
+extern kal_uint8 lcd_at_mode;
+#endif /* LQT_SUPPORT */
+
+/*
+**   Typedefs
+*/
+
+/*
+**   Defines
+*/
+
+/*
+**   Extern Functions
+*/
+extern void GPIO_WriteIO(char data, char port);
+extern void GPIO_WriteIO_FAST(char data, char port);
+extern void PWM_level(kal_uint8 level);
+extern void PWM2_level(kal_uint8 level);
+extern void PWM3_level(kal_uint8 level);
+//extern void Alter_level(kal_uint8 level);
+#if (defined(TOUCH_PAD_SUPPORT) && defined(__MTK_TARGET__))
+extern void Touchpad_PowerOn(const kal_bool bOn);
+#endif
+
+/*
+**   Extern Varibales
+*/
+extern const char gpio_led_mainbl_en_pin;
+//extern const char gpio_led_keybl_en_pin;
+//extern const char gpio_led_keybl2_en_pin;
+//extern const char gpio_vibrator_en_pin;
+
+/*
+**   Globol Varibales
+*/
+
+/*
+**   Local Functions
+*/
+
+/*
+**   Local Variables
+*/
+/***********************************************************
+  **
+  **  GPIO SETTTING
+  **
+  ***********************************************************/
+
+#if !defined(__FUE__) /* !!CUATION!! for FOTA support */
+/*
+*   Function
+*      custom_cfg_outward_gpio_port
+*   DESCRIPTION
+*      The function is used to handle the port number of the outward gpio device.
+*     And it will be call by audio manager.
+*   PARAMETERS
+*     gpio_device_id      IN
+*     port_num            IN/OUT
+*   RETURNS
+*      kal_bool
+*   GLOBALS AFFECTED
+*/
+kal_uint8 custom_cfg_outward_gpio_port(kal_uint8  gpio_device_id /* gpio_device_enum */)
+{
+	if((gpio_device_id < GPIO_LABELID_MAX) && (gpio_map_tbl[gpio_device_id].vaild != GPIO_INVAILD))
+		return gpio_map_tbl[gpio_device_id].port;
+	else
+		return 0;
+}
+#endif
+
+kal_bool custom_cfg_gpio_set_level(kal_uint8 gpio_dev_type, kal_uint8 gpio_dev_level )
+{
+	switch(gpio_dev_type)
+	{
+		case GPIO_DEV_LED_MAINLCD:
+			break;
+
+		case GPIO_DEV_LED_STATUS_1:
+		{
+			DCL_HANDLE handle;
+			handle = DclGPIO_Open(DCL_GPIO,101);
+			//DclGPIO_Control(handle,GPIO_CMD_SET_MODE_0,0);
+			//DclGPIO_Control(handle,GPIO_CMD_SET_DIR_OUT,0);
+			if(gpio_dev_level == LED_LIGHT_LEVEL0)
+				DclGPIO_Control(handle, GPIO_CMD_WRITE_LOW, 0);
+			else
+				DclGPIO_Control(handle, GPIO_CMD_WRITE_HIGH, 0);
+			DclGPIO_Close(handle);
+		}
+		break;
+
+		case GPIO_DEV_LED_STATUS_2:
+		{
+			DCL_HANDLE handle;
+			handle = DclGPIO_Open(DCL_GPIO,102);
+			//DclGPIO_Control(handle,GPIO_CMD_SET_MODE_0,0);
+			//DclGPIO_Control(handle,GPIO_CMD_SET_DIR_OUT,0);
+			if(gpio_dev_level == LED_LIGHT_LEVEL0)
+				DclGPIO_Control(handle,GPIO_CMD_WRITE_LOW, 0);
+			else
+				DclGPIO_Control(handle,GPIO_CMD_WRITE_HIGH, 0);
+			DclGPIO_Close(handle);
+		}
+		break;
+
+		case GPIO_DEV_LED_STATUS_3:
+		{
+			DCL_HANDLE handle;
+			handle = DclGPIO_Open(DCL_GPIO,103);
+			//DclGPIO_Control(handle,GPIO_CMD_SET_MODE_0,0);
+			//DclGPIO_Control(handle,GPIO_CMD_SET_DIR_OUT,0);
+			if(gpio_dev_level == LED_LIGHT_LEVEL0)
+				DclGPIO_Control(handle,GPIO_CMD_WRITE_LOW, 0);
+			else
+				DclGPIO_Control(handle,GPIO_CMD_WRITE_HIGH, 0);
+			DclGPIO_Close(handle);
+		}
+		break;
+
+		case GPIO_DEV_LED_KEY:
+			break;
+
+		case GPIO_DEV_VIBRATOR:
+		{
+#ifdef __MTK_TARGET__
+			DCL_HANDLE handle;
+			PMU_CTRL_LDO_BUCK_SET_EN val;
+			handle = DclPMU_Open(DCL_PMU, FLAGS_NONE);
+			val.mod=VIBR;
+
+			if(gpio_dev_level == LED_LIGHT_LEVEL0)
+			{
+				val.enable = DCL_FALSE;
+			}
+			else
+			{
+				val.enable = DCL_TRUE;
+			}
+
+			DclPMU_Control(handle, LDO_BUCK_SET_EN, (DCL_CTRL_DATA_T *)&val);
+			DclPMU_Close(handle);
+#endif // End of #ifdef __MTK_TARGET__
+			break;
+		}
+
+		default:
+			/* error undefine */
+			return KAL_FALSE;
+	}
+
+	return KAL_TRUE;
+}
+
+void custom_start_flashlight(kal_uint8 red_level, kal_uint8 green_level, kal_uint8 blue_level, kal_uint8 duty)
+{
+	DCL_HANDLE pwm_handle;
+	PWM_CMD_CONFIG_OLD_T old_config;
+
+	custom_cfg_gpio_set_level(GPIO_DEV_LED_STATUS_1, ((red_level>0) ? LED_LIGHT_LEVEL5 : LED_LIGHT_LEVEL0));
+	custom_cfg_gpio_set_level(GPIO_DEV_LED_STATUS_2, ((green_level>0) ? LED_LIGHT_LEVEL5 : LED_LIGHT_LEVEL0));
+	custom_cfg_gpio_set_level(GPIO_DEV_LED_STATUS_3, ((blue_level>0) ? LED_LIGHT_LEVEL5 : LED_LIGHT_LEVEL0));
+
+	pwm_handle = DclPWM_Open(DCL_PWM2,MOD_UEM);
+	old_config.freq = PWM2_Level_Info[0][0];
+	old_config.duty = duty;
+	DclPWM_Control(pwm_handle, PWM_CMD_CONFIG_OLD, (DCL_CTRL_DATA_T*)&old_config);
+	DclPWM_Control(pwm_handle, PWM_CMD_START, 0);
+	DclPWM_Close(pwm_handle);
+}
+
+void custom_stop_flashlight(void)
+{ 
+	DCL_HANDLE pwm_handle;
+
+	custom_cfg_gpio_set_level(GPIO_DEV_LED_STATUS_1, LED_LIGHT_LEVEL0);
+	custom_cfg_gpio_set_level(GPIO_DEV_LED_STATUS_2, LED_LIGHT_LEVEL0);
+	custom_cfg_gpio_set_level(GPIO_DEV_LED_STATUS_3, LED_LIGHT_LEVEL0);
+
+	pwm_handle = DclPWM_Open(DCL_PWM2,MOD_UEM);
+	DclPWM_Control(pwm_handle, PWM_CMD_STOP, 0);
+	DclPWM_Close(pwm_handle); 
+}
+
+#endif /* !__L1_STANDALONE__ */
+
+#endif /* __CUST_NEW__ */
\ No newline at end of file
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/uem_patterns_def.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/uem_patterns_def.h
new file mode 100644
index 0000000..5493741
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/uem_patterns_def.h
@@ -0,0 +1,85 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   uem_patterns_def.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   The file contains definition of custom component module configuration
+ *   variables, and routines handle for equipment device.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef UEM_PATTERNS_DEF_H
+#define UEM_PATTERNS_DEF_H
+
+#define TOUCH_FEEDBACK_VIB_DUR  50
+
+#endif /*UEM_PATTERNS_DEF_H*/
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/usb_custom.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/usb_custom.c
new file mode 100644
index 0000000..8be7e49
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/usb_custom.c
@@ -0,0 +1,1451 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    usb_custom.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file implements usb customer support
+ *
+ * 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!
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+#include "drv_comm.h"
+#include "eint.h"
+#include "usb_custom.h"
+//MSBB remove #include "kal_non_specific_general_types.h"
+#include "drv_features.h"
+#include "dcl.h"
+#include "usb_custom_def.h"
+#include "usb_memory_def.h"
+
+
+
+/************************************************************
+	external variables
+*************************************************************/
+#if defined(__USB_ENABLE__)&&defined(__USB_MASS_STORAGE_ENABLE__)
+	#include "usb_msdisk.h"
+	#include "fat_fs.h"
+	
+	extern USB_DiskDriver_STRUCT USB_NOR_drv;
+	extern USB_DiskDriver_STRUCT USB_SIMPLUS_drv;
+	#ifdef NAND_SUPPORT
+	extern USB_DiskDriver_STRUCT USB_NAND_drv;
+	#endif	/*NAND_SUPPORT*/
+	#ifdef __USB_MASS_STORAGE_CDROM_ENABLE__
+	extern	USB_DiskDriver_STRUCT USB_CDROM_drv;
+	#endif /*__USB_MASS_STORAGE_CDROM_ENABLE__*/
+	#ifdef __MSDC_DUAL_CARD_SWITCH__
+	extern USB_DiskDriver_STRUCT USB_tCard_2_drv;
+	#endif /*__MSDC_DUAL_CARD_SWITCH__*/
+	#if defined(__SIM_PLUS__)
+	extern kal_bool g_usb_ms_simplus_exist;
+	#endif /*__SIM_PLUS__*/
+#endif   /*#if defined(__USB_ENABLE__)&&defined(__USB_MASS_STORAGE_ENABLE__)*/
+
+
+
+
+#ifdef __CUST_NEW__
+#if (defined(__USB_ENABLE__) && defined(PMIC_6305_USB_FUNCTION))
+extern const char gpio_usb_enable_pin;
+#endif
+#if defined(__USB_ENABLE__) && defined(DRV_PHY_CHARGER_DETECT_BY_EXTERNAL_R)
+extern const char gpio_usb_chr_det_switch_pin;
+#endif
+#endif /* __CUST_NEW__ */
+
+
+
+#ifdef __USB_ENABLE__
+#if defined(__MTK_TARGET__)
+__attribute__((zero_init, section ("NONCACHEDZI"),aligned(16)))
+#endif
+kal_uint8 USB_BUFFER[USB_MAX_MEMORY_SIZE]; // USB total buffer 
+#endif
+
+
+
+/************************************************************
+	device descriptor parameters
+*************************************************************/
+
+static const kal_uint16 USB_MANUFACTURER_STRING[] = 
+{
+	0x031a,
+	'M',
+	'e',
+	'd',
+	'i',
+	'a',
+	'T',
+	'e',
+	'k',
+	' ',
+	'I',
+	'n',
+	'c'
+};
+
+static const kal_uint16 USB_PRODUCT_STRING[] = 
+{
+	0x0310,
+	'P',
+	'r',
+	'o',
+	'd',
+	'u',
+	'c',
+	't'
+};
+
+
+static const USB_DEVICE_PARAM usb_device_param = 
+{
+	LEVEL_HIGH,			/* cable plugin level */
+	0x0e8d,				/* vendor id */	
+	USB_MANUFACTURER_STRING,
+	sizeof(USB_MANUFACTURER_STRING)/sizeof(kal_uint16),
+	USB_PRODUCT_STRING,
+	sizeof(USB_PRODUCT_STRING)/sizeof(kal_uint16)
+};
+
+ /************************************************************
+	mass storage parameters
+*************************************************************/
+
+ /*USB mass storage customize*/
+
+/* Inquire data explanation
+   The length byte(Byte 4) should be always not changed, the mass storage spec define it
+   Byte 8 to 15 is Vendor Information
+   Byte 16 to 31 is Product Identification
+   Byte 32 to 35 is Product Revision Level */   
+#ifdef __MTK_TARGET__
+__attribute__ ((section ("NONCACHEDRW"), aligned(4))) 
+#endif /* __MTK_TARGET__ */
+kal_uint8 INQUIRE_DATA[] =
+{
+	0x00,
+	0x80,
+	0x00,
+	0x01,
+	0x1f, /*length*/
+	0x00,
+	0x00,
+	0x00,
+	'M',   
+	'E',
+	'D',
+	'I',
+	'A',
+	'T',
+	'E',
+	'K',
+	' ',
+	'F',
+	'L',
+	'A',
+	'S',
+	'H',
+	' ',
+	'D',
+	'I',
+	'S',
+	'K',
+	' ',
+	' ',
+	' ',
+	' ',
+	' ',
+	'6',
+	'2',
+	'2',
+	'5'
+};
+
+static const kal_uint16  USB_MS_INTERFACE_STRING[] = 
+{
+	0x031c,
+	'M',
+	'a',
+	's',
+	's',
+	' ',
+	'S',
+	't',
+	'o',
+	'r',
+	'a',
+	'g',
+	'e',
+	' '
+};
+
+
+static const USB_MS_PARAM usb_ms_param = 
+{
+	0x0002,			/* Mass storage Product ID */
+	INQUIRE_DATA,
+	sizeof(INQUIRE_DATA)/sizeof(kal_uint8),
+	USB_MS_INTERFACE_STRING,
+	sizeof(USB_MS_INTERFACE_STRING)/sizeof(kal_uint16)
+};
+
+/************************************************************
+	CDC ACM parameters
+*************************************************************/
+
+static const kal_uint16 USB_ACM_COMM_INTERFACE_STRING[] = 
+{
+	0x031A,
+	'C',
+	'O',
+	'M',
+	'(',
+	'c',   
+	'o',
+	'm',
+	'm',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+static const kal_uint16  USB_ACM_DATA_INTERFACE_STRING[] = 
+{
+	0x031A,
+	'C',
+	'O',
+	'M',
+	'(',
+	'd',
+	'a',
+	't',
+	'a',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+#if defined(__USB_MULTIPLE_COMPORT_SUPPORT__)
+
+static const kal_uint16 USB_ACM_COMM_INTERFACE_STRING_2[] =
+{
+	0x031A,
+	'C',
+	'O',
+	'M',
+	'(',
+	'c',
+	'o',
+	'm',
+	'm',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+
+static const kal_uint16  USB_ACM_DATA_INTERFACE_STRING_2[] =
+{
+	0x031A,
+	'C',
+	'O',
+	'M',
+	'(',
+	'd',
+	'a',
+	't',
+	'a',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+#if defined (__USB_MODEM_CARD_SUPPORT__)
+static const kal_uint16 USB_ACM_COMM_INTERFACE_STRING_3[] =
+{
+	0x031A,
+	'C',
+	'O',
+	'M',
+	'(',
+	'c',
+	'o',
+	'm',
+	'm',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+
+static const kal_uint16  USB_ACM_DATA_INTERFACE_STRING_3[] =
+{
+	0x031A,
+	'C',
+	'O',
+	'M',
+	'(',
+	'd',
+	'a',
+	't',
+	'a',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+static const kal_uint16 USB_ACM_COMM_INTERFACE_STRING_4[] =
+{
+	0x031A,
+	'C',
+	'O',
+	'M',
+	'(',
+	'c',
+	'o',
+	'm',
+	'm',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+
+static const kal_uint16  USB_ACM_DATA_INTERFACE_STRING_4[] =
+{
+	0x031A,
+	'C',
+	'O',
+	'M',
+	'(',
+	'd',
+	'a',
+	't',
+	'a',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+static const kal_uint16 USB_ACM_COMM_INTERFACE_STRING_5[] =
+{
+	0x031A,
+	'C',
+	'O',
+	'M',
+	'(',
+	'c',
+	'o',
+	'm',
+	'm',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+
+static const kal_uint16  USB_ACM_DATA_INTERFACE_STRING_5[] =
+{
+	0x031A,
+	'C',
+	'O',
+	'M',
+	'(',
+	'd',
+	'a',
+	't',
+	'a',
+	'_',
+	'i',
+	'f',
+	')'
+};
+#endif
+
+#endif  /* defined(__USB_MULTIPLE_COMPORT_SUPPORT__) */
+
+
+
+static const USB_ACM_PARAM usb_acm_param =
+{
+#if !defined (__USB_MODEM_CARD_SUPPORT__)
+	0x0003,				/* CDC ACM Product ID */
+#else
+	0x00A0,				/* CDC ACM Product ID */
+#endif
+	USB_ACM_COMM_INTERFACE_STRING,
+	sizeof(USB_ACM_COMM_INTERFACE_STRING)/sizeof(kal_uint16),
+	USB_ACM_DATA_INTERFACE_STRING,
+	sizeof(USB_ACM_DATA_INTERFACE_STRING)/sizeof(kal_uint16),
+#if defined(__USB_MULTIPLE_COMPORT_SUPPORT__)
+#if !defined (__USB_MODEM_CARD_SUPPORT__)
+	0x0023,				/* dual CDC ACM Product ID */
+#else
+	0x00A1,				/* dual CDC ACM Product ID */
+#endif
+	USB_ACM_COMM_INTERFACE_STRING_2,
+	sizeof(USB_ACM_COMM_INTERFACE_STRING_2)/sizeof(kal_uint16),
+	USB_ACM_DATA_INTERFACE_STRING_2,
+	sizeof(USB_ACM_DATA_INTERFACE_STRING_2)/sizeof(kal_uint16),
+#if defined (__USB_MODEM_CARD_SUPPORT__)
+	0x00A2,				/* dual CDC ACM Product ID */
+	USB_ACM_COMM_INTERFACE_STRING_3,
+	sizeof(USB_ACM_COMM_INTERFACE_STRING_3)/sizeof(kal_uint16),
+	USB_ACM_DATA_INTERFACE_STRING_3,
+	sizeof(USB_ACM_DATA_INTERFACE_STRING_3)/sizeof(kal_uint16),
+#endif
+#endif
+#if defined(__USB_TETHERING__)
+	0x000A, // ISD Product ID 
+	0x0013, // ISD + COM Product ID
+#endif
+#if defined(__USB_DATA_CONNECTION__)
+	0x0043, //Data Connection Single port
+	0x0033, //Data Connection Dual port
+#endif
+#if defined(__USB_MODEM_CARD_SUPPORT__)
+	0x00A4,	//desc_5vcom_product;
+	0x00A5,	//desc_mbim_4vcom_product;
+#endif
+};
+
+
+
+#ifdef WEBCAM_SUPPORT
+
+/************************************************************
+	VIDEO parameters
+*************************************************************/
+
+static const kal_uint16 USB_VIDEO_VC_INTERFACE_STRING[] = 
+{
+	0x031A,
+	'V',
+	'I',
+	'D',
+	'E',
+	'O',
+	'(',
+	'V',
+	'C',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+static const kal_uint16 USB_VIDEO_CT_INTERFACE_STRING[] = 
+{
+	0x031A,
+	'V',
+	'I',
+	'D',
+	'E',
+	'O',
+	'(',
+	'C',
+	'T',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+static const kal_uint16 USB_VIDEO_OUTPUT_INTERFACE_STRING[] = 
+{
+	0x0322,
+	'V',
+	'I',
+	'D',
+	'E',
+	'O',
+	'(',
+	'o',
+	'u',
+	't',
+	'p',
+	'u',
+	't',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+static const kal_uint16 USB_VIDEO_PU_INTERFACE_STRING[] = 
+{
+	0x031A,
+	'V',
+	'I',
+	'D',
+	'E',
+	'O',
+	'(',
+	'P',
+	'U',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+static const kal_uint16 USB_VIDEO_VS_INTERFACE_STRING[] = 
+{
+	0x031A,
+	'V',
+	'I',
+	'D',
+	'E',
+	'O',
+	'(',
+	'V',
+	'S',
+	'_',
+	'i',
+	'f',
+	')'
+};
+
+static const USB_VIDEO_PARAM usb_video_param = 
+{
+	0x0004,			/* video Product ID */
+#ifdef __COMPOSITE_WEBCAM__		
+	0x0014,        // PID  (for composite : Webcam+COM)	
+#endif	
+	USB_VIDEO_VC_INTERFACE_STRING,
+	sizeof(USB_VIDEO_VC_INTERFACE_STRING)/sizeof(kal_uint16),
+	USB_VIDEO_CT_INTERFACE_STRING,
+	sizeof(USB_VIDEO_CT_INTERFACE_STRING)/sizeof(kal_uint16),
+	USB_VIDEO_OUTPUT_INTERFACE_STRING,
+	sizeof(USB_VIDEO_OUTPUT_INTERFACE_STRING)/sizeof(kal_uint16),
+	USB_VIDEO_PU_INTERFACE_STRING,
+	sizeof(USB_VIDEO_PU_INTERFACE_STRING)/sizeof(kal_uint16),
+	USB_VIDEO_VS_INTERFACE_STRING,
+	sizeof(USB_VIDEO_VS_INTERFACE_STRING)/sizeof(kal_uint16)
+};
+#endif /* WEBCAM_SUPPORT */
+
+#ifdef PICTBRIDGE_SUPPORT
+/************************************************************
+	PTP IMAGE parameters
+*************************************************************/
+static const kal_uint16 USB_PTP_IMAGE_INTERFACE_STRING[] = 
+{
+	0x030C,
+	'I',
+	'M',
+	'A',
+	'G',
+	'E'
+};
+
+
+/* Must have NULL termination */
+static const kal_uint16 USB_PTP_IMAGE_MANUFACTURER_STRING[] = 
+{
+	'M',
+	'e',
+	'd',
+	'i',
+	'a',
+	'T',
+	'e',
+	'k',
+	' ',
+	'I',
+	'n',
+	'c',
+	'.',
+	'\0'
+};
+
+
+/* Must have NULL termination */
+static const kal_uint16 USB_PTP_IMAGE_MODEL_STRING[] = 
+{
+	'M',
+	'T',
+	'K',
+	' ',
+	'I',
+	'M',
+	'A',
+	'G',
+	'E',
+	' ',
+	'\0'
+};
+
+
+/* Must have NULL termination */
+static const kal_uint16 USB_PTP_IMAGE_DEVICE_VERSION_STRING[] = 
+{
+	'1',
+	'.',
+	'0',
+	'0',
+	'\0'
+};
+
+
+/* Must have NULL termination */
+static const kal_uint16 USB_PTP_IMAGE_SERIAL_NUMBER_STRING[] = 
+{
+	'5',
+	'6',
+	'7',
+	'0',
+	'7',
+	'6',
+	'6',
+	'\0'
+};
+
+
+static const USB_IMAGE_PARAM usb_image_param =
+{
+	0x0005,			/* USB PTP image Product ID */
+	USB_PTP_IMAGE_INTERFACE_STRING,
+	sizeof(USB_PTP_IMAGE_INTERFACE_STRING)/sizeof(kal_uint16),
+	USB_PTP_IMAGE_MANUFACTURER_STRING,
+	sizeof(USB_PTP_IMAGE_MANUFACTURER_STRING)/sizeof(kal_uint16),
+	USB_PTP_IMAGE_MODEL_STRING,
+	sizeof(USB_PTP_IMAGE_MODEL_STRING)/sizeof(kal_uint16),
+	USB_PTP_IMAGE_DEVICE_VERSION_STRING,
+	sizeof(USB_PTP_IMAGE_DEVICE_VERSION_STRING)/sizeof(kal_uint16),
+	USB_PTP_IMAGE_SERIAL_NUMBER_STRING,
+	sizeof(USB_PTP_IMAGE_SERIAL_NUMBER_STRING)/sizeof(kal_uint16)
+};
+
+#endif /* PICTBRIDGE_SUPPORT */
+
+
+#ifdef  __MTP_ENABLE__
+/************************************************************
+	MTP IMAGE parameters
+*************************************************************/
+static const kal_uint16 USB_MTP_IMAGE_INTERFACE_STRING[] = 
+{
+	0x0314,
+	'I',
+	'M',
+	'A',
+	'G',
+	'E',
+	' ',
+	'M',
+	'T',
+	'P'
+};
+
+/* Must have NULL termination */
+static const kal_uint16 USB_MTP_IMAGE_MANUFACTURER_STRING[] = 
+{
+	'M',
+	'e',
+	'd',
+	'i',
+	'a',
+	'T',
+	'e',
+	'k',
+	' ',
+	'I',
+	'n',
+	'c',
+	'.',
+	' ',
+	'M',
+	'T',
+	'P',	
+	'\0'
+};
+
+/* Must have NULL termination */
+static const kal_uint16 USB_MTP_IMAGE_MODEL_STRING[] = 
+{
+	'M',
+	'T',
+	'K',
+	' ',
+	'I',
+	'M',
+	'A',
+	'G',
+	'E',
+	' ',
+	'M',
+	'T',
+	'P',
+	' ',
+	'\0'
+};
+
+
+/* Must have NULL termination */
+static const kal_uint16 USB_MTP_IMAGE_DEVICE_VERSION_STRING[] = 
+{
+	'2',
+	'.',
+	'0',
+	'0',
+	'\0'
+};
+
+
+/* USB flash disk, must have NULL termination */
+static const kal_uint16 USB_MTP_IMAGE_STORAGE_DESCRIPTION_STRING_1[] = 
+{
+	'P',
+	'h',
+	'o',
+	'n',
+	'e',
+	'\0'
+};
+
+
+/* USB card disk, must have NULL termination */
+static const kal_uint16 USB_MTP_IMAGE_STORAGE_DESCRIPTION_STRING_2[] = 
+{
+	'C',
+	'a',
+	'r',
+	'd',
+	'\0'
+};
+
+
+/* Must have NULL termination */
+static const kal_uint16 USB_MTP_IMAGE_DEVICE_FRIENDLY_NAME_DEFAULT_VALUE_STRING[] = 
+{
+	'M',
+	'T',
+	'K',
+	' ',
+	'P',
+	'h',
+	'o',
+	'n',
+	'e',
+	'\0'
+};
+
+
+/* Must have NULL termination */
+static const kal_uint16 USB_MTP_IMAGE_DEVICE_FRIENDLY_NAME_CURRENT_VALUE_STRING[] = 
+{
+	'M',
+	'T',
+	'K',
+	' ',
+	'P',
+	'h',
+	'o',
+	'n',
+	'e',
+	'\0'
+};
+
+
+/* Must have NULL termination */
+static const kal_uint16 USB_MTP_SYNCHRONIZATION_PARTNER_DEFAULT_VALUE_STRING[] = 
+{
+	'W', 
+	'i', 
+	'n', 
+	'd', 
+	'o', 
+	'w', 
+	's',
+	' ',
+	'M',
+	'e',
+	'd',
+	'i',
+	'a',
+	' ',
+	'P',
+	'l',
+	'a',
+	'y',
+	'e',
+	'r',
+	' ',
+	'1',
+	'1',
+	'\0'
+};
+
+
+/* Must have NULL termination */
+static const kal_uint16 USB_MTP_SYNCHRONIZATION_PARTNER_CURRENT_VALUE_STRING[] = 
+{
+	'W', 
+	'i', 
+	'n', 
+	'd', 
+	'o', 
+	'w', 
+	's',
+	' ',
+	'M',
+	'e',
+	'd',
+	'i',
+	'a',
+	' ',
+	'P',
+	'l',
+	'a',
+	'y',
+	'e',
+	'r',
+	' ',
+	'1',
+	'1',
+	'\0'
+};
+
+
+static const USB_MTP_IMAGE_PARAM usb_mtp_image_param =
+{
+	0x0050,			/* USB MTP image Product ID */
+	USB_MTP_IMAGE_INTERFACE_STRING,
+	sizeof(USB_MTP_IMAGE_INTERFACE_STRING)/sizeof(kal_uint16),
+	USB_MTP_IMAGE_MANUFACTURER_STRING,
+	sizeof(USB_MTP_IMAGE_MANUFACTURER_STRING)/sizeof(kal_uint16),
+	USB_MTP_IMAGE_MODEL_STRING,
+	sizeof(USB_MTP_IMAGE_MODEL_STRING)/sizeof(kal_uint16),
+	USB_MTP_IMAGE_DEVICE_VERSION_STRING,
+	sizeof(USB_MTP_IMAGE_DEVICE_VERSION_STRING)/sizeof(kal_uint16),
+	USB_MTP_IMAGE_STORAGE_DESCRIPTION_STRING_1,
+	sizeof(USB_MTP_IMAGE_STORAGE_DESCRIPTION_STRING_1)/sizeof(kal_uint16),
+	USB_MTP_IMAGE_STORAGE_DESCRIPTION_STRING_2,
+	sizeof(USB_MTP_IMAGE_STORAGE_DESCRIPTION_STRING_2)/sizeof(kal_uint16),
+	USB_MTP_IMAGE_DEVICE_FRIENDLY_NAME_DEFAULT_VALUE_STRING,
+	sizeof(USB_MTP_IMAGE_DEVICE_FRIENDLY_NAME_DEFAULT_VALUE_STRING)/sizeof(kal_uint16),
+	USB_MTP_IMAGE_DEVICE_FRIENDLY_NAME_CURRENT_VALUE_STRING,
+	sizeof(USB_MTP_IMAGE_DEVICE_FRIENDLY_NAME_CURRENT_VALUE_STRING)/sizeof(kal_uint16),
+	USB_MTP_SYNCHRONIZATION_PARTNER_DEFAULT_VALUE_STRING,
+	sizeof(USB_MTP_SYNCHRONIZATION_PARTNER_DEFAULT_VALUE_STRING)/sizeof(kal_uint16),
+	USB_MTP_SYNCHRONIZATION_PARTNER_CURRENT_VALUE_STRING,
+	sizeof(USB_MTP_SYNCHRONIZATION_PARTNER_CURRENT_VALUE_STRING)/sizeof(kal_uint16)
+};
+
+#endif /* __MTP_ENABLE__ */
+
+
+
+#if defined(__OTG_ENABLE__)||defined(__IC_USB_ENABLE__)
+
+#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 !*/
+#else
+
+
+#if defined(__OTG_ENABLE__)
+
+/* Should put the default driver in the last line */
+kal_uint8 USB_EXT_CLASS_DRV_WEIGHT_TBL[] =
+{
+	1,		/* MS drv */
+#ifdef __USB_HOST_COM_PORT_SUPPORT__
+	1,		/* CDC ACM drv */
+#endif
+	0		/* Default */
+};
+
+#endif
+
+#endif
+
+#if defined(__IC_USB_ENABLE__)
+
+/* Should put the default driver in the last line */
+kal_uint8 USB_INT_CLASS_DRV_WEIGHT_TBL[] =
+{
+	1,		/* MS drv */
+	1,		/* ICCD drv */
+	1,		/* EEM drv */
+	0		/* Default */
+};
+
+#endif
+
+
+/*
+1. If "current_follow_spec" is TRUE means only current value <= g_otg_support_max_power will be checked,
+    if it is FALSE. then we will first choose the configuration with max weight number, and then choose a current the which is the most nearnest to the g_otg_support_max_power
+
+2. If all class driver are with the same weight, we will choose the configuration which matches the most class drivers
+ */
+
+
+static const USB_HOST_MATCH_PARAM usb_host_match_rule_param =
+{
+#if defined(__OTG_ENABLE__)
+	USB_EXT_CLASS_DRV_WEIGHT_TBL,
+	sizeof(USB_EXT_CLASS_DRV_WEIGHT_TBL)/sizeof(kal_uint8),
+#endif
+#if defined(__IC_USB_ENABLE__)
+	USB_INT_CLASS_DRV_WEIGHT_TBL,
+	sizeof(USB_INT_CLASS_DRV_WEIGHT_TBL)/sizeof(kal_uint8),
+#endif
+	KAL_FALSE
+};
+
+static const USB_HOST_COMMON_PARAM usb_host_common_param =
+{
+	KAL_TRUE, 	 //support_HNP;
+	KAL_TRUE,    //support SRP;
+	KAL_TRUE, 	 //support_Remote_Wakeup;
+	KAL_TRUE, 	 //support_Double_FIFO;	
+	16	 //HS ep0 interval;  max value is 16, 16 stands for 4 seconds,FS value is (HS-3)
+};
+
+
+#endif /* #if defined(__OTG_ENABLE__)||defined(__IC_USB_ENABLE__) */
+/************************************************************
+	customization functinos
+*************************************************************/
+
+/* get general USB device parameter function*/
+const USB_DEVICE_PARAM *USB_GetDeviceParam(void)
+{
+	return (&usb_device_param);
+}
+
+/* get mass storage USB device parameter function*/
+const USB_MS_PARAM *USB_GetMsParam(void)
+{
+	return (&usb_ms_param);
+}
+
+/* get CDC ACM USB device parameter function*/
+const USB_ACM_PARAM *USB_GetAcmParam(void)
+{
+	return (&usb_acm_param);
+}
+
+#ifdef WEBCAM_SUPPORT
+/* get VIDEO USB device parameter function*/
+const USB_VIDEO_PARAM *USB_GetVideoParam(void)
+{
+	return (&usb_video_param);
+}
+#endif /* WEBCAM_SUPPORT */
+
+#ifdef PICTBRIDGE_SUPPORT
+/* get IMAGE USB device parameter function*/
+const USB_IMAGE_PARAM *USB_GetImageParam(void)
+{
+	return (&usb_image_param);
+}
+#endif /* PICTBRIDGE_SUPPORT */
+
+
+#ifdef __MTP_ENABLE__
+/* get IMAGE USB device parameter function*/
+const USB_MTP_IMAGE_PARAM *USB_MTP_GetImageParam(void)
+{
+	return (&usb_mtp_image_param);
+}
+#endif /* __MTP_ENABLE__ */
+
+#if defined(__OTG_ENABLE__)||defined(__IC_USB_ENABLE__)
+
+const USB_HOST_MATCH_PARAM *USB_Host_GetMatchParam(void)
+{
+	return (&usb_host_match_rule_param);
+}
+
+const USB_HOST_COMMON_PARAM *USB_Host_GetCommonParam(void)
+{
+	return (&usb_host_common_param);
+}
+
+#endif
+
+
+/* get USB custom parameter function*/
+static const USB_CUSTOM_FUNC USB_CustomFunc = 
+{
+	USB_GetDeviceParam,
+	USB_GetMsParam,
+	USB_GetAcmParam,
+#ifdef WEBCAM_SUPPORT	
+	USB_GetVideoParam,
+#endif
+#ifdef PICTBRIDGE_SUPPORT
+	USB_GetImageParam,
+#endif
+#ifdef __MTP_ENABLE__
+	USB_MTP_GetImageParam,
+#endif
+#if defined(__OTG_ENABLE__)||defined(__IC_USB_ENABLE__)
+	USB_Host_GetMatchParam,
+	USB_Host_GetCommonParam
+#endif
+};
+
+const USB_CUSTOM_FUNC* USB_GetCustomFunc(void)
+{
+	return(&USB_CustomFunc);
+}
+
+/* power control function, enable == KAL_TRUE turn on the power*/
+void USB_PowerControl(kal_bool enable)
+{
+#ifdef __USB_ENABLE__
+	DCL_HANDLE handle;
+	PMU_CTRL_LDO_BUCK_SET_EN val;
+	
+	if(enable == KAL_FALSE)
+		return;	
+		
+	val.enable=enable;
+	val.mod=VUSB;
+	handle=DclPMU_Open(DCL_PMU, FLAGS_NONE);
+	DclPMU_Control(handle, LDO_BUCK_SET_EN, (DCL_CTRL_DATA_T *)&val);
+	DclPMU_Close(handle);
+#endif   /*__USB_ENABLE__*/
+}
+
+
+#ifdef __OTG_ENABLE__
+const kal_uint16 g_otg_support_max_power = 100; /*mA*/
+const kal_bool OTG_IDPIN_CABLE_PLUGIN_LEVEL = LEVEL_LOW;
+
+kal_uint16 USBD_Get_Max_Power(void)
+{
+	return 	g_otg_support_max_power;
+}
+#endif
+
+//#if defined(__OTG_ENABLE__)
+	// When OTG is enabled, we must set this to FALSE, or we may impact OTG functionality while charging
+//const kal_bool usb_default_charge = KAL_FALSE;
+//#else // #if defined(__OTG_ENABLE__)
+//const kal_bool usb_default_charge = KAL_TRUE;
+//#endif // #if defined(__OTG_ENABLE__)
+
+
+kal_bool USB_Default_Charging(void)
+{
+// const kal_bool usb_default_charge
+#if defined(__OTG_ENABLE__)	                          
+	return KAL_FALSE; // When OTG is enabled, we must set this to FALSE, or we may impact OTG functionality while charging
+#endif		
+		
+#if defined(__USB_COMPLIANCE_CHARGE__)
+	return KAL_FALSE; // follow USB spec : only after set Configuration, USB can drag 500mA current
+#endif
+
+	return KAL_TRUE; // no matter what, USB cable in will drag 500mA current
+}
+
+/************************************************************
+	customization functinos
+*************************************************************/
+void USB_Connect_R_To_DM_Control(kal_bool enable)
+{
+	/*******************************************************
+	* This function only used in 6219/6227/6225/6228/6229/6235.
+	* 
+	* If you want to use it, please define 
+	* DRV_PHY_CHARGER_DETECT_BY_EXTERNAL_R in project makefile
+	********************************************************/
+	
+#ifdef DRV_PHY_CHARGER_DETECT_BY_EXTERNAL_R
+#ifdef __CUST_NEW__
+	if(enable == KAL_TRUE)
+		GPIO_WriteIO(1, gpio_usb_chr_det_switch_pin);
+	else
+		GPIO_WriteIO(0, gpio_usb_chr_det_switch_pin);
+#endif /* __CUST_NEW__ */
+#endif /* DRV_PHY_CHARGER_DETECT_BY_EXTERNAL_R */
+
+}
+
+
+void custom_usb_ms_init(void)
+{
+#ifndef __UBL__
+#if defined(__USB_ENABLE__)&&defined(__USB_MASS_STORAGE_ENABLE__)
+	#if ((defined(__MSDC_MS__))||(defined(__MSDC_MSPRO__))||(defined(__MSDC_SD_MMC__)) )
+		#ifdef __SIM_PLUS__
+	if(g_usb_ms_simplus_exist == KAL_TRUE)
+	{
+		USB_Ms_Register_DiskDriver(&USB_SIMPLUS_drv);
+	}
+		#endif
+	USB_Ms_Register_DiskDriver(&USB_MSDC_drv);
+	#ifdef __MSDC_DUAL_CARD_SWITCH__
+	USB_Ms_Register_DiskDriver(&USB_tCard_2_drv);
+	#endif
+	#endif
+
+	#ifdef __USB_RAMDISK__
+	USB_Ms_Register_DiskDriver(&USB_RAM_drv);
+	#endif
+
+	#if (!defined(__FS_SYSDRV_ON_NAND__) && !defined( _NAND_FLASH_BOOTING_))
+	if(FS_GetDevPartitions(FS_DEVICE_TYPE_NOR) >= 2)
+	{
+		USB_Ms_Register_DiskDriver(&USB_NOR_drv);
+	}
+	#endif
+
+	//#if defined(NAND_SUPPORT)&&(!defined(__USB_MODEM_CARD_SUPPORT__))
+	#if defined(NAND_SUPPORT)
+	if(FS_GetDevPartitions(FS_DEVICE_TYPE_NAND) >= 2)
+	{
+		USB_Ms_Register_DiskDriver(&USB_NAND_drv);
+	}
+	else if (FS_GetDevPartitions(FS_DEVICE_TYPE_NAND) == 1)
+	{
+		#if (!defined(__FS_SYSDRV_ON_NAND__))
+		USB_Ms_Register_DiskDriver(&USB_NAND_drv);
+		#endif
+	}
+	#endif
+	
+	#if (!defined(__FS_SYSDRV_ON_NAND__) && !defined( _NAND_FLASH_BOOTING_)&&!defined(__EMMC_BOOTING__))||defined(NAND_SUPPORT)
+		#if defined(__USB_MASS_STORAGE_CDROM_ENABLE__)
+			USB_Ms_Set_Current_Driver(LOGIC_DRIVE_CDROM);
+			USB_Ms_Register_DiskDriver(&USB_CDROM_drv);
+			USB_Ms_Set_Current_Driver(LOGIC_DRIVE_MS); //always swith current drive to MS
+			#if !(defined(__USB_MODEM_CARD_SUPPORT__)||defined(__USB_DATA_CONNECTION__))
+			//modem_card and data_connect do not support CD-ROM in LOGIC_DRIVE_MS
+			USB_Ms_Register_DiskDriver(&USB_CDROM_drv);
+			#endif
+		#endif
+	#endif
+#endif   /*__USB_ENABLE__*/
+#endif	/*__UBL__*/
+}
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/usb_custom_def.h b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/usb_custom_def.h
new file mode 100644
index 0000000..1bf033b
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/usb_custom_def.h
@@ -0,0 +1,205 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    usb_custom_def.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file declares usb customization definitions
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+
+
+/* USB VID */
+#define MTK_USB_VID						(0x0e8d)
+
+
+/*********************************************/
+/*        Device Common                      */
+/*********************************************/
+#define USB_DESCRIPTOR_SIZE 		512
+
+/*********************************************/
+/*             CDC ACM Buffer Size           */
+/*********************************************/
+#if defined(__HSUPA_SUPPORT__)|| defined(__HSDPA_SUPPORT__)
+	#define	USB_TX_RING_BUFFER_1_SIZE			(16*2048)
+	#define	USB_TX_RING_BUFFER_2_SIZE			(16*2048)
+	#define	USB_TX_RING_BUFFER_3_SIZE			(16*2048)
+	#define	USB_TX_RING_BUFFER_4_SIZE			(16*2048)
+	#define	USB_TX_RING_BUFFER_5_SIZE			(16*2048)
+	#define	USB_TXISR_RING_BUFFER_SIZE		(4*3072)
+#elif defined(__EGPRS_MODE__)
+	#define	USB_TX_RING_BUFFER_1_SIZE			(4*2048)
+	#define	USB_TX_RING_BUFFER_2_SIZE			(4*2048)
+	#define	USB_TX_RING_BUFFER_3_SIZE			(4*2048)
+	#define	USB_TX_RING_BUFFER_4_SIZE			(4*2048)
+	#define	USB_TX_RING_BUFFER_5_SIZE			(4*2048)
+	#define	USB_TXISR_RING_BUFFER_SIZE		(3072)
+#else
+	#define	USB_TX_RING_BUFFER_1_SIZE			(2048)
+	#define	USB_TX_RING_BUFFER_2_SIZE			(2048)
+	#define	USB_TX_RING_BUFFER_3_SIZE			(2048)
+	#define	USB_TX_RING_BUFFER_4_SIZE			(2048)
+	#define	USB_TX_RING_BUFFER_5_SIZE			(2048)
+	#define	USB_TXISR_RING_BUFFER_SIZE		(3072)
+#endif
+
+#define	USB_RX_RING_BUFFER_1_SIZE				(2048)
+#define	USB_RX_RING_BUFFER_2_SIZE				(2048)
+#define	USB_RX_RING_BUFFER_3_SIZE				(2048)
+#define	USB_RX_RING_BUFFER_4_SIZE				(2048)
+#define	USB_RX_RING_BUFFER_5_SIZE				(2048)
+
+#ifdef  __USB_HIGH_SPEED_COM_PORT_ENABLE__
+// high speed interface RX buffer
+#define USB_ACM_RX_BUFFER_NUM  					8   
+#define USB_ACM_RX_BUFFER_SIZE 					3072
+#else
+#define USB_ACM_RX_BUFFER_NUM  					0   
+#define USB_ACM_RX_BUFFER_SIZE 					0
+#endif
+
+/*********************************************/
+/*        Mass Storage Buffer Size           */
+/*********************************************/
+#if defined(__LOW_COST_SUPPORT_ULC__)
+#define USBMS_MAX_BUFFERSIZE     		(4*1024)
+#elif (defined(__LOW_COST_SUPPORT_COMMON__)&&(!defined(__USB_HS_ENABLE__)))
+#define USBMS_MAX_BUFFERSIZE     		(8*1024)
+#else
+#define USBMS_MAX_BUFFERSIZE     		(128*1024)
+#endif
+
+/*********************************************/
+/*        MTP Buffer Size           */
+/*********************************************/
+#define USB_IMAGE_MTP_MAX_BUFFERSIZE     				USBMS_MAX_BUFFERSIZE 
+
+/*********************************************/
+/*        Webcam                             */
+/*********************************************/
+#ifdef  __WEBCAM_SUPPORT_ISO_PIPE__
+#define USBVIDEO_MAX_PAYLOAD_LENGTH				512
+#else
+#define USBVIDEO_MAX_PAYLOAD_LENGTH				1024
+#endif
+
+/*********************************************/
+/*        Tethering EP0 Buffer                             */
+/*********************************************/
+#define USB_ISD_EP0_BUFFER_LENGTH				64
+
+/*********************************************/
+/*        Host Common                      */
+/*********************************************/
+#define USBD_MAX_CFG_NUM			8
+#define USBD_MAX_IF_PER_CFG		4
+
+/*********************************************/
+/*        Host Class Drivers                      */
+/*********************************************/
+#define USB_HOST_MAX_MS_NUM				1
+#define USB_HOST_MS_SUPPORT_LUN  		8
+#define USB_HOST_MS_MAX_DATA_LENGTH 	(32*1024)
+#define USB_HOST_MS_ERROR_COUNT  		3
+#define USB_HOST_MS_SLEEP_TIME  		0x00FF
+
+
+#ifdef __IC_USB_ICCD_SUPPORT__
+#define USB_MAX_ICCD_NUM			1
+#define USB_HOST_ICCD_BUSY_COUNT  	10
+#define USB_HOST_ICCD_SLEEP_TIME  	0x00FF
+#endif
+
+
+#ifdef __IC_USB_EEM_SUPPORT__
+#define USB_MAX_EEM_NUM				1
+#define EEM_TX_BUFFER_NUM			10
+#define EEM_RX_BUFFER_NUM			10
+#endif
+
diff --git a/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/usb_host_ms_custom.c b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/usb_host_ms_custom.c
new file mode 100644
index 0000000..19b1077
--- /dev/null
+++ b/mcu/custom/driver/drv/misc_drv/_Default_BB/MT2735/usb_host_ms_custom.c
@@ -0,0 +1,141 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *    usb_host_ms_custom.c
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file implements usb host ms customer support
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+ 
+#include "drv_comm.h"
+#include "usb_host_ms_custom.h"
+
+
+#ifdef __OTG_ENABLE__
+
+/*
+
+kal_uint8 USBHost_Media_Handle[USB_HOST_MS_SUPPORT_LUN];
+
+
+kal_uint8* USBHost_Get_Media_Hanle(kal_uint8 *p_num)
+{
+	*p_num = sizeof(USBHost_Media_Handle)/sizeof(kal_uint8);
+	return USBHost_Media_Handle;
+}
+
+*/
+
+#endif
+
diff --git a/mcu/custom/driver/drv_gen/MT2735_IVT/DEFAULT/codegen.dws b/mcu/custom/driver/drv_gen/MT2735_IVT/DEFAULT/codegen.dws
new file mode 100644
index 0000000..20abd2d
--- /dev/null
+++ b/mcu/custom/driver/drv_gen/MT2735_IVT/DEFAULT/codegen.dws
Binary files differ