[Feature] add GA346 baseline version

Change-Id: Ic62933698569507dcf98240cdf5d9931ae34348f
diff --git a/src/telephonyware/3.0/mtk_nvram/files/nvram_daemon.init b/src/telephonyware/3.0/mtk_nvram/files/nvram_daemon.init
new file mode 100644
index 0000000..abf0e9a
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/files/nvram_daemon.init
@@ -0,0 +1,17 @@
+#!/bin/sh /etc/rc.common
+
+START=00
+
+USE_PROCD=1
+NAME=nvram_daemon
+PROG=/usr/bin/nvram_daemon
+
+start_service() {
+	echo "start nvram_daemon"
+	procd_open_instance nvram_daemon
+	procd_set_param command /usr/bin/nvram_daemon
+	procd_set_param stdout 1
+	procd_set_param stderr 1
+	procd_close_instance
+
+}
diff --git a/src/telephonyware/3.0/mtk_nvram/src/Makefile b/src/telephonyware/3.0/mtk_nvram/src/Makefile
new file mode 100644
index 0000000..c673f78
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/Makefile
@@ -0,0 +1,12 @@
+all:
+	make -f Makefile.libnvram
+	make -f Makefile.libfile_op
+	make -f Makefile.nvram_daemon
+	make -f Makefile.nvram_test
+
+
+clean:
+	make -f Makefile.libnvram clean
+	make -f Makefile.libfile_op clean
+	make -f Makefile.nvram_daemon clean
+	make -f Makefile.nvram_test clean
\ No newline at end of file
diff --git a/src/telephonyware/3.0/mtk_nvram/src/Makefile.libfile_op b/src/telephonyware/3.0/mtk_nvram/src/Makefile.libfile_op
new file mode 100644
index 0000000..afd2580
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/Makefile.libfile_op
@@ -0,0 +1,26 @@
+NAME = libfile_op
+SRC := $(NAME)
+OBJ := $(NAME)
+INCLUDES=-Ilibnvram
+LIBS=$(TARGET_LDFLAGS) -L. -lnvram
+
+SOURCES_C := $(wildcard $(SRC)/*.c)
+OBJECTS_C := $(patsubst $(SRC)/%.c, $(OBJ)/%.o, $(SOURCES_C))
+
+SOURCES_CPP := $(wildcard $(SRC)/*.cpp)
+OBJECTS_CPP := $(patsubst $(SRC)/%.cpp, $(OBJ)/%.o, $(SOURCES_CPP))
+
+SOURCES := $(SOURCES_C) $(SOURCES_CPP)
+OBJECTS := $(OBJECTS_C) $(OBJECTS_CPP) 
+
+$(NAME).so: $(OBJECTS)
+	$(CC) -shared -fPIC $(INCLUDES) $(LIBS) -o $@ $^    
+    
+$(OBJ)/%.o: $(SRC)/%.c
+	${CC} $(CFLAGS) -fPIC -c $< -o $@ $(INCLUDES)
+
+$(OBJ)/%.o: $(SRC)/%.cpp
+	${CXX} $(CXXFLAGS) -fPIC -c $< -o $@ $(INCLUDES)
+
+clean:
+	rm -f $(NAME).so	
\ No newline at end of file
diff --git a/src/telephonyware/3.0/mtk_nvram/src/Makefile.libnvram b/src/telephonyware/3.0/mtk_nvram/src/Makefile.libnvram
new file mode 100644
index 0000000..c7c4703
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/Makefile.libnvram
@@ -0,0 +1,31 @@
+NAME = libnvram
+SRC := $(NAME)
+OBJ := $(NAME)
+
+INCLUDES=-Ilibnvram
+INCLUDES += -I./libfile_op
+INCLUDES += -I./cgen
+INCLUDES += -I./cgen/cfgfileinc
+INCLUDES += -I./cgen/cfgdefault
+INCLUDES += -I./cgen/inc
+
+SOURCES_C := $(wildcard $(SRC)/*.c)
+OBJECTS_C := $(patsubst $(SRC)/%.c, $(OBJ)/%.o, $(SOURCES_C))
+
+SOURCES_CPP := $(wildcard $(SRC)/*.cpp)
+OBJECTS_CPP := $(patsubst $(SRC)/%.cpp, $(OBJ)/%.o, $(SOURCES_CPP))
+
+SOURCES := $(SOURCES_C) $(SOURCES_CPP)
+OBJECTS := $(OBJECTS_C) $(OBJECTS_CPP) 
+
+$(NAME).so: $(OBJECTS)
+	$(CC) -shared -fPIC $(INCLUDES) -o $@ $^    
+    
+$(OBJ)/%.o: $(SRC)/%.c
+	${CC} $(CFLAGS) -fPIC -c $< -o $@ $(INCLUDES)
+
+$(OBJ)/%.o: $(SRC)/%.cpp
+	${CXX} $(CXXFLAGS) -fPIC -c $< -o $@ $(INCLUDES)
+
+clean:
+	rm -f $(NAME).so
\ No newline at end of file
diff --git a/src/telephonyware/3.0/mtk_nvram/src/Makefile.nvram_daemon b/src/telephonyware/3.0/mtk_nvram/src/Makefile.nvram_daemon
new file mode 100644
index 0000000..1624b16
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/Makefile.nvram_daemon
@@ -0,0 +1,27 @@
+NAME = nvram_daemon
+SRC := $(NAME)_src
+OBJ := $(NAME)_src
+
+INCLUDES=-Ilibnvram -Ilibfile_op
+LIBS=$(TARGET_LDFLAGS) -L. -lnvram -lfile_op -lubox
+
+SOURCES_C := $(wildcard $(SRC)/*.c)
+OBJECTS_C := $(patsubst $(SRC)/%.c, $(OBJ)/%.o, $(SOURCES_C))
+
+SOURCES_CPP := $(wildcard $(SRC)/*.cpp)
+OBJECTS_CPP := $(patsubst $(SRC)/%.cpp, $(OBJ)/%.o, $(SOURCES_CPP))
+
+SOURCES := $(SOURCES_C) $(SOURCES_CPP)
+OBJECTS := $(OBJECTS_C) $(OBJECTS_CPP)
+
+$(NAME): $(OBJECTS)
+	$(CC) -fPIC $(INCLUDES) -o $@ $^ $(LIBS)
+
+$(OBJ)/%.o: $(SRC)/%.c
+	${CC} $(CFLAGS) -fPIC -c $< -o $@ $(INCLUDES)
+
+$(OBJ)/%.o: $(SRC)/%.cpp
+	${CXX} $(CXXFLAGS) -fPIC -c $< -o $@ $(INCLUDES)
+
+clean:
+	rm -f $(NAME)
diff --git a/src/telephonyware/3.0/mtk_nvram/src/Makefile.nvram_test b/src/telephonyware/3.0/mtk_nvram/src/Makefile.nvram_test
new file mode 100644
index 0000000..caed421
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/Makefile.nvram_test
@@ -0,0 +1,28 @@
+NAME = nvram_test
+SRC := $(NAME)_src
+OBJ := $(NAME)_src
+
+INCLUDES=-Ilibnvram -Ilibfile_op
+LIBS=$(TARGET_LDFLAGS) -L. -lnvram -lfile_op -lubox
+
+SOURCES_C := $(wildcard $(SRC)/*.c)
+OBJECTS_C := $(patsubst $(SRC)/%.c, $(OBJ)/%.o, $(SOURCES_C))
+
+SOURCES_CPP := $(wildcard $(SRC)/*.cpp)
+OBJECTS_CPP := $(patsubst $(SRC)/%.cpp, $(OBJ)/%.o, $(SOURCES_CPP))
+
+SOURCES := $(SOURCES_C) $(SOURCES_CPP)
+OBJECTS := $(OBJECTS_C) $(OBJECTS_CPP) 
+
+$(NAME): $(OBJECTS) 
+	$(CC) -fPIC $(INCLUDES) -o $@ $^ $(LIBS)
+    
+$(OBJ)/%.o: $(SRC)/%.c
+	${CC} $(CFLAGS) -fPIC -c $< -o $@ $(INCLUDES)
+
+$(OBJ)/%.o: $(SRC)/%.cpp
+	${CXX} $(CXXFLAGS) -fPIC -c $< -o $@ $(INCLUDES)
+
+clean:
+	rm -f $(NAME)
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_ADC_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_ADC_Default.h
new file mode 100644
index 0000000..21be2d5
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_ADC_Default.h
@@ -0,0 +1,111 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_META_FILE.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    header file of META CFG file
+ *
+ * Author:
+ * -------
+ *   MTK80306(Ning Feng)
+ *
+ * 
+ *
+ *******************************************************************************/
+
+
+#ifndef _CFG_ADC_H
+#define _CFG_ADC_H
+
+///#include "cfgfileinc/CFG_ADC_File.h"
+
+// the default value of bt nvram file
+AUXADC_CFG_Struct stADCDefualt =
+{
+	{1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000},
+	{0, 0, 0, 0, 0, 0, 0, 0, 0},
+    0,
+};
+
+
+#endif
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_Audio_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_Audio_Default.h
new file mode 100644
index 0000000..f0ffa9b
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_Audio_Default.h
@@ -0,0 +1,949 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_AUDIO_FILE.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    header file of AUDIO CFG Default file
+ *
+ * Author:
+ * -------
+ *
+ *
+
+ *
+ *******************************************************************************/
+
+#ifndef _CFG_AUDIO_H
+#define _CFG_AUDIO_H
+/* include rule :
+   1st : find path/files relative current position (Common)
+   2nd : find path/files from other projects
+*/
+#include "CFG_AUDIO_File.h"
+
+//audio related default value
+#include "cfgdefault/sph_coeff_record_mode_default.h"
+#include "cfgdefault/sph_coeff_dmnr_default.h"
+#include "cfgdefault/sph_coeff_dmnr_handsfree_default.h"
+#include "cfgdefault/audio_hd_record_custom.h"
+#include "cfgdefault/audio_acf_default.h"
+#include "cfgdefault/audio_hcf_default.h"
+#include "cfgdefault/audio_effect_default.h"
+#include "cfgdefault/audio_gain_table_default.h"
+#include "cfgdefault/audio_ver1_volume_custom_default.h"
+#include "cfgdefault/voice_recognition_custom.h"
+#include "cfgdefault/audio_audenh_control_option.h"
+#include "cfgdefault/audio_voip_custom.h"
+//#include "cfgdefault/audio_acfsub_default.h"
+#include "cfgdefault/audio_music_drc_default.h"
+#include "cfgdefault/audio_ringtone_drc_default.h"
+#include "cfgdefault/sph_coeff_anc_default.h"
+#include "cfgdefault/audio_speaker_monitor_custom.h"
+#include "cfgdefault/sph_coeff_lpbk_default.h"
+          
+//speech related default value
+#include "cfgdefault/sph_coeff_default.h"
+#include "cfgdefault/audio_custom.h"
+#include "cfgdefault/med_audio_default.h"
+#include "cfgdefault/audio_volume_custom_default.h"
+#include "cfgdefault/audio_ver1_volume_custom_default.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#ifdef __ALLOCATE_CFG_AUDIO_DEFAULT_H
+// Allocate data by \vendor\mediatek\proprietary\external\nvram\libcustom_nvram\CFG_file_info.c
+
+AUDIO_CUSTOM_PARAM_STRUCT speech_custom_default =
+{
+    /* INT8 volume[MAX_VOL_CATE][MAX_VOL_TYPE] */
+    /* Normal volume: TON, SPK, MIC, FMR, SPH, SID, MED */
+    GAIN_NOR_TON_VOL, GAIN_NOR_KEY_VOL, GAIN_NOR_MIC_VOL, GAIN_NOR_FMR_VOL, GAIN_NOR_SPH_VOL, GAIN_NOR_SID_VOL, GAIN_NOR_MED_VOL
+    ,
+    /* Headset volume: TON, SPK, MIC, FMR, SPH, SID, MED */
+    GAIN_HED_TON_VOL, GAIN_HED_KEY_VOL, GAIN_HED_MIC_VOL, GAIN_HED_FMR_VOL, GAIN_HED_SPH_VOL, GAIN_HED_SID_VOL, GAIN_HED_MED_VOL
+    ,
+    /* Handfree volume: TON, SPK, MIC, FMR, SPH, SID, MED */
+    GAIN_HND_TON_VOL, GAIN_HND_KEY_VOL, GAIN_HND_MIC_VOL, GAIN_HND_FMR_VOL, GAIN_HND_SPH_VOL, GAIN_HND_SID_VOL, GAIN_HND_MED_VOL
+    ,
+    /* UINT16 speech_common_para[12] */
+    DEFAULT_SPEECH_COMMON_PARA
+    ,
+    /* UINT16 speech_mode_para[8][16] */
+    DEFAULT_SPEECH_NORMAL_MODE_PARA,
+    DEFAULT_SPEECH_EARPHONE_MODE_PARA,
+    DEFAULT_SPEECH_LOUDSPK_MODE_PARA,
+    DEFAULT_SPEECH_BT_EARPHONE_MODE_PARA,
+    DEFAULT_SPEECH_BT_CORDLESS_MODE_PARA,
+    DEFAULT_SPEECH_CARKIT_MODE_PARA,
+    DEFAULT_SPEECH_AUX1_MODE_PARA,
+    DEFAULT_SPEECH_AUX2_MODE_PARA
+    ,
+    /* UINT16 speech_volume_para[4] */
+    DEFAULT_SPEECH_VOL_PARA
+    ,
+    /* UINT16 debug_info[16] */
+    DEFAULT_AUDIO_DEBUG_INFO
+    ,
+    /* INT16 sph_in_fir[6][45], sph_out_fir */
+    SPEECH_INPUT_FIR_COEFF,
+    SPEECH_OUTPUT_FIR_COEFF
+    ,
+    /* UINT16 DG_DL_Speech */
+    DG_DL_Speech
+    ,
+    /* UINT16 DG_Microphone */
+    DG_Microphone
+    ,
+    /* UINT16 FM record volume*/
+    FM_Record_Vol
+    ,
+    /* UINT16 BT sync type and length*/
+    DEFAULT_BLUETOOTH_SYNC_TYPE,
+    DEFAULT_BLUETOOTH_SYNC_LENGTH
+    ,
+    /* UINT16 BT PCM in/out digital gain*/
+    DEFAULT_BT_PCM_IN_VOL,
+    DEFAULT_BT_PCM_OUT_VOL
+    ,
+    /* user mode : normal mode, earphone mode, loud speaker mode */
+    /* UCHAR  user_mode             */
+    VOL_NORMAL
+    ,
+    /* auto VM record setting */
+    DEFAULT_VM_SUPPORT,
+    DEFAULT_AUTO_VM,
+    /* Micbais voltage 1900 --> 2200 */
+    MICBAIS,
+};
+
+AUDIO_VER1_CUSTOM_VOLUME_STRUCT audio_ver1_custom_default = {
+    VER1_AUD_VOLUME_RING,
+    VER1_AUD_VOLUME_SIP,
+    VER1_AUD_VOLUME_MIC,
+    VER1_AUD_VOLUME_FM,
+    VER1_AUD_VOLUME_SPH,
+    VER1_AUD_VOLUME_SPH, // sph2 now use the same
+    VER1_AUD_VOLUME_SID,
+    VER1_AUD_VOLUME_MEDIA,
+    VER1_AUD_VOLUME_MATV,
+    VER1_AUD_NORMAL_VOLUME_DEFAULT,
+    VER1_AUD_HEADSER_VOLUME_DEFAULT,
+    VER1_AUD_SPEAKER_VOLUME_DEFAULT,
+    VER1_AUD_HEADSETSPEAKER_VOLUME_DEFAULT,
+    VER1_AUD_EXTAMP_VOLUME_DEFAULT,
+    VER1_AUD_VOLUME_LEVEL_DEFAULT
+};
+
+
+AUDIO_CUSTOM_WB_PARAM_STRUCT wb_speech_custom_default =
+{
+    /* unsigned short speech_mode_wb_para[8][16] */
+    DEFAULT_WB_SPEECH_NORMAL_MODE_PARA,
+    DEFAULT_WB_SPEECH_EARPHONE_MODE_PARA,
+    DEFAULT_WB_SPEECH_LOUDSPK_MODE_PARA,
+    DEFAULT_WB_SPEECH_BT_EARPHONE_MODE_PARA,
+    DEFAULT_WB_SPEECH_BT_CORDLESS_MODE_PARA,
+    DEFAULT_WB_SPEECH_CARKIT_MODE_PARA,
+    DEFAULT_WB_SPEECH_AUX1_MODE_PARA,
+    DEFAULT_WB_SPEECH_AUX2_MODE_PARA,
+    /* short sph_wb_in_fir[6][90] */
+    WB_Speech_Input_FIR_Coeff,
+    /* short sph_wb_out_fir[6][90] */
+    WB_Speech_Output_FIR_Coeff,
+};
+#if defined(MTK_AUDIO_BLOUD_CUSTOMPARAMETER_V5)
+/*
+unsigned int bes_loudness_Sep_LR_Filter;
+    unsigned int bes_loudness_WS_Gain_Max;
+    unsigned int bes_loudness_WS_Gain_Min;
+    unsigned int bes_loudness_Filter_First;
+    unsigned int bes_loudness_Num_Bands;
+    unsigned int bes_loudness_Flt_Bank_Order;
+    unsigned int bes_loudness_Cross_Freq[7];
+    int DRC_Th[8][5];
+    int DRC_Gn[8][5];
+    int SB_Gn[8];
+    unsigned int SB_Mode[8];
+    unsigned int DRC_Delay;
+    unsigned int Att_Time[8][6];
+    unsigned int Rel_Time[8][6];
+    int Hyst_Th[8][6];
+    int Lim_Th;
+    int Lim_Gn;
+    unsigned int Lim_Const;
+    unsigned int Lim_Delay;
+    int SWIPRev;
+
+*/
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_custom_default =
+{
+#if 1
+    BES_LOUDNESS_ACF_L_HPF_FC,
+    BES_LOUDNESS_ACF_L_HPF_ORDER,
+    BES_LOUDNESS_ACF_L_LPF_FC,
+    BES_LOUDNESS_ACF_L_LPF_ORDER,
+    BES_LOUDNESS_ACF_L_BPF_FC,
+    BES_LOUDNESS_ACF_L_BPF_BW,
+    BES_LOUDNESS_ACF_L_BPF_GAIN,
+
+    BES_LOUDNESS_ACF_R_HPF_FC,
+    BES_LOUDNESS_ACF_R_HPF_ORDER,
+    BES_LOUDNESS_ACF_R_LPF_FC,
+    BES_LOUDNESS_ACF_R_LPF_ORDER,
+    BES_LOUDNESS_ACF_R_BPF_FC,
+    BES_LOUDNESS_ACF_R_BPF_BW,
+    BES_LOUDNESS_ACF_R_BPF_GAIN,   
+
+    BES_LOUDNESS_ACF_SEP_LR_FILTER,
+    BES_LOUDNESS_ACF_WS_GAIN_MAX,
+    BES_LOUDNESS_ACF_WS_GAIN_MIN,
+    BES_LOUDNESS_ACF_FILTER_FIRST,
+    BES_LOUDNESS_ACF_NUM_BANDS,
+    BES_LOUDNESS_ACF_FLT_BANK_ORDER,
+    BES_LOUDNESS_ACF_CROSSOVER_FREQ,
+    BES_LOUDNESS_ACF_GAIN_MAP_IN,
+    BES_LOUDNESS_ACF_GAIN_MAP_OUT,
+    BES_LOUDNESS_ACF_SB_GAIN,
+    BES_LOUDNESS_ACF_SB_MODE,
+    BES_LOUDNESS_ACF_DRC_DELAY,
+    BES_LOUDNESS_ACF_ATT_TIME,
+    BES_LOUDNESS_ACF_REL_TIME,
+    BES_LOUDNESS_ACF_HYST_TH,
+    BES_LOUDNESS_ACF_LIM_TH,
+    BES_LOUDNESS_ACF_LIM_GN,
+    BES_LOUDNESS_ACF_LIM_CONST,
+    BES_LOUDNESS_ACF_LIM_DELAY,
+    0x0520,
+#else
+    BES_LOUDNESS_HSF_COEFF_L,
+	BES_LOUDNESS_BPF_COEFF_L,
+	BES_LOUDNESS_LPF_COEFF_L,
+	BES_LOUDNESS_HSF_COEFF_R,
+	BES_LOUDNESS_BPF_COEFF_R,
+	BES_LOUDNESS_LPF_COEFF_R,
+	BES_LOUDNESS_WS_GAIN_MAX,
+	BES_LOUDNESS_WS_GAIN_MIN,
+	BES_LOUDNESS_FILTER_FIRST,
+	
+	BES_LOUDNESS_SEP_LR_FILTER,
+	BES_LOUDNESS_NUM_BANDS,
+	BES_LOUDNESS_FLT_BANK_ORDER,
+	BES_LOUDNESS_CROSSOVER_FREQ,
+
+    BES_LOUDNESS_GAIN_MAP_IN,
+    BES_LOUDNESS_GAIN_MAP_OUT,
+    BES_LOUDNESS_SB_GAIN,
+    BES_LOUDNESS_SB_MODE,
+    BES_LOUDNESS_DRC_DELAY,
+    BES_LOUDNESS_ATT_TIME,
+    BES_LOUDNESS_REL_TIME,    
+	BES_LOUDNESS_HYST_TH,
+	BES_LOUDNESS_LIM_TH,
+	BES_LOUDNESS_LIM_GN,
+	BES_LOUDNESS_LIM_CONST,
+	BES_LOUDNESS_LIM_DELAY,
+#endif	
+	
+};
+#if 0
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audiosub_custom_default =
+{
+    BES_LOUDNESS_HSF_COEFF_SUB_L,
+	BES_LOUDNESS_BPF_COEFF_SUB_L,
+	BES_LOUDNESS_LPF_COEFF_SUB_L,
+	BES_LOUDNESS_HSF_COEFF_SUB_R,
+	BES_LOUDNESS_BPF_COEFF_SUB_R,
+	BES_LOUDNESS_LPF_COEFF_SUB_R,
+	BES_LOUDNESS_WS_GAIN_MAX_SUB,
+	BES_LOUDNESS_WS_GAIN_MIN_SUB,
+	BES_LOUDNESS_FILTER_FIRST_SUB,
+	
+	BES_LOUDNESS_SEP_LR_FILTER_SUB,
+	BES_LOUDNESS_NUM_BANDS_SUB,
+	BES_LOUDNESS_FLT_BANK_ORDER_SUB,
+	BES_LOUDNESS_CROSSOVER_FREQ_SUB,
+
+    BES_LOUDNESS_GAIN_MAP_IN_SUB,
+    BES_LOUDNESS_GAIN_MAP_OUT_SUB,
+    BES_LOUDNESS_SB_GAIN_SUB,
+    BES_LOUDNESS_SB_MODE_SUB,
+    BES_LOUDNESS_DRC_DELAY_SUB,
+    BES_LOUDNESS_ATT_TIME_SUB,
+    BES_LOUDNESS_REL_TIME_SUB,
+	BES_LOUDNESS_HYST_TH_SUB,
+	BES_LOUDNESS_LIM_TH_SUB,
+	BES_LOUDNESS_LIM_GN,
+	BES_LOUDNESS_LIM_CONST,
+	BES_LOUDNESS_LIM_DELAY,
+	
+	
+};
+#endif
+
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_hcf_custom_default =
+{
+    BES_LOUDNESS_HCF_L_HPF_FC,
+    BES_LOUDNESS_HCF_L_HPF_ORDER,
+    BES_LOUDNESS_HCF_L_LPF_FC,
+    BES_LOUDNESS_HCF_L_LPF_ORDER,
+    BES_LOUDNESS_HCF_L_BPF_FC,
+    BES_LOUDNESS_HCF_L_BPF_BW,
+    BES_LOUDNESS_HCF_L_BPF_GAIN,
+
+    BES_LOUDNESS_HCF_R_HPF_FC,
+    BES_LOUDNESS_HCF_R_HPF_ORDER,
+    BES_LOUDNESS_HCF_R_LPF_FC,
+    BES_LOUDNESS_HCF_R_LPF_ORDER,
+    BES_LOUDNESS_HCF_R_BPF_FC,
+    BES_LOUDNESS_HCF_R_BPF_BW,
+    BES_LOUDNESS_HCF_R_BPF_GAIN,   
+
+    BES_LOUDNESS_HCF_SEP_LR_FILTER,
+    BES_LOUDNESS_HCF_WS_GAIN_MAX,
+    BES_LOUDNESS_HCF_WS_GAIN_MIN,
+    BES_LOUDNESS_HCF_FILTER_FIRST,
+    BES_LOUDNESS_HCF_NUM_BANDS,
+    BES_LOUDNESS_HCF_FLT_BANK_ORDER,
+    BES_LOUDNESS_HCF_CROSSOVER_FREQ,
+    BES_LOUDNESS_HCF_GAIN_MAP_IN,
+    BES_LOUDNESS_HCF_GAIN_MAP_OUT,
+    BES_LOUDNESS_HCF_SB_GAIN,
+    BES_LOUDNESS_HCF_SB_MODE,
+    BES_LOUDNESS_HCF_DRC_DELAY,
+    BES_LOUDNESS_HCF_ATT_TIME,
+    BES_LOUDNESS_HCF_REL_TIME,
+    BES_LOUDNESS_HCF_HYST_TH,
+    BES_LOUDNESS_HCF_LIM_TH,
+    BES_LOUDNESS_HCF_LIM_GN,
+    BES_LOUDNESS_HCF_LIM_CONST,
+    BES_LOUDNESS_HCF_LIM_DELAY,
+	0x0520,
+	
+};
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_vibspk_custom_default =
+{
+    BES_LOUDNESS_ACF_L_HPF_FC,
+    BES_LOUDNESS_ACF_L_HPF_ORDER,
+    BES_LOUDNESS_ACF_L_LPF_FC,
+    BES_LOUDNESS_ACF_L_LPF_ORDER,
+    BES_LOUDNESS_ACF_L_BPF_FC,
+    BES_LOUDNESS_ACF_L_BPF_BW,
+    BES_LOUDNESS_ACF_L_BPF_GAIN,
+
+    BES_LOUDNESS_ACF_R_HPF_FC,
+    BES_LOUDNESS_ACF_R_HPF_ORDER,
+    BES_LOUDNESS_ACF_R_LPF_FC,
+    BES_LOUDNESS_ACF_R_LPF_ORDER,
+    BES_LOUDNESS_ACF_R_BPF_FC,
+    BES_LOUDNESS_ACF_R_BPF_BW,
+    BES_LOUDNESS_ACF_R_BPF_GAIN,   
+
+    0,
+    BES_LOUDNESS_ACF_WS_GAIN_MAX,
+    BES_LOUDNESS_ACF_WS_GAIN_MIN,
+    BES_LOUDNESS_ACF_FILTER_FIRST,
+    BES_LOUDNESS_ACF_NUM_BANDS,
+    BES_LOUDNESS_ACF_FLT_BANK_ORDER,
+    BES_LOUDNESS_ACF_CROSSOVER_FREQ,
+    BES_LOUDNESS_ACF_GAIN_MAP_IN,
+    BES_LOUDNESS_ACF_GAIN_MAP_OUT,
+    BES_LOUDNESS_ACF_SB_GAIN,
+    BES_LOUDNESS_ACF_SB_MODE,
+    BES_LOUDNESS_ACF_DRC_DELAY,
+    BES_LOUDNESS_ACF_ATT_TIME,
+    BES_LOUDNESS_ACF_REL_TIME,
+    BES_LOUDNESS_ACF_HYST_TH,
+    BES_LOUDNESS_ACF_LIM_TH,
+    BES_LOUDNESS_ACF_LIM_GN,
+    BES_LOUDNESS_ACF_LIM_CONST,
+    BES_LOUDNESS_ACF_LIM_DELAY,
+    0x0520,
+	
+	
+};
+
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_musicdrc_custom_default =
+{
+    BES_LOUDNESS_MUSICDRC_L_HPF_FC,
+    BES_LOUDNESS_MUSICDRC_L_HPF_ORDER,
+    BES_LOUDNESS_MUSICDRC_L_LPF_FC,
+    BES_LOUDNESS_MUSICDRC_L_LPF_ORDER,
+    BES_LOUDNESS_MUSICDRC_L_BPF_FC,
+    BES_LOUDNESS_MUSICDRC_L_BPF_BW,
+    BES_LOUDNESS_MUSICDRC_L_BPF_GAIN,
+
+    BES_LOUDNESS_MUSICDRC_R_HPF_FC,
+    BES_LOUDNESS_MUSICDRC_R_HPF_ORDER,
+    BES_LOUDNESS_MUSICDRC_R_LPF_FC,
+    BES_LOUDNESS_MUSICDRC_R_LPF_ORDER,
+    BES_LOUDNESS_MUSICDRC_R_BPF_FC,
+    BES_LOUDNESS_MUSICDRC_R_BPF_BW,
+    BES_LOUDNESS_MUSICDRC_R_BPF_GAIN,   
+
+    BES_LOUDNESS_MUSICDRC_SEP_LR_FILTER,
+    BES_LOUDNESS_MUSICDRC_WS_GAIN_MAX,
+    BES_LOUDNESS_MUSICDRC_WS_GAIN_MIN,
+    BES_LOUDNESS_MUSICDRC_FILTER_FIRST,
+    BES_LOUDNESS_MUSICDRC_NUM_BANDS,
+    BES_LOUDNESS_MUSICDRC_FLT_BANK_ORDER,
+    BES_LOUDNESS_MUSICDRC_CROSSOVER_FREQ,
+    BES_LOUDNESS_MUSICDRC_GAIN_MAP_IN,
+    BES_LOUDNESS_MUSICDRC_GAIN_MAP_OUT,
+    BES_LOUDNESS_MUSICDRC_SB_GAIN,
+    BES_LOUDNESS_MUSICDRC_SB_MODE,
+    BES_LOUDNESS_MUSICDRC_DRC_DELAY,
+    BES_LOUDNESS_MUSICDRC_ATT_TIME,
+    BES_LOUDNESS_MUSICDRC_REL_TIME,
+    BES_LOUDNESS_MUSICDRC_HYST_TH,
+    BES_LOUDNESS_MUSICDRC_LIM_TH,
+    BES_LOUDNESS_MUSICDRC_LIM_GN,
+    BES_LOUDNESS_MUSICDRC_LIM_CONST,
+    BES_LOUDNESS_MUSICDRC_LIM_DELAY,
+    0x0520,
+	
+	
+};
+
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_ringtonedrc_custom_default =
+{
+    BES_LOUDNESS_RINGTONEDRC_L_HPF_FC,
+    BES_LOUDNESS_RINGTONEDRC_L_HPF_ORDER,
+    BES_LOUDNESS_RINGTONEDRC_L_LPF_FC,
+    BES_LOUDNESS_RINGTONEDRC_L_LPF_ORDER,
+    BES_LOUDNESS_RINGTONEDRC_L_BPF_FC,
+    BES_LOUDNESS_RINGTONEDRC_L_BPF_BW,
+    BES_LOUDNESS_RINGTONEDRC_L_BPF_GAIN,
+
+    BES_LOUDNESS_RINGTONEDRC_R_HPF_FC,
+    BES_LOUDNESS_RINGTONEDRC_R_HPF_ORDER,
+    BES_LOUDNESS_RINGTONEDRC_R_LPF_FC,
+    BES_LOUDNESS_RINGTONEDRC_R_LPF_ORDER,
+    BES_LOUDNESS_RINGTONEDRC_R_BPF_FC,
+    BES_LOUDNESS_RINGTONEDRC_R_BPF_BW,
+    BES_LOUDNESS_RINGTONEDRC_R_BPF_GAIN,   
+
+    BES_LOUDNESS_RINGTONEDRC_SEP_LR_FILTER,
+    BES_LOUDNESS_RINGTONEDRC_WS_GAIN_MAX,
+    BES_LOUDNESS_RINGTONEDRC_WS_GAIN_MIN,
+    BES_LOUDNESS_RINGTONEDRC_FILTER_FIRST,
+    BES_LOUDNESS_RINGTONEDRC_NUM_BANDS,
+    BES_LOUDNESS_RINGTONEDRC_FLT_BANK_ORDER,
+    BES_LOUDNESS_RINGTONEDRC_CROSSOVER_FREQ,
+    BES_LOUDNESS_RINGTONEDRC_GAIN_MAP_IN,
+    BES_LOUDNESS_RINGTONEDRC_GAIN_MAP_OUT,
+    BES_LOUDNESS_RINGTONEDRC_SB_GAIN,
+    BES_LOUDNESS_RINGTONEDRC_SB_MODE,
+    BES_LOUDNESS_RINGTONEDRC_DRC_DELAY,
+    BES_LOUDNESS_RINGTONEDRC_ATT_TIME,
+    BES_LOUDNESS_RINGTONEDRC_REL_TIME,
+    BES_LOUDNESS_RINGTONEDRC_HYST_TH,
+    BES_LOUDNESS_RINGTONEDRC_LIM_TH,
+    BES_LOUDNESS_RINGTONEDRC_LIM_GN,
+    BES_LOUDNESS_RINGTONEDRC_LIM_CONST,
+    BES_LOUDNESS_RINGTONEDRC_LIM_DELAY,
+    0x0520,
+	
+	
+};
+
+
+#elif defined(MTK_AUDIO_BLOUD_CUSTOMPARAMETER_V4)
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_custom_default =
+{
+    BES_LOUDNESS_HSF_COEFF,
+	BES_LOUDNESS_BPF_COEFF,
+	BES_LOUDNESS_LPF_COEFF,
+	BES_LOUDNESS_WS_GAIN_MAX,
+	BES_LOUDNESS_WS_GAIN_MIN,
+	BES_LOUDNESS_FILTER_FIRST,
+	BES_LOUDNESS_ATT_TIME,
+	BES_LOUDNESS_REL_TIME,
+	BES_LOUDNESS_GAIN_MAP_IN,
+	BES_LOUDNESS_GAIN_MAP_OUT,
+};
+#if 0
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audiosub_custom_default =
+{
+    BES_LOUDNESS_HSF_COEFF_SUB,
+	BES_LOUDNESS_BPF_COEFF_SUB,
+	BES_LOUDNESS_LPF_COEFF_SUB,
+	BES_LOUDNESS_WS_GAIN_MAX_SUB,
+	BES_LOUDNESS_WS_GAIN_MIN_SUB,
+	BES_LOUDNESS_FILTER_FIRST_SUB,
+	BES_LOUDNESS_ATT_TIME_SUB,
+	BES_LOUDNESS_REL_TIME_SUB,
+	BES_LOUDNESS_GAIN_MAP_IN_SUB,
+	BES_LOUDNESS_GAIN_MAP_OUT_SUB,
+};
+#endif
+
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_hcf_custom_default =
+{
+    BES_LOUDNESS_HCF_HSF_COEFF,
+	BES_LOUDNESS_HCF_BPF_COEFF,
+	BES_LOUDNESS_HCF_LPF_COEFF,
+	BES_LOUDNESS_HCF_WS_GAIN_MAX,
+	BES_LOUDNESS_HCF_WS_GAIN_MIN,
+	BES_LOUDNESS_HCF_FILTER_FIRST,
+	BES_LOUDNESS_HCF_ATT_TIME,
+	BES_LOUDNESS_HCF_REL_TIME,
+	BES_LOUDNESS_HCF_GAIN_MAP_IN,
+	BES_LOUDNESS_HCF_GAIN_MAP_OUT,
+};
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_vibspk_custom_default =
+{
+    BES_LOUDNESS_HSF_COEFF,
+	BES_LOUDNESS_BPF_COEFF,
+	BES_LOUDNESS_LPF_COEFF,
+	BES_LOUDNESS_WS_GAIN_MAX,
+	BES_LOUDNESS_WS_GAIN_MIN,
+	BES_LOUDNESS_FILTER_FIRST,
+	BES_LOUDNESS_ATT_TIME,
+	BES_LOUDNESS_REL_TIME,
+	BES_LOUDNESS_GAIN_MAP_IN,
+	BES_LOUDNESS_GAIN_MAP_OUT,
+};
+
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_musicdrc_custom_default =
+{
+    BES_LOUDNESS_HSF_COEFF,
+	BES_LOUDNESS_BPF_COEFF,
+	BES_LOUDNESS_LPF_COEFF,
+	BES_LOUDNESS_WS_GAIN_MAX,
+	BES_LOUDNESS_WS_GAIN_MIN,
+	BES_LOUDNESS_FILTER_FIRST,
+	BES_LOUDNESS_ATT_TIME,
+	BES_LOUDNESS_REL_TIME,
+	BES_LOUDNESS_GAIN_MAP_IN,
+	BES_LOUDNESS_GAIN_MAP_OUT,
+};
+
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_ringtonedrc_custom_default =
+{
+    BES_LOUDNESS_HSF_COEFF,
+	BES_LOUDNESS_BPF_COEFF,
+	BES_LOUDNESS_LPF_COEFF,
+	BES_LOUDNESS_WS_GAIN_MAX,
+	BES_LOUDNESS_WS_GAIN_MIN,
+	BES_LOUDNESS_FILTER_FIRST,
+	BES_LOUDNESS_ATT_TIME,
+	BES_LOUDNESS_REL_TIME,
+	BES_LOUDNESS_GAIN_MAP_IN,
+	BES_LOUDNESS_GAIN_MAP_OUT,
+};
+
+
+#else
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_custom_default =
+{
+    /* Compensation Filter HSF coeffs: default all pass filter       */
+    /* BesLoudness also uses this coeffs    */
+    BES_LOUDNESS_HSF_COEFF,
+    /* Compensation Filter BPF coeffs: default all pass filter      */
+    BES_LOUDNESS_BPF_COEFF,
+    BES_LOUDNESS_DRC_FORGET_TABLE,
+    BES_LOUDNESS_WS_GAIN_MAX,
+    BES_LOUDNESS_WS_GAIN_MIN,
+    BES_LOUDNESS_FILTER_FIRST,
+    BES_LOUDNESS_GAIN_MAP_IN,
+    BES_LOUDNESS_GAIN_MAP_OUT,
+};
+
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_hcf_custom_default =
+{
+    /* Compensation Filter HSF coeffs: default all pass filter       */
+    /* BesLoudness also uses this coeffs    */
+    BES_LOUDNESS_HCF_HSF_COEFF,
+    /* Compensation Filter BPF coeffs: default all pass filter      */
+    BES_LOUDNESS_HCF_BPF_COEFF,
+    BES_LOUDNESS_HCF_DRC_FORGET_TABLE,
+    BES_LOUDNESS_HCF_WS_GAIN_MAX,
+    BES_LOUDNESS_HCF_WS_GAIN_MIN,
+    BES_LOUDNESS_HCF_FILTER_FIRST,
+    BES_LOUDNESS_HCF_GAIN_MAP_IN,
+    BES_LOUDNESS_HCF_GAIN_MAP_OUT,
+};
+
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_vibspk_custom_default =
+{
+    /* Compensation Filter HSF coeffs: default all pass filter       */
+    /* BesLoudness also uses this coeffs    */
+    BES_LOUDNESS_HSF_COEFF,
+    /* Compensation Filter BPF coeffs: default all pass filter      */
+    BES_LOUDNESS_BPF_COEFF,
+    BES_LOUDNESS_DRC_FORGET_TABLE,
+    BES_LOUDNESS_WS_GAIN_MAX,
+    BES_LOUDNESS_WS_GAIN_MIN,
+    BES_LOUDNESS_FILTER_FIRST,
+    BES_LOUDNESS_GAIN_MAP_IN,
+    BES_LOUDNESS_GAIN_MAP_OUT,
+};
+
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_musicdrc_custom_default =
+{
+    /* Compensation Filter HSF coeffs: default all pass filter       */
+    /* BesLoudness also uses this coeffs    */
+    BES_LOUDNESS_HSF_COEFF,
+    /* Compensation Filter BPF coeffs: default all pass filter      */
+    BES_LOUDNESS_BPF_COEFF,
+    BES_LOUDNESS_DRC_FORGET_TABLE,
+    BES_LOUDNESS_WS_GAIN_MAX,
+    BES_LOUDNESS_WS_GAIN_MIN,
+    BES_LOUDNESS_FILTER_FIRST,
+    BES_LOUDNESS_GAIN_MAP_IN,
+    BES_LOUDNESS_GAIN_MAP_OUT,
+};
+
+AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_ringtonedrc_custom_default =
+{
+    /* Compensation Filter HSF coeffs: default all pass filter       */
+    /* BesLoudness also uses this coeffs    */
+    BES_LOUDNESS_HSF_COEFF,
+    /* Compensation Filter BPF coeffs: default all pass filter      */
+    BES_LOUDNESS_BPF_COEFF,
+    BES_LOUDNESS_DRC_FORGET_TABLE,
+    BES_LOUDNESS_WS_GAIN_MAX,
+    BES_LOUDNESS_WS_GAIN_MIN,
+    BES_LOUDNESS_FILTER_FIRST,
+    BES_LOUDNESS_GAIN_MAP_IN,
+    BES_LOUDNESS_GAIN_MAP_OUT,
+};
+
+#endif
+
+AUDIO_EFFECT_CUSTOM_PARAM_STRUCT audio_effect_custom_default =
+{
+    // DSRD parameters
+    BSRD_LEVEL,
+    BSRD_DISTANCE1,
+    BSRD_DISTANCE2,
+    BSRD_BAND_SELECT,
+
+    // BASS
+    BASS_CUTOFF_FREQ,
+    BASS_ISVB,
+
+    //EQ effect
+    NORMAL_GAIN_LEVEL,
+    DANCE_GAIN_LEVEL,
+    BASS_GAIN_LEVEL,
+    CLASSICAL_GAIN_LEVEL,
+    TREBLE_GAIN_LEVEL,
+    PARTY_GAIN_LEVEL,
+    POP_GAIN_LEVEL,
+    ROCK_GAIN_LEVEL,
+
+    //loudness mode
+    LOUDENHANCEMODE,
+
+    //TS
+    TIME_TD_TF,
+    TIME_TS_RATIO
+};
+
+AUDIO_PARAM_MED_STRUCT audio_param_med_default =
+{
+    SPEECH_INPUT_MED_FIR_COEFF,
+    SPEECH_OUTPUT_MED_FIR_COEFF,
+    FIR_output_index,
+    FIR_input_index,
+    MED_SPEECH_NORMAL_MODE_PARA,
+    MED_SPEECH_EARPHONE_MODE_PARA,
+    MED_SPEECH_BT_EARPHONE_MODE_PARA,
+    MED_SPEECH_LOUDSPK_MODE_PARA,
+    MED_SPEECH_CARKIT_MODE_PARA,
+    MED_SPEECH_BT_CORDLESS_MODE_PARA,
+    MED_SPEECH_AUX1_MODE_PARA,
+    MED_SPEECH_AUX2_MODE_PARA
+};
+
+
+AUDIO_VOLUME_CUSTOM_STRUCT audio_volume_custom_default =
+{
+    AUD_VOLUME_RING,
+    AUD_VOLUME_KEY,
+    AUD_VOLUME_MIC,
+    AUD_VOLUME_FMR,
+    AUD_VOLUME_SPH,
+    AUD_VOLUME_SID,
+    AUD_VOLUME_MEDIA,
+    AUD_VOLUME_MATV
+};
+
+AUDIO_CUSTOM_EXTRA_PARAM_STRUCT dual_mic_custom_default =
+{
+    DEFAULT_SPEECH_DUAL_MIC_ABF_PARA,
+    DEFAULT_SPEECH_DUAL_MIC_ABFWB_PARA,
+    DEFAULT_SPEECH_DUAL_MIC_ABF_PARA_LoudSPK,
+    DEFAULT_SPEECH_DUAL_MIC_ABFWB_PARA_LoudSPK,
+    DEFAULT_SPEECH_DUAL_MIC_ABFWB_PARA_VR,
+    DEFAULT_SPEECH_DUAL_MIC_ABFWB_PARA_VOIP,
+    DEFAULT_SPEECH_DUAL_MIC_ABFWB_PARA_VOIP_LoudSPK
+};
+
+AUDIO_GAIN_TABLE_STRUCT Gain_control_table_default ={
+    DEFAULT_VOICE_GAIN_TABLE_PARA,
+    DEFAULT_SYSTEM_GAIN_TABLE_PARA,
+    DEFAULT_RINGTONE_GAIN_TABLE_PARA,
+    DEFAULT_MUSIC_GAIN_TABLE_PARA,
+    DEFAULT_ALARM_GAIN_TABLE_PARA,
+    DEFAULT_NOTIFICATION_GAIN_TABLE_PARA,
+    DEFAULT_BLUETOOTH_SCO_GAIN_TABLE_PARA,
+    DEFAULT_ENFORCEAUDIBLE_GAIN_TABLE_PARA,
+    DEFAULT_DTMF_GAIN_TABLE_PARA,
+    DEFAULT_TTS_GAIN_TABLE_PARA,
+    DEFAULT_FM_GAIN_TABLE_PARA,
+    DEFAULT_MATV_GAIN_TABLE_PARA,
+    DEFAULT_SPEECH_NB_GAIN_TABLE_PARA,
+    DEFAULT_SPEECH_WB_GAIN_TABLE_PARA,
+    DEFAULT_SIDETONE_NB_GAIN_TABLE_PARA,
+    DEFAULT_SIDETONE_WB_GAIN_TABLE_PARA,
+    DEFAULT_MICROPHONE_GAIN_TABLE_PARA
+};
+
+AUDIO_BT_GAIN_STRUCT bt_gain_control_default ={
+    DEFAULT_BLUETOOTH_NREC_GAIN_TABLE_PARA
+};
+
+AUDIO_HD_RECORD_PARAM_STRUCT Hd_Recrod_Par_default = {
+    //hd_rec mode num & fir num
+    HD_REC_MODE_INDEX_NUM,
+    HD_REC_FIR_INDEX_NUM,
+    //hd_rec_speech_mode_para
+    DEFAULT_HD_RECORD_SPH_MODE_PAR,
+    //hd_rec_fir
+    DEFAULT_HD_RECORD_FIR_Coeff,
+    //hd_rec fir mapping - ch1
+    DEFAULT_HD_RECORD_MODE_FIR_MAPPING_CH1,
+    //hd_rec fir mapping - ch2
+    DEFAULT_HD_RECORD_MODE_FIR_MAPPING_CH2,
+    //hd_rec device mode mapping
+    DEFAULT_HD_RECORD_MODE_DEV_MAPPING,
+    //hd_rec_map_to_input_src
+    DEFAULT_HD_RECORD_MODE_INPUT_SRC_MAPPING,
+    //hd_rec_map_to_stereo_flag
+    DEFAULT_HD_RECORD_MODE_STEREO_FLAGS
+};
+
+AUDIO_HD_RECORD_SCENE_TABLE_STRUCT Hd_Recrod_Scene_Table_default = {
+	DEFAULT_HD_RECORD_NUM_VOICE_RECOGNITION_SCENES,
+    DEFAULT_HD_RECORD_NUM_VOICE_SCENES,
+    DEFAULT_HD_RECORD_NUM_VIDEO_SCENES,
+    DEFAULT_HD_RECORD_NUM_VOICE_UNLOCK_SCENES,
+    DEFAULT_HD_RECORD_NUM_CUSTOMIZATION_SCENES,
+    DEFAULT_HD_RECORD_SCENE_TABLE,
+    DEFAULT_HD_RECORD_SCENE_NAME
+};
+
+VOICE_RECOGNITION_PARAM_STRUCT Voice_Recognize_Par_default = {
+	//for framework, voice ui related
+	DEFAULT_AP_NUM,
+	DEFAULT_LANGUAGE_NUM,
+	DEFAULT_LANGUAGE_FOLDER_NAME,
+	DEFAULT_COMMAND_NUM_PER_LAN,
+	DEFAULT_AP_SUPPORT_INFO,
+	DEFAULT_ALGORITHM_PARAM // for CTO
+};
+
+AUDIO_AUDENH_CONTROL_OPTION_STRUCT AUDENH_Control_Option_Par_default = {    
+    DEFAULT_AUDIO_AUDENH_CONTROL_OPTION_Coeff
+};
+
+AUDIO_BUFFER_DC_CALIBRATION_STRUCT Audio_Buffer_DC_Calibration_Par_default = {
+    0xFFFF,
+    0,
+    0,
+    0
+};
+
+AUDIO_VOIP_PARAM_STRUCT Audio_VOIP_Par_default = {    
+    DEFAULT_VOIP_SPEECH_COMMON_PARAM,
+    DEFAULT_VOIP_SPEECH_MODE_PARAM,
+    DEFAULT_VOIP_IN_FIR_PARAM,
+    DEFAULT_VOIP_OUT_FIR_PARAM
+};
+
+AUDIO_ANC_CUSTOM_PARAM_STRUCT speech_ANC_custom_default = {
+    DEFAULT_SPEECH_ANC_PARA,
+    DEFAULT_SPEECH_ANC_APPLY,
+    DEFAULT_SPEECH_ANC_LOG_ENABLE,
+    DEFAULT_SPEECH_ANC_LOG_DOWNSAMPLE,
+    DEFAULT_SPEECH_ANC_DL_PGA
+};
+
+AUDIO_CUSTOM_MAGI_CONFERENCE_STRUCT speech_magi_conference_custom_default = {
+    DEFAULT_SPEECH_VOICE_TRACKING_MODE_PARA,
+    DEFAULT_WB_SPEECH_VOICE_TRACKING_MODE_PARA
+};
+
+AUDIO_CUSTOM_HAC_PARAM_STRUCT speech_hac_param_custom_default = {
+    DEFAULT_SPEECH_HAC_MODE_PARA,
+    DEFAULT_WB_SPEECH_HAC_MODE_PARA,
+    DEFAULT_SPEECH_HAC_INPUT_FIR_COEFF,
+    DEFAULT_SPEECH_HAC_OUTPUT_FIR_COEFF,
+    DEFAULT_WB_SPEECH_HAC_INPUT_FIR_COEFF,
+    DEFAULT_WB_SPEECH_HAC_OUTPUT_FIR_COEFF,
+    DEFAULT_VER1_AUD_VOLUME_MIC_HAC,
+    DEFAULT_VER1_AUD_VOLUME_SPH_HAC,
+    DEFAULT_VER1_AUD_VOLUME_SID_HAC
+};
+
+AUDIO_CUSTOM_SPEECH_LPBK_PARAM_STRUCT speech_lpbk_param_custom_default = {
+    DEFAULT_SPEECH_LPBK_NORMAL_MODE_PARA,
+    DEFAULT_SPEECH_LPBK_EARPHONE_MODE_PARA,
+    DEFAULT_SPEECH_LPBK_LOUDSPK_MODE_PARA,
+};
+
+AUDIO_SPEAKER_MONITOR_PARAM_STRUCT speaker_monitor_par_default = {
+    DEFAULT_SPEAKER_MONITOR_PARAM,
+    DEFAULT_SPEAKER_TEMP_INITIAL,
+    /* hardware setting */
+    DEFAULT_SPEAKER_CURRENT_SENSE_RESISTOR,
+    /* resonant frqquency*/
+    DEFAULT_SPEAKER_RESONANT_FC,
+    DEFAULT_SPEAKER_RESONANT_BW,
+    DEFAULT_SPEAKER_RESONANT_TH,
+    /* temperature estimation */
+    DEFAULT_SPEAKER_PREFER_HIGH_BAND,
+    DEFAULT_SPEAKER_PREFER_LOW_BAND,
+    /* temperature estimation control*/
+    DEFAULT_SPEAKER_TEMP_CONTROL_LOW,   // low limit
+    DEFAULT_SPEAKER_TEMP_CONTROL_HIGH,  // high limit
+    DEFAULT_SPEAKER_TEMP_CONTROL_LOG,   // max log time
+    /* monitor interval */
+    DEFAULT_SPEAKER_MONITOR_INTERVAL //unit: ms
+};
+
+#else
+extern AUDIO_CUSTOM_PARAM_STRUCT speech_custom_default;
+
+extern AUDIO_VER1_CUSTOM_VOLUME_STRUCT audio_ver1_custom_default;
+
+
+extern AUDIO_CUSTOM_WB_PARAM_STRUCT wb_speech_custom_default;
+
+extern AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_custom_default;
+
+extern AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_hcf_custom_default;
+extern AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_vibspk_custom_default;
+extern AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_musicdrc_custom_default;
+extern AUDIO_ACF_CUSTOM_PARAM_STRUCT audio_ringtonedrc_custom_default;
+
+extern AUDIO_EFFECT_CUSTOM_PARAM_STRUCT audio_effect_custom_default;
+
+extern AUDIO_PARAM_MED_STRUCT audio_param_med_default;
+
+extern AUDIO_VOLUME_CUSTOM_STRUCT audio_volume_custom_default;
+
+extern AUDIO_CUSTOM_EXTRA_PARAM_STRUCT dual_mic_custom_default;
+
+extern AUDIO_GAIN_TABLE_STRUCT Gain_control_table_default;
+
+extern AUDIO_HD_RECORD_PARAM_STRUCT Hd_Recrod_Par_default;
+
+extern AUDIO_HD_RECORD_SCENE_TABLE_STRUCT Hd_Recrod_Scene_Table_default;
+
+
+extern VOICE_RECOGNITION_PARAM_STRUCT Voice_Recognize_Par_default;
+
+extern AUDIO_AUDENH_CONTROL_OPTION_STRUCT AUDENH_Control_Option_Par_default;
+
+extern AUDIO_BUFFER_DC_CALIBRATION_STRUCT Audio_Buffer_DC_Calibration_Par_default;
+
+extern AUDIO_VOIP_PARAM_STRUCT Audio_VOIP_Par_default;
+extern AUDIO_ANC_CUSTOM_PARAM_STRUCT speech_ANC_custom_default;
+extern AUDIO_SPEAKER_MONITOR_PARAM_STRUCT speaker_monitor_par_default;
+extern AUDIO_CUSTOM_MAGI_CONFERENCE_STRUCT speech_magi_conference_custom_default;
+extern AUDIO_CUSTOM_HAC_PARAM_STRUCT speech_hac_param_custom_default;
+extern AUDIO_CUSTOM_SPEECH_LPBK_PARAM_STRUCT speech_lpbk_param_custom_default;
+extern AUDIO_BT_GAIN_STRUCT bt_gain_control_default;
+
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_BT_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_BT_Default.h
new file mode 100644
index 0000000..943dc8f
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_BT_Default.h
@@ -0,0 +1,343 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+
+#ifndef _CFG_BT_DEFAULT_H
+#define _CFG_BT_DEFAULT_H
+
+///#include "cfgfileinc/CFG_BT_File.h"
+
+// the default value of bt nvram file
+
+static ap_nvram_btradio_struct stBtDefault_6620 =
+{
+    {0x00, 0x00, 0x46, 0x66, 0x20, 0x01},
+    {0x60, 0x00},
+    {0x23, 0x10, 0x00, 0x00},
+    {0x06, 0x80, 0x00, 0x06, 0x03, 0x06},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00},
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //not used
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+static ap_nvram_btradio_struct stBtDefault_6628 =
+{
+    {0x00, 0x00, 0x46, 0x66, 0x28, 0x01},
+    {0x60, 0x00},
+#if defined(__MTK_MERGE_INTERFACE_SUPPORT__)
+    {0x63, 0x10, 0x00, 0x00},
+#else
+    {0x23, 0x10, 0x00, 0x00},
+#endif
+    {0x07, 0x80, 0x00, 0x06, 0x05, 0x07},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00},
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //not used
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+static ap_nvram_btradio_struct stBtDefault_6630 =
+{
+    {0x00, 0x00, 0x46, 0x66, 0x30, 0x01},
+    {0x60, 0x00}, //not used
+#if defined(__MTK_MERGE_INTERFACE_SUPPORT__)
+    {0x63, 0x10, 0x00, 0x00},
+#else
+    {0x23, 0x10, 0x00, 0x00},
+#endif
+    {0x06, 0x80, 0x00, 0x06, 0x05, 0x06},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00}, //not used
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+static ap_nvram_btradio_struct stBtDefault =
+{
+    {0x00, 0x00, 0x46, 0x66, 0x30, 0x01},
+    {0x60, 0x00}, //not used
+#if defined(__MTK_MERGE_INTERFACE_SUPPORT__)
+    {0x63, 0x10, 0x00, 0x00},
+#else
+    {0x23, 0x10, 0x00, 0x00},
+#endif
+    {0x06, 0x80, 0x00, 0x06, 0x05, 0x06},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00}, //not used
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+static ap_nvram_btradio_struct stBtDefault_6572 =
+{
+    {0x00, 0x00, 0x46, 0x65, 0x72, 0x01},
+    {0x60, 0x00}, //not used
+    {0x23, 0x10, 0x00, 0x00}, //not used
+    {0x07, 0x80, 0x00, 0x06, 0x05, 0x07},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00}, //not used
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //not used
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+static ap_nvram_btradio_struct stBtDefault_6582 =
+{
+    {0x00, 0x00, 0x46, 0x65, 0x82, 0x01},
+    {0x60, 0x00}, //not used
+    {0x23, 0x10, 0x00, 0x00}, //not used
+    {0x07, 0x80, 0x00, 0x06, 0x05, 0x07},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00}, //not used
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //not used
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+static ap_nvram_btradio_struct stBtDefault_6592 =
+{
+    {0x00, 0x00, 0x46, 0x65, 0x92, 0x01},
+    {0x60, 0x00}, //not used
+    {0x23, 0x10, 0x00, 0x00}, //not used
+    {0x07, 0x80, 0x00, 0x06, 0x05, 0x07},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00}, //not used
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //not used
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+static ap_nvram_btradio_struct stBtDefault_6752 =
+{
+    {0x00, 0x00, 0x46, 0x67, 0x52, 0x01},
+    {0x60, 0x00}, //not used
+    {0x23, 0x10, 0x00, 0x00}, //not used
+    {0x07, 0x80, 0x00, 0x06, 0x05, 0x07},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00}, //not used
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //not used
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+static ap_nvram_btradio_struct stBtDefault_6735_0321 =
+{
+    {0x00, 0x00, 0x46, 0x03, 0x21, 0x01},
+    {0x60, 0x00}, //not used
+    {0x23, 0x10, 0x00, 0x00}, //not used
+    {0x07, 0x80, 0x00, 0x06, 0x05, 0x07},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00}, //not used
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //not used
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+static ap_nvram_btradio_struct stBtDefault_6735_0335 =
+{
+    {0x00, 0x00, 0x46, 0x03, 0x35, 0x01},
+    {0x60, 0x00}, //not used
+    {0x23, 0x10, 0x00, 0x00}, //not used
+    {0x07, 0x80, 0x00, 0x06, 0x05, 0x07},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00}, //not used
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //not used
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+static ap_nvram_btradio_struct stBtDefault_6735_0337 =
+{
+    {0x00, 0x00, 0x46, 0x03, 0x37, 0x01},
+    {0x60, 0x00}, //not used
+    {0x23, 0x10, 0x00, 0x00}, //not used
+    {0x07, 0x80, 0x00, 0x06, 0x05, 0x07},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00}, //not used
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //not used
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+
+static ap_nvram_btradio_struct stBtDefault_8127 =
+{
+    {0x00, 0x00, 0x46, 0x81, 0x27, 0x01},
+    {0x60, 0x00}, //not used
+    {0x23, 0x10, 0x00, 0x00}, //not used
+    {0x07, 0x80, 0x00, 0x06, 0x05, 0x07},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00}, //not used
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //not used
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+static ap_nvram_btradio_struct stBtDefault_6580 =
+{
+    {0x00, 0x00, 0x46, 0x65, 0x80, 0x01},
+    {0x60, 0x00}, //not used
+    {0x23, 0x10, 0x00, 0x00}, //not used
+    {0x07, 0x80, 0x00, 0x06, 0x05, 0x07},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00}, //not used
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //not used
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+static ap_nvram_btradio_struct stBtDefault_8163 =
+{
+    {0x00, 0x00, 0x46, 0x81, 0x63, 0x01},
+    {0x60, 0x00}, //not used
+    {0x23, 0x10, 0x00, 0x00}, //not used
+    {0x07, 0x80, 0x00, 0x06, 0x05, 0x07},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00}, //not used
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //not used
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+static ap_nvram_btradio_struct stBtDefault_8590 =
+{
+    {0x00, 0x00, 0x46, 0x85, 0x90, 0x01},
+    {0x60, 0x00}, //not used
+    {0x23, 0x10, 0x00, 0x00}, //not used
+    {0x07, 0x80, 0x00, 0x06, 0x05, 0x07},
+    {0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04},
+    {0x80, 0x00}, //not used
+    {0xFF, 0xFF, 0xFF},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //not used
+    ///////////// Reserved /////////////
+    {0x00, 0x00},
+    {0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_BWCS_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_BWCS_Default.h
new file mode 100644
index 0000000..9c1dde7
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_BWCS_Default.h
@@ -0,0 +1,141 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_BWCS_Default.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    give the default BT/WiFi co-existence config data.
+ *
+ * Author:
+ * -------
+ *  Saker Hsia(MTK02327) 
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 06 30 2010 saker.hsia
+ * [ALPS00002764][Need Patch] [Volunteer Patch] ALPS.10X.W10.28 Volunteer patch for BWCS NVRAM customization 
+ * .
+ *
+ * 05 16 2010 saker.hsia
+ * [ALPS00001913][BWCS] BT WiFi Single Antenna Feature check in Android 2.1 
+ * .
+ *
+ * 05 14 2010 saker.hsia
+ * [ALPS00001913][BWCS] BT WiFi Single Antenna Feature check in Android 2.1 
+ * .
+ *
+ * 05 05 2010 saker.hsia
+ * [ALPS00001913][BWCS] BT WiFi Single Antenna Feature check in Android 2.1 
+ * Check in BT/WiFi Single Antenna Feature
+ *
+ *******************************************************************************/
+#ifndef _CFG_BWCS_D_H
+#define _CFG_BWCS_D_H
+#include "inc/bwcs_custom.h"
+ap_nvram_bwcs_config_struct stBWCSConfigDefault =
+{
+    /* Real Time RSSI Threshold : BT / WIFI1 / WIFI2 */
+    {RT_RSSI_TH_BT, RT_RSSI_TH_WIFI1, RT_RSSI_TH_WIFI2}
+    ,
+    /* Non Real Time RSSI Threshold : BT / WIFI1 / WIFI2 */
+    {NRT_RSSI_TH_BT, NRT_RSSI_TH_WIFI1, NRT_RSSI_TH_WIFI2}
+    ,
+    /* Antenna path compensation */
+    ANT_PATH_COMP
+    ,
+    /* antenna path switch protection period, Unit is seconds */
+    ANT_SWITCH_PROT_TIME
+    ,
+    /* TX Flow control : medium time / period time */
+    WIFI_TX_FLOW_CTRL
+    ,
+    /* BT RX Range : Low / High */
+    BT_RX_RANGE
+    ,
+    /* BT TX power : WIFI OFF / WIFI SCO / WIFI ACL */
+    {BT_TX_PWR_WIFI_OFF, BT_TX_PWR_SCO, BT_TX_PWR_ACL}
+    ,
+    /* Reserved                     ,  5 */
+    RESERVED
+};
+#endif /* _CFG_BWCS_D_H */
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_Custom1_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_Custom1_Default.h
new file mode 100644
index 0000000..797542c
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_Custom1_Default.h
@@ -0,0 +1,9 @@
+#ifndef _CFG_CUSTOM1_D_H
+#define _CFG_CUSTOM1_D_H
+
+File_Custom1_Struct stCustom1Default =
+{
+	1
+};
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_EXT_MDTYPE_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_EXT_MDTYPE_Default.h
new file mode 100644
index 0000000..7d43b33
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_EXT_MDTYPE_Default.h
@@ -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) 2012
+*
+*  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:
+ * ---------
+ *   CFG_EXT_MDTYPE_Default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ *   EXT Modem Type NVRAM Default value.
+ *
+ * Author:
+ * -------
+ *   AP Wang (mtk05304)
+ *
+ *
+ * ==========================================================================
+ * $Log$
+ ****************************************************************************/
+#ifndef _CFG_EXT_MDTYPE_D_H
+#define _CFG_EXT_MDTYPE_D_H
+
+#include "cfgfileinc/CFG_EXT_MDTYPE_File.h"
+
+ext_md_type_struct stEXTMDTypeDefault =
+{
+    4,
+    0
+};
+#endif /* _CFG_EXT_MDTYPE_D_H */
+
+ 
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_GPS_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_GPS_Default.h
new file mode 100644
index 0000000..4a32f10
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_GPS_Default.h
@@ -0,0 +1,89 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_GPS_Default.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    give the default GPS config data.
+ *
+ * Author:
+ * -------
+ *  Mike Chang(MTK02063) 
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 06 24 2010 yunchang.chang
+ * [ALPS00002677][Need Patch] [Volunteer Patch] ALPS.10X.W10.26 Volunteer patch for GPS customization use NVRam 
+ * .
+ *
+ *******************************************************************************/
+#ifndef _CFG_GPS_D_H
+#define _CFG_GPS_D_H
+ap_nvram_gps_config_struct stGPSConfigDefault =
+{
+    /* if chip detector say it's not 3332 use /dev/stpgps,else use /ttyMT1 */
+    {'/','d','e','v','/','s','t','p','g','p','s',0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
+    /* 0:s/w, 1:none, 2:h/w */
+    1,
+    
+    /* 26MHz */
+    26000000,
+    /* default is 0ppm, by chip definetion. 6620 is 500, else 2000 */
+	0,
+    /* 0:16.368MHz TCXO */
+    0xFF,
+    /* 0:mixer-in, 1:internal-LNA, 6572/6582 dsp hardcode set this item to 1, only for 3332 one binary */
+    0,
+    /* sbas:0:none */
+    0,
+    0,
+    0,
+    0,
+    0
+};
+#endif /* _CFG_GPS_D_H */
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_MDMODE_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_MDMODE_Default.h
new file mode 100644
index 0000000..50c1bbb
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_MDMODE_Default.h
@@ -0,0 +1,108 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_MDMODE_Default.h
+ *
+ * Project:
+ * --------
+ *   MiFi
+ *
+ * Description:
+ * ------------
+ *    header file of META CFG file default value
+ *
+ * Author:
+ * -------
+ *   MTK02065(Shane Chang)
+ *
+ * 
+ *
+ *******************************************************************************/
+
+
+#ifndef _CFG_MDMODE_H
+#define _CFG_MDMODE_H
+
+///#include "../cfgfileinc/CFG_MDMODE_File.h"
+
+// the default value of bt nvram file
+MDMODE_CFG_Struct stMDMODEDefualt =
+{
+	{'T', 'D', 'D'},
+};
+
+#endif
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_MDTYPE_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_MDTYPE_Default.h
new file mode 100644
index 0000000..5e0fb41
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_MDTYPE_Default.h
@@ -0,0 +1,71 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_MDTYPE_Default.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    give the default sim switch mode data.
+ *
+ * Author:
+ * -------
+ *  Haow Wang(MTK81183) 
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ * .
+ *
+ *******************************************************************************/
+#ifndef _CFG_MDTYPE_D_H
+#define _CFG_MDTYPE_D_H
+
+#include "cfgfileinc/CFG_MDTYPE_File.h"
+
+md_type_struct stMDTypeDefault =
+{
+    0
+};
+#endif /* _CFG_SSW_D_H */
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_MD_SBP_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_MD_SBP_Default.h
new file mode 100644
index 0000000..9ddd604
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_MD_SBP_Default.h
@@ -0,0 +1,71 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_MD_SBP_Default.h
+ *
+ * Project:
+ * --------
+ *   KK
+ *
+ * Description:
+ * ------------
+ *    give the default md SBP config data.
+ *
+ * Author:
+ * -------
+ *  Jue Zhou(mtk80024) 
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * .
+ *
+ *******************************************************************************/
+#ifndef _CFG_MD_SBP_D_H
+#define _CFG_MD_SBP_D_H
+
+MD_SBP_Struct stMDSBPConfigDefault =
+{
+    0, 1, 0, 1, 0, 1
+};
+#endif /* _CFG_MD_SBP_D_H */
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_OMADMUSB_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_OMADMUSB_Default.h
new file mode 100644
index 0000000..b49b0d0
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_OMADMUSB_Default.h
@@ -0,0 +1,110 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_OMADMUSB_Default.h
+ *
+ * Project:
+ * --------
+ *   YUSU
+ *
+ * Description:
+ * ------------
+ *    Default value of OMADM usb config
+ *
+ * Author:
+ * -------
+ *   MTK80863(Hao Lin)
+ *
+ * 
+ *
+ *******************************************************************************/
+
+
+#ifndef _CFG_OMADMUSB_DEFAULT_H
+#define _CFG_OMADMUSB_DEFAULT_H
+
+// the default value of OMADM usb nvram file
+OMADMUSB_CFG_Struct stOMADMUSBDefualt =
+{
+    1,
+    1,
+    1,
+    0,
+};
+
+
+#endif
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_PRODUCT_INFO_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_PRODUCT_INFO_Default.h
new file mode 100644
index 0000000..da39792
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_PRODUCT_INFO_Default.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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_PRODUCT_INFO_Default.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    give the default PRODUCT_INFO config data.
+ *
+ * Author:
+ * -------
+ *  Yuchi Xu(MTK81073) 
+ *
+ *------------------------------------------------------------------------------
+ 
+ *******************************************************************************/
+#ifndef _CFG_PRODUCT_INFO_D_H
+#define _CFG_PRODUCT_INFO_D_H
+
+PRODUCT_INFO stPRODUCT_INFOConfigDefault =
+{
+    /* barcode */
+    /*{*/0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0/*}*/,
+    /* IMEI*/
+    /*{*//*{*/0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0/*}*/,0x0,0x0,
+     /*{*/0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0/*}*/,0x0,0x0,
+     /*{*/0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0/*}*/,0x0,0x0,
+     /*{*/0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0/*}*/,0x0,0x0/*}*/,
+    /* reserved */
+    /*{*/0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /*1*/
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /*6*/
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /*11*/
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /*16*/
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /*21*/
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /*26*/
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00/*}*/
+    
+};
+#endif /* _CFG_PRODUCT_INFO_D_H */
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_SDIO_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_SDIO_Default.h
new file mode 100644
index 0000000..2b8a7ae
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_SDIO_Default.h
@@ -0,0 +1,74 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_SDIO_Default.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    give the default SDIO config data.
+ *
+ * Author:
+ * -------
+ *  Juju Sung(MTK04314) 
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * .
+ *
+ *******************************************************************************/
+#ifndef _CFG_SDIO_D_H
+#define _CFG_SDIO_D_H
+ap_nvram_sdio_config_struct stSDIOConfigDefault =
+{
+    0, 
+    /*1--2--3--4--5--6--7--8--9-10-11-12-13-14-15-16-17-17-19*/ 
+    {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
+    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    /* 4074 zero */
+    {0},
+};
+#endif /* _CFG_GPS_D_H */
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_SIM_CONFIG_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_SIM_CONFIG_Default.h
new file mode 100644
index 0000000..6a5f5dc
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_SIM_CONFIG_Default.h
@@ -0,0 +1,112 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   cfg_sim_config_default.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    header file of UART default config
+ *
+ * Author:
+ * -------
+ *    LiWen (MTK02556)
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ *    mtk02556
+ * [DUMA00128675] [NVRAM] Add NVRAM SIM struct
+ * NVRAM SIM add default value struct
+ *
+ *
+ *******************************************************************************/
+
+#ifndef _CFG_SIM_CONFIG_DEFAULT_H
+#define _CFG_SIM_CONFIG_DEFAULT_H
+
+ap_nvram_uart_config_struct stSIMConfigDefault =
+{		
+    {1}
+};
+
+#endif //_CFG_SIM_CONFIG_DEFAULT_H
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_UART_Config_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_UART_Config_Default.h
new file mode 100644
index 0000000..7be143d
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_UART_Config_Default.h
@@ -0,0 +1,118 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   cfg_uart_config_default.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    header file of UART default config
+ *
+ * Author:
+ * -------
+ *    LiChunhui (MTK80143)
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * Apr 10 2009 mtk80306
+ * [DUMA00114160] daily build error
+ * remove the include path.
+ *
+ * Mar 24 2009 mtk80143
+ * [DUMA00112375] [uart] UART EM mode
+ * Add for UART EM mode
+ *
+ *
+ *******************************************************************************/
+
+#ifndef _CFG_UART_CONFIG_DEFAULT_H
+#define _CFG_UART_CONFIG_DEFAULT_H
+
+///#include "cfgfileinc/CFG_UART_File.h"
+
+ap_nvram_uart_config_struct stUARTConfigDefault =
+{		
+    {0x01,0x0,0x0,0x0}
+};
+
+#endif
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_WIFI_Default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_WIFI_Default.h
new file mode 100644
index 0000000..169d679
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/CFG_WIFI_Default.h
@@ -0,0 +1,302 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   cfg_wifi_default.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    give the default MT5921 config data.
+ *
+ * Author:
+ * -------
+ *   Renbang (MTK80150) 06/08/2009
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 09 26 2011 cp.wu
+ * [ALPS00070736] MT6573¤W­±ªº Wifi ©w¨î¤Æ»Ý¨D
+ * update default value for regularity domain fields.
+ *
+ * 05 31 2011 cp.wu
+ * [ALPS00050349] [Need Patch] [Volunteer Patch][MT6620 Wi-Fi][Driver] Add band edge tx power control to Wi-Fi NVRAM
+ * adjust default TX power to 20dB(CCK) and 18dB(OFDM/HT20).
+ *
+ * 05 26 2011 cp.wu
+ * [ALPS00050349] [Need Patch] [Volunteer Patch][MT6620 Wi-Fi][Driver] Add band edge tx power control to Wi-Fi NVRAM
+ * update Wi-Fi NVRAM definition for band edge tx power control.
+ *
+ * 04 19 2011 cp.wu
+ * [ALPS00041285] [Need Patch] [Volunteer Patch][MT6620 Wi-Fi] Merge MT6620 Wi-Fi into mt6575_evb project
+ * 1. update init.rc for normal boot/meta/factory for MT6620 Wi-Fi related part.
+ * 2. update NVRAM structure definition and default value for MT6620 Wi-Fi
+ *
+ * 11 05 2010 renbang.jiang
+ * [ALPS00134025] [Wi-Fi] move Wi-Fi NVRAM definition source file to project folder from common folder
+ * .
+ *
+ * 11 05 2010 renbang.jiang
+ * [ALPS00134025] [Wi-Fi] move Wi-Fi NVRAM definition source file to project folder from common folder
+ * .
+ *
+ * 07 10 2010 renbang.jiang
+ * [ALPS00121785][Need Patch] [Volunteer Patch] use NVRAM to save Wi-Fi custom data 
+ * .
+ *
+ *    mtk80150
+ * [DUMA00131389] [wifi] enable MT5921 NVRAM
+ * Enable Daisy Chain in default setting
+ *
+ * Jul 9 2009 mtk80306
+ * [DUMA00122953] optimize nvram and change meta clean boot flag.
+ * 
+ * 
+ *
+ *******************************************************************************/
+
+
+
+#ifndef _CFG_WIFI_D_H
+#define _CFG_WIFI_D_H
+
+#if !defined(MT6628)
+#define MT6628
+#endif
+
+#include "../cfgfileinc/CFG_Wifi_File.h"
+#include "../inc/wifi_custom.h"
+// the default value of Wi-Fi nvram file
+
+#if defined(MT6628)
+WIFI_CFG_PARAM_STRUCT stWifiCfgDefault =
+{
+	0x0104, /* Own Version For MT6628*/
+	0x0000, /* Peer Version */
+	/*{*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /*}*/, /* MAC ADDRESS */
+	/*{*/ 0x00, 0x00 /*}*/, /* COUNTRY CODE */
+	/*{*/ 0x26, 0x26, 0x00, 0x00, /*cTxPwr2G4Cck*/ /*cTxPwr2G4Dsss*/
+	  0x22, 0x22, 0x22, 0x22, 0x21, 0x21, /*cTxPwr2G4OFDM*/
+      0x22, 0x22, 0x22, 0x20, 0x20, 0x20, /*cTxPwr2G4HT20*/
+	  0x21, 0x21, 0x21, 0x1E, 0x1E, 0x1E, /*cTxPwr2G4HT40*/
+      0x22, 0x22, 0x22, 0x22, 0x22, 0x22, /*cTxPwr5GOFDM*/
+	  0x22, 0x22, 0x22, 0x20, 0x20, 0x20, /*cTxPwr5GHT20*/
+      0x22, 0x22, 0x22, 0x20, 0x20, 0x20 /*}*/, /*cTxPwr5GHT40*/ /* TX_PWR_PARAM_T */
+    /*{*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x18, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /*}*/, /* aucEFUSE */
+	  0x01, // TX_PWR_PARAM_T is VALID
+	  0x01, // 5G band is supported
+	  0x01, // 2.4GHz band edge power enabled
+	  0x26, // cBandEdgeMaxPwrCCK
+	  0x1E, // cBandEdgeMaxPwrOFDM20
+	  0x1A, // cBandEdgeMaxPwrOFDM40
+	  0x00, // ucRegChannelListMap
+	  0x00, // ucRegChannelListIndex
+  /*{*/ 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00/*}*/, /* aucRegSubbandInfo */
+    /*{*/	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /*}*/,/* aucReserved2 */
+  	
+    0x0001, /* Own Version */
+	  0x0000, /* Peer Version */
+	0x0, /* uc2G4BwFixed20M */
+	0x0, /* uc5GBwFixed20M */
+	0x1, /* ucEnable5GBand */
+	0x0, /* aucPReTailReserved */
+  /*{*/ 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*}*/	/* aucTailReserved */
+};
+
+#elif defined(MT5931)
+WIFI_CFG_PARAM_STRUCT stWifiCfgDefault =
+{
+	0x0104, /* Own Version For MT5931*/
+	0x0000, /* Peer Version */
+	/*{*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /*}*/, /* MAC ADDRESS */
+	/*{*/ 0x00, 0x00 /*}*/, /* COUNTRY CODE */
+	/*{*/ 0x26, 0x26, /*{*/ 0x00, 0x00 /*}*/,
+	  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, /*cTxPwr2G4OFDM*/
+      0x20, 0x20, 0x20, 0x20, 0x20, 0x20, /*cTxPwr2G4HT20*/
+	  0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, /*cTxPwr2G4HT40*/
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*cTxPwr5GOFDM*/
+	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*cTxPwr5GHT20*/
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /*}*/, /*cTxPwr5GHT40*/ /* TX_PWR_PARAM_T */
+    /*{*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /*}*/, /* aucEFUSE */
+	  0x01, // TX_PWR_PARAM_T is VALID
+	  0x00, // 5G band is unsupported
+	  0x00, // 2.4GHz band edge power disabled
+	  0x26, // cBandEdgeMaxPwrCCK
+	  0x20, // cBandEdgeMaxPwrOFDM20
+	  0x1C, // cBandEdgeMaxPwrOFDM40
+  /*{*/ 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /*}*/,	/* aucReserved2 */
+  	
+    0x0001, /* Own Version */
+	  0x0000, /* Peer Version */
+		0x0,
+		0x0,
+		0x0,
+		0x0,
+  /*{*/ 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*},*/	/* aucTailReserved */
+};
+#else // for 6620
+WIFI_CFG_PARAM_STRUCT stWifiCfgDefault =
+{
+	0x0103, /* Own Version */
+	0x0000, /* Peer Version */
+	/*{*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /*}*/, /* MAC ADDRESS */
+	/*{*/ 0x00, 0x00 /*}*/, /* COUNTRY CODE */
+	/*{*/ 0x28, /*{*/ 0x00, 0x00, 0x00 /*}*/,
+	  0x24, 0x24, 0x24, 0x24,
+	  0x24, 0x24, 0x24, 0x24,
+	  0x24, 0x24, 0x24, 0x24,
+	  0x20, 0x20, 0x20, 0x20,
+	  0x20, 0x20, 0x1A, 0x1A,
+	  0x1A, 0x1A, 0x1A, 0x1A,
+	  0x1A, 0x1A, 0x1A, 0x1A,
+	  0x1A, 0x1A, 0x1A, 0x1A,
+	  0x1A, 0x1A, 0x1A, 0x1A /*}*/, /* TX_PWR_PARAM_T */
+    /*{*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /*}*/, /* aucEFUSE */
+	  0x01, // TX_PWR_PARAM_T is VALID
+	  0x00, // 5G band is unsupported
+	  0x00, // 2.4GHz band edge power disabled
+	  0x00,
+	  0x00,
+	  0x00,
+      0x00,
+      0x00,
+  /*{*/ 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00 /*}*/,
+
+  /*{*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /*}*/, /* aucReserved2 */
+    
+    0x0001, /* Own Version */
+	  0x0000, /* Peer Version */
+		0x0,
+		0x0,
+		0x0,
+		0x0,
+  /*{*/ 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*},*/	/* aucTailReserved */
+};
+#endif
+
+
+WIFI_CUSTOM_PARAM_STRUCT stWifiCustomDefault =
+{
+    0x0, // Reserved
+};
+
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_acf_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_acf_default.h
new file mode 100644
index 0000000..8d4b3c8
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_acf_default.h
@@ -0,0 +1,365 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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_acf_default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related parameters or definition.
+ *
+ * Author:
+ * -------
+ * Tina Tsai
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 04 22 2013 kh.hung
+ * [ALPS00580843] [MT6572tdv1_phone[lca]][music][Symbio][Free test] ­µ?¼½©ñ¾¹¼½©ñ­µ?ªº?­µ?¤j?¤p¡A¤£?©w
+ * Use default DRC setting.
+ * 
+ * Review: http://mtksap20:8080/go?page=NewReview&reviewid=59367
+ *
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_ACF_DEFAULT_H
+#define AUDIO_ACF_DEFAULT_H
+#if defined(MTK_AUDIO_BLOUD_CUSTOMPARAMETER_V5)
+/* Compensation Filter HSF coeffs: default all pass filter       */
+    /* BesLoudness also uses this coeffs    */ 
+#define BES_LOUDNESS_ACF_L_HPF_FC       400
+#define BES_LOUDNESS_ACF_L_HPF_ORDER    2
+#define BES_LOUDNESS_ACF_L_BPF_FC       4000, 500, 2000, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_ACF_L_BPF_BW       1421, 284, 1421, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_ACF_L_BPF_GAIN     6 << 8, -6 << 8, 6 << 8, 0 << 8, 0 << 8, 0 << 8, 0 << 8, 0 << 8
+#define BES_LOUDNESS_ACF_L_LPF_FC       0
+#define BES_LOUDNESS_ACF_L_LPF_ORDER    0
+#define BES_LOUDNESS_ACF_R_HPF_FC       400
+#define BES_LOUDNESS_ACF_R_HPF_ORDER    2
+#define BES_LOUDNESS_ACF_R_BPF_FC       4000, 500, 2000, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_ACF_R_BPF_BW       1421, 284, 1421, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_ACF_R_BPF_GAIN     6 << 8, -6 << 8, 6 << 8, 0 << 8, 0 << 8, 0 << 8, 0 << 8, 0 << 8
+#define BES_LOUDNESS_ACF_R_LPF_FC       0
+#define BES_LOUDNESS_ACF_R_LPF_ORDER    0
+	
+#define BES_LOUDNESS_ACF_SEP_LR_FILTER  0
+
+#define BES_LOUDNESS_ACF_WS_GAIN_MAX    0
+#define BES_LOUDNESS_ACF_WS_GAIN_MIN    0
+#define BES_LOUDNESS_ACF_FILTER_FIRST   0
+
+#define BES_LOUDNESS_ACF_NUM_BANDS      0
+#define BES_LOUDNESS_ACF_FLT_BANK_ORDER 0
+#define BES_LOUDNESS_ACF_DRC_DELAY      0
+#define BES_LOUDNESS_ACF_CROSSOVER_FREQ 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_ACF_SB_MODE        0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_ACF_SB_GAIN        0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_ACF_GAIN_MAP_IN    \
+        0, 0, 0, 0, 0,                  \
+        0, 0, 0, 0, 0,                  \
+        0, 0, 0, 0, 0,                  \
+        0, 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 BES_LOUDNESS_ACF_GAIN_MAP_OUT   \
+        0, 0, 0, 0, 0,                  \
+        0, 0, 0, 0, 0,                  \
+        0, 0, 0, 0, 0,                  \
+        0, 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 BES_LOUDNESS_ACF_ATT_TIME       \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        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 BES_LOUDNESS_ACF_REL_TIME       \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        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 BES_LOUDNESS_ACF_HYST_TH        \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        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 BES_LOUDNESS_ACF_LIM_TH     0
+#define BES_LOUDNESS_ACF_LIM_GN     0
+#define BES_LOUDNESS_ACF_LIM_CONST  0
+#define BES_LOUDNESS_ACF_LIM_DELAY  0
+
+#elif defined(MTK_AUDIO_BLOUD_CUSTOMPARAMETER_V4)              
+/* Compensation Filter HSF coeffs: default all pass filter       */
+    /* BesLoudness also uses this coeffs    */ 
+    #define BES_LOUDNESS_HSF_COEFF \
+    0x07DA170A, 0xF054253E, 0x07D1C95A, 0x7D56C298, 0x00000000, \
+	0x07D6C2CB, 0xF05B867E, 0x07CDBD5F, 0x7D19C2D2, 0x00000000, \
+	0x07C751CE, 0xF07DBC74, 0x07BAFE49, 0x7BFFC3DA, 0x00000000, \
+	0x07B4AD39, 0xF0A6FF56, 0x07A46981, 0x7AA6C515, 0x00000000, \
+	0x07AE1CEE, 0xF0B5836A, 0x079C79B2, 0x7A2CC583, 0x00000000, \
+	0x078FC91E, 0xF0F882BF, 0x0777E4C0, 0x77F1C777, 0x00000000, \
+	0x076B705A, 0xF148A5E6, 0x074C3E63, 0x7538C9C0, 0x00000000, \
+	0x075EB726, 0xF164A91C, 0x073D0346, 0x7441CA88, 0x00000000, \
+	0x07247309, 0xF1E4AE1A, 0x06F7957D, 0x6FC0CE05, 0x00000000, \
+\
+	0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 
+   
+
+    /* Compensation Filter BPF coeffs: default all pass filter      */ 
+    #define BES_LOUDNESS_BPF_COEFF \
+    0x3FD481A8,0x3EFF7E57,0xC12C0000, \ 
+    0x3FD081DA,0x3EE97E25,0xC1460000, \ 
+    0x3FBE82D7,0x3E817D28,0xC1C00000, \ 
+    0x3FA98440,0x3E037BBF,0xC2520000, \ 
+    0x3FA184CE,0x3DD77B31,0xC2860000, \ 
+    0x3F7E87BD,0x3D0C7842,0xC3740000, \ 
+\
+    0x3FD481C0,0x3EFF7E3F,0xC12C0000, \ 
+    0x3FD081F5,0x3EE97E0A,0xC1460000, \ 
+    0x3FBE830B,0x3E817CF4,0xC1C00000, \ 
+    0x3FA9849C,0x3E037B63,0xC2520000, \ 
+    0x3FA1853A,0x3DD77AC5,0xC2860000, \ 
+    0x3F7E8889,0x3D0C7776,0xC3740000, \
+\
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+\    
+ 	0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \         
+\    
+ 	0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \     
+\    
+ 	0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \         
+\    
+ 	0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \         
+\
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000, \ 
+    0x40000000,0x00000000,0x00000000     
+    
+    #define BES_LOUDNESS_LPF_COEFF \
+    0x40000000, 0x00000000, 0x00000000,\ 
+	0x40000000, 0x00000000, 0x00000000,\ 
+	0x40000000, 0x00000000, 0x00000000,\ 
+	0x40000000, 0x00000000, 0x00000000,\ 
+	0x40000000, 0x00000000, 0x00000000,\ 
+	0x40000000, 0x00000000, 0x00000000 
+
+    #define BES_LOUDNESS_WS_GAIN_MAX  0x399A
+           
+    #define BES_LOUDNESS_WS_GAIN_MIN  0x2666
+           
+    #define BES_LOUDNESS_FILTER_FIRST  0
+           
+    #define BES_LOUDNESS_GAIN_MAP_IN \
+    -45, -35, -19, -18,  0
+   
+    #define BES_LOUDNESS_GAIN_MAP_OUT \            
+    0, 12, 12, 12, 0
+
+	#define BES_LOUDNESS_ATT_TIME	164
+	#define BES_LOUDNESS_REL_TIME	16400
+#else
+	 /* Compensation Filter HSF coeffs: default all pass filter       */
+    /* BesLoudness also uses this coeffs    */ 
+    #define BES_LOUDNESS_HSF_COEFF \
+    0x7DA1709,0xF054253E,0x7D1C95A,0x7D56C298, \
+    0x7D6C2CA,0xF05B867F,0x7CDBD5F,0x7D19C2D1, \
+    0x7C751CD,0xF07DBC74,0x7BAFE48,0x7BFEC3DA, \
+    0x7B4AD39,0xF0A6FF57,0x7A46980,0x7AA5C515, \
+    0x7AE1CEE,0xF0B5836B,0x79C79B1,0x7A2BC583, \
+    0x78FC91E,0xF0F882BF,0x777E4BF,0x77F0C777, \
+    0x76B705A,0xF148A5E6,0x74C3E63,0x7537C9BF, \
+    0x75EB726,0xF164A91C,0x73D0346,0x7440CA88, \
+    0x7247308,0xF1E4AE1B,0x6F7957D,0x6FC0CE05   
+
+    /* Compensation Filter BPF coeffs: default all pass filter      */ 
+    #define BES_LOUDNESS_BPF_COEFF \
+    0x3FD481A8,0x3EFF7E57,0xC12C0000, \ 
+    0x3FD081DA,0x3EE97E25,0xC1460000, \ 
+    0x3FBE82D7,0x3E817D28,0xC1C00000, \ 
+    0x3FA98440,0x3E037BBF,0xC2520000, \ 
+    0x3FA184CE,0x3DD77B31,0xC2860000, \ 
+    0x3F7E87BD,0x3D0C7842,0xC3740000, \ 
+\
+    0x3FD481C0,0x3EFF7E3F,0xC12C0000, \ 
+    0x3FD081F5,0x3EE97E0A,0xC1460000, \ 
+    0x3FBE830B,0x3E817CF4,0xC1C00000, \ 
+    0x3FA9849C,0x3E037B63,0xC2520000, \ 
+    0x3FA1853A,0x3DD77AC5,0xC2860000, \ 
+    0x3F7E8889,0x3D0C7776,0xC3740000, \ 
+\
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+\
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0       
+    
+    #define BES_LOUDNESS_DRC_FORGET_TABLE \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000   
+
+    #define BES_LOUDNESS_WS_GAIN_MAX  0
+           
+    #define BES_LOUDNESS_WS_GAIN_MIN  0
+           
+    #define BES_LOUDNESS_FILTER_FIRST  0
+           
+    #define BES_LOUDNESS_GAIN_MAP_IN \
+    0, 0, 0, 0,  0
+              
+    #define BES_LOUDNESS_GAIN_MAP_OUT \            
+    0, 0, 0, 0, 0   
+#endif
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_acfsub_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_acfsub_default.h
new file mode 100644
index 0000000..f498a0a
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_acfsub_default.h
@@ -0,0 +1,284 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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_acf_default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related parameters or definition.
+ *
+ * Author:
+ * -------
+ * Tina Tsai
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 04 22 2013 kh.hung
+ * [ALPS00580843] [MT6572tdv1_phone[lca]][music][Symbio][Free test] ­µ?¼½©ñ¾¹¼½©ñ­µ?ªº?­µ?¤j?¤p¡A¤£?©w
+ * Use default DRC setting.
+ *
+ * Review: http://mtksap20:8080/go?page=NewReview&reviewid=59367
+ *
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_ACFSUB_DEFAULT_H
+#define AUDIO_ACFSUB_DEFAULT_H
+#if 1//defined(MTK_AUDIO_BLOUD_CUSTOMPARAMETER_V4)              
+/* Compensation Filter HSF coeffs: default all pass filter       */
+/* BesLoudness also uses this coeffs    */
+#define BES_LOUDNESS_HSF_COEFF_SUB \
+    0x07DA170A, 0xF054253E, 0x07D1C95A, 0x7D56C298, 0x00000000, \
+    0x07D6C2CB, 0xF05B867E, 0x07CDBD5F, 0x7D19C2D2, 0x00000000, \
+    0x07C751CE, 0xF07DBC74, 0x07BAFE49, 0x7BFFC3DA, 0x00000000, \
+    0x07B4AD39, 0xF0A6FF56, 0x07A46981, 0x7AA6C515, 0x00000000, \
+    0x07AE1CEE, 0xF0B5836A, 0x079C79B2, 0x7A2CC583, 0x00000000, \
+    0x078FC91E, 0xF0F882BF, 0x0777E4C0, 0x77F1C777, 0x00000000, \
+    0x076B705A, 0xF148A5E6, 0x074C3E63, 0x7538C9C0, 0x00000000, \
+    0x075EB726, 0xF164A91C, 0x073D0346, 0x7441CA88, 0x00000000, \
+    0x07247309, 0xF1E4AE1A, 0x06F7957D, 0x6FC0CE05, 0x00000000, \
+    \
+    0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+    0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+    0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+    0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+    0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+    0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+    0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+    0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+    0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+
+
+/* Compensation Filter BPF coeffs: default all pass filter      */
+#define BES_LOUDNESS_BPF_COEFF_SUB \
+    0x3FD481A8,0x3EFF7E57,0xC12C0000, \
+    0x3FD081DA,0x3EE97E25,0xC1460000, \
+    0x3FBE82D7,0x3E817D28,0xC1C00000, \
+    0x3FA98440,0x3E037BBF,0xC2520000, \
+    0x3FA184CE,0x3DD77B31,0xC2860000, \
+    0x3F7E87BD,0x3D0C7842,0xC3740000, \
+    \
+    0x3FD481C0,0x3EFF7E3F,0xC12C0000, \
+    0x3FD081F5,0x3EE97E0A,0xC1460000, \
+    0x3FBE830B,0x3E817CF4,0xC1C00000, \
+    0x3FA9849C,0x3E037B63,0xC2520000, \
+    0x3FA1853A,0x3DD77AC5,0xC2860000, \
+    0x3F7E8889,0x3D0C7776,0xC3740000, \
+    \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000, \
+    0x40000000,0x00000000,0x00000000
+
+#define BES_LOUDNESS_LPF_COEFF_SUB \
+    0x40000000, 0x00000000, 0x00000000,\
+    0x40000000, 0x00000000, 0x00000000,\
+    0x40000000, 0x00000000, 0x00000000,\
+    0x40000000, 0x00000000, 0x00000000,\
+    0x40000000, 0x00000000, 0x00000000,\
+    0x40000000, 0x00000000, 0x00000000
+
+#define BES_LOUDNESS_WS_GAIN_MAX_SUB  0x399A
+
+#define BES_LOUDNESS_WS_GAIN_MIN_SUB  0x2666
+
+#define BES_LOUDNESS_FILTER_FIRST_SUB  0
+
+#define BES_LOUDNESS_GAIN_MAP_IN_SUB \
+    -45, -35, -19, -18,  0
+
+#define BES_LOUDNESS_GAIN_MAP_OUT_SUB \
+    0, 12, 12, 12, 0
+
+#define BES_LOUDNESS_ATT_TIME_SUB   164
+#define BES_LOUDNESS_REL_TIME_SUB   16400
+#else
+/* Compensation Filter HSF coeffs: default all pass filter       */
+/* BesLoudness also uses this coeffs    */
+#define BES_LOUDNESS_HSF_COEFF \
+    0x7DA1709,0xF054253E,0x7D1C95A,0x7D56C298, \
+    0x7D6C2CA,0xF05B867F,0x7CDBD5F,0x7D19C2D1, \
+    0x7C751CD,0xF07DBC74,0x7BAFE48,0x7BFEC3DA, \
+    0x7B4AD39,0xF0A6FF57,0x7A46980,0x7AA5C515, \
+    0x7AE1CEE,0xF0B5836B,0x79C79B1,0x7A2BC583, \
+    0x78FC91E,0xF0F882BF,0x777E4BF,0x77F0C777, \
+    0x76B705A,0xF148A5E6,0x74C3E63,0x7537C9BF, \
+    0x75EB726,0xF164A91C,0x73D0346,0x7440CA88, \
+    0x7247308,0xF1E4AE1B,0x6F7957D,0x6FC0CE05
+
+/* Compensation Filter BPF coeffs: default all pass filter      */
+#define BES_LOUDNESS_BPF_COEFF \
+    0x3FD481A8,0x3EFF7E57,0xC12C0000, \
+    0x3FD081DA,0x3EE97E25,0xC1460000, \
+    0x3FBE82D7,0x3E817D28,0xC1C00000, \
+    0x3FA98440,0x3E037BBF,0xC2520000, \
+    0x3FA184CE,0x3DD77B31,0xC2860000, \
+    0x3F7E87BD,0x3D0C7842,0xC3740000, \
+    \
+    0x3FD481C0,0x3EFF7E3F,0xC12C0000, \
+    0x3FD081F5,0x3EE97E0A,0xC1460000, \
+    0x3FBE830B,0x3E817CF4,0xC1C00000, \
+    0x3FA9849C,0x3E037B63,0xC2520000, \
+    0x3FA1853A,0x3DD77AC5,0xC2860000, \
+    0x3F7E8889,0x3D0C7776,0xC3740000, \
+    \
+    0x0,0x0,0x0, \
+    0x0,0x0,0x0, \
+    0x0,0x0,0x0, \
+    0x0,0x0,0x0, \
+    0x0,0x0,0x0, \
+    0x0,0x0,0x0, \
+    \
+    0x0,0x0,0x0, \
+    0x0,0x0,0x0, \
+    0x0,0x0,0x0, \
+    0x0,0x0,0x0, \
+    0x0,0x0,0x0, \
+    0x0,0x0,0x0
+
+#define BES_LOUDNESS_DRC_FORGET_TABLE \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000
+
+#define BES_LOUDNESS_WS_GAIN_MAX  0
+
+#define BES_LOUDNESS_WS_GAIN_MIN  0
+
+#define BES_LOUDNESS_FILTER_FIRST  0
+
+#define BES_LOUDNESS_GAIN_MAP_IN \
+    0, 0, 0, 0,  0
+
+#define BES_LOUDNESS_GAIN_MAP_OUT \
+    0, 0, 0, 0, 0
+#endif
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_audenh_control_option.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_audenh_control_option.h
new file mode 100644
index 0000000..3feb056
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_audenh_control_option.h
@@ -0,0 +1,45 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
+ * the prior written permission of MediaTek inc. and/or its licensors, any
+ * reproduction, modification, use or disclosure of MediaTek Software, and
+ * information contained herein, in whole or in part, shall be strictly
+ * prohibited.
+ * 
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ * 
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ * 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 RECEIVER AGREES
+ * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+ * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+ * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
+ * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
+ * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek
+ * Software") have been modified by MediaTek Inc. All revisions are subject to
+ * any receiver's applicable license agreements with MediaTek Inc.
+ */
+
+#ifndef AUDIO_AUDENH_CONTROL_OPTION_CUSTOM_H
+#define AUDIO_AUDENH_CONTROL_OPTION_CUSTOM_H
+
+
+
+#define DEFAULT_AUDIO_AUDENH_CONTROL_OPTION_Coeff (0x00000002)  //Bit0: Audenh default (Default off for Low Power) , Bit1: BesLoudness default
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_custom.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_custom.h
new file mode 100644
index 0000000..e4e57e4
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_custom.h
@@ -0,0 +1,484 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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_custom_exp.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related function or definition.
+ *
+ * Author:
+ * -------
+ * JY Huang
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 05 26 2010 chipeng.chang
+ * [ALPS00002287][Need Patch] [Volunteer Patch] ALPS.10X.W10.11 Volunteer patch for audio paramter
+ * modify audio parameter.
+ *
+ * 05 26 2010 chipeng.chang
+ * [ALPS00002287][Need Patch] [Volunteer Patch] ALPS.10X.W10.11 Volunteer patch for audio paramter
+ * modify for Audio parameter
+ *
+ *    mtk80306
+ * [DUMA00132370] waveform driver file re-structure.
+ * waveform driver file re-structure.
+ *
+ * Jul 28 2009 mtk01352
+ * [DUMA00009909] Check in TWO_IN_ONE_SPEAKER and rearrange
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_CUSTOM_H
+#define AUDIO_CUSTOM_H
+
+/* define Gain For Normal */
+/* Normal volume: TON, SPK, MIC, FMR, SPH, SID, MED */
+
+#define GAIN_NOR_TON_VOL      8
+#define GAIN_NOR_KEY_VOL      43
+#define GAIN_NOR_MIC_VOL      26
+#define GAIN_NOR_FMR_VOL      0
+#define GAIN_NOR_SPH_VOL      20
+#define GAIN_NOR_SID_VOL      100
+#define GAIN_NOR_MED_VOL      25
+
+
+/* define Gain For Headset */
+/* Headset volume: TON, SPK, MIC, FMR, SPH, SID, MED */
+
+#define GAIN_HED_TON_VOL      8
+#define GAIN_HED_KEY_VOL      24
+#define GAIN_HED_MIC_VOL      20
+#define GAIN_HED_FMR_VOL      24
+#define GAIN_HED_SPH_VOL      12
+#define GAIN_HED_SID_VOL      100
+#define GAIN_HED_MED_VOL      12
+
+/* define Gain For Handfree */
+/* Handfree volume: TON, SPK, MIC, FMR, SPH, SID, MED */
+
+#define GAIN_HND_TON_VOL      8
+#define GAIN_HND_KEY_VOL      24
+#define GAIN_HND_MIC_VOL      20
+#define GAIN_HND_FMR_VOL      24
+#define GAIN_HND_SPH_VOL      12
+#define GAIN_HND_SID_VOL      100
+#define GAIN_HND_MED_VOL      12
+
+/* 0: Input FIR coefficients for 2G/3G Normal mode */
+/* 1: Input FIR coefficients for 2G/3G/VoIP Headset mode */
+/* 2: Input FIR coefficients for 2G/3G Handfree mode */
+/* 3: Input FIR coefficients for 2G/3G/VoIP BT mode */
+/* 4: Input FIR coefficients for VoIP Normal mode */
+/* 5: Input FIR coefficients for VoIP Handfree mode */
+#define SPEECH_INPUT_FIR_COEFF \
+     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, \
+                                       \
+    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, \
+                                       \
+    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, \
+                                       \
+    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, \
+                                       \
+    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, \
+                                       \
+    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: Output FIR coefficients for 2G/3G Normal mode */
+/* 1: Output FIR coefficients for 2G/3G/VoIP Headset mode */
+/* 2: Output FIR coefficients for 2G/3G Handfree mode */
+/* 3: Output FIR coefficients for 2G/3G/VoIP BT mode */
+/* 4: Output FIR coefficients for VoIP Normal mode */
+/* 5: Output FIR coefficients for VoIP Handfree mode */
+#define SPEECH_OUTPUT_FIR_COEFF \
+    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, \
+                                       \
+    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, \
+                                       \
+    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, \
+                                       \
+    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, \
+                                       \
+    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, \
+                                       \
+    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   DG_DL_Speech    0xE3D
+#define   DG_Microphone   0x1400
+#define   FM_Record_Vol   6     /* 0 is smallest. each step increase 1dB.
+                                    Be careful of distortion when increase too much.
+                                    Generally, it's not suggested to tune this parameter */
+
+/* 0: Input FIR coefficients for 2G/3G Normal mode */
+/* 1: Input FIR coefficients for 2G/3G/VoIP Headset mode */
+/* 2: Input FIR coefficients for 2G/3G Handfree mode */
+/* 3: Input FIR coefficients for 2G/3G/VoIP BT mode */
+/* 4: Input FIR coefficients for VoIP Normal mode */
+/* 5: Input FIR coefficients for VoIP Handfree mode */
+#define WB_Speech_Input_FIR_Coeff \
+    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,  \
+\
+    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,  \
+\
+    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,  \
+\
+    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,  \
+\
+    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,  \
+\
+    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
+
+/* 0: Output FIR coefficients for 2G/3G Normal mode */
+/* 1: Output FIR coefficients for 2G/3G/VoIP Headset mode */
+/* 2: Output FIR coefficients for 2G/3G Handfree mode */
+/* 3: Output FIR coefficients for 2G/3G/VoIP BT mode */
+/* 4: Output FIR coefficients for VoIP Normal mode */
+/* 5: Output FIR coefficients for VoIP Handfree mode */
+
+#define WB_Speech_Output_FIR_Coeff \
+    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, \
+\
+    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, \
+\
+    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, \
+\
+    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, \
+\
+    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, \
+\
+    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
+
+/*
+ * The Bluetooth DAI Hardware COnfiguration Parameter
+ */
+#define DEFAULT_BLUETOOTH_SYNC_TYPE               0
+#define DEFAULT_BLUETOOTH_SYNC_LENGTH             1
+
+/* Input FIR coefficients for 2G/3G HAC mode */
+#define DEFAULT_SPEECH_HAC_INPUT_FIR_COEFF \
+    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
+
+/* Output FIR coefficients for 2G/3G HAC mode */
+#define DEFAULT_SPEECH_HAC_OUTPUT_FIR_COEFF \
+    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
+
+/* WB Input FIR coefficients for 2G/3G HAC mode */
+#define DEFAULT_WB_SPEECH_HAC_INPUT_FIR_COEFF \
+    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
+
+/* WB Output FIR coefficients for 2G/3G HAC mode */
+#define DEFAULT_WB_SPEECH_HAC_OUTPUT_FIR_COEFF \
+    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
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_effect_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_effect_default.h
new file mode 100644
index 0000000..bd7a8d6
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_effect_default.h
@@ -0,0 +1,102 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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_coeff_default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related parameters or definition.
+ *
+ * Author:
+ * -------
+ * Tina Tsai
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_EFFECT_DEFAULT_H
+#define AUDIO_EFFECT_DEFAULT_H
+
+#define BSRD_LEVEL 50
+#define BSRD_DISTANCE1 20
+#define BSRD_DISTANCE2 30
+#define BSRD_BAND_SELECT 0
+
+#define BASS_CUTOFF_FREQ 400
+#define BASS_ISVB 0
+
+#define NORMAL_GAIN_LEVEL \
+    0,0,0,0,0,0,0,0
+#define DANCE_GAIN_LEVEL \
+    16,64,0,8,32,40,32,16
+#define BASS_GAIN_LEVEL \
+    48,32,24,16,0,0,0,0
+#define CLASSICAL_GAIN_LEVEL \
+    40,24,0,-16,-8,0,24,32
+#define TREBLE_GAIN_LEVEL \
+    0,0,0,0,8,24,40,48
+#define PARTY_GAIN_LEVEL \
+    40,32,0,0,0,0,0,32
+#define POP_GAIN_LEVEL \
+    -12,0,8,40,40,8,-8,-16
+#define ROCK_GAIN_LEVEL \
+    48,16,8,-8,-16,8,24,40
+
+#define LOUDENHANCEMODE 3
+
+#define TIME_TD_TF 0
+#define TIME_TS_RATIO 100
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_gain_table_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_gain_table_default.h
new file mode 100644
index 0000000..328878b
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_gain_table_default.h
@@ -0,0 +1,363 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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_gain_table_default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio cgain table parameters
+ *
+ * Author:
+ * -------
+ * ChiPeng Chang
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ * 
+ * 08 28 2012 weiguo.li
+ * [ALPS00347285] [Need Patch] [Volunteer Patch]LGE AudioGainTable modification
+ * .
+ * 
+ * 08 26 2012 weiguo.li
+ * [ALPS00347285] [Need Patch] [Volunteer Patch]LGE AudioGainTable modification
+ * .
+ * 
+ * 07 29 2012 weiguo.li
+ * [ALPS00319405] ALPS.JB.BSP.PRA check in CR for Jades
+ * .
+ *
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_GAIN_TABLE_DEFAULT_H
+#define AUDIO_GAIN_TABLE_DEFAULT_H
+
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_VOICE_GAIN_TABLE_PARA \
+    0x64,0x5A,0x50,0x46,0x3C,0x32,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x3C,0x32,0x28,0x1E,0x14,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x01,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x60,0x58,0x40,0x38,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,    0x00,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,\
+    0x60,0x58,0x40,0x38,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_SYSTEM_GAIN_TABLE_PARA \
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x0B,    0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_RINGTONE_GAIN_TABLE_PARA \
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x0A,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x0B,    0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_MUSIC_GAIN_TABLE_PARA \
+    0xFF,0xA8,0x9C,0x90,0x84,0x78,0x6C,0x60,0x54,0x48,0x3C,0x30,0x24,0x18,0x0C,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xB4,0xA8,0x9C,0x90,0x84,0x78,0x6C,0x60,0x54,0x48,0x3C,0x30,0x24,0x18,0x0A,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xA8,0x9C,0x90,0x84,0x78,0x6C,0x60,0x54,0x48,0x3C,0x30,0x24,0x18,0x0C,0x00,0x00,0x00,    0x0B,    0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xA8,0x9C,0x90,0x84,0x78,0x6C,0x60,0x54,0x48,0x3C,0x30,0x24,0x18,0x0C,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_ALARM_GAIN_TABLE_PARA \
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x0B,    0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_NOTIFICATION_GAIN_TABLE_PARA \
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x0B,    0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_BLUETOOTH_SCO_GAIN_TABLE_PARA \
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x1C,0x10,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x0F,    0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_ENFORCEAUDIBLE_GAIN_TABLE_PARA \
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x04,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x09,    0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_DTMF_GAIN_TABLE_PARA \
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x2B,0x23,0x1C,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x04,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x1C,0x10,0x00,0x00,    0x09,    0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+    
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_TTS_GAIN_TABLE_PARA \
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x04,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x09,    0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_FM_GAIN_TABLE_PARA \
+    0xFF,0xA8,0x9C,0x90,0x84,0x78,0x6C,0x60,0x54,0x48,0x3C,0x30,0x24,0x18,0x0C,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xA8,0x9C,0x90,0x84,0x78,0x6C,0x60,0x54,0x48,0x3C,0x30,0x24,0x18,0x0C,0x00,0x00,0x00,    0x04,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xA8,0x9C,0x90,0x84,0x78,0x6C,0x60,0x54,0x48,0x3C,0x30,0x24,0x18,0x0C,0x00,0x00,0x00,    0x09,    0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xA8,0x9C,0x90,0x84,0x78,0x6C,0x60,0x54,0x48,0x3C,0x30,0x24,0x18,0x0C,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+    
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_MATV_GAIN_TABLE_PARA \
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x08,    0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,\
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_SPEECH_NB_GAIN_TABLE_PARA \
+    0x60,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x50,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x40,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x30,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x20,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x10,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    \
+    0x70,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x50,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    \
+    0x48,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,    0x3C,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,    0x30,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,\
+    0x24,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,    0x18,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,    0x0C,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,\
+    0x00,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,    0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    \
+    0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_SPEECH_WB_GAIN_TABLE_PARA \
+    0x60,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x50,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x40,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x30,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x20,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x10,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    \
+    0x70,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x50,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    \
+    0x48,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,    0x3C,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,    0x30,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,\
+    0x24,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,    0x18,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,    0x0C,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,\
+    0x00,0x0C,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,    0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    \
+    0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+
+//sidetone receiver
+//sidetone headset
+//sidetone speaker
+//sidetone doc
+#define DEFAULT_SIDETONE_NB_GAIN_TABLE_PARA \
+	0x00,0x00,0x00,0x00
+
+//sidetone receiver
+//sidetone headset
+//sidetone speaker
+//sidetone doc
+#define DEFAULT_SIDETONE_WB_GAIN_TABLE_PARA \
+	0x00,0x00,0x00,0x00
+
+//GAIN_IDLE_RECORD_MIC
+//GAIN_IDLE_RECORD_HEADSET
+//GAIN_VOICE_REC_MIC
+//GAIN_VOICE_REC_HEADSET
+//GAIN_VIDEO_REC_MIC
+//GAIN_VIDEO_REC_HEADSET
+//GAIN_INCALL_NB_RECEIVER
+//GAIN_INCALL_NB_HEADSET
+//GAIN_INCALL_NB_SPEAKER
+//GAIN_INCALL_WB_RECEIVER
+//GAIN_INCALL_WB_HEADSET
+//GAIN_INCALL_WB_SPEAKER
+//GAIN_VOIP_RECEIVER
+//GAIN_VOIP_HEADSET
+//GAIN_VOIP_SPEAKER
+//GAIN_TTY_DEVICE
+//GAIN_LEVEL_SHIFT
+//GAIN_ANALOG_PLAY
+//GAIN_VOICE_UNLOCK_MIC
+//GAIN_VOICE_UNLOCK_HEADSET
+//GAIN_RESERVED1_MIC
+//GAIN_RESERVED1_HEADSET
+//GAIN_RESERVED2_MIC
+//GAIN_RESERVED2_HEADSET
+
+#define DEFAULT_MICROPHONE_GAIN_TABLE_PARA \
+    0x22,0x00, 0x22,0x00, 0x22,0x00, 0x22,0x00, 0x22,0x00,\
+    0x22,0x00, 0x18,0x00, 0x1E,0x00, 0x21,0x00, 0x18,0x00,\
+    0x1E,0x00, 0x21,0x00, 0x22,0x00, 0x22,0x00, 0x22,0x00,\
+    0x22,0x00, 0x22,0x00, 0x22,0x00, 0x22,0x00, 0x22,0x00,\
+    0x22,0x00, 0x22,0x00, 0x22,0x00, 0x22,0x00, 0x00,0x00,\
+    0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,\
+    0x00,0x00, 0x00,0x00
+    
+// Receiver      Gain
+// Headset       Gain
+// Speaker       Gain
+// doc           Gain
+#define DEFAULT_BLUETOOTH_NREC_GAIN_TABLE_PARA \
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x1C,0x10,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x0F,    0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,\
+    0xFF,0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,    0x00,    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+   
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_hcf_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_hcf_default.h
new file mode 100644
index 0000000..f49abf0
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_hcf_default.h
@@ -0,0 +1,361 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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_hcf_default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related parameters or definition.
+ *
+ * Author:
+ * -------
+ * Tina Tsai
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_HCF_DEFAULT_H
+#define AUDIO_HCF_DEFAULT_H
+#if defined(MTK_AUDIO_BLOUD_CUSTOMPARAMETER_V5)
+#define BES_LOUDNESS_HCF_L_HPF_FC       0
+#define BES_LOUDNESS_HCF_L_HPF_ORDER    0
+#define BES_LOUDNESS_HCF_L_BPF_FC       0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_HCF_L_BPF_BW       0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_HCF_L_BPF_GAIN     0 << 8, 0 << 8, 0 << 8, 0 << 8, 0 << 8, 0 << 8, 0 << 8, 0 << 8
+#define BES_LOUDNESS_HCF_L_LPF_FC       0
+#define BES_LOUDNESS_HCF_L_LPF_ORDER    0
+#define BES_LOUDNESS_HCF_R_HPF_FC       0
+#define BES_LOUDNESS_HCF_R_HPF_ORDER    0
+#define BES_LOUDNESS_HCF_R_BPF_FC       0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_HCF_R_BPF_BW       0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_HCF_R_BPF_GAIN     0 << 8, 0 << 8, 0 << 8, 0 << 8, 0 << 8, 0 << 8, 0 << 8, 0 << 8
+#define BES_LOUDNESS_HCF_R_LPF_FC       0
+#define BES_LOUDNESS_HCF_R_LPF_ORDER    0
+
+#define BES_LOUDNESS_HCF_SEP_LR_FILTER  0
+
+#define BES_LOUDNESS_HCF_WS_GAIN_MAX    0
+#define BES_LOUDNESS_HCF_WS_GAIN_MIN    0
+#define BES_LOUDNESS_HCF_FILTER_FIRST   0
+
+#define BES_LOUDNESS_HCF_NUM_BANDS      0
+#define BES_LOUDNESS_HCF_FLT_BANK_ORDER 0
+#define BES_LOUDNESS_HCF_DRC_DELAY      0
+#define BES_LOUDNESS_HCF_CROSSOVER_FREQ 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_HCF_SB_MODE        0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_HCF_SB_GAIN        0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_HCF_GAIN_MAP_IN    \
+        0, 0, 0, 0, 0,                  \
+        0, 0, 0, 0, 0,                  \
+        0, 0, 0, 0, 0,                  \
+        0, 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 BES_LOUDNESS_HCF_GAIN_MAP_OUT   \
+        0, 0, 0, 0, 0,                  \
+        0, 0, 0, 0, 0,                  \
+        0, 0, 0, 0, 0,                  \
+        0, 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 BES_LOUDNESS_HCF_ATT_TIME       \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        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 BES_LOUDNESS_HCF_REL_TIME       \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        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 BES_LOUDNESS_HCF_HYST_TH        \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        0, 0, 0, 0, 0, 0,               \
+        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 BES_LOUDNESS_HCF_LIM_TH     0
+#define BES_LOUDNESS_HCF_LIM_GN     0
+#define BES_LOUDNESS_HCF_LIM_CONST  0
+#define BES_LOUDNESS_HCF_LIM_DELAY  0
+
+#elif defined(MTK_AUDIO_BLOUD_CUSTOMPARAMETER_V4)
+    /* Compensation Filter HSF coeffs: default all pass filter       */
+    /* BesLoudness also uses this coeffs    */ 
+    
+	#define BES_LOUDNESS_HCF_HSF_COEFF \
+    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+\
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, \
+	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 
+
+   
+
+    /* Compensation Filter BPF coeffs: default all pass filter      */ 
+    #define BES_LOUDNESS_HCF_BPF_COEFF \
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+\
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+\
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+\    
+ 	0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \         
+\    
+ 	0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \     
+\    
+ 	0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \
+\    
+ 	0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \    
+\
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000, \ 
+    0x00000000,0x00000000,0x00000000     
+    
+    #define BES_LOUDNESS_HCF_LPF_COEFF \
+    0x00000000, 0x00000000, 0x00000000,\ 
+	0x00000000, 0x00000000, 0x00000000,\ 
+	0x00000000, 0x00000000, 0x00000000,\ 
+	0x00000000, 0x00000000, 0x00000000,\ 
+	0x00000000, 0x00000000, 0x00000000,\ 
+	0x00000000, 0x00000000, 0x00000000 
+
+    #define BES_LOUDNESS_HCF_WS_GAIN_MAX  0x399A
+           
+    #define BES_LOUDNESS_HCF_WS_GAIN_MIN  0x2666
+           
+    #define BES_LOUDNESS_HCF_FILTER_FIRST  0
+           
+    #define BES_LOUDNESS_HCF_GAIN_MAP_IN \
+    -45, -35, -19, -18,  0
+   
+    #define BES_LOUDNESS_HCF_GAIN_MAP_OUT \            
+    0, 12, 12, 12, 0
+
+	#define BES_LOUDNESS_HCF_ATT_TIME	164
+	#define BES_LOUDNESS_HCF_REL_TIME	16400
+#else
+/* Compensation Filter HSF coeffs: default all pass filter       */
+/* BesLoudness also uses this coeffs    */
+#define BES_LOUDNESS_HCF_HSF_COEFF \
+    0, 0, 0, 0, \
+    0, 0, 0, 0, \
+    0, 0, 0, 0, \
+    0, 0, 0, 0, \
+    0, 0, 0, 0, \
+    0, 0, 0, 0, \
+    0, 0, 0, 0, \
+    0, 0, 0, 0, \
+    0, 0, 0, 0
+
+/* Compensation Filter BPF coeffs: default all pass filter      */
+#define BES_LOUDNESS_HCF_BPF_COEFF \
+    0, 0, 0, \
+    0, 0, 0, \
+    0, 0, 0, \
+    0, 0, 0, \
+    0, 0, 0, \
+    0, 0, 0, \
+    \     
+    0, 0, 0, \
+    0, 0, 0, \
+    0, 0, 0, \
+    0, 0, 0, \
+    0, 0, 0, \
+    0, 0, 0, \
+    \     
+    0, 0, 0, \
+    0, 0, 0, \
+    0, 0, 0, \
+    0, 0, 0, \
+    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 BES_LOUDNESS_HCF_DRC_FORGET_TABLE \
+    0, 0, \
+    0, 0, \
+    0, 0, \
+    0, 0, \
+    0, 0, \
+    0, 0, \
+    0, 0, \
+    0, 0, \
+    0, 0
+
+#define BES_LOUDNESS_HCF_WS_GAIN_MAX  0
+
+#define BES_LOUDNESS_HCF_WS_GAIN_MIN  0
+
+#define BES_LOUDNESS_HCF_FILTER_FIRST  0
+
+#define BES_LOUDNESS_HCF_GAIN_MAP_IN \
+    0, 0, 0, 0, 0
+
+#define BES_LOUDNESS_HCF_GAIN_MAP_OUT \
+    0, 0, 0, 0, 0
+
+#endif
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_hd_record_custom.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_hd_record_custom.h
new file mode 100644
index 0000000..ca28728
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_hd_record_custom.h
@@ -0,0 +1,319 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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_hd_record_custom.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related function or definition.
+ *
+ * Author:
+ * -------
+ * Charlie Lu.
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_HD_RECORD_CUSTOM_H
+#define AUDIO_HD_RECORD_CUSTOM_H
+
+//hd_rec_fir
+/* 0: Input FIR coefficients for Normal mode */
+/* 1: Input FIR coefficients for Headset mode */
+/* 2: Input FIR coefficients for Handfree mode */
+/* 3: Input FIR coefficients for BT mode */
+/* 4: Input FIR coefficients for Normal mode */
+/* 5: Input FIR coefficients for Handfree mode */
+/* 6: Input FIR coefficients for Normal mode 2nd Mic*/
+/* 7: Input FIR coefficients for Voice Recognition*/
+/* 8: Input FIR coefficients for Voice Unlock Main Mic */
+/* 9: Input FIR coefficients for Voice Unlock 2nd Mic */
+/* 10: Input FIR coefficients for 1st customization Main Mic*/
+/* 11: Input FIR coefficients for 1st customization 2nd Mic*/
+/* 12: Input FIR coefficients for 2nd customization Main Mic*/
+/* 13: Input FIR coefficients for 2nd customization 2nd Mic*/
+/* 14: Input FIR coefficients for 3rd customization Main Mic*/
+/* 15: Input FIR coefficients for 3rd customization Ref Mic*/
+
+#define DEFAULT_HD_RECORD_FIR_Coeff \
+    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,  \
+    \
+    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,  \
+    \
+    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,  \
+    \
+    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,  \
+    \
+    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,  \
+    \
+    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, \
+    \
+    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, \
+    \
+    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,  \
+    \
+    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,  \
+    \
+    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,  \
+    \
+    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,  \
+    \
+    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, \
+    \
+    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,  \
+    \
+    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, \
+    \
+    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, \
+    \
+    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 DEFAULT_HD_RECORD_MODE_FIR_MAPPING_CH1 \
+    7, 4, \
+    0, 1, \
+    0, 1, \
+    0, 1, \
+    0, 1, \
+    0, 1, \
+    8, 1, \
+    10, 1, \
+    12, 1, \
+    14, 1, \
+    0, 1, \
+    0, 1, \
+    0, 1, \
+    0, 1, \
+    0, 3
+
+#define DEFAULT_HD_RECORD_MODE_FIR_MAPPING_CH2 \
+    6, 6, \
+    6, 6, \
+    6, 6, \
+    6, 6, \
+    6, 6, \
+    6, 6, \
+    9, 6, \
+    11, 6, \
+    13, 6, \
+    15, 6, \
+    6, 6, \
+    6, 6, \
+    6, 6, \
+    6, 6, \
+    6, 3
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_music_drc_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_music_drc_default.h
new file mode 100644
index 0000000..558b1df
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_music_drc_default.h
@@ -0,0 +1,191 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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_acf_default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related parameters or definition.
+ *
+ * Author:
+ * -------
+ * Tina Tsai
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 04 22 2013 kh.hung
+ * [ALPS00580843] [MT6572tdv1_phone[lca]][music][Symbio][Free test] ­µ?¼½©ñ¾¹¼½©ñ­µ?ªº?­µ?¤j?¤p¡A¤£?©w
+ * Use default DRC setting.
+ * 
+ * Review: http://mtksap20:8080/go?page=NewReview&reviewid=59367
+ *
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_MUSIC_DRC_DEFAULT_H
+#define AUDIO_MUSIC_DRC_DEFAULT_H
+
+#define BES_LOUDNESS_MUSICDRC_L_HPF_FC          0
+#define BES_LOUDNESS_MUSICDRC_L_HPF_ORDER       0
+#define BES_LOUDNESS_MUSICDRC_L_BPF_FC          0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_MUSICDRC_L_BPF_BW          0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_MUSICDRC_L_BPF_GAIN        0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_MUSICDRC_L_LPF_FC          0
+#define BES_LOUDNESS_MUSICDRC_L_LPF_ORDER       0
+#define BES_LOUDNESS_MUSICDRC_R_HPF_FC          0
+#define BES_LOUDNESS_MUSICDRC_R_HPF_ORDER       0
+#define BES_LOUDNESS_MUSICDRC_R_BPF_FC          0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_MUSICDRC_R_BPF_BW          0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_MUSICDRC_R_BPF_GAIN        0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_MUSICDRC_R_LPF_FC          0
+#define BES_LOUDNESS_MUSICDRC_R_LPF_ORDER       0
+
+#define BES_LOUDNESS_MUSICDRC_SEP_LR_FILTER     0
+	
+#define BES_LOUDNESS_MUSICDRC_WS_GAIN_MAX       0
+#define BES_LOUDNESS_MUSICDRC_WS_GAIN_MIN       0
+#define BES_LOUDNESS_MUSICDRC_FILTER_FIRST      0
+
+#define BES_LOUDNESS_MUSICDRC_NUM_BANDS      8
+#define BES_LOUDNESS_MUSICDRC_FLT_BANK_ORDER 0
+#define BES_LOUDNESS_MUSICDRC_DRC_DELAY      0
+#define BES_LOUDNESS_MUSICDRC_CROSSOVER_FREQ 300,500,1000,2000,4000,8000,16000
+#define BES_LOUDNESS_MUSICDRC_SB_MODE        0,0,0,0,0,0,0,0
+#define BES_LOUDNESS_MUSICDRC_SB_GAIN        -10240,-7680,-5120,-768,-768,0,0,0
+#define BES_LOUDNESS_MUSICDRC_GAIN_MAP_IN    \
+        -15360,-12800,-10240,-7680,0,                  \
+        -15360,-12800,-10240,-7680,0,                  \
+        -15360,-12800,-10240,-7680,0,                  \
+        -15360,-12800,-10240,-7680,0,                  \
+        -15360,-12800,-10240,-7680,0,                  \
+        -15360,-12800,-10240,-7680,0,                  \
+        -15360,-12800,-10240,-7680,0,                  \
+        -15360,-12800,-10240,-7680,0
+#define BES_LOUDNESS_MUSICDRC_GAIN_MAP_OUT   \
+        6144,6144,6144,6144,0,                  \
+        6144,6144,6144,6144,0,                  \
+        6144,6144,6144,6144,0,                  \
+        6144,6144,6144,6144,0,                  \
+        6144,6144,6144,6144,0,                  \
+        6144,6144,6144,6144,0,                  \
+        6144,6144,6144,6144,0,                  \
+        6144,6144,6144,6144,0
+#define BES_LOUDNESS_MUSICDRC_ATT_TIME       \
+        64,64,64,64,64,64,                  \
+        64,64,64,64,64,64,                  \
+        32,32,32,32,32,32,                  \
+        32,32,32,32,32,32,                  \
+        32,32,32,32,32,32,                  \
+        164,164,164,164,164,164,                  \
+        164,164,164,164,164,164,                  \
+        164,164,164,164,164,164
+#define BES_LOUDNESS_MUSICDRC_REL_TIME       \
+        6400,6400,6400,6400,6400,6400,                  \
+        6400,6400,6400,6400,6400,6400,                  \
+        16400,16400,16400,16400,16400,16400,                  \
+        16400,16400,16400,16400,16400,16400,                  \
+        16400,16400,16400,16400,16400,16400,                  \
+        16400,16400,16400,16400,16400,16400,                  \
+        16400,16400,16400,16400,16400,16400,                  \
+        16400,16400,16400,16400,16400,16400
+#define BES_LOUDNESS_MUSICDRC_HYST_TH        \
+        256,256,256,256,256,256,                  \
+        256,256,256,256,256,256,                  \
+        256,256,256,256,256,256,                  \
+        256,256,256,256,256,256,                  \
+        256,256,256,256,256,256,                  \
+        256,256,256,256,256,256,                  \
+        256,256,256,256,256,256,                  \
+        256,256,256,256,256,256
+
+#define BES_LOUDNESS_MUSICDRC_LIM_TH     0x7FFF
+#define BES_LOUDNESS_MUSICDRC_LIM_GN     0x7FFF
+#define BES_LOUDNESS_MUSICDRC_LIM_CONST  4
+#define BES_LOUDNESS_MUSICDRC_LIM_DELAY  0
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_ringtone_drc_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_ringtone_drc_default.h
new file mode 100644
index 0000000..fb7ddf4
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_ringtone_drc_default.h
@@ -0,0 +1,190 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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_acf_default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related parameters or definition.
+ *
+ * Author:
+ * -------
+ * Tina Tsai
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 04 22 2013 kh.hung
+ * [ALPS00580843] [MT6572tdv1_phone[lca]][music][Symbio][Free test] ­µ?¼½©ñ¾¹¼½©ñ­µ?ªº?­µ?¤j?¤p¡A¤£?©w
+ * Use default DRC setting.
+ * 
+ * Review: http://mtksap20:8080/go?page=NewReview&reviewid=59367
+ *
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_RINGTONE_DRC_DEFAULT_H
+#define AUDIO_RINGTONE_DRC_DEFAULT_H
+
+#define BES_LOUDNESS_RINGTONEDRC_L_HPF_FC       0
+#define BES_LOUDNESS_RINGTONEDRC_L_HPF_ORDER    0
+#define BES_LOUDNESS_RINGTONEDRC_L_BPF_FC       0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_RINGTONEDRC_L_BPF_BW       0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_RINGTONEDRC_L_BPF_GAIN     0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_RINGTONEDRC_L_LPF_FC       0
+#define BES_LOUDNESS_RINGTONEDRC_L_LPF_ORDER    0
+#define BES_LOUDNESS_RINGTONEDRC_R_HPF_FC       0
+#define BES_LOUDNESS_RINGTONEDRC_R_HPF_ORDER    0
+#define BES_LOUDNESS_RINGTONEDRC_R_BPF_FC       0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_RINGTONEDRC_R_BPF_BW       0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_RINGTONEDRC_R_BPF_GAIN     0, 0, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_RINGTONEDRC_R_LPF_FC       0
+#define BES_LOUDNESS_RINGTONEDRC_R_LPF_ORDER    0
+
+#define BES_LOUDNESS_RINGTONEDRC_SEP_LR_FILTER  0
+	
+#define BES_LOUDNESS_RINGTONEDRC_WS_GAIN_MAX    0
+#define BES_LOUDNESS_RINGTONEDRC_WS_GAIN_MIN    0
+#define BES_LOUDNESS_RINGTONEDRC_FILTER_FIRST   0
+
+#define BES_LOUDNESS_RINGTONEDRC_NUM_BANDS      5
+#define BES_LOUDNESS_RINGTONEDRC_FLT_BANK_ORDER 0
+#define BES_LOUDNESS_RINGTONEDRC_DRC_DELAY      0
+#define BES_LOUDNESS_RINGTONEDRC_CROSSOVER_FREQ 110, 440, 1760, 8000, 0, 0, 0
+#define BES_LOUDNESS_RINGTONEDRC_SB_MODE        1, 1, 0, 0, 0, 0, 0, 0
+#define BES_LOUDNESS_RINGTONEDRC_SB_GAIN        -40 << 8, -20 << 8, 0 << 8, 4 << 8, 0 << 8, 0 << 8, 0 << 8, 0 << 8
+#define BES_LOUDNESS_RINGTONEDRC_GAIN_MAP_IN                \
+        -60 << 8, -50 << 8, -40 << 8, -30 << 8, 0 << 8,     \
+        -60 << 8, -50 << 8, -40 << 8, -30 << 8, 0 << 8,     \
+        -60 << 8, -50 << 8, -40 << 8, -30 << 8, 0 << 8,     \
+        -60 << 8, -50 << 8, -40 << 8, -30 << 8, 0 << 8,     \
+        -60 << 8, -50 << 8, -40 << 8, -30 << 8, 0 << 8,     \
+        -60 << 8, -50 << 8, -40 << 8, -30 << 8, 0 << 8,     \
+        -60 << 8, -50 << 8, -40 << 8, -30 << 8, 0 << 8,     \
+        -60 << 8, -50 << 8, -40 << 8, -30 << 8, 0 << 8
+#define BES_LOUDNESS_RINGTONEDRC_GAIN_MAP_OUT               \
+        24 << 8, 24 << 8, 24 << 8, 24 << 8, 0 << 8,         \
+        24 << 8, 24 << 8, 24 << 8, 24 << 8, 0 << 8,         \
+        24 << 8, 24 << 8, 24 << 8, 24 << 8, 0 << 8,         \
+        24 << 8, 24 << 8, 24 << 8, 24 << 8, 0 << 8,         \
+        24 << 8, 24 << 8, 24 << 8, 24 << 8, 0 << 8,         \
+        24 << 8, 24 << 8, 24 << 8, 24 << 8, 0 << 8,         \
+        24 << 8, 24 << 8, 24 << 8, 24 << 8, 0 << 8,         \
+        24 << 8, 24 << 8, 24 << 8, 24 << 8, 0 << 8
+#define BES_LOUDNESS_RINGTONEDRC_ATT_TIME                   \
+        164, 164, 164, 164, 164, 164,                       \
+        164, 164, 164, 164, 164, 164,                       \
+        164, 164, 164, 164, 164, 164,                       \
+        164, 164, 164, 164, 164, 164,                       \
+        164, 164, 164, 164, 164, 164,                       \
+        164, 164, 164, 164, 164, 164,                       \
+        164, 164, 164, 164, 164, 164,                       \
+        164, 164, 164, 164, 164, 164
+#define BES_LOUDNESS_RINGTONEDRC_REL_TIME                   \
+        16400, 16400, 16400, 16400, 16400, 16400,           \
+        16400, 16400, 16400, 16400, 16400, 16400,           \
+        16400, 16400, 16400, 16400, 16400, 16400,           \
+        16400, 16400, 16400, 16400, 16400, 16400,           \
+        16400, 16400, 16400, 16400, 16400, 16400,           \
+        16400, 16400, 16400, 16400, 16400, 16400,           \
+        16400, 16400, 16400, 16400, 16400, 16400,           \
+        16400, 16400, 16400, 16400, 16400, 16400
+#define BES_LOUDNESS_RINGTONEDRC_HYST_TH                    \
+        1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8,     \
+        1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8,     \
+        1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8,     \
+        1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8,     \
+        1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8,     \
+        1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8,     \
+        1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8,     \
+        1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8, 1 << 8
+#define BES_LOUDNESS_RINGTONEDRC_LIM_TH     0x7FFF
+#define BES_LOUDNESS_RINGTONEDRC_LIM_GN     0x7FFF
+#define BES_LOUDNESS_RINGTONEDRC_LIM_CONST  4
+#define BES_LOUDNESS_RINGTONEDRC_LIM_DELAY  0
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_speaker_monitor_custom.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_speaker_monitor_custom.h
new file mode 100644
index 0000000..e5f1bb4
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_speaker_monitor_custom.h
@@ -0,0 +1,571 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
+ * the prior written permission of MediaTek inc. and/or its licensors, any
+ * reproduction, modification, use or disclosure of MediaTek Software, and
+ * information contained herein, in whole or in part, shall be strictly
+ * prohibited.
+ * 
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ * 
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ * 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 RECEIVER AGREES
+ * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+ * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+ * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
+ * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
+ * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek
+ * Software") have been modified by MediaTek Inc. All revisions are subject to
+ * any receiver's applicable license agreements with MediaTek Inc.
+ */
+
+#ifndef AUDIO_SPEAKER_MONITOR_CUSTOM_H
+#define AUDIO_SPEAKER_MONITOR_CUSTOM_H
+
+/****************************************************
+* Define default Speaker Monitor Param
+*****************************************************/
+
+#define DEFAULT_SPEAKER_MONITOR_PARAM \
+0.000000f,   \
+6.724226f,   \
+6.974528f,   \
+6.846275f,   \
+6.827175f,   \
+7.047107f,   \
+7.119836f,   \
+7.331464f,   \
+7.688554f,   \
+7.918128f,   \
+9.524508f,   \
+9.824244f,   \
+9.784428f,   \
+8.793557f,   \
+8.132271f,   \
+7.909787f,   \
+7.412833f,   \
+7.302618f,   \
+7.104803f,   \
+7.077705f,   \
+6.944293f,   \
+6.918779f,   \
+6.927319f,   \
+6.864192f,   \
+6.887978f,   \
+6.881207f,   \
+6.837842f,   \
+6.853567f,   \
+6.831047f,   \
+6.835002f,   \
+6.853987f,   \
+6.855708f,   \
+6.855517f,   \
+6.879707f,   \
+6.879851f,   \
+6.864088f,   \
+6.895735f,   \
+6.836673f,   \
+6.839348f,   \
+6.825389f,   \
+6.797342f,   \
+6.813182f,   \
+6.799253f,   \
+6.789910f,   \
+6.840711f,   \
+6.817069f,   \
+6.837533f,   \
+6.800495f,   \
+6.823473f,   \
+6.813232f,   \
+6.798521f,   \
+6.802952f,   \
+6.821106f,   \
+6.828176f,   \
+6.832813f,   \
+6.845280f,   \
+6.816212f,   \
+6.890805f,   \
+6.847644f,   \
+6.870790f,   \
+6.908623f,   \
+6.837619f,   \
+6.877141f,   \
+6.866852f,   \
+6.877843f,   \
+6.842310f,   \
+6.853122f,   \
+6.849436f,   \
+6.897611f,   \
+6.880357f,   \
+6.772614f,   \
+6.837955f,   \
+6.844776f,   \
+6.882747f,   \
+6.903024f,   \
+6.834239f,   \
+6.851512f,   \
+6.861617f,   \
+6.828314f,   \
+6.850456f,   \
+6.914350f,   \
+6.856041f,   \
+6.837886f,   \
+6.856701f,   \
+6.873860f,   \
+6.882756f,   \
+6.856958f,   \
+6.905285f,   \
+6.846513f,   \
+6.905928f,   \
+6.838507f,   \
+6.885972f,   \
+6.832790f,   \
+6.874806f,   \
+6.866412f,   \
+6.896636f,   \
+6.938709f,   \
+6.857732f,   \
+6.871342f,   \
+6.926673f,   \
+6.990149f,   \
+6.951657f,   \
+6.985218f,   \
+6.947751f,   \
+7.019493f,   \
+6.914910f,   \
+6.977337f,   \
+6.983798f,   \
+6.950284f,   \
+6.914060f,   \
+6.953691f,   \
+6.909161f,   \
+6.972013f,   \
+6.935135f,   \
+6.960772f,   \
+6.909254f,   \
+6.948703f,   \
+6.933710f,   \
+6.901606f,   \
+6.989258f,   \
+6.968126f,   \
+6.983894f,   \
+7.018600f,   \
+6.944714f,   \
+6.964221f,   \
+7.023781f,   \
+6.989924f,   \
+6.981969f,   \
+6.981292f,   \
+7.071301f,   \
+7.063210f,   \
+6.957207f,   \
+7.035365f,   \
+7.048344f,   \
+7.028668f,   \
+7.036113f,   \
+7.030469f,   \
+7.007527f,   \
+7.053476f,   \
+7.035308f,   \
+7.086689f,   \
+7.146161f,   \
+7.024417f,   \
+7.031446f,   \
+7.073967f,   \
+7.143930f,   \
+7.428226f,   \
+0.000000f,   \
+6.993325f,   \
+7.122999f,   \
+7.127262f,   \
+7.147401f,   \
+7.116213f,   \
+7.273460f,   \
+7.084520f,   \
+7.060570f,   \
+7.081394f,   \
+7.143188f,   \
+7.205965f,   \
+7.078080f,   \
+7.079659f,   \
+7.080306f,   \
+7.144302f,   \
+7.084785f,   \
+7.257939f,   \
+7.130643f,   \
+7.097555f,   \
+7.152971f,   \
+7.040974f,   \
+7.085166f,   \
+7.071059f,   \
+7.100259f,   \
+7.160836f,   \
+7.172592f,   \
+7.152480f,   \
+7.321774f,   \
+7.143798f,   \
+7.185150f,   \
+7.074606f,   \
+7.192005f,   \
+7.032177f,   \
+6.960763f,   \
+7.295326f,   \
+7.217050f,   \
+7.162797f,   \
+7.144925f,   \
+7.171889f,   \
+7.194613f,   \
+7.221737f,   \
+7.182446f,   \
+7.056801f,   \
+7.180799f,   \
+7.155940f,   \
+7.110633f,   \
+7.163946f,   \
+7.054243f,   \
+0.000000f,   \
+7.285683f,   \
+7.089665f,   \
+7.040215f,   \
+7.128399f,   \
+7.176611f,   \
+7.282122f,   \
+7.104584f,   \
+7.137789f,   \
+7.135109f,   \
+7.306314f,   \
+7.165412f,   \
+7.144668f,   \
+7.182379f,   \
+7.370492f,   \
+7.208850f,   \
+7.139509f,   \
+7.295280f,   \
+7.267511f,   \
+7.271372f,   \
+7.192691f,   \
+7.223773f,   \
+7.207439f,   \
+7.266832f,   \
+7.350516f,   \
+7.268063f,   \
+7.267170f,   \
+7.257799f,   \
+7.315085f,   \
+7.111807f,   \
+7.378593f,   \
+7.302648f,   \
+7.218002f,   \
+7.305216f,   \
+7.213538f,   \
+7.241156f,   \
+7.190457f,   \
+7.418906f,   \
+7.315556f,   \
+0.000000f,   \
+7.288957f,   \
+7.333023f,   \
+7.139032f,   \
+7.419845f,   \
+7.359655f,   \
+7.297998f,   \
+7.204082f,   \
+7.342434f,   \
+7.426449f,   \
+7.265158f,   \
+7.409251f,   \
+7.444800f,   \
+7.316185f,   \
+7.301837f,   \
+7.299541f,   \
+7.290207f,   \
+7.354695f,   \
+7.280741f,   \
+7.342413f,   \
+7.326562f,   \
+7.464303f,   \
+7.343559f,   \
+7.374075f,   \
+7.391737f,   \
+7.482700f,   \
+7.412315f,   \
+7.374053f,   \
+7.239961f,   \
+7.433125f,   \
+7.287411f,   \
+7.376688f,   \
+7.381767f,   \
+7.458014f,   \
+7.221640f,   \
+7.299759f,   \
+7.253643f,   \
+7.429543f,   \
+7.328827f,   \
+7.388747f,   \
+7.357351f,   \
+7.367592f,   \
+7.477061f,   \
+7.383484f,   \
+7.388175f,   \
+7.369945f,   \
+7.443092f,   \
+7.605816f,   \
+7.469241f,   \
+7.617379f,   \
+7.471801f,   \
+7.439581f,   \
+7.429914f,   \
+7.540149f,   \
+7.468150f,   \
+7.542761f,   \
+7.408623f,   \
+7.433461f,   \
+7.396984f,   \
+7.358805f,   \
+7.366835f,   \
+7.386064f,   \
+7.386212f,   \
+7.348292f,   \
+7.544761f,   \
+7.507598f,   \
+7.514112f,   \
+7.428306f,   \
+7.504209f,   \
+7.442350f,   \
+7.432697f,   \
+7.572494f,   \
+7.457337f,   \
+7.433437f,   \
+7.616264f,   \
+7.584019f,   \
+7.704144f,   \
+7.638788f,   \
+7.548791f,   \
+7.533299f,   \
+7.614974f,   \
+7.436929f,   \
+0.000000f,   \
+7.470621f,   \
+7.506228f,   \
+7.550412f,   \
+7.633528f,   \
+7.458643f,   \
+7.543236f,   \
+7.515824f,   \
+7.526042f,   \
+7.850661f,   \
+7.678246f,   \
+7.682152f,   \
+7.491266f,   \
+7.491404f,   \
+7.603360f,   \
+7.597063f,   \
+7.728959f,   \
+7.719633f,   \
+7.459821f,   \
+7.609262f,   \
+7.726784f,   \
+7.551135f,   \
+7.640534f,   \
+7.734461f,   \
+7.628714f,   \
+7.304039f,   \
+7.583868f,   \
+7.539066f,   \
+7.615777f,   \
+7.805047f,   \
+7.757169f,   \
+7.817597f,   \
+7.696222f,   \
+7.574815f,   \
+7.704673f,   \
+7.708368f,   \
+7.557793f,   \
+7.758362f,   \
+7.817715f,   \
+7.620881f,   \
+7.650286f,   \
+7.589502f,   \
+7.912412f,   \
+0.000000f,   \
+0.000000f,   \
+7.622248f,   \
+7.471659f,   \
+7.034797f,   \
+7.484396f,   \
+7.432148f,   \
+7.789283f,   \
+7.689125f,   \
+7.560812f,   \
+7.589663f,   \
+7.690178f,   \
+7.539281f,   \
+7.481449f,   \
+7.628078f,   \
+7.564785f,   \
+7.828842f,   \
+7.757295f,   \
+7.761100f,   \
+7.604434f,   \
+7.611227f,   \
+7.826819f,   \
+7.595936f,   \
+7.634809f,   \
+7.847127f,   \
+7.790264f,   \
+7.762833f,   \
+7.872057f,   \
+7.618991f,   \
+7.854398f,   \
+7.724950f,   \
+7.791582f,   \
+7.883928f,   \
+7.851706f,   \
+7.876284f,   \
+7.873750f,   \
+7.886863f,   \
+7.823014f,   \
+7.848767f,   \
+8.098789f,   \
+7.813078f,   \
+8.139100f,   \
+7.728526f,   \
+8.257166f,   \
+7.928484f,   \
+7.672758f,   \
+7.724411f,   \
+8.112217f,   \
+7.800399f,   \
+7.728940f,   \
+7.859084f,   \
+7.956226f,   \
+7.932983f,   \
+7.999975f,   \
+7.904581f,   \
+7.908185f,   \
+7.954573f,   \
+7.988237f,   \
+8.113664f,   \
+7.912639f,   \
+7.891133f,   \
+7.877574f,   \
+8.014938f,   \
+7.840498f,   \
+7.902784f,   \
+7.928629f,   \
+7.921973f,   \
+8.067985f,   \
+7.951092f,   \
+7.828674f,   \
+7.979732f,   \
+7.774290f,   \
+7.994339f,   \
+7.998278f,   \
+7.884554f,   \
+8.038289f,   \
+8.081851f,   \
+7.993627f,   \
+7.887461f,   \
+7.963169f,   \
+8.006074f,   \
+7.905819f,   \
+7.708533f,   \
+7.620054f,   \
+8.092615f,   \
+0.000000f,   \
+7.908058f,   \
+0.000000f,   \
+7.754007f,   \
+7.954754f,   \
+8.220443f,   \
+0.000000f,   \
+7.981484f,   \
+7.903817f,   \
+7.920052f,   \
+8.049402f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+7.928816f,   \
+0.000000f,   \
+8.227345f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f,   \
+0.000000f
+
+
+#define DEFAULT_SPEAKER_TEMP_INITIAL (25.0f)
+#define DEFAULT_SPEAKER_CURRENT_SENSE_RESISTOR (0.5f)
+#define DEFAULT_SPEAKER_RESONANT_FC (450)
+#define DEFAULT_SPEAKER_RESONANT_BW (1000)
+#define DEFAULT_SPEAKER_RESONANT_TH (0xFFEC)
+#define DEFAULT_SPEAKER_PREFER_HIGH_BAND 90
+#define DEFAULT_SPEAKER_PREFER_LOW_BAND  35
+#define DEFAULT_SPEAKER_TEMP_CONTROL_HIGH 90
+#define DEFAULT_SPEAKER_TEMP_CONTROL_LOW  85
+#define DEFAULT_SPEAKER_TEMP_CONTROL_LOG  10
+#define DEFAULT_SPEAKER_MONITOR_INTERVAL  1000
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_ver1_volume_custom_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_ver1_volume_custom_default.h
new file mode 100644
index 0000000..6ac3f79
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_ver1_volume_custom_default.h
@@ -0,0 +1,185 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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_ver1_volume_custom_default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related parameters or definition.
+ *
+ * Author:
+ * -------
+ * Chipeng chang
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_VER1_VOLUME_CUSTOM_DEFAULT_H
+#define AUDIO_VER1_VOLUME_CUSTOM_DEFAULT_H
+
+#define VER1_AUD_VOLUME_RING \
+    32,48,64,80,96,112,128,144,160,176,192,208,224,240,255,\
+    32,48,64,80,96,112,128,144,160,176,192,208,224,240,255,\
+    128,136,144,152,160,168,176,184,192,200,212,224,236,248,255,\
+    128,136,144,152,160,168,176,184,192,200,212,224,236,248,255
+
+#define VER1_AUD_VOLUME_SIP \
+    112,136,160,184,208,232,255,0,0,0,0,0,0,0,0,\
+    112,136,160,184,208,232,255,0,0,0,0,0,0,0,0,\
+    112,136,160,184,208,232,255,0,0,0,0,0,0,0,0,\
+    0,43,85,128,171,213,255,0,0,0,0,0,0,0,0
+
+#define VER1_AUD_VOLUME_MIC \
+     64,112,192,152,192,192,184,184,184,184,184,0,0,0,0,\
+    255,192,192,180,192,192,196,184,184,184,184,0,0,0,0,\
+    255,208,208,180,255,208,196,0,0,0,0,0,0,0,0,\
+    255,208,208,164,255,208,172,0,0,0,0,0,0,0,0
+
+#define VER1_AUD_VOLUME_FM \
+    32,48,64,80,96,112,128,144,160,176,192,208,224,255,255,\
+    88,100,112,124,136,148,160,172,184,196,208,220,232,244,255,\
+    68,80,92,104,116,128,140,152,168,176,188,200,212,232,248,\
+    32,48,64,80,96,112,128,144,160,176,192,208,224,255,255
+
+#define VER1_AUD_VOLUME_SPH \
+    72,84,96,108,120,132,144,0,0,0,0,0,0,0,0,\
+    52,64,76,88,100,112,124,0,0,0,0,0,0,0,0,\
+    76,88,100,112,124,136,148,0,0,0,0,0,0,0,0,\
+    40,52,64,76,88,100,112,0,0,0,0,0,0,0,0
+
+#define VER1_AUD_VOLUME_SID \
+    0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,\
+    0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,\
+    0,0,0,0,0,0,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 VER1_AUD_VOLUME_MEDIA \
+    32,48,64,80,96,112,160,144,160,176,192,208,224,240,255,\
+    88,100,112,124,136,148,160,172,184,196,208,220,232,244,255,\
+    68,80,92,104,116,128,140,152,168,176,188,200,212,232,248,\
+    32,48,64,80,96,112,128,144,160,176,192,208,224,240,255
+
+#define VER1_AUD_VOLUME_MATV \
+    32,48,64,80,96,112,128,144,160,176,192,208,224,240,255,\
+    88,100,112,124,136,148,160,172,184,196,208,220,232,244,255,\
+    68,80,92,104,116,128,140,152,168,176,188,200,212,232,248,\
+    32,48,64,80,96,112,128,144,160,176,192,208,224,240,255
+
+#define VER1_AUD_NORMAL_VOLUME_DEFAULT \
+    128,128,128,128,128,128
+
+#define VER1_AUD_HEADSER_VOLUME_DEFAULT \
+    124,148,148,148,148,148
+
+#define VER1_AUD_SPEAKER_VOLUME_DEFAULT \
+    160,120,120,120,120,120
+
+#define VER1_AUD_HEADSETSPEAKER_VOLUME_DEFAULT \
+    112,160,132,132,132,132,132,132
+
+#define VER1_AUD_EXTAMP_VOLUME_DEFAULT \
+    132,132,132,132,132,132
+
+#define VER1_AUD_VOLUME_LEVEL_DEFAULT \
+    15,7,15,15,7,7,7,15,15
+
+/* mic volume setting for 2G/3G HAC mode */    
+#define DEFAULT_VER1_AUD_VOLUME_MIC_HAC \
+     64,112,192,144,192,192,184,184,184,184,184,0,0,0,0
+     
+/* speech dl volume setting for 2G/3G HAC mode */    
+#define DEFAULT_VER1_AUD_VOLUME_SPH_HAC \
+    40,52,64,76,88,100,112,0,0,0,0,0,0,0,0
+
+/* sidetone volume setting for 2G/3G HAC mode */    
+#define DEFAULT_VER1_AUD_VOLUME_SID_HAC \
+    0,0,16,0,0,0,0,0,0,0,0,0,0,0,0
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_voip_custom.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_voip_custom.h
new file mode 100644
index 0000000..b697b3c
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_voip_custom.h
@@ -0,0 +1,200 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
+ * the prior written permission of MediaTek inc. and/or its licensors, any
+ * reproduction, modification, use or disclosure of MediaTek Software, and
+ * information contained herein, in whole or in part, shall be strictly
+ * prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ * 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 RECEIVER AGREES
+ * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+ * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+ * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
+ * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
+ * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek
+ * Software") have been modified by MediaTek Inc. All revisions are subject to
+ * any receiver's applicable license agreements with MediaTek Inc.
+ */
+
+#ifndef AUDIO_VOIP_CUSTOM_H
+#define AUDIO_VOIP_CUSTOM_H
+
+/****************************************************
+* Define default AP side VOIP parameters
+*****************************************************/
+
+//VoIP speech parameters common part
+#define DEFAULT_VOIP_SPEECH_COMMON_PARAM  \
+    0,  55997,  31000,    10752,      32769,      0,      0,      0, \
+    0,      0,      0,      0
+
+
+#ifdef __MTK_DUAL_MIC_SUPPORT__
+#ifdef __MTK_VOIP_NORMAL_DMNR__
+#define VOIP_SPEECH_MODE_PARA13 (371)
+#define VOIP_SPEECH_MODE_PARA14 (23)
+#define VOIP_SPEECH_MODE_PARA03 (29)
+#define VOIP_SPEECH_MODE_PARA08 (400)
+#else
+#define VOIP_SPEECH_MODE_PARA13 (0)
+#define VOIP_SPEECH_MODE_PARA14 (0)
+#define VOIP_SPEECH_MODE_PARA03 (31)
+#define VOIP_SPEECH_MODE_PARA08 (80)
+#endif
+#else
+#define VOIP_SPEECH_MODE_PARA13 (0)
+#define VOIP_SPEECH_MODE_PARA14 (0)
+#define VOIP_SPEECH_MODE_PARA03 (31)
+#define VOIP_SPEECH_MODE_PARA08 (80)
+#endif
+
+#ifdef __MTK_DUAL_MIC_SUPPORT__
+#ifdef __MTK_VOIP_HANDSFREE_DMNR__
+#define VOIP_SPEECH_SPK_MODE_PARA13 (307)
+#define VOIP_SPEECH_SPK_MODE_PARA14 (31)
+#define VOIP_SPEECH_SPK_MODE_PARA03 (29)
+#define VOIP_SPEECH_SPK_MODE_PARA08 (400)      
+#else
+#define VOIP_SPEECH_SPK_MODE_PARA13 (0)
+#define VOIP_SPEECH_SPK_MODE_PARA14 (0)
+#define VOIP_SPEECH_SPK_MODE_PARA03 (29)
+#define VOIP_SPEECH_SPK_MODE_PARA08 (276)  
+#endif    
+#else
+#define VOIP_SPEECH_SPK_MODE_PARA13 (0)
+#define VOIP_SPEECH_SPK_MODE_PARA14 (0)
+#define VOIP_SPEECH_SPK_MODE_PARA03 (29)
+#define VOIP_SPEECH_SPK_MODE_PARA08 (276)
+#endif
+
+
+//VoIP speech parameter different part
+//1. normal mode
+//2.loud speaker mode
+//3. headset mode
+//4.BT mode
+#define DEFAULT_VOIP_SPEECH_MODE_PARAM \
+    128,   253, 6212,    VOIP_SPEECH_MODE_PARA03, 57351,   31,    0,    32, \
+    VOIP_SPEECH_MODE_PARA08,  197,  611,     0, 13066,   0|VOIP_SPEECH_MODE_PARA13,    0|VOIP_SPEECH_MODE_PARA14,   0, \
+    \
+    192,   224,  2218,    VOIP_SPEECH_SPK_MODE_PARA03, 57351, 24607,    0,     4, \
+    VOIP_SPEECH_SPK_MODE_PARA08,  197,   611,     0, 13066,     VOIP_SPEECH_SPK_MODE_PARA13,     VOIP_SPEECH_SPK_MODE_PARA14,     0, \
+    \
+    0,   189,  8196,    31, 57351,    31,      0,    64, \
+    80,  197,   611,     0, 13066,     0,     0,     0, \
+    \
+    0,   253,  8196,    31, 53255,    31,      0,     0, \
+    80,  197,   611,     0, 13066,    0,     0,      0
+
+//VoIP FIR parameter
+//1. normal mode
+//2.loud speaker mode
+//3. headset mode
+//4.BT mode
+#define DEFAULT_VOIP_IN_FIR_PARAM \
+    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,  \
+    \
+    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,  \
+    \
+    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,  \
+    \
+    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
+
+//VoIP FIR parameter
+//1. normal mode
+//2.loud speaker mode
+//3. headset mode
+//4.BT mode
+#define DEFAULT_VOIP_OUT_FIR_PARAM \
+    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,  \
+    \
+    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,  \
+    \
+    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,  \
+    \
+    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
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_volume_custom_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_volume_custom_default.h
new file mode 100644
index 0000000..0cfae6e
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/audio_volume_custom_default.h
@@ -0,0 +1,145 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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_volume_custom_default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related parameters or definition.
+ *
+ * Author:
+ * -------
+ * Chipeng chang
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_VOLUME_CUSTOM_DEFAULT_H
+#define AUDIO_VOLUME_CUSTOM_DEFAULT_H
+
+#define AUD_VOLUME_RING \
+     0,32,64,96,128,160,192,\
+     136, 160, 184, 204, 220, 236, 255,\
+     136, 160, 184, 204, 220, 236, 255
+
+#define AUD_VOLUME_KEY \
+     108, 132, 156, 180, 204, 228, 252,\
+     108, 132, 156, 180, 204, 228, 252,\
+     108, 132, 156, 180, 204, 228, 252
+
+#define AUD_VOLUME_MIC \
+      64, 255, 255, 148, 200, 200, 160,\
+     225, 192, 192, 160, 216, 208, 172,     \
+     255, 208, 208, 180, 255, 208, 172
+#define AUD_VOLUME_FMR \
+     0,43,85,128,171,213,255,\
+     20, 52, 84, 116, 148, 184, 220,\
+     52, 84, 120, 148, 180, 216, 255
+
+#define AUD_VOLUME_SPH \
+     40,52,64,76,88,100,112,\ 
+     40,52,64,76,88,100,112,\ 
+     40, 52, 64, 76, 88, 100, 112
+#define AUD_VOLUME_SID \
+     0,0,16,0,0,0,0,\ 
+     0,0,32,0,0,0,0,\ 
+     0,0,0,0,0,0,0
+
+#define AUD_VOLUME_MEDIA \
+     132, 148, 148, 148, 128, 148, 120,\    
+     88, 116, 144, 172, 200, 228, 255,\
+     124, 144, 164, 184, 204, 224, 255
+
+#define AUD_VOLUME_MATV \
+     0,43,85,128,171,213,255,\
+     88, 116, 144, 172, 200, 228, 255,\
+     124, 144, 164, 184, 204, 224, 255
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/med_audio_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/med_audio_default.h
new file mode 100644
index 0000000..096049d
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/med_audio_default.h
@@ -0,0 +1,709 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ * med_audio_default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related function or definition.
+ *
+ * Author:
+ * -------
+ * Chipeng Chang
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef MED_AUDIO_CUSTOM_H
+#define MED_AUDIO_CUSTOM_H
+// normal mode parameters ------------------------
+#define NORMAL_SPEECH_OUTPUT_FIR_COEFF \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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
+// headset mode parameters ------------------------
+#define HEADSET_SPEECH_OUTPUT_FIR_COEFF \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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
+// handfree mode parameters ------------------------
+#define HANDFREE_SPEECH_OUTPUT_FIR_COEFF \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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
+// VoIP_BT  mode parameters ------------------------
+#define VOIPBT_SPEECH_OUTPUT_FIR_COEFF \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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
+// VoIP_NORMAL mode parameters ------------------------
+#define VOIPNORMAL_SPEECH_OUTPUT_FIR_COEFF \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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
+// VoIP_Handfree mode parameters ------------------------
+#define VOIPHANDFREE_SPEECH_OUTPUT_FIR_COEFF \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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
+// AUX1 mode parameters ------------------------
+#define AUX1_SPEECH_OUTPUT_FIR_COEFF \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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
+// AUX2 mode parameters ------------------------
+#define AUX2_SPEECH_OUTPUT_FIR_COEFF \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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, \
+    \
+    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_MED_FIR_COEFF \
+    NORMAL_SPEECH_OUTPUT_FIR_COEFF,\
+    HEADSET_SPEECH_OUTPUT_FIR_COEFF ,\
+    HANDFREE_SPEECH_OUTPUT_FIR_COEFF ,\
+    VOIPBT_SPEECH_OUTPUT_FIR_COEFF,\
+    VOIPNORMAL_SPEECH_OUTPUT_FIR_COEFF,\
+    VOIPHANDFREE_SPEECH_OUTPUT_FIR_COEFF,\
+    AUX1_SPEECH_OUTPUT_FIR_COEFF,\
+    AUX2_SPEECH_OUTPUT_FIR_COEFF
+#define SPEECH_INPUT_MED_FIR_COEFF\
+    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,\
+                                      \
+    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,\
+                                      \
+    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,\
+                                      \
+    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,\
+                                      \
+    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,\
+                                      \
+    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,\
+                                      \
+    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,\
+                                      \
+    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 FIR_output_index \
+    0,0,0,0,0,0,0,0
+#define FIR_input_index \
+    0,0,0,0,0,0,0,0
+#define MED_SPEECH_NORMAL_MODE_PARA \
+     0,     0,     0,     0,     0,     0,     0,     0,\ 
+     0,     0,     0,     0,     0,     0,     0,     0 
+#define MED_SPEECH_EARPHONE_MODE_PARA \
+     0,     0,     0,     0,     0,     0,     0,     0,\ 
+     0,     0,     0,     0,     0,     0,     0,     0 
+#define MED_SPEECH_BT_EARPHONE_MODE_PARA \
+     0,     0,     0,     0,     0,     0,     0,     0,\ 
+     0,     0,     0,     0,     0,     0,     0,     0 
+#define MED_SPEECH_LOUDSPK_MODE_PARA \
+     0,     0,     0,     0,     0,     0,     0,     0,\ 
+     0,     0,     0,     0,     0,     0,     0,     0 
+#define MED_SPEECH_CARKIT_MODE_PARA \
+     0,     0,     0,     0,     0,     0,     0,     0,\ 
+     0,     0,     0,     0,     0,     0,     0,     0 
+#define MED_SPEECH_BT_CORDLESS_MODE_PARA \
+    0,      0,      0,      0,      0,      0,      0,      0, \
+    0,      0,      0,      0,      0,      0,      0,      0
+#define MED_SPEECH_AUX1_MODE_PARA \
+    0,      0,      0,      0,      0,      0,      0,      0, \
+    0,      0,      0,      0,      0,      0,      0,      0
+#define MED_SPEECH_AUX2_MODE_PARA \
+    0,      0,      0,      0,      0,      0,      0,      0, \
+    0,      0,      0,      0,      0,      0,      0,      0
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_anc_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_anc_default.h
new file mode 100644
index 0000000..b553570
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_anc_default.h
@@ -0,0 +1,119 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ *
+ * Author:
+ * -------
+ * Doug Wang
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$ 1.0.0
+ * $Modtime:$
+ * $Log:$
+ *
+ *
+ *
+ *******************************************************************************/
+#ifndef SPH_COEFF_ANC_DEFAULT_H
+#define SPH_COEFF_ANC_DEFAULT_H
+
+#define DEFAULT_SPEECH_ANC_PARA \
+      0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, \
+      0, 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 DEFAULT_SPEECH_ANC_APPLY 1
+#define DEFAULT_SPEECH_ANC_LOG_ENABLE 0
+#define DEFAULT_SPEECH_ANC_LOG_DOWNSAMPLE 1
+#define DEFAULT_SPEECH_ANC_DL_PGA 0
+
+
+#endif  //SPH_COEFF_ANC_DEFAULT_H
\ No newline at end of file
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_default.h
new file mode 100644
index 0000000..9610dd6
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_default.h
@@ -0,0 +1,279 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ *
+ * Author:
+ * -------
+ * ChiPeng
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$ 1.0.0
+ * $Modtime:$
+ * $Log:$
+ *
+ * 06 26 2010 chipeng.chang
+ * [ALPS00002705][Need Patch] [Volunteer Patch] ALPS.10X.W10.11 Volunteer patch for speech parameter 
+ * modify speech parameters.
+ *
+ * Mar 15 2010 mtk02308
+ * [ALPS] Init Custom parameter
+ *
+ *
+
+ *
+ *
+ *******************************************************************************/
+#ifndef SPEECH_COEFF_DEFAULT_H
+#define SPEECH_COEFF_DEFAULT_H
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+//speech parameter depen on BT_CHIP cersion
+#if defined(MTK_MT6611)
+
+#define BT_COMP_FILTER (1 << 15)
+#define BT_SYNC_DELAY  86
+
+#elif defined(MTK_MT6612)
+
+#define BT_COMP_FILTER (1 << 15)
+#define BT_SYNC_DELAY  86
+
+#elif defined(MTK_MT6616) || defined(MTK_MT6620) || defined(MTK_MT6622) || defined(MTK_MT6626) || defined(MTK_MT6628)
+
+#define BT_COMP_FILTER (1 << 15)
+#define BT_SYNC_DELAY  86
+
+#else // MTK_MT6620
+
+#define BT_COMP_FILTER (0 << 15)
+#define BT_SYNC_DELAY  86
+
+#endif
+
+#ifdef __MTK_DUAL_MIC_SUPPORT__
+
+  #ifndef MTK_INTERNAL
+  #define SPEECH_MODE_PARA13 (371)
+  #define SPEECH_MODE_PARA14 (23)
+  #define SPEECH_MODE_PARA03 (29)
+  #define SPEECH_MODE_PARA08 (400)
+  #else
+  #define SPEECH_MODE_PARA13 (0)
+  #define SPEECH_MODE_PARA14 (0)
+  #define SPEECH_MODE_PARA03 (31)
+  #define SPEECH_MODE_PARA08 (80)
+  #endif
+
+#else
+#define SPEECH_MODE_PARA13 (0)
+#define SPEECH_MODE_PARA14 (0)
+#define SPEECH_MODE_PARA03 (31)
+#define SPEECH_MODE_PARA08 (80)
+
+
+#endif
+
+#if (defined(__NXP_SMARTPA_SUPPORT__) || defined(__MTK_SPEAKER_MONITOR_SUPPORT__))
+	#define MANUAL_CLIPPING (1 << 15)
+	#define NXP_DELAY_REF   (1 << 6)
+	#define PRE_CLIPPING_LEVEL 32767
+#else
+	#define MANUAL_CLIPPING (0 << 15)
+	#define NXP_DELAY_REF   (0 << 6) 
+	#define PRE_CLIPPING_LEVEL 10752
+#endif
+
+
+
+#define DEFAULT_SPEECH_NORMAL_MODE_PARA \
+   96,   253,  16388,    31,   57351,    2079,   400,     64, \
+   80,  4293,      611,       0,   20488,      0,     0,  8192
+
+#define DEFAULT_SPEECH_EARPHONE_MODE_PARA \
+    0,        253,  10756,      31,   57351,     31,   400,     64, \
+    80,  4325,    611,     0, 20488,     0,     0,     0  
+
+#define DEFAULT_SPEECH_BT_EARPHONE_MODE_PARA \
+     0,   253, 10756,    31, 53255,  31,   400,     0, \
+    80,  4325,    611,     0, 20488 | BT_COMP_FILTER,  0,     0,     BT_SYNC_DELAY
+
+#define DEFAULT_SPEECH_LOUDSPK_MODE_PARA \
+    96|MANUAL_CLIPPING ,   224,  5256,    31, 57351, 26655,   400,   132, \
+    84,  4325,    611,     0, 20488|NXP_DELAY_REF,     0,     0,     0
+
+#define DEFAULT_SPEECH_CARKIT_MODE_PARA \
+    96,   224,  5256,    31, 57351, 24607,   400,   132, \
+    84,  4325,    611,     0, 20488,        0,     0,     0
+
+#define DEFAULT_SPEECH_BT_CORDLESS_MODE_PARA \
+     0,   479, 10756,    28, 53255,  31,   400,     0, \
+    4048,  4325,    611,     0, 20488 | BT_COMP_FILTER,  0,     0,     BT_SYNC_DELAY
+
+#define DEFAULT_SPEECH_AUX1_MODE_PARA \
+    0,      0,      0,      0,      0,      0,      0,      0, \
+    0,      0,      0,      0,      0,      0,      0,      0
+
+#define DEFAULT_SPEECH_AUX2_MODE_PARA \
+    0,      0,      0,      0,      0,      0,      0,      0, \
+    0,      0,      0,      0,      0,      0,      0,      0
+
+#define DEFAULT_SPEECH_VOICE_TRACKING_MODE_PARA \
+    96|MANUAL_CLIPPING ,   224,  5256,    31, 57351, 24607,   400,   132, \
+    84,  4325,    611,     0, 8200|NXP_DELAY_REF,     883,     23,     0
+
+#define DEFAULT_SPEECH_HAC_MODE_PARA \
+   96,   253,  16388,     SPEECH_MODE_PARA03,   57351,     799,   400,     64, \
+   SPEECH_MODE_PARA08,  4325,      611,       0,   20488,      0|SPEECH_MODE_PARA13,     0|SPEECH_MODE_PARA14,  8192
+#define DEFAULT_SPEECH_COMMON_PARA \
+    0,  55997,  31000,    PRE_CLIPPING_LEVEL,      32769,      0,      0,      0, \
+    0,      0,      0,      0
+
+#define DEFAULT_SPEECH_VOL_PARA \
+    0,      0,      0,      0
+
+#define DEFAULT_AUDIO_DEBUG_INFO \
+    0,      0,      0,      0,      0,      0,      0,      0, \
+    0,      0,      0,      0,      0,      0,      0,      0
+
+#define DEFAULT_VM_SUPPORT  FALSE
+
+#define DEFAULT_AUTO_VM     FALSE
+
+#define MICBAIS     1900
+
+#define DEFAULT_WB_SPEECH_NORMAL_MODE_PARA \
+    96,   253, 16388,    SPEECH_MODE_PARA03, 57607,    799,   400,     64, \
+    SPEECH_MODE_PARA08,  4325,   611,     0,  16392,    0|SPEECH_MODE_PARA13,     0|SPEECH_MODE_PARA14,  8192  
+
+#define DEFAULT_WB_SPEECH_EARPHONE_MODE_PARA \
+     0,   189, 10756,    31, 57607,     31,  400,     64, \
+    80,  4325,   611,     0,  16392,     0,     0,     0  
+
+#define DEFAULT_WB_SPEECH_BT_EARPHONE_MODE_PARA \
+     0,   253, 10756,    31, 53511,  31,   400,     0, \
+    80,  4325,   611,     0,  16392 | BT_COMP_FILTER,  0,     0, BT_SYNC_DELAY  
+
+#define DEFAULT_WB_SPEECH_LOUDSPK_MODE_PARA \
+    96|MANUAL_CLIPPING,   224,  5256,    31, 57607, 24607,   400,   132, \
+    84,  4325,   611,     0,  16392|NXP_DELAY_REF,     0,     0,     0  
+
+#define DEFAULT_WB_SPEECH_CARKIT_MODE_PARA \
+    96,   224,  5256,    31, 57607, 24607,   400,   132, \
+    84,  4325,   611,     0,  16392,     0,     0,     0  
+
+#define DEFAULT_WB_SPEECH_BT_CORDLESS_MODE_PARA \
+     0,   479, 10756,    28, 53511,  31,   400,     0, \
+    4048,  4325,   611,     0,  16392 | BT_COMP_FILTER,  0,     0, BT_SYNC_DELAY  
+
+#define DEFAULT_WB_SPEECH_AUX1_MODE_PARA \
+    96,   224,  5256,    31, 57607,     0,   400,     0,  4112,  4325,    11,     0,     0,     0,     0,     0 
+
+#define DEFAULT_WB_SPEECH_AUX2_MODE_PARA \
+    0,      0,     0,     0,       0,     0,     0,     0, \
+    0,      0,     0,     0,       0,     0,     0,     0  
+
+#define DEFAULT_WB_SPEECH_VOICE_TRACKING_MODE_PARA \
+    96|MANUAL_CLIPPING,   224,  5256,    31, 57607, 24607,   400,   132, \
+    84,  4325,   611,     0,  8200|NXP_DELAY_REF,     883,     23,     0  
+
+#define DEFAULT_WB_SPEECH_HAC_MODE_PARA \
+    96,   253, 16388,    SPEECH_MODE_PARA03, 57607,    799,   400,     64, \
+    SPEECH_MODE_PARA08,  4325,   611,     0,  16392,    0|SPEECH_MODE_PARA13,     0|SPEECH_MODE_PARA14,  8192  
+
+/* The Bluetooth PCM digital volume */
+/* default_bt_pcm_in_vol : uplink, only for enlarge volume,
+                           0x100 : 0dB  gain
+                           0x200 : 6dB  gain
+                           0x300 : 9dB  gain
+                           0x400 : 12dB gain
+                           0x800 : 18dB gain
+                           0xF00 : 24dB gain             */
+#define DEFAULT_BT_PCM_IN_VOL        0x100
+/* default_bt_pcm_out_vol : downlink gain,
+                           0x1000 : 0dB; maximum 0x7FFF  */
+#define DEFAULT_BT_PCM_OUT_VOL       0x1000
+
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_dmnr_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_dmnr_default.h
new file mode 100644
index 0000000..6d72029
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_dmnr_default.h
@@ -0,0 +1,130 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ *
+ * Author:
+ * -------
+ * Charlie Lu
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$ 1.0.0
+ * $Modtime:$
+ * $Log:$
+ *
+ *
+ *
+ *******************************************************************************/
+#ifndef DMNR_PAR_SPEECH_COEFF_DEFAULT_H
+#define DMNR_PAR_SPEECH_COEFF_DEFAULT_H
+
+#define DEFAULT_SPEECH_DUAL_MIC_ABF_PARA \
+      0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, \
+      0, 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_SPEECH_DUAL_MIC_ABFWB_PARA \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 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_SPEECH_DUAL_MIC_ABFWB_PARA_VOIP \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 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
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_dmnr_handsfree_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_dmnr_handsfree_default.h
new file mode 100644
index 0000000..21ca280
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_dmnr_handsfree_default.h
@@ -0,0 +1,143 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ *
+ * Author:
+ * -------
+ * Charlie Lu
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$ 1.0.0
+ * $Modtime:$
+ * $Log:$
+ *
+ *
+ *
+ *******************************************************************************/
+#ifndef DMNR_HANDSFREE_PAR_SPEECH_COEFF_DEFAULT_H
+#define DMNR_HANDSFREE_PAR_SPEECH_COEFF_DEFAULT_H
+
+
+#define DEFAULT_SPEECH_DUAL_MIC_ABF_PARA_LoudSPK \
+      0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, \
+      0, 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_SPEECH_DUAL_MIC_ABFWB_PARA_LoudSPK \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 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_SPEECH_DUAL_MIC_ABFWB_PARA_VR \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 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_SPEECH_DUAL_MIC_ABFWB_PARA_VOIP_LoudSPK \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 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
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_lpbk_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_lpbk_default.h
new file mode 100644
index 0000000..9e79b5b
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_lpbk_default.h
@@ -0,0 +1,105 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ * sph_coeff_lpbk_default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related function or definition.
+ *
+ * Author:
+ * -------
+ * Tina Tsai
+ *
+ ****************************************************************************/
+#ifndef SPH_COEFF_LPBK_DEFAULT_H
+#define SPH_COEFF_LPBK_DEFAULT_H
+
+#define DEFAULT_SPEECH_LPBK_NORMAL_MODE_PARA \
+   96,   253,  16388,     31,   57351,     799,   400,     64, \
+   80,  4325,      611,       0,   20488,      0,     0,  8192
+
+#define DEFAULT_SPEECH_LPBK_EARPHONE_MODE_PARA \
+    0,        189,  10756,      31,   57351,     31,   400,     64, \
+    80,  4325,    611,     0, 20488,     0,     0,     0  
+
+#define DEFAULT_SPEECH_LPBK_LOUDSPK_MODE_PARA \
+    96,   224,  5256,    31, 57351, 24607,   400,   132, \
+    84,  4325,    611,     0, 20488,     0,     0,     0
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_record_mode_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_record_mode_default.h
new file mode 100644
index 0000000..9bcd912
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/sph_coeff_record_mode_default.h
@@ -0,0 +1,207 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ *
+ * Author:
+ * -------
+ * Charlie Lu
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$ 1.0.0
+ * $Modtime:$
+ * $Log:$
+ *
+ *
+ *
+ *******************************************************************************/
+#ifndef HD_RECORD_MODE_SPEECH_COEFF_DEFAULT_H
+#define HD_RECORD_MODE_SPEECH_COEFF_DEFAULT_H
+
+#define DEFAULT_HD_RECORD_SPH_MODE_PAR \
+    0,   479, 16388, 36892,  4356,  8192,   784,     4,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892,  4356,  8192,   784,     4,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37639,  8192,   896,     4, 36624,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37639,  8192,  1152,     4, 36624,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37127,  8192,  1152,     4, 36560,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37127,  8192,  1152,     4, 36560,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37127,  8192,  1664,    12, 36688,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37127,  8192,  1664,    12, 36688,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37639,  8192,   896,     4, 36624,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37639,  8192,  1152,     4, 36624,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37127,  8192,  1152,     4, 36560,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37127,  8192,  1152,     4, 36560,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   192, 32512, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0, 32520,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+34464,   194, 32512,    28, 40960,    28,     0,     10,   468,   197,   611,     0,  32520,     0,     0,     0, \
+    0,   479, 32512,    28, 40960,    28,     0,     4,   468,   197,   611,     0, 32520,     0,     0,     0, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0,   479, 16388, 36892, 37124,  8192,   768,     0,  4048,   197,   611,     0,     0,     0,     0,  8192, \
+    0, 479, 16388, 36892, 37124, 8192,  768, 0,  4048,  197, 611, 0, 0, 0, 0, 8192
+
+#define DEFAULT_HD_RECORD_MODE_DEV_MAPPING \
+    0, 1, 3, \
+    0, 1, 3, \
+    0, 1, 3, \
+    0, 1, 3, \
+    0, 1, 3, \
+    0, 1, 3, \
+    0, 1, 3, \
+    0, 1, 3, \
+    0, 1, 3, \
+    0, 1, 3
+
+#define DEFAULT_HD_RECORD_MODE_INPUT_SRC_MAPPING \
+    5, 2, 3, \
+    5, 2, 3, \
+    5, 2, 3, \
+    5, 2, 3, \
+    5, 2, 3, \
+    5, 2, 3, \
+    5, 2, 3, \
+    5, 2, 3, \
+    5, 2, 3, \
+    5, 2, 3
+
+#define DEFAULT_STEREO_FLAG \
+    1, 0
+#define DEFAULT_MONO_FLAG \
+    0, 0
+
+#define DEFAULT_HD_RECORD_MODE_STEREO_FLAGS \
+    DEFAULT_MONO_FLAG, \
+    DEFAULT_STEREO_FLAG, \
+    DEFAULT_STEREO_FLAG, \
+    DEFAULT_STEREO_FLAG, \
+    DEFAULT_STEREO_FLAG, \
+    DEFAULT_MONO_FLAG, \
+    DEFAULT_STEREO_FLAG, \
+    DEFAULT_MONO_FLAG, \
+    DEFAULT_MONO_FLAG, \
+    DEFAULT_MONO_FLAG, \
+    DEFAULT_MONO_FLAG, \
+    DEFAULT_MONO_FLAG, \
+    DEFAULT_MONO_FLAG, \
+    DEFAULT_MONO_FLAG, \
+    DEFAULT_MONO_FLAG
+
+#define DEFAULT_HD_RECORD_NUM_VOICE_RECOGNITION_SCENES 1
+#define DEFAULT_HD_RECORD_NUM_VOICE_SCENES 3
+#define DEFAULT_HD_RECORD_NUM_VIDEO_SCENES 2
+#define DEFAULT_HD_RECORD_NUM_VOICE_UNLOCK_SCENES 1
+#define DEFAULT_HD_RECORD_NUM_CUSTOMIZATION_SCENES 3
+
+#define DEFAULT_HD_RECORD_SCENE_TABLE \
+    0,  1,  0xFF,\
+    2,  3,  29,\
+    4,  5,  0xFF,\
+    6,  7,  0xFF,\
+    8,  9,  0xFF,\
+    10, 11, 0xFF,\
+    12, 13, 0xFF,\
+    14, 15, 0xFF,\
+    16, 17, 0xFF,\
+    18, 19, 0xFF
+
+#define DEFAULT_HD_RECORD_SCENE_NAME \
+    "VR",\
+    "Normal",\
+    "Meeting",\
+    "Lecture",\
+    "Normal",\
+    "Meeting",\
+    "VoiceUnLk",\
+    "Reserve1",\
+    "Reserve2",\
+    "Reserve3"
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/voice_recognition_custom.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/voice_recognition_custom.h
new file mode 100644
index 0000000..36dc23b
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgdefault/voice_recognition_custom.h
@@ -0,0 +1,115 @@
+#ifndef VOICE_RECOGNITION_CUSTOM_H
+#define VOICE_RECOGNITION_CUSTOM_H
+
+/****************************************************
+* Define default voice feature customization parameters
+*****************************************************/
+
+
+#define DEFAULT_AP_NUM 5
+#define DEFAULT_LANGUAGE_NUM 3
+
+// for voice ui - pattern file
+#define DEFAULT_LANGUAGE_FOLDER_NAME \
+    "Chinese-Mandarin",\
+    "Chinese-Taiwan",\
+    "English",\
+    "Reserve1",\
+    "Reserve2",\
+    "Reserve3",\
+    "Reserve4",\
+    "Reserve5"
+    
+#define DEFAULT_COMMAND_NUM_PER_LAN \
+    17,17,17,0,0,0,0,0
+
+#define DEFAULT_PHONE_SUPPORT_INFO \
+    1,2,0,0,0,0,0,0, \
+    1,2,0,0,0,0,0,0, \
+    1,2,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0, \
+    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 DEFAULT_CAMERA_SUPPORT_INFO \
+    3,4,0,0,0,0,0,0, \
+    3,4,0,0,0,0,0,0, \
+    3,4,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0, \
+    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 DEFAULT_ALARM_SUPPORT_INFO \
+    5,6,16,17,0,0,0,0, \
+    5,6,16,17,0,0,0,0, \
+    5,6,16,17,0,0,0,0, \
+    0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0, \
+    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 DEFAULT_MUSIC_SUPPORT_INFO \
+    7,8,9,10,11,12,13,0, \
+    7,8,9,10,11,12,13,0, \
+    7,8,9,10,11,12,13,0, \
+    0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0, \
+    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 DEFAULT_EBOOK_SUPPORT_INFO \
+    14,15,0,0,0,0,0,0, \
+    14,15,0,0,0,0,0,0, \
+    14,15,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0, \
+    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 DEFAULT_RESERVE_SUPPORT_INFO \
+    0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0, \
+    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 DEFAULT_AP_SUPPORT_INFO \
+    DEFAULT_PHONE_SUPPORT_INFO, \
+    DEFAULT_CAMERA_SUPPORT_INFO, \
+    DEFAULT_ALARM_SUPPORT_INFO, \
+    DEFAULT_MUSIC_SUPPORT_INFO, \
+    DEFAULT_EBOOK_SUPPORT_INFO, \
+    DEFAULT_RESERVE_SUPPORT_INFO, \
+    DEFAULT_RESERVE_SUPPORT_INFO, \
+    DEFAULT_RESERVE_SUPPORT_INFO, \
+    DEFAULT_RESERVE_SUPPORT_INFO, \
+    DEFAULT_RESERVE_SUPPORT_INFO, \
+    DEFAULT_RESERVE_SUPPORT_INFO, \
+    DEFAULT_RESERVE_SUPPORT_INFO, \
+    DEFAULT_RESERVE_SUPPORT_INFO, \
+    DEFAULT_RESERVE_SUPPORT_INFO, \
+    DEFAULT_RESERVE_SUPPORT_INFO, \
+    DEFAULT_RESERVE_SUPPORT_INFO
+
+// for CTO
+#define DEFAULT_ALGORITHM_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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+    8,7,6,7,14,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+    
+#endif
\ No newline at end of file
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_ADC_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_ADC_File.h
new file mode 100644
index 0000000..ff56d4f
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_ADC_File.h
@@ -0,0 +1,115 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_ADC_File.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    header file of ADC CFG file
+ *
+ * Author:
+ * -------
+ *   MTK80198(Chunlei Wang)
+ *
+ *
+ *
+ *******************************************************************************/
+
+
+#ifndef _CFG_AUXADC_FILE_H
+#define _CFG_AUXADC_FILE_H
+
+
+
+// the record structure define of adc nvram file
+typedef struct
+{
+    int Slop[9];
+    int Offset[9];
+    int cal;
+}AUXADC_CFG_Struct;
+
+///please define it according to your module
+#define CFG_FILE_AUXADC_REC_SIZE    sizeof(AUXADC_CFG_Struct)
+#define CFG_FILE_AUXADC_REC_TOTAL   1
+
+
+#endif
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_AUDIO_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_AUDIO_File.h
new file mode 100644
index 0000000..066d632
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_AUDIO_File.h
@@ -0,0 +1,931 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ * cfg_audio_file.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related function or definition.
+ *
+ * Author:
+ * -------
+ * Ning.F
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 12 29 2012 donglei.ji
+ * [ALPS00425279] [Need Patch] [Volunteer Patch] voice ui and password unlock feature check in
+ * voice ui - NVRAM .
+ *
+ * 08 26 2012 weiguo.li
+ * [ALPS00347285] [Need Patch] [Volunteer Patch]LGE AudioGainTable modification
+ * .
+ *
+ * 07 29 2012 weiguo.li
+ * [ALPS00319405] ALPS.JB.BSP.PRA check in CR for Jades
+ * .
+ *
+ * Jun 22 2009 mtk01352
+ * [DUMA00007771] Moving modem side customization to AP
+ *
+ *
+ * Apr 29 2009 mtk80306
+ * [DUMA00116080] revise the customization of nvram
+ * revise nvram customization
+ *
+ * Mar 21 2009 mtk80306
+ * [DUMA00112158] fix the code convention.
+ * modify code convention
+ *
+ * Mar 9 2009 mtk80306
+ * [DUMA00111088] nvram customization
+ * nvram customization
+ *
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef _CFG_AUDIO_FILE_H
+#define _CFG_AUDIO_FILE_H
+
+#define CUSTOM_VOLUME_STEP (7)
+#define AUDIO_MAX_VOLUME_STEP (15)
+
+#define NB_FIR_NUM (45)
+#define NB_FIR_INDEX_NUM   (6)
+#define SPEECH_COMMON_NUM (12)
+#define SPEECH_PARA_MODE_NUM     (8)
+#define SPEECH_PARA_NUM                (16)
+#define AUDIO_EQ_PARAM_NUM         (8)
+
+#define WB_FIR_NUM (90)
+#define WB_FIR_INDEX_NUM   (6)
+
+#define HD_REC_MODE_INDEX_NUM   (30)
+#define HD_REC_FIR_INDEX_NUM    (16)	//extend 8-->16
+
+#define VOIP_INDEX_NUM   (4)
+
+// for voice ui feature
+#define VOICE_FOLDER_NAME_LEN_MAX 32
+#define VOICE_AP_NUM_MAX 16
+#define VOICE_LANGUAGE_NUM_MAX 8
+#define VOICE_CMDS_NUM_MAX 8
+#define VOICE_CMDS_PER_LAN_NUM_MAX 32
+#define VOICE_RECOG_FEATURE_NUM_MAX 8
+#define VOICE_RECOG_PARAM_NUM_MAX 32
+/* audio nvram structure definition*/
+typedef enum
+{
+    VOL_NORMAL   = 0 ,
+    VOL_HEADSET      ,
+    VOL_HANDFREE     ,
+    MAX_VOL_CATE
+} volume_category_enum;
+
+typedef enum
+{
+    VOL_TYPE_TON  = 0 ,
+    VOL_TYPE_KEY      ,
+    VOL_TYPE_MIC      ,
+    VOL_TYPE_FMR      ,
+    VOL_TYPE_SPH      ,
+    VOL_TYPE_SID	    ,
+    VOL_TYPE_MEDIA    ,
+    MAX_VOL_TYPE
+} volume_type_enum;
+
+// new volume customization data structure
+enum VolumeType {
+    VER1_VOL_TYPE_RING = 0,
+    VER1_VOL_TYPE_SIP,
+    VER1_VOL_TYPE_MIC,
+    VER1_VOL_TYPE_FM,
+    VER1_VOL_TYPE_SPH,
+    VER1_VOL_TYPE_SPH2,
+    VER1_VOL_TYPE_SID,
+    VER1_VOL_TYPE_MEDIA,
+    VER1_VOL_TYPE_MATV,
+    VER1_NUM_OF_VOL_TYPE
+};
+
+enum VolumeMode {
+    VOLUME_NORMAL_MODE = 0,
+    VOLUME_HEADSET_MODE,
+    VOLUME_SPEAKER_MODE,
+    VOLUME_HEADSET_SPEAKER_MODE,
+    NUM_OF_VOL_MODE
+};
+
+enum VOLUME_NORMAL_TYPE {
+    NORMAL_AUDIO_BUFFER = 0,
+    NORMAL_FM_RECORD_A,
+    NORMAL_FM_RECORD_D,
+    NORMAL_SIP_AUDIO_BUFFER,
+    NORMAL_RSERVED_2,
+    NORMAL_RSERVED_3,
+    NORMAL_VOLUME_TYPE_MAX
+};
+
+enum VOLUME_HEADSET_TYPE {
+    HEADSET_AUDIO_BUFFER = 0,
+    HEADSET_FM_RECORD_A,
+    HEADSET_FM_RECORD_D,
+    HEADSET_SIP_AUDIO_BUFFER,
+    HEADSET_RSERVED_2,
+    HEADSET_RSERVED_3,
+    HEADSET_VOLUME_TYPE_MAX
+};
+
+enum VOLUME_SPEAKER_TYPE {
+    SPEAKER_AMP = 0,
+    SPEAKER_FM_RECORD_A,
+    SPEAKER_FM_RECORD_D,
+    SPEAKER_SIP_AUDIO_BUFFER,
+    SPEAKER_RSERVED_2,
+    SPEAKER_RSERVED_3,
+    SPEAKER_VOLUME_TYPE_MAX
+};
+
+enum VOLUME_HEADSET_SPEAKER_TYPE {
+    HEADSET_SPEAKER_AUDIO_BUFFER = 0,
+    HEADSET_SPEAKER_AMP,
+    HEADSET_SPEAKER_IV_BUFFER,
+    HEADSET_SPEAKER_FM_RECORD_A,
+    HEADSET_SPEAKER_FM_RECORD_D,
+    HEADSET_SPEAKER_SIP_AUDIO_BUFFER,
+    HEADSET_SPEAKER_RSERVED_2,
+    HEADSET_SPEAKER_RSERVED_3,
+    HEADSET_SPEAKER_VOLUME_TYPE_MAX
+};
+
+// use for external amp
+enum VOLUME_EXTAMP_TYPE {
+    VOLUME_IV_BUFFER_EXTAMP = 0,
+    VOLUME_AUDIO_BUFFER_EXTAMP,
+    VOLUME_EXTAMP, // control exp amp gain
+    VOLUME_EXTAMP_RSERVED_1,
+    VOLUME_EXTAMP_RSERVED_2,
+    VOLUME_EXTAMP_RSERVED_3,
+    EXTAMP_VOLUME_TYPE_MAX
+};
+
+#define     NUM_ABF_PARAM 44
+#define     NUM_ABFWB_PARAM 76
+
+//DMNR calibration data
+typedef struct _AUDIO_CUSTOM_EXTRA_PARAM_STRUCT
+{
+	/* ABF parameters */
+	unsigned short ABF_para[NUM_ABF_PARAM + NUM_ABFWB_PARAM];	 //in-call DMNR normal mode with WB
+	unsigned short ABF_para_LoudSPK[NUM_ABF_PARAM + NUM_ABFWB_PARAM];	 //in-call DMNR loud speaker mode with WB
+	unsigned short ABF_para_VR[NUM_ABFWB_PARAM];	//VR DMNR, only WB
+	unsigned short ABF_para_VOIP[NUM_ABFWB_PARAM];	  //VoIP normal mode DMNR, only WB
+	unsigned short ABF_para_VOIP_LoudSPK[NUM_ABFWB_PARAM];	  //VoIP loud speaker mode DMNR, only WB
+} AUDIO_CUSTOM_EXTRA_PARAM_STRUCT;
+
+
+#define CFG_FILE_SPEECH_DUAL_MIC_SIZE    sizeof(AUDIO_CUSTOM_EXTRA_PARAM_STRUCT)
+#define CFG_FILE_SPEECH_DUAL_MIC_TOTAL   1
+
+#define NUM_ANC_PARAM 60
+
+typedef struct _AUDIO_ANC_CUSTOM_PARAM_STRUCT
+{
+   unsigned short ANC_para[NUM_ANC_PARAM];
+   unsigned short ANC_apply;
+   unsigned short ANC_log;
+   unsigned short ANC_log_downsample;
+   unsigned char ANC_dl_pga;
+} AUDIO_ANC_CUSTOM_PARAM_STRUCT;
+
+#define CFG_FILE_SPEECH_ANC_SIZE    sizeof(AUDIO_ANC_CUSTOM_PARAM_STRUCT)
+#define CFG_FILE_SPEECH_ANC_TOTAL 1
+
+typedef struct _AUDIO_CUSTOM_MAGI_CONFERENCE_STRUCT
+{
+   unsigned short sph_voice_tracking_mode_para[16]; 
+   unsigned short sph_voice_tracking_mode_wb_para[16];
+} AUDIO_CUSTOM_MAGI_CONFERENCE_STRUCT;
+
+#define CFG_FILE_SPEECH_MAGI_CONFERENCE_SIZE    sizeof(AUDIO_CUSTOM_MAGI_CONFERENCE_STRUCT)
+#define CFG_FILE_SPEECH_MAGI_CONFERENCE_TOTAL 1
+
+typedef struct _AUDIO_CUSTOM_HAC_PARAM_STRUCT
+{
+    /* speech enhancement */
+    unsigned short speech_hac_mode_nb_para[16];
+    /* WB speech enhancement */
+    unsigned short speech_hac_mode_wb_para[16];    
+    /* speech input FIR */
+    short sph_hac_in_fir[45];
+    /* speech output FIR */
+    short sph_hac_out_fir[45];
+    
+    /* WB speech input FIR */
+    short sph_hac_wb_in_fir[90];
+    /* WB speech output FIR */
+    short sph_hac_wb_out_fir[90];
+    /* mic volume setting */    
+    unsigned char audiovolume_mic_hac[AUDIO_MAX_VOLUME_STEP];
+    /* speech dl volume setting */    
+    unsigned char audiovolume_sph_hac[AUDIO_MAX_VOLUME_STEP];
+    /* sidetone volume setting */    
+    unsigned char audiovolume_sid_hac[AUDIO_MAX_VOLUME_STEP];
+    
+} AUDIO_CUSTOM_HAC_PARAM_STRUCT;
+
+#define CFG_FILE_SPEECH_HAC_PARAM_SIZE    sizeof(AUDIO_CUSTOM_HAC_PARAM_STRUCT)
+#define CFG_FILE_SPEECH_HAC_PARAM_TOTAL 1
+
+typedef struct _AUDIO_CUSTOM_SPEECH_LPBK_PARAM_STRUCT
+{
+    /* speech enhancement */
+    unsigned short lpbk_speech_mode_nb_para[3][16];
+    
+} AUDIO_CUSTOM_SPEECH_LPBK_PARAM_STRUCT;
+
+#define CFG_FILE_SPEECH_LPBK_PARAM_SIZE    sizeof(AUDIO_CUSTOM_SPEECH_LPBK_PARAM_STRUCT)
+#define CFG_FILE_SPEECH_LPBK_PARAM_TOTAL 1
+
+typedef struct _AUDIO_CUSTOM_PARAM_STRUCT
+{
+    /* volume setting */
+    unsigned char volume[MAX_VOL_CATE][MAX_VOL_TYPE];
+    /* speech enhancement */
+    unsigned short speech_common_para[SPEECH_COMMON_NUM];
+    unsigned short speech_mode_para[SPEECH_PARA_MODE_NUM][SPEECH_PARA_NUM];
+    unsigned short speech_volume_para[4];//in the feature, should extend to [MAX_VOL_CATE][MAX_VOL_TYPE][4]
+    /* debug info */
+    unsigned short debug_info[16];
+    /* speech input FIR */
+    short          sph_in_fir[NB_FIR_INDEX_NUM][NB_FIR_NUM];
+    /* speech output FIR */
+    short          sph_out_fir[NB_FIR_INDEX_NUM][NB_FIR_NUM];
+    /* digital gain of DL speech */
+    unsigned short Digi_DL_Speech;
+    /* digital gain of uplink speech */
+    unsigned short Digi_Microphone;
+    /* FM record volume*/
+    unsigned short FM_Record_Volume;
+    /* user mode : normal mode, earphone mode, loud speaker mode */
+    unsigned short Bluetooth_Sync_Type;
+    unsigned short Bluetooth_Sync_Length;
+    unsigned short bt_pcm_in_vol;
+    unsigned short bt_pcm_out_vol;
+    unsigned short user_mode;
+    /* auto VM record setting */
+    unsigned short uSupportVM;
+    unsigned short uAutoVM;
+    // mic bias
+    unsigned short uMicbiasVolt;
+
+} AUDIO_CUSTOM_PARAM_STRUCT;
+
+#define CFG_FILE_SPEECH_REC_SIZE        sizeof(AUDIO_CUSTOM_PARAM_STRUCT)
+#define CFG_FILE_SPEECH_REC_TOTAL   1
+
+typedef struct _AUDIO_CUSTOM_WB_A2M_PARAM_STRUCT_
+{
+    /* WB speech enhancement */
+    unsigned short speech_mode_wb_para[SPEECH_PARA_MODE_NUM][SPEECH_PARA_NUM];
+    /* WB speech input/output FIR */
+    short          sph_wb_fir[WB_FIR_INDEX_NUM][WB_FIR_NUM];
+    /* in_out flag */
+    short          input_out_fir_flag; // 0: input, 1: output
+} AUDIO_CUSTOM_WB_A2M_PARAM_STRUCT;
+
+typedef struct _AUDIO_CUSTOM_WB_PARAM_STRUCT
+{
+    /* WB speech enhancement */
+    unsigned short speech_mode_wb_para[SPEECH_PARA_MODE_NUM][SPEECH_PARA_NUM];
+    /* WB speech input FIR */
+    short          sph_wb_in_fir[WB_FIR_INDEX_NUM][WB_FIR_NUM];
+    /* WB speech output FIR */
+    short          sph_wb_out_fir[WB_FIR_INDEX_NUM][WB_FIR_NUM];
+} AUDIO_CUSTOM_WB_PARAM_STRUCT;
+
+#define CFG_FILE_WB_SPEECH_REC_SIZE        sizeof(AUDIO_CUSTOM_WB_PARAM_STRUCT)
+#define CFG_FILE_WB_SPEECH_REC_TOTAL   1
+
+#if defined(MTK_AUDIO_BLOUD_CUSTOMPARAMETER_V5)
+
+typedef struct _AUDIO_ACF_V5F_PARAM
+{
+    unsigned int bes_loudness_L_hpf_fc;
+    unsigned int bes_loudness_L_hpf_order;
+    unsigned int bes_loudness_L_lpf_fc;
+    unsigned int bes_loudness_L_lpf_order;
+    unsigned int bes_loudness_L_bpf_fc[8];
+    unsigned int bes_loudness_L_bpf_bw[8];
+    int          bes_loudness_L_bpf_gain[8];
+    unsigned int bes_loudness_R_hpf_fc;
+    unsigned int bes_loudness_R_hpf_order;
+    unsigned int bes_loudness_R_lpf_fc;
+    unsigned int bes_loudness_R_lpf_order;
+    unsigned int bes_loudness_R_bpf_fc[8];
+    unsigned int bes_loudness_R_bpf_bw[8];
+    int          bes_loudness_R_bpf_gain[8];
+    
+}AUDIO_ACF_V5F_PARAM;
+
+typedef struct _AUDIO_ACF_V5VIBSPK_PARAM
+{
+    unsigned int bes_loudness_bpf_coeff[2][6][3];
+
+}AUDIO_ACF_V5VIBSPK_PARAM;
+
+
+typedef struct _AUDIO_ACF_CUSTOM_PARAM_STRUCT
+{
+    
+    union{
+        AUDIO_ACF_V5F_PARAM V5F;
+        AUDIO_ACF_V5VIBSPK_PARAM V5ViVSPK;
+    }bes_loudness_f_param;
+    unsigned int bes_loudness_Sep_LR_Filter;
+    unsigned int bes_loudness_WS_Gain_Max;
+    unsigned int bes_loudness_WS_Gain_Min;
+    unsigned int bes_loudness_Filter_First;
+    unsigned int bes_loudness_Num_Bands;
+    unsigned int bes_loudness_Flt_Bank_Order;
+    unsigned int bes_loudness_Cross_Freq[7];
+    int DRC_Th[8][5];
+    int DRC_Gn[8][5];
+    int SB_Gn[8];
+    unsigned int SB_Mode[8];
+    unsigned int DRC_Delay;
+    unsigned int Att_Time[8][6];
+    unsigned int Rel_Time[8][6];
+    int Hyst_Th[8][6];
+    int Lim_Th;
+    int Lim_Gn;
+    unsigned int Lim_Const;
+    unsigned int Lim_Delay;
+    int SWIPRev;
+} AUDIO_ACF_CUSTOM_PARAM_STRUCT;
+#if 0
+typedef struct _AUDIO_ACF_CUSTOM_PARAM_STRUCT
+{
+    unsigned int bes_loudness_hsf_coeff_L[2][9][5];     // Compensation Filter HSF coeffs	[9][4]->[2][9][5]
+    unsigned int bes_loudness_bpf_coeff_L[8][6][3];  // Compensation Filter BPF coeffs	[4][6][3]->[6][6][3]->[8][6][3]
+    unsigned int bes_loudness_lpf_coeff_L[6][3];
+
+    unsigned int bes_loudness_hsf_coeff_R[2][9][5];     // Compensation Filter HSF coeffs	[9][4]->[2][9][5]
+    unsigned int bes_loudness_bpf_coeff_R[8][6][3];  // Compensation Filter BPF coeffs	[4][6][3]->[6][6][3]->[8][6][3]
+    unsigned int bes_loudness_lpf_coeff_R[6][3];
+
+    unsigned int bes_loudness_WS_Gain_Max;       // Q2.14
+    unsigned int bes_loudness_WS_Gain_Min;       // Q2.14
+    unsigned int bes_loudness_Filter_First;      // 0: DRC First, 1: Filter First
+    unsigned int bes_loudness_Sep_LR_Filter;    // 0: Use same filter for both L / R,  // 1: Separate L / R filter
+
+    unsigned int bes_loudness_Num_Bands;         // range: 1 ~ 8
+    unsigned int bes_loudness_Flt_Bank_Order;    // range: 3, 5, 7
+    unsigned int bes_loudness_Cross_Freq[7];     // unit: Hz
+    int bes_loudness_DRC_Th[8][5];               // Q24.8, unit: dB
+    int bes_loudness_DRC_Gn[8][5];               // Q24.8, unit: dB
+    int bes_loudness_SB_Gn[8];                   // Q24.8, unit: dB
+    unsigned int bes_loudness_SB_Mode[8];        // 0: makeup gain, 1: subband limiter,
+                                                 // 2: bypass, 3: mute
+    unsigned int bes_loudness_DRC_Delay;
+    unsigned int bes_loudness_Att_Time[8][6];    // unit: 0.1 ms / 6dB
+    unsigned int bes_loudness_Rel_Time[8][6];    // unit: 0.1 ms / 6dB
+    int bes_loudness_Hyst_Th[8][6];              // Q24.8, unit: dB
+    int bes_loudness_Lim_Th;
+    int bes_loudness_Lim_Gn;
+    unsigned int bes_loudness_Lim_Const;
+    unsigned int bes_loudness_Lim_Delay;
+    
+    /*
+    unsigned int bes_loudness_WS_Gain_Max;
+    unsigned int bes_loudness_WS_Gain_Min;
+    unsigned int bes_loudness_Filter_First;
+	unsigned int bes_loudness_Att_Time;		// unit: 0.1 ms / 6dB
+	unsigned int bes_loudness_Rel_Time;		// unit: 0.1 ms / 6dB
+    char bes_loudness_Gain_Map_In[5];
+    char bes_loudness_Gain_Map_Out[5];
+    */
+} AUDIO_ACF_CUSTOM_PARAM_STRUCT;
+#endif
+#elif defined(MTK_AUDIO_BLOUD_CUSTOMPARAMETER_V4)
+typedef struct _AUDIO_ACF_CUSTOM_PARAM_STRUCT
+{
+    unsigned int bes_loudness_hsf_coeff[2][9][5];     // Compensation Filter HSF coeffs	[9][4]->[2][9][5]
+    unsigned int bes_loudness_bpf_coeff[8][6][3];  // Compensation Filter BPF coeffs	[4][6][3]->[6][6][3]->[8][6][3]
+    //unsigned int bes_loudness_DRC_Forget_Table[9][2];
+    unsigned int bes_loudness_lpf_coeff[6][3];
+    unsigned int bes_loudness_WS_Gain_Max;
+    unsigned int bes_loudness_WS_Gain_Min;
+    unsigned int bes_loudness_Filter_First;
+	unsigned int bes_loudness_Att_Time;		// unit: 0.1 ms / 6dB
+	unsigned int bes_loudness_Rel_Time;		// unit: 0.1 ms / 6dB
+    char bes_loudness_Gain_Map_In[5];
+    char bes_loudness_Gain_Map_Out[5];
+} AUDIO_ACF_CUSTOM_PARAM_STRUCT;
+#else
+typedef struct _AUDIO_ACF_CUSTOM_PARAM_STRUCT
+{
+    /* Compensation Filter HSF coeffs       */
+    /* BesLoudness also uses this coeffs    */
+    unsigned int bes_loudness_hsf_coeff[9][4];
+
+    /* Compensation Filter BPF coeffs       */
+    unsigned int bes_loudness_bpf_coeff[4][6][3];
+    unsigned int bes_loudness_DRC_Forget_Table[9][2];
+    unsigned int bes_loudness_WS_Gain_Max;
+    unsigned int bes_loudness_WS_Gain_Min;
+    unsigned int bes_loudness_Filter_First;
+    char bes_loudness_Gain_Map_In[5];
+    char bes_loudness_Gain_Map_Out[5];
+
+} AUDIO_ACF_CUSTOM_PARAM_STRUCT;
+#endif
+/*
+*/
+#define CFG_FILE_AUDIO_COMPFLT_REC_SIZE        sizeof(AUDIO_ACF_CUSTOM_PARAM_STRUCT)
+#define CFG_FILE_AUDIO_COMPFLT_REC_TOTAL   1
+#define CFG_FILE_HEADPHONE_COMPFLT_REC_TOTAL   1
+#define CFG_FILE_VIBSPK_COMPFLT_REC_TOTAL   1
+#define CFG_FILE_AUDIOSUB_COMPFLT_REC_TOTAL   1
+#define CFG_FILE_AUDIOSUB_COMPFLT_REC_TOTAL   1
+#define CFG_FILE_MUSICDRC_COMPFLT_REC_TOTAL   1
+#define CFG_FILE_RINGTONEDRC_COMPFLT_REC_TOTAL   1
+
+
+typedef struct _AUDIO_EFFECT_CUSTOM_PARAM_STRUCT
+{
+    //surround parameters
+    int bsrd_level;
+    unsigned int Distance1;
+    unsigned int Distance2;
+    int bsrd_band_select;
+
+    //bass parameters
+    unsigned int bass_CutoffFreq;
+    int bass_IsVB;
+
+    //EQ parameters
+    short Normal_Gain_dB_level[AUDIO_EQ_PARAM_NUM];
+    short Dance_Gain_dB_level[AUDIO_EQ_PARAM_NUM];
+    short Bass_Gain_dB_level[AUDIO_EQ_PARAM_NUM];
+    short Classical_Gain_dB_level[AUDIO_EQ_PARAM_NUM];
+    short Treble_Gain_dB_level[AUDIO_EQ_PARAM_NUM];
+    short Party_Gain_dB_level[AUDIO_EQ_PARAM_NUM];
+    short Pop_Gain_dB_level[AUDIO_EQ_PARAM_NUM];
+    short Rock_Gain_dB_level[AUDIO_EQ_PARAM_NUM];
+
+    //loudness mode
+    int LoudEnhancemode;
+
+    // time stretch
+    int Time_TD_FD;
+    int Time_TS_Ratio;
+
+} AUDIO_EFFECT_CUSTOM_PARAM_STRUCT;
+
+#define CFG_FILE_AUDIO_EFFECT_REC_SIZE        sizeof(AUDIO_EFFECT_CUSTOM_PARAM_STRUCT)
+#define CFG_FILE_AUDIO_EFFECT_REC_TOTAL   1
+
+typedef struct _AUDIO_PARAM_MED_STRUCT
+{
+    short speech_input_FIR_coeffs[SPEECH_PARA_MODE_NUM][NB_FIR_NUM];
+    short speech_output_FIR_coeffs[SPEECH_PARA_MODE_NUM][NB_FIR_INDEX_NUM][NB_FIR_NUM];
+    short select_FIR_output_index[SPEECH_PARA_MODE_NUM];
+    short select_FIR_intput_index[SPEECH_PARA_MODE_NUM];
+    short speech_mode_para[SPEECH_PARA_MODE_NUM][SPEECH_PARA_NUM];
+} AUDIO_PARAM_MED_STRUCT;
+
+#define CFG_FILE_AUDIO_PARAM_MED_REC_SIZE        sizeof(AUDIO_PARAM_MED_STRUCT)
+#define CFG_FILE_AUDIO_PARAM_MED_REC_TOTAL   1
+
+
+typedef struct _AUDIO_VOLUME_CUSTOM_STRUCT
+{
+    unsigned char audiovolume_ring[MAX_VOL_CATE][CUSTOM_VOLUME_STEP];
+    unsigned char audiovolume_key[MAX_VOL_CATE][CUSTOM_VOLUME_STEP];
+    unsigned char audiovolume_mic[MAX_VOL_CATE][CUSTOM_VOLUME_STEP];
+    unsigned char audiovolume_fmr[MAX_VOL_CATE][CUSTOM_VOLUME_STEP];
+    unsigned char audiovolume_sph[MAX_VOL_CATE][CUSTOM_VOLUME_STEP];
+    unsigned char audiovolume_sid[MAX_VOL_CATE][CUSTOM_VOLUME_STEP];
+    unsigned char audiovolume_media[MAX_VOL_CATE][CUSTOM_VOLUME_STEP];
+    unsigned char audiovolume_matv[MAX_VOL_CATE][CUSTOM_VOLUME_STEP];
+} AUDIO_VOLUME_CUSTOM_STRUCT;
+
+#define CFG_FILE_AUDIO_VOLUME_CUSTOM_REC_SIZE        sizeof(AUDIO_VOLUME_CUSTOM_STRUCT)
+#define CFG_FILE_AUDIO_VOLUME_CUSTOM_REC_TOTAL   1
+
+typedef struct _AUDIO_VER1_CUSTOM_VOLUME_STRUCT {
+    unsigned char audiovolume_ring[NUM_OF_VOL_MODE][AUDIO_MAX_VOLUME_STEP];
+    unsigned char audiovolume_sip[NUM_OF_VOL_MODE][AUDIO_MAX_VOLUME_STEP];
+    unsigned char audiovolume_mic[NUM_OF_VOL_MODE][AUDIO_MAX_VOLUME_STEP];
+    unsigned char audiovolume_fm[NUM_OF_VOL_MODE][AUDIO_MAX_VOLUME_STEP];
+    unsigned char audiovolume_sph[NUM_OF_VOL_MODE][AUDIO_MAX_VOLUME_STEP];
+    unsigned char audiovolume_sph2[NUM_OF_VOL_MODE][AUDIO_MAX_VOLUME_STEP];
+    unsigned char audiovolume_sid[NUM_OF_VOL_MODE][AUDIO_MAX_VOLUME_STEP];
+    unsigned char audiovolume_media[NUM_OF_VOL_MODE][AUDIO_MAX_VOLUME_STEP];
+    unsigned char audiovolume_matv[NUM_OF_VOL_MODE][AUDIO_MAX_VOLUME_STEP];
+
+    unsigned char normalaudiovolume[NORMAL_VOLUME_TYPE_MAX];
+    unsigned char headsetaudiovolume[HEADSET_VOLUME_TYPE_MAX];
+    unsigned char speakeraudiovolume[SPEAKER_VOLUME_TYPE_MAX];
+    unsigned char headsetspeakeraudiovolume[HEADSET_SPEAKER_VOLUME_TYPE_MAX];
+    unsigned char extampaudiovolume[EXTAMP_VOLUME_TYPE_MAX];
+
+    unsigned char audiovolume_level[VER1_NUM_OF_VOL_TYPE];
+} AUDIO_VER1_CUSTOM_VOLUME_STRUCT;
+
+#define CFG_FILE_AUDIO_VER1_VOLUME_CUSTOM_REC_SIZE        sizeof(AUDIO_VER1_CUSTOM_VOLUME_STRUCT)
+#define CFG_FILE_AUDIO_VER1_VOLUME_CUSTOM_REC_TOTAL   1
+
+
+
+/********************************************************************
+*   Audio Gain Table
+*********************************************************************/
+#define AUDIO_MAX_AMP_CONTROL_POINTS  (10)
+#define AUDIO_MAX_GAIN_TABLE_STEP     (18)
+#define AUDIO_MAX_MIC_GAIN_NUMS       (32)
+
+typedef enum  {
+	AUDIO_GAIN_DEFAULT 		    =-1,
+	AUDIO_GAIN_VOICE_CALL		= 0,
+	AUDIO_GAIN_SYSTEM			= 1,
+	AUDIO_GAIN_RING			    = 2,
+	AUDIO_GAIN_MUSIC			= 3,
+	AUDIO_GAIN_ALARM			= 4,
+	AUDIO_GAIN_NOTIFICATION	    = 5,
+	AUDIO_GAIN_BLUETOOTH_SCO	= 6,
+	AUDIO_GAIN_ENFORCED_AUDIBLE = 7, // Sounds that cannot be muted by user and must be routed to speaker
+	AUDIO_GAIN_DTMF			    = 8,
+	AUDIO_GAIN_TTS 			    = 9,
+	AUDIO_GAIN_FM				= 10,
+	AUDIO_GAIN_MATV				= 11,
+	AUDIO_GAIN_MAX_STREAM       = 11, //max index of stream
+    NUM_AUDIO_GAIN_TYPES
+}audio_gain_type;
+
+//devices
+typedef enum {
+	GAIN_OUTPUT_EARPIECE = 0,
+	GAIN_OUTPUT_HEADSET  = 1,
+	GAIN_OUTPUT_SPEAKER  = 2,
+	GAIN_OUTPUT_DOCK     = 3,
+	NUM_GAIN_OUTPUT_DEVICES = 4
+}output_gain_device;
+
+//mic types
+typedef enum {
+    GAIN_IDLE_RECORD_MIC =0,
+    GAIN_IDLE_RECORD_HEADSET ,
+    GAIN_VOICE_REC_MIC,
+    GAIN_VOICE_REC_HEADSET,
+    GAIN_VIDEO_REC_MIC,
+    GAIN_VIDEO_REC_HEADSET,
+    GAIN_INCALL_NB_ECEIVER,
+    GAIN_INCALL_NB_HEADSET,
+    GAIN_INCALL_NB_SPEAKER,
+    GAIN_INCALL_WB_ECEIVER,
+    GAIN_INCALL_WB_HEADSET,
+    GAIN_INCALL_WB_SPEAKER,
+    GAIN_VOIP_RECEIVER,
+    GAIN_VOIP_HEADSET,
+    GAIN_VOIP_SPEAKER,
+    GAIN_TTY_DEVICE,
+    GAIN_LEVEL_SHIFT,
+    GAIN_ANALOG_PLAY,
+    GAIN_VOICE_UNLOCK_MIC,
+    GAIN_VOICE_UNLOCK_HEADSET,
+    GAIN_RESERVED1_MIC,
+    GAIN_RESERVED1_HEADSET,
+    GAIN_RESERVED2_MIC,
+    GAIN_RESERVED2_HEADSET,
+    NUM_MIC_GAINS
+}microphone_device_gain;
+
+
+//stream type gain
+typedef struct _STREAM_ITEM_GAIN_STRUCT
+{
+     unsigned char digital[AUDIO_MAX_GAIN_TABLE_STEP];
+     unsigned char analog;
+     unsigned char amp[AUDIO_MAX_AMP_CONTROL_POINTS];
+
+}STREAM_ITEM_GAIN;
+
+typedef struct _STREAM_GAIN_STRUCT
+{
+    STREAM_ITEM_GAIN stream[NUM_GAIN_OUTPUT_DEVICES];
+
+}STREAM_GAIN;
+
+//speech gain
+typedef struct _SPEECH_ITEM_GAIN_STRUCT
+{
+     unsigned char digital;
+     unsigned char analog;
+     unsigned char amp[AUDIO_MAX_AMP_CONTROL_POINTS];
+
+}SPEECH_ITEM_GAIN;
+
+typedef struct _SPEECH_GAIN_STRUCT
+{
+    SPEECH_ITEM_GAIN speech[NUM_GAIN_OUTPUT_DEVICES][AUDIO_MAX_GAIN_TABLE_STEP];
+
+}SPEECH_GAIN;
+
+//sidetone  gain
+
+typedef struct _SIDETONE_GAIN_STRUCT
+{
+    unsigned char sidetone[NUM_GAIN_OUTPUT_DEVICES];
+} SIDETONE_GAIN;
+
+//mic gain
+
+typedef struct _MIC_ITEM_GAIN_STRUCT
+{
+     unsigned char digital;
+     unsigned char analog;
+}MIC_ITEM_GAIN;
+
+typedef struct _MICROPHONE_GAIN_STRUCT
+{
+    MIC_ITEM_GAIN mic[AUDIO_MAX_MIC_GAIN_NUMS];
+
+} MIC_GAIN;
+
+typedef struct _AUDIO_CUSTOM_GAIN_TABLE {
+    STREAM_GAIN    voiceCall;
+    STREAM_GAIN    system;
+    STREAM_GAIN    ring;
+    STREAM_GAIN    music;
+    STREAM_GAIN    alarm;
+    STREAM_GAIN    notification;
+    STREAM_GAIN    blueToothSco;
+    STREAM_GAIN    enforceAudible;
+    STREAM_GAIN    dtmf;
+    STREAM_GAIN    tts;
+    STREAM_GAIN    fm;
+    STREAM_GAIN    matv; 
+    SPEECH_GAIN    speechNB;
+    SPEECH_GAIN    speechWB;
+    SIDETONE_GAIN  sideToneNB;
+    SIDETONE_GAIN  sideToneWB;
+    MIC_GAIN       mic; 
+} AUDIO_GAIN_TABLE_STRUCT;
+
+#define CFG_FILE_AUDIO_GAIN_TABLE_CUSTOM_REC_SIZE        sizeof(AUDIO_GAIN_TABLE_STRUCT)
+#define CFG_FILE_AUDIO_GAIN_TABLE_CUSTOM_REC_TOTAL   1
+
+typedef struct _AUDIO_CUSTOM_BT_GAIN {
+    STREAM_GAIN    blueToothNrec;
+} AUDIO_BT_GAIN_STRUCT;
+
+#define CFG_FILE_AUDIO_BT_GAIN_CUSTOM_SIZE        sizeof(AUDIO_BT_GAIN_STRUCT)
+#define CFG_FILE_AUDIO_BT_GAIN_CUSTOM_TOTAL   1
+
+//#if defined(MTK_HD_RECORD_SUPPORT)
+
+#define SPC_MAX_NUM_RECORD_SPH_MODE HD_REC_MODE_INDEX_NUM
+#define SPC_MAX_NUM_RECORD_INPUT_FIR HD_REC_FIR_INDEX_NUM	//extend 8 -->16
+typedef struct _AUDIO_HD_RECORD_PARAM_STRUCT
+{
+    /* HD RECORD Mode Num & FIR Num*/
+    unsigned short hd_rec_mode_num; // max(hd_rec_fir_num) == 30 ??
+    unsigned short hd_rec_fir_num;  // max(hd_rec_fir_num) == 16 ??
+
+    /* HD RECORD Speech Enhancement */
+    unsigned short hd_rec_speech_mode_para[SPC_MAX_NUM_RECORD_SPH_MODE][SPEECH_PARA_NUM]; // the contain only have hd_rec_mode_num effective values
+
+    /* HD RECORD FIR */
+    short          hd_rec_fir[SPC_MAX_NUM_RECORD_INPUT_FIR][WB_FIR_NUM]; // the contain only have hd_rec_fir_num effective values
+
+    /* HD RECORD FIR Mapping (ex, map[sph_mode] = FIR3) */
+    unsigned short hd_rec_map_to_fir_for_ch1[SPC_MAX_NUM_RECORD_SPH_MODE];
+    unsigned short hd_rec_map_to_fir_for_ch2[SPC_MAX_NUM_RECORD_SPH_MODE];
+
+    /* HD RECORD Device Mode Mapping (ex, map[sph_mode] = SPH_MODE_NORMAL ) */
+    unsigned char hd_rec_map_to_dev_mode[SPC_MAX_NUM_RECORD_SPH_MODE];
+
+    /* HD RECORD Input Source Mapping (ex, map[sph_mode] = BT Earphone mic)*/
+    unsigned char hd_rec_map_to_input_src[SPC_MAX_NUM_RECORD_SPH_MODE];
+
+    /* HD RECORD mode is stereo or not (ex, map[sph_mode] = 0(mono), 1(stereo) )*/
+    unsigned char hd_rec_map_to_stereo_flag[SPC_MAX_NUM_RECORD_SPH_MODE];
+
+} AUDIO_HD_RECORD_PARAM_STRUCT;
+
+
+#define CFG_FILE_AUDIO_HD_REC_PAR_SIZE   sizeof(AUDIO_HD_RECORD_PARAM_STRUCT)
+#define CFG_FILE_AUDIO_HD_REC_PAR_TOTAL  1
+
+
+
+#define MAX_HD_REC_SCENES 10  // max #scene = 10 (10 * 3 = 30 = max modes)
+
+enum HD_REC_DEVICE_SOURCE_T
+{
+    HD_REC_DEVICE_SOURCE_HANDSET     = 0,
+    HD_REC_DEVICE_SOURCE_HEADSET     = 1,
+    HD_REC_DEVICE_SOURCE_BT_EARPHONE = 2,
+    NUM_HD_REC_DEVICE_SOURCE
+};
+
+typedef struct
+{
+	unsigned char num_voice_recognition_scenes;	//for voice recognition
+    unsigned char num_voice_rec_scenes;
+    unsigned char num_video_rec_scenes;
+	unsigned char num_voice_unlock_scenes;	//for voice unlock feature
+	unsigned char num_customization_scenes;	//for customization
+    unsigned char scene_table[MAX_HD_REC_SCENES][NUM_HD_REC_DEVICE_SOURCE];
+	unsigned char scene_name[MAX_HD_REC_SCENES][10];	//name of each scene
+} AUDIO_HD_RECORD_SCENE_TABLE_STRUCT;
+
+
+#define CFG_FILE_AUDIO_HD_REC_SCENE_TABLE_SIZE   sizeof(AUDIO_HD_RECORD_SCENE_TABLE_STRUCT)
+#define CFG_FILE_AUDIO_HD_REC_SCENE_TABLE_TOTAL  1
+
+
+
+//#endif  //MTK_HD_RECORD_SUPPORT
+
+//for voice recognition customization
+typedef struct _VOICE_RECOGNITION_PARAM_STRUCT
+{
+	  /* HD RECORD 48k FIR */
+	  unsigned char ap_num;
+    unsigned char language_num;
+    unsigned char language_folder[VOICE_LANGUAGE_NUM_MAX][VOICE_FOLDER_NAME_LEN_MAX];
+    unsigned char cmd_num[VOICE_LANGUAGE_NUM_MAX];
+    unsigned char ap_support_info[VOICE_AP_NUM_MAX][VOICE_LANGUAGE_NUM_MAX][VOICE_CMDS_NUM_MAX];
+    unsigned char cust_param[VOICE_RECOG_FEATURE_NUM_MAX][VOICE_RECOG_PARAM_NUM_MAX];
+
+} VOICE_RECOGNITION_PARAM_STRUCT;
+
+
+#define CFG_FILE_VOICE_RECOGNIZE_PAR_SIZE   sizeof(VOICE_RECOGNITION_PARAM_STRUCT)
+#define CFG_FILE_VOICE_RECOGNIZE_PAR_TOTAL  1
+
+
+typedef struct
+{
+	unsigned int u32EnableFlg;
+		
+}AUDIO_AUDENH_CONTROL_OPTION_STRUCT;
+
+#define CFG_FILE_AUDIO_AUDENH_CONTROL_OPTION_PAR_SIZE   sizeof(AUDIO_AUDENH_CONTROL_OPTION_STRUCT)
+#define CFG_FILE_AUDIO_AUDENH_CONTROL_OPTION_PAR_TOTAL  1
+
+//for DC Calibration
+typedef struct _AUDIO_BUFFER_DC_CALIBRATION_STRUCT
+{
+    unsigned short cali_flag;
+	unsigned short cali_val_hp_left;
+    unsigned short cali_val_hp_right;
+    unsigned short cali_val_speaker;
+} AUDIO_BUFFER_DC_CALIBRATION_STRUCT;
+
+
+#define CFG_FILE_AUDIO_BUFFER_DC_CALIBRATION_PAR_SIZE   sizeof(AUDIO_BUFFER_DC_CALIBRATION_STRUCT)
+#define CFG_FILE_AUDIO_BUFFER_DC_CALIBRATION_PAR_TOTAL  1
+
+
+enum AUDIO_VOIP_DEVICE_TYPE {
+	AUDIO_VOIP_DEVICE_NORMAL	= 0,	//path receiver
+	AUDIO_VOIP_DEVICE_SPEAKER	= 1,
+	AUDIO_VOIP_DEVICE_HEADSET	= 2,
+	AUDIO_VOIP_DEVICE_BT		= 3,
+    NUM_AUDIO_VOIP_DEVICE		= VOIP_INDEX_NUM
+};
+
+typedef struct _AUDIO_VOIP_PARAM_STRUCT
+{
+    /* speech enhancement param */
+    unsigned short speech_common_para[SPEECH_COMMON_NUM];	//normal/Loud speaker/headser/BT
+    unsigned short speech_mode_para[VOIP_INDEX_NUM][SPEECH_PARA_NUM];   //normal/Loud speaker/headser/BT 
+    
+    /* speech input FIR */
+    short	in_fir[VOIP_INDEX_NUM][WB_FIR_NUM];	//normal/Loud speaker/headser/BT
+    /* speech output FIR */
+    short	out_fir[VOIP_INDEX_NUM][WB_FIR_NUM];	//normal/Loud speaker/headser/BT
+
+} AUDIO_VOIP_PARAM_STRUCT;
+
+
+#define CFG_FILE_AUDIO_VOIP_PAR_SIZE   sizeof(AUDIO_VOIP_PARAM_STRUCT)
+#define CFG_FILE_AUDIO_VOIP_PAR_TOTAL  1
+
+//for Speaker Monitor
+typedef struct _AUDIO_SPEAKER_MONITOR_PARAM_STRUCT
+{
+    float resistor[512];
+    float temp_initial; // initial value
+    /* hardware setting */
+    float current_sensing_resistor; // unit: ohm
+    /* resonant frqquency*/
+	unsigned short reso_freq_center;
+    unsigned short reso_freq_bw;
+    unsigned short reso_freq_gain;
+    /* temperature estimation */
+    unsigned short prefer_band_upper;
+    unsigned short prefer_band_lower;
+    /* temperature estimation control */
+    unsigned short temp_limit_low;  // start to log 
+    unsigned short temp_limit_high; // start to control gain
+    unsigned short temp_control_time_slots; // max log time
+    /* monitor interval */
+    unsigned short monitor_timer; //unit: ms
+} AUDIO_SPEAKER_MONITOR_PARAM_STRUCT;
+
+
+#define CFG_FILE_SPEAKER_MONITOR_SIZE   sizeof(AUDIO_SPEAKER_MONITOR_PARAM_STRUCT)
+#define CFG_FILE_SPEAK_MONITOR_REC_TOTAL  1
+
+#endif // _CFG_AUDIO_FILE_H
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_BT_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_BT_File.h
new file mode 100644
index 0000000..2eb275f
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_BT_File.h
@@ -0,0 +1,65 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+
+#ifndef _CFG_BT_FILE_H
+#define _CFG_BT_FILE_H
+
+
+// the record structure define of bt nvram file
+typedef struct
+{
+    unsigned char addr[6];            // BT address
+    unsigned char Voice[2];           // Voice setting for SCO connection
+    unsigned char Codec[4];           // PCM codec setting
+    unsigned char Radio[6];           // RF configuration
+    unsigned char Sleep[7];           // Sleep mode configuration
+    unsigned char BtFTR[2];           // Other feature setting
+    unsigned char TxPWOffset[3];      // TX power channel offset compensation
+    unsigned char CoexAdjust[6];      // BT/WIFI coexistence performance adjustment
+    unsigned char Reserved1[2];       // Reserved
+    unsigned char Reserved2[2];       // Reserved
+    unsigned char Reserved3[4];       // Reserved
+    unsigned char Reserved4[4];       // Reserved
+    unsigned char Reserved5[8];       // Reserved
+    unsigned char Reserved6[8];       // Reserved
+} ap_nvram_btradio_struct, ap_nvram_btradio_mt6610_struct;
+
+//the record size and number of bt nvram file
+#define CFG_FILE_BT_ADDR_REC_SIZE    sizeof(ap_nvram_btradio_struct)
+#define CFG_FILE_BT_ADDR_REC_TOTAL   1
+
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_BWCS_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_BWCS_File.h
new file mode 100644
index 0000000..16bcebe
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_BWCS_File.h
@@ -0,0 +1,128 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   cfg_bwcs_file.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    header file of main function
+ *
+ * Author:
+ * -------
+ *   Saker Hsia(MTK02327)
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 06 30 2010 saker.hsia
+ * [ALPS00002764][Need Patch] [Volunteer Patch] ALPS.10X.W10.28 Volunteer patch for BWCS NVRAM customization 
+ * .
+ *
+ * 05 05 2010 saker.hsia
+ * [ALPS00001913][BWCS] BT WiFi Single Antenna Feature check in Android 2.1 
+ * Check in BT/WiFi Single Antenna Feature
+ *******************************************************************************/
+
+
+
+#ifndef _CFG_BWCS_FILE_H
+#define _CFG_BWCS_FILE_H
+
+
+// the record structure define of bt nvram file
+typedef struct
+{
+    unsigned int rt_rssi_th[3];
+    unsigned int nrt_rssi_th[3];
+    unsigned int ant_path_comp;
+    unsigned int ant_switch_prot_time;
+    unsigned int wifi_tx_flow[2];
+    unsigned int bt_rx_range[2];
+    unsigned int bt_tx_power[3];
+    unsigned int reserved[5];
+} ap_nvram_bwcs_config_struct;
+
+
+//the record size and number of bt nvram file
+#define CFG_FILE_BWCS_CONFIG_SIZE    sizeof(ap_nvram_bwcs_config_struct)
+#define CFG_FILE_BWCS_CONFIG_TOTAL   1
+
+#endif /* _CFG_BWCS_FILE_H */
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_Camera_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_Camera_File.h
new file mode 100644
index 0000000..01f0d77
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_Camera_File.h
@@ -0,0 +1,210 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   MSDK_NVRAM_CAMERA_exp.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *   Definition of the data structures of ISP drivers that will be stored into NRVAM
+ *
+ *
+ * Author:
+ * -------
+ *   PC Huang (MTK02204)
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 11 16 2011 koli.lin
+ * [ALPS00030473] [Camera]
+ * [Camera] Add two parameters to NVRAM for CCT tuning.
+ *
+ * 05 17 2010 koli.lin
+ * [ALPS00000143][Camera]
+ * Synchronize the NVRAM structure and Code gen.
+ *
+ * 05 14 2010 koli.lin
+ * [ALPS00000143][Camera]
+ * Add one parameters for AE NVRAM used.
+ *
+ * Mar 21 2009 mtk80306
+ * [DUMA00112158] fix the code convention.
+ * fix the codeing convention.
+ *
+ * Mar 15 2009 mtk80306
+ * [DUMA00111629] add camera nvram files
+ * add camera nvram file
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __MSDK_NVRAM_CAMERA_EXP_H
+#define __MSDK_NVRAM_CAMERA_EXP_H
+
+#include "CFG_Camera_File_Max_Size.h"
+
+typedef unsigned char       UINT8;
+
+typedef struct
+{
+
+    UINT8 CameraData[MAXIMUM_NVRAM_CAMERA_SENSOR_FILE_SIZE];
+} NVRAM_SENSOR_DATA_STRUCT, *PNVRAM_SENSOR_DATA_STRUCT;
+typedef struct
+{
+	UINT8 CameraData[MAXIMUM_NVRAM_CAMERA_PARA_FILE_SIZE];
+} NVRAM_CAMERA_PARA_STRUCT, *PNVRAM_CAMERA_PARA_STRUCT;
+
+
+typedef struct
+{
+   UINT8 Data[MAXIMUM_NVRAM_CAMERA_DEFECT_FILE_SIZE];
+} NVRAM_CAMERA_DEFECT_STRUCT, *PNVRAM_CAMERA_DEFECT_STRUCT;
+
+/*******************************************************************************
+* shading
+********************************************************************************/
+
+typedef struct
+{
+   	UINT8 CameraData[MAXIMUM_NVRAM_CAMERA_SHADING_FILE_SIZE];
+} NVRAM_CAMERA_SHADING_STRUCT, *PNVRAM_CAMERA_SHADING_STRUCT;
+
+/*******************************************************************************
+* 3A
+********************************************************************************/
+
+typedef struct
+{
+    UINT8 Data[MAXIMUM_NVRAM_CAMERA_3A_FILE_SIZE];
+} NVRAM_CAMERA_3A_STRUCT, *PNVRAM_CAMERA_3A_STRUCT;
+
+/*******************************************************************************
+* ISP parameter
+********************************************************************************/
+
+typedef struct
+{
+    UINT8   Data[MAXIMUM_NVRAM_CAMERA_ISP_FILE_SIZE];
+} NVRAM_CAMERA_ISP_PARAM_STRUCT, *PNVRAM_CAMERA_ISP_PARAM_STRUCT;
+
+
+
+/*******************************************************************************
+* Lens
+********************************************************************************/
+
+typedef struct
+{
+    UINT8 reserved[MAXIMUM_NVRAM_CAMERA_LENS_FILE_SIZE];
+} NVRAM_LENS_PARA_STRUCT, *PNVRAM_LENS_PARA_STRUCT;
+
+
+/* define the LID and total record for NVRAM interface */
+#define CFG_FILE_CAMERA_PARA_REC_SIZE			MAXIMUM_NVRAM_CAMERA_ISP_FILE_SIZE
+#define CFG_FILE_CAMERA_3A_REC_SIZE			MAXIMUM_NVRAM_CAMERA_3A_FILE_SIZE
+#define CFG_FILE_CAMERA_SHADING_REC_SIZE		MAXIMUM_NVRAM_CAMERA_SHADING_FILE_SIZE
+#define CFG_FILE_CAMERA_DEFECT_REC_SIZE			MAXIMUM_NVRAM_CAMERA_DEFECT_FILE_SIZE
+#define CFG_FILE_CAMERA_SENSOR_REC_SIZE			MAXIMUM_NVRAM_CAMERA_SENSOR_FILE_SIZE
+#define CFG_FILE_CAMERA_LENS_REC_SIZE			MAXIMUM_NVRAM_CAMERA_LENS_FILE_SIZE
+#define CFG_FILE_CAMERA_VERSION_REC_SIZE        MAXIMUM_NVRAM_CAMERA_VERSION_FILE_SIZE
+#define CFG_FILE_CAMERA_FEATURE_REC_SIZE        MAXIMUM_NVRAM_CAMERA_FEATURE_FILE_SIZE
+#define CFG_FILE_CAMERA_GEOMETRY_REC_SIZE        MAXIMUM_NVRAM_CAMERA_GEOMETRY_FILE_SIZE
+
+#define CFG_FILE_CAMERA_PLINE_REC_SIZE        MAXIMUM_NVRAM_CAMERA_PLINE_FILE_SIZE
+
+
+#define CFG_FILE_CAMERA_PARA_REC_TOTAL			3
+#define CFG_FILE_CAMERA_3A_REC_TOTAL			3
+#define CFG_FILE_CAMERA_SHADING_REC_TOTAL		3
+#define CFG_FILE_CAMERA_DEFECT_REC_TOTAL		3
+#define CFG_FILE_CAMERA_SENSOR_REC_TOTAL		3
+#define CFG_FILE_CAMERA_LENS_REC_TOTAL		    3
+#define CFG_FILE_CAMERA_VERSION_REC_TOTAL		    1
+#define CFG_FILE_CAMERA_FEATURE_REC_TOTAL		    3
+#define CFG_FILE_CAMERA_GEOMETRY_REC_TOTAL		    3
+#define CFG_FILE_CAMERA_PLINE_REC_TOTAL		    3
+
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_Camera_File_Max_Size.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_Camera_File_Max_Size.h
new file mode 100644
index 0000000..4aa1827
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_Camera_File_Max_Size.h
@@ -0,0 +1,23 @@
+#ifndef __CFG_CAMERA_FILE_MAX_SIZE_H__
+#define __CFG_CAMERA_FILE_MAX_SIZE_H__
+
+#define MAXIMUM_NVRAM_CAMERA_DEFECT_FILE_SIZE      (5120) //BYTE 81920
+
+
+#define MAXIMUM_NVRAM_CAMERA_ISP_FILE_SIZE         (143360) // 140K bytes
+#define MAXIMUM_NVRAM_CAMERA_3A_FILE_SIZE          (25600) // 25K bytes
+#define MAXIMUM_NVRAM_CAMERA_SENSOR_FILE_SIZE      (4096)
+#define MAXIMUM_NVRAM_CAMERA_LENS_FILE_SIZE        (16384)
+#define MAXIMUM_NVRAM_CAMERA_VERSION_FILE_SIZE		   (80)
+#define MAXIMUM_NVRAM_CAMERA_FEATURE_FILE_SIZE      (5120)
+#define MAXIMUM_NVRAM_CAMERA_GEOMETRY_FILE_SIZE     (100)
+
+#define MAXIMUM_NVRAM_CAMERA_PLINE_FILE_SIZE     (90000)
+#define MAXIMUM_NVRAM_CAMERA_SHADING_FILE_SIZE      (90000) //BYTE 81920--> 16000 for meta tool limitation
+
+#define MAXIMUM_CAMERA_SHADING_SIZE  (1050652)
+#define MAXIMUM_CAMERA_PLINE_SIZE  (900000)
+
+#define MAXIMUM_NVRAM_CAMERA_PARA_FILE_SIZE  MAXIMUM_NVRAM_CAMERA_ISP_FILE_SIZE
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_Custom1_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_Custom1_File.h
new file mode 100644
index 0000000..8d8a6b8
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_Custom1_File.h
@@ -0,0 +1,12 @@
+#ifndef _CFG_CUSTOM1_FILE_H
+#define _CFG_CUSTOM1_FILE_H
+
+typedef struct
+{
+	unsigned int Array[1];
+}File_Custom1_Struct;
+
+#define CFG_FILE_CUSTOM1_REC_SIZE    sizeof(File_Custom1_Struct)
+#define CFG_FILE_CUSTOM1_REC_TOTAL   1
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_EXT_MDTYPE_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_EXT_MDTYPE_File.h
new file mode 100644
index 0000000..b2c0813
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_EXT_MDTYPE_File.h
@@ -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) 2012
+*
+*  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:
+ * ---------
+ *   CFG_EXT_MDTYPE_Default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ *   EXT Modem Type Structure headerfile.
+ *
+ * Author:
+ * -------
+ *   AP Wang (mtk05304)
+ *
+ *
+ * ==========================================================================
+ * $Log$
+ ****************************************************************************/
+#ifndef _CFG_EXT_MDFILE_D_H
+#define _CFG_EXT_MDFILE_D_H
+
+
+// the record structure define of md type nvram file
+typedef struct
+{
+
+    unsigned int md_id;
+    unsigned int md_type;
+	
+} ext_md_type_struct;
+
+
+//the record size and number of md type nvram file
+#define CFG_FILE_EXT_MDTYPE_CONFIG_SIZE    sizeof(ext_md_type_struct)
+#define CFG_FILE_EXT_MDTYPE_CONFIG_TOTAL   1
+
+#endif /* _CFG_MDTYPE_FILE_H */
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_FACTORY_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_FACTORY_File.h
new file mode 100644
index 0000000..6fa96cf
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_FACTORY_File.h
@@ -0,0 +1,112 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_FACTORY_FILE.h
+ *
+ * Project:
+ * --------
+ *   YUSU
+ *
+ * Description:
+ * ------------
+ *   Hheader file of FACTORY CFG file
+ *
+ * Author:
+ * -------
+ *   MTK02528(Koshi Chiu)
+ *
+ *
+ *
+ *******************************************************************************/
+
+
+#ifndef _CFG_FACTORY_FILE_H
+#define _CFG_FACTORY_FILE_H
+
+
+///define meta nvram record
+typedef struct
+{
+//    UINT32 rf_calabrated;
+      unsigned int rf_calabrated;
+} FACTORY_CFG_Struct;
+
+//please define it according to your module
+#define CFG_FILE_FACTORY_REC_SIZE    sizeof(FACTORY_CFG_Struct)
+#define CFG_FILE_FACTORY_REC_TOTAL   1
+
+#endif
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_GPS_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_GPS_File.h
new file mode 100644
index 0000000..3527110
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_GPS_File.h
@@ -0,0 +1,96 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   cfg_gps_file.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    header file of main function
+ *
+ * Author:
+ * -------
+ *   Mike Chang(MTK02063)
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 06 24 2010 yunchang.chang
+ * [ALPS00002677][Need Patch] [Volunteer Patch] ALPS.10X.W10.26 Volunteer patch for GPS customization use NVRam 
+ * .
+ *
+ *******************************************************************************/
+
+
+
+#ifndef _CFG_GPS_FILE_H
+#define _CFG_GPS_FILE_H
+
+
+// the record structure define of bt nvram file
+typedef struct
+{
+    char dsp_dev[20];
+    unsigned char gps_if_type;
+    
+    unsigned int gps_tcxo_hz;
+    unsigned int gps_tcxo_ppb;
+    unsigned char gps_tcxo_type;
+    
+    unsigned char gps_lna_mode;
+    
+    unsigned char gps_sbas_mode;
+    unsigned int C0;
+    unsigned int C1;
+    unsigned int initU;
+    unsigned int lastU;
+} ap_nvram_gps_config_struct;
+
+
+//the record size and number of bt nvram file
+#define CFG_FILE_GPS_CONFIG_SIZE    sizeof(ap_nvram_gps_config_struct)
+#define CFG_FILE_GPS_CONFIG_TOTAL   1
+
+#endif /* _CFG_GPS_FILE_H */
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_HWMON_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_HWMON_File.h
new file mode 100644
index 0000000..532b55d
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_HWMON_File.h
@@ -0,0 +1,137 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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 HWMON_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:
+ * ---------
+ *   CFG_HWMON_FILE.h
+ *
+ * Project:
+ * --------
+ *   YUSU
+ *
+ * Description:
+ * ------------
+ *   Hheader file of HWMON(all HW sensor) CFG file
+ *
+ * Author:
+ * -------
+ *   MTK02404(MingHsien Hsieh)
+ *
+ *******************************************************************************/
+
+#ifndef _CFG_HWMON_FILE_H
+#define _CFG_HWMON_FILE_H
+/********************************************************************************
+ * Accelerometer
+ *******************************************************************************/
+#define C_HWMON_ACC_AXES    3
+/*-----------------------------------------------------------------------------*/
+typedef struct
+{
+    int offset[C_HWMON_ACC_AXES];
+} NVRAM_HWMON_ACC_STRUCT;
+/*-----------------------------------------------------------------------------*/
+#define CFG_FILE_HWMON_ACC_REC_SIZE    sizeof(NVRAM_HWMON_ACC_STRUCT)
+#define CFG_FILE_HWMON_ACC_REC_TOTAL   1
+/*-----------------------------------------------------------------------------*/
+
+/********************************************************************************
+ * Gyroscope
+ *******************************************************************************/
+#define C_HWMON_GYRO_AXES    3
+/*-----------------------------------------------------------------------------*/
+typedef struct
+{
+    int offset[C_HWMON_GYRO_AXES];
+} NVRAM_HWMON_GYRO_STRUCT;
+/*-----------------------------------------------------------------------------*/
+#define CFG_FILE_HWMON_GYRO_REC_SIZE    sizeof(NVRAM_HWMON_GYRO_STRUCT)
+#define CFG_FILE_HWMON_GYRO_REC_TOTAL   1
+/*-----------------------------------------------------------------------------*/
+/********************************************************************************
+ * ALSPS
+ *******************************************************************************/
+#define C_HWMON_ALSPS_AXES    3
+/*-----------------------------------------------------------------------------*/
+typedef struct
+{
+    int ps_cali[C_HWMON_ALSPS_AXES];
+} NVRAM_HWMON_PS_STRUCT;
+/*-----------------------------------------------------------------------------*/
+#define CFG_FILE_HWMON_PS_REC_SIZE    sizeof(NVRAM_HWMON_PS_STRUCT)
+#define CFG_FILE_HWMON_PS_REC_TOTAL   1
+/*-----------------------------------------------------------------------------*/
+
+#endif
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_MDMODE_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_MDMODE_File.h
new file mode 100644
index 0000000..ece762f
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_MDMODE_File.h
@@ -0,0 +1,113 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_MDMODE_File.h
+ *
+ * Project:
+ * --------
+ *   MiFi
+ *
+ * Description:
+ * ------------
+ *    header file of MD Mode CFG file
+ *
+ * Author:
+ * -------
+ *   MTK02065(Shane Chang)
+ *
+ *
+ *
+ *******************************************************************************/
+
+
+#ifndef _CFG_MDMODE_FILE_H
+#define _CFG_MDMODE_FILE_H
+
+
+
+// the record structure define of MD mode nvram file
+typedef struct
+{
+    char type[3]; /* TDD / FDD */
+}MDMODE_CFG_Struct;
+
+///please define it according to your module
+#define CFG_FILE_MDMODE_REC_SIZE    sizeof(MDMODE_CFG_Struct)
+#define CFG_FILE_MDMODE_REC_TOTAL   1
+
+
+#endif
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_MDTYPE_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_MDTYPE_File.h
new file mode 100644
index 0000000..41ade22
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_MDTYPE_File.h
@@ -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) 2008
+*
+*  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:
+ * ---------
+ *   cfg_mdtype_file.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    header file of main function
+ *
+ * Author:
+ * -------
+ *   Haow Wang(MTK81183)
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ *******************************************************************************/
+
+
+
+#ifndef _CFG_MDTYPE_FILE_H
+#define _CFG_MDTYPE_FILE_H
+
+
+// the record structure define of md type nvram file
+typedef struct
+{
+
+    unsigned int md_type;
+	
+} md_type_struct;
+
+
+//the record size and number of md type nvram file
+#define CFG_FILE_MDTYPE_CONFIG_SIZE    sizeof(md_type_struct)
+#define CFG_FILE_MDTYPE_CONFIG_TOTAL   1
+
+#endif /* _CFG_MDTYPE_FILE_H */
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_MD_SBP_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_MD_SBP_File.h
new file mode 100644
index 0000000..fe582a2
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_MD_SBP_File.h
@@ -0,0 +1,82 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ *   CFG_MD_SBP_FILE.h
+ *
+ * Project:
+ * --------
+ *   KK
+ *
+ * Description:
+ * ------------
+ *    header file of md SBP config struct
+ *
+ * Author:
+ * -------
+ *    Jue Zhou (mtk80024)
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ *
+ *
+ *******************************************************************************/
+
+#ifndef _CFG_MD_SBP_FILE_H
+#define _CFG_MD_SBP_FILE_H
+
+#define SBP_FLAG_UPDATED 1 // updated, need not send to md, 0: the latest setting, need update
+// SBP: Single Binary Platfor, used for modem customization
+typedef struct
+{
+    unsigned int md_sbp_code;     // bit defined by modem;
+    unsigned int flag_updated;    // 0: not updated, needn't send to md, 1:updated, need send to md
+    unsigned int md2_sbp_code;     // bit defined by modem 2;
+    unsigned int flag2_updated;    // 0: not updated, needn't send to md, 1:updated, need send to md
+    unsigned int md3_sbp_code;     // bit defined by modem 3;
+    unsigned int flag3_updated;    // 0: not updated, needn't send to md, 1:updated, need send to md
+} MD_SBP_Struct;
+
+#define CFG_FILE_MD_SBP_CONFIG_SIZE    sizeof(MD_SBP_Struct)
+#define CFG_FILE_MD_SBP_CONFIG_TOTAL   1
+
+#endif	// _CFG_MD_SBP_FILE_H
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_META_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_META_File.h
new file mode 100644
index 0000000..700ca62
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_META_File.h
@@ -0,0 +1,127 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_META_FILE.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    header file of META CFG file
+ *
+ * Author:
+ * -------
+ *   MTK80306(Ning Feng)
+ *
+ *
+ *
+ *******************************************************************************/
+
+
+#ifndef _CFG_META_FILE_H
+#define _CFG_META_FILE_H
+
+
+///define meta nvram record
+typedef struct
+{
+    char cComPort[20];
+    char cLogPort[20];
+    unsigned int iCombps;
+    unsigned int iLogbps;
+    unsigned int bLogEnable;
+
+} META_CFG_Struct;
+
+//buad rate define
+#define BUD_4800      4800
+#define BUD_9600      9600
+#define BUD_19200     19200
+#define BUD_38400     38400
+#define BUD_57600     57600
+#define BUD_115200    115200
+#define BUD_230400    230400
+#define BUD_460800    460800
+#define BUD_921600    921600
+
+///please define it according to your module
+#define CFG_FILE_META_REC_SIZE    sizeof(META_CFG_Struct)
+#define CFG_FILE_META_REC_TOTAL   1
+
+#endif
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_OMADMUSB_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_OMADMUSB_File.h
new file mode 100644
index 0000000..8cc7166
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_OMADMUSB_File.h
@@ -0,0 +1,116 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_OMADMUSB_File.h
+ *
+ * Project:
+ * --------
+ *   YUSU
+ *
+ * Description:
+ * ------------
+ *    header file of OMADMUSB CFG file
+ *
+ * Author:
+ * -------
+ *   MTK80863(Hao Lin)
+ *
+ *
+ *
+ *******************************************************************************/
+
+
+#ifndef _CFG_OMADMUSB_FILE_H
+#define _CFG_OMADMUSB_FILE_H
+
+
+
+// the record structure define of OMADM USB nvram file
+typedef struct
+{
+    int iIsEnable;
+    int iUsb;
+    int iAdb;
+    int iRndis;
+}OMADMUSB_CFG_Struct;
+
+///please define it according to your module
+#define CFG_FILE_OMADMUSB_REC_SIZE    sizeof(OMADMUSB_CFG_Struct)
+#define CFG_FILE_OMADMUSB_REC_TOTAL   1
+
+
+#endif
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_PRODUCT_INFO_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_PRODUCT_INFO_File.h
new file mode 100644
index 0000000..1f2e100
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_PRODUCT_INFO_File.h
@@ -0,0 +1,83 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_PRODUCT_INFO_File.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    header file of main function
+ *
+ * Author:
+ * -------
+ *   Yuchi Xu(MTK81073)
+ *
+ *------------------------------------------------------------------------------
+ *
+ *******************************************************************************/
+
+
+
+#ifndef _CFG_PRODUCT_INFO_FILE_H
+#define _CFG_PRODUCT_INFO_FILE_H
+
+
+// the record structure define of PRODUCT_INFO nvram file
+typedef struct
+{
+    unsigned char imei[8];
+    unsigned char svn;
+    unsigned char pad;
+} nvram_ef_imei_imeisv_struct;
+
+typedef struct{
+		unsigned char barcode[64];
+		nvram_ef_imei_imeisv_struct IMEI[4];
+		unsigned char reserved[1024-40-64];
+}PRODUCT_INFO;
+
+//the record size and number of PRODUCT_INFO nvram file
+#define CFG_FILE_PRODUCT_INFO_SIZE    sizeof(PRODUCT_INFO)
+#define CFG_FILE_PRODUCT_INFO_TOTAL   1
+
+#endif /* _CFG_PRODUCT_INFO_FILE_H */
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_SDIO_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_SDIO_File.h
new file mode 100644
index 0000000..3cfe712
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_SDIO_File.h
@@ -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) 2008
+*
+*  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:
+ * ---------
+ *   cfg_sdio_file.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    header file of main function
+ *
+ * Author:
+ * -------
+ *   Juju sung(MTK04314)
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *******************************************************************************/
+
+
+
+#ifndef _CFG_SDIO_FILE_H
+#define _CFG_SDIO_FILE_H
+
+
+// the record structure define of bt nvram file
+typedef struct
+{
+    unsigned char file_count;
+    unsigned char id[19];
+    unsigned int file_length[19];
+    char data[3998];
+} ap_nvram_sdio_config_struct;
+
+
+//the record size and number of bt nvram file
+#define CFG_FILE_SDIO_CONFIG_SIZE    sizeof(ap_nvram_sdio_config_struct)
+#define CFG_FILE_SDIO_CONFIG_TOTAL   1
+
+#endif /* _CFG_GPS_FILE_H */
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_SIM_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_SIM_File.h
new file mode 100644
index 0000000..91d7d31
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_SIM_File.h
@@ -0,0 +1,115 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_SIM_FILE.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    header file of SIM config struct
+ *
+ * Author:
+ * -------
+ *    Liwen Chang (MTK02556)
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ *    mtk02556
+ * [DUMA00128675] [NVRAM] Add NVRAM SIM struct
+ * NVRAM SIM new struct add
+ *
+ *
+ *******************************************************************************/
+
+#ifndef _CFG_SIM_FILE_H
+#define _CFG_SIM_FILE_H
+
+typedef struct
+{	
+	unsigned char sim2_ctl_flag;//0: AP side control, 1: MD side control;                                           
+}ap_nvram_sim_config_struct;
+
+#define CFG_FILE_SIM_CONFIG_SIZE    sizeof(ap_nvram_sim_config_struct)
+#define CFG_FILE_SIM_CONFIG_TOTAL   1
+
+#endif// _CFG_SIM_FILE_H
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_UART_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_UART_File.h
new file mode 100644
index 0000000..5b5d2e0
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_UART_File.h
@@ -0,0 +1,126 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   cfg_uart_file.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    header file of UART config struct
+ *
+ * Author:
+ * -------
+ *    LiChunhui (MTK80143)
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * Mar 24 2009 mtk80143
+ * [DUMA00112375] [uart] UART EM mode
+ * Add for UART EM mode
+ *
+ *
+ *******************************************************************************/
+
+#ifndef _CFG_UART_FILE_H
+#define _CFG_UART_FILE_H
+
+
+#if 1 //defined (__MT6516_AP__)
+    #define UART_TOTAL_NUM  0x04
+#elif defined (__TK6516_AP__)
+    #define UART_TOTAL_NUM  0x03
+#endif 
+
+typedef struct
+{	
+	unsigned char uart_ctl_flag[UART_TOTAL_NUM];//0: AP side control, 1: MD side control; 
+	                                            //uart_ctl_flag[0]<->UART1
+	                                            //uart_ctl_flag[1]<->UART2
+	                                            //uart_ctl_flag[2]<->UART3
+	                                            //........................	                                            
+}ap_nvram_uart_config_struct;
+
+#define CFG_FILE_UART_CONFIG_SIZE    sizeof(ap_nvram_uart_config_struct)
+#define CFG_FILE_UART_CONFIG_TOTAL   1
+
+#endif
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_UUID_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_UUID_File.h
new file mode 100644
index 0000000..cacbe5b
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_UUID_File.h
@@ -0,0 +1,114 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_UUID_File.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    header file of UUID CFG file
+ *
+ * Author:
+ * -------
+ *   MTK02556(Liwen Chang)
+ *
+ *
+ *
+ *******************************************************************************/
+
+
+#ifndef _CFG_UUID_FILE_H
+#define _CFG_UUID_FILE_H
+
+
+
+// the record structure define of adc nvram file
+typedef struct
+{
+ //   UINT32 uid[2];
+      unsigned int uid[2];
+} NVRAM_UUID_STRUCT;
+
+///please define it according to your module
+#define CFG_FILE_UUID_REC_SIZE    sizeof(NVRAM_UUID_STRUCT)
+#define CFG_FILE_UUID_REC_TOTAL   1
+
+
+#endif //_CFG_UUID_FILE_H
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_Wifi_File.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_Wifi_File.h
new file mode 100644
index 0000000..055ff57
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/cfgfileinc/CFG_Wifi_File.h
@@ -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) 2008
+*
+*  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:
+ * ---------
+ *   cfg_wifi_file.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    header file of main function
+ *
+ * Author:
+ * -------
+ *   Ning.F (MTK08139) 09/11/2008
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 09 22 2011 cp.wu
+ * [ALPS00070736] MT6573¤W­±ªº Wifi ©w¨î¤Æ»Ý¨D
+ * add fields for Wi-Fi regularity domain control.
+ *
+ * 05 27 2011 cp.wu
+ * [ALPS00050349] [Need Patch] [Volunteer Patch][MT6620 Wi-Fi][Driver] Add band edge tx power control to Wi-Fi NVRAM
+ * change size of reserved fields.
+ *
+ * 05 26 2011 cp.wu
+ * [ALPS00050349] [Need Patch] [Volunteer Patch][MT6620 Wi-Fi][Driver] Add band edge tx power control to Wi-Fi NVRAM
+ * update Wi-Fi NVRAM definition for band edge tx power control.
+ *
+ * 04 19 2011 cp.wu
+ * [ALPS00041285] [Need Patch] [Volunteer Patch][MT6620 Wi-Fi] Merge MT6620 Wi-Fi into mt6575_evb project
+ * 1. update init.rc for normal boot/meta/factory for MT6620 Wi-Fi related part.
+ * 2. update NVRAM structure definition and default value for MT6620 Wi-Fi
+ *
+ * 11 05 2010 renbang.jiang
+ * [ALPS00134025] [Wi-Fi] move Wi-Fi NVRAM definition source file to project folder from common folder
+ * .
+ *
+ * 11 05 2010 renbang.jiang
+ * [ALPS00134025] [Wi-Fi] move Wi-Fi NVRAM definition source file to project folder from common folder
+ * .
+ *
+ * 07 10 2010 renbang.jiang
+ * [ALPS00121785][Need Patch] [Volunteer Patch] use NVRAM to save Wi-Fi custom data 
+ * .
+ *
+ * Jul 9 2009 mtk80306
+ * [DUMA00122953] optimize nvram and change meta clean boot flag.
+ * modify wifi str
+ *
+ * Mar 21 2009 mtk80306
+ * [DUMA00112158] fix the code convention.
+ * fix the codeing convention.
+ *
+ * Mar 9 2009 mtk80306
+ * [DUMA00111088] nvram customization
+ * change wifi cmd structure.
+ *
+ * Dec 17 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ * Dec 8 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ * Nov 24 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ * Oct 29 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ *
+ *
+ *******************************************************************************/
+
+
+
+#ifndef _CFG_WIFI_FILE_H
+#define _CFG_WIFI_FILE_H
+
+// the record structure define of wifi nvram file
+/*******************************************************************************
+*                         C O M P I L E R   F L A G S
+********************************************************************************
+*/
+
+/*******************************************************************************
+*                    E X T E R N A L   R E F E R E N C E S
+********************************************************************************
+*/
+
+/*******************************************************************************
+*                              C O N S T A N T S
+********************************************************************************
+*/
+
+/*******************************************************************************
+*                             D A T A   T Y P E S
+********************************************************************************
+*/
+typedef signed char             INT_8, *PINT_8, **PPINT_8;
+typedef unsigned char           UINT_8, *PUINT_8, **PPUINT_8, *P_UINT_8;
+typedef unsigned short          UINT_16, *PUINT_16, **PPUINT_16;
+typedef unsigned int      UINT_32, *PUINT_32, **PPUINT_32;
+
+
+/*******************************************************************************
+*                            P U B L I C   D A T A
+********************************************************************************
+*/
+// duplicated from nic_cmd_event.h to avoid header dependency
+typedef struct _TX_PWR_PARAM_T {
+    INT_8       cTxPwr2G4Cck;		/* signed, in unit of 0.5dBm */
+#if defined(MT6620)
+    INT_8       acReserved[3];
+#else/*For MT6628 and later chip*/ 
+     INT_8       cTxPwr2G4Dsss;      /* signed, in unit of 0.5dBm */
+     INT_8       acReserved[2];
+#endif 
+
+    INT_8       cTxPwr2G4OFDM_BPSK;
+    INT_8       cTxPwr2G4OFDM_QPSK;
+    INT_8       cTxPwr2G4OFDM_16QAM;
+    INT_8       cTxPwr2G4OFDM_Reserved;
+    INT_8       cTxPwr2G4OFDM_48Mbps;
+    INT_8       cTxPwr2G4OFDM_54Mbps;
+
+    INT_8       cTxPwr2G4HT20_BPSK;
+    INT_8       cTxPwr2G4HT20_QPSK;
+    INT_8       cTxPwr2G4HT20_16QAM;
+    INT_8       cTxPwr2G4HT20_MCS5;
+    INT_8       cTxPwr2G4HT20_MCS6;
+    INT_8       cTxPwr2G4HT20_MCS7;
+
+    INT_8       cTxPwr2G4HT40_BPSK;
+    INT_8       cTxPwr2G4HT40_QPSK;
+    INT_8       cTxPwr2G4HT40_16QAM;
+    INT_8       cTxPwr2G4HT40_MCS5;
+    INT_8       cTxPwr2G4HT40_MCS6;
+    INT_8       cTxPwr2G4HT40_MCS7;
+
+    INT_8       cTxPwr5GOFDM_BPSK;
+    INT_8       cTxPwr5GOFDM_QPSK;
+    INT_8       cTxPwr5GOFDM_16QAM;
+    INT_8       cTxPwr5GOFDM_Reserved;
+    INT_8       cTxPwr5GOFDM_48Mbps;
+    INT_8       cTxPwr5GOFDM_54Mbps;
+
+    INT_8       cTxPwr5GHT20_BPSK;
+    INT_8       cTxPwr5GHT20_QPSK;
+    INT_8       cTxPwr5GHT20_16QAM;
+    INT_8       cTxPwr5GHT20_MCS5;
+    INT_8       cTxPwr5GHT20_MCS6;
+    INT_8       cTxPwr5GHT20_MCS7;
+
+    INT_8       cTxPwr5GHT40_BPSK;
+    INT_8       cTxPwr5GHT40_QPSK;
+    INT_8       cTxPwr5GHT40_16QAM;
+    INT_8       cTxPwr5GHT40_MCS5;
+    INT_8       cTxPwr5GHT40_MCS6;
+    INT_8       cTxPwr5GHT40_MCS7;
+} TX_PWR_PARAM_T, *P_TX_PWR_PARAM_T;
+
+typedef struct _PWR_5G_OFFSET_T {
+    INT_8       cOffsetBand0;       /* 4.915-4.980G */
+    INT_8       cOffsetBand1;       /* 5.000-5.080G */
+    INT_8       cOffsetBand2;       /* 5.160-5.180G */
+    INT_8       cOffsetBand3;       /* 5.200-5.280G */
+    INT_8       cOffsetBand4;       /* 5.300-5.340G */
+    INT_8       cOffsetBand5;       /* 5.500-5.580G */
+    INT_8       cOffsetBand6;       /* 5.600-5.680G */
+    INT_8       cOffsetBand7;       /* 5.700-5.825G */
+} PWR_5G_OFFSET_T, *P_PWR_5G_OFFSET_T;
+
+typedef struct _PWR_PARAM_T {
+    UINT_32     au4Data[28];
+    UINT_32     u4RefValue1;
+    UINT_32     u4RefValue2;
+} PWR_PARAM_T, *P_PWR_PARAM_T;
+
+typedef struct _MT6620_CFG_PARAM_STRUCT {
+    /* 256 bytes of MP data */
+    UINT_16             u2Part1OwnVersion;
+    UINT_16             u2Part1PeerVersion;
+    UINT_8              aucMacAddress[6];
+    UINT_8              aucCountryCode[2];
+    TX_PWR_PARAM_T      rTxPwr;
+    UINT_8              aucEFUSE[144];
+    UINT_8              ucTxPwrValid;
+    UINT_8              ucSupport5GBand;
+    UINT_8              fg2G4BandEdgePwrUsed;
+    INT_8               cBandEdgeMaxPwrCCK;
+    INT_8               cBandEdgeMaxPwrOFDM20; 
+    INT_8               cBandEdgeMaxPwrOFDM40;
+
+    UINT_8              ucRegChannelListMap;
+    UINT_8              ucRegChannelListIndex;
+    UINT_8              aucRegSubbandInfo[36];
+    UINT_8              ucDefaultTestMode;
+    UINT_8              aucReserved2[256-241];
+
+    /* 256 bytes of function data */
+    UINT_16             u2Part2OwnVersion;
+    UINT_16             u2Part2PeerVersion;
+    UINT_8              uc2G4BwFixed20M;
+    UINT_8              uc5GBwFixed20M;
+    UINT_8              ucEnable5GBand;
+    UINT_8              aucPreTailReserved;
+    UINT_8              aucTailReserved[256-8];
+} MT6620_CFG_PARAM_STRUCT, *P_MT6620_CFG_PARAM_STRUCT, 
+    WIFI_CFG_PARAM_STRUCT, *P_WIFI_CFG_PARAM_STRUCT;
+
+typedef struct _WIFI_CUSTOM_PARAM_STRUCT
+{
+    UINT_32             u4Resv;         /* Reserved */
+} WIFI_CUSTOM_PARAM_STRUCT;
+
+
+
+/*******************************************************************************
+*                           P R I V A T E   D A T A
+********************************************************************************
+*/
+
+/*******************************************************************************
+*                                 M A C R O S
+********************************************************************************
+*/
+#define CFG_FILE_WIFI_REC_SIZE           sizeof(WIFI_CFG_PARAM_STRUCT)
+#define CFG_FILE_WIFI_REC_TOTAL		       1
+
+#define CFG_FILE_WIFI_CUSTOM_REC_SIZE    sizeof(WIFI_CUSTOM_PARAM_STRUCT)
+#define CFG_FILE_WIFI_CUSTOM_REC_TOTAL   1
+
+/*******************************************************************************
+*                  F U N C T I O N   D E C L A R A T I O N S
+********************************************************************************
+*/
+	
+/*******************************************************************************
+*                              F U N C T I O N S
+********************************************************************************
+*/
+
+
+#endif
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_MO~3.H b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_MO~3.H
new file mode 100644
index 0000000..d88af89
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_MO~3.H
@@ -0,0 +1,42 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+#include "../cfgdefault/CFG_UART_Config_Default.h"
+#include "../cfgdefault/CFG_BT_Default.h"
+#include "../cfgdefault/CFG_SIM_CONFIG_Default.h"
+#include "../cfgdefault/CFG_ADC_Default.h"
+#include "../cfgdefault/CFG_BWCS_Default.h"
+#include "../cfgdefault/CFG_Audio_Default.h"
+#include "../cfgdefault/CFG_OMADMUSB_Default.h"
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_MO~4.H b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_MO~4.H
new file mode 100644
index 0000000..46d8430
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_MO~4.H
@@ -0,0 +1,47 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+#include "../cfgfileinc/CFG_FACTORY_File.h"
+#include "../cfgfileinc/CFG_BT_File.h"
+#include "../cfgfileinc/CFG_BWCS_File.h"
+#include "../cfgfileinc/CFG_Camera_File.h"
+#include "../cfgfileinc/CFG_UART_File.h"
+#include "../cfgfileinc/CFG_META_File.h"
+#include "../cfgfileinc/CFG_SIM_File.h"
+#include "../cfgfileinc/CFG_ADC_File.h"
+#include "../cfgfileinc/CFG_HWMON_File.h"
+#include "../cfgfileinc/CFG_UUID_File.h"
+#include "../cfgfileinc/CFG_AUDIO_File.h"
+#include "../cfgfileinc/CFG_OMADMUSB_File.h"
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_file_info.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_file_info.h
new file mode 100644
index 0000000..4ebd8de
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_file_info.h
@@ -0,0 +1,163 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_file_info.c
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *   Configuration File List
+ *
+ *
+ * Author:
+ * -------
+ *   Nick Huang (mtk02183)
+ *
+ ****************************************************************************/
+
+#ifndef __CFG_FILE_INFO_H__
+#define __CFG_FILE_INFO_H__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/*
+#include "CFG_file_public.h"
+#include "CFG_file_lid.h"
+#include "CFG_module_file.h"
+#include "CFG_module_default.h"
+
+const TCFG_FILE g_akCFG_File[]=
+{
+    //nvram version information
+	{ "/nvram/APCFG/APRDCL/FILE_VER",		VER(AP_CFG_FILE_VER_INFO_LID), 		4,								
+	CFG_FILE_VER_FILE_REC_TOTAL,			DEFAULT_ZERO,						0},
+
+	{ "/nvram/APCFG/APRDEB/BT_Addr",		VER(AP_CFG_RDEB_FILE_BT_ADDR_LID),	CFG_FILE_BT_ADDR_REC_SIZE,		
+	CFG_FILE_BT_ADDR_REC_TOTAL,				SIGNLE_DEFUALT_REC,					(char *)&stBtDefault},
+	
+	{ "/nvram/APCFG/APRDEB/WIFI",	    	VER(AP_CFG_RDEB_FILE_WIFI_LID),		    CFG_FILE_WIFI_REC_SIZE,	
+	CFG_FILE_WIFI_REC_TOTAL,		    	SIGNLE_DEFUALT_REC,				    (char *)&stWifiCfgDefault},
+	
+	{ "/nvram/APCFG/APRDCL/AUXADC",			VER(AP_CFG_RDCL_FILE_AUXADC_LID),	CFG_FILE_AUXADC_REC_SIZE,		
+	CFG_FILE_AUXADC_REC_TOTAL,				SIGNLE_DEFUALT_REC,					(char *)&stADCDefualt},
+
+    { "/nvram/APCFG/APRDCL/CAMERA_Para",	VER(AP_CFG_RDCL_CAMERA_PARA_LID),   CFG_FILE_CAMERA_PARA_REC_SIZE,	
+	CFG_FILE_CAMERA_PARA_REC_TOTAL,			DEFAULT_ZERO,						0},
+
+    { "/nvram/APCFG/APRDCL/CAMERA_3A",	   	VER(AP_CFG_RDCL_CAMERA_3A_LID),     CFG_FILE_CAMERA_3A_REC_SIZE,	
+	CFG_FILE_CAMERA_3A_REC_TOTAL,			    DEFAULT_ZERO,						0},
+
+    { "/nvram/APCFG/APRDCL/CAMERA_SHADING",	VER(AP_CFG_RDCL_CAMERA_SHADING_LID),CFG_FILE_CAMERA_SHADING_REC_SIZE,	
+	CFG_FILE_CAMERA_SHADING_REC_TOTAL,			DEFAULT_ZERO,					    0},
+
+    { "/nvram/APCFG/APRDCL/CAMERA_DEFECT",	VER(AP_CFG_RDCL_CAMERA_DEFECT_LID), CFG_FILE_CAMERA_DEFECT_REC_SIZE,	
+	CFG_FILE_CAMERA_DEFECT_REC_TOTAL,			DEFAULT_ZERO,					    0},
+
+    { "/nvram/APCFG/APRDCL/CAMERA_SENSOR",	VER(AP_CFG_RDCL_CAMERA_SENSOR_LID), CFG_FILE_CAMERA_SENSOR_REC_SIZE,	
+	CFG_FILE_CAMERA_SENSOR_REC_TOTAL,			DEFAULT_ZERO,					    0},
+	
+    { "/nvram/APCFG/APRDCL/CAMERA_LENS",	VER(AP_CFG_RDCL_CAMERA_LENS_LID),   CFG_FILE_CAMERA_LENS_REC_SIZE,	
+	CFG_FILE_CAMERA_LENS_REC_TOTAL,			        DEFAULT_ZERO,				0},
+		
+    { "/nvram/APCFG/APRDCL/UART",			VER(AP_CFG_RDCL_UART_LID), 			CFG_FILE_UART_CONFIG_SIZE,	
+	CFG_FILE_UART_CONFIG_TOTAL,					SIGNLE_DEFUALT_REC,				(char *)&stUARTConfigDefault},
+
+    { "/nvram/APCFG/APRDCL/FACTORY",		VER(AP_CFG_RDCL_FACTORY_LID), 		CFG_FILE_FACTORY_REC_SIZE,	
+	CFG_FILE_FACTORY_REC_TOTAL,				DEFAULT_ZERO,			    	    0},    
+	
+    { "/nvram/APCFG/APRDCL/BWCS",			VER(AP_CFG_RDCL_BWCS_LID), 	        CFG_FILE_BWCS_CONFIG_SIZE,	
+	CFG_FILE_BWCS_CONFIG_TOTAL,				SIGNLE_DEFUALT_REC,					(char *)&stBWCSConfigDefault},	
+
+    { "/nvram/APCFG/APRDCL/HWMON_ACC",		VER(AP_CFG_RDCL_HWMON_ACC_LID), 	CFG_FILE_HWMON_ACC_REC_SIZE,	
+	CFG_FILE_HWMON_ACC_REC_TOTAL,		    DEFAULT_ZERO,					    0},	
+	
+    { "/nvram/APCFG/APRDEB/WIFI_CUSTOM",	VER(AP_CFG_RDEB_WIFI_CUSTOM_LID),	CFG_FILE_WIFI_CUSTOM_REC_SIZE,	
+	CFG_FILE_WIFI_CUSTOM_REC_TOTAL,		    SIGNLE_DEFUALT_REC,				    (char *)&stWifiCustomDefault},
+};
+const int g_i4CFG_File_Count = sizeof(g_akCFG_File)/sizeof(TCFG_FILE);
+
+extern const TCFG_FILE g_akCFG_File[];
+
+extern const int g_i4CFG_File_Count;
+*/
+const TCFG_FILE g_akCFG_File[];
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_file_info_custom.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_file_info_custom.h
new file mode 100644
index 0000000..04165a8
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_file_info_custom.h
@@ -0,0 +1,196 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_file_info_custom.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *   Configuration File List for Customer
+ *
+ *
+ * Author:
+ * -------
+ *   Nick Huang (mtk02183)
+ *
+ ****************************************************************************/
+
+#ifndef __CFG_FILE_INFO_CUSTOM_H__
+#define __CFG_FILE_INFO_CUSTOM_H__
+
+#include "CFG_file_public.h"
+#include "CFG_file_lid.h"
+#include "Custom_NvRam_LID.h"
+//#include "../../../custom/common/cgen/cfgfileinc/CFG_AUDIO_File.h"
+//#include "../../../custom/common/cgen/cfgdefault/CFG_Audio_Default.h"
+#include "../cfgfileinc/CFG_AUDIO_File.h"
+#include "../cfgdefault/CFG_Audio_Default.h"
+#include "../cfgfileinc/CFG_GPS_File.h"
+#include "../cfgdefault/CFG_GPS_Default.h"
+#include "../cfgfileinc/CFG_Wifi_File.h"
+#include "../cfgdefault/CFG_WIFI_Default.h"
+#include "../cfgfileinc/CFG_PRODUCT_INFO_File.h"
+#include "../cfgdefault/CFG_PRODUCT_INFO_Default.h"
+#include <stdio.h>
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+    const TCFG_FILE g_akCFG_File_Custom[]=
+    {
+        {
+            "/mnt/vendor/nvdata/APCFG/APRDCL/Audio_Sph",       VER(AP_CFG_RDCL_FILE_AUDIO_LID),         CFG_FILE_SPEECH_REC_SIZE,
+            CFG_FILE_SPEECH_REC_TOTAL,                   SIGNLE_DEFUALT_REC,                                   (char *)&speech_custom_default, DataReset , NULL
+        },
+
+        {
+            "/mnt/vendor/nvdata/APCFG/APRDEB/GPS",         VER(AP_CFG_CUSTOM_FILE_GPS_LID),	           CFG_FILE_GPS_CONFIG_SIZE,
+            CFG_FILE_GPS_CONFIG_TOTAL,                  SIGNLE_DEFUALT_REC,                (char *)&stGPSConfigDefault, DataReset , NULL
+        },
+
+        {
+            "/mnt/vendor/nvdata/APCFG/APRDCL/Audio_CompFlt",       VER(AP_CFG_RDCL_FILE_AUDIO_COMPFLT_LID),         CFG_FILE_AUDIO_COMPFLT_REC_SIZE,
+            CFG_FILE_AUDIO_COMPFLT_REC_TOTAL,                   SIGNLE_DEFUALT_REC,                (char *)&audio_custom_default, DataReset , NULL
+        },
+
+        {
+            "/mnt/vendor/nvdata/APCFG/APRDCL/Audio_Effect",       VER(AP_CFG_RDCL_FILE_AUDIO_EFFECT_LID),         CFG_FILE_AUDIO_EFFECT_REC_SIZE,
+            CFG_FILE_AUDIO_EFFECT_REC_TOTAL,                   SIGNLE_DEFUALT_REC,                (char *)&audio_effect_custom_default, DataReset , NULL
+        },
+
+        {
+            "/mnt/vendor/nvdata/APCFG/APRDEB/WIFI",	    	VER(AP_CFG_RDEB_FILE_WIFI_LID),		    CFG_FILE_WIFI_REC_SIZE,
+            CFG_FILE_WIFI_REC_TOTAL,		    	SIGNLE_DEFUALT_REC,				    (char *)&stWifiCfgDefault, DataReset , NULL
+        },
+
+        {
+            "/mnt/vendor/nvdata/APCFG/APRDEB/WIFI_CUSTOM",	VER(AP_CFG_RDEB_WIFI_CUSTOM_LID),	CFG_FILE_WIFI_CUSTOM_REC_SIZE,
+            CFG_FILE_WIFI_CUSTOM_REC_TOTAL,		    SIGNLE_DEFUALT_REC,				    (char *)&stWifiCustomDefault, DataReset , NULL
+        },
+
+        {
+            "/mnt/vendor/nvdata/APCFG/APRDCL/Audio_Sph_Med",       VER(AP_CFG_RDCL_FILE_AUDIO_PARAM_MED_LID),         CFG_FILE_AUDIO_PARAM_MED_REC_SIZE,
+            CFG_FILE_AUDIO_PARAM_MED_REC_TOTAL,                   SIGNLE_DEFUALT_REC,                (char *)&audio_param_med_default, DataReset , NULL
+        },
+
+        {
+            "/mnt/vendor/nvdata/APCFG/APRDCL/Audio_Vol_custom",       VER(AP_CFG_RDCL_FILE_AUDIO_VOLUME_CUSTOM_LID),         CFG_FILE_AUDIO_VOLUME_CUSTOM_REC_SIZE,
+            CFG_FILE_AUDIO_VOLUME_CUSTOM_REC_TOTAL,           SIGNLE_DEFUALT_REC,                (char *)&audio_volume_custom_default, DataReset , NULL
+        },
+
+        {
+            "/mnt/vendor/nvdata/APCFG/APRDCL/Sph_Dual_Mic",       VER(AP_CFG_RDCL_FILE_DUAL_MIC_CUSTOM_LID),         CFG_FILE_SPEECH_DUAL_MIC_SIZE,
+            CFG_FILE_SPEECH_DUAL_MIC_TOTAL,           SIGNLE_DEFUALT_REC,                (char *)&dual_mic_custom_default, DataReset , NULL
+        },
+
+        {
+            "/mnt/vendor/nvdata/APCFG/APRDCL/Audio_Wb_Sph",       VER(AP_CFG_RDCL_FILE_AUDIO_WB_PARAM_LID),         CFG_FILE_WB_SPEECH_REC_SIZE,
+            CFG_FILE_WB_SPEECH_REC_TOTAL,                   SIGNLE_DEFUALT_REC,                                   (char *)&wb_speech_custom_default, DataReset , NULL
+        },
+
+        {
+            "/mnt/vendor/nvdata/APCFG/APRDEB/PRODUCT_INFO",       VER(AP_CFG_REEB_PRODUCT_INFO_LID),         CFG_FILE_PRODUCT_INFO_SIZE,
+            CFG_FILE_PRODUCT_INFO_TOTAL,                   SIGNLE_DEFUALT_REC,                                   (char *)&stPRODUCT_INFOConfigDefault,DataReset, NULL
+        },
+
+        {
+            "/mnt/vendor/nvdata/APCFG/APRDCL/Headphone_CompFlt",       VER(AP_CFG_RDCL_FILE_HEADPHONE_COMPFLT_LID),         CFG_FILE_AUDIO_COMPFLT_REC_SIZE,
+            CFG_FILE_HEADPHONE_COMPFLT_REC_TOTAL,                   SIGNLE_DEFUALT_REC,                (char *)&audio_hcf_custom_default, DataReset , NULL
+        },
+
+        { "/mnt/vendor/nvdata/APCFG/APRDCL/Audio_gain_table",   VER(AP_CFG_RDCL_FILE_AUDIO_GAIN_TABLE_LID), CFG_FILE_AUDIO_GAIN_TABLE_CUSTOM_REC_SIZE,
+            CFG_FILE_AUDIO_GAIN_TABLE_CUSTOM_REC_TOTAL, SIGNLE_DEFUALT_REC  ,	 (char *)&Gain_control_table_default, DataReset , NULL
+        },
+
+        {
+            "/mnt/vendor/nvdata/APCFG/APRDCL/Audio_ver1_Vol_custom",       VER(AP_CFG_RDCL_FILE_AUDIO_VER1_VOLUME_CUSTOM_LID),         CFG_FILE_AUDIO_VER1_VOLUME_CUSTOM_REC_SIZE,
+            CFG_FILE_AUDIO_VER1_VOLUME_CUSTOM_REC_TOTAL,           SIGNLE_DEFUALT_REC,                (char *)&audio_ver1_custom_default, DataReset , NULL
+        },
+        
+        { "/mnt/vendor/nvdata/APCFG/APRDCL/Audio_Hd_Record_Param",   VER(AP_CFG_RDCL_FILE_AUDIO_HD_REC_PAR_LID), CFG_FILE_AUDIO_HD_REC_PAR_SIZE,
+            CFG_FILE_AUDIO_HD_REC_PAR_TOTAL, SIGNLE_DEFUALT_REC  ,    (char *)&Hd_Recrod_Par_default, DataReset , NULL
+        },
+        
+        { "/mnt/vendor/nvdata/APCFG/APRDCL/Audio_Hd_Record_Scene_Table",   VER(AP_CFG_RDCL_FILE_AUDIO_HD_REC_SCENE_LID), CFG_FILE_AUDIO_HD_REC_SCENE_TABLE_SIZE,
+            CFG_FILE_AUDIO_HD_REC_SCENE_TABLE_TOTAL, SIGNLE_DEFUALT_REC  ,    (char *)&Hd_Recrod_Scene_Table_default, DataReset , NULL
+        },
+        
+        { "/mnt/vendor/nvdata/APCFG/APRDCL/Audio_Buffer_DC_Calibration_Param",   VER(AP_CFG_RDCL_FILE_AUDIO_BUFFER_DC_CALIBRATION_PAR_LID), CFG_FILE_AUDIO_BUFFER_DC_CALIBRATION_PAR_SIZE,
+            CFG_FILE_AUDIO_BUFFER_DC_CALIBRATION_PAR_TOTAL, SIGNLE_DEFUALT_REC  ,    (char *)&Audio_Buffer_DC_Calibration_Par_default, DataReset , NULL
+        },
+        { "/mnt/vendor/nvdata/APCFG/APRDCL/VibSpk_CompFlt",   VER(AP_CFG_RDCL_FILE_VIBSPK_COMPFLT_LID), CFG_FILE_AUDIO_COMPFLT_REC_SIZE,
+            CFG_FILE_VIBSPK_COMPFLT_REC_TOTAL, SIGNLE_DEFUALT_REC  ,    (char *)&audio_vibspk_custom_default, DataReset , NULL
+        },
+        { "/mnt/vendor/nvdata/APCFG/APRDCL/MusicDRC_CompFlt",   VER(AP_CFG_RDCL_FILE_AUDIO_MUSIC_DRC_LID), CFG_FILE_AUDIO_COMPFLT_REC_SIZE,
+            CFG_FILE_MUSICDRC_COMPFLT_REC_TOTAL, SIGNLE_DEFUALT_REC  ,    (char *)&audio_musicdrc_custom_default, DataReset , NULL
+        },
+        { "/mnt/vendor/nvdata/APCFG/APRDCL/RingToneDRC_CompFlt",   VER(AP_CFG_RDCL_FILE_AUDIO_RINGTONE_DRC_LID), CFG_FILE_AUDIO_COMPFLT_REC_SIZE,
+            CFG_FILE_RINGTONEDRC_COMPFLT_REC_TOTAL, SIGNLE_DEFUALT_REC  ,    (char *)&audio_ringtonedrc_custom_default, DataReset , NULL
+        },
+        { "/mnt/vendor/nvdata/APCFG/APRDCL/Audio_MAGI_CONFERENCE",   VER(AP_CFG_RDCL_FILE_AUDIO_MAGI_CONFERENCE_LID), CFG_FILE_SPEECH_MAGI_CONFERENCE_SIZE,
+            CFG_FILE_SPEECH_MAGI_CONFERENCE_TOTAL, SIGNLE_DEFUALT_REC  ,    (char *)&speech_magi_conference_custom_default, DataReset , NULL
+        },
+        { "/mnt/vendor/nvdata/APCFG/APRDCL/Audio_HAC_Param",   VER(AP_CFG_RDCL_FILE_AUDIO_HAC_PARAM_LID), CFG_FILE_SPEECH_HAC_PARAM_SIZE,
+            CFG_FILE_SPEECH_HAC_PARAM_TOTAL, SIGNLE_DEFUALT_REC  ,    (char *)&speech_hac_param_custom_default, DataReset , NULL
+        },
+    };
+
+    int iNvRamFileMaxLID=AP_CFG_CUSTOM_FILE_MAX_LID;
+    extern int iNvRamFileMaxLID;
+    const unsigned int g_i4CFG_File_Custom_Count = sizeof(g_akCFG_File_Custom)/sizeof(TCFG_FILE);
+
+    extern const TCFG_FILE g_akCFG_File_Custom[];
+
+    extern const unsigned int g_i4CFG_File_Custom_Count;
+
+    int iFileWIFILID=AP_CFG_RDEB_FILE_WIFI_LID;
+    extern int iFileWIFILID;
+    int iFileCustomWIFILID=AP_CFG_RDEB_WIFI_CUSTOM_LID;
+    extern int iFileCustomWIFILID;
+    int iFilePRODUCT_INFOLID=AP_CFG_REEB_PRODUCT_INFO_LID;
+    extern int iFilePRODUCT_INFOLID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_file_lid.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_file_lid.h
new file mode 100644
index 0000000..951720c
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_file_lid.h
@@ -0,0 +1,341 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   cfg_file_lid.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    header file of main function
+ *
+ * Author:
+ * -------
+ *   Ning.F (MTK08139) 09/11/2008
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 12 29 2012 donglei.ji
+ * [ALPS00425279] [Need Patch] [Volunteer Patch] voice ui and password unlock feature check in
+ * voice ui - NVRAM .
+ *
+ * 01 14 2011 hao.lin
+ * [ALPS00138458] [Need Patch] [Volunteer Patch] OMA DM USB and SD format
+ * <saved by Perforce>
+ *
+ * 12 24 2010 hao.lin
+ * [ALPS00138458] [Need Patch] [Volunteer Patch] OMA DM USB and SD format
+ * <saved by Perforce>
+ *
+ * 11 05 2010 renbang.jiang
+ * [ALPS00134025] [Wi-Fi] move Wi-Fi NVRAM definition source file to project folder from common folder
+ * .
+ *
+ * 07 10 2010 renbang.jiang
+ * [ALPS00121785][Need Patch] [Volunteer Patch] use NVRAM to save Wi-Fi custom data
+ * .
+ *
+ * 05 05 2010 saker.hsia
+ * [ALPS00001913][BWCS] BT WiFi Single Antenna Feature check in Android 2.1
+ * .
+ *
+ * 04 26 2010 renbang.jiang
+ * [ALPS00005487][Wi-Fi] change Wi-Fi nvram LID
+ * [ALPS00005487] [Wi-Fi] change Wi-Fi nvram LID
+ * .
+ *
+ *    mtk02556
+ * [DUMA00128675] [NVRAM] Add NVRAM SIM struct
+ * Add NVRAM SIM LID
+ *
+ *    mtk02556
+ * [DUMA00128426] [NVRAM] Reconstrcut ADC struct and add UUID struct
+ * Add NVRAM UUID VER
+ *
+ * Jul 9 2009 mtk80306
+ * [DUMA00122953] optimize nvram and change meta clean boot flag.
+ * modify wifi version
+ *
+ * Apr 29 2009 mtk80306
+ * [DUMA00116080] revise the customization of nvram
+ * revise nvram customization
+ *
+ * Apr 15 2009 mtk80306
+ * [DUMA00204156] Power on_it display start in mobile screen
+ * add uart file
+ *
+ * Mar 21 2009 mtk80306
+ * [DUMA00112158] fix the code convention.
+ * fix the codeing convention.
+ *
+ * Mar 15 2009 mtk80306
+ * [DUMA00111629] add camera nvram files
+ * add camera nvram files
+ *
+ * Mar 9 2009 mtk80306
+ * [DUMA00111088] nvram customization
+ * nvram customization
+ *
+ * Feb 23 2009 mtk80306
+ * [DUMA00109277] add meta _battery mode.
+ *
+ *
+ * Feb 19 2009 mtk80306
+ * [DUMA00109277] add meta _battery mode.
+ * add meta_battery
+ *
+ * Jan 13 2009 mtk80306
+ * [DUMA00107334] add nvram dll code
+ *
+ *
+ * Jan 13 2009 mtk80306
+ * [DUMA00107334] add nvram dll code
+ * add nvram dll code.
+ *
+ * Dec 17 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ * Dec 8 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ * Nov 24 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ * Oct 29 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ *
+ *
+ *******************************************************************************/
+
+
+#ifndef CFG_FILE_LID_H
+#define CFG_FILE_LID_H
+
+
+
+#define VER_LID(lid) lid##_VERNO lid
+#define VER(lid)  lid##_VERNO
+
+
+/* the definition of file LID */
+typedef enum
+{
+	AP_CFG_FILE_VER_INFO_LID,
+	AP_CFG_RDEB_FILE_BT_ADDR_LID,
+//	AP_CFG_RDEB_FILE_WIFI_LID,
+	AP_CFG_RDCL_FILE_AUXADC_LID,
+	AP_CFG_RDCL_CAMERA_PARA_LID,
+	AP_CFG_RDCL_CAMERA_3A_LID,
+	AP_CFG_RDCL_CAMERA_SHADING_LID,
+	AP_CFG_RDCL_CAMERA_DEFECT_LID,
+	AP_CFG_RDCL_CAMERA_SENSOR_LID,  //10
+	AP_CFG_RDCL_CAMERA_LENS_LID,
+	AP_CFG_RDCL_UART_LID,
+	//AP_CFG_RDCL_UUID_LID,
+	//AP_CFG_RDCL_SIM_LID,
+	AP_CFG_RDCL_FACTORY_LID,
+    AP_CFG_RDCL_BWCS_LID,
+    AP_CFG_RDCL_HWMON_ACC_LID,
+    AP_CFG_RDCL_HWMON_GYRO_LID,
+//    AP_CFG_RDEB_WIFI_CUSTOM_LID,
+    AP_CFG_RDEB_OMADM_USB_LID,
+	AP_CFG_RDCL_FILE_VOICE_RECOGNIZE_PARAM_LID,
+	AP_CFG_RDCL_FILE_AUDIO_AUDENH_CONTROL_OPTION_PAR_LID,
+	AP_CFG_RDCL_FILE_AUDIO_VOIP_PAR_LID,
+	AP_CFG_RDCL_HWMON_PS_LID,
+	AP_CFG_FILE_MDTYPE_LID,
+	AP_CFG_FILE_EXT_MDTYPE_LID,
+	AP_CFG_RDCL_FILE_SDIO_LID,
+	AP_CFG_RDCL_CAMERA_VERSION_LID,
+	AP_CFG_RDCL_CAMERA_FEATURE_LID,
+	AP_CFG_RDCL_CAMERA_GEOMETRY_LID,
+	AP_CFG_RDCL_FILE_MD_SBP_LID,
+#if (defined MT6752) | (defined MT6795) | (defined MT6735) | (defined MT8163) | (defined MT6580)
+    AP_CFG_RDCL_CAMERA_SHADING2_LID,
+    AP_CFG_RDCL_CAMERA_SHADING3_LID,
+    AP_CFG_RDCL_CAMERA_SHADING4_LID,
+    AP_CFG_RDCL_CAMERA_SHADING5_LID,
+    AP_CFG_RDCL_CAMERA_SHADING6_LID,
+    AP_CFG_RDCL_CAMERA_SHADING7_LID,
+    AP_CFG_RDCL_CAMERA_SHADING8_LID,
+    AP_CFG_RDCL_CAMERA_SHADING9_LID,
+    AP_CFG_RDCL_CAMERA_SHADING10_LID,
+    AP_CFG_RDCL_CAMERA_SHADING11_LID,
+    AP_CFG_RDCL_CAMERA_SHADING12_LID,
+    AP_CFG_RDCL_CAMERA_PLINE_LID,
+    AP_CFG_RDCL_CAMERA_PLINE2_LID,
+    AP_CFG_RDCL_CAMERA_PLINE3_LID,
+    AP_CFG_RDCL_CAMERA_PLINE4_LID,
+    AP_CFG_RDCL_CAMERA_PLINE5_LID,
+    AP_CFG_RDCL_CAMERA_PLINE6_LID,
+    AP_CFG_RDCL_CAMERA_PLINE7_LID,
+    AP_CFG_RDCL_CAMERA_PLINE8_LID,
+    AP_CFG_RDCL_CAMERA_PLINE9_LID,
+    AP_CFG_RDCL_CAMERA_PLINE10_LID,
+    AP_CFG_RDCL_CAMERA_PLINE11_LID,
+    AP_CFG_RDCL_CAMERA_PLINE12_LID,
+#else
+#endif
+	AP_CFG_CUSTOM_BEGIN_LID,  ///Max LID.
+}CFG_FILE_LID;
+/*
+int iCustomBeginLID=AP_CFG_CUSTOM_BEGIN_LID;
+extern int iCustomBeginLID;
+int iFileVerInfoLID=AP_CFG_FILE_VER_INFO_LID;
+extern int iFileVerInfoLID;
+int iFileBTAddrLID=AP_CFG_RDEB_FILE_BT_ADDR_LID;
+extern int iFileBTAddrLID;
+
+#if 0
+int iFileWIFILID=AP_CFG_RDEB_FILE_WIFI_LID;
+extern int iFileWIFILID;
+int iFileCustomWIFILID=AP_CFG_RDEB_WIFI_CUSTOM_LID;
+extern int iFileCustomWIFILID;
+#endif
+
+int iFileAuxADCLID=AP_CFG_RDCL_FILE_AUXADC_LID;
+extern int iFileAuxADCLID;
+*/
+////if file num changed, the define of CFG_FILE_VER_FILE_REC_TOTAL should be changed too  ///
+#define CFG_FILE_VER_FILE_REC_TOTAL   936
+
+/* verno of data items */
+/* ver file version */
+/* md type file version*/
+#define AP_CFG_FILE_MDTYPE_LID_VERNO			"000"
+#define AP_CFG_FILE_EXT_MDTYPE_LID_VERNO			"000"
+#define AP_CFG_FILE_VER_INFO_LID_VERNO				"000"
+/* BT file version */
+#define AP_CFG_RDEB_FILE_BT_ADDR_LID_VERNO			"001"
+/* WIFI file version */
+//#define AP_CFG_RDEB_FILE_WIFI_LID_VERNO				"000"
+/* WIFI MAC addr file version */
+//#define AP_CFG_RDCL_FILE_WIFI_ADDR_LID_VERNO		"000"
+/* ADC file version */
+#define AP_CFG_RDCL_FILE_AUXADC_LID_VERNO			"000"
+
+/* camera nvram files */
+#define AP_CFG_RDCL_CAMERA_PARA_LID_VERNO			"000"
+#define AP_CFG_RDCL_CAMERA_3A_LID_VERNO				"000"
+#define AP_CFG_RDCL_CAMERA_SHADING_LID_VERNO		"000"
+#define AP_CFG_RDCL_CAMERA_DEFECT_LID_VERNO			"000"
+#define AP_CFG_RDCL_CAMERA_SENSOR_LID_VERNO			"000"
+#define AP_CFG_RDCL_CAMERA_LENS_LID_VERNO			"000"
+#define AP_CFG_RDCL_CAMERA_VERSION_LID_VERNO        "000"
+#define AP_CFG_RDCL_CAMERA_FEATURE_LID_VERNO        "000"
+#define AP_CFG_RDCL_CAMERA_GEOMETRY_LID_VERNO        "000"
+#define AP_CFG_RDCL_CAMERA_PLINE_LID_VERNO        "000"
+
+#define AP_CFG_RDCL_UART_LID_VERNO                  "000"
+
+#define AP_CFG_RDCL_UUID_LID_VERNO                  "000"
+
+#define AP_CFG_RDCL_SIM_LID_VERNO                   "000"
+
+/* For the factory mode info. used */
+#define AP_CFG_RDCL_FACTORY_LID_VERNO               "000"
+
+#define AP_CFG_RDCL_BWCS_LID_VERNO				    "000"
+
+#define AP_CFG_RDCL_HWMON_ACC_LID_VERNO             "000"
+#define AP_CFG_RDCL_HWMON_GYRO_LID_VERNO					"000"
+#define AP_CFG_RDCL_HWMON_PS_LID_VERNO					"000"
+//#define AP_CFG_RDEB_WIFI_CUSTOM_LID_VERNO				"000"
+#define AP_CFG_RDEB_OMADM_USB_LID_VERNO				"000"
+#define AP_CFG_RDCL_FILE_VOICE_RECOGNIZE_PARAM_LID_VERNO "000"
+
+/* audio audenh control custom file version*/
+#define AP_CFG_RDCL_FILE_AUDIO_AUDENH_CONTROL_OPTION_PAR_LID_VERNO "000"
+
+//audio VoIP params custom file version
+#define AP_CFG_RDCL_FILE_AUDIO_VOIP_PAR_LID_VERNO "000"
+/* SDIO file version */
+#define AP_CFG_RDCL_FILE_SDIO_LID_VERNO            "001"
+
+/* MD SBP fle version */
+#define AP_CFG_RDCL_FILE_MD_SBP_LID_VERNO         "001"
+
+#endif /* CFG_FILE_LID_H */
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_module_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_module_default.h
new file mode 100644
index 0000000..99e158b
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_module_default.h
@@ -0,0 +1,46 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+#include "cfgdefault/CFG_UART_Config_Default.h"
+#include "cfgdefault/CFG_BT_Default.h"
+#include "cfgdefault/CFG_SIM_CONFIG_Default.h"
+#include "cfgdefault/CFG_ADC_Default.h"
+#include "cfgdefault/CFG_BWCS_Default.h"
+#include "cfgdefault/CFG_Audio_Default.h"
+#include "cfgdefault/CFG_OMADMUSB_Default.h"
+#include "cfgdefault/CFG_MDTYPE_Default.h"
+#include "cfgdefault/CFG_EXT_MDTYPE_Default.h"
+#include "cfgdefault/CFG_MD_SBP_Default.h"
+#include "cfgdefault/CFG_SDIO_Default.h"
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_module_file.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_module_file.h
new file mode 100644
index 0000000..d2a630e
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/CFG_module_file.h
@@ -0,0 +1,51 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+#include "cfgfileinc/CFG_FACTORY_File.h"
+#include "cfgfileinc/CFG_BT_File.h"
+#include "cfgfileinc/CFG_BWCS_File.h"
+#include "cfgfileinc/CFG_Camera_File.h"
+#include "cfgfileinc/CFG_UART_File.h"
+#include "cfgfileinc/CFG_META_File.h"
+#include "cfgfileinc/CFG_SIM_File.h"
+#include "cfgfileinc/CFG_ADC_File.h"
+#include "cfgfileinc/CFG_HWMON_File.h"
+#include "cfgfileinc/CFG_UUID_File.h"
+#include "cfgfileinc/CFG_AUDIO_File.h"
+#include "cfgfileinc/CFG_OMADMUSB_File.h"
+#include "cfgfileinc/CFG_MDTYPE_File.h"
+#include "cfgfileinc/CFG_EXT_MDTYPE_File.h"
+#include "cfgfileinc/CFG_MD_SBP_File.h"
+#include "cfgfileinc/CFG_SDIO_File.h"
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/Custom_NvRam_LID.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/Custom_NvRam_LID.h
new file mode 100644
index 0000000..3195032
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/Custom_NvRam_LID.h
@@ -0,0 +1,232 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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_NvRam_lid.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    header file of Custom_NvRam_lid
+ *
+ * Author:
+ * -------
+ *   Ning.F (MTK08139) 03/09/2009
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 11 12 2010 renbang.jiang
+ * [ALPS00134025] [Wi-Fi] move Wi-Fi NVRAM definition source file to project folder from common folder
+ * .
+ *
+ * 11 05 2010 renbang.jiang
+ * [ALPS00134025] [Wi-Fi] move Wi-Fi NVRAM definition source file to project folder from common folder
+ * .
+ *
+ * 06 24 2010 yunchang.chang
+ * [ALPS00002677][Need Patch] [Volunteer Patch] ALPS.10X.W10.26 Volunteer patch for GPS customization use NVRam 
+ * .
+ *
+ * Jun 22 2009 mtk01352
+ * [DUMA00007771] Moving modem side customization to AP
+ *
+ *
+ * Apr 29 2009 mtk80306
+ * [DUMA00116080] revise the customization of nvram
+ * revise nvram customization
+ *
+ * Mar 21 2009 mtk80306
+ * [DUMA00112158] fix the code convention.
+ * modify code convention
+ *
+ * Mar 9 2009 mtk80306
+ * [DUMA00111088] nvram customization
+ * nvram customization
+ *
+ *
+ *
+ *
+ *
+ *******************************************************************************/
+
+
+#ifndef CUSTOM_CFG_FILE_LID_H
+#define CUSTOM_CFG_FILE_LID_H
+
+
+//#include "../../../../../common/inc/cfg_file_lid.h"
+//#include "../../../common/cgen/inc/CFG_File_LID.h"
+#include "CFG_file_lid.h"
+
+/* the definition of file LID */
+typedef enum
+{
+    AP_CFG_RDCL_FILE_AUDIO_LID=AP_CFG_CUSTOM_BEGIN_LID,	//AP_CFG_CUSTOM_BEGIN_LID: this lid must not be changed, it is reserved for system.
+    AP_CFG_CUSTOM_FILE_GPS_LID,
+    AP_CFG_RDCL_FILE_AUDIO_COMPFLT_LID,
+    AP_CFG_RDCL_FILE_AUDIO_EFFECT_LID,
+    AP_CFG_RDEB_FILE_WIFI_LID,
+    AP_CFG_RDEB_WIFI_CUSTOM_LID,
+    AP_CFG_RDCL_FILE_AUDIO_PARAM_MED_LID,
+    AP_CFG_RDCL_FILE_AUDIO_VOLUME_CUSTOM_LID,
+    AP_CFG_RDCL_FILE_DUAL_MIC_CUSTOM_LID,
+    AP_CFG_RDCL_FILE_AUDIO_WB_PARAM_LID,
+    AP_CFG_REEB_PRODUCT_INFO_LID,
+//	  AP_CFG_RDCL_FILE_META_LID,
+//    AP_CFG_CUSTOM_FILE_CUSTOM1_LID,
+//    AP_CFG_CUSTOM_FILE_CUSTOM2_LID,
+    AP_CFG_RDCL_FILE_HEADPHONE_COMPFLT_LID,
+    AP_CFG_RDCL_FILE_AUDIO_GAIN_TABLE_LID,
+    AP_CFG_RDCL_FILE_AUDIO_VER1_VOLUME_CUSTOM_LID,
+    AP_CFG_RDCL_FILE_AUDIO_HD_REC_PAR_LID,
+    AP_CFG_RDCL_FILE_AUDIO_HD_REC_SCENE_LID,
+    AP_CFG_RDCL_FILE_AUDIO_BUFFER_DC_CALIBRATION_PAR_LID,
+    AP_CFG_RDCL_FILE_VIBSPK_COMPFLT_LID,
+    AP_CFG_RDCL_FILE_AUDIO_MUSIC_DRC_LID,
+    AP_CFG_RDCL_FILE_AUDIO_RINGTONE_DRC_LID,
+    AP_CFG_RDCL_FILE_AUDIO_MAGI_CONFERENCE_LID,
+    AP_CFG_RDCL_FILE_AUDIO_HAC_PARAM_LID,
+    AP_CFG_CUSTOM_FILE_MAX_LID,
+} CUSTOM_CFG_FILE_LID;
+
+
+/* verno of data items */
+/* audio file version */
+#define AP_CFG_RDCL_FILE_AUDIO_LID_VERNO			"001"
+
+/* GPS file version */
+#define AP_CFG_CUSTOM_FILE_GPS_LID_VERNO			"000"
+
+/* audio acf file version */
+#define AP_CFG_RDCL_FILE_AUDIO_COMPFLT_LID_VERNO	"001"
+
+/* audio hcf file version */
+#define AP_CFG_RDCL_FILE_HEADPHONE_COMPFLT_LID_VERNO	"001"
+/* audio vibspk hcf file version */
+#define AP_CFG_RDCL_FILE_VIBSPK_COMPFLT_LID_VERNO	"001"
+
+/* audio effect file version */
+#define AP_CFG_RDCL_FILE_AUDIO_EFFECT_LID_VERNO	"001"
+
+/* audio med file version */
+#define AP_CFG_RDCL_FILE_AUDIO_PARAM_MED_LID_VERNO  "001"
+
+/* audio volume custom file version */
+#define AP_CFG_RDCL_FILE_AUDIO_VOLUME_CUSTOM_LID_VERNO  "001"
+#define AP_CFG_RDCL_FILE_AUDIO_VER1_VOLUME_CUSTOM_LID_VERNO  "001"
+
+/* dual mic custom file version */
+#define AP_CFG_RDCL_FILE_DUAL_MIC_CUSTOM_LID_VERNO  "002"
+
+/* audio wb specch param custom file version */
+#define AP_CFG_RDCL_FILE_AUDIO_WB_PARAM_LID_VERNO "001"
+
+/* audio gain table custom file version */
+#define AP_CFG_RDCL_FILE_AUDIO_GAIN_TABLE_LID_VERNO "001"
+
+/* audio hd record par custom file version*/
+#define AP_CFG_RDCL_FILE_AUDIO_HD_REC_PAR_LID_VERNO "001"
+#define AP_CFG_RDCL_FILE_AUDIO_HD_REC_SCENE_LID_VERNO "001"
+
+/* audio buffer dc calibration custom file version*/
+#define AP_CFG_RDCL_FILE_AUDIO_BUFFER_DC_CALIBRATION_PAR_LID_VERNO "000"
+
+/* META log and com port config file version */
+#define AP_CFG_RDCL_FILE_META_LID_VERNO			    "000"
+
+/* custom2 file version */
+#define AP_CFG_CUSTOM_FILE_CUSTOM1_LID_VERNO			"000"
+/* custom2 file version */
+#define AP_CFG_CUSTOM_FILE_CUSTOM2_LID_VERNO			"000"
+
+/* WIFI file version */
+#define AP_CFG_RDEB_FILE_WIFI_LID_VERNO				"000"
+/* WIFI MAC addr file version */
+#define AP_CFG_RDCL_FILE_WIFI_ADDR_LID_VERNO		"000"
+#define AP_CFG_RDEB_WIFI_CUSTOM_LID_VERNO				"000"
+#define AP_CFG_REEB_PRODUCT_INFO_LID_VERNO      "000"
+
+#define AP_CFG_RDCL_FILE_AUDIO_MUSIC_DRC_LID_VERNO			"000"
+#define AP_CFG_RDCL_FILE_AUDIO_RINGTONE_DRC_LID_VERNO			"000"
+
+#define AP_CFG_RDCL_FILE_AUDIO_MAGI_CONFERENCE_LID_VERNO			"000"
+#define AP_CFG_RDCL_FILE_AUDIO_HAC_PARAM_LID_VERNO			"000"
+
+#endif /* CFG_FILE_LID_H */
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/Custom_NvRam_data_item.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/Custom_NvRam_data_item.h
new file mode 100644
index 0000000..20e8cd2
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/Custom_NvRam_data_item.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) 2008
+*
+*  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).
+*
+*****************************************************************************/
+
+
+#ifndef CUSTOM_NVRAM_DATA_ITEM_H
+#define CUSTOM_NVRAM_DATA_ITEM_H
+
+#include "custom_cfg_module_file.h"
+#include "Custom_NvRam_LID.h"
+
+
+
+/*****************************************************************************
+* NVRAM database define
+*****************************************************************************/
+BEGIN_NVRAM_DATA
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_LID)
+AUDIO_CUSTOM_PARAM_STRUCT *CFG_FILE_SPEECH_REC_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_CUSTOM_FILE_GPS_LID)
+ap_nvram_gps_config_struct *CFG_FILE_GPS_CONFIG_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_COMPFLT_LID)
+AUDIO_ACF_CUSTOM_PARAM_STRUCT *CFG_FILE_AUDIO_COMPFLT_REC_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_HEADPHONE_COMPFLT_LID)
+AUDIO_ACF_CUSTOM_PARAM_STRUCT *CFG_FILE_HEADPHONE_COMPFLT_REC_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_EFFECT_LID)
+AUDIO_EFFECT_CUSTOM_PARAM_STRUCT *CFG_FILE_AUDIO_EFFECT_REC_TOTAL
+{
+
+};
+
+
+LID_BIT VER_LID(AP_CFG_RDEB_FILE_WIFI_LID)
+WIFI_CFG_PARAM_STRUCT *CFG_FILE_WIFI_REC_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDEB_WIFI_CUSTOM_LID)
+WIFI_CUSTOM_PARAM_STRUCT *CFG_FILE_WIFI_CUSTOM_REC_TOTAL
+{
+
+};
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_PARAM_MED_LID)
+AUDIO_PARAM_MED_STRUCT *CFG_FILE_AUDIO_PARAM_MED_REC_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_VOLUME_CUSTOM_LID)
+AUDIO_VOLUME_CUSTOM_STRUCT *CFG_FILE_AUDIO_VOLUME_CUSTOM_REC_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_DUAL_MIC_CUSTOM_LID)
+AUDIO_CUSTOM_EXTRA_PARAM_STRUCT *CFG_FILE_SPEECH_DUAL_MIC_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_WB_PARAM_LID)
+AUDIO_CUSTOM_WB_PARAM_STRUCT *CFG_FILE_WB_SPEECH_REC_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_REEB_PRODUCT_INFO_LID)
+PRODUCT_INFO *CFG_FILE_PRODUCT_INFO_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_GAIN_TABLE_LID)
+AUDIO_GAIN_TABLE_STRUCT *CFG_FILE_AUDIO_GAIN_TABLE_CUSTOM_REC_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_VER1_VOLUME_CUSTOM_LID)
+AUDIO_VER1_CUSTOM_VOLUME_STRUCT *CFG_FILE_AUDIO_VER1_VOLUME_CUSTOM_REC_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_HD_REC_PAR_LID)
+AUDIO_HD_RECORD_PARAM_STRUCT *CFG_FILE_AUDIO_HD_REC_PAR_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_HD_REC_SCENE_LID)
+AUDIO_HD_RECORD_SCENE_TABLE_STRUCT *CFG_FILE_AUDIO_HD_REC_SCENE_TABLE_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_VOICE_RECOGNIZE_PARAM_LID)
+VOICE_RECOGNITION_PARAM_STRUCT *CFG_FILE_VOICE_RECOGNIZE_PAR_TOTAL
+{
+	
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_AUDENH_CONTROL_OPTION_PAR_LID)
+AUDIO_AUDENH_CONTROL_OPTION_STRUCT *CFG_FILE_AUDIO_AUDENH_CONTROL_OPTION_PAR_TOTAL
+{
+	
+};
+
+
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_BUFFER_DC_CALIBRATION_PAR_LID)
+AUDIO_BUFFER_DC_CALIBRATION_STRUCT *CFG_FILE_AUDIO_BUFFER_DC_CALIBRATION_PAR_TOTAL
+{
+	
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_VOIP_PAR_LID)
+AUDIO_VOIP_PARAM_STRUCT *CFG_FILE_AUDIO_VOIP_PAR_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_VIBSPK_COMPFLT_LID)
+AUDIO_ACF_CUSTOM_PARAM_STRUCT *CFG_FILE_VIBSPK_COMPFLT_REC_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_MUSIC_DRC_LID)
+AUDIO_ACF_CUSTOM_PARAM_STRUCT *CFG_FILE_MUSICDRC_COMPFLT_REC_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_RINGTONE_DRC_LID)
+AUDIO_ACF_CUSTOM_PARAM_STRUCT *CFG_FILE_RINGTONEDRC_COMPFLT_REC_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_MAGI_CONFERENCE_LID)
+AUDIO_CUSTOM_MAGI_CONFERENCE_STRUCT *CFG_FILE_SPEECH_MAGI_CONFERENCE_TOTAL
+{
+
+};
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUDIO_HAC_PARAM_LID)
+AUDIO_CUSTOM_HAC_PARAM_STRUCT *CFG_FILE_SPEECH_HAC_PARAM_TOTAL
+{
+
+};
+
+END_NVRAM_DATA
+
+#endif /* CUSTOM_NVRAM_DATA_ITEM_H */
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/NVRAM_Data_Type.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/NVRAM_Data_Type.h
new file mode 100644
index 0000000..7b2016c
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/NVRAM_Data_Type.h
@@ -0,0 +1,163 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   cfg_file_info.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    this file is used to define the nvram data type
+ *
+ * Author:
+ * -------
+ *   Ning.F (MTK08139) 09/11/2008
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * Jun 18 2009 mtk80306
+ * [DUMA00120904] optimize the power button and nvram
+ * 
+ *
+ * Mar 21 2009 mtk80306
+ * [DUMA00112158] fix the code convention.
+ * fix the codeing convention.
+ *
+ * Mar 15 2009 mtk80306
+ * [DUMA00111629] add camera nvram files
+ * add the data type define
+ *
+ * Mar 10 2009 mtk80306
+ * [DUMA00111223] [Need Patch] [Sanity Fail] DUMA.W09.11 Sanity Test of headset was failed
+ * change audio nvram defualt value
+ *
+ * Mar 9 2009 mtk80306
+ * [DUMA00111088] nvram customization
+ * nvram customization
+ *
+ * Feb 23 2009 mtk80306
+ * [DUMA00109277] add meta _battery mode.
+ *
+ *
+ * Feb 19 2009 mtk80306
+ * [DUMA00109277] add meta _battery mode.
+ *
+ *
+ * Feb 19 2009 mtk80306
+ * [DUMA00109277] add meta _battery mode.
+ * add meta_battery
+ *
+ * Jan 13 2009 mtk80306
+ * [DUMA00107334] add nvram dll code
+ * add nvram dll code.
+ *
+ * Dec 17 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ * Dec 8 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ * Nov 24 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ * Oct 29 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ *
+ *
+ *******************************************************************************/
+
+#ifndef _NVRAM_DATA_TYPE_H
+#define _NVRAM_DATA_TYPE_H
+
+
+
+typedef unsigned int  UINT32;
+typedef unsigned char UINT8;
+typedef unsigned short  UINT16;
+typedef char INT8;
+
+
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/ap_editor_data_item.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/ap_editor_data_item.h
new file mode 100644
index 0000000..c2cd31b
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/ap_editor_data_item.h
@@ -0,0 +1,162 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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).
+*
+*****************************************************************************/
+
+
+#ifndef AP_EDTIOR_DATA_ITEM_SYSTEM_H
+#define AP_EDTIOR_DATA_ITEM_SYSTEM_H
+
+#include "NVRAM_Data_Type.h"
+#include "cfg_module_file.h"
+#include "CFG_file_lid.h"
+//#include "CFG_File_LID.h"
+
+// add by chipeng , temporary modify
+//#include "../../custom/oppo/cgen/inc/Custom_NvRam_LID.h"
+#include "Custom_NvRam_LID.h"
+
+/***************************************************************************** 
+* Include
+*****************************************************************************/
+
+/***************************************************************************** 
+* Define
+*****************************************************************************/
+typedef struct
+{
+	char	cFileVer[4];
+}File_Ver_Struct;
+
+
+
+/***************************************************************************** 
+* META Description
+*****************************************************************************/
+BEGIN_NVRAM_DATA
+
+
+/***********************************************************************
+  ***  This is a nvram data item bit level description for meta tools nvram editor
+  ***
+  ***  Logical Data Item ID : AP_CFG_FILE_AUXADC_LID
+  ***
+  ***  Module: 
+  ***
+  ***  Description:  
+  ***
+  ***  Maintainer: 
+  ***
+  ***********************************************************************/
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_AUXADC_LID)
+     AUXADC_CFG_Struct *CFG_FILE_AUXADC_REC_TOTAL
+     {
+ 
+     };
+     
+LID_BIT VER_LID(AP_CFG_RDEB_FILE_BT_ADDR_LID)
+     ap_nvram_btradio_mt6610_struct *CFG_FILE_BT_ADDR_REC_TOTAL
+     {
+ 
+     };      
+
+LID_BIT VER_LID(AP_CFG_RDCL_FACTORY_LID)     
+    FACTORY_CFG_Struct *CFG_FILE_FACTORY_REC_TOTAL     
+    {
+
+    };  
+
+LID_BIT VER_LID(AP_CFG_RDCL_CAMERA_PARA_LID)     
+    NVRAM_CAMERA_PARA_STRUCT *CFG_FILE_CAMERA_PARA_REC_TOTAL     
+    {
+
+    }; 
+
+LID_BIT VER_LID(AP_CFG_RDCL_CAMERA_3A_LID)     
+    NVRAM_CAMERA_3A_STRUCT *CFG_FILE_CAMERA_3A_REC_TOTAL     
+    {
+
+    }; 
+
+LID_BIT VER_LID(AP_CFG_RDCL_CAMERA_SHADING_LID)     
+    NVRAM_CAMERA_SHADING_STRUCT *CFG_FILE_CAMERA_SHADING_REC_TOTAL     
+    {
+
+    };
+
+LID_BIT VER_LID(AP_CFG_RDCL_CAMERA_DEFECT_LID)     
+    NVRAM_CAMERA_DEFECT_STRUCT *CFG_FILE_CAMERA_DEFECT_REC_TOTAL     
+    {
+
+    };
+
+LID_BIT VER_LID(AP_CFG_RDCL_CAMERA_SENSOR_LID)     
+    NVRAM_SENSOR_DATA_STRUCT *CFG_FILE_CAMERA_SENSOR_REC_TOTAL     
+    {
+
+    };
+
+LID_BIT VER_LID(AP_CFG_RDCL_CAMERA_LENS_LID)     
+    NVRAM_LENS_PARA_STRUCT *CFG_FILE_CAMERA_LENS_REC_TOTAL     
+    {
+
+    };
+
+LID_BIT VER_LID(AP_CFG_RDCL_BWCS_LID)
+    ap_nvram_bwcs_config_struct *CFG_FILE_BWCS_CONFIG_TOTAL
+    {
+        
+    }; 
+     
+LID_BIT VER_LID(AP_CFG_RDCL_HWMON_ACC_LID)
+    NVRAM_HWMON_ACC_STRUCT *CFG_FILE_HWMON_ACC_REC_TOTAL
+    {
+        
+    }; 
+      
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_MD_SBP_LID)
+    MD_SBP_Struct *CFG_FILE_MD_SBP_CONFIG_TOTAL
+    {
+
+    };
+
+LID_BIT VER_LID(AP_CFG_RDCL_FILE_SDIO_LID)
+    ap_nvram_sdio_config_struct *CFG_FILE_SDIO_CONFIG_TOTAL
+    {
+
+    };
+
+END_NVRAM_DATA
+
+#endif /* AP_EDTIOR_DATA_ITEM_SYSTEM_H */ 
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/audio_acf_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/audio_acf_default.h
new file mode 100644
index 0000000..a567f3f
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/audio_acf_default.h
@@ -0,0 +1,186 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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_acf_default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related parameters or definition.
+ *
+ * Author:
+ * -------
+ * Tina Tsai
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision: 1.1.1.1 $
+ * $Modtime:$
+ * $Log: audio_acf_default.h,v $
+ * Revision 1.1.1.1  2012-04-02 10:41:40  mtk01984
+ *
+ *
+ * Revision 1.1.1.1  2012-03-30 01:08:07  mtk01984
+ *
+ *
+ * Revision 1.1  2012-02-10 01:41:58  mtk01984
+ * *** empty log message ***
+ *
+ *
+ * 02 10 2011 pheoby.wang
+ * [ALPS00030529] Please help to create ZTE63V3 project based on ZTE73V1_2
+ * .
+ *
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_ACF_DEFAULT_H
+#define AUDIO_ACF_DEFAULT_H
+
+    /* Compensation Filter HSF coeffs: default all pass filter       */
+    /* BesLoudness also uses this coeffs    */ 
+    #define BES_LOUDNESS_HSF_COEFF \
+    0x7DA1709,0xF054253E,0x7D1C95A,0x7D56C298, \
+    0x7D6C2CA,0xF05B867F,0x7CDBD5F,0x7D19C2D1, \
+    0x7C751CD,0xF07DBC74,0x7BAFE48,0x7BFEC3DA, \
+    0x7B4AD39,0xF0A6FF57,0x7A46980,0x7AA5C515, \
+    0x7AE1CEE,0xF0B5836B,0x79C79B1,0x7A2BC583, \
+    0x78FC91E,0xF0F882BF,0x777E4BF,0x77F0C777, \
+    0x76B705A,0xF148A5E6,0x74C3E63,0x7537C9BF, \
+    0x75EB726,0xF164A91C,0x73D0346,0x7440CA88, \
+    0x7247308,0xF1E4AE1B,0x6F7957D,0x6FC0CE05   
+
+    /* Compensation Filter BPF coeffs: default all pass filter      */ 
+    #define BES_LOUDNESS_BPF_COEFF \
+    0x3FD481A8,0x3EFF7E57,0xC12C0000, \ 
+    0x3FD081DA,0x3EE97E25,0xC1460000, \ 
+    0x3FBE82D7,0x3E817D28,0xC1C00000, \ 
+    0x3FA98440,0x3E037BBF,0xC2520000, \ 
+    0x3FA184CE,0x3DD77B31,0xC2860000, \ 
+    0x3F7E87BD,0x3D0C7842,0xC3740000, \ 
+    \
+    0x3FD481C0,0x3EFF7E3F,0xC12C0000, \ 
+    0x3FD081F5,0x3EE97E0A,0xC1460000, \ 
+    0x3FBE830B,0x3E817CF4,0xC1C00000, \ 
+    0x3FA9849C,0x3E037B63,0xC2520000, \ 
+    0x3FA1853A,0x3DD77AC5,0xC2860000, \ 
+    0x3F7E8889,0x3D0C7776,0xC3740000, \ 
+    \
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    \
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0, \ 
+    0x0,0x0,0x0       
+    
+    #define BES_LOUDNESS_DRC_FORGET_TABLE \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000, \
+    0x00000000, 0x00000000   
+
+    #define BES_LOUDNESS_WS_GAIN_MAX  0
+           
+    #define BES_LOUDNESS_WS_GAIN_MIN  0
+           
+    #define BES_LOUDNESS_FILTER_FIRST  0
+           
+    #define BES_LOUDNESS_GAIN_MAP_IN \
+    0, 0, 0, 0, 0     
+              
+    #define BES_LOUDNESS_GAIN_MAP_OUT \            
+    0, 0, 0, 0, 0               
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/audio_custom.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/audio_custom.h
new file mode 100644
index 0000000..7a3986e
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/audio_custom.h
@@ -0,0 +1,467 @@
+/* Copyright Statement: 

+* 

+* This software/firmware and related documentation ("MediaTek Software") are 

+* protected under relevant copyright laws. The information contained herein 

+* is confidential and proprietary to MediaTek Inc. and/or its licensors. 

+* Without the prior written permission of MediaTek inc. and/or its licensors, 

+* any reproduction, modification, use or disclosure of MediaTek Software, 

+* and information contained herein, in whole or in part, shall be strictly prohibited. 

+*/ 

+/* MediaTek Inc. (C) 2010. All rights reserved. 

+* 

+* BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES 

+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") 

+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH 

+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES 

+* THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES 

+* CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK 

+* SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR 

+* STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO 

+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 

+* 

+* The following software/firmware and/or related documentation ("MediaTek Software") 

+* have been modified by MediaTek Inc. All revisions are subject to any receiver's 

+* applicable license agreements with MediaTek Inc. 

+*/ 

+ 

+/***************************************************************************** 

+*  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) 2008 

+* 

+*  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_custom_exp.h 

+* 

+* Project: 

+* -------- 

+*   DUMA 

+* 

+* Description: 

+* ------------ 

+* This file is the header of audio customization related function or definition. 

+* 

+* Author: 

+* ------- 

+* JY Huang 

+* 

+*============================================================================ 

+*             HISTORY 

+* Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!! 

+*------------------------------------------------------------------------------ 

+* $Revision: 1.1.1.1 $ 

+* $Modtime:$ 

+* $Log: audio_custom.h,v $
+* Revision 1.1.1.1  2012-04-02 10:41:40  mtk01984
+*
+*
+* Revision 1.1.1.1  2012-03-30 01:08:07  mtk01984
+*
+*
+* Revision 1.1  2012-02-10 01:41:58  mtk01984
+* *** empty log message ***
+* 

+* 

+* 05 26 2010 chipeng.chang 

+* [ALPS00002287][Need Patch] [Volunteer Patch] ALPS.10X.W10.11 Volunteer patch for audio paramter 

+* modify audio parameter. 

+* 

+* 05 26 2010 chipeng.chang 

+* [ALPS00002287][Need Patch] [Volunteer Patch] ALPS.10X.W10.11 Volunteer patch for audio paramter 

+* modify for Audio parameter 

+* 

+*    mtk80306 

+* [DUMA00132370] waveform driver file re-structure. 

+* waveform driver file re-structure. 

+* 

+* Jul 28 2009 mtk01352 

+* [DUMA00009909] Check in TWO_IN_ONE_SPEAKER and rearrange 

+* 

+* 

+* 

+*------------------------------------------------------------------------------ 

+* Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!! 

+*============================================================================ 

+****************************************************************************/ 

+#ifndef AUDIO_CUSTOM_H

+#define AUDIO_CUSTOM_H

+ 

+/* define Gain For Normal */ 

+/* Normal volume: TON, SPK, MIC, FMR, SPH, SID, MED */ 

+/* 

+#define GAIN_NOR_TON_VOL      8     // reserved 

+#define GAIN_NOR_KEY_VOL      43    // TTY_CTM_Mic 

+#define GAIN_NOR_MIC_VOL      26    // IN_CALL BuiltIn Mic gain 

+// GAIN_NOR_FMR_VOL is used as idle mode record volume 

+#define GAIN_NOR_FMR_VOL      0     // Normal BuiltIn Mic gain 

+#define GAIN_NOR_SPH_VOL      20     // IN_CALL EARPIECE Volume 

+#define GAIN_NOR_SID_VOL      100  // IN_CALL EARPICE sidetone 

+#define GAIN_NOR_MED_VOL      25   // reserved 

+*/ 

+ 

+#define GAIN_NOR_TON_VOL    8    // reserved 

+#define GAIN_NOR_KEY_VOL    43    // TTY_CTM_Mic 

+#define GAIN_NOR_MIC_VOL    26    // IN_CALL BuiltIn Mic gain 

+// GAIN_NOR_FMR_VOL is used as idle mode record volume 

+#define GAIN_NOR_FMR_VOL    0    // Normal BuiltIn Mic gain 

+#define GAIN_NOR_SPH_VOL    20    // IN_CALL EARPIECE Volume 

+#define GAIN_NOR_SID_VOL    100    // IN_CALL EARPICE sidetone 

+#define GAIN_NOR_MED_VOL    25    // reserved 

+ 

+/* define Gain For Headset */ 

+/* Headset volume: TON, SPK, MIC, FMR, SPH, SID, MED */ 

+/* 

+#define GAIN_HED_TON_VOL      8   // reserved 

+#define GAIN_HED_KEY_VOL      24  // reserved 

+#define GAIN_HED_MIC_VOL      20   // IN_CALL BuiltIn headset gain 

+#define GAIN_HED_FMR_VOL      24  // reserved 

+#define GAIN_HED_SPH_VOL      12  // IN_CALL Headset volume 

+#define GAIN_HED_SID_VOL      100 // IN_CALL Headset sidetone 

+#define GAIN_HED_MED_VOL      12   // Idle, headset Audio Buf Gain setting 

+*/ 

+ 

+#define GAIN_HED_TON_VOL    8    // reserved 

+#define GAIN_HED_KEY_VOL    24    // reserved 

+#define GAIN_HED_MIC_VOL    20    // IN_CALL BuiltIn headset gain 

+#define GAIN_HED_FMR_VOL    24    // reserved 

+#define GAIN_HED_SPH_VOL    12    // IN_CALL Headset volume 

+#define GAIN_HED_SID_VOL    100    // IN_CALL Headset sidetone 

+#define GAIN_HED_MED_VOL    12    // Idle, headset Audio Buf Gain setting 

+ 

+/* define Gain For Handfree */ 

+/* Handfree volume: TON, SPK, MIC, FMR, SPH, SID, MED */ 

+/* GAIN_HND_TON_VOL is used as class-D Amp gain*/ 

+/* 

+#define GAIN_HND_TON_VOL      15  // 

+#define GAIN_HND_KEY_VOL      24  // reserved 

+#define GAIN_HND_MIC_VOL      20  // IN_CALL LoudSpeak Mic Gain = BuiltIn Gain 

+#define GAIN_HND_FMR_VOL      24 // reserved 

+#define GAIN_HND_SPH_VOL      6 // IN_CALL LoudSpeak 

+#define GAIN_HND_SID_VOL      100// IN_CALL LoudSpeak sidetone 

+#define GAIN_HND_MED_VOL      12 // Idle, loudSPK Audio Buf Gain setting 

+*/ 

+ 

+#define GAIN_HND_TON_VOL    8    // use for ringtone volume 

+#define GAIN_HND_KEY_VOL    24    // reserved 

+#define GAIN_HND_MIC_VOL    20    // IN_CALL LoudSpeak Mic Gain = BuiltIn Gain 

+#define GAIN_HND_FMR_VOL    24    // reserved 

+#define GAIN_HND_SPH_VOL    12    // IN_CALL LoudSpeak 

+#define GAIN_HND_SID_VOL    100    // IN_CALL LoudSpeak sidetone 

+#define GAIN_HND_MED_VOL    12    // Idle, loudSPK Audio Buf Gain setting 

+ 

+    /* 0: Input FIR coefficients for 2G/3G Normal mode */

+    /* 1: Input FIR coefficients for 2G/3G/VoIP Headset mode */

+    /* 2: Input FIR coefficients for 2G/3G Handfree mode */

+    /* 3: Input FIR coefficients for 2G/3G/VoIP BT mode */

+    /* 4: Input FIR coefficients for VoIP Normal mode */

+    /* 5: Input FIR coefficients for VoIP Handfree mode */

+#define SPEECH_INPUT_FIR_COEFF \ 

+    -2026,  1645, -1366,   645,    18,\

+    -1662,  1364, -2524,  3392, -3066,\

+     3952, -1868,   894,  1564, -1665,\

+     5922, -5153, 10797,-11633, 14090,\

+   -19859, 32767, 32767,-19859, 14090,\

+   -11633, 10797, -5153,  5922, -1665,\

+     1564,   894, -1868,  3952, -3066,\

+     3392, -2524,  1364, -1662,    18,\

+      645, -1366,  1645, -2026,     0,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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: Output FIR coefficients for 2G/3G Normal mode */

+    /* 1: Output FIR coefficients for 2G/3G/VoIP Headset mode */

+    /* 2: Output FIR coefficients for 2G/3G Handfree mode */

+    /* 3: Output FIR coefficients for 2G/3G/VoIP BT mode */

+    /* 4: Output FIR coefficients for VoIP Normal mode */

+    /* 5: Output FIR coefficients for VoIP Handfree mode */

+#define SPEECH_OUTPUT_FIR_COEFF \

+     4281,  2930,  1816,  1664,   939,\

+     -873, -2205, -3623, -3057, -4807,\

+    -6317, -5516, -8544, -5419, -9091,\

+    -1161, -1533,  6783,  3093, 17314,\

+      847, 32767, 32767,   847, 17314,\

+     3093,  6783, -1533, -1161, -9091,\

+    -5419, -8544, -5516, -6317, -4807,\

+    -3057, -3623, -2205,  -873,   939,\

+     1664,  1816,  2930,  4281,     0,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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   DG_DL_Speech    0xE3D

+#define   DG_Microphone    0x1400

+#define   FM_Record_Vol    6     /* 0 is smallest. each step increase 1dB.

+                            Be careful of distortion when increase too much. 

+                            Generally, it's not suggested to tune this parameter */ 

+/* 

+* The Bluetooth DAI Hardware COnfiguration Parameter 

+*/ 

+#define   DEFAULT_BLUETOOTH_SYNC_TYPE    0

+#define   DEFAULT_BLUETOOTH_SYNC_LENGTH    1

+    /* 0: Input FIR coefficients for 2G/3G Normal mode */

+    /* 1: Input FIR coefficients for 2G/3G/VoIP Headset mode */

+    /* 2: Input FIR coefficients for 2G/3G Handfree mode */

+    /* 3: Input FIR coefficients for 2G/3G/VoIP BT mode */

+    /* 4: Input FIR coefficients for VoIP Normal mode */

+    /* 5: Input FIR coefficients for VoIP Handfree mode */

+#define WB_Speech_Input_FIR_Coeff \ 

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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   

+    /* 0: Output FIR coefficients for 2G/3G Normal mode */

+    /* 1: Output FIR coefficients for 2G/3G/VoIP Headset mode */

+    /* 2: Output FIR coefficients for 2G/3G Handfree mode */

+    /* 3: Output FIR coefficients for 2G/3G/VoIP BT mode */

+    /* 4: Output FIR coefficients for VoIP Normal mode */

+    /* 5: Output FIR coefficients for VoIP Handfree mode */

+#define WB_Speech_Output_FIR_Coeff \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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   

+#endif 

diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/audio_effect_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/audio_effect_default.h
new file mode 100644
index 0000000..93ea6aa
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/audio_effect_default.h
@@ -0,0 +1,150 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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_coeff_default.h
+ *
+ * Project:
+ * --------
+ *   ALPS
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related parameters or definition.
+ *
+ * Author:
+ * -------
+ * Tina Tsai
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision: 1.1.1.1 $
+ * $Modtime:$
+ * $Log: audio_effect_default.h,v $
+ * Revision 1.1.1.1  2012-04-02 10:41:40  mtk01984
+ *
+ *
+ * Revision 1.1.1.1  2012-03-30 01:08:07  mtk01984
+ *
+ *
+ * Revision 1.1  2012-02-10 01:41:58  mtk01984
+ * *** empty log message ***
+ *
+ *
+ * 02 10 2011 pheoby.wang
+ * [ALPS00030529] Please help to create ZTE63V3 project based on ZTE73V1_2
+ * .
+ *
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_EFFECT_DEFAULT_H
+#define AUDIO_EFFECT_DEFAULT_H
+
+#define BSRD_LEVEL 50
+#define BSRD_DISTANCE1 20
+#define BSRD_DISTANCE2 30
+#define BSRD_BAND_SELECT 0
+
+#define BASS_CUTOFF_FREQ 400
+#define BASS_ISVB 0
+
+#define NORMAL_GAIN_LEVEL \
+    0,0,0,0,0,0,0,0
+#define DANCE_GAIN_LEVEL \
+    16,64,0,8,32,40,32,16
+#define BASS_GAIN_LEVEL \
+    48,32,24,16,0,0,0,0
+#define CLASSICAL_GAIN_LEVEL \
+    40,24,0,-16,-8,0,24,32
+#define TREBLE_GAIN_LEVEL \
+    0,0,0,0,8,24,40,48
+#define PARTY_GAIN_LEVEL \
+    40,32,0,0,0,0,0,32
+#define POP_GAIN_LEVEL \
+    -12,0,8,40,40,8,-8,-16
+#define ROCK_GAIN_LEVEL \
+    48,16,8,-8,-16,8,24,40
+
+#define LOUDENHANCEMODE 3
+
+#define TIME_TD_TF 0
+#define TIME_TS_RATIO 100
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/audio_volume_custom_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/audio_volume_custom_default.h
new file mode 100644
index 0000000..68c0f05
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/audio_volume_custom_default.h
@@ -0,0 +1,147 @@
+/* Copyright Statement: 

+* 

+* This software/firmware and related documentation ("MediaTek Software") are 

+* protected under relevant copyright laws. The information contained herein 

+* is confidential and proprietary to MediaTek Inc. and/or its licensors. 

+* Without the prior written permission of MediaTek inc. and/or its licensors, 

+* any reproduction, modification, use or disclosure of MediaTek Software, 

+* and information contained herein, in whole or in part, shall be strictly prohibited. 

+*/ 

+/* MediaTek Inc. (C) 2010. All rights reserved. 

+* 

+* BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES 

+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") 

+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH 

+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES 

+* THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES 

+* CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK 

+* SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR 

+* STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO 

+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 

+* 

+* The following software/firmware and/or related documentation ("MediaTek Software") 

+* have been modified by MediaTek Inc. All revisions are subject to any receiver's 

+* applicable license agreements with MediaTek Inc. 

+*/ 

+ 

+/***************************************************************************** 

+*  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) 2008 

+* 

+*  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_volume_custom_default.h 

+* 

+* Project: 

+* -------- 

+*   ALPS 

+* 

+* Description: 

+* ------------ 

+* This file is the header of audio customization related parameters or definition. 

+* 

+* Author: 

+* ------- 

+* Chipeng chang 

+* 

+*============================================================================ 

+*             HISTORY 

+* Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!! 

+*------------------------------------------------------------------------------ 

+* $Revision: 1.1.1.1 $ 

+* $Modtime:$ 

+* $Log: audio_volume_custom_default.h,v $
+* Revision 1.1.1.1  2012-04-02 10:41:40  mtk01984
+*
+*
+* Revision 1.1.1.1  2012-03-30 01:08:07  mtk01984
+*
+*
+* Revision 1.1  2012-02-10 01:41:58  mtk01984
+* *** empty log message ***
+* 

+* 

+* 

+* 

+* 

+*------------------------------------------------------------------------------ 

+* Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!! 

+*============================================================================ 

+****************************************************************************/ 

+#ifndef AUDIO_VOLUME_CUSTOM_DEFAULT_H 

+#define AUDIO_VOLUME_CUSTOM_DEFAULT_H 

+#define AUD_VOLUME_RING \ 

+0, 32, 64, 96, 128, 160, 192,     \ 

+0, 32, 64, 96, 128, 132, 144,     \ 

+0, 85, 128, 171, 190, 213, 255

+#define AUD_VOLUME_KEY \ 

+0, 43, 85, 128, 171, 213, 255,     \ 

+0, 43, 85, 128, 171, 213, 255,     \ 

+0, 43, 85, 128, 171, 213, 255

+#define AUD_VOLUME_MIC \ 

+56, 255, 255, 160, 255, 255, 160,     \ 

+255, 192, 192, 172, 255, 192, 172,     \ 

+255, 208, 208, 172, 255, 208, 172

+#define AUD_VOLUME_FMR \ 

+0, 43, 85, 128, 171, 213, 255,     \ 

+0, 43, 85, 128, 171, 213, 255,     \ 

+0, 43, 85, 128, 171, 213, 255

+#define AUD_VOLUME_SPH \ 

+80, 92, 104, 116, 128, 140, 152,     \ 

+76, 88, 100, 112, 124, 136, 148,     \ 

+40, 52, 64, 76, 88, 100, 112

+#define AUD_VOLUME_SID \ 

+0, 0, 16, 16, 0, 0, 0,     \ 

+0, 0, 32, 0, 0, 0, 0,     \ 

+0, 0, 0, 0, 0, 0, 0

+#define AUD_VOLUME_MEDIA \ 

+100, 148, 148, 148, 120, 148, 140,     \ 

+0, 43, 85, 128, 171, 213, 255,     \ 

+0, 56, 96, 136, 176, 216, 255

+#define AUD_VOLUME_MATV \ 

+0, 43, 85, 128, 171, 213, 255,     \ 

+0, 43, 85, 128, 171, 213, 255,     \ 

+0, 43, 85, 128, 171, 213, 255

+#endif 

diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/bwcs_custom.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/bwcs_custom.h
new file mode 100644
index 0000000..aff8dff
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/bwcs_custom.h
@@ -0,0 +1,101 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   bwcs_custom.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    This file is the header of bwcs customization related function or definition.
+ *
+ * Author:
+ * -------
+ *  Saker Hsia(MTK02327) 
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 06 30 2010 saker.hsia
+ * [ALPS00002764][Need Patch] [Volunteer Patch] ALPS.10X.W10.28 Volunteer patch for BWCS NVRAM customization 
+ * .
+ *
+ *******************************************************************************/
+#ifndef BWCS_CUSTOM_H
+#define BWCS_CUSTOM_H
+
+
+#define RT_RSSI_TH_BT            73
+#define RT_RSSI_TH_WIFI1         73
+#define RT_RSSI_TH_WIFI2         73
+
+#define NRT_RSSI_TH_BT           73
+#define NRT_RSSI_TH_WIFI1        73
+#define NRT_RSSI_TH_WIFI2        73
+#define ANT_PATH_COMP            10
+#define ANT_SWITCH_PROT_TIME     10
+#define BT_RX_RANGE              {0xC4, 0xE2}
+#if defined (MTK_MT6611)
+#define WIFI_TX_FLOW_CTRL        {0x0E00, 0x0001}
+#define BT_TX_PWR_WIFI_OFF       0x7
+#define BT_TX_PWR_SCO            0x4
+#define BT_TX_PWR_ACL            0x4
+#elif defined (MTK_MT6612)
+#define WIFI_TX_FLOW_CTRL        {0x0E00, 0x0001}
+#define BT_TX_PWR_WIFI_OFF       0x7
+#define BT_TX_PWR_SCO            0x4
+#define BT_TX_PWR_ACL            0x3
+#elif defined (MTK_MT6616)
+#define WIFI_TX_FLOW_CTRL        {0x1100, 0x0001}
+#define BT_TX_PWR_WIFI_OFF       0x7
+#define BT_TX_PWR_SCO            0x4
+#define BT_TX_PWR_ACL            0x3
+#else
+#define WIFI_TX_FLOW_CTRL        {0x1100, 0x0001}
+#define BT_TX_PWR_WIFI_OFF       0x7
+#define BT_TX_PWR_SCO            0x4
+#define BT_TX_PWR_ACL            0x4
+#endif
+#define RESERVED                 {0x00, 0x00, 0x00, 0x00, 0x00}
+#endif 
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/custom_cfg_module_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/custom_cfg_module_default.h
new file mode 100644
index 0000000..ae13d72
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/custom_cfg_module_default.h
@@ -0,0 +1,4 @@
+#include "../cfgdefault/CFG_Custom1_Default.h"
+#include "../cfgdefault/CFG_GPS_Default.h"
+#include "../cfgdefault/CFG_PRODUCT_INFO_Default.h"
+#include "../cfgdefault/CFG_WIFI_Default.h"
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/custom_cfg_module_file.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/custom_cfg_module_file.h
new file mode 100644
index 0000000..6bfcb3a
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/custom_cfg_module_file.h
@@ -0,0 +1,4 @@
+#include "../cfgfileinc/CFG_Custom1_File.h"
+#include "../cfgfileinc/CFG_GPS_File.h"
+#include "../cfgfileinc/CFG_PRODUCT_INFO_File.h"
+#include "../cfgfileinc/CFG_Wifi_File.h"
diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/med_audio_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/med_audio_default.h
new file mode 100644
index 0000000..c2f7d37
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/med_audio_default.h
@@ -0,0 +1,718 @@
+/* Copyright Statement: 

+* 

+* This software/firmware and related documentation ("MediaTek Software") are 

+* protected under relevant copyright laws. The information contained herein 

+* is confidential and proprietary to MediaTek Inc. and/or its licensors. 

+* Without the prior written permission of MediaTek inc. and/or its licensors, 

+* any reproduction, modification, use or disclosure of MediaTek Software, 

+* and information contained herein, in whole or in part, shall be strictly prohibited. 

+*/ 

+/* MediaTek Inc. (C) 2010. All rights reserved. 

+* 

+* BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES 

+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") 

+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH 

+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES 

+* THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES 

+* CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK 

+* SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR 

+* STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO 

+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 

+* 

+* The following software/firmware and/or related documentation ("MediaTek Software") 

+* have been modified by MediaTek Inc. All revisions are subject to any receiver's 

+* applicable license agreements with MediaTek Inc. 

+*/ 

+

+/***************************************************************************** 

+*  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) 2008 

+* 

+*  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: 

+ * --------- 

+ * med_audio_default.h 

+ * 

+ * Project: 

+ * -------- 

+ *   ALPS 

+ * 

+ * Description: 

+ * ------------ 

+ * This file is the header of audio customization related function or definition. 

+ * 

+ * Author: 

+ * ------- 

+ * Chipeng Chang 

+ * 

+ *============================================================================ 

+ *             HISTORY 

+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!! 

+ *------------------------------------------------------------------------------ 

+ * $Revision: 1.1.1.1 $ 

+ * $Modtime:$ 

+ * $Log: med_audio_default.h,v $
+ * Revision 1.1.1.1  2012-04-02 10:41:40  mtk01984
+ *
+ *
+ * Revision 1.1.1.1  2012-03-30 01:08:07  mtk01984
+ *
+ *
+ * Revision 1.1  2012-02-10 01:41:58  mtk01984
+ * *** empty log message ***
+ * 

+ 

+ * 

+ *------------------------------------------------------------------------------ 

+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!! 

+ *============================================================================ 

+ ****************************************************************************/ 

+#ifndef MED_AUDIO_CUSTOM_H 

+#define MED_AUDIO_CUSTOM_H 

+// normal mode parameters ------------------------

+#define NORMAL_SPEECH_OUTPUT_FIR_COEFF \

+     4281,  2930,  1816,  1664,   939,\

+     -873, -2205, -3623, -3057, -4807,\

+    -6317, -5516, -8544, -5419, -9091,\

+    -1161, -1533,  6783,  3093, 17314,\

+      847, 32767, 32767,   847, 17314,\

+     3093,  6783, -1533, -1161, -9091,\

+    -5419, -8544, -5516, -6317, -4807,\

+    -3057, -3623, -2205,  -873,   939,\

+     1664,  1816,  2930,  4281,     0,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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   

+// headset mode parameters ------------------------

+#define HEADSET_SPEECH_OUTPUT_FIR_COEFF \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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   

+// handfree mode parameters ------------------------

+#define HANDFREE_SPEECH_OUTPUT_FIR_COEFF \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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   

+// VoIP_BT mode parameters ------------------------

+#define VOIPBT_SPEECH_OUTPUT_FIR_COEFF \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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   

+// VoIP_NORMAL mode parameters ------------------------

+#define VOIPNORMAL_SPEECH_OUTPUT_FIR_COEFF \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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   

+// VoIP_Handfree mode parameters ------------------------

+#define VOIPHANDFREE_SPEECH_OUTPUT_FIR_COEFF \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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   

+// AUX1 mode parameters ------------------------

+#define AUX1_SPEECH_OUTPUT_FIR_COEFF \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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   

+// AUX2 mode parameters ------------------------

+#define AUX2_SPEECH_OUTPUT_FIR_COEFF \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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_MED_FIR_COEFF \ 

+NORMAL_SPEECH_OUTPUT_FIR_COEFF,\ 

+HEADSET_SPEECH_OUTPUT_FIR_COEFF ,\ 

+HANDFREE_SPEECH_OUTPUT_FIR_COEFF ,\ 

+VOIPBT_SPEECH_OUTPUT_FIR_COEFF,\ 

+VOIPNORMAL_SPEECH_OUTPUT_FIR_COEFF,\ 

+VOIPHANDFREE_SPEECH_OUTPUT_FIR_COEFF,\ 

+AUX1_SPEECH_OUTPUT_FIR_COEFF,\ 

+AUX2_SPEECH_OUTPUT_FIR_COEFF 

+#define SPEECH_INPUT_MED_FIR_COEFF\ 

+    -2026,  1645, -1366,   645,    18,\

+    -1662,  1364, -2524,  3392, -3066,\

+     3952, -1868,   894,  1564, -1665,\

+     5922, -5153, 10797,-11633, 14090,\

+   -19859, 32767, 32767,-19859, 14090,\

+   -11633, 10797, -5153,  5922, -1665,\

+     1564,   894, -1868,  3952, -3066,\

+     3392, -2524,  1364, -1662,    18,\

+      645, -1366,  1645, -2026,     0,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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,\

+                                      \

+    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 FIR_output_index\ 

+     0,     0,     0,     0,     0,     0,     0,     0

+#define FIR_input_index\ 

+     0,     0,     0,     0,     0,     0,     0,     0

+#define MED_SPEECH_NORMAL_MODE_PARA \

+    96,   253, 16388,    30, -8185,    31,   400,     1,\ 

+  4112,  4325,    11,     0,     0,     0,     0,  8192 

+#define MED_SPEECH_EARPHONE_MODE_PARA \

+    96,   253, 10756,    30, -8185,    31,   400,     0,\ 

+  4112,  4325,    11,     0,     0,     0,     0,     0 

+#define MED_SPEECH_BT_EARPHONE_MODE_PARA \

+    64,   253,  8228,     0,-15787,     0,   400,     0,\ 

+  4112,  4325,    11,     0,     0,     0,     0,    86 

+#define MED_SPEECH_LOUDSPK_MODE_PARA \

+    96,   224,  4710,    30, -8185,     0,   400,     0,\ 

+  4112,  4325,    11,     0,     0,     0,     0,     0 

+#define MED_SPEECH_CARKIT_MODE_PARA \

+    96,   224,  5256,    30, -8185,     0,   400,     0,\ 

+  4112,  4325,    11,     0,     0,     0,     0,     0 

+#define MED_SPEECH_BT_CORDLESS_MODE_PARA \

+     0,     0,     0,     0,     0,     0,     0,     0,\ 

+     0,     0,     0,     0,     0,     0,     0,     0 

+#define MED_SPEECH_AUX1_MODE_PARA \

+     0,     0,     0,     0,     0,     0,     0,     0,\ 

+     0,     0,     0,     0,     0,     0,     0,     0 

+#define MED_SPEECH_AUX2_MODE_PARA \

+     0,     0,     0,     0,     0,     0,     0,     0,\ 

+     0,     0,     0,     0,     0,     0,     0,     0 

+#endif 

diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/sph_coeff_default.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/sph_coeff_default.h
new file mode 100644
index 0000000..d809ed5
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/sph_coeff_default.h
@@ -0,0 +1,234 @@
+/* Copyright Statement: 

+* 

+* This software/firmware and related documentation ("MediaTek Software") are 

+* protected under relevant copyright laws. The information contained herein 

+* is confidential and proprietary to MediaTek Inc. and/or its licensors. 

+* Without the prior written permission of MediaTek inc. and/or its licensors, 

+* any reproduction, modification, use or disclosure of MediaTek Software, 

+* and information contained herein, in whole or in part, shall be strictly prohibited. 

+*/ 

+/* MediaTek Inc. (C) 2010. All rights reserved. 

+* 

+* BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES 

+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") 

+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH 

+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES 

+* THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES 

+* CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK 

+* SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR 

+* STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO 

+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 

+* 

+* The following software/firmware and/or related documentation ("MediaTek Software") 

+* have been modified by MediaTek Inc. All revisions are subject to any receiver's 

+* applicable license agreements with MediaTek Inc. 

+*/ 

+ 

+/***************************************************************************** 

+*  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) 2008 

+* 

+*  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: 

+* --------- 

+* 

+* 

+* Project: 

+* -------- 

+*   ALPS 

+* 

+* Description: 

+* ------------ 

+* 

+* Author: 

+* ------- 

+* ChiPeng 

+* 

+*------------------------------------------------------------------------------ 

+* $Revision: 1.1.1.1 $ 1.0.0 

+* $Modtime:$ 

+* $Log: sph_coeff_default.h,v $
+* Revision 1.1.1.1  2012-04-02 10:41:40  mtk01984
+*
+*
+* Revision 1.1.1.1  2012-03-30 01:08:07  mtk01984
+*
+*
+* Revision 1.1  2012-02-10 01:41:58  mtk01984
+* *** empty log message ***
+* 

+* 

+* 06 26 2010 chipeng.chang 

+* [ALPS00002705][Need Patch] [Volunteer Patch] ALPS.10X.W10.11 Volunteer patch for speech parameter 

+* modify speech parameters. 

+* 

+* Mar 15 2010 mtk02308 

+* [ALPS] Init Custom parameter 

+* 

+* 

+ 

+* 

+* 

+*******************************************************************************/ 

+#ifndef SPEECH_COEFF_DEFAULT_H 

+#define SPEECH_COEFF_DEFAULT_H 

+#ifndef FALSE 

+#define FALSE 0

+#endif

+//speech parameter depen on BT_CHIP cersion 

+#if defined(MTK_MT6611) 

+#define BT_COMP_FILTER (1 << 15) 

+#define BT_SYNC_DELAY  86 

+#elif defined(MTK_MT6612) 

+#define BT_COMP_FILTER (1 << 15) 

+#define BT_SYNC_DELAY  86 

+#elif defined(MTK_MT6616) 

+#define BT_COMP_FILTER (1 << 15) 

+#define BT_SYNC_DELAY  86 

+#else // MTK_MT6620 

+#define BT_COMP_FILTER (0 << 15) 

+#define BT_SYNC_DELAY  0 

+#endif 

+#ifdef MTK_DUAL_MIC_SUPPORT 

+#define SPEECH_MODE_PARA13 (371) 

+#define SPEECH_MODE_PARA14 (23) 

+#else 

+#define SPEECH_MODE_PARA13 (0) 

+#define SPEECH_MODE_PARA14 (0) 

+#endif 

+#define DEFAULT_SPEECH_NORMAL_MODE_PARA \

+    96,   253, 16388,    31, 57351,    31,   400,     0,\ 

+    80,  4325,    99,     0, 20488,     0|SPEECH_MODE_PARA13,     0|SPEECH_MODE_PARA14,  8192 

+#define DEFAULT_SPEECH_EARPHONE_MODE_PARA \

+     0,   189, 10756,    31, 57351,    31,   400,     0,\ 

+    80,  4325,    99,     0, 20488,     0,     0,     0 

+#define DEFAULT_SPEECH_LOUDSPK_MODE_PARA \

+    96,   224,  5256,    31, 57351, 24607,   400,   132,\ 

+    80,  4325,    99,     0, 20488,     0,     0,     0 

+#define DEFAULT_SPEECH_BT_EARPHONE_MODE_PARA \

+     0,   253, 10756,    31, 53255,    31,   400,     0,\ 

+    80,  4325,    99,     0, 53256|BT_COMP_FILTER,     0,     0,BT_SYNC_DELAY 

+#define DEFAULT_SPEECH_BT_CORDLESS_MODE_PARA \

+     0,     0,     0,     0,     0,     0,     0,     0,\ 

+     0,     0,     0,     0,     0,     0,     0,     0 

+#define DEFAULT_SPEECH_CARKIT_MODE_PARA \

+    96,   224,  5256,    31, 57351, 24607,   400,   132,\ 

+    80,  4325,    99,     0, 20488,     0,     0,     0 

+#define DEFAULT_SPEECH_AUX1_MODE_PARA \

+     0,     0,     0,     0,     0,     0,     0,     0,\ 

+     0,     0,     0,     0,     0,     0,     0,     0 

+#define DEFAULT_SPEECH_AUX2_MODE_PARA \

+     0,     0,     0,     0,     0,     0,     0,     0,\ 

+     0,     0,     0,     0,     0,     0,     0,     0 

+#define DEFAULT_SPEECH_COMMON_PARA \ 

+     0, 55997, 31000, 10752, 32769,     0,     0,     0, \

+     0,     0,     0,     0

+#define DEFAULT_SPEECH_VOL_PARA \ 

+     0,     0,     0,     0 

+#define DEFAULT_AUDIO_DEBUG_INFO \ 

+     0,     0,     0,     0,     0,     0,     0,     0, \

+     0,     0,     0,     0,     0,     0,     0,     0

+ 

+#define DEFAULT_VM_SUPPORT FALSE 

+#define DEFAULT_AUTO_VM FALSE 

+#define MICBAIS  1900

+/* The Bluetooth PCM digital volume */

+/* default_bt_pcm_in_vol : uplink, only for enlarge volume,

+                       0x100 : 0dB  gain

+                       0x200 : 6dB  gain

+                       0x300 : 9dB  gain

+                       0x400 : 12dB gain

+                       0x800 : 18dB gain 

+                       0xF00 : 24dB gain             */

+#define DEFAULT_BT_PCM_IN_VOL  0x100

+/* default_bt_pcm_out_vol : downlink gain,

+                       0x1000 : 0dB; maximum 0x7FFF  */

+#define DEFAULT_BT_PCM_OUT_VOL  0x1000

+#define DEFAULT_WB_SPEECH_NORMAL_MODE_PARA \

+    96,   253, 16388,    31, 57351,    31,   400,     0,\ 

+    80,  4325,    99,     0, 16392,     0,     0,  8192 

+#define DEFAULT_WB_SPEECH_EARPHONE_MODE_PARA \

+     0,   189, 10756,    31, 57351,    31,   400,     0,\ 

+    80,  4325,    99,     0, 16392,     0,     0,     0 

+#define DEFAULT_WB_SPEECH_LOUDSPK_MODE_PARA \

+    96,   224,  5256,    31, 57351, 24607,   400,   132,\ 

+    80,  4325,    99,     0, 16392,     0,     0,     0 

+#define DEFAULT_WB_SPEECH_BT_EARPHONE_MODE_PARA \

+     0,   253, 10756,    31, 53255,    31,   400,     0,\ 

+    80,  4325,    99,     0, 49160 | BT_COMP_FILTER,     0,     0,BT_SYNC_DELAY 

+#define DEFAULT_WB_SPEECH_BT_CORDLESS_MODE_PARA \

+     0,     0,     0,     0,     0,     0,     0,     0,\ 

+     0,     0,     0,     0,     0,     0,     0,     0 

+#define DEFAULT_WB_SPEECH_CARKIT_MODE_PARA \

+    96,   224,  5256,    31, 57351, 24607,   400,   132,\ 

+    80,  4325,    99,     0, 16392,     0,     0,     0 

+#define DEFAULT_WB_SPEECH_AUX1_MODE_PARA \

+    96,   224,  5256,    31, 57351,     0,   400,     0,\ 

+  4112,  4325,    11,     0,     0,     0,     0,     0 

+#define DEFAULT_WB_SPEECH_AUX2_MODE_PARA \

+     0,     0,     0,     0,     0,     0,     0,     0,\ 

+     0,     0,     0,     0,     0,     0,     0,     0 

+

+#define DEFAULT_SPEECH_DUAL_MIC_ABF_PARA \

+      4, 4, 3, 5, 4, \

+      3, 3, 3, 10052, 8546, \

+      14680, 8774, 9806, 13568, 10378, \

+      12692, 3, 0, 15, 16, \

+      34, 26, 24, 26, 30, \

+      32, 7377, 6200, 6656, 9209, \

+      9111, 15041, 13410, 9904, 4321, \

+      9726, 1, 1, 1, 0, \

+      68, 0, 0, 0

+

+#define DEFAULT_SPEECH_DUAL_MIC_ABFWB_PARA \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 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

diff --git a/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/wifi_custom.h b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/wifi_custom.h
new file mode 100644
index 0000000..dc81312
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/cgen/inc/wifi_custom.h
@@ -0,0 +1,202 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   wifi_custom.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    This file is the header of wifi customization related function or definition.
+ *
+ * Author:
+ * -------
+ *  Renbang Jiang (MTK80150)
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 04 19 2011 cp.wu
+ * [ALPS00041285] [Need Patch] [Volunteer Patch][MT6620 Wi-Fi] Merge MT6620 Wi-Fi into mt6575_evb project
+ * 1. update init.rc for normal boot/meta/factory for MT6620 Wi-Fi related part.
+ * 2. update NVRAM structure definition and default value for MT6620 Wi-Fi
+ *
+ * 07 10 2010 renbang.jiang
+ * [ALPS00121785][Need Patch] [Volunteer Patch] use NVRAM to save Wi-Fi custom data 
+ * .
+ *
+ * 07 10 2010 renbang.jiang
+ * [ALPS00121785][Need Patch] [Volunteer Patch] use NVRAM to save Wi-Fi custom data 
+ * .
+ *
+ * 07 10 2010 renbang.jiang
+ * [ALPS00121785][Need Patch] [Volunteer Patch] use NVRAM to save Wi-Fi custom data 
+ * .
+ *
+ *
+ *******************************************************************************/
+#ifndef __WIFI_CUSTOM_H
+#define __WIFI_CUSTOM_H
+
+#define WIFI_CUSTOM_SD_BLOCK_SIZE 512
+#define WIFI_CUSTOM_SD_BUS_WIDTH  4 
+#define WIFI_CUSTOM_SD_CLOCK_RATE 0
+
+#define WIFI_CUSTOM_BT_COEXIST_WINDOW_T 0
+#define WIFI_CUSTOM_ENABLE_TX_AUTO_FRAGMENT_FOR_BT 0
+#define WIFI_CUSTOM_BTCR0 0
+#define WIFI_CUSTOM_BTCR1 0
+#define WIFI_CUSTOM_BTCR2 0
+#define WIFI_CUSTOM_BTCR3 0
+
+#if defined (MTK_MT6611)
+
+#define WIFI_CUSTOM_SINGLE_ACL_BTCR0 0x82048041
+#define WIFI_CUSTOM_SINGLE_ACL_BTCR1 0x19040F00
+
+#define WIFI_CUSTOM_SINGLE_MIX_BTCR0 0x82040061
+#define WIFI_CUSTOM_SINGLE_MIX_BTCR1 0x19040E00
+
+#define WIFI_CUSTOM_DUAL_ACL_BTCR0   0x82000061
+#define WIFI_CUSTOM_DUAL_ACL_BTCR1   0x09040F00
+
+#define WIFI_CUSTOM_DUAL_MIX_BTCR0   0x82000061
+#define WIFI_CUSTOM_DUAL_MIX_BTCR1   0x09040F00
+
+#elif defined (MTK_MT6612)
+
+#define WIFI_CUSTOM_SINGLE_ACL_BTCR0 0x7E048041
+#define WIFI_CUSTOM_SINGLE_ACL_BTCR1 0x18840F00
+
+#define WIFI_CUSTOM_SINGLE_MIX_BTCR0 0x82040061
+#define WIFI_CUSTOM_SINGLE_MIX_BTCR1 0x18840E00
+
+#define WIFI_CUSTOM_DUAL_ACL_BTCR0   0x7E000061
+#define WIFI_CUSTOM_DUAL_ACL_BTCR1   0x08840F00
+
+#define WIFI_CUSTOM_DUAL_MIX_BTCR0   0x7E000061
+#define WIFI_CUSTOM_DUAL_MIX_BTCR1   0x08840F00
+
+#elif defined (MTK_MT6616)
+
+#define WIFI_CUSTOM_SINGLE_ACL_BTCR0 0x79048041
+#define WIFI_CUSTOM_SINGLE_ACL_BTCR1 0x18040F00
+
+#define WIFI_CUSTOM_SINGLE_MIX_BTCR0 0x82040061
+#define WIFI_CUSTOM_SINGLE_MIX_BTCR1 0x18040E00
+
+#define WIFI_CUSTOM_DUAL_ACL_BTCR0   0x79000061
+#define WIFI_CUSTOM_DUAL_ACL_BTCR1   0x08040F00
+
+#define WIFI_CUSTOM_DUAL_MIX_BTCR0   0x79000061
+#define WIFI_CUSTOM_DUAL_MIX_BTCR1   0x08040F00
+
+#else
+
+#define WIFI_CUSTOM_SINGLE_ACL_BTCR0 0x82048041
+#define WIFI_CUSTOM_SINGLE_ACL_BTCR1 0x19040F00
+
+#define WIFI_CUSTOM_SINGLE_MIX_BTCR0 0x82040061
+#define WIFI_CUSTOM_SINGLE_MIX_BTCR1 0x19040E00
+
+#define WIFI_CUSTOM_DUAL_ACL_BTCR0   0x82000061
+#define WIFI_CUSTOM_DUAL_ACL_BTCR1   0x09040F00
+
+#define WIFI_CUSTOM_DUAL_MIX_BTCR0   0x82000061
+#define WIFI_CUSTOM_DUAL_MIX_BTCR1   0x09040F00
+
+#endif
+
+#define WIFI_CUSTOM_SINGLE_ACL_BTCR2 0x0F0001D0
+#define WIFI_CUSTOM_SINGLE_ACL_BTCR3 0x0200000A
+
+#define WIFI_CUSTOM_SINGLE_MIX_BTCR2 0x00000000
+#define WIFI_CUSTOM_SINGLE_MIX_BTCR3 0x00000000
+
+#define WIFI_CUSTOM_DUAL_ACL_BTCR2   0x0A0001D0
+#define WIFI_CUSTOM_DUAL_ACL_BTCR3   0x02000000
+    
+#define WIFI_CUSTOM_DUAL_MIX_BTCR2   0x00000000
+#define WIFI_CUSTOM_DUAL_MIX_BTCR3   0x00000000
+        
+#define WIFI_CUSTOM_BT_SETTING 1
+#define WIFI_CUSTOM_SINGLE_ANT 0
+#define WIFI_CUSTOM_BT_PROFILE 0
+#define WIFI_CUSTOM_PTA_ENABLED 0
+    
+#define WIFI_CUSTOM_MAC_ADDRESS {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+#define WIFI_CUSTOM_COUNTRY_CODE {0x0000, 0x0000, 0x0000, 0x0000}
+#define WIFI_CUSTOM_UAPSD_AC 0xFF
+#define WIFI_CUSTOM_POWER_MODE 2
+#define WIFI_CUSTOM_ATIM_WINDOW 0
+#define WIFI_CUSTOM_VOIP_INTERVAL 0
+#define WIFI_CUSTOM_POLL_INTERVAL 0
+#define WIFI_CUSTOM_POLL_INTERVAL_B 500
+#define WIFI_CUSTOM_L3_PKT_FILTER_EN 0
+#define WIFI_CUSTOM_ADHOC_MODE 1
+#define WIFI_CUSTOM_ROAMING_EN 1
+    
+#define WIFI_CUSTOM_MULTI_DOMAIN_CAP 0
+    
+#define WIFI_CUSTOM_GPIO2_MODE 0
+    
+#define WIFI_CUSTOM_VI_AIFSN_BIAS 0
+#define WIFI_CUSTOM_VI_MAX_TXOP_LIMIT 0xFFFF
+    
+#define WIFI_CUSTOM_INIT_DELAY_IND 100
+    
+#define WIFI_CUSTOM_USE_WAPI 0
+    
+#define WIFI_CUSTOM_DAISY_CHAIN_EN 0
+    
+#define WIFI_CUSTOM_LED_BLINK_MODE 3
+#define WIFI_CUSTOM_LED_BLINK_ON_TIME 80
+#define WIFI_CUSTOM_LED_BLINK_OFF_TIME 24
+    
+#define WIFI_CUSTOM_WMM_PS_EN 0
+#define WIFI_CUSTOM_MULTI_DTIM_WAKE   300
+    
+#define WIFI_CUSTOM_RESERVED { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+#endif 
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libfile_op/MTK_LICENSE b/src/telephonyware/3.0/mtk_nvram/src/libfile_op/MTK_LICENSE
new file mode 100644
index 0000000..901b162
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libfile_op/MTK_LICENSE
@@ -0,0 +1,35 @@
+Copyright Statement:
+
+This software/firmware and related documentation ("MediaTek Software") are
+protected under relevant copyright laws. The information contained herein
+is confidential and proprietary to MediaTek Inc. and/or its licensors.
+Without the prior written permission of MediaTek inc. and/or its licensors,
+any reproduction, modification, use or disclosure of MediaTek Software,
+and information contained herein, in whole or in part, shall be strictly prohibited.
+
+MediaTek Inc. (C) 2018. All rights reserved.
+
+BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+
+The following software/firmware and/or related documentation ("MediaTek Software")
+have been modified by MediaTek Inc. All revisions are subject to any receiver's
+applicable license agreements with MediaTek Inc.
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libfile_op/NOTICE b/src/telephonyware/3.0/mtk_nvram/src/libfile_op/NOTICE
new file mode 100644
index 0000000..c3f777d
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libfile_op/NOTICE
@@ -0,0 +1,4 @@
+This MediaTek software package contains software with the following notices and under the following licenses:
+
+=============================================================================
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libfile_op/README b/src/telephonyware/3.0/mtk_nvram/src/libfile_op/README
new file mode 100644
index 0000000..23743e7
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libfile_op/README
@@ -0,0 +1,38 @@
+This directory contains NvRAM libfile_op interface, which defines the interface of
+libfile_op and is used to build a libfile_op related shared library.
+
+
+WHAT IT DOES?
+=============
+It provide interface to backup NvRAM data to backup partition.
+and restore NvRAM partition when fielsystem is empty.
+Without NvRAM backup or restore feature, factory data maybe lost in some
+case.
+
+
+HOW IT WAS BUILT?
+==================
+
+It needs the following libs from AOSP:
+1.  libc.so
+2.  libcutils.so
+
+and the following libs from MediaTek:
+1.  libnvram.so
+2.  libcustom_nvram.so
+
+
+All source/dependency modules of this module are already put in
+'vendor/mediatek/libs' folder.
+
+
+HOW TO USE IT?
+==============
+
+Files in this directory is used to
+generate a shared library 'libfile_op.so'.
+
+The shared library 'libfile_op.so' is loaded and invoked by
+meta tool for backup, invoked by NvRAM daemon tool for restore operation.
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libfile_op/libfile_op.c b/src/telephonyware/3.0/mtk_nvram/src/libfile_op/libfile_op.c
new file mode 100644
index 0000000..0de1590
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libfile_op/libfile_op.c
@@ -0,0 +1,7804 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   libfile_op.c
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    driver main function
+ *
+ * Author:
+ * -------
+ *   Nick Huang (mtk02183)
+ *
+ *******************************************************************************/
+#include <sys/types.h>
+//add for log
+#include <unistd.h>
+#include <time.h>
+//add for log
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <dirent.h>
+#include <string.h>
+#include <sys/mount.h>
+#include <sys/ioctl.h>
+#include <linux/fs.h>
+#include "libfile_op.h"
+#include "libnvram_log.h"
+#include "libnvram.h"
+#include "CFG_file_public.h"
+//#include "../../../../kernel/include/mtd/mtd-abi.h"
+#include <mtd/mtd-abi.h>
+//#include "android_filesystem_config.h"
+#include <pthread.h>
+// NVRAM Data Size About 1MB
+//#define BinTitleSize   128*1*1024
+//#define BinContentSize 128*7*1024
+
+#define MTK_WRITE_ON_PROTECTION
+#define AID_SYSTEM 0
+#define AID_BLUETOOTH 0
+#define AID_AUDIO 0
+
+#define	SHRT_MAX	0x7fff
+#define	INT_MAX		0x7fffffff
+
+#define Loop_num    4096
+#define MaxFileNum   936
+#define INVALID_HANDLE_VALUE    -1
+
+typedef struct {
+	unsigned int ulCheckSum;
+	unsigned int iCommonFileNum;
+	unsigned int iCustomFileNum;
+} BackupFileInfo;
+typedef struct {
+	char	cFileName[128];
+	unsigned int iLID;
+} FileName;
+
+typedef struct {
+	char cCheckFileName[128];
+	int  iCheckFileIndex;
+} CheckFileName;
+
+typedef struct {
+	char cRecordCallerName[128];
+	int  iRecordCallerIndex;
+} RecordCallerName;
+
+
+//#define FILETITLE_START_BLOCK  IMAGE_MTK_META_START_BLOCK
+//#define FILETILE_BLOCK_SIZE    1
+//#define CONTENT_START_BLOCK    (FILETITLE_START_BLOCK + FILETILE_BLOCK_SIZE)
+//#define CONTENT_BLOCK_SIZE     7
+
+static const char *g_pcNVM_AllFile    = "/mnt/vendor/nvdata/AllFile";
+static const char *g_pcNVM_AllMap     = "/mnt/vendor/nvdata/AllMap";
+static const char *g_pcNVM_AllFile_Check    = "/mnt/vendor/nvdata/AllFileCheck";
+static const char *g_pcNVM_AllMap_Check     = "/mnt/vendor/nvdata/AllMapCheck";
+static const char *g_pcNVM_Flag       =
+    "/mnt/vendor/nvdata/RestoreFlag";//The File Will be Created after restore
+static const char *g_pcNVM_BackFlag   =
+    "/mnt/vendor/nvdata/BackupFlag";//The file will be updated after modifying important data
+
+static const char *g_pcNVM_APCalFile  = "/mnt/vendor/nvdata/APCFG/APRDCL";
+static const char *g_pcNVM_APRdebFile = "/mnt/vendor/nvdata/APCFG/APRDEB";
+static const char *g_pcNVM_MDCalFile  = "/mnt/vendor/nvdata/md/NVRAM/CALIBRAT";
+static const char *g_pcNVM_MDRdebFile = "/mnt/vendor/nvdata/md/NVRAM/NVD_IMEI";
+static const char *g_pcNVM_MDImptFile = "/mnt/vendor/nvdata/md/NVRAM/IMPORTNT";
+static const char *g_pcNVM_MDDataFile = "/mnt/vendor/nvdata/md/NVRAM/NVD_DATA";
+static const char *g_pcNVM_MDCoreFile = "/mnt/vendor/nvdata/md/NVRAM/NVD_CORE";
+//Add for second modem for MT658*
+static const char *g_pcNVM_MD2CalFile  = "/mnt/vendor/nvdata/md2/NVRAM/CALIBRAT";
+static const char *g_pcNVM_MD2RdebFile = "/mnt/vendor/nvdata/md2/NVRAM/NVD_IMEI";
+static const char *g_pcNVM_MD2ImptFile = "/mnt/vendor/nvdata/md2/NVRAM/IMPORTNT";
+//End of Comment
+
+/*Add for C2K modem*/
+static const char *g_pcNVM_MD3CalFile  = "/mnt/vendor/nvdata/md3/NVRAM/CALIBRAT";
+static const char *g_pcNVM_MD3RdebFile = "/mnt/vendor/nvdata/md3/NVRAM/NVD_IMEI";
+static const char *g_pcNVM_MD3ImptFile = "/mnt/vendor/nvdata/md3/NVRAM/IMPORTNT";
+
+
+//LTE support
+
+static const char *g_pcNVM_MD5CalFile  = "/mnt/vendor/nvdata/md5/NVRAM/CALIBRAT";
+static const char *g_pcNVM_MD5RdebFile = "/mnt/vendor/nvdata/md5/NVRAM/NVD_IMEI";
+static const char *g_pcNVM_MD5ImptFile = "/mnt/vendor/nvdata/md5/NVRAM/IMPORTNT";
+
+
+static const char *g_pcNVM_Via = "/mnt/vendor/nvdata/md_via";
+
+static const char *g_pcBKP_APCalFile  = "/backup/APCFG/APRDCL";
+static const char *g_pcBKP_APRdebFile = "/backup/APCFG/APRDEB";
+static const char *g_pcBKP_MDCalFile  = "/backup/md/NVRAM/CALIBRAT";
+static const char *g_pcBKP_MDRdebFile = "/backup/md/NVRAM/NVD_IMEI";
+static const char *g_pcBKP_MDImptFile = "/backup/md/NVRAM/IMPORTNT";
+static const char *g_pcBKP_MDDataFile = "/backup/md/NVRAM/NVD_DATA";
+static const char *g_pcBKP_MDCoreFile = "/backup/md/NVRAM/NVD_CORE";
+static const char *g_pcNVM_ModomBackNum =
+    "/mnt/vendor/nvdata/md/NVRAM/IMPORTNT/MP0D_000";////The file will be updated after modifying MD important data
+
+unsigned int gFileStartAddr = 0;
+pthread_mutex_t gFileStartAddrlock = PTHREAD_MUTEX_INITIALIZER;
+
+extern int nvram_platform_log_block;
+extern int nvram_platform_resv_block;
+extern int nvram_platform_DM_block;
+extern int nvram_platform_header_offset;
+#define min(a,b) ((a) <= (b) ? (a) : (b))
+#define CHECK_FILE_EXIST_NUMBER 10
+#define CHECK_FILE_EXIST_MARK 0x54535845
+unsigned int gFileExistMark[CHECK_FILE_EXIST_NUMBER] = {0};
+extern FileName aPerformance[];
+extern FileName aBackupToBinRegion[];
+extern CheckFileName aCheckExistList[];
+extern RecordCallerName aRecordCallerList[];
+extern unsigned int g_i4CFG_File_Count;
+extern const unsigned int g_Backup_File_Count;
+extern const unsigned int g_Check_File_Count;
+extern const unsigned int g_Performance_File_Count;
+extern unsigned int g_i4CFG_File_Custom_Count;
+extern const unsigned int g_RecordCaller_Count;
+
+extern int nvram_misc_log_feature;
+extern int nvram_check_exist_feature;
+extern int nvram_read_back_feature;
+extern int nvram_check_exist_block_offset;
+extern int nvram_platform_layout_version;
+pthread_mutex_t dirlock = PTHREAD_MUTEX_INITIALIZER;
+
+extern char g_NVRAM_BACKUP_DEVICE[128];
+
+int isWriteOnProtection() {
+    #ifdef MTK_WRITE_ON_PROTECTION
+        return 1;
+    #endif
+    return 0;
+}
+static int open_file_with_dirs(const char *fn, mode_t mode) {
+	char tmp[PATH_MAX];
+	int i = 0;
+	int filedesc = 0;
+	struct stat info;
+	int val = 0;
+
+	umask(000);
+	pthread_mutex_lock(&dirlock);
+	while (*fn) {
+		tmp[i] = *fn;
+
+		if (*fn == '/' && i) {
+			tmp[i] = '\0';
+			if (access(tmp, F_OK) != 0) {
+				if (mkdir(tmp, 0771) == -1) {
+					NVRAM_LOG("mkdir error! %s\n", (char*)strerror(errno));
+					if (errno != EEXIST) {
+						pthread_mutex_unlock(&dirlock);
+						return -1;
+					}
+				}
+#if 1
+				val = stat(tmp, &info);
+				if ((val == 0)) {
+					//maybe meta tool operate these files
+					if (strstr(tmp, "/media")) {
+						if (-1 == chown(tmp, -1, AID_AUDIO))
+							NVRAM_LOG("change dir group owner failed(media):%s\n", (char*)strerror(errno));
+					} else if (strstr(tmp, "BT_Addr")) {
+						if (-1 == chown(tmp, -1, AID_BLUETOOTH))
+							NVRAM_LOG("change dir group owner failed(bt):%s\n", (char*)strerror(errno));
+					} else {
+						if (-1 == chown(tmp, -1, AID_SYSTEM))
+							NVRAM_LOG("change dir group owner failed:%s\n", (char*)strerror(errno));
+					}
+				}
+#endif
+			}
+			tmp[i] = '/';
+		}
+		i++;
+		fn++;
+	}
+	tmp[i] = '\0';
+	filedesc = open(tmp, O_TRUNC | O_CREAT | O_WRONLY, mode);
+	if (-1 != filedesc) {
+		val = stat(tmp, &info);
+#if 1
+		if ((val == 0) ) {
+			if (strstr(tmp, "/media")) {
+				if (-1 == chown(tmp, -1, AID_AUDIO))
+					NVRAM_LOG("change file group owner failed(media):%s\n", (char*)strerror(errno));
+			} else if (strstr(tmp, "BT_Addr")) {
+				if (-1 == chown(tmp, -1, AID_BLUETOOTH))
+					NVRAM_LOG("change file group owner failed(bt):%s\n", (char*)strerror(errno));
+			} else {
+				if (-1 == chown(tmp, -1, AID_SYSTEM))
+					NVRAM_LOG("change file group owner failed:%s\n", (char*)strerror(errno));
+			}
+			if (!S_ISDIR(info.st_mode)) {
+				if (-1 == chmod(tmp, mode))
+					NVRAM_LOG("chmod file failed: %s\n", (char*)strerror(errno));
+			}
+		}
+#endif
+	}
+	pthread_mutex_unlock(&dirlock);
+	return filedesc;
+
+}
+
+#if 0
+//-----------------------------------------------------------------------------
+static bool FileOp_CopyFile(const char* src, const char* dst) {
+	unsigned char acBuffer[1024];
+	int iSrc, iDst, iFileSize, iWriteSize, iSize;
+	bool bRet = false;
+	struct stat statbuf;
+
+	iSrc = open(src, O_RDONLY, S_IRUSR);
+	iDst = open(dst, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
+	if (-1 == iSrc || -1 == iDst) {
+		goto EXIT;
+	}
+
+	fstat(iSrc, &statbuf);
+	iFileSize = (int)statbuf.st_size;
+
+	while (iFileSize > 0) {
+		iWriteSize = min(iFileSize, (int)sizeof(acBuffer));
+		iSize = (int)read(iSrc, acBuffer, iWriteSize);
+		if (iSize != iWriteSize) {
+			goto EXIT;
+		}
+		iSize = (int)write(iDst, acBuffer, iWriteSize);
+		if (iSize != iWriteSize) {
+			goto EXIT;
+		}
+		iFileSize -= iWriteSize;
+	}
+
+	bRet = true;
+EXIT:
+	if (iDst != -1) {
+		close(iDst);
+	}
+	if (iSrc != -1) {
+		close(iSrc);
+	}
+	return bRet;
+}
+//-----------------------------------------------------------------------------
+bool FileOp_CreateNVMFolder(void) {
+	if (0 != mkdir("/nvram/APCFG", S_IRUSR | S_IWUSR)) {
+		NVBAK_LOG("Err Create Directory APCFG Fail\n");
+		return false;
+	}
+
+	if (0 != mkdir(g_pcNVM_APCalFile, S_IRUSR | S_IWUSR)) {
+		NVBAK_LOG("Err CreateDirectory APCFG Fail\n");
+		return false;
+	}
+
+	if (0 != mkdir(g_pcNVM_APRdebFile, S_IRUSR | S_IWUSR)) {
+		NVBAK_LOG("Err CreateDirectory APCFG Fail\n");
+		return false;
+	}
+
+	NVBAK_LOG("CreateData Folder Success!\n");
+	return true;
+
+}
+//-----------------------------------------------------------------------------
+bool FileOp_RestoreData(MetaData eRestoreType ) {
+	DIR *dir;
+	struct dirent *entry;
+	struct stat statbuf;
+	const char* lpSrcDirName = NULL;
+	const char* lpDstDirName = NULL;
+	char acSrcPathName[MAX_NAMESIZE];
+	char acDstPathName[MAX_NAMESIZE];
+	bool bRet = true;
+
+	switch (eRestoreType) {
+	case APBOOT:
+		lpSrcDirName = g_pcBKP_APRdebFile;
+		lpDstDirName = g_pcNVM_APRdebFile;
+		break;
+
+	case MDBOOT:
+		lpSrcDirName = g_pcBKP_MDRdebFile;
+		lpDstDirName = g_pcNVM_MDRdebFile;
+		break;
+
+	case APCLN:
+		lpSrcDirName = g_pcBKP_APCalFile;
+		lpDstDirName = g_pcNVM_APCalFile;
+		break;
+
+	case MDCLN:
+		lpSrcDirName = g_pcBKP_MDCalFile;
+		lpDstDirName = g_pcNVM_MDCalFile;
+		break;
+	case ALL:
+	default:
+		return false;
+		break;
+	}
+
+	dir = opendir(lpSrcDirName);
+	if (dir == NULL) {
+		printf("ERROR FileOp_RestoreData open dir: %s", lpSrcDirName);
+		return false;
+	}
+
+	while (1) {
+		entry = readdir(dir);
+		if (entry == NULL) {
+			break;
+		}
+		lstat(entry->d_name, &statbuf);
+		/*
+		if (!strcmp(entry->d_name, ".")|| !strcmp(entry->d_name, "..")) {
+			continue;
+		}
+		*/
+		if (!S_ISREG(statbuf.st_mode)) {
+			continue;
+		}
+		sprintf(acSrcPathName, "%s/%s", lpSrcDirName, entry->d_name);
+		sprintf(acDstPathName, "%s/%s", lpDstDirName, entry->d_name);
+
+		if (!FileOp_CopyFile(acSrcPathName, acDstPathName)) {
+			printf("ERROR FileOp_RestoreData %s\n", lpSrcDirName);
+			bRet = false;
+			continue;
+		}
+	}
+	closedir(dir);
+	return bRet;
+}
+//-----------------------------------------------------------------------------
+bool FileOp_BackupData(MetaData eBackupType ) {
+	DIR *dir;
+	struct dirent *entry;
+	struct stat statbuf;
+	const char* lpSrcDirName = NULL;
+	const char* lpDstDirName = NULL;
+	char acSrcPathName[MAX_NAMESIZE];
+	char acDstPathName[MAX_NAMESIZE];
+	bool bRet = true;
+
+	switch (eBackupType) {
+	case APBOOT:
+		lpSrcDirName = g_pcNVM_APRdebFile;
+		lpDstDirName = g_pcBKP_APRdebFile;
+		break;
+
+	case MDBOOT:
+		lpSrcDirName = g_pcNVM_MDRdebFile;
+		lpDstDirName = g_pcBKP_MDRdebFile;
+		break;
+
+	case APCLN:
+		lpSrcDirName = g_pcNVM_APCalFile;
+		lpDstDirName = g_pcBKP_APCalFile;
+		break;
+
+	case MDCLN:
+		lpSrcDirName = g_pcNVM_MDCalFile;
+		lpDstDirName = g_pcBKP_MDCalFile;
+		break;
+
+	case ALL:
+	default:
+		return false;
+		break;
+	}
+
+	dir = opendir(lpSrcDirName);
+	if (dir == NULL) {
+		printf("ERROR FileOp_BackupData open dir: %s", lpSrcDirName);
+		return false;
+	}
+
+	while (1) {
+		entry = readdir(dir);
+		if (entry == NULL) {
+			break;
+		}
+		lstat(entry->d_name, &statbuf);
+		/*
+		if (!strcmp(entry->d_name, ".")|| !strcmp(entry->d_name, "..")) {
+			continue;
+		}
+		*/
+		if (!S_ISREG(statbuf.st_mode)) {
+			continue;
+		}
+		sprintf(acSrcPathName, "%s/%s", lpSrcDirName, entry->d_name);
+		sprintf(acDstPathName, "%s/%s", lpDstDirName, entry->d_name);
+
+		if (!FileOp_CopyFile(acSrcPathName, acDstPathName)) {
+			printf("ERROR FileOp_BackupData %s\n", lpSrcDirName);
+			bRet = false;
+			continue;
+		}
+	}
+	closedir(dir);
+	return bRet;
+}
+//-----------------------------------------------------------------------------
+bool FileOp_DeleteData(const char* pcDirName) {
+	DIR *dir = NULL;
+	struct dirent *entry;
+	struct stat statbuf;
+	char acLongPathName[MAX_NAMESIZE];
+
+	NVBAK_LOG("Delete Data\n");
+
+	//find the first file
+	dir = opendir(pcDirName);
+	if (dir == NULL) {
+		NVBAK_LOG("Cannot open FindFirstFile file.\n");
+		return false;
+	}
+
+	//get the next nvram file in the folder
+	while (1) {
+		entry = readdir(dir);
+		if (entry == NULL) {
+			break;
+		}
+
+		lstat(entry->d_name, &statbuf);
+		/*
+		if (!strcmp(entry->d_name, ".")|| !strcmp(entry->d_name, "..")) {
+			NVBAK_LOG("open .........input file.\n");
+			continue;
+		}
+		*/
+		if (!S_ISREG(statbuf.st_mode)) {
+			continue;
+		}
+
+		NVBAK_LOG("the file is: %c%c%c%c%c%c \n",
+		          entry->d_name[0], entry->d_name[1], entry->d_name[2],
+		          entry->d_name[3], entry->d_name[4], entry->d_name[5]);
+
+		sprintf(acLongPathName, "%s/%s", pcDirName, entry->d_name);
+
+		remove(acLongPathName);
+	}
+
+	closedir(dir);
+
+	return true;
+}
+//-----------------------------------------------------------------------------
+void FileOp_BackupAll(void ) {
+	FileOp_BackupData(APBOOT);
+	FileOp_BackupData(MDBOOT);
+	FileOp_BackupData(APCLN);
+	FileOp_BackupData(MDCLN);
+}
+//-----------------------------------------------------------------------------
+void FileOp_RestoreAll(void ) {
+	//restore the all files to fat2 partition one by one type
+	FileOp_RestoreData(APBOOT);
+	FileOp_RestoreData(MDBOOT);
+	FileOp_RestoreData(APCLN);
+	FileOp_RestoreData(MDCLN);
+}
+//-----------------------------------------------------------------------------
+void FileOp_DeleteAll(void ) {
+	FileOp_CreateNVMFolder();
+	FileOp_DeleteData(g_pcNVM_APRdebFile);
+	FileOp_DeleteData(g_pcNVM_APCalFile);
+}
+//-----------------------------------------------------------------------------
+void FileOp_DeleteRdebData(void ) {
+	FileOp_CreateNVMFolder();
+	FileOp_DeleteData(g_pcNVM_APRdebFile);
+}
+//-----------------------------------------------------------------------------
+void FileOp_RestoreBootData(void ) {
+	FileOp_RestoreData(APBOOT);
+	FileOp_RestoreData(MDBOOT);
+}
+#endif
+
+//#define Backup_PARTITION 1
+#define CleanBootFlag 0x12345678
+#define BitmapFlag 0xAABBCCDD
+//#define forDMBlockNum 2
+int  NvRamBlockNum = 0;
+int BinRegionBlockTotalNum = 0;
+static char *bBadBlockBitMap = NULL;
+bool FileOp_GetBadBlockBitMap(char* cMtdDevName) {
+	int fd, iResult;
+	char *tempBuffer = NULL;
+	char *tempBitmap1 = NULL;
+	char *tempBitmap2 = NULL;
+	int i, j, pos = 0, iBlockSize, iBlockNum, flag = 0;
+	bool bSuccessFound = false;
+	struct mtd_info_user info;
+	NVBAK_LOG("[NVRAM]:GetBadBlockBitMap\r\n");
+
+
+	if (!NVM_GetDeviceInfo(cMtdDevName, &info)) {
+		NVBAK_LOG("[NVRAM]:FileOp_GetBadBlockBitMap get device info error\r\n");
+
+		return false;
+	}
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVBAK_LOG("[NVRAM]:mtd open error\r\n");
+		return false;
+	}
+
+
+	iBlockSize = info.erasesize;
+	//iPartitionSize=info.size;
+	if (nvram_platform_layout_version == 0)
+		BinRegionBlockTotalNum = info.size / iBlockSize - nvram_platform_log_block -
+		                         nvram_platform_resv_block;
+	else if ( nvram_platform_layout_version == 1)
+		BinRegionBlockTotalNum = info.size / iBlockSize ;
+	else {
+		NVRAM_LOG("[NVRAM]: invalid nvram layout version %d\r\n",
+		          nvram_platform_layout_version);
+		close(fd);
+		return false;
+	}
+	NvRamBlockNum = BinRegionBlockTotalNum - nvram_platform_DM_block;
+
+	tempBuffer = (char*)malloc(iBlockSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error,errono:%d,error:%s\r\n", errno,
+		          strerror(errno));
+		close(fd);
+		return false;
+	}
+	iBlockNum = NvRamBlockNum;
+	NVBAK_LOG("[NVRAM]:iBlockNum:%d\n", iBlockNum);
+
+	tempBitmap1 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap1 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap1 Fail!!\r\n");
+		free(tempBuffer);
+		close(fd);
+		return false;
+	}
+
+	tempBitmap2 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap2 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap2 Fail!!\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		return false;
+	}
+
+	while (iBlockNum > 0) {
+		flag = 0;
+		iBlockNum--;
+		NVBAK_LOG("[NVRAM]:iBlockNum:%d\n", iBlockNum);
+		if (lseek(fd, iBlockNum * iBlockSize, SEEK_SET) < 0) {
+			NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+			close(fd);
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		iResult = read(fd, tempBuffer, iBlockSize);
+		NVBAK_LOG("[NVRAM]:read:%d\n", iResult);
+		if (iResult <= 0) {
+			NVBAK_LOG("[NVRAM]:read size error\r\n");
+			close(fd);
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		memcpy(tempBitmap1, tempBuffer, NvRamBlockNum * sizeof(char));
+		memcpy(tempBitmap2, tempBuffer + NvRamBlockNum * sizeof(char),
+		       NvRamBlockNum * sizeof(char));
+		for (i = 0; i < NvRamBlockNum; i++) {
+			if (tempBitmap1[i] != tempBitmap2[i]) {
+				NVBAK_LOG("[NVRAM]:1i:%d,1:%d,2:%d\n", i, tempBitmap1[i], tempBitmap2[i]);
+				flag = 1;
+				break;
+			}
+		}
+		if (flag)
+			continue;
+		memcpy(tempBitmap2, tempBuffer + 2 * NvRamBlockNum * sizeof(char),
+		       NvRamBlockNum * sizeof(char));
+		for (i = 0; i < NvRamBlockNum; i++) {
+			if (tempBitmap1[i] != tempBitmap2[i]) {
+				NVBAK_LOG("[NVRAM]:2i:%d,1:%d,2:%d\n", i, tempBitmap1[i], tempBitmap2[i]);
+				flag = 1;
+				break;
+			}
+		}
+		if (flag)
+			continue;
+		bSuccessFound = true;
+		break;
+	}
+	if (!bSuccessFound) {
+		NVBAK_LOG("[NVRAM]:can not find bad block bit map\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	} else {
+		NVBAK_LOG("[NVRAM]:Find bad block bit map!\r\n");
+		bBadBlockBitMap = NULL;
+		bBadBlockBitMap = (char*)malloc(NvRamBlockNum * sizeof(char));
+		if (bBadBlockBitMap == NULL) {
+			NVBAK_LOG("[NVRAM]:malloc bBadBlockBitMap Failed!\r\n");
+			close(fd);
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		memcpy(bBadBlockBitMap, tempBitmap1, NvRamBlockNum * sizeof(char));
+		NVBAK_LOG("[NVRAM]:find bBadBlockBitMap!\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return true;
+	}
+
+}
+bool FileOp_SetCleanBootFlag(bool bSetFlag) {
+	int fd, iResult;
+	char cMtdDevName[128] = {0};
+	char *tempBuffer = NULL;
+	struct mtd_info_user info;
+	struct erase_info_user erase_info;
+	int iWriteSize, iBlockSize;
+	unsigned int iCleanBootFlag;
+	int i, pos = 0;
+//   int iBackup_Partition=get_partition_numb("nvram");
+
+	if (NVM_Init()) {
+		NVBAK_LOG("[NVRAM]:FileOp_SetCleanBootFlag--NVM_Init Fail !!!\n");
+		return false;
+	}
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+
+	NVBAK_LOG("[NVRAM]:FileOp_SetCleanBootFlag\n");
+	NVBAK_LOG("[NVRAM]:cMtdDevName:%s\n", cMtdDevName);
+	if (!FileOp_GetBadBlockBitMap(cMtdDevName)) {
+		NVBAK_LOG("[NVRAM]:GetBadBlockBitMap Failed\r\n");
+		return false;
+	}
+	NVBAK_LOG("[NVRAM]:FileOp_SetCleanBootFlag:find BadBlockBitMap\n");
+
+	if (!NVM_GetDeviceInfo(cMtdDevName, &info)) {
+		NVBAK_LOG("[NVRAM]:FileOp_SetCleanBootFlag get device info error\r\n");
+		free(bBadBlockBitMap);
+		return false;
+	}
+	fd = open(cMtdDevName, O_RDWR);
+	if ( fd < 0) {
+		NVBAK_LOG("[NVRAM]:mtd open error %s\r\n", (char*)strerror(errno));
+		free(bBadBlockBitMap);
+		return false;
+	}
+
+
+
+
+	iWriteSize = info.writesize;
+	iBlockSize = info.erasesize;
+
+	NVBAK_LOG("NvRamBlockNum:%d\r\n", NvRamBlockNum);
+	tempBuffer = (char *)malloc(iBlockSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	memset(tempBuffer, 0xFF, iBlockSize);
+	for (i = 0; i < NvRamBlockNum; i++) {
+		if (bBadBlockBitMap[i] == 0) {
+			pos = i;
+			break;
+		}
+	}
+	if (i == NvRamBlockNum) {
+		NVBAK_LOG("[NVRAM]:there are not enough good blocks for set cleanboot flag\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	free(bBadBlockBitMap);
+	if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+	iResult = read(fd, tempBuffer, iBlockSize);
+	if (iResult < 0) {
+		NVBAK_LOG("[NVRAM]:mtd read error\r\n");
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+	//set clean boot flag
+	if (bSetFlag) {
+		*((unsigned int*)(tempBuffer + 2 * sizeof(unsigned int))) = CleanBootFlag;
+	} else {
+		*((unsigned int*)(tempBuffer + 2 * sizeof(unsigned int))) = 0xFFFFFFFF;
+	}
+	if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+	erase_info.start = pos * iBlockSize;
+	erase_info.length = iBlockSize;
+
+
+
+
+	if ((!nvram_emmc_support()) && (!nvram_ufs_support())) {
+
+		if (!NVM_EraseDeviceBlock(cMtdDevName, erase_info)) {
+			NVBAK_LOG("[NVRAM]:mtd erase error\r\n");
+			close(fd);
+			free(tempBuffer);
+			return false;
+		}
+	}
+
+	if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+
+	iResult = write(fd, tempBuffer, iBlockSize);
+	if (iResult != iBlockSize) {
+		NVBAK_LOG("[NVRAM]:mtd write error\r\n");
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+
+	if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0){
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+
+	iResult = read(fd, tempBuffer, iBlockSize);
+	if (iResult < 0 ) {
+		NVBAK_LOG("[NVRAM]:mtd re-read error\r\n");
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+
+	iCleanBootFlag = *((unsigned int*)(tempBuffer + 2 * sizeof(unsigned int)));
+	NVBAK_LOG("[NVRAM]:set/clear clean boot:%x,pos:%d\n", iCleanBootFlag, pos);
+	if (bSetFlag) {
+		if (iCleanBootFlag != CleanBootFlag) {
+			NVBAK_LOG("[NVRAM]:mtd set clean boot flag error\r\n");
+			close(fd);
+			free(tempBuffer);
+			return false;
+		}
+	} else {
+		if (iCleanBootFlag != 0xFFFFFFFF) {
+			NVBAK_LOG("[NVRAM]:mtd set clean boot flag error\r\n");
+			close(fd);
+			free(tempBuffer);
+			return false;
+		}
+	}
+
+	NVBAK_LOG("[NVRAM]:mtd set clean boot flag success\r\n");
+	close(fd);
+	free(tempBuffer);
+	return true;
+}
+
+bool Fileop_SetBackupFileNum(bool bSetFlag) {
+	//int iFileDesc,iResult;
+	int fd, iResult, iFileDesc;
+	char cMtdDevName[128] = { 0 };
+	char *tempBuffer = NULL;
+	struct mtd_info_user info;
+	struct erase_info_user erase_info;
+	int iWriteSize, iBlockSize;
+	unsigned int iBackupFileNum = 0, iBackupFileNum1, iMapFileSize, open_error = 0;
+	unsigned short iMDBackupNum = 0, iMDBackupNum1;
+	int i, pos = 0;
+//  int iBackup_Partition=get_partition_numb("nvram");
+	NVBAK_LOG("[NVRAM]:Fileop_SetBackupFileNum:find BadBlockBitMap\n");
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+	NVBAK_LOG("[NVRAM]:cMtdDevName:%s\n", cMtdDevName);
+	NVBAK_LOG("[NVRAM]:Fileop_SetBackupFileNum\n");
+	iFileDesc = open(g_pcNVM_BackFlag, O_RDWR);
+	if (iFileDesc == -1) {
+		NVBAK_LOG("[NVRAM]:can not open BackupFileNum Flag\n");
+		++open_error;
+	} else {
+		if (!NVM_CheckBackFlag(iFileDesc)) {
+			NVBAK_LOG("[NVRAM]:Fileop_SetBackupFileNum Backflag is wrong\n");
+			unlink(g_pcNVM_BackFlag);
+			close(iFileDesc);
+			goto mdflag;
+		}
+		if (-1 == lseek(iFileDesc, 0, SEEK_SET)) {
+			NVRAM_LOG("[NVRAM]:Fileop_SetBackupFileNum lseek error\n");
+			iBackupFileNum = 0;
+			close(iFileDesc);
+			goto mdflag;
+		}
+		iResult = read(iFileDesc, &iBackupFileNum, sizeof(unsigned int));
+		if (iResult != sizeof(unsigned int)) {
+			NVBAK_LOG("[NVRAM]:can not read BackupFileNum Flag(ignore):%d\n", iResult);
+			iBackupFileNum = 0;
+			unlink(g_pcNVM_BackFlag);
+		}
+		close(iFileDesc);
+	}
+mdflag:
+	iResult = 0;
+	iFileDesc = -1;
+	iFileDesc = open(g_pcNVM_ModomBackNum, O_RDWR);
+	if (iFileDesc == -1) {
+		NVBAK_LOG("[NVRAM]:can not open ModomBackNum Flag\n");
+		++open_error;
+	} else {
+		if (!NVM_CheckMDBackFlag(iFileDesc)) {
+			NVBAK_LOG("[NVRAM]:MDBackflag is wrong!\n");
+			unlink(g_pcNVM_ModomBackNum);
+			close(iFileDesc);
+			goto readbackupdone;
+		}
+		if (-1 == lseek(iFileDesc, 0, SEEK_SET)) {
+			NVRAM_LOG("Fileop_SetBackupFileNum:lseek MDBackflag error\n");
+			close(iFileDesc);
+			iMDBackupNum = 0;
+			goto readbackupdone;
+		}
+		iResult = read(iFileDesc, &iMDBackupNum, sizeof(unsigned short));
+		if (iResult != sizeof(unsigned short)) {
+			NVBAK_LOG("[NVRAM]:can not read ModomBackNum Flag(ignore):%d\n", iResult);
+			iMDBackupNum = 0;
+			unlink(g_pcNVM_ModomBackNum);
+		}
+		close(iFileDesc);
+	}
+	if (open_error >= 2) {
+		NVBAK_LOG("[NVRAM]:BackupFileNum Flag and ModemBackupNum not exist!\n");
+	}
+	NVBAK_LOG("[NVRAM]:AP modified file Num:%d\n", iBackupFileNum);
+
+	NVBAK_LOG("[NVRAM]:MD modified file Num:%d\n", iMDBackupNum);
+	//search the first avaiable block to write
+readbackupdone:
+	if (!FileOp_GetBadBlockBitMap(cMtdDevName)) {
+		NVBAK_LOG("[NVRAM]:GetBadBlockBitMap Failed\r\n");
+		return false;
+	}
+
+	if (!NVM_GetDeviceInfo(cMtdDevName, &info)) {
+		NVBAK_LOG("[NVRAM]:Fileop_SetBackupFileNum get device info error\r\n");
+		free(bBadBlockBitMap);
+		return false;
+	}
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVBAK_LOG("[NVRAM]:mtd open error\r\n");
+		free(bBadBlockBitMap);
+		return false;
+	}
+
+
+
+	iWriteSize = info.writesize;
+	iBlockSize = info.erasesize;
+
+
+	tempBuffer = malloc(iBlockSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	memset(tempBuffer, 0xFF, iBlockSize);
+	for (i = 0; i < NvRamBlockNum; i++) {
+		if (bBadBlockBitMap[i] == 0) {
+			pos = i;
+			break;
+		}
+	}
+	if (i == NvRamBlockNum) {
+		NVBAK_LOG("[NVRAM]:there are not enough good blocks for set cleanboot flag\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	free(bBadBlockBitMap);
+	if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+	iResult = read(fd, tempBuffer, iBlockSize);
+	if (iResult < 0) {
+		NVBAK_LOG("[NVRAM]:mtd read error\r\n");
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+	iMapFileSize = *((unsigned int*)(tempBuffer));
+	if ((iMapFileSize + 3 * sizeof(unsigned int)) > (iBlockSize - sizeof(
+	            unsigned int) - sizeof(unsigned short))) {
+		NVBAK_LOG("[NVRAM]:there is no space for storing backup file num\n");
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+	if (bSetFlag) {
+		*((unsigned int*)(tempBuffer + 3 * sizeof(unsigned int) + iMapFileSize)) =
+		    iBackupFileNum;
+		*((unsigned short*)(tempBuffer + 3 * sizeof(unsigned int) + iMapFileSize +
+		                    sizeof(unsigned int))) = iMDBackupNum;
+	} else {
+		*((unsigned int*)(tempBuffer + 3 * sizeof(unsigned int) + iMapFileSize)) =
+		    0xFFFFFFFF;
+		*((unsigned short*)(tempBuffer + 3 * sizeof(unsigned int) + iMapFileSize +
+		                    sizeof(unsigned int))) = 0xFFFF;
+	}
+
+	if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+	erase_info.start = pos * iBlockSize;
+	erase_info.length = iBlockSize;
+
+
+	if ((!nvram_emmc_support()) && (!nvram_ufs_support())) {
+
+		if (!NVM_EraseDeviceBlock(cMtdDevName, erase_info)) {
+			NVBAK_LOG("[NVRAM]:mtd erase error\r\n");
+			close(fd);
+			free(tempBuffer);
+			return false;
+		}
+	}
+
+	if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+
+	iResult = write(fd, tempBuffer, iBlockSize);
+	if (iResult != iBlockSize) {
+		NVBAK_LOG("[NVRAM]:mtd write error\r\n");
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+
+	if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0 ){
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+
+	iResult = read(fd, tempBuffer, iBlockSize);
+	if (iResult < 0 ) {
+		NVBAK_LOG("[NVRAM]:mtd re-read error\r\n");
+		close(fd);
+		free(tempBuffer);
+		return false;
+	}
+
+	iBackupFileNum1 = *((unsigned int*)(tempBuffer + 3 * sizeof(
+	                                        unsigned int) + iMapFileSize));
+	iMDBackupNum1 = *((unsigned short*)(tempBuffer + 3 * sizeof(
+	                                        unsigned int) + iMapFileSize + sizeof(unsigned int)));
+	NVBAK_LOG("[NVRAM]:set AP backup file num:%d,MD backup file num:%d,pos:%d\n",
+	          iBackupFileNum1, iMDBackupNum1, pos);
+	if (bSetFlag) {
+		if (iBackupFileNum1 != iBackupFileNum || iMDBackupNum1 != iMDBackupNum) {
+			NVBAK_LOG("[NVRAM]:mtd set File Backup Num error\r\n");
+			close(fd);
+			free(tempBuffer);
+			return false;
+		}
+	} else {
+		if (iBackupFileNum1 != 0xFFFFFFFF || iMDBackupNum1 != 0xFFFF) {
+			NVBAK_LOG("[NVRAM]:set File Backup Num error\r\n");
+			close(fd);
+			free(tempBuffer);
+			return false;
+		}
+	}
+
+	NVBAK_LOG("[NVRAM]:Fileop_SetBackupFileNum success\r\n");
+	close(fd);
+	free(tempBuffer);
+	return true;
+}
+bool FileOp_GetCleanBootFlag(unsigned int * iCleanBootFlag) {
+	int fd, iResult;
+	char cMtdDevName[128] = { 0 };
+	char *tempBuffer = NULL;
+	char *tempBitmap1 = NULL;
+	char *tempBitmap2 = NULL;
+	int i, j, pos = 0, iBlockSize, iBlockNum, flag = 0;
+	bool bSuccessFound = false;
+	struct mtd_info_user info;
+	//int iBackup_Partition=get_partition_numb("nvram");
+
+
+	if (iCleanBootFlag == NULL) {
+		NVBAK_LOG("[NVRAM]:the pointer of iCleanBootFlag is error\r\n");
+		return false;
+	}
+
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+
+
+	NVBAK_LOG("[NVRAM]:cMtdDevName:%s\n", cMtdDevName);
+
+
+
+
+	if (!NVM_GetDeviceInfo(cMtdDevName, &info)) {
+		NVBAK_LOG("[NVRAM]:FileOp_GetCleanBootFlag get device info error\r\n");
+		return false;
+	}
+
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVBAK_LOG("[NVRAM]:mtd open error\r\n");
+		return false;
+	}
+
+	iBlockSize = info.erasesize;
+	//iPartitionSize=info.size;
+	BinRegionBlockTotalNum = info.size / iBlockSize;
+	NvRamBlockNum = BinRegionBlockTotalNum - nvram_platform_DM_block;
+	tempBuffer = (char*)malloc(iBlockSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		return false;
+	}
+	iBlockNum = NvRamBlockNum;
+	NVBAK_LOG("[NVRAM]:iBlockNum:%d\n", iBlockNum);
+
+	tempBitmap1 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap1 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap1 Fail!!\r\n");
+		free(tempBuffer);
+		close(fd);
+		return false;
+	}
+
+	tempBitmap2 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap2 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap2 Fail!!\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		return false;
+	}
+
+	while (iBlockNum > 0) {
+		flag = 0;
+		iBlockNum--;
+		NVBAK_LOG("[NVRAM]:iBlockNum:%d\n", iBlockNum);
+		if (lseek(fd, iBlockNum * iBlockSize, SEEK_SET) < 0) {
+			NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+			close(fd);
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		iResult = read(fd, tempBuffer, iBlockSize);
+		NVBAK_LOG("[NVRAM]:read:%d\n", iResult);
+		if (iResult <= 0) {
+			NVBAK_LOG("[NVRAM]:read size error\r\n");
+			close(fd);
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		memcpy(tempBitmap1, tempBuffer, NvRamBlockNum * sizeof(char));
+		memcpy(tempBitmap2, tempBuffer + NvRamBlockNum * sizeof(char),
+		       NvRamBlockNum * sizeof(char));
+		for (i = 0; i < NvRamBlockNum; i++) {
+			if (tempBitmap1[i] != tempBitmap2[i]) {
+				NVBAK_LOG("[NVRAM]:1i:%d,1:%d,2:%d\n", i, tempBitmap1[i], tempBitmap2[i]);
+				flag = 1;
+				break;
+			}
+		}
+		if (flag)
+			continue;
+		memcpy(tempBitmap2, tempBuffer + 2 * NvRamBlockNum * sizeof(char),
+		       NvRamBlockNum * sizeof(char));
+		for (i = 0; i < NvRamBlockNum; i++) {
+			if (tempBitmap1[i] != tempBitmap2[i]) {
+				NVBAK_LOG("[NVRAM]:2i:%d,1:%d,2:%d\n", i, tempBitmap1[i], tempBitmap2[i]);
+				flag = 1;
+				break;
+			}
+		}
+		if (flag)
+			continue;
+		bSuccessFound = true;
+		break;
+	}
+	if (!bSuccessFound) {
+		NVBAK_LOG("[NVRAM]:can not find bad block bit map\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	#if 0
+	for (i = 0; i < iBlockNum; i++) {
+		NVBAK_LOG("[NVRAM_Bitmap]:Block%d,%d\n", i, tempBitmap1[i]);
+	}
+	#endif
+	for (i = 0; i < iBlockNum; i++) {
+		if (tempBitmap1[i] == 0) {
+			pos = i;
+			break;
+		}
+	}
+	if (i == iBlockNum) {
+		NVBAK_LOG("[NVRAM]:can not find map file\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+
+	iResult = lseek(fd, pos * iBlockSize + 2 * sizeof(unsigned int), SEEK_SET);
+	if (iResult != (int)(pos * iBlockSize + 2 * sizeof(unsigned int))) {
+		NVBAK_LOG("[NVRAM]:mtd lseek error\r\n");
+		free(tempBuffer);
+		close(fd);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+
+	iResult = read(fd, iCleanBootFlag, sizeof(unsigned int));
+	if (iResult != sizeof(unsigned int)) {
+		NVBAK_LOG("[NVRAM]:mtd read error\r\n");
+		free(tempBuffer);
+		close(fd);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	NVBAK_LOG("[NVRAM]:Clean Boot Flag:%x\n", *iCleanBootFlag);
+	NVBAK_LOG("[NVRAM]:mtd get CleanBoot Flag success\r\n");
+	close(fd);
+	free(tempBuffer);
+	free(tempBitmap1);
+	free(tempBitmap2);
+	return true;
+
+}
+
+bool FileOp_CmpBackupFileNum() {
+	unsigned int iSavedAPBackupFileNum = 0, iAPBackupFileNum = 0, open_error = 0;
+	unsigned short iSavedMDBackupFileNum = 0, iMDBackupFileNum = 0;
+	int iFileDesc, iResult, iFileDesc_Flag;
+	struct stat statbuf;
+	unsigned int iCompleteFlag;
+
+	NVBAK_LOG("[NVRAM]:FileOp_CmpBackupFileNum\n");
+	iFileDesc = open(g_pcNVM_BackFlag, O_RDWR);
+	if (iFileDesc == -1) {
+		NVBAK_LOG("[NVRAM]:can not open BackupFileNum Flag1,maybe this file doesn't exist\n");
+		//there is no important data to modify
+		++open_error;
+	} else {
+		if (!NVM_CheckBackFlag(iFileDesc)) {
+			NVBAK_LOG("[NVRAM]:Backflag is wrong\n");
+			goto recover;
+		}
+		if (-1 == lseek(iFileDesc, 0, SEEK_SET)) {
+			NVRAM_LOG("FileOp_CmpBackupFileNum:lseek BackupFileNum error\n");
+			close(iFileDesc);
+			return true;
+		}
+		iResult = read(iFileDesc, &iAPBackupFileNum, sizeof(unsigned int));
+		if (iResult != sizeof(unsigned int)) {
+			NVBAK_LOG("[NVRAM]:can not read BackupFileNum Flag:%d\n", iResult);
+			close(iFileDesc);
+			return true;
+		}
+		close(iFileDesc);
+	}
+
+	iFileDesc = open(g_pcNVM_ModomBackNum, O_RDWR);
+	if (iFileDesc == -1) {
+		NVBAK_LOG("[NVRAM]:can not open ModomBackNum Flag\n");
+		++open_error;
+	} else {
+		if (!NVM_CheckMDBackFlag(iFileDesc)) {
+			NVBAK_LOG("[NVRAM]:MDBackflag is wrong!\n");
+			unlink(g_pcNVM_ModomBackNum);
+			close(iFileDesc);
+			return true;
+		}
+		if (-1 == lseek(iFileDesc, 0, SEEK_SET)) {
+			NVRAM_LOG("FileOp_CmpBackupFileNum:lseek MDBackflag error\n");
+			close(iFileDesc);
+			return true;
+		}
+		iResult = read(iFileDesc, &iMDBackupFileNum, sizeof(unsigned short));
+		if (iResult != sizeof(unsigned short)) {
+			NVBAK_LOG("[NVRAM]:can not read ModomBackNum Flag:%d\n", iResult);
+			close(iFileDesc);
+			return true;
+		}
+		if (iMDBackupFileNum == 0)
+			++open_error;
+		close(iFileDesc);
+	}
+	if (open_error >= 2) {
+		NVBAK_LOG("[NVRAM]:BackupFileNum Flag and ModemBackupNum not exist!\n");
+		return true;
+	}
+
+	if (NVM_GetBackupFileNum(&iSavedAPBackupFileNum, &iSavedMDBackupFileNum)) {
+		if (iSavedAPBackupFileNum != iAPBackupFileNum
+		        || iSavedMDBackupFileNum != iMDBackupFileNum) {
+			iResult = stat(g_pcNVM_Flag, &statbuf);
+			if (-1 == iResult) {
+				NVBAK_LOG("[NVRAM]:Last Restore is failed, can not trigger auto backup!!!");
+				return true;
+			}
+			iFileDesc_Flag = open(g_pcNVM_Flag, O_RDONLY);
+			if (-1 == iFileDesc_Flag) {
+				NVBAK_LOG("[NVRAM]:Open Restore Flag file failed!!!");
+				return true;
+			}
+			iResult = read(iFileDesc_Flag, &iCompleteFlag, sizeof(unsigned int));
+			if (iResult != sizeof(unsigned int)) {
+				NVBAK_LOG("[NVRAM]:Read retore Flag file failed!!!");
+				close(iFileDesc_Flag);
+				return true;
+			}
+			if (0x12345678 != iCompleteFlag) {
+				NVBAK_LOG("[NVRAM]:Restore Flag is error!!!");
+				close(iFileDesc_Flag);
+				return true;
+			}
+			close(iFileDesc_Flag);
+
+			NVBAK_LOG("[NVRAM]:SavedAPBackupFileNum:%d,APBackupFileNum:%d\n",
+			          iSavedAPBackupFileNum, iAPBackupFileNum);
+			NVBAK_LOG("[NVRAM]:SavedMDBackupFileNum:%d,MDBackupFileNum:%d\n",
+			          iSavedMDBackupFileNum, iMDBackupFileNum);
+			NVBAK_LOG("[NVRAM]:Saved and Current NOT match!Back up!\n");
+			//close(iFileDesc);
+			return false;
+		}
+	} else {
+		NVBAK_LOG("[NVRAM]:Get SavedBackupFileNum Fail\n");
+		//close(iFileDesc);
+		return false;
+	}
+	NVBAK_LOG("[NVRAM]:SavedAPBackupFileNum:%d,APBackupFileNum:%d SUCCESS\n",
+	          iSavedAPBackupFileNum, iAPBackupFileNum);
+	NVBAK_LOG("[NVRAM]:SavedMDBackupFileNum:%d,MDBackupFileNum:%d SUCCESS\n",
+	          iSavedMDBackupFileNum, iMDBackupFileNum);
+	NVBAK_LOG("[NVRAM]:Saved and Current match!\n");
+	return true;
+recover:
+	if (NVM_GetBackupFileNum(&iSavedAPBackupFileNum, &iSavedMDBackupFileNum)) {
+		close(iFileDesc);
+		iFileDesc = open(g_pcNVM_BackFlag, O_TRUNC | O_RDWR);
+            if(INVALID_HANDLE_VALUE == iFileDesc)
+            {
+                NVBAK_LOG("[NVRAM]: cannot open backup flag\n");
+                return false;
+            }
+		if (iSavedAPBackupFileNum == 0xFFFFFFFF ) {
+			NVBAK_LOG("[NVRAM]:FileOp_CmpBackupFileNum:SavedAPBackupFileNum:%d\n",
+			          iSavedAPBackupFileNum);
+			unlink(g_pcNVM_BackFlag);
+			close(iFileDesc);
+			return true;
+		}
+		if (-1 == lseek(iFileDesc, 0, SEEK_SET)) {
+			NVRAM_LOG("FileOp_CmpBackupFileNum:lseek error\n");
+			unlink(g_pcNVM_BackFlag);
+			close(iFileDesc);
+			return true;
+		}
+		iResult = write(iFileDesc, &iSavedAPBackupFileNum, sizeof(unsigned int));
+		if (iResult != sizeof(unsigned int)) {
+			NVBAK_LOG("[NVRAM]:FileOp_CmpBackupFileNum:can not write BackupFileNum Flag:%d\n",
+			          iResult);
+			unlink(g_pcNVM_BackFlag);
+			close(iFileDesc);
+			return true;
+		}
+		if (!NVM_ComputeBackflagCheckSum(iFileDesc)) {
+			NVBAK_LOG("[NVRAM]:FileOp_CmpBackupFileNum:Backflag compute check sum failed(ignore)\r\n");
+			unlink(g_pcNVM_BackFlag);
+		}
+		close(iFileDesc);
+		return true;
+	} else {
+		NVBAK_LOG("[NVRAM]:FileOp_CmpBackupFileNum:Get SavedBackupFileNum Fail\n");
+		unlink(g_pcNVM_BackFlag);
+		close(iFileDesc);
+		return true;
+	}
+}
+
+bool FileOp_CreateBinRegionBadBlockBitMap() {
+	int fd, iResult, i;
+	char cMtdDevName[128] = {0};
+	int iWriteSize, iBlockSize, iPartitionSize, iBlockNum;
+	struct mtd_info_user info;
+	struct erase_info_user erase_info;
+
+
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	//int iBackup_Partition=get_partition_numb("nvram");
+	/*
+	if(TotalBlockNum==NULL)
+		{
+	   NVBAK_LOG("[NVRAM]:input pointer of blocknum is NULL\r\n");
+	   return false;
+	}
+	*/
+
+
+	NVBAK_LOG("[NVRAM]:FileOp_CreateBinRegionBadBlockBitMap:%s\n", cMtdDevName);
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+	NVBAK_LOG("[NVRAM]:FileOp_CreateBinRegionBadBlockBitMap:%s\n", cMtdDevName);
+
+	if (!NVM_GetDeviceInfo(cMtdDevName, &info)) {
+		NVBAK_LOG("[NVRAM]:FileOp_CreateBinRegionBadBlockBitMap get device info error\r\n");
+		return false;
+	}
+
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVBAK_LOG("[NVRAM]:mtd open error\r\n");
+		return false;
+	}
+
+	iWriteSize = info.writesize;
+	iBlockSize = info.erasesize;
+	iPartitionSize = info.size;
+
+	BinRegionBlockTotalNum = iPartitionSize / iBlockSize - nvram_platform_log_block
+	                         - nvram_platform_resv_block;
+	if (nvram_platform_layout_version == 0)
+		BinRegionBlockTotalNum = info.size / iBlockSize - nvram_platform_log_block -
+		                         nvram_platform_resv_block;
+	else if ( nvram_platform_layout_version == 1)
+		BinRegionBlockTotalNum = info.size / iBlockSize ;
+	else {
+		NVRAM_LOG("[NVRAM]: invalid nvram layout version %d\r\n",
+		          nvram_platform_layout_version);
+		close(fd);
+		return false;
+	}
+
+	NvRamBlockNum = BinRegionBlockTotalNum - nvram_platform_DM_block;
+	bBadBlockBitMap = NULL;
+	bBadBlockBitMap = (char*)malloc(NvRamBlockNum);
+	if (bBadBlockBitMap == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc bBadBlockBitMap error!!\r\n");
+		close(fd);
+		return false;
+	}
+	memset(bBadBlockBitMap, 0, (NvRamBlockNum * sizeof(char)));
+	iBlockNum = NvRamBlockNum;
+	NVBAK_LOG("[NVRAM]:mtd get info:iBlockSize:%d,iPartitionSize:%d,iBlockNum:%d\n",
+	          iBlockSize, iPartitionSize, iBlockNum);
+
+	for (i = 0; i < iBlockNum; i++) {
+		erase_info.start = i * iBlockSize;
+		erase_info.length = iBlockSize;
+		if ((!nvram_emmc_support()) && (!nvram_ufs_support())) {
+
+			if (!NVM_EraseDeviceBlock(cMtdDevName, erase_info)) {
+				NVBAK_LOG("[NVRAM]:mtd erase error,block id:%d\r\n", i);
+				bBadBlockBitMap[i] = 1;
+			} else {
+				bBadBlockBitMap[i] = 0;
+			}
+
+		}
+	}
+	close(fd);
+	#if 0
+	for (i = 0; i < iBlockNum; i++) {
+		NVBAK_LOG("[NVRAM_Bitmap]:Block%d,%d\n", i, bBadBlockBitMap[i]);
+	}
+	#endif
+	return true;
+
+}
+
+bool FileOp_CheckFileExist() {
+	int i, fd, iResult, pos;
+	unsigned int iWriteSize, iBlockSize, iPartitionSize;
+	struct stat st;
+	struct mtd_info_user info;
+	struct erase_info_user erase_info;
+	loff_t start_address;
+	char cMtdDevName[128] = {0};
+
+
+
+	if (nvram_platform_layout_version == 1) {
+		NVBAK_LOG("[NVRAM]:FileOp_CheckFileExist not support in this layout.\r\n");
+		return false;
+	}
+
+
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	memset(gFileExistMark, 0, sizeof(gFileExistMark));
+	gFileExistMark[0] = CHECK_FILE_EXIST_MARK;
+	if (g_Check_File_Count == 0)
+		return true;
+	for (i = 0; i < g_Check_File_Count; i++) {
+		if (stat(aCheckExistList[i].cCheckFileName, &st) == 0) {
+			gFileExistMark[aCheckExistList[i].iCheckFileIndex / 32 + 1] |= (0x1U <<
+			        (aCheckExistList[i].iCheckFileIndex - (aCheckExistList[i].iCheckFileIndex / 32)
+			         * 32));
+		} else {
+			NVBAK_LOG("FileOp_CheckFileExist stat %s fail: %s",
+			          aCheckExistList[i].cCheckFileName, (char*)strerror(errno));
+			gFileExistMark[aCheckExistList[i].iCheckFileIndex / 32 + 1] &= ~(0x1U <<
+			        (aCheckExistList[i].iCheckFileIndex - (aCheckExistList[i].iCheckFileIndex / 32)
+			         * 32));
+		}
+	}
+
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVBAK_LOG("[NVRAM]:FileOp_CheckFileExist open /dev/nvram error\r\n");
+		return false;
+	}
+
+
+
+
+	if (!NVM_GetDeviceInfo(cMtdDevName, &info)) {
+		NVBAK_LOG("[NVRAM]:FileOp_CheckFileExist get device info error\r\n");
+		close(fd);
+		return false;
+	}
+	start_address = info.size - ((loff_t)nvram_platform_log_block +
+	                             (loff_t)nvram_check_exist_block_offset ) * (loff_t)info.erasesize;
+	if ((!nvram_emmc_support()) && (!nvram_ufs_support())) {
+		erase_info.start = start_address ;
+		erase_info.length = info.erasesize;
+		if (!NVM_EraseDeviceBlock(cMtdDevName, erase_info)) {
+			NVRAM_LOG("[NVRAM]:FileOp_CheckFileExist erase  block fail!!!\n");
+			close(fd);
+			return false;
+		}
+	}
+	iResult = lseek(fd, start_address , SEEK_SET);
+	if (iResult  < 0) {
+		NVRAM_LOG("NVRAM]:FileOp_CheckFileExist seek log device fail!!!\n");
+		close(fd);
+		return false;
+	}
+	iResult = write(fd, gFileExistMark, CHECK_FILE_EXIST_NUMBER * 4);
+	if (iResult != (int)(CHECK_FILE_EXIST_NUMBER * 4)) {
+		NVBAK_LOG("[NVRAM]:FileOp_CheckFileExist write mark error\r\n");
+		close(fd);
+		return false;
+	}
+	close(fd);
+	NVBAK_LOG("FileOp_CheckFileExist exist .\n");
+	return true;
+}
+
+bool FileOp_CreatMdFileList(const char* SrcDirName)
+{
+	DIR *dir = NULL;
+    struct dirent *entry;
+	char filelist[MAX_NAMESIZE];
+	char filelistPathName[MAX_NAMESIZE];
+	int filelistfd;
+	int pos =0;
+	int iResult =0;
+    NVBAK_LOG("open dir %s !", SrcDirName);
+    if (SrcDirName) {
+		dir = opendir(SrcDirName);
+	}
+
+        if (dir == NULL)
+        {
+    		NVBAK_LOG("FileOp_CreatMdFileList %s ,this dir not exist!", SrcDirName);
+			return false;
+        }
+    sprintf(filelistPathName, "%s/FILELIST", SrcDirName);
+		filelistfd = open(filelistPathName, O_TRUNC|O_CREAT|O_WRONLY, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP);
+		if (filelistfd < 0){
+			NVBAK_LOG("[NVRAM]: open error. (errno=%d)", errno);
+			closedir(dir);
+			return false;
+		}
+        while(1)
+	{
+                entry = readdir(dir);
+                if (entry == NULL)
+                {
+                     break;
+                }
+                if (!strcmp(entry->d_name, ".")|| !strcmp(entry->d_name, ".."))
+                {
+                     continue;
+                }
+                if (snprintf(filelist, sizeof(filelist), "%s/%s", SrcDirName, entry->d_name) < 0) {
+                    NVBAK_LOG("[FileOp_CreatMdFileList sprintf() error\r\n");
+                    close(filelistfd);
+                    closedir(dir);
+                    return false;
+                }
+                NVBAK_LOG("FileOp_CreatMdFileList: (%s)\n", filelist);
+                iResult = write(filelistfd,entry->d_name,strlen(entry->d_name)+1);
+		if (iResult != (strlen(entry->d_name)+1)) {
+      			NVBAK_LOG("[FileOp_CreatMdFileList write error\r\n");
+      			close(filelistfd);
+				closedir(dir);
+      			return false;
+    		}
+		pos+=strlen(entry->d_name)+1;
+		iResult = lseek(filelistfd, pos , SEEK_SET);
+        if(iResult != (int)(pos))
+   	    {
+   	     NVBAK_LOG("FileOp_CreatMdFileList lseek error\r\n");
+         close(filelistfd);
+		 closedir(dir);
+	     return false;
+   	    }
+        }
+    if(-1 == chmod(filelistPathName, 0644))
+    NVRAM_LOG("chmod file failed: %s\n", (char*)strerror(errno));
+	close(filelistfd);
+	closedir(dir);
+	return true;
+}
+bool FileOp_BackupToBinRegion_All( ) {
+	bool bRet = true;
+	struct stat st;
+	char *tempBuffer = NULL;
+	char *BitMapBuffer = NULL;
+	struct mtd_info_user info;
+	struct erase_info_user erase_info;
+	unsigned int iMapFileSize, iDatFileSize, iWriteSize, iBlockSize, iPartitionSize;
+	unsigned int iMemSize;
+	unsigned int iBitmapFlag = BitmapFlag;
+	int iFileDesc_file, iFileDesc_map, fd, iResult, i, j, m, iWriteTime, pos = 0,
+	                                                                     iFreeBlockNum = 0;
+	int pos_old = 0;
+	int iReserveBlockCount = 0;
+	int iReservePos = 0;
+	//   int iBackup_Partition=get_partition_numb("nvram");
+
+	char cMtdDevName[128] = {0};
+	NVBAK_LOG("Enter BackupToBinRegion_all\n");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/CALIBRAT");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/BACKUP");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/INFO_FILE");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/NVD_CORE");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/NVD_DATA");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/NVD_IMEI");
+	//fix nvram layout issue , reassgined block numerbers by different platform
+	if (NVM_Init() < 0) {
+		NVBAK_LOG("FileOp_BackupToBinRegion_All--NVM_Init fail !!!");
+		return false;
+	}
+	/* GenerateFileVer again to avoid wrong FILE_VER backup to BIN region */
+	if (false == NVM_GenerateFileVer(true)) {
+		NVRAM_LOG("GenerateFileVer Fail!\n");
+		return false;
+	}
+
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+
+
+	//Add NVRAM history log
+	bRet = NVRAM_HISTORY_LOG(1, "Enter BackupToBinRegion_all");
+	if (bRet == false) {
+		NVBAK_LOG("NVRAM_HISTORY_LOG write error!!!");
+		return false;
+	}
+
+	if (nvram_misc_log_feature)
+		NVRAM_MISC_LOG(1, "Enter BackupToBinRegion_all");
+
+
+	bool bWorkForBinRegion = true;
+	int iFileMask[ALL];
+	//need init ifilemark value ,otherwize it cause backup fail on 6592+kk1.mp3+non lte project
+	memset(iFileMask, 0, (ALL * (sizeof(int))));
+	if (!nvram_md5_support() && !nvram_evdo_support()) {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+		iFileMask[10] = 1;
+		iFileMask[11] = 1;
+		iFileMask[12] = 1;
+		iFileMask[13] = 1;
+	} else if (!nvram_md5_support() && nvram_evdo_support()) {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+		iFileMask[10] = 1;
+		iFileMask[11] = 1;
+		iFileMask[12] = 1;
+	} else if (nvram_md5_support() && !nvram_evdo_support()) {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+		iFileMask[13] = 1;
+	} else {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+	}
+	if (!(nvram_ecci_c2k_support())) {
+		iFileMask[14] = 1;
+		iFileMask[15] = 1;
+		iFileMask[16] = 1;
+	}
+
+//   ret=FileOp_BackupData_All();
+	bRet = FileOp_BackupDataToFiles(iFileMask, bWorkForBinRegion);
+	if (bRet == false) {
+		NVBAK_LOG("[NVRAM]:Crete the map file and the data file fail\n");
+		return false;
+	}
+	if (stat(g_pcNVM_AllMap, &st) < 0) {
+		NVBAK_LOG("[NVRAM]:Error MapFile stat \n");
+		return false;
+	}
+	iMapFileSize = st.st_size;
+	if (stat(g_pcNVM_AllFile, &st) < 0) {
+		NVBAK_LOG("[NVRAM]:Error DatFile stat \n");
+		return false;
+	}
+	iDatFileSize = st.st_size;
+	NVBAK_LOG("[NVRAM]:info:iMapFileSize:%d,iDatFileSize:%d\n", iMapFileSize,
+	          iDatFileSize);
+
+	if (!FileOp_CreateBinRegionBadBlockBitMap()) {
+		NVBAK_LOG("[NVRAM]:Error create Badblock Bitmap \n");
+		return false;
+	}
+
+	if (nvram_check_exist_feature)
+		FileOp_CheckFileExist();
+
+	if (!NVM_GetDeviceInfo(cMtdDevName, &info)) {
+		NVBAK_LOG("[NVRAM]:FileOp_BackupToBinRegion_All get device info error\r\n");
+		free(bBadBlockBitMap);
+		return false;
+	}
+
+
+	//NVBAK_LOG("[NVRAM]:Backup_Partition:%d\n",iBackup_Partition);
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVBAK_LOG("[NVRAM]:mtd open error\r\n");
+		free(bBadBlockBitMap);
+		return false;
+	}
+
+
+
+
+	iWriteSize = info.writesize;
+	iBlockSize = info.erasesize;
+	iPartitionSize = info.size;
+	NVBAK_LOG("[NVRAM]:mtd get info:iBlockSize:%d,iPartitionSize:%d\n", iBlockSize,
+	          iPartitionSize);
+	//already erase nand in CreateBitmap
+	/*
+	erase_info.start=0;
+	erase_info.length=iPartitionSize;
+
+	result=ioctl(fd, MEMERASE, &erase_info);
+	if(result<0)
+	{
+	    NVBAK_LOG("[NVRAM]:mtd erase error\r\n");
+	    close(fd);
+	   return false;
+	}
+	 */
+
+	iFileDesc_file = open(g_pcNVM_AllFile , O_RDWR);
+	iFileDesc_map = open(g_pcNVM_AllMap, O_RDWR);
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_file) {
+		NVBAK_LOG("[NVRAM]: cannot open file data\n");
+		if (iFileDesc_map != INVALID_HANDLE_VALUE)
+			close(iFileDesc_map);
+		close(fd);
+		free(bBadBlockBitMap);
+		return false;
+	}
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_map) {
+		NVBAK_LOG("[NVRAM]: cannot open map data\n");
+		close(iFileDesc_file);
+		close(fd);
+		free(bBadBlockBitMap);
+		return false;
+	}
+
+	if ((iMapFileSize + 3 * sizeof(unsigned int)) % iWriteSize != 0)
+		iMemSize = (((iMapFileSize + 3 * sizeof(unsigned int)) / iWriteSize) + 1) *
+		           iWriteSize;//mapfile size, datfile size, cleanboot flag
+	else
+		iMemSize = iMapFileSize + 3 * sizeof(unsigned
+		                                     int); //mapfile size, datfile size, cleanboot flag
+	//iMemSize=iBlockSize;
+	if (iMemSize > 2 * iBlockSize) {
+		NVBAK_LOG("[NVRAM]:MapFile size is biger than a Block Size\r\n");
+		close(fd);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	tempBuffer = (char*)malloc(iMemSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	memset(tempBuffer, 0xFF, iMemSize);
+	memcpy(tempBuffer, &iMapFileSize, sizeof(unsigned int));
+	memcpy(tempBuffer + sizeof(unsigned int), &iDatFileSize, sizeof(unsigned int));
+
+	iResult = read(iFileDesc_map, tempBuffer + 3 * sizeof(unsigned int),
+	               iMapFileSize);
+	if (iResult != (int)iMapFileSize) {
+		NVBAK_LOG("[NVRAM]:map file read error\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	for (i = 0; i < NvRamBlockNum; i++) {
+		if (bBadBlockBitMap[i] == 0) {
+			pos = i;
+			break;
+		}
+	}
+	NVBAK_LOG("[NVRAM]:pos for mapfile:%d,i:%d\n", pos, i);
+	if (i == NvRamBlockNum) {
+		NVBAK_LOG("[NVRAM]:there are not enough good blocks for backup nvram map file\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	if(lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]:seek to %d error %s\n",pos * iBlockSize, (char*)strerror(errno));
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+
+	if (iMemSize > iBlockSize) {
+		iResult = write(fd, tempBuffer, iBlockSize);
+		NVBAK_LOG("[NVRAM Backup]:map file write one blocksize:%d\n", iResult);
+		if (iResult != (int)iBlockSize) {
+			NVBAK_LOG("[NVRAM]:map file write error\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+
+		// check if or not have enough block for write map file
+		for (m = pos + 1; m < NvRamBlockNum; m++) {
+			if (bBadBlockBitMap[m] == 0) {
+				pos = m;
+				break;
+			}
+		}
+		NVBAK_LOG("[NVRAM]:pos for mapfile:%d,i:%d\n", pos, m);
+		if ( m >= NvRamBlockNum) {
+			NVBAK_LOG("[NVRAM]:there are not enough good blocks for write nvram map file\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+
+		if(lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {// offset 128KB
+			NVBAK_LOG("[NVRAM]:seek to %d error %s\n",pos * iBlockSize, (char*)strerror(errno));
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+		iResult = write(fd, tempBuffer + iBlockSize,
+		                iMemSize - iBlockSize); // write the less
+		NVBAK_LOG("[NVRAM Backup]:map file write another blocksize:%d\n", iResult);
+		if (iResult != (int)(iMemSize - iBlockSize)) {
+			NVBAK_LOG("[NVRAM]:map file write error\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+		//check the iResult of write
+		pos_old = pos - 1;
+		if(lseek(fd, pos_old * iBlockSize, SEEK_SET) < 0) {
+			NVBAK_LOG("[NVRAM]:seek to %d error %s\n",pos_old * iBlockSize, (char*)strerror(errno));
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+		
+		i = 0;
+		iResult = read(fd, &i, sizeof(unsigned int));
+		if (iResult < 0 || (i != (int)iMapFileSize)) {
+			NVBAK_LOG("[NVRAM]:check map file write error:%d,iMapfileSize:%d\n", i,
+			          iMapFileSize);
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+	} else {
+		iResult = write(fd, tempBuffer, iMemSize);
+		NVBAK_LOG("[NVRAM Backup]:map file write :%d\n", iResult);
+		if (iResult != (int)iMemSize) {
+			NVBAK_LOG("[NVRAM]:map file write error\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+
+		//check the iResult of write
+		if(lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+			NVBAK_LOG("[NVRAM]:seek to %d error %s\n",pos * iBlockSize, (char*)strerror(errno));
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+		i = 0;
+		iResult = read(fd, &i, sizeof(unsigned int));
+		if (iResult < 0 || (i != (int)iMapFileSize)) {
+			NVBAK_LOG("[NVRAM]:check map file write error:%d,iMapfileSize:%d\n", i,
+			          iMapFileSize);
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+	}
+
+
+	for (j = (NvRamBlockNum - 1); j > pos; j--) {
+		if (bBadBlockBitMap[j] == 0) {
+			break;
+		}
+	}
+	NVBAK_LOG("[NVRAM]:pos for bitmap:%d\n", j);
+	if (j == pos) {
+		NVBAK_LOG("[NVRAM]:there is no space for bitmap in nand\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	//write the map file and bitmap file into the last available block of nand
+	if (iMemSize > iBlockSize) {
+		iReserveBlockCount = 2;
+		iReservePos = 1;
+	} else {
+		iReserveBlockCount = 1;
+		iReservePos = 0;
+	}
+
+	BitMapBuffer = (char*)malloc(iBlockSize * iReserveBlockCount);
+	if (BitMapBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc memory BitMapBuffer error\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	memset(BitMapBuffer, 0xFF, iBlockSize * iReserveBlockCount);
+	memcpy(BitMapBuffer, bBadBlockBitMap, NvRamBlockNum * sizeof(char));
+	memcpy(BitMapBuffer + NvRamBlockNum * sizeof(char), bBadBlockBitMap,
+	       NvRamBlockNum * sizeof(char));
+	memcpy(BitMapBuffer + 2 * NvRamBlockNum * sizeof(char), bBadBlockBitMap,
+	       NvRamBlockNum * sizeof(char));
+	memcpy(BitMapBuffer + 3 * NvRamBlockNum * sizeof(char), &iBitmapFlag,
+	       sizeof(unsigned int));
+    if((3 * NvRamBlockNum * sizeof(char) + sizeof(unsigned int)+ iMemSize)< iBlockSize * iReserveBlockCount) {
+	memcpy(BitMapBuffer + 3 * NvRamBlockNum * sizeof(char) + sizeof(unsigned int),
+	       tempBuffer, iMemSize);
+		} else {
+		NVBAK_LOG("[NVRAM]block too small,do not save Mapfile in last block \r\n");	
+		}
+	if(lseek(fd, (j - iReservePos)*iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]:seek to %d error %s\n",(j - iReservePos)*iBlockSize, (char*)strerror(errno));
+		close(fd);
+		free(tempBuffer);
+		free(BitMapBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	iResult = write(fd, BitMapBuffer, iBlockSize * iReserveBlockCount);
+	if (iResult != (int)iBlockSize * iReserveBlockCount) {
+		NVBAK_LOG("[NVRAM]:bimap file write error\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(BitMapBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	//check the iResult of write the bitmap
+	char *tempBitmap1 = NULL;
+	char *tempBitmap2 = NULL;
+	tempBitmap1 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap1 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap1 Fail!!\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(BitMapBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	tempBitmap2 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap2 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap2 Fail!!\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(BitMapBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		free(tempBitmap1);
+		return false;
+	}
+	if(lseek(fd, (j - iReservePos) * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]:seek to %d error %s\n",(j - iReservePos) * iBlockSize, (char*)strerror(errno));
+		close(fd);
+		free(tempBuffer);
+		free(BitMapBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	iResult = read(fd, tempBitmap1, NvRamBlockNum * sizeof(char));
+	if(iResult != NvRamBlockNum * sizeof(char)) {
+		NVBAK_LOG("[NVRAM]:read bimap1 error\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(BitMapBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	iResult = read(fd, tempBitmap2, NvRamBlockNum * sizeof(char));
+	if(iResult != NvRamBlockNum * sizeof(char)) {
+		NVBAK_LOG("[NVRAM]:read bimap2 error\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(BitMapBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	for (i = 0; i < NvRamBlockNum; i++) {
+		NVBAK_LOG("[NVRAM]:pos:%d,bitmap[i]:%d\n", j, tempBitmap1[i]);
+	}
+	for (i = 0; i < NvRamBlockNum; i++) {
+		if (tempBitmap1[i] != tempBitmap2[i]) {
+			NVBAK_LOG("[NVRAM]:check bimap file write error\r\n");
+			close(fd);
+			free(tempBuffer);
+			free(BitMapBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+	}
+	free(BitMapBuffer);
+	free(tempBuffer);
+	free(tempBitmap1);
+	free(tempBitmap2);
+	tempBuffer = NULL;
+
+	if (iDatFileSize % iBlockSize != 0)
+		iMemSize = ((iDatFileSize / iBlockSize) + 1) * iBlockSize;
+	else
+		iMemSize = iDatFileSize;
+	tempBuffer = (char*)malloc(iMemSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	memset(tempBuffer, 0xFF, iMemSize);
+	iResult = read(iFileDesc_file, tempBuffer, iDatFileSize);
+	if (iResult != (int)iDatFileSize) {
+		NVBAK_LOG("[NVRAM]:dat file read error\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	for (i = pos + 1; i < j; i++) {
+		if (bBadBlockBitMap[i] == 0) {
+			pos = i;
+			break;
+		}
+	}
+	if (i == j) {
+		NVBAK_LOG("[NVRAM]:there are not enough good blocks for backup nvram data file\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	} else {
+		for (; i < j; i++) {
+			if (bBadBlockBitMap[i] == 0)
+				iFreeBlockNum++;
+		}
+		if ((iFreeBlockNum * iBlockSize) < (iMemSize)) {
+			NVBAK_LOG("[NVRAM]:there are not enough good blocks for backup nvram data file\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+	}
+	NVBAK_LOG("[NVRAM]:pos for data file:%d\n", pos);
+	iWriteTime = iMemSize / iBlockSize;
+	int iAlreadyWrite = 0;
+	int bitmappos = j;
+	NVBAK_LOG("[NVRAM]:iWriteTime:%d\n", iWriteTime);
+	for (i = 0; i < iWriteTime; i++) {
+		iResult = lseek(fd, pos * iBlockSize, SEEK_SET);
+		if (iResult != (int)(pos * iBlockSize)) {
+			NVBAK_LOG("[NVRAM]:dat file lseek error\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+		iResult = write(fd, tempBuffer + i * iBlockSize, iBlockSize);
+		if (iResult != (int)iBlockSize) {
+			NVBAK_LOG("[NVRAM]:dat file write error\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+		iAlreadyWrite++;
+		if (iAlreadyWrite == iWriteTime)
+			break;
+		for (j = pos + 1; j < bitmappos; j++) {
+			if (bBadBlockBitMap[j] == 0) {
+				pos = j;
+				break;
+			}
+		}
+		if (j >= bitmappos) {
+			NVBAK_LOG("[NVRAM]:there are not enough good blocks for write nvram data file\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+	}
+	NVBAK_LOG("[NVRAM]:end:%d\n", pos);
+	free(bBadBlockBitMap);
+	close(fd);
+	free(tempBuffer);
+	close(iFileDesc_file);
+	close(iFileDesc_map);
+	NVBAK_LOG("setBackupFileNum\n");
+
+	if (-1 == chown(g_pcNVM_AllFile , -1, AID_SYSTEM)) {
+		NVBAK_LOG("chown for AllFile fail: %s", (char*)strerror(errno));
+		//  return false;
+	}
+
+	if (-1 == chown(g_pcNVM_AllMap, -1, AID_SYSTEM)) {
+		NVBAK_LOG("chown for AllMap fail: %s", (char*)strerror(errno));
+		//   return false;
+	}
+
+#ifdef MTK_NVRAM_AUTO_BACKUP
+	if (!Fileop_SetBackupFileNum(true)) {
+		NVBAK_LOG("SetBackupFileNum Fail\n");
+		return false;
+	}
+#endif
+
+
+	NVBAK_LOG("SetBackupFileNum Success\n");
+	NVBAK_LOG("Leave BackupToBinRegion_all\n");
+	bRet = NVRAM_HISTORY_LOG(1, "Leave BackupToBinRegion_all\n");
+	if (bRet == false) {
+		NVBAK_LOG("NVRAM_HISTORY_LOG write error!!!");
+		return false;
+	}
+
+	if (nvram_misc_log_feature)
+		NVRAM_MISC_LOG(1, "Leave BackupToBinRegion_all");
+
+	sync();
+
+
+	if (nvram_read_back_feature) {
+		NVBAK_LOG("[NVRAM]Enter Check Backup\n");
+		if (!FileOp_RestoreFromBinRegion_ToFile()) {
+			NVBAK_LOG("[NVRAM]: FileOp_RestoreFromBinRegion_ToFile fail\n");
+			return false;
+		}
+		if (!FileOp_CheckBackUpResult()) {
+			NVBAK_LOG("[NVRAM]: FileOp_CheckBackUpResult fail\n");
+			return false;
+		}
+		NVBAK_LOG("[NVRAM]Leave Check Backup\n");
+	}
+	return true;
+}
+//add by min
+bool FileOp_BackupToBinRegion_All_Exx(unsigned char *time_value)
+{
+	time_t before;
+	time_t after;
+	unsigned char *leave_time={'\0'};//can't get end time of FileOp_BackupToBinRegion_All_Ex,use NULL.
+	bool bRet = true;
+	struct stat st;
+	char *tempBuffer=NULL;
+   char *BitMapBuffer=NULL;
+   struct mtd_info_user info;
+   struct erase_info_user erase_info;
+   unsigned int iMapFileSize,iDatFileSize,iWriteSize,iBlockSize,iPartitionSize;
+   unsigned int iMemSize;
+   unsigned int iBitmapFlag=BitmapFlag;
+	int iFileDesc_file, iFileDesc_map, fd, iResult,i,j,m,iWriteTime,pos=0,iFreeBlockNum=0;
+	int pos_old = 0;
+	int iReserveBlockCount = 0;
+	int iReservePos = 0;
+	//   int iBackup_Partition=get_partition_numb("nvram");
+
+	char cMtdDevName[128] = {0};
+   NVBAK_LOG("Enter BackupToBinRegion_all\n");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/CALIBRAT");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/BACKUP");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/INFO_FILE");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/NVD_CORE");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/NVD_DATA");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/NVD_IMEI");
+
+    //fix nvram layout issue , reassgined block numerbers by different platform
+    if (NVM_Init() < 0)
+    {
+        NVBAK_LOG("FileOp_BackupToBinRegion_All--NVM_Init fail !!!");
+        return false;
+    }
+    /* GenerateFileVer again to avoid wrong FILE_VER backup to BIN region */
+    if (false == NVM_GenerateFileVer(true)) {
+        NVRAM_LOG("GenerateFileVer Fail!\n");
+        return false;
+    }
+
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+   	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+
+
+   //Add NVRAM history log
+   before=time(&before); //add for time
+   NVRAM_LOG("FileOp_BackupToBinRegion_All_Ex: before is  %s\n",ctime(&before));
+   //NVRAM_LOG("size is  %d\n",sizeof(time_t));
+   if(nvram_md1_support())
+   bRet = NVRAM_HISTORY_LOG_TIME(1, time_value, "Enter FileOp_BackupToBinRegion_All_Ex");
+   else
+   bRet = NVRAM_HISTORY_LOG(1, "Enter FileOp_BackupToBinRegion_All_Ex");
+   if (bRet == false)
+   {
+       NVBAK_LOG("NVRAM_HISTORY_LOG write error!!!");
+       return false;
+   }
+
+   if (nvram_misc_log_feature)
+   		NVRAM_MISC_LOG(1, "Enter BackupToBinRegion_all");
+
+
+   bool bWorkForBinRegion=true;
+   int iFileMask[ALL];
+   //need init ifilemark value ,otherwize it cause backup fail on 6592+kk1.mp3+non lte project
+   memset(iFileMask,0,(ALL*(sizeof(int))));
+   if(!nvram_md5_support() && !nvram_evdo_support())
+   {
+		iFileMask[5]=1;iFileMask[6]=1;iFileMask[10]=1;iFileMask[11]=1;iFileMask[12]=1;iFileMask[13]=1;
+   }
+   else
+   	   if(!nvram_md5_support() && nvram_evdo_support())
+   	   	{
+   	   		iFileMask[5]=1;iFileMask[6]=1;iFileMask[10]=1;iFileMask[11]=1;iFileMask[12]=1;
+   	   	}
+   else
+   	   if(nvram_md5_support() && !nvram_evdo_support())
+   	   	{
+   	   		iFileMask[5]=1;iFileMask[6]=1;iFileMask[13]=1;
+   	   	}
+   else
+   		{
+   			iFileMask[5]=1;iFileMask[6]=1;
+   		}
+   if(!(nvram_ecci_c2k_support()))
+   {
+		iFileMask[14]=1;iFileMask[15]=1;iFileMask[16]=1;
+   }
+
+//   ret=FileOp_BackupData_All();
+   bRet = FileOp_BackupDataToFiles(iFileMask,bWorkForBinRegion);
+   if(bRet == false)
+   	{
+   	   NVBAK_LOG("[NVRAM]:Crete the map file and the data file fail\n");
+	   return false;
+   	}
+   if(stat(g_pcNVM_AllMap,&st)<0)
+    {
+       NVBAK_LOG("[NVRAM]:Error MapFile stat \n");
+       return false;
+    }
+   iMapFileSize=st.st_size;
+   if(stat(g_pcNVM_AllFile,&st)<0)
+    {
+       NVBAK_LOG("[NVRAM]:Error DatFile stat \n");
+       return false;
+    }
+   iDatFileSize=st.st_size;
+   NVBAK_LOG("[NVRAM]:info:iMapFileSize:%d,iDatFileSize:%d\n",iMapFileSize,iDatFileSize);
+
+   if(!FileOp_CreateBinRegionBadBlockBitMap())
+   	{
+   	   NVBAK_LOG("[NVRAM]:Error create Badblock Bitmap \n");
+       return false;
+   	}
+
+   	if (nvram_check_exist_feature)
+   			FileOp_CheckFileExist();
+
+	if(!NVM_GetDeviceInfo(cMtdDevName,&info))
+	{
+       NVBAK_LOG("[NVRAM]:FileOp_BackupToBinRegion_All get device info error\r\n");
+	   free(bBadBlockBitMap);
+       return false;
+	}
+
+
+   //NVBAK_LOG("[NVRAM]:Backup_Partition:%d\n",iBackup_Partition);
+   fd=open(cMtdDevName,O_RDWR);
+   if(fd<0)
+	{
+	   NVBAK_LOG("[NVRAM]:mtd open error\r\n");
+	   free(bBadBlockBitMap);
+	   return false;
+	}
+
+
+
+
+   iWriteSize=info.writesize;
+   iBlockSize=info.erasesize;
+   iPartitionSize=info.size;
+   NVBAK_LOG("[NVRAM]:mtd get info:iBlockSize:%d,iPartitionSize:%d\n",iBlockSize,iPartitionSize);
+   //already erase nand in CreateBitmap
+   /*
+   erase_info.start=0;
+   erase_info.length=iPartitionSize;
+
+   result=ioctl(fd, MEMERASE, &erase_info);
+   if(result<0)
+   {
+       NVBAK_LOG("[NVRAM]:mtd erase error\r\n");
+       close(fd);
+	   return false;
+   }
+    */
+
+    iFileDesc_file = open(g_pcNVM_AllFile , O_RDWR);
+    iFileDesc_map = open(g_pcNVM_AllMap, O_RDWR);
+
+    if(INVALID_HANDLE_VALUE == iFileDesc_file)
+    {
+        NVBAK_LOG("[NVRAM]: cannot open file data\n");
+			if(iFileDesc_map != INVALID_HANDLE_VALUE)
+				close(iFileDesc_map);
+		close(fd);
+		free(bBadBlockBitMap);
+        return false;
+    }
+
+	if(INVALID_HANDLE_VALUE == iFileDesc_map)
+    {
+        NVBAK_LOG("[NVRAM]: cannot open map data\n");
+		close(iFileDesc_file);
+        close(fd);
+        free(bBadBlockBitMap);
+        return false;
+    }
+
+	if((iMapFileSize+3*sizeof(unsigned int)) % iWriteSize != 0)
+	iMemSize=(((iMapFileSize+3*sizeof(unsigned int))/iWriteSize)+1)*iWriteSize;//mapfile size, datfile size, cleanboot flag
+	else
+		iMemSize=iMapFileSize+3*sizeof(unsigned int);//mapfile size, datfile size, cleanboot flag
+	//iMemSize=iBlockSize;
+	if(iMemSize > 2 * iBlockSize)
+		{
+			NVBAK_LOG("[NVRAM]:MapFile size is biger than a Block Size\r\n");
+			close(fd);
+	  		close(iFileDesc_file);
+	  		close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+    tempBuffer=(char*)malloc(iMemSize);
+    if(tempBuffer==NULL)
+   	{
+   	  NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+      close(fd);
+	  close(iFileDesc_file);
+	  close(iFileDesc_map);
+	  free(bBadBlockBitMap);
+	  return false;
+   	}
+    memset(tempBuffer,0xFF,iMemSize);
+    memcpy(tempBuffer,&iMapFileSize,sizeof(unsigned int));
+    memcpy(tempBuffer+sizeof(unsigned int),&iDatFileSize,sizeof(unsigned int));
+
+    iResult = read(iFileDesc_map,tempBuffer+3*sizeof(unsigned int),iMapFileSize);
+    if(iResult != (int)iMapFileSize)
+   	{
+   	  NVBAK_LOG("[NVRAM]:map file read error\r\n");
+      close(fd);
+	  free(tempBuffer);
+	  close(iFileDesc_file);
+	  close(iFileDesc_map);
+	  free(bBadBlockBitMap);
+	  return false;
+   	}
+    for(i=0;i<NvRamBlockNum;i++)
+   	{
+   	  if(bBadBlockBitMap[i]==0)
+	  	{
+	  	  pos=i;
+		  break;
+   	  	}
+   	}
+	NVBAK_LOG("[NVRAM]:pos for mapfile:%d,i:%d\n",pos,i);
+    if(i==NvRamBlockNum)
+    {
+      NVBAK_LOG("[NVRAM]:there are not enough good blocks for backup nvram map file\r\n");
+      close(fd);
+	  free(tempBuffer);
+	  close(iFileDesc_file);
+	  close(iFileDesc_map);
+	  free(bBadBlockBitMap);
+	  return false;
+    }
+    if (lseek(fd,pos*iBlockSize,SEEK_SET) < 0){
+        NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+        close(fd);
+        free(tempBuffer);
+        close(iFileDesc_file);
+        close(iFileDesc_map);
+        free(bBadBlockBitMap);
+        return false;
+     }
+	
+     if (iMemSize > iBlockSize) {
+  		iResult = write(fd, tempBuffer, iBlockSize);
+  		NVBAK_LOG("[NVRAM Backup]:map file write one blocksize:%d\n",iResult);
+		if (iResult != (int)iBlockSize) {
+      			NVBAK_LOG("[NVRAM]:map file write error\r\n");
+      			close(fd);
+      			free(tempBuffer);
+      			close(iFileDesc_file);
+      			close(iFileDesc_map);
+      			free(bBadBlockBitMap);
+      			return false;
+    		}
+
+		// check if or not have enough block for write map file 
+		for (m = pos + 1; m < NvRamBlockNum; m++) {
+			if (bBadBlockBitMap[m] == 0) {
+		    	pos = m;
+		    	break;
+		  	}
+	    	}
+		NVBAK_LOG("[NVRAM]:pos for mapfile:%d,i:%d\n",pos,m); 
+	    	if ( m >= NvRamBlockNum) {
+	      		NVBAK_LOG("[NVRAM]:there are not enough good blocks for write nvram map file\r\n");
+	      		close(fd);
+	      		free(tempBuffer);
+	      		close(iFileDesc_file);
+	      		close(iFileDesc_map);
+	      		free(bBadBlockBitMap);
+	      		return false;
+	    	}
+		
+		if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+				NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+				close(fd);
+				free(tempBuffer);
+				close(iFileDesc_file);
+				close(iFileDesc_map);
+				free(bBadBlockBitMap);
+				return false;
+		}
+
+		iResult = write(fd, tempBuffer + iBlockSize, iMemSize - iBlockSize); // write the less
+		NVBAK_LOG("[NVRAM Backup]:map file write another blocksize:%d\n",iResult);
+		if (iResult != (int)(iMemSize - iBlockSize)) {
+      			NVBAK_LOG("[NVRAM]:map file write error\r\n");
+      			close(fd);
+      			free(tempBuffer);
+      			close(iFileDesc_file);
+      			close(iFileDesc_map);
+      			free(bBadBlockBitMap);
+      			return false;
+    		}
+		//check the iResult of write
+		pos_old = pos -1;
+		if (lseek(fd, pos_old * iBlockSize, SEEK_SET) < 0) {
+				NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+				close(fd);
+				free(tempBuffer);
+				close(iFileDesc_file);
+				close(iFileDesc_map);
+				free(bBadBlockBitMap);
+				return false;
+		}
+  		i = 0;
+  		iResult = read(fd, &i, sizeof(unsigned int));
+  		if(iResult < 0||(i != (int)iMapFileSize)) {
+      			NVBAK_LOG("[NVRAM]:check map file write error:%d,iMapfileSize:%d\n",i,iMapFileSize);
+      			close(fd);
+      			free(tempBuffer);
+      			close(iFileDesc_file);
+      			close(iFileDesc_map);
+      			free(bBadBlockBitMap);
+      			return false;
+    		}
+ 	} else {
+     iResult = write(fd,tempBuffer,iMemSize);
+     NVBAK_LOG("[NVRAM Backup]:map file write :%d\n",iResult);
+  		if(iResult != (int)iMemSize) {
+          NVBAK_LOG("[NVRAM]:map file write error\r\n");
+          close(fd);
+		  free(tempBuffer);
+	      close(iFileDesc_file);
+	      close(iFileDesc_map);
+		  free(bBadBlockBitMap);
+	      return false;
+     }
+
+	 //check the iResult of write
+	 lseek(fd,pos*iBlockSize,SEEK_SET);
+	 i=0;
+	 iResult = read(fd,&i,sizeof(unsigned int));
+  		if(iResult < 0 || (i != (int)iMapFileSize)) {
+	      NVBAK_LOG("[NVRAM]:check map file write error:%d,iMapfileSize:%d\n",i,iMapFileSize);
+          close(fd);
+		  free(tempBuffer);
+	      close(iFileDesc_file);
+	      close(iFileDesc_map);
+		  free(bBadBlockBitMap);
+	      return false;
+	 }
+  	}
+
+
+    for(j=(NvRamBlockNum-1);j>pos;j--)
+     {
+    	 if(bBadBlockBitMap[j]==0)
+    	 {
+			 break;
+    	 }
+     }
+	NVBAK_LOG("[NVRAM]:pos for bitmap:%d\n",j);
+	if(j==pos)
+	 {
+          NVBAK_LOG("[NVRAM]:there is no space for bitmap in nand\r\n");
+          close(fd);
+		  free(tempBuffer);
+	      close(iFileDesc_file);
+	      close(iFileDesc_map);
+		  free(bBadBlockBitMap);
+	      return false;
+     }
+	//write the map file and bitmap file into the last available block of nand
+	if (iMemSize > iBlockSize) {
+		iReserveBlockCount = 2;
+		iReservePos = 1;
+	} else {
+		iReserveBlockCount = 1;
+		iReservePos = 0;
+	}
+
+	BitMapBuffer=(char*)malloc(iBlockSize * iReserveBlockCount);
+	if(BitMapBuffer == NULL)
+		{
+          NVBAK_LOG("[NVRAM]:malloc memory BitMapBuffer error\r\n");
+          close(fd);
+		  free(tempBuffer);
+	      close(iFileDesc_file);
+	      close(iFileDesc_map);
+		  free(bBadBlockBitMap);
+	      return false;
+     }
+	memset(BitMapBuffer,0xFF,iBlockSize * iReserveBlockCount);
+	memcpy(BitMapBuffer,bBadBlockBitMap,NvRamBlockNum*sizeof(char));
+	memcpy(BitMapBuffer+NvRamBlockNum*sizeof(char),bBadBlockBitMap,NvRamBlockNum*sizeof(char));
+	memcpy(BitMapBuffer+2*NvRamBlockNum*sizeof(char),bBadBlockBitMap,NvRamBlockNum*sizeof(char));
+	memcpy(BitMapBuffer+3*NvRamBlockNum*sizeof(char),&iBitmapFlag,sizeof(unsigned int));
+    if((3 * NvRamBlockNum * sizeof(char) + sizeof(unsigned int)+ iMemSize)< iBlockSize * iReserveBlockCount) {	
+	memcpy(BitMapBuffer+3*NvRamBlockNum*sizeof(char)+sizeof(unsigned int),tempBuffer,iMemSize);
+    } else {
+        NVBAK_LOG("[NVRAM]block too small,do not save Mapfile in last block \r\n");
+    }
+	if (lseek(fd,(j-iReservePos)*iBlockSize,SEEK_SET) < 0) {
+		  NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		  close(fd);
+		  free(tempBuffer);
+		  free(BitMapBuffer);
+		  close(iFileDesc_file);
+		  close(iFileDesc_map);
+		  free(bBadBlockBitMap);
+		  return false;
+	}
+    iResult = write(fd,BitMapBuffer,iBlockSize * iReserveBlockCount);
+	if (iResult != (int)iBlockSize * iReserveBlockCount)
+	 {
+          NVBAK_LOG("[NVRAM]:bimap file write error\r\n");
+          close(fd);
+		  free(tempBuffer);
+		  free(BitMapBuffer);
+	      close(iFileDesc_file);
+	      close(iFileDesc_map);
+		  free(bBadBlockBitMap);
+	      return false;
+     }
+	//check the iResult of write the bitmap
+	char *tempBitmap1 = NULL;
+    char *tempBitmap2 = NULL;
+	tempBitmap1=(char *)malloc(NvRamBlockNum);
+   if(tempBitmap1 == NULL){
+   	  NVBAK_LOG("[NVRAM]:malloc tempBitmap1 Fail!!\r\n");
+	  close(fd);
+	  free(tempBuffer);
+	  free(BitMapBuffer);
+	  close(iFileDesc_file);
+	  close(iFileDesc_map);
+	  free(bBadBlockBitMap);
+	  return false;
+   	}
+   	tempBitmap2=(char *)malloc(NvRamBlockNum);
+	if(tempBitmap2 == NULL){
+   	  NVBAK_LOG("[NVRAM]:malloc tempBitmap2 Fail!!\r\n");
+	  close(fd);
+	  free(tempBuffer);
+	  free(BitMapBuffer);
+	  close(iFileDesc_file);
+	  close(iFileDesc_map);
+	  free(bBadBlockBitMap);
+	  free(tempBitmap1);
+	  return false;
+   	}
+	if (lseek(fd, (j - iReservePos) * iBlockSize, SEEK_SET) < 0){
+		  NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		  close(fd);
+		  free(tempBuffer);
+		  free(BitMapBuffer);
+		  close(iFileDesc_file);
+		  close(iFileDesc_map);
+		  free(bBadBlockBitMap);
+		  free(tempBitmap1);
+		  free(tempBitmap2);
+		  return false;
+	}
+    iResult = read(fd,tempBitmap1,NvRamBlockNum*sizeof(char));
+	iResult = read(fd,tempBitmap2,NvRamBlockNum*sizeof(char));
+	for(i=0;i<NvRamBlockNum;i++)
+	{
+	  NVBAK_LOG("[NVRAM]:pos:%d,bitmap[i]:%d\n",j,tempBitmap1[i]);
+	}
+	for(i=0;i<NvRamBlockNum;i++)
+	{
+	  if(tempBitmap1[i]!=tempBitmap2[i])
+	  	{
+	  	  NVBAK_LOG("[NVRAM]:check bimap file write error\r\n");
+          close(fd);
+		  free(tempBuffer);
+		  free(BitMapBuffer);
+	      close(iFileDesc_file);
+	      close(iFileDesc_map);
+		  free(bBadBlockBitMap);
+		  free(tempBitmap1);
+		  free(tempBitmap2);
+	      return false;
+	  	}
+	}
+	free(BitMapBuffer);
+    free(tempBuffer);
+	free(tempBitmap1);
+    free(tempBitmap2);
+    tempBuffer=NULL;
+
+	if(iDatFileSize%iBlockSize != 0)
+    iMemSize=((iDatFileSize/iBlockSize)+1)*iBlockSize;
+	else
+		iMemSize=iDatFileSize;
+    tempBuffer=(char*)malloc(iMemSize);
+    if(tempBuffer==NULL)
+   	{
+   	  NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+      close(fd);
+	  close(iFileDesc_file);
+	  close(iFileDesc_map);
+	  free(bBadBlockBitMap);
+	  return false;
+   	}
+   memset(tempBuffer,0xFF,iMemSize);
+   iResult = read(iFileDesc_file,tempBuffer,iDatFileSize);
+   if(iResult != (int)iDatFileSize)
+   	{
+   	  NVBAK_LOG("[NVRAM]:dat file read error\r\n");
+      close(fd);
+	  free(tempBuffer);
+	  close(iFileDesc_file);
+	  close(iFileDesc_map);
+	  free(bBadBlockBitMap);
+	  return false;
+   	}
+   for(i=pos+1;i<j;i++)
+   	{
+   	  if(bBadBlockBitMap[i]==0)
+	  	{
+	  	 pos=i;
+		 break;
+   	  	}
+   	}
+   if(i==j)
+   	{
+   	  NVBAK_LOG("[NVRAM]:there are not enough good blocks for backup nvram data file\r\n");
+      close(fd);
+	  free(tempBuffer);
+	  close(iFileDesc_file);
+	  close(iFileDesc_map);
+	  free(bBadBlockBitMap);
+	  return false;
+   	}
+   else
+   	{
+	  for(;i<j;i++)
+   	  	{
+   	  	  if(bBadBlockBitMap[i]==0)
+		  	iFreeBlockNum++;
+   	  	}
+	  if((iFreeBlockNum*iBlockSize)<(iMemSize))
+	  	{
+	  	  NVBAK_LOG("[NVRAM]:there are not enough good blocks for backup nvram data file\r\n");
+          close(fd);
+	      free(tempBuffer);
+	      close(iFileDesc_file);
+	      close(iFileDesc_map);
+		  free(bBadBlockBitMap);
+	      return false;
+	  	}
+   	}
+   NVBAK_LOG("[NVRAM]:pos for data file:%d\n",pos);
+   iWriteTime=iMemSize/iBlockSize;
+   int iAlreadyWrite=0;
+   int bitmappos=j;
+   NVBAK_LOG("[NVRAM]:iWriteTime:%d\n",iWriteTime);
+   for(i=0;i<iWriteTime;i++)
+   	{
+      iResult = lseek(fd,pos*iBlockSize,SEEK_SET);
+      if(iResult != (int)(pos*iBlockSize))
+   	    {
+   	     NVBAK_LOG("[NVRAM]:dat file lseek error\r\n");
+         close(fd);
+	     free(tempBuffer);
+	     close(iFileDesc_file);
+	     close(iFileDesc_map);
+		 free(bBadBlockBitMap);
+	     return false;
+   	    }
+       iResult = write(fd,tempBuffer+i*iBlockSize,iBlockSize);
+       if(iResult != (int)iBlockSize)
+	    {
+            NVBAK_LOG("[NVRAM]:dat file write error\r\n");
+            close(fd);
+		    free(tempBuffer);
+	        close(iFileDesc_file);
+	        close(iFileDesc_map);
+			free(bBadBlockBitMap);
+	        return false;
+        }
+	   iAlreadyWrite++;
+	   if(iAlreadyWrite==iWriteTime)
+	   	  break;
+	   for(j=pos+1;j<bitmappos;j++)
+	   	{
+	   	   if(bBadBlockBitMap[j]==0)
+		   	{
+		   	  pos=j;
+			  break;
+	   	   	}
+	   	}
+	   if(j>=bitmappos){
+	   		NVBAK_LOG("[NVRAM]:there are not enough good blocks for write nvram data file\r\n");
+			close(fd);
+      		free(tempBuffer);
+      		close(iFileDesc_file);
+      		close(iFileDesc_map);
+			free(bBadBlockBitMap);
+      		return false;
+	   	}
+   	}
+   NVBAK_LOG("[NVRAM]:end:%d\n",pos);
+   free(bBadBlockBitMap);
+   close(fd);
+   free(tempBuffer);
+   close(iFileDesc_file);
+   close(iFileDesc_map);
+   NVBAK_LOG("setBackupFileNum\n");
+
+   if(-1 == chown(g_pcNVM_AllFile , -1, AID_SYSTEM)) {
+       NVBAK_LOG("chown for AllFile fail: %s", (char*)strerror(errno));
+     //  return false;
+   }
+
+   if(-1 == chown(g_pcNVM_AllMap, -1, AID_SYSTEM)) {
+       NVBAK_LOG("chown for AllMap fail: %s", (char*)strerror(errno));
+    //   return false;
+   }
+
+#ifdef MTK_NVRAM_AUTO_BACKUP
+   if(!Fileop_SetBackupFileNum(true))
+   	{
+   		NVBAK_LOG("SetBackupFileNum Fail\n");
+   		return false;
+   	}
+#endif
+
+
+	NVBAK_LOG("SetBackupFileNum Success\n");
+	NVBAK_LOG("Leave BackupToBinRegion_all\n");
+	after = time(&after); //add for time
+	NVRAM_LOG("FileOp_BackupToBinRegion_All_Ex: after is  %s\n",ctime(&after));
+	if(nvram_md1_support())
+	bRet = NVRAM_HISTORY_LOG_TIME(1, leave_time, "Leave FileOp_BackupToBinRegion_All_Ex");
+    else
+	bRet = NVRAM_HISTORY_LOG(1, "Leave BackupToBinRegion_all\n");
+	if (bRet == false)
+	{
+		NVBAK_LOG("NVRAM_HISTORY_LOG write error!!!");
+		return false;
+	}
+
+	if (nvram_misc_log_feature)
+	 		NVRAM_MISC_LOG(1, "Leave BackupToBinRegion_all");
+
+  	sync();
+
+
+  if (nvram_read_back_feature)
+  {
+	   NVBAK_LOG("[NVRAM]Enter Check Backup\n");
+	   if(!FileOp_RestoreFromBinRegion_ToFile())
+	   {
+	        NVBAK_LOG("[NVRAM]: FileOp_RestoreFromBinRegion_ToFile fail\n");
+	        return false;
+	   }
+	   if(!FileOp_CheckBackUpResult())
+	   {
+	        NVBAK_LOG("[NVRAM]: FileOp_CheckBackUpResult fail\n");
+	        return false;
+	   }
+	   NVBAK_LOG("[NVRAM]Leave Check Backup\n");
+  }
+   return true;
+}
+bool FileOp_BackupToBinRegion_All_Ex(int value) {
+	bool bRet = true;
+	struct stat st;
+	char cMtdDevName[128] = {0};
+	char cCallerName[20] = {0};
+	char cLog[MAX_LOG_LENGTH] = {0};
+	char *tempBuffer = NULL;
+	char *BitMapBuffer = NULL;
+	bool bMarkCaller = false;
+
+	struct mtd_info_user info;
+	struct erase_info_user erase_info;
+	unsigned int iMapFileSize, iDatFileSize, iWriteSize, iBlockSize, iPartitionSize;
+	unsigned int iMemSize;
+	unsigned int iBitmapFlag = BitmapFlag;
+	int iFileDesc_file, iFileDesc_map, fd, iResult, i, j, iWriteTime, pos = 0,
+	                                                                  iFreeBlockNum = 0;
+
+
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	for (i = 0; i < g_RecordCaller_Count; i++) {
+
+		if (value == aRecordCallerList[i].iRecordCallerIndex) {
+			memcpy(cCallerName, aRecordCallerList[i].cRecordCallerName, 10);
+			bMarkCaller = true;
+			break;
+		}
+	}
+
+
+//   int iBackup_Partition=get_partition_numb("nvram");
+
+
+
+	NVBAK_LOG("Enter BackupToBinRegion_all_ex\n");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/CALIBRAT");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/BACKUP");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/INFO_FILE");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/NVD_CORE");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/NVD_DATA");
+   FileOp_CreatMdFileList("/mnt/vendor/nvdata/md/NVRAM/NVD_IMEI");
+	//fix nvram layout issue , reassgined block numerbers by different platform
+	if (NVM_Init() < 0) {
+		NVBAK_LOG("BackupToBinRegion_all_ex--NVM_Init fail !!!\n");
+		return false;
+	}
+
+	//Add NVRAM history log
+	snprintf(cLog, sizeof(cLog),"%s", "Enter BackupToBinRegion_all");
+	if (bMarkCaller) {
+		//strcat(cLog, "_");
+		//strcat(cLog, cCallerName);
+        strncat(cLog,"_",strlen("_"));
+		strncat(cLog,cCallerName,strlen(cCallerName));
+	}
+	NVBAK_LOG("cLog ==%s,bMarkCaller==%d\n", cLog, bMarkCaller);
+	bRet = NVRAM_HISTORY_LOG(1, cLog);
+	if (bRet == false) {
+		NVBAK_LOG("NVRAM_HISTORY_LOG write error!!!");
+		return false;
+	}
+
+	if (nvram_misc_log_feature)
+		NVRAM_MISC_LOG(1, cLog);
+
+	bool bWorkForBinRegion = true;
+	int iFileMask[ALL];
+	//need init ifilemark value ,otherwize it cause backup fail on 6592+kk1.mp3+non lte project
+	memset(iFileMask, 0, (ALL * (sizeof(int))));
+	if (!nvram_md5_support() && !nvram_evdo_support()) {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+		iFileMask[10] = 1;
+		iFileMask[11] = 1;
+		iFileMask[12] = 1;
+		iFileMask[13] = 1;
+	} else if (!nvram_md5_support() && nvram_evdo_support()) {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+		iFileMask[10] = 1;
+		iFileMask[11] = 1;
+		iFileMask[12] = 1;
+	} else if (nvram_md5_support() && !nvram_evdo_support()) {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+		iFileMask[13] = 1;
+	} else {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+	}
+
+	if (!nvram_ecci_c2k_support()) {
+		iFileMask[14] = 1;
+		iFileMask[15] = 1;
+		iFileMask[16] = 1;
+	}
+
+//   ret=FileOp_BackupData_All();
+	bRet = FileOp_BackupDataToFiles(iFileMask, bWorkForBinRegion);
+	if (bRet == false) {
+		NVBAK_LOG("[NVRAM]:Crete the map file and the data file fail\n");
+		return false;
+	}
+	if (stat(g_pcNVM_AllMap, &st) < 0) {
+		NVBAK_LOG("[NVRAM]:Error MapFile stat \n");
+		return false;
+	}
+	iMapFileSize = st.st_size;
+	if (stat(g_pcNVM_AllFile, &st) < 0) {
+		NVBAK_LOG("[NVRAM]:Error DatFile stat \n");
+		return false;
+	}
+	iDatFileSize = st.st_size;
+	NVBAK_LOG("[NVRAM]:info:iMapFileSize:%d,iDatFileSize:%d\n", iMapFileSize,
+	          iDatFileSize);
+
+	if (!FileOp_CreateBinRegionBadBlockBitMap()) {
+		NVBAK_LOG("[NVRAM]:Error create Badblock Bitmap \n");
+		return false;
+	}
+	FileOp_CheckFileExist();
+
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+
+	//NVBAK_LOG("[NVRAM]:Backup_Partition:%d\n",iBackup_Partition);
+	if (!NVM_GetDeviceInfo(cMtdDevName, &info)) {
+		NVBAK_LOG("[NVRAM]:FileOp_BackupToBinRegion_All_Ex get device info error\r\n");
+		free(bBadBlockBitMap);
+		return false;
+	}
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVBAK_LOG("[NVRAM]:mtd open error\r\n");
+		free(bBadBlockBitMap);
+		return false;
+	}
+
+
+
+	iWriteSize = info.writesize;
+	iBlockSize = info.erasesize;
+	iPartitionSize = info.size;
+	NVBAK_LOG("[NVRAM]:mtd get info:iBlockSize:%d,iPartitionSize:%d\n", iBlockSize,
+	          iPartitionSize);
+	//already erase nand in CreateBitmap
+	/*
+	erase_info.start=0;
+	erase_info.length=iPartitionSize;
+
+	result=ioctl(fd, MEMERASE, &erase_info);
+	if(result<0)
+	{
+	    NVBAK_LOG("[NVRAM]:mtd erase error\r\n");
+	    close(fd);
+	   return false;
+	}
+	 */
+
+	iFileDesc_file = open(g_pcNVM_AllFile , O_RDWR);
+	iFileDesc_map = open(g_pcNVM_AllMap, O_RDWR);
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_file) {
+		NVBAK_LOG("[NVRAM]: cannot open file data\n");
+		if (iFileDesc_map != INVALID_HANDLE_VALUE)
+			close(iFileDesc_map);
+		close(fd);
+		free(bBadBlockBitMap);
+		return false;
+	}
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_map) {
+		NVBAK_LOG("[NVRAM]: cannot open map data\n");
+		close(iFileDesc_file);
+		close(fd);
+		free(bBadBlockBitMap);
+		return false;
+	}
+
+	if ((iMapFileSize + 3 * sizeof(unsigned int)) % iWriteSize != 0)
+		iMemSize = (((iMapFileSize + 3 * sizeof(unsigned int)) / iWriteSize) + 1) *
+		           iWriteSize;//mapfile size, datfile size, cleanboot flag
+	else
+		iMemSize = iMapFileSize + 3 * sizeof(unsigned
+		                                     int); //mapfile size, datfile size, cleanboot flag
+	//iMemSize=iBlockSize;
+	if (iMemSize > iBlockSize) {
+		NVBAK_LOG("[NVRAM]:MapFile size is biger than a Block Size\r\n");
+		close(fd);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	tempBuffer = (char*)malloc(iMemSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	memset(tempBuffer, 0xFF, iMemSize);
+	memcpy(tempBuffer, &iMapFileSize, sizeof(unsigned int));
+	memcpy(tempBuffer + sizeof(unsigned int), &iDatFileSize, sizeof(unsigned int));
+
+	iResult = read(iFileDesc_map, tempBuffer + 3 * sizeof(unsigned int),
+	               iMapFileSize);
+	if (iResult != (int)iMapFileSize) {
+		NVBAK_LOG("[NVRAM]:map file read error\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	for (i = 0; i < NvRamBlockNum; i++) {
+		if (bBadBlockBitMap[i] == 0) {
+			pos = i;
+			break;
+		}
+	}
+	NVBAK_LOG("[NVRAM]:pos for mapfile:%d,i:%d\n", pos, i);
+	if (i == NvRamBlockNum) {
+		NVBAK_LOG("[NVRAM]:there are not enough good blocks for backup nvram map file\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	iResult = write(fd, tempBuffer, iMemSize);
+	NVBAK_LOG("[NVRAM Backup]:map file write :%d\n", iResult);
+	if (iResult != (int)iMemSize) {
+		NVBAK_LOG("[NVRAM]:map file write error\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	//check the result of write
+	if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0){
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	i = 0;
+	iResult = read(fd, &i, sizeof(unsigned int));
+	if (iResult < 0 || (i != (int)iMapFileSize)) {
+		NVBAK_LOG("[NVRAM]:check map file write error:%d,iMapfileSize:%d\n", i,
+		          iMapFileSize);
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+
+	for (j = (NvRamBlockNum - 1); j > pos; j--) {
+		if (bBadBlockBitMap[j] == 0) {
+			break;
+		}
+	}
+	NVBAK_LOG("[NVRAM]:pos for bitmap:%d\n", j);
+	if (j == pos) {
+		NVBAK_LOG("[NVRAM]:there is no space for bitmap in nand\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	//write the map file and bitmap file into the last available block of nand
+	BitMapBuffer = (char*)malloc(iBlockSize);
+	if (BitMapBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc memory BitMapBuffer error\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	memset(BitMapBuffer, 0xFF, iBlockSize);
+	memcpy(BitMapBuffer, bBadBlockBitMap, NvRamBlockNum * sizeof(char));
+	memcpy(BitMapBuffer + NvRamBlockNum * sizeof(char), bBadBlockBitMap,
+	       NvRamBlockNum * sizeof(char));
+	memcpy(BitMapBuffer + 2 * NvRamBlockNum * sizeof(char), bBadBlockBitMap,
+	       NvRamBlockNum * sizeof(char));
+	memcpy(BitMapBuffer + 3 * NvRamBlockNum * sizeof(char), &iBitmapFlag,
+	       sizeof(unsigned int));
+    if((3 * NvRamBlockNum * sizeof(char) + sizeof(unsigned int)+ iMemSize)< iBlockSize) {	
+	memcpy(BitMapBuffer + 3 * NvRamBlockNum * sizeof(char) + sizeof(unsigned int),
+	       tempBuffer, iMemSize);
+    } else {
+        NVBAK_LOG("[NVRAM]block too small,do not save Mapfile in last block \r\n");
+    }
+	if (lseek(fd, j * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		free(BitMapBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	iResult = write(fd, BitMapBuffer, iBlockSize);
+	if (iResult != (int)iBlockSize) {
+		NVBAK_LOG("[NVRAM]:bimap file write error\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(BitMapBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	//check the result of write the bitmap
+	char *tempBitmap1 = NULL;
+	char *tempBitmap2 = NULL;
+	tempBitmap1 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap1 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap1 Fail!!\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(BitMapBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	tempBitmap2 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap2 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap2 Fail!!\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(BitMapBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		free(tempBitmap1);
+		return false;
+	}
+	if (lseek(fd, j * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		free(BitMapBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	iResult = read(fd, tempBitmap1, NvRamBlockNum * sizeof(char));
+	iResult = read(fd, tempBitmap2, NvRamBlockNum * sizeof(char));
+	for (i = 0; i < NvRamBlockNum; i++) {
+		NVBAK_LOG("[NVRAM]:pos:%d,bitmap[i]:%d\n", j, tempBitmap1[i]);
+	}
+	for (i = 0; i < NvRamBlockNum; i++) {
+		if (tempBitmap1[i] != tempBitmap2[i]) {
+			NVBAK_LOG("[NVRAM]:check bimap file write error\r\n");
+			close(fd);
+			free(tempBuffer);
+			free(BitMapBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+	}
+	free(BitMapBuffer);
+	free(tempBuffer);
+	free(tempBitmap1);
+	free(tempBitmap2);
+	tempBuffer = NULL;
+
+	if (iDatFileSize % iBlockSize != 0)
+		iMemSize = ((iDatFileSize / iBlockSize) + 1) * iBlockSize;
+	else
+		iMemSize = iDatFileSize;
+	tempBuffer = (char*)malloc(iMemSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	memset(tempBuffer, 0xFF, iMemSize);
+	iResult = read(iFileDesc_file, tempBuffer, iDatFileSize);
+	if (iResult != (int)iDatFileSize) {
+		NVBAK_LOG("[NVRAM]:dat file read error\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	}
+	for (i = pos + 1; i < j; i++) {
+		if (bBadBlockBitMap[i] == 0) {
+			pos = i;
+			break;
+		}
+	}
+	if (i == j) {
+		NVBAK_LOG("[NVRAM]:there are not enough good blocks for backup nvram data file\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(bBadBlockBitMap);
+		return false;
+	} else {
+		for (; i < j; i++) {
+			if (bBadBlockBitMap[i] == 0)
+				iFreeBlockNum++;
+		}
+		if ((iFreeBlockNum * iBlockSize) < (iMemSize)) {
+			NVBAK_LOG("[NVRAM]:there are not enough good blocks for backup nvram data file\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+	}
+	NVBAK_LOG("[NVRAM]:pos for data file:%d\n", pos);
+	iWriteTime = iMemSize / iBlockSize;
+	int iAlreadyWrite = 0;
+	int bitmappos = j;
+	NVBAK_LOG("[NVRAM]:iWriteTime:%d\n", iWriteTime);
+	for (i = 0; i < iWriteTime; i++) {
+		iResult = lseek(fd, pos * iBlockSize, SEEK_SET);
+		if (iResult != (int)(pos * iBlockSize)) {
+			NVBAK_LOG("[NVRAM]:dat file lseek error\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+		iResult = write(fd, tempBuffer + i * iBlockSize, iBlockSize);
+		if (iResult != (int)iBlockSize) {
+			NVBAK_LOG("[NVRAM]:dat file write error\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+		iAlreadyWrite++;
+		if (iAlreadyWrite == iWriteTime)
+			break;
+		for (j = pos + 1; j < bitmappos; j++) {
+			if (bBadBlockBitMap[j] == 0) {
+				pos = j;
+				break;
+			}
+		}
+		if (j >= bitmappos) {
+			NVBAK_LOG("[NVRAM]:there are not enough good blocks for write nvram data file\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(bBadBlockBitMap);
+			return false;
+		}
+	}
+	NVBAK_LOG("[NVRAM]:end:%d\n", pos);
+	free(bBadBlockBitMap);
+	close(fd);
+	free(tempBuffer);
+	close(iFileDesc_file);
+	close(iFileDesc_map);
+	NVBAK_LOG("setBackupFileNum\n");
+
+	if (-1 == chown(g_pcNVM_AllFile , -1, AID_SYSTEM)) {
+		NVBAK_LOG("chown for AllFile fail: %s", (char*)strerror(errno));
+		//  return false;
+	}
+
+	if (-1 == chown(g_pcNVM_AllMap, -1, AID_SYSTEM)) {
+		NVBAK_LOG("chown for AllMap fail: %s", (char*)strerror(errno));
+		//   return false;
+	}
+
+#ifdef MTK_NVRAM_AUTO_BACKUP
+	if (!Fileop_SetBackupFileNum(true)) {
+		NVBAK_LOG("SetBackupFileNum Fail\n");
+		return false;
+	}
+#endif
+
+
+	NVBAK_LOG("SetBackupFileNum Success\n");
+	NVBAK_LOG("Leave BackupToBinRegion_all_ex\n");
+
+	snprintf(cLog, sizeof(cLog),"%s", "Leave BackupToBinRegion_all");
+	if (bMarkCaller) {
+		strncat (cLog,"_",strlen("_"));
+		strncat (cLog,cCallerName,strlen(cCallerName));
+	}
+	bRet = NVRAM_HISTORY_LOG(1, cLog);
+	if (bRet == false) {
+		NVBAK_LOG("NVRAM_HISTORY_LOG write error!!!");
+		return false;
+	}
+
+	if (nvram_misc_log_feature)
+		NVRAM_MISC_LOG(1, cLog);
+
+	sync();
+
+
+	if (nvram_read_back_feature) {
+		NVBAK_LOG("[NVRAM]Enter Check Backup\n");
+		if (!FileOp_RestoreFromBinRegion_ToFile()) {
+			NVBAK_LOG("[NVRAM]: FileOp_RestoreFromBinRegion_ToFile fail\n");
+			return false;
+		}
+		if (!FileOp_CheckBackUpResult()) {
+			NVBAK_LOG("[NVRAM]: FileOp_CheckBackUpResult fail\n");
+			return false;
+		}
+		NVBAK_LOG("[NVRAM]Leave Check Backup\n");
+	}
+	return true;
+}
+
+
+bool FileOp_RestoreFromBinRegion(bool bCleanBoot) {
+	int iFileDesc_file, iFileDesc_map, fd, iResult, iBlockNum, iFileDesc_backupflag;
+	unsigned int iMapFileSize, iDatFileSize, iBlockSize, iPartitionSize,
+	         iAPBackupFileNum, iWriteSize;
+	unsigned short iMDBackupFileNum;
+	bool bRet = true;
+	struct stat st;
+	char cMtdDevName[128] = {0};
+	char *tempBuffer = NULL;
+	char *tempBitmap1 = NULL;
+	char *tempBitmap2 = NULL;
+	int i, j, pos = 0, flag = 0;
+	bool bSuccessFound = false;
+	struct mtd_info_user info;
+  #if 1
+	int linkret =0 ;
+  #endif
+	//   int iBackup_Partition=get_partition_numb("nvram");
+
+	NVBAK_LOG("[NVRAM]:FileOp_RestoreFromBinRegion\r\n");
+	if (NVM_Init() < 0) {
+		NVBAK_LOG("[NVRAM]:FileOp_RestoreFromBinRegion--NVM_Init fail !!!\n");
+		return false;
+	}
+
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+
+	NVBAK_LOG("[NVRAM]:cMtdDevName:%s\n", cMtdDevName);
+
+
+	if (!NVM_GetDeviceInfo(cMtdDevName, &info)) {
+		NVBAK_LOG("[NVRAM]:FileOp_CreateBinRegionBadBlockBitMap get device info error\r\n");
+		return false;
+	}
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVBAK_LOG("[NVRAM]:mtd open error\r\n");
+		return false;
+	}
+
+	iBlockSize = info.erasesize;
+	iPartitionSize = info.size;
+	iWriteSize = info.writesize;
+#if 1
+	NVBAK_LOG("libfile nvram_platform_log_block =%d,nvram_platform_resv_block=%d,nvram_platform_DM_block=%d nvram_platform_layout_version##=%d\n",
+	          nvram_platform_log_block, nvram_platform_resv_block, nvram_platform_DM_block,
+	          nvram_platform_layout_version);
+	if (nvram_platform_layout_version == 0)
+		BinRegionBlockTotalNum = info.size / iBlockSize - nvram_platform_log_block -
+		                         nvram_platform_resv_block;
+	else if ( nvram_platform_layout_version == 1)
+		BinRegionBlockTotalNum = info.size / iBlockSize;
+	else {
+		NVRAM_LOG("[NVRAM]: invalid nvram layout version %d\r\n",
+		          nvram_platform_layout_version);
+		close(fd);
+		return false;
+	}
+	NvRamBlockNum = BinRegionBlockTotalNum -  nvram_platform_DM_block;
+	NVRAM_LOG("[NVRAM]: BinRegionBlockTotalNum %d , NvRamBlockNum=%d\r\n",
+	          BinRegionBlockTotalNum, NvRamBlockNum);
+
+#else
+	NVBAK_LOG("libfile nvram_platform_log_block =%d,nvram_platform_resv_block=%d,nvram_platform_DM_block=%d\n",
+	          nvram_platform_log_block, nvram_platform_resv_block, nvram_platform_DM_block);
+	BinRegionBlockTotalNum = info.size / iBlockSize - nvram_platform_log_block -
+	                         nvram_platform_resv_block;
+	NvRamBlockNum = BinRegionBlockTotalNum -  nvram_platform_DM_block;
+#endif
+
+	tempBuffer = (char*)malloc(iBlockSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		return false;
+	}
+	if(lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]:seek to %d error %s\n",pos * iBlockSize, (char*)strerror(errno));
+		free(tempBuffer);
+		close(fd);
+		return false;
+	} else {
+		NVBAK_LOG("[NVRAM]:seek to %d Success\n",pos * iBlockSize);
+	}
+	
+	iResult = read(fd, tempBuffer, iBlockSize);
+	if(iResult != iBlockSize) {
+		NVBAK_LOG("[NVRAM]:read error %s\n",(char*)strerror(errno));
+		free(tempBuffer);
+		close(fd);
+		return false;
+	}
+
+	iMapFileSize = *((unsigned int*)tempBuffer); // get the mapfile
+	iDatFileSize = *((unsigned int*)(tempBuffer + 4));
+	NVBAK_LOG("[NVRAM]: map file:%d,dat file:%d\n", iMapFileSize, iDatFileSize);
+	if(iMapFileSize == 0 || iMapFileSize == 0xFFFFFFFF) {
+		NVBAK_LOG("[NVRAM]:map file size error\r\n");
+		free(tempBuffer);
+		close(fd);
+		return false;
+	}
+	if(iDatFileSize == 0 || iDatFileSize == 0xFFFFFFFF) {
+		NVBAK_LOG("[NVRAM]:data file size error\r\n");
+		free(tempBuffer);
+		close(fd);
+		return false;
+	}
+	unsigned int iMemSize;
+	int iReservePos = 0;
+	int iReserveBlockCount = 0;
+	if ((iMapFileSize + 3 * sizeof(unsigned int)) % iWriteSize != 0)
+		iMemSize = (((iMapFileSize + 3 * sizeof(unsigned int)) / iWriteSize) + 1) *
+		           iWriteSize;
+	else
+		iMemSize = iMapFileSize + 3 * sizeof(unsigned
+		                                     int); //mapfile size, datfile size, cleanboot fla
+	NVBAK_LOG("[NVRAM Restore - heli]:map file size:%d\n", iMemSize);
+
+	if ( iMemSize > iBlockSize ) { // > 180KB
+		iReservePos = 1;
+		iReserveBlockCount = 2;
+	} else { // < 128KB
+		iReservePos = 0;
+		iReserveBlockCount = 1;
+	}
+
+	free(tempBuffer);
+	tempBuffer = NULL;
+	tempBuffer = (char*)malloc(iBlockSize *
+	                           iReserveBlockCount); // for 128KB and 256KB
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		return false;
+	}
+
+	iBlockNum = NvRamBlockNum;
+	NVBAK_LOG("[NVRAM]:iBlockNum:%d\n", iBlockNum);
+
+	tempBitmap1 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap1 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap1 Fail!!\r\n");
+		free(tempBuffer);
+		close(fd);
+		return false;
+	}
+	tempBitmap2 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap2 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap2 Fail!!\r\n");
+		free(tempBuffer);
+		close(fd);
+		free(tempBitmap1);
+		return false;
+	}
+
+	int iBitmapFlag = 0;
+	while (iBlockNum > 0) {
+		flag = 0;
+		iBlockNum--;
+		NVBAK_LOG("[NVRAM]:iBlockNum:%d\n", iBlockNum);
+		if(lseek(fd, (iBlockNum - iReservePos)*iBlockSize, SEEK_SET) < 0) {
+			NVBAK_LOG("[NVRAM]:seek to %d error %s\n",(iBlockNum - iReservePos)*iBlockSize, (char*)strerror(errno));
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			close(fd);
+			return false;
+	    }
+		iResult = read(fd, tempBuffer, iBlockSize);
+		NVBAK_LOG("[NVRAM]:read:%d\n", iResult);
+		if (iResult <= 0) {
+			NVBAK_LOG("[NVRAM]:read size error\r\n");
+			close(fd);
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		memcpy(tempBitmap1, tempBuffer, NvRamBlockNum * sizeof(char));
+		memcpy(tempBitmap2, tempBuffer + NvRamBlockNum * sizeof(char),
+		       NvRamBlockNum * sizeof(char));
+		for (i = 0; i < NvRamBlockNum; i++) {
+			if (tempBitmap1[i] != tempBitmap2[i]) {
+				NVBAK_LOG("[NVRAM]:1i:%d,1:%d,2:%d\n", i, tempBitmap1[i], tempBitmap2[i]);
+				flag = 1;
+				break;
+			}
+		}
+		if (flag)
+			continue;
+		memcpy(tempBitmap2, tempBuffer + 2 * NvRamBlockNum * sizeof(char),
+		       NvRamBlockNum * sizeof(char));
+		for (i = 0; i < NvRamBlockNum; i++) {
+			if (tempBitmap1[i] != tempBitmap2[i]) {
+				NVBAK_LOG("[NVRAM]:2i:%d,1:%d,2:%d\n", i, tempBitmap1[i], tempBitmap2[i]);
+				flag = 1;
+				break;
+			}
+		}
+		if (flag)
+			continue;
+		memcpy(&iBitmapFlag, tempBuffer + 3 * NvRamBlockNum * sizeof(char),
+		       sizeof(unsigned int));
+		if (iBitmapFlag != (int)BitmapFlag) {
+			NVBAK_LOG("[NVRAM]:iBitMapFlag:%d,BitMapFlag:%d\n", iBitmapFlag, BitmapFlag);
+			continue;
+		}
+		bSuccessFound = true;
+		break;
+	}
+	if (!bSuccessFound) {
+		NVBAK_LOG("[NVRAM]:can not find bad block bit map\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	#if 0
+	for (i = 0; i < NvRamBlockNum; i++) {
+		NVBAK_LOG("[NVRAM_Bitmap]:Block%d,%d\n", i, tempBitmap1[i]);
+	}
+	#endif
+	for (i = 0; i < iBlockNum; i++) {
+		if (tempBitmap1[i] == 0) {
+			pos = i;
+			break;
+		}
+	}
+	if (i == iBlockNum) {
+		NVBAK_LOG("[NVRAM]:can not find map file\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	if(lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]:seek to %d error %s\n",pos * iBlockSize, (char*)strerror(errno));
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		close(fd);
+		return false;
+	} else {
+		NVBAK_LOG("[NVRAM]:seek to %d Success\n",pos * iBlockSize);
+	}
+	iResult = read(fd, tempBuffer,
+	               iBlockSize * iReserveBlockCount); // if mapfile > 128KB read 2*128KB
+	NVBAK_LOG("[NVRAM]:map file read size:%d\n", iResult);
+	if (iResult <= 0) {
+		NVBAK_LOG("[NVRAM]:read size error\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	iMapFileSize = *((unsigned int*)tempBuffer);
+	iDatFileSize = *((unsigned int*)(tempBuffer + 4));
+	iAPBackupFileNum = *((unsigned int*)(tempBuffer + 3 * sizeof(
+	        unsigned int) + iMapFileSize));
+	iMDBackupFileNum = *((unsigned short*)(tempBuffer + 3 * sizeof(
+	        unsigned int) + iMapFileSize + sizeof(unsigned int)));
+	NVBAK_LOG("[NVRAM]: map file:%d,dat file:%d\n", iMapFileSize, iDatFileSize);
+	NVBAK_LOG("[NVRAM]: AP:%d,MD:%d\n", iAPBackupFileNum, iMDBackupFileNum);
+	if(iMapFileSize == 0 || iMapFileSize == 0xFFFFFFFF) {
+		NVBAK_LOG("[NVRAM]:map file size error\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	if(iDatFileSize == 0 || iDatFileSize == 0xFFFFFFFF) {
+		NVBAK_LOG("[NVRAM]:data file size error\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+#ifdef MTK_NVRAM_AUTO_BACKUP
+	NVBAK_LOG("[NVRAM]: AP backup file num:%d,MD backup file num:%d\n",
+	          iAPBackupFileNum, iMDBackupFileNum);
+	if (iAPBackupFileNum != 0 ) {
+		iFileDesc_backupflag = open(g_pcNVM_BackFlag , O_TRUNC | O_CREAT | O_RDWR,
+		                            S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+		if (INVALID_HANDLE_VALUE == iFileDesc_backupflag) {
+			NVBAK_LOG("[NVRAM]: cannot open backup file num data\n");
+			close(iFileDesc_backupflag);
+			close(fd);
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			goto restorefiles;
+		}
+		iResult = write(iFileDesc_backupflag, &iAPBackupFileNum, sizeof(unsigned int));
+		if (iResult != (int)sizeof(unsigned int)) {
+			NVBAK_LOG("[NVRAM]:Backflag write error(ignore)\r\n");
+			unlink(g_pcNVM_BackFlag);
+			close(iFileDesc_backupflag);
+		}
+		if (!NVM_ComputeBackflagCheckSum(iFileDesc_backupflag)) {
+			NVBAK_LOG("[NVRAM]:Backflag compute check sum failed(ignore)\r\n");
+			unlink(g_pcNVM_BackFlag);
+			close(iFileDesc_backupflag);
+		}
+	}
+#endif
+restorefiles:
+	iFileDesc_file = open(g_pcNVM_AllFile , O_TRUNC | O_CREAT | O_RDWR,
+	                      S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+	iFileDesc_map = open(g_pcNVM_AllMap, O_TRUNC | O_CREAT | O_RDWR,
+	                     S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_file) {
+		NVBAK_LOG("[NVRAM]: cannot open file data\n");
+		if (iFileDesc_map != INVALID_HANDLE_VALUE)
+			close(iFileDesc_map);
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_map) {
+		NVBAK_LOG("[NVRAM]: cannot open map data\n");
+		close(iFileDesc_file);
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+
+	iResult = write(iFileDesc_map, tempBuffer + 3 * sizeof(unsigned int),
+	                iMapFileSize);
+	if (iResult != (int)iMapFileSize) {
+		NVBAK_LOG("[NVRAM]:map file write error\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+
+	free(tempBuffer);
+	tempBuffer = NULL;
+	if (iDatFileSize % iBlockSize != 0)
+		tempBuffer = (char*)malloc((iDatFileSize / iBlockSize + 1) * iBlockSize);
+	else
+		tempBuffer = (char*)malloc(iDatFileSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	int iFreeBlockNum = 0;
+	for (i = pos + 1 + iReservePos; i < iBlockNum;
+	        i++) { // heli if > 126KB need pos + 2
+		if (tempBitmap1[i] == 0) {
+			pos = i;
+			break;
+		}
+	}
+	if (i == iBlockNum) {
+		NVBAK_LOG("[NVRAM]:there are not enough good blocks for read nvram data file\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	} else {
+		for (; i < iBlockNum; i++) {
+			if (tempBitmap1[i] == 0)
+				iFreeBlockNum++;
+		}
+		if ((iFreeBlockNum * iBlockSize) < (iDatFileSize)) {
+			NVBAK_LOG("[NVRAM]:there are not enough good blocks for read  nvram data file\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+	}
+	int iReadTime = 0;
+	if (iDatFileSize % iBlockSize != 0)
+		iReadTime = iDatFileSize / iBlockSize + 1;
+	else
+		iReadTime = iDatFileSize / iBlockSize;
+	int iAlreadyRead = 0;
+	NVBAK_LOG("[NVRAM]:dat file read begin:%d,then write to ALLFile(data/nvram/ALLFile)\n", pos);
+	for (i = 0; i < iReadTime; i++) {
+		iResult = lseek(fd, pos * iBlockSize, SEEK_SET);
+		if (iResult != pos * (int)iBlockSize) {
+			NVBAK_LOG("[NVRAM]:binregion lseek error\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+
+		iResult = read(fd, tempBuffer + i * iBlockSize, iBlockSize);
+		NVBAK_LOG("[NVRAM]:dat file read size:%d\n", iResult);
+		if (iResult != (int)iBlockSize) {
+			NVBAK_LOG("[NVRAM]:bin region read error\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		iAlreadyRead++;
+		if (iAlreadyRead == iReadTime)
+			break;
+		for (j = pos + 1; j < iBlockNum; j++) {
+			if (tempBitmap1[j] == 0) {
+				pos = j;
+				break;
+			}
+		}
+		if (j >= iBlockNum) {
+			NVBAK_LOG("[NVRAM]:there are not enough good blocks to read nvram data file\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+	}
+	NVBAK_LOG("[NVRAM]:dat file read end:%d\n", pos);
+	iResult = write(iFileDesc_file, tempBuffer, iDatFileSize);
+	if (iResult != (int)iDatFileSize) {
+		NVBAK_LOG("[NVRAM]:dat file write error\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	close(fd);
+	free(tempBuffer);
+	close(iFileDesc_file);
+	close(iFileDesc_map);
+	free(tempBitmap1);
+	free(tempBitmap2);
+
+	if (bCleanBoot) {
+		bRet = FileOp_RestoreData_All();
+	} else {
+		bRet = FileOp_RestoreFromFiles(APBOOT);
+		bRet = FileOp_RestoreFromFiles(MDBOOT);
+		//Add for second modem in MT658*
+		bRet = FileOp_RestoreFromFiles(MD2BOOT);
+		//End of Comment
+	}
+
+	return bRet;
+
+}
+
+bool FileOp_ClearBinRegion(void)
+{
+	unsigned int fd;
+	unsigned long long blksize;
+	unsigned long long times;
+	struct timeval start, end;
+	unsigned long long range[2];
+	char path[128];
+	bool ret = true;
+    struct stat statbuf;
+    int iFileSize;
+
+	NVBAK_LOG("%s +++\n", __func__);
+
+	if (NVM_Init() < 0) {
+		NVBAK_LOG("%s: NVM_Init fail", __func__);
+		return false;
+	}
+
+	memset(path, 0, sizeof(path));
+    snprintf(path, sizeof(path), "%s", g_NVRAM_BACKUP_DEVICE);
+
+	fd = open(path, O_WRONLY);
+	if (fd < 0) {
+		NVBAK_LOG("%s: can't open %s", __func__, path);
+		return false;
+	}
+
+#ifdef MTK_NVRAM_IN_A_FILE // NAND // openwrt/package/mtk/system/mtk_nvram/Makefile
+#define tempBufferSize (1024)
+        if (fd >= 0) {
+            if (fstat(fd, &statbuf) < 0) {
+                NVBAK_LOG("%s: fstat error. (errno=%d)", __func__, errno);
+                close(fd);
+                return false;
+            }
+        }
+        iFileSize = (int)statbuf.st_size;
+        NVBAK_LOG("%s: file size is %d", __func__, iFileSize);
+        blksize = statbuf.st_size;
+        gettimeofday(&start, NULL);
+        if (statbuf.st_size > 0) {
+            int write_size = 0;
+            int iSize = 0, iSizeTotal = 0;
+            char *tempBuffer = NULL;
+            tempBuffer = (char*)malloc(tempBufferSize);
+            if (tempBuffer == NULL) {
+                NVBAK_LOG("%s: memory malloc error,errono:%d,error:%s", __func__, errno, strerror(errno));
+                close(fd);
+                return false;
+            }
+            memset(tempBuffer, 0, tempBufferSize);
+            NVBAK_LOG("%s: Buffer Size is %d", __func__, tempBufferSize);
+            if (lseek(fd, 0, SEEK_SET) < 0) {
+                NVBAK_LOG("%s: lseek error. (errno=%d)", __func__, errno);
+                free(tempBuffer);
+                close(fd);
+                return false;
+            }
+
+            if (tempBufferSize > statbuf.st_size) write_size = statbuf.st_size;
+            else write_size = tempBufferSize;
+
+            do {
+                iSize = (int)write(fd, tempBuffer, write_size);
+                if (iSize != write_size) {
+                    NVBAK_LOG("%s: Real write size = %d, write Size = %d", __func__, iSize, write_size);
+                }
+                iSizeTotal += iSize;
+                if ((tempBufferSize + iSizeTotal) < statbuf.st_size) {
+                    write_size = tempBufferSize;
+                }
+                else {
+                    write_size = statbuf.st_size - iSizeTotal;
+                }
+            } while (iSizeTotal < statbuf.st_size);
+            free(tempBuffer);
+            NVBAK_LOG("%s: Total Size is %d", __func__, iSizeTotal);
+            blksize = iSizeTotal;
+        }
+#else // EMMC
+	if (ioctl(fd, BLKGETSIZE64, &blksize)) {
+		NVBAK_LOG("%s: %s: BLKGETSIZE64 ioctl failed",
+				__func__, path);
+		ret = false;
+		goto end;
+	}
+
+	range[0] = 0;
+	range[1] = blksize;
+
+	gettimeofday(&start, NULL);
+	if (ioctl(fd, BLKDISCARD, &range)) {
+		NVBAK_LOG("%s: %s: BLKDISCARD ioctl failed",
+				__func__, path);
+		ret = false;
+		goto end;
+	}
+#endif
+
+	gettimeofday(&end, NULL);
+
+	times = (((end.tv_sec - start.tv_sec) * 1000 * 1000) +
+		(end.tv_usec - start.tv_usec)) / 1000;
+
+	NVBAK_LOG("%s ---: clear %s bytes: %ld use %ld ms\n",
+			__func__, path, blksize, times);
+
+end:
+	close(fd);
+	return ret;
+}
+
+/*
+ * Notice
+ * For origin design, ccci_fsd may create files and folders whose attribute is "0000, root.root".
+ * In order to make cell phone more safe, ccci_fsd change its user from root to ccci.
+ * For, MOTA update, data patition will not be ereased; then, ccci_fsd loss the capability to read/write md nvram.
+ * EE will occur. So, we modify md nvram files's attribute fisrt here
+ */
+void change_md_nvram_attr(void) {
+#if 0
+	struct stat statbuf;
+	NVBAK_LOG("[NVRAM]:change_md_nvram_attr++");
+	if (stat("/mnt/vendor/nvdata/md/new_ver", &statbuf) == 0) {
+		NVBAK_LOG("[NVRAM]:new_ver file exist!!!");
+		NVBAK_LOG("[NVRAM]:change_md_nvram_attr--0");
+		return;
+	}
+
+	NVBAK_LOG("[NVRAM]:new_ver file NOT exist, change attr");
+	// Begin to change file mode and group
+	//system("chmod 0770 /mnt/vendor/nvdata/md");
+	system("chmod 0770 /mnt/vendor/nvdata/md/NVRAM");
+	system("chmod 0770 /mnt/vendor/nvdata/md/NVRAM/NVD_IMEI");
+	system("chmod 0770 /mnt/vendor/nvdata/md/NVRAM/IMPORTNT");
+	system("chmod 0770 /mnt/vendor/nvdata/md/NVRAM/CALIBRAT");
+	system("chmod 0770 /mnt/vendor/nvdata/md/NVRAM/NVD_CORE");
+	system("chmod 0770 /mnt/vendor/nvdata/md/NVRAM/NVD_DATA");
+	system("chmod 0660 /mnt/vendor/nvdata/md/NVRAM/NVD_IMEI/*");
+	system("chmod 0660 /mnt/vendor/nvdata/md/NVRAM/IMPORTNT/*");
+	system("chmod 0660 /mnt/vendor/nvdata/md/NVRAM/CALIBRAT/*");
+	system("chmod 0660 /mnt/vendor/nvdata/md/NVRAM/NVD_CORE/*");
+	system("chmod 0660 /mnt/vendor/nvdata/md/NVRAM/NVD_DATA/*");
+	// Make sure files has correct owner and group
+	system("chown root.nvram /mnt/vendor/nvdata/md");
+	system("chown root.nvram /mnt/vendor/nvdata/md/NVRAM");
+	system("chown root.nvram /mnt/vendor/nvdata/md/NVRAM/NVD_IMEI");
+	system("chown root.nvram /mnt/vendor/nvdata/md/NVRAM/IMPORTNT");
+	system("chown root.nvram /mnt/vendor/nvdata/md/NVRAM/CALIBRAT");
+	system("chown root.nvram /mnt/vendor/nvdata/md/NVRAM/NVD_CORE");
+	system("chown root.nvram /mnt/vendor/nvdata/md/NVRAM/NVD_DATA");
+	system("chown root.nvram /mnt/vendor/nvdata/md/NVRAM/NVD_IMEI/*");
+	system("chown root.nvram /mnt/vendor/nvdata/md/NVRAM/IMPORTNT/*");
+	system("chown root.nvram /mnt/vendor/nvdata/md/NVRAM/CALIBRAT/*");
+	system("chown root.nvram /mnt/vendor/nvdata/md/NVRAM/NVD_CORE/*");
+	system("chown root.nvram /mnt/vendor/nvdata/md/NVRAM/NVD_DATA/*");
+	// Write a flag file
+	system("echo flag > /mnt/vendor/nvdata/md/new_ver");
+	system("chmod 0660 /mnt/vendor/nvdata/md/new_ver");
+	NVBAK_LOG("[NVRAM]:change_md_nvram_attr--1");
+#endif
+}
+
+bool FileOp_RecoveryData() {
+	bool bRet;
+	int iResult;
+	unsigned int iCleanBootFlag = 0;
+	bool bCleanBoot;
+	int iFileDesc_Flag;
+	struct stat statbuf;
+	unsigned int iCompleteFlag;
+
+	//fix nvram layout issue , reassgined block numerbers by different platform
+	if (NVM_Init() < 0) {
+		NVBAK_LOG("[NVRAM]:FileOp_RecoveryData--NVM_Init fail!!!\n");
+		return false;
+	}
+	change_md_nvram_attr();
+
+	iResult = stat(g_pcNVM_Flag, &statbuf);
+	/*if(ret==0)
+	{
+	   result=FileOp_GetCleanBootFlag(&iCleanBootFlag);
+	   if(result!=true)
+	   {
+		NVBAK_LOG("FileOp_RecoveryData:get clean boot flag fail\n");
+		return false;
+	   }
+	}
+
+	if(ret==-1||iCleanBootFlag==CleanBootFlag)*/
+	NVBAK_LOG("[NVRAM]:iResult = %d, g_pcNVM_Flag=%s, errno=%d \n", iResult, g_pcNVM_Flag, errno);
+	if (0 == iResult) {
+
+		iFileDesc_Flag = open(g_pcNVM_Flag, O_RDONLY);
+		if (-1 == iFileDesc_Flag) {
+			NVBAK_LOG("[NVRAM]:Open Restore Flag file failed,go to restore!!!");
+			goto Recovery;
+		}
+		iResult = read(iFileDesc_Flag, &iCompleteFlag, sizeof(unsigned int));
+		if (iResult != sizeof(unsigned int)) {
+			NVBAK_LOG("[NVRAM]:Read retore Flag file failed,go to restore!!!");
+			close(iFileDesc_Flag);
+			goto Recovery;
+		}
+		if (0x12345678 != iCompleteFlag) {
+			NVBAK_LOG("[NVRAM]:Restore Flag is error, go to retore!!!");
+			close(iFileDesc_Flag);
+			goto Recovery;
+		}
+		close(iFileDesc_Flag);
+	}
+
+	if (iResult == -1) {
+Recovery:
+		bCleanBoot = true;
+		NVBAK_LOG("enter clean boot\n");
+
+
+		if (nvram_misc_log_feature)
+			NVRAM_MISC_LOG(1, "Enter clean boot, Restore From BinRegion");
+
+		if (!FileOp_RestoreFromBinRegion(bCleanBoot)) {
+			NVBAK_LOG("FileOp_RecoveryData:recovery all data fail\n");
+			return false;
+		}
+		/*if(!FileOp_SetCleanBootFlag(false))
+		{
+		  NVBAK_LOG("FileOp_RecoveryData:clear claenboot flag fail\n");
+		  return false;
+		}*/
+		iFileDesc_Flag = open(g_pcNVM_Flag, O_TRUNC | O_CREAT | O_RDWR,
+		                      S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+		if (iFileDesc_Flag == -1) {
+			NVBAK_LOG("FileOp_RecoveryData:set claenboot done file fail\n");
+			return false;
+		}
+		unsigned int iCompleteFlag = 0x12345678;
+		write(iFileDesc_Flag, &iCompleteFlag, sizeof(unsigned int));
+		close(iFileDesc_Flag);
+
+		NVBAK_LOG("Leave clean boot, Restore From BinRegion\n");
+
+		if (nvram_misc_log_feature)
+			NVRAM_MISC_LOG(1, "Leave clean boot, Restore From BinRegion");
+		iResult = FileOp_RestoreFromBinRegionForDM();
+		if (!iResult) {
+			NVBAK_LOG("FileOp_RecoveryData:RestoreFromBinRegionForDM fail\n");
+			return false;
+		}
+	}
+	return true;
+}
+
+//-----------------------------------------------------------------------------
+static bool FileOp_MakeFile(const char* src, unsigned int* iFileNum,
+                            int* FileSize) {
+	unsigned char acBuffer[1024];
+	int iSrc, iDst, iFileSize, iWriteSize, iSize; //FileSize;
+	int iFileDesc_file, iFileDesc_map, iFileDesc;
+	File_Title *FileInfo = NULL;
+	bool bRet = false;
+	struct stat statbuf;
+	off_t iResult = 0;
+
+	/* Koshi start */
+
+	NVBAK_LOG("FileOp_MakeFile: Handle the file (%s)", src);
+	if (iFileNum == NULL) {
+		NVBAK_LOG("FileOp_MakeFile:Input iFileNum Null pointer!\n");
+		return false;
+	}
+	if (FileSize == NULL) {
+		NVBAK_LOG("FileOp_MakeFile:Input FileSize Null pointer!\n");
+		return false;
+	}
+
+	iFileDesc_file = open(g_pcNVM_AllFile , O_RDWR);
+	iFileDesc_map = open(g_pcNVM_AllMap, O_RDWR);
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_file) {
+		/* Error handling */
+		NVBAK_LOG("FileOp_MakeFile cannot open/create file data\n");
+		if (iFileDesc_map != INVALID_HANDLE_VALUE)
+			close(iFileDesc_map);
+		return false;
+	}
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_map) {
+		/* Error handling */
+		NVBAK_LOG("FileOp_MakeFile cannot open/create map data\n");
+		close(iFileDesc_file);
+		return false;
+	}
+
+	/* Seek to the file end */
+	iResult = lseek(iFileDesc_file, 0, SEEK_END);
+	if (iResult == (off_t) - 1) {
+		NVBAK_LOG("iFileDesc_file seek error !\n");
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		return false;
+	}
+
+	iResult = lseek(iFileDesc_map, 0, SEEK_END);
+
+	if (iResult == (off_t) - 1) {
+		NVBAK_LOG("iFileDesc_map seek error !\n");
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		return false;
+	}
+
+	/* Koshi end */
+
+	iSrc = open(src, O_RDONLY);
+
+	if (-1 == iSrc) {
+		goto EXIT;
+	}
+
+	if (fstat(iSrc, &statbuf) < 0) {
+		NVBAK_LOG("[NVRAM]: fstat error. (errno=%d)", errno);
+		goto EXIT;
+	}
+	*FileSize = iFileSize = (int)statbuf.st_size;
+
+	NVBAK_LOG("File size is (%d)", iFileSize);
+
+    if (iFileSize == 0) {
+        goto EXIT;
+    }
+
+	while (iFileSize > 0) {
+		iWriteSize = min(iFileSize, (int)sizeof(acBuffer));
+		iSize = (int)read(iSrc, acBuffer, iWriteSize);
+		if (iSize != iWriteSize) {
+			goto EXIT;
+		}
+		iSize = (int)write(iFileDesc_file, acBuffer, iWriteSize);
+		if (iSize != iWriteSize) {
+			goto EXIT;
+		}
+		iFileSize -= iWriteSize;
+	}
+	/* malloc the buffer of title buf */
+	FileInfo = (File_Title *)malloc(sizeof(File_Title));
+	if (FileInfo == NULL) {
+		NVBAK_LOG("FileOp_MakeFile malloc memory for FileInfo failed!!\n");
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		close(iSrc);
+		return false;
+	}
+	memset(FileInfo, 0, sizeof(File_Title));
+
+	/* Koshi: write map file */
+	FileInfo->Filesize = *FileSize;
+	FileInfo->NameSize = 7;
+	*iFileNum += 1;
+	pthread_mutex_lock(&gFileStartAddrlock);
+	FileInfo->FielStartAddr = gFileStartAddr;
+	memcpy(FileInfo->cFileName, src, MAX_NAMESIZE);
+	write(iFileDesc_map, FileInfo, sizeof(File_Title));
+	NVBAK_LOG("FileInfo: Filenum %u (addr - %d / size - %d) \n", *iFileNum,
+	          FileInfo->FielStartAddr, FileInfo->Filesize);
+	gFileStartAddr += FileInfo->Filesize;
+	pthread_mutex_unlock(&gFileStartAddrlock);
+
+	bRet = true;
+
+EXIT:
+	if (iSrc != -1) {
+		close(iSrc);
+	}
+	if (iFileDesc_file != -1) {
+		close(iFileDesc_file);
+	}
+	if (iFileDesc_map != -1) {
+		close(iFileDesc_map);
+	}
+	free(FileInfo);
+	return bRet;
+}
+
+bool FileOp_RestoreFromFiles(int eBackupType) {
+	int iFileDesc_file, iFileDesc_map, iFileDesc, iSize;
+	int iFileTitleOffset = 0;
+	short int iFileNum = 0;
+	char *buf;  /* content  */
+	File_Title *FileInfo = NULL;
+	bool bRet = true;
+	off_t iResult;
+	File_Title_Header1 FileTitleInfo1;
+	File_Title_Header2 FileTitleInfo2;
+	File_Title_Header3 FileTitleInfo3;
+	File_Title_Header4 FileTitleInfo4;
+	File_Title_Header5 FileTitleInfo5;
+	memset(&FileTitleInfo1, 0, sizeof(File_Title_Header1));
+	memset(&FileTitleInfo2, 0, sizeof(File_Title_Header2));
+	memset(&FileTitleInfo3, 0, sizeof(File_Title_Header3));
+	memset(&FileTitleInfo4, 0, sizeof(File_Title_Header4));
+	memset(&FileTitleInfo5, 0, sizeof(File_Title_Header5));
+	int fhs = sizeof(unsigned int) + 2 * sizeof(unsigned int) + sizeof(
+	              File_Title_Header1);//In order to align, minus sizeof(short int)
+
+	if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+		NVBAK_LOG("FileOp_RestoreFromFiles: File_Title_Header1 set\n");
+	} else if (nvram_md5_support() && !nvram_evdo_support()
+	           && !nvram_ecci_c2k_support()) {
+		NVBAK_LOG("FileOp_RestoreFromFiles: File_Title_Header2 set\n");
+		fhs = sizeof(unsigned int) + 2 * sizeof(unsigned int) + sizeof(
+		          File_Title_Header2) - 2 * sizeof(short
+		                  int); //In order to align, minus 2*sizeof(short int)
+	} else if (!nvram_md5_support() && nvram_evdo_support()
+	           && !nvram_ecci_c2k_support()) {
+		NVBAK_LOG("FileOp_RestoreFromFiles: File_Title_Header3 set\n");
+		fhs = sizeof(unsigned int) + 2 * sizeof(unsigned int) + sizeof(
+		          File_Title_Header3) - 4 * sizeof(short
+		                  int); //In order to align, minus 4*sizeof(short int)
+	} else if (!nvram_md5_support() && !nvram_evdo_support()
+	           && !nvram_ecci_c2k_support()) {
+		NVBAK_LOG("FileOp_RestoreFromFiles: File_Title_Header4 set\n");
+		fhs = sizeof(unsigned int) + 2 * sizeof(unsigned int) + sizeof(
+		          File_Title_Header4) - 4 * sizeof(short int);
+	} else {
+		NVBAK_LOG("FileOp_RestoreFromFiles: File_Title_Header5 set\n");
+		fhs = sizeof(unsigned int) + 2 * sizeof(unsigned int) + sizeof(
+		          File_Title_Header5);
+	}
+
+	int fis = sizeof(File_Title);
+
+	/* malloc the buffer of title buf */
+	FileInfo = (File_Title *)malloc(sizeof(File_Title));
+	if (FileInfo == NULL) {
+		NVBAK_LOG("FileOp_MakeFile malloc mermory for FileInfo failed\n");
+		return false;
+	}
+	memset(FileInfo, 0, sizeof(File_Title));
+
+	iFileDesc_file = open(g_pcNVM_AllFile , O_RDWR);
+	iFileDesc_map = open(g_pcNVM_AllMap, O_RDWR);
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_file) {
+		/* Error handling */
+		NVBAK_LOG("FileOp_MakeFile cannot open file data\n");
+		if (iFileDesc_map != INVALID_HANDLE_VALUE)
+			close(iFileDesc_map);
+		free(FileInfo);
+		return false;
+	}
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_map) {
+		/* Error handling */
+		NVBAK_LOG("FileOp_MakeFile cannot open map data\n");
+		close(iFileDesc_file);
+		free(FileInfo);
+		return false;
+	}
+
+	if (lseek(iFileDesc_map, sizeof(unsigned int) + 2 * sizeof(unsigned int), SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(FileInfo);
+		return false;
+	}
+
+	if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support())
+		iSize = (int)read(iFileDesc_map, &FileTitleInfo1, sizeof(File_Title_Header1));
+	else if (nvram_md5_support() && !nvram_evdo_support()
+	         && !nvram_ecci_c2k_support())
+		iSize = (int)read(iFileDesc_map, &FileTitleInfo2,
+		                  sizeof(File_Title_Header2) - 2 * sizeof(short
+		                          int)); //In order to align, minus 2*sizeof(short int)
+	else if (!nvram_md5_support() && nvram_evdo_support()
+	         && !nvram_ecci_c2k_support())
+		iSize = (int)read(iFileDesc_map, &FileTitleInfo3,
+		                  sizeof(File_Title_Header3) - 4 * sizeof(short
+		                          int)); //In order to align, minus 4*sizeof(short int)
+	else if (!nvram_md5_support() && !nvram_evdo_support()
+	         && !nvram_ecci_c2k_support())
+		iSize = (int)read(iFileDesc_map, &FileTitleInfo4,
+		                  sizeof(File_Title_Header4) - 4 * sizeof(short int));
+	else
+		iSize = (int)read(iFileDesc_map, &FileTitleInfo5, sizeof(File_Title_Header5));
+#if 0
+	NVBAK_LOG("File_Title_Header iApBootNum(%d)", FileTitleInfo1.iApBootNum);
+	NVBAK_LOG("File_Title_Header iApCleanNum(%d)", FileTitleInfo1.iApCleanNum);
+	NVBAK_LOG("File_Title_Header iMdBootNum(%d)", FileTitleInfo1.iMdBootNum);
+	NVBAK_LOG("File_Title_Header iMdCleanNum(%d)", FileTitleInfo1.iMdCleanNum);
+	NVBAK_LOG("File_Title_Header iMdImpntNum(%d)", FileTitleInfo1.iMdImpntNum);
+	NVBAK_LOG("File_Title_Header iMdCoreNum(%d)", FileTitleInfo1.iMdCoreNum);
+	NVBAK_LOG("File_Title_Header iMdDataNum(%d)", FileTitleInfo1.iMdDataNum);
+
+	if (nvram_platform_header_offset == 0) {
+		//Add for second modem for MT658*
+		NVBAK_LOG("File_Title_Header iMd2BootNum(%d)", FileTitleInfo1.iMd2BootNum);
+		NVBAK_LOG("File_Title_Header iMd2CleanNum(%d)", FileTitleInfo1.iMd2CleanNum);
+		NVBAK_LOG("File_Title_Header iMd2ImpntNum(%d)", FileTitleInfo1.iMd2ImpntNum);
+		//End of Comemnt
+		if (nvram_md5_support()) {
+			NVBAK_LOG("File_Title_Header iMd5BootNum(%d)", FileTitleInfo1.iMd5BootNum);
+			NVBAK_LOG("File_Title_Header iMd5CleanNum(%d)", FileTitleInfo1.iMd5CleanNum);
+			NVBAK_LOG("File_Title_Header iMd5ImpntNum(%d)", FileTitleInfo1.iMd5ImpntNum);
+		}
+	}
+
+	if (nvram_evdo_support())
+		NVBAK_LOG("File_Title_Header iViaNum(%d)", FileTitleInfo1.iViaNum);
+
+	if (nvram_platform_header_offset == 0) {
+		NVBAK_LOG("File_Title_Header iFileBufLen(%d)", FileTitleInfo1.iFileBufLen);
+		NVBAK_LOG("File_Title_Header BackupFlag(%d)", FileTitleInfo1.BackupFlag);
+	}
+	if (nvram_platform_header_offset != 0) {
+		NVBAK_LOG("File_Title_Header iFileBufLen(%d)",
+		          *( (short int *) & (FileTitleInfo1.iFileBufLen) -
+		             nvram_platform_header_offset) );
+		NVBAK_LOG("File_Title_Header BackupFlag(%d)",
+		          *( (short int *) & (FileTitleInfo1.BackupFlag) -
+		             nvram_platform_header_offset) );
+	}
+#endif
+	if (nvram_platform_header_offset != 0) {
+		fhs = fhs - nvram_platform_header_offset * 2;
+	}
+	switch (eBackupType) {
+	case APBOOT:
+		if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles APBOOT start !");
+			iFileNum = FileTitleInfo1.iApBootNum;
+			iFileTitleOffset = fhs;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles APBOOT start !");
+			iFileNum = FileTitleInfo2.iApBootNum;
+			iFileTitleOffset = fhs;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles APBOOT start !");
+			iFileNum = FileTitleInfo3.iApBootNum;
+			iFileTitleOffset = fhs;
+		} else if (!nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles APBOOT start !");
+			iFileNum = FileTitleInfo4.iApBootNum;
+			iFileTitleOffset = fhs;
+		} else { /*nvram_ecci_c2k_support()==ture*/
+			NVBAK_LOG("FileOp_RestoreFromFiles APBOOT start !");
+			iFileNum = FileTitleInfo5.iApBootNum;
+			iFileTitleOffset = fhs;
+		}
+		break;
+
+	case APCLN:
+		if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles APCLN start !");
+			iFileNum = FileTitleInfo1.iApCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum) * fis;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles APCLN start !");
+			iFileNum = FileTitleInfo2.iApCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum) * fis;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles APCLN start !");
+			iFileNum = FileTitleInfo3.iApCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum) * fis;
+		} else if (!nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles APCLN start !");
+			iFileNum = FileTitleInfo4.iApCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum) * fis;
+		} else {
+			NVBAK_LOG("FileOp_RestoreFromFiles APCLN start !");
+			iFileNum = FileTitleInfo5.iApCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum) * fis;
+		}
+		break;
+
+	case MDBOOT:
+		if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDBOOT start !");
+			iFileNum = FileTitleInfo1.iMdBootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum +
+			                          FileTitleInfo1.iApCleanNum) * fis;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDBOOT start !");
+			iFileNum = FileTitleInfo2.iMdBootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum +
+			                          FileTitleInfo2.iApCleanNum) * fis;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDBOOT start !");
+			iFileNum = FileTitleInfo3.iMdBootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum +
+			                          FileTitleInfo3.iApCleanNum) * fis;
+		} else if (!nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDBOOT start !");
+			iFileNum = FileTitleInfo4.iMdBootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum +
+			                          FileTitleInfo4.iApCleanNum) * fis;
+		} else {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDBOOT start !");
+			iFileNum = FileTitleInfo5.iMdBootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum +
+			                          FileTitleInfo5.iApCleanNum) * fis;
+		}
+		break;
+
+	case MDCLN:
+		if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDCLN start !");
+			iFileNum = FileTitleInfo1.iMdCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+			                          + FileTitleInfo1.iMdBootNum) * fis;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDCLN start !");
+			iFileNum = FileTitleInfo2.iMdCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+			                          + FileTitleInfo2.iMdBootNum) * fis;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDCLN start !");
+			iFileNum = FileTitleInfo3.iMdCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+			                          + FileTitleInfo3.iMdBootNum) * fis;
+		} else if (!nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDCLN start !");
+			iFileNum = FileTitleInfo4.iMdCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+			                          + FileTitleInfo4.iMdBootNum) * fis;
+		} else {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDCLN start !");
+			iFileNum = FileTitleInfo5.iMdCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum) * fis;
+		}
+		break;
+
+	case MDIMP:
+		if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDIMP start !");
+			iFileNum = FileTitleInfo1.iMdImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+			                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum) * fis;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDIMP start !");
+			iFileNum = FileTitleInfo2.iMdImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+			                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum) * fis;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDIMP start !");
+			iFileNum = FileTitleInfo3.iMdImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+			                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum) * fis;
+		}
+
+		else if (!nvram_md5_support() && !nvram_evdo_support()
+		         && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDIMP start !");
+			iFileNum = FileTitleInfo4.iMdImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+			                          + FileTitleInfo4.iMdBootNum + FileTitleInfo4.iMdCleanNum) * fis;
+		} else {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDIMP start !");
+			iFileNum = FileTitleInfo5.iMdImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum) * fis;
+		}
+		break;
+
+	case MDCOR:
+		if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDCOR start !");
+			iFileNum = FileTitleInfo1.iMdCoreNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+			                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+			                          FileTitleInfo1.iMdImpntNum) * fis;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDCOR start !");
+			iFileNum = FileTitleInfo2.iMdCoreNum;
+			iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+			                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+			                          FileTitleInfo2.iMdImpntNum) * fis;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDCOR start !");
+			iFileNum = FileTitleInfo3.iMdCoreNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+			                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+			                          FileTitleInfo3.iMdImpntNum) * fis;
+		}
+
+		else if (!nvram_md5_support() && !nvram_evdo_support()
+		         && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDCOR start !");
+			iFileNum = FileTitleInfo4.iMdCoreNum;
+			iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+			                          + FileTitleInfo4.iMdBootNum + FileTitleInfo4.iMdCleanNum +
+			                          FileTitleInfo4.iMdImpntNum) * fis;
+		} else {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDCOR start !");
+			iFileNum = FileTitleInfo5.iMdCoreNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum) * fis;
+		}
+		break;
+
+	case MDDATA:
+		if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDDATA start !");
+			iFileNum = FileTitleInfo1.iMdDataNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+			                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+			                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum) * fis;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDDATA start !");
+			iFileNum = FileTitleInfo2.iMdDataNum;
+			iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+			                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+			                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum) * fis;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDDATA start !");
+			iFileNum = FileTitleInfo3.iMdDataNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+			                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+			                          FileTitleInfo3.iMdImpntNum + FileTitleInfo3.iMdCoreNum) * fis;
+		}
+
+		else if (!nvram_md5_support() && !nvram_evdo_support()
+		         && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDDATA start !");
+			iFileNum = FileTitleInfo4.iMdDataNum;
+			iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+			                          + FileTitleInfo4.iMdBootNum + FileTitleInfo4.iMdCleanNum +
+			                          FileTitleInfo4.iMdImpntNum + FileTitleInfo4.iMdCoreNum) * fis;
+		} else {
+			NVBAK_LOG("FileOp_RestoreFromFiles MDDATA start !");
+			iFileNum = FileTitleInfo5.iMdDataNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum) * fis;
+		}
+		break;
+	//Add for second modem for MT658*
+	case MD2BOOT:
+		if (nvram_platform_header_offset == 0) {
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2BOOT start !");
+				iFileNum = FileTitleInfo1.iMd2BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+				                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+				                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+				                          FileTitleInfo1.iMdDataNum) * fis;
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2BOOT start !");
+				iFileNum = FileTitleInfo2.iMd2BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+				                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+				                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum +
+				                          FileTitleInfo2.iMdDataNum) * fis;
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2BOOT start !");
+				iFileNum = FileTitleInfo3.iMd2BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+				                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+				                          FileTitleInfo3.iMdImpntNum + FileTitleInfo3.iMdCoreNum +
+				                          FileTitleInfo3.iMdDataNum) * fis;
+			}
+
+			else if (!nvram_md5_support() && !nvram_evdo_support()
+			         && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2BOOT start !");
+				iFileNum = FileTitleInfo4.iMd2BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+				                          + FileTitleInfo4.iMdBootNum + FileTitleInfo4.iMdCleanNum +
+				                          FileTitleInfo4.iMdImpntNum + FileTitleInfo4.iMdCoreNum +
+				                          FileTitleInfo4.iMdDataNum) * fis;
+			} else {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2BOOT start !");
+				iFileNum = FileTitleInfo5.iMd2BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+				                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+				                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+				                          FileTitleInfo5.iMdDataNum) * fis;
+			}
+		}
+		break;
+
+	case MD2CLN:
+		if (nvram_platform_header_offset == 0) {
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2CLN start !");
+				iFileNum = FileTitleInfo1.iMd2CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+				                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+				                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+				                          FileTitleInfo1.iMdDataNum + FileTitleInfo1.iMd2BootNum) * fis;
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2CLN start !");
+				iFileNum = FileTitleInfo2.iMd2CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+				                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+				                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum +
+				                          FileTitleInfo2.iMdDataNum + FileTitleInfo2.iMd2BootNum) * fis;
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2CLN start !");
+				iFileNum = FileTitleInfo3.iMd2CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+				                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+				                          FileTitleInfo3.iMdImpntNum + FileTitleInfo3.iMdCoreNum +
+				                          FileTitleInfo3.iMdDataNum + FileTitleInfo3.iMd2BootNum) * fis;
+			}
+
+			else if (!nvram_md5_support() && !nvram_evdo_support()
+			         && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2CLN start !");
+				iFileNum = FileTitleInfo4.iMd2CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+				                          + FileTitleInfo4.iMdBootNum + FileTitleInfo4.iMdCleanNum +
+				                          FileTitleInfo4.iMdImpntNum + FileTitleInfo4.iMdCoreNum +
+				                          FileTitleInfo4.iMdDataNum + FileTitleInfo4.iMd2BootNum) * fis;
+			} else {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2CLN start !");
+				iFileNum = FileTitleInfo5.iMd2CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+				                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+				                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+				                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum) * fis;
+			}
+		}
+		break;
+
+	case MD2IMP:
+		if (nvram_platform_header_offset == 0) {
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2IMP start !");
+				iFileNum = FileTitleInfo1.iMd2ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+				                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+				                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+				                          FileTitleInfo1.iMdDataNum + FileTitleInfo1.iMd2BootNum +
+				                          FileTitleInfo1.iMd2CleanNum) * fis;
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2IMP start !");
+				iFileNum = FileTitleInfo2.iMd2ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+				                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+				                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum +
+				                          FileTitleInfo2.iMdDataNum + FileTitleInfo2.iMd2BootNum +
+				                          FileTitleInfo2.iMd2CleanNum) * fis;
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2IMP start !");
+				iFileNum = FileTitleInfo3.iMd2ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+				                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+				                          FileTitleInfo3.iMdImpntNum + FileTitleInfo3.iMdCoreNum +
+				                          FileTitleInfo3.iMdDataNum + FileTitleInfo3.iMd2BootNum +
+				                          FileTitleInfo3.iMd2CleanNum) * fis;
+			}
+
+			else if (!nvram_md5_support() && !nvram_evdo_support()
+			         && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2IMP start !");
+				iFileNum = FileTitleInfo4.iMd2ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+				                          + FileTitleInfo4.iMdBootNum + FileTitleInfo4.iMdCleanNum +
+				                          FileTitleInfo4.iMdImpntNum + FileTitleInfo4.iMdCoreNum +
+				                          FileTitleInfo4.iMdDataNum + FileTitleInfo4.iMd2BootNum +
+				                          FileTitleInfo4.iMd2CleanNum) * fis;
+			} else {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2IMP start !");
+				iFileNum = FileTitleInfo5.iMd2ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+				                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+				                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+				                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+				                          FileTitleInfo5.iMd2CleanNum) * fis;
+			}
+		}
+		break;
+
+	//End of Comment
+	case MD5BOOT:
+		if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		        && !nvram_ecci_c2k_support()) {
+			if (nvram_evdo_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD5BOOT start !");
+				iFileNum = FileTitleInfo1.iMd5BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+				                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+				                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+				                          FileTitleInfo1.iMdDataNum + FileTitleInfo1.iMd2BootNum +
+				                          FileTitleInfo1.iMd2CleanNum + FileTitleInfo1.iMd2ImpntNum) * fis;
+			} else {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD5BOOT start !");
+				iFileNum = FileTitleInfo2.iMd5BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+				                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+				                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum +
+				                          FileTitleInfo2.iMdDataNum + FileTitleInfo2.iMd2BootNum +
+				                          FileTitleInfo2.iMd2CleanNum + FileTitleInfo2.iMd2ImpntNum) * fis;
+			}
+		} else if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		           && nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MD5BOOT start !");
+			iFileNum = FileTitleInfo5.iMd5BootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+			                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+			                          FileTitleInfo5.iMd2CleanNum + FileTitleInfo5.iMd2ImpntNum) * fis;
+		}
+		break;
+
+	case MD5CLN:
+		if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		        && !nvram_ecci_c2k_support()) {
+			if (nvram_evdo_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD5CLN start !");
+				iFileNum = FileTitleInfo1.iMd5CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+				                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+				                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+				                          FileTitleInfo1.iMdDataNum + FileTitleInfo1.iMd2BootNum +
+				                          FileTitleInfo1.iMd2CleanNum + FileTitleInfo1.iMd2ImpntNum +
+				                          FileTitleInfo1.iMd5BootNum) * fis;
+			} else {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD5CLN start !");
+				iFileNum = FileTitleInfo2.iMd5CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+				                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+				                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum +
+				                          FileTitleInfo2.iMdDataNum + FileTitleInfo2.iMd2BootNum +
+				                          FileTitleInfo2.iMd2CleanNum + FileTitleInfo2.iMd2ImpntNum +
+				                          FileTitleInfo2.iMd5BootNum) * fis;
+			}
+		} else if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		           && nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MD5CLN start !");
+			iFileNum = FileTitleInfo5.iMd5CleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+			                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+			                          FileTitleInfo5.iMd2CleanNum + FileTitleInfo5.iMd2ImpntNum +
+			                          FileTitleInfo5.iMd5BootNum) * fis;
+		}
+
+		break;
+
+	case MD5IMP:
+		if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		        && !nvram_ecci_c2k_support()) {
+			if (nvram_evdo_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD5IMP start !");
+				iFileNum = FileTitleInfo1.iMd5ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+				                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+				                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+				                          FileTitleInfo1.iMdDataNum + FileTitleInfo1.iMd2BootNum +
+				                          FileTitleInfo1.iMd2CleanNum + FileTitleInfo1.iMd2ImpntNum +
+				                          FileTitleInfo1.iMd5BootNum + FileTitleInfo1.iMd5CleanNum) * fis;
+			} else {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD5IMP start !");
+				iFileNum = FileTitleInfo2.iMd5ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+				                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+				                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum +
+				                          FileTitleInfo2.iMdDataNum + FileTitleInfo2.iMd2BootNum +
+				                          FileTitleInfo2.iMd2CleanNum + FileTitleInfo2.iMd2ImpntNum +
+				                          FileTitleInfo2.iMd5BootNum + FileTitleInfo2.iMd5CleanNum) * fis;
+			}
+		} else if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		           && nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MD5IMP start !");
+			iFileNum = FileTitleInfo5.iMd5ImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+			                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+			                          FileTitleInfo5.iMd2CleanNum + FileTitleInfo5.iMd2ImpntNum +
+			                          FileTitleInfo5.iMd5BootNum + FileTitleInfo5.iMd5CleanNum) * fis;
+		}
+
+		break;
+
+	case VIA:
+		if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		        && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles VIA start !");
+			iFileNum = FileTitleInfo1.iViaNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+			                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+			                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+			                          FileTitleInfo1.iMdDataNum + FileTitleInfo1.iMd2BootNum +
+			                          FileTitleInfo1.iMd2CleanNum + FileTitleInfo1.iMd2ImpntNum +
+			                          FileTitleInfo1.iMd5BootNum + FileTitleInfo1.iMd5CleanNum +
+			                          FileTitleInfo1.iMd5ImpntNum) * fis;
+		} else if (nvram_platform_header_offset == 0 && !nvram_md5_support()
+		           && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles VIA start !");
+			iFileNum = FileTitleInfo3.iViaNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+			                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+			                          FileTitleInfo3.iMdImpntNum + FileTitleInfo3.iMdCoreNum +
+			                          FileTitleInfo3.iMdDataNum + FileTitleInfo3.iMd2BootNum +
+			                          FileTitleInfo3.iMd2CleanNum + FileTitleInfo3.iMd2ImpntNum) * fis;
+		} else if (nvram_platform_header_offset != 0 && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles VIA start !");
+			iFileNum = FileTitleInfo3.iViaNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+			                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+			                          FileTitleInfo3.iMdImpntNum + FileTitleInfo3.iMdCoreNum +
+			                          FileTitleInfo3.iMdDataNum) * fis;
+		} else
+			break;
+		break;
+	/*Add for C2K modem*/
+	case MD3BOOT:
+		if (nvram_platform_header_offset == 0 && nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MD3BOOT start !");
+			iFileNum = FileTitleInfo5.iMd3BootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+			                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+			                          FileTitleInfo5.iMd2CleanNum + FileTitleInfo5.iMd2ImpntNum +
+			                          FileTitleInfo5.iMd5BootNum + FileTitleInfo5.iMd5CleanNum +
+			                          FileTitleInfo5.iMd5ImpntNum) * fis;
+		}
+		break;
+
+	case MD3CLN:
+		if (nvram_platform_header_offset == 0 && nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MD3CLN start !");
+			iFileNum = FileTitleInfo5.iMd3CleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+			                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+			                          FileTitleInfo5.iMd2CleanNum + FileTitleInfo5.iMd2ImpntNum +
+			                          FileTitleInfo5.iMd5BootNum + FileTitleInfo5.iMd5CleanNum +
+			                          FileTitleInfo5.iMd5ImpntNum + FileTitleInfo5.iMd3BootNum) * fis;
+		}
+		break;
+
+	case MD3IMP:
+		if (nvram_platform_header_offset == 0 && nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MD3IMP start !");
+			iFileNum = FileTitleInfo5.iMd3ImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+			                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+			                          FileTitleInfo5.iMd2CleanNum + FileTitleInfo5.iMd2ImpntNum +
+			                          FileTitleInfo5.iMd5BootNum + FileTitleInfo5.iMd5CleanNum +
+			                          FileTitleInfo5.iMd5ImpntNum + FileTitleInfo5.iMd3BootNum +
+			                          FileTitleInfo5.iMd3CleanNum) * fis;
+		}
+		break;
+
+
+	//End of Comment
+
+	case ALL:
+		break;
+	default:
+		close(iFileDesc_map);
+		close(iFileDesc_file);
+		free(FileInfo);
+		return false;
+		//break;
+	}
+
+	iResult = lseek(iFileDesc_map, iFileTitleOffset, SEEK_SET);
+
+	//restore all files one by one according to the fout.txt and fTitleInfo.txt
+	//do
+	//avoid the file num of some folder is zero
+	while (iFileNum > 0 && iFileNum <=SHRT_MAX) {
+		memset(FileInfo, 0, sizeof(File_Title));
+		iSize = (int)read(iFileDesc_map, FileInfo, sizeof(File_Title));
+		FileInfo->cFileName[MAX_NAMESIZE-1]='\0';
+		NVBAK_LOG("FileInfo: %s\n", FileInfo->cFileName);
+		NVBAK_LOG("FileInfo: startaddr(%x) size(%x) .\n", FileInfo->FielStartAddr,
+		          FileInfo->Filesize);
+
+		if (strstr(FileInfo->cFileName, "FILE_VER")) {
+			iFileDesc = open_file_with_dirs(FileInfo->cFileName, 0664);
+		} else {
+			iFileDesc = open_file_with_dirs(FileInfo->cFileName, 0660);
+		}
+
+		if (INVALID_HANDLE_VALUE == iFileDesc) {
+			/* Error handling */
+			NVBAK_LOG("FileOp_RestoreFromFiles cannot create %s\n", FileInfo->cFileName);
+
+			//added
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(FileInfo);
+			return false;
+		}
+		if (FileInfo->Filesize <= 0 || FileInfo->Filesize >=INT_MAX) {
+			/* Error handling */
+			NVBAK_LOG("FileOp_RestoreFromFiles FileInfo->Filesize <= 0\n");
+
+			//added
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			close(iFileDesc);
+			free(FileInfo);
+			return false;
+		}
+
+		buf = (char *)malloc(FileInfo->Filesize);
+		if (buf == NULL) {
+			/* Error handling */
+			NVBAK_LOG("FileOp_RestoreFromFiles malloc memory for buff faild\n");
+
+			//added
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			close(iFileDesc);
+			free(FileInfo);
+			return false;
+		}
+
+		//read the data and write to the file
+		iResult = lseek(iFileDesc_file, FileInfo->FielStartAddr, SEEK_SET);
+		if (iResult == -1) {
+			NVBAK_LOG("lseek fail !");
+			close(iFileDesc);
+			free(buf);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(FileInfo);
+			return false;
+		}
+		iSize = (int)read(iFileDesc_file, buf, FileInfo->Filesize);
+		if (iSize != FileInfo->Filesize) {
+			NVBAK_LOG("read fail !");
+			close(iFileDesc);
+			free(buf);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(FileInfo);
+			return false;
+		}
+		iSize = (int)write(iFileDesc, buf, FileInfo->Filesize);
+		if (iSize != FileInfo->Filesize) {
+			NVBAK_LOG("write fail !");
+			close(iFileDesc);
+			free(buf);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(FileInfo);
+			return false;
+		}
+		close(iFileDesc);
+		free(buf);
+		--iFileNum;
+	}
+	//while (--iFileNum);
+
+	close(iFileDesc_map);
+	close(iFileDesc_file);
+	free(FileInfo);
+	return true;
+}
+static unsigned int FileOp_ComputeCheckSum(void)
+{
+     time_t start = time(NULL);
+     NVBAK_LOG("Starting FileOp_ComputeCheckSum (pid %d) on %s",getpid(),ctime(&start));////add for log
+     int iFileDesc_file;
+     char cReadData;
+     unsigned int iFileSize;
+     unsigned int ulCheckSum=0;
+     int looptime;
+     struct stat st;
+     int i,flag,j;//add j
+     int iResult;
+     int iLength=sizeof(unsigned int);
+     unsigned int tempNum;
+     unsigned int  tempBuf[4096] ;//add for read
+     int jloop_num=0;
+	 int  tmplooptime;//add for read
+     if(stat(g_pcNVM_AllFile,&st)<0)
+     {
+        NVBAK_LOG("Error FileOp_ComputeCheckSum stat \n");
+        return 0;
+    }
+   iFileSize=st.st_size;
+   looptime=iFileSize/(sizeof(unsigned int));
+   tmplooptime = looptime/(Loop_num) + 1;
+   iFileDesc_file = open(g_pcNVM_AllFile , O_RDWR);
+      if(iFileDesc_file<0)
+      {
+            NVBAK_LOG("FileOp_ComputeCheckSum cannot open data file\n");
+            return 0;
+      }
+   flag=1;
+   NVBAK_LOG("looptime is %d \n", looptime);////add for log
+   NVBAK_LOG("tmplooptime is %d \n", tmplooptime);////add for log
+   time_t start_while = time(NULL);////add for log
+   NVBAK_LOG("Start_while FileOp_ComputeCheckSum (pid %d) on %s",getpid(),ctime(&start_while));//add
+   for(i=0;i<tmplooptime;i++)
+    {
+        if(i != tmplooptime-1 )
+        {
+            jloop_num=Loop_num;}
+        else
+        {
+            jloop_num=looptime%(Loop_num);}
+            //NVBAK_LOG("Start_while: i is %d, FileOp_ComputeCheckSum (pid %d) on %s",i,getpid(),ctime(&start_while));// add for log
+            iResult=read(iFileDesc_file, tempBuf, jloop_num*iLength);
+            //NVBAK_LOG("Start_while: iResult is %d, FileOp_ComputeCheckSum (pid %d) on %s",iResult,getpid(),ctime(&start_while));//add for log
+        if(iResult!= jloop_num*iLength)
+        {
+            NVBAK_LOG("FileOp_GetCheckSum cannot read checksum data\n");
+            close(iFileDesc_file);
+            return 0;
+        }
+        //NVBAK_LOG("Start_while:before_while FileOp_ComputeCheckSum (pid %d) on %s",getpid(),ctime(&start_while));//add for log
+        for(j=0;j<jloop_num;j++)
+        {
+            if(flag)
+            {
+                ulCheckSum^=tempBuf[j];
+                flag=0;
+            }
+            else
+            {
+                ulCheckSum+=tempBuf[j];
+                flag=1;
+            }
+      }
+      }
+      tempNum=0;
+      iLength=iFileSize%(sizeof(unsigned int));
+      iResult=read(iFileDesc_file, &tempNum, iLength);
+      NVBAK_LOG("tempNum = %x", tempNum);//add for log
+      if(iResult!= iLength)
+           {
+              NVBAK_LOG("FileOp_GetCheckSum cannot read last checksum data\n");
+              close(iFileDesc_file);
+              return 0;
+           }
+        ulCheckSum+=tempNum;
+        //ulCheckSum^=gFileStartAddr;
+        close(iFileDesc_file);
+        time_t end = time(NULL);
+        NVBAK_LOG("Ending FileOp_ComputeCheckSum (pid %d) on %s",getpid(),ctime(&end));//add for log
+        return ulCheckSum;
+}
+#if 0
+static unsigned int FileOp_ComputeCheckSum(void) {
+	int iFileDesc_file;
+	char cReadData;
+	unsigned int iFileSize;
+	unsigned int ulCheckSum = 0;
+	int looptime;
+	struct stat st;
+	int i, flag;
+	int iResult;
+	int iLength = sizeof(unsigned int);
+	unsigned int tempNum;
+
+	if (stat(g_pcNVM_AllFile, &st) < 0) {
+		NVBAK_LOG("Error FileOp_ComputeCheckSum stat \n");
+		return 0;
+	}
+
+	iFileSize = st.st_size;
+
+	looptime = iFileSize / (sizeof(unsigned int));
+
+	iFileDesc_file = open(g_pcNVM_AllFile , O_RDWR);
+	if (iFileDesc_file < 0) {
+		NVBAK_LOG("FileOp_ComputeCheckSum cannot open data file\n");
+		return 0;
+	}
+	flag = 1;
+	for (i = 0; i < looptime; i++) {
+		iResult = read(iFileDesc_file, &tempNum, iLength);
+		if (iResult != iLength) {
+			NVBAK_LOG("FileOp_GetCheckSum cannot read checksum data\n");
+			close(iFileDesc_file);
+			return 0;
+		}
+		if (flag) {
+			ulCheckSum ^= tempNum;
+			flag = 0;
+		} else {
+			ulCheckSum += tempNum;
+			flag = 1;
+		}
+	}
+	tempNum = 0;
+	iLength = iFileSize % (sizeof(unsigned int));
+	iResult = read(iFileDesc_file, &tempNum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("FileOp_GetCheckSum cannot read last checksum data\n");
+		close(iFileDesc_file);
+		return 0;
+	}
+	ulCheckSum += tempNum;
+	//ulCheckSum^=gFileStartAddr;
+	close(iFileDesc_file);
+	return ulCheckSum;
+}
+#endif
+
+static unsigned int FileOp_ComputeReadBackCheckSum(void) {
+	int iFileDesc_file;
+	char cReadData;
+	unsigned int iFileSize;
+	unsigned int ulCheckSum = 0;
+	int looptime;
+	struct stat st;
+	int i, flag;
+	int iResult;
+	int iLength = sizeof(unsigned int);
+	unsigned int tempNum;
+
+	if (stat(g_pcNVM_AllFile_Check, &st) < 0) {
+		NVBAK_LOG("Error FileOp_ComputeCheckSum stat \n");
+		return 0;
+	}
+
+	iFileSize = st.st_size;
+
+	looptime = iFileSize / (sizeof(unsigned int));
+
+	iFileDesc_file = open(g_pcNVM_AllFile_Check , O_RDWR);
+	if (iFileDesc_file < 0) {
+		NVBAK_LOG("FileOp_ComputeCheckSum cannot open data file\n");
+		return 0;
+	}
+	flag = 1;
+	for (i = 0; i < looptime; i++) {
+		iResult = read(iFileDesc_file, &tempNum, iLength);
+		if (iResult != iLength) {
+			NVBAK_LOG("FileOp_GetCheckSum cannot read checksum data\n");
+			close(iFileDesc_file);
+			return 0;
+		}
+		if (flag) {
+			ulCheckSum ^= tempNum;
+			flag = 0;
+		} else {
+			ulCheckSum += tempNum;
+			flag = 1;
+		}
+	}
+	tempNum = 0;
+	iLength = iFileSize % (sizeof(unsigned int));
+	iResult = read(iFileDesc_file, &tempNum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("FileOp_GetCheckSum cannot read last checksum data\n");
+		close(iFileDesc_file);
+		return 0;
+	}
+	ulCheckSum += tempNum;
+	//ulCheckSum^=gFileStartAddr;
+	close(iFileDesc_file);
+	return ulCheckSum;
+}
+
+static BackupFileInfo stBackupFileInfo;
+static bool FileOp_GetCheckSum(void) {
+	int iFileDesc_map;
+	unsigned int ulCheckSum;
+	int iResult;
+	int iLength = sizeof(unsigned int);
+
+	iFileDesc_map = open(g_pcNVM_AllMap, O_RDONLY);
+	if (iFileDesc_map < 0) {
+		NVBAK_LOG("FileOp_GetCheckSum cannot open/create map data\n");
+		return false;
+	}
+	iResult = read(iFileDesc_map, &stBackupFileInfo.ulCheckSum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("FileOp_GetCheckSum cannot read checksum data\n");
+		close(iFileDesc_map);
+		return false;
+	}
+	iLength = sizeof(unsigned int);
+	iResult = read(iFileDesc_map, &stBackupFileInfo.iCommonFileNum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("FileOp_GetCheckSum cannot read checksum data\n");
+		close(iFileDesc_map);
+		return false;
+	}
+	iResult = read(iFileDesc_map, &stBackupFileInfo.iCustomFileNum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("FileOp_GetCheckSum cannot read checksum data\n");
+		close(iFileDesc_map);
+		return false;
+	}
+	close(iFileDesc_map);
+
+	return true;
+}
+
+static bool FileOp_SetCheckSum(unsigned int ulCheckSum) {
+	int iFileDesc_map = 0;
+	int iResult;
+	int iLength = sizeof(unsigned int);
+	unsigned int iOldCommonFileNum = g_i4CFG_File_Count;
+	unsigned int iOldCustomFileNum = g_i4CFG_File_Custom_Count;
+
+	pthread_mutex_lock(&gFileStartAddrlock);
+	ulCheckSum ^= gFileStartAddr;
+	gFileStartAddr = 0;
+	pthread_mutex_unlock(&gFileStartAddrlock);
+	iFileDesc_map = open(g_pcNVM_AllMap, O_WRONLY);
+	if (iFileDesc_map < 0) {
+		NVBAK_LOG("FileOp_SetCheckSum cannot open/create map data\n");
+		return false;
+	}
+	iResult = write(iFileDesc_map, &ulCheckSum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("FileOp_SetCheckSum cannot write checksum data\n");
+		close(iFileDesc_map);
+		return false;
+	}
+	NVBAK_LOG("common file num:%d,custom file num:%d\n", iOldCommonFileNum,
+	          iOldCustomFileNum);
+	iLength = sizeof(unsigned int);
+	iResult = write(iFileDesc_map, &iOldCommonFileNum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("FileOp_SetCheckSum cannot write common file num data\n");
+		close(iFileDesc_map);
+		return false;
+	}
+	iResult = write(iFileDesc_map, &iOldCustomFileNum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("FileOp_SetCheckSum cannot write custom file num data\n");
+		close(iFileDesc_map);
+		return false;
+	}
+	close(iFileDesc_map);
+	return true;
+}
+
+static bool FileOp_CompareCheckSum(unsigned int ulCheckSum1,
+                                   unsigned int ulCheckSum2) {
+	if (ulCheckSum1 != ulCheckSum2)
+		return false;
+	return true;
+}
+
+bool FileOp_IsSyncWithBinRegion( ) {
+    bool bRet = true;
+    struct stat st;
+    unsigned int iMapFileSize, iDatFileSize;
+    int fd, iResult;
+    char cMtdDevName[128] = {0};
+    unsigned int ulCheckSum;
+
+    NVBAK_LOG("Enter %s\n", __FUNCTION__);
+
+    if (NVM_Init() < 0) {
+        NVBAK_LOG("%s--NVM_Init fail !!!", __FUNCTION__);
+        return false;
+    }
+
+    memset(cMtdDevName, 0, sizeof cMtdDevName);
+    snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+
+    bool bWorkForBinRegion = true;
+    int iFileMask[ALL];
+    //need init ifilemark value ,otherwize it cause backup fail on 6592+kk1.mp3+non lte project
+    memset(iFileMask, 0, (ALL * (sizeof(int))));
+    if (!nvram_md5_support() && !nvram_evdo_support()) {
+        iFileMask[5] = 1;
+        iFileMask[6] = 1;
+        iFileMask[10] = 1;
+        iFileMask[11] = 1;
+        iFileMask[12] = 1;
+        iFileMask[13] = 1;
+    } else if (!nvram_md5_support() && nvram_evdo_support()) {
+        iFileMask[5] = 1;
+        iFileMask[6] = 1;
+        iFileMask[10] = 1;
+        iFileMask[11] = 1;
+        iFileMask[12] = 1;
+    } else if (nvram_md5_support() && !nvram_evdo_support()) {
+        iFileMask[5] = 1;
+        iFileMask[6] = 1;
+        iFileMask[13] = 1;
+    } else {
+        iFileMask[5] = 1;
+        iFileMask[6] = 1;
+    }
+    if (!(nvram_ecci_c2k_support())) {
+        iFileMask[14] = 1;
+        iFileMask[15] = 1;
+        iFileMask[16] = 1;
+    }
+
+//   ret=FileOp_BackupData_All();
+    bRet = FileOp_BackupDataToFiles(iFileMask, bWorkForBinRegion);
+    if (bRet == false) {
+        NVBAK_LOG("[NVRAM]:Crete the map file and the data file fail\n");
+        return false;
+    }
+    if (stat(g_pcNVM_AllMap, &st) < 0) {
+        NVBAK_LOG("[NVRAM]:Error MapFile stat \n");
+        return false;
+    }
+    iMapFileSize = st.st_size;
+    if (stat(g_pcNVM_AllFile, &st) < 0) {
+        NVBAK_LOG("[NVRAM]:Error DatFile stat \n");
+        return false;
+    }
+    iDatFileSize = st.st_size;
+    NVBAK_LOG("[NVRAM]:info:iMapFileSize:%d,iDatFileSize:%d\n", iMapFileSize,
+              iDatFileSize);
+
+    //NVBAK_LOG("[NVRAM]:Backup_Partition:%d\n",iBackup_Partition);
+    fd = open(cMtdDevName, O_RDWR);
+    if (fd < 0) {
+        NVBAK_LOG("[NVRAM]:mtd open error\r\n");
+        free(bBadBlockBitMap);
+        return false;
+    }
+
+    // get checksum from AllMap
+    if (!FileOp_GetCheckSum()) {
+       NVBAK_LOG("[NVRAM]: FileOp_GetCheckSum() error \n");
+       close(fd);
+       return false;
+    }
+
+    // read checksum from bin region
+    if(lseek(fd, 3 * sizeof(unsigned int), SEEK_SET) < 0) {
+        NVBAK_LOG("[NVRAM]:seek to %lu error %d\n", 3 * sizeof(unsigned int), errno);
+        close(fd);
+        return false;
+    }
+    iResult = read(fd, &ulCheckSum, sizeof(unsigned int));
+    if (iResult != sizeof(unsigned int)) {
+        NVBAK_LOG("[NVRAM]: read bin region error\r\n");
+        close(fd);
+        return false;
+    }
+    close(fd);
+
+    NVBAK_LOG("[NVRAM]: %s, checksum(in nvdata)=0x%X, checksum(in binregion)=0x%X \n", __FUNCTION__, stBackupFileInfo.ulCheckSum, ulCheckSum);
+    return (stBackupFileInfo.ulCheckSum == ulCheckSum);
+}
+
+//-----------------------------------------------------------------------------
+bool FileOp_BackupDataToFiles(int * iFileMask, bool bWorkForBinRegion) {
+	DIR *dir;
+	struct dirent *entry;
+	struct stat statbuf;
+	const char* lpSrcDirName = NULL;
+	char acSrcPathName[MAX_NAMESIZE];
+	char acDstPathName[MAX_NAMESIZE];
+	unsigned int iFileNum = 0;
+	int iFileDesc_map, FileSize = 0, eBackupType, iFileDesc_file;
+	bool bRet = true;
+	off_t iResult;
+	unsigned int i = 0;
+	unsigned int ulCheckSum = 0;
+	unsigned int iOldCommonFileNum = 0;
+	unsigned int iOldCustomFileNum = 0;
+	bool bMask = true;
+	int iMask[ALL];
+	File_Title_Header1 FileTitleInfo1;
+	File_Title_Header2 FileTitleInfo2;
+	File_Title_Header3 FileTitleInfo3;
+	File_Title_Header4 FileTitleInfo4;
+	File_Title_Header5 FileTitleInfo5;
+	memset(&FileTitleInfo1, 0, sizeof(File_Title_Header1));
+	memset(&FileTitleInfo2, 0, sizeof(File_Title_Header2));
+	memset(&FileTitleInfo3, 0, sizeof(File_Title_Header3));
+	memset(&FileTitleInfo4, 0, sizeof(File_Title_Header4));
+	memset(&FileTitleInfo5, 0, sizeof(File_Title_Header5));
+
+	if (iFileMask != NULL)
+		memcpy(iMask, iFileMask, (ALL * sizeof(int)));
+	else {
+		NVBAK_LOG("iFileMask is NULL\n");
+		return false;
+	}
+
+	/* Create the map file */
+	iFileDesc_map = open(g_pcNVM_AllMap, O_TRUNC | O_CREAT | O_WRONLY,
+	                     S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_map) {
+		/* Error handling */
+		NVBAK_LOG("FileOp_MakeFile cannot open/create map data\n");
+		return false;
+	}
+
+	write(iFileDesc_map, &ulCheckSum, sizeof(unsigned int));
+	write(iFileDesc_map, &iOldCommonFileNum, sizeof(unsigned int));
+	write(iFileDesc_map, &iOldCustomFileNum, sizeof(unsigned int));
+	/* Reserve the FileTitleInfo space */
+	if (!nvram_ecci_c2k_support()) {
+		if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		        && nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo1, sizeof(FileTitleInfo1));
+		else if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		         && !nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo2,
+			      sizeof(FileTitleInfo2) - 2 * sizeof(short
+			              int));//In order to align, minus 2*sizeof(short int)
+		else if (nvram_platform_header_offset == 0 && !nvram_md5_support()
+		         && nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo3,
+			      sizeof(FileTitleInfo3) - 4 * sizeof(short
+			              int));//In order to align, minus 4*sizeof(short int)
+		else if (nvram_platform_header_offset == 0 && !nvram_md5_support()
+		         && !nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo4,
+			      sizeof(FileTitleInfo4) - 4 * sizeof(short int));
+		else if (nvram_platform_header_offset != 0 && nvram_md5_support()
+		         && nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo1,
+			      sizeof(FileTitleInfo1) - nvram_platform_header_offset * 2);
+		else if (nvram_platform_header_offset != 0 && nvram_md5_support()
+		         && !nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo2,
+			      sizeof(FileTitleInfo2) - 2 * sizeof(short int) - nvram_platform_header_offset *
+			      2);//In order to align, minus 2*sizeof(short int)
+		else if (nvram_platform_header_offset != 0 && !nvram_md5_support()
+		         && nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo3,
+			      sizeof(FileTitleInfo3) - 4 * sizeof(short int) - nvram_platform_header_offset *
+			      2);//In order to align, minus 4*sizeof(short int)
+		else
+			write(iFileDesc_map, &FileTitleInfo4,
+			      sizeof(FileTitleInfo4) - 4 * sizeof(short int) - nvram_platform_header_offset *
+			      2);
+	} else
+		write(iFileDesc_map, &FileTitleInfo5, sizeof(FileTitleInfo5));
+
+
+	close(iFileDesc_map);
+	/* Create the data file */
+	iFileDesc_file = open(g_pcNVM_AllFile , O_TRUNC | O_CREAT | O_RDWR,
+	                      S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+	if (INVALID_HANDLE_VALUE == iFileDesc_file) {
+		/* Error handling */
+		NVBAK_LOG("FileOp_MakeFile cannot open/create data file\n");
+		return false;
+	}
+	close(iFileDesc_file);
+
+	for (eBackupType = APBOOT; eBackupType < ALL; eBackupType++) {
+		if (iMask[eBackupType] == 1)
+			continue;
+
+		switch (eBackupType) {
+		case APBOOT:
+			NVBAK_LOG("FileOp_BackupData_All APBOOT start !");
+			lpSrcDirName = g_pcNVM_APRdebFile;
+			break;
+
+		case MDBOOT:
+			NVBAK_LOG("FileOp_BackupData_All MDBOOT start !");
+			lpSrcDirName = g_pcNVM_MDRdebFile;
+			break;
+
+		case APCLN:
+			NVBAK_LOG("FileOp_BackupData_All APCLN start !");
+			lpSrcDirName = g_pcNVM_APCalFile;
+			break;
+
+		case MDCLN:
+			NVBAK_LOG("FileOp_BackupData_All MDCLN start !");
+			lpSrcDirName = g_pcNVM_MDCalFile;
+			break;
+
+		case MDIMP:
+			NVBAK_LOG("FileOp_BackupData_All MDIMP start !");
+			lpSrcDirName = g_pcNVM_MDImptFile;
+			break;
+
+		case MDCOR:
+			NVBAK_LOG("FileOp_BackupData_All MDCOR start !");
+			lpSrcDirName = g_pcNVM_MDCoreFile;
+			break;
+
+		case MDDATA:
+			NVBAK_LOG("FileOp_BackupData_All MDDATA start !");
+			lpSrcDirName = g_pcNVM_MDDataFile;
+			break;
+		//Add for second modem for MT658*
+		case MD2BOOT:
+			if (nvram_platform_header_offset == 0) {
+				NVBAK_LOG("FileOp_BackupData_All MD2BOOT start !");
+				lpSrcDirName = g_pcNVM_MD2RdebFile;
+			}
+			break;
+
+		case MD2CLN:
+			if (nvram_platform_header_offset == 0) {
+
+				NVBAK_LOG("FileOp_BackupData_All MD2CLN start !");
+				lpSrcDirName = g_pcNVM_MD2CalFile;
+			}
+			break;
+
+		case MD2IMP:
+			if (nvram_platform_header_offset == 0) {
+
+				NVBAK_LOG("FileOp_BackupData_All MD2IMP start !");
+				lpSrcDirName = g_pcNVM_MD2ImptFile;
+			}
+			break;
+
+		//End of Comment
+		//LTE support
+		case MD5BOOT:
+			if (nvram_platform_header_offset == 0) {
+
+				NVBAK_LOG("FileOp_BackupData_All MD5BOOT start !");
+				lpSrcDirName = g_pcNVM_MD5RdebFile;
+			}
+			break;
+
+		case MD5CLN:
+			if (nvram_platform_header_offset == 0) {
+				NVBAK_LOG("FileOp_BackupData_All MD5CLN start !");
+				lpSrcDirName = g_pcNVM_MD5CalFile;
+			}
+			break;
+
+		case MD5IMP:
+			if (nvram_platform_header_offset == 0) {
+				NVBAK_LOG("FileOp_BackupData_All MD5IMP start !");
+				lpSrcDirName = g_pcNVM_MD5ImptFile;
+			}
+			break;
+		case VIA:
+			NVBAK_LOG("FileOp_BackupData_All VIA start !");
+			lpSrcDirName = g_pcNVM_Via;
+			break;
+		/*Add for C2K modem*/
+		case MD3BOOT:
+			if (nvram_platform_header_offset == 0) {
+				NVBAK_LOG("FileOp_BackupData_All MD3BOOT start !");
+				lpSrcDirName = g_pcNVM_MD3RdebFile;
+			}
+			break;
+
+		case MD3CLN:
+			if (nvram_platform_header_offset == 0) {
+
+				NVBAK_LOG("FileOp_BackupData_All MD3CLN start !");
+				lpSrcDirName = g_pcNVM_MD3CalFile;
+			}
+			break;
+
+		case MD3IMP:
+			if (nvram_platform_header_offset == 0) {
+
+				NVBAK_LOG("FileOp_BackupData_All MD3IMP start !");
+				lpSrcDirName = g_pcNVM_MD3ImptFile;
+			}
+			break;
+		/*Add for C2K modem -End*/
+		case ALL:
+		default:
+			return false;
+			//break;
+		}
+
+		/* Check the folder in NvRam is exists */
+		NVBAK_LOG("open dir %s !", lpSrcDirName);
+		if (lpSrcDirName) {
+			dir = opendir(lpSrcDirName);
+		}
+
+		if (dir == NULL) {
+			NVBAK_LOG("FileOp_BackupData open dir: %s ,this dir not exist!", lpSrcDirName);
+			continue;
+			//return false;
+		}
+
+		while (1) {
+			entry = readdir(dir);
+
+			if (entry == NULL) {
+				break;
+			}
+
+			if (!strcmp(entry->d_name, ".") || !strcmp(entry->d_name, "..")) {
+				continue;
+			}
+
+			sprintf(acSrcPathName, "%s/%s", lpSrcDirName, entry->d_name);
+			NVBAK_LOG("FileOp_BackupData: (%s)\n", acSrcPathName);
+			if (bWorkForBinRegion) {
+				if (eBackupType == APBOOT || eBackupType == APCLN) {
+					bMask = true;
+					for (i = 0; i < g_Backup_File_Count; i++) {
+						if (0 == strcmp(entry->d_name, aBackupToBinRegion[i].cFileName) ) {
+							bMask = false;
+							break;
+						}
+					}
+
+					if (bMask == true)
+						continue;
+				}
+			}
+
+			// avoid backup the files in performace array  to PC side.
+			if (!bWorkForBinRegion) {
+				if (eBackupType == APBOOT || eBackupType == APCLN) {
+					bMask = false;
+					for (i = 0; i < g_Performance_File_Count; i++) {
+
+						if (0 == strcmp(entry->d_name, aPerformance[i].cFileName) ) {
+							NVBAK_LOG("skip (%s)\n", entry->d_name);
+							bMask = true;
+							break;
+						}
+					}
+
+					if (bMask == true)
+						continue;
+				}
+			}
+			if (!FileOp_MakeFile(acSrcPathName, &iFileNum, &FileSize)) {
+				NVBAK_LOG("ERROR FileOp_BackupData (%s)\n", acSrcPathName);
+				bRet = false;
+				continue;
+			}
+		}
+		closedir(dir);
+		NVBAK_LOG("FileSize is (%d) !", FileSize);
+		NVBAK_LOG("FileNum is (%u) !", iFileNum);
+		if (nvram_platform_header_offset == 0 && !nvram_ecci_c2k_support()) {
+			if (nvram_md5_support() && nvram_evdo_support()) {
+				FileTitleInfo1.iFileBufLen += FileSize;
+				NVBAK_LOG("iFileBufLen is (%d) !", FileTitleInfo1.iFileBufLen);
+			} else if (nvram_md5_support() && !nvram_evdo_support()) {
+				FileTitleInfo2.iFileBufLen += FileSize;
+				NVBAK_LOG("iFileBufLen is (%d) !", FileTitleInfo2.iFileBufLen);
+			} else if (!nvram_md5_support() && nvram_evdo_support()) {
+				FileTitleInfo3.iFileBufLen += FileSize;
+				NVBAK_LOG("iFileBufLen is (%d) !", FileTitleInfo3.iFileBufLen);
+			} else {
+				FileTitleInfo4.iFileBufLen += FileSize;
+				NVBAK_LOG("iFileBufLen is (%d) !", FileTitleInfo4.iFileBufLen);
+			}
+		} else if (nvram_platform_header_offset == 0 && nvram_ecci_c2k_support()) {
+			FileTitleInfo5.iFileBufLen += FileSize;
+			NVBAK_LOG("iFileBufLen is (%d) !", FileTitleInfo5.iFileBufLen);
+		}
+
+		if (nvram_platform_header_offset != 0 && !nvram_ecci_c2k_support()) {
+			if (nvram_md5_support() && nvram_evdo_support()) {
+				*((short int *) & (FileTitleInfo1.iFileBufLen) - nvram_platform_header_offset)
+				+= FileSize;
+				NVBAK_LOG("iFileBufLen is (%d) !",
+				          *((short int *) & (FileTitleInfo1.iFileBufLen) - nvram_platform_header_offset));
+			} else if (nvram_md5_support() && !nvram_evdo_support()) {
+				*((short int *) & (FileTitleInfo2.iFileBufLen) - nvram_platform_header_offset)
+				+= FileSize;
+				NVBAK_LOG("iFileBufLen is (%d) !",
+				          *((short int *) & (FileTitleInfo2.iFileBufLen) - nvram_platform_header_offset));
+			} else if (!nvram_md5_support() && nvram_evdo_support()) {
+				*((short int *) & (FileTitleInfo3.iFileBufLen) - nvram_platform_header_offset)
+				+= FileSize;
+				NVBAK_LOG("iFileBufLen is (%d) !",
+				          *((short int *) & (FileTitleInfo3.iFileBufLen) - nvram_platform_header_offset));
+			} else {
+				*((short int *) & (FileTitleInfo4.iFileBufLen) - nvram_platform_header_offset)
+				+= FileSize;
+				NVBAK_LOG("iFileBufLen is (%d) !",
+				          *((short int *) & (FileTitleInfo4.iFileBufLen) - nvram_platform_header_offset));
+			}
+		}
+
+
+		switch (eBackupType) {
+		case APBOOT:
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				FileTitleInfo1.iApBootNum = iFileNum;
+				NVBAK_LOG("APBOOT num (%d) !", FileTitleInfo1.iApBootNum);
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo2.iApBootNum = iFileNum;
+				NVBAK_LOG("APBOOT num (%d) !", FileTitleInfo2.iApBootNum);
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo3.iApBootNum = iFileNum;
+				NVBAK_LOG("APBOOT num (%d) !", FileTitleInfo3.iApBootNum);
+			} else if (!nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo4.iApBootNum = iFileNum;
+				NVBAK_LOG("APBOOT num (%d) !", FileTitleInfo4.iApBootNum);
+			} else {
+				FileTitleInfo5.iApBootNum = iFileNum;
+				NVBAK_LOG("APBOOT num (%d) !", FileTitleInfo5.iApBootNum);
+			}
+			break;
+
+		case MDBOOT:
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				FileTitleInfo1.iMdBootNum = iFileNum;
+				NVBAK_LOG("MDBOOT num (%d) !", FileTitleInfo1.iMdBootNum);
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo2.iMdBootNum = iFileNum;
+				NVBAK_LOG("MDBOOT num (%d) !", FileTitleInfo2.iMdBootNum);
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo3.iMdBootNum = iFileNum;
+				NVBAK_LOG("MDBOOT num (%d) !", FileTitleInfo3.iMdBootNum);
+			} else if (!nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo4.iMdBootNum = iFileNum;
+				NVBAK_LOG("MDBOOT num (%d) !", FileTitleInfo4.iMdBootNum);
+			} else {
+				FileTitleInfo5.iMdBootNum = iFileNum;
+				NVBAK_LOG("MDBOOT num (%d) !", FileTitleInfo5.iMdBootNum);
+			}
+			break;
+
+		case APCLN:
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				FileTitleInfo1.iApCleanNum = iFileNum;
+				NVBAK_LOG("APCLN num (%d) !", FileTitleInfo1.iApCleanNum);
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo2.iApCleanNum = iFileNum;
+				NVBAK_LOG("APCLN num (%d) !", FileTitleInfo2.iApCleanNum);
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo3.iApCleanNum = iFileNum;
+				NVBAK_LOG("APCLN num (%d) !", FileTitleInfo3.iApCleanNum);
+			} else if (!nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo4.iApCleanNum = iFileNum;
+				NVBAK_LOG("APCLN num (%d) !", FileTitleInfo4.iApCleanNum);
+
+			} else {
+				FileTitleInfo5.iApCleanNum = iFileNum;
+				NVBAK_LOG("APCLN num (%d) !", FileTitleInfo5.iApCleanNum);
+
+			}
+			break;
+
+		case MDCLN:
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				FileTitleInfo1.iMdCleanNum = iFileNum;
+				NVBAK_LOG("MDCLN num (%d) !", FileTitleInfo1.iMdCleanNum);
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo2.iMdCleanNum = iFileNum;
+				NVBAK_LOG("MDCLN num (%d) !", FileTitleInfo2.iMdCleanNum);
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo3.iMdCleanNum = iFileNum;
+				NVBAK_LOG("MDCLN num (%d) !", FileTitleInfo3.iMdCleanNum);
+			} else if (!nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo4.iMdCleanNum = iFileNum;
+				NVBAK_LOG("MDCLN num (%d) !", FileTitleInfo4.iMdCleanNum);
+			} else {
+				FileTitleInfo5.iMdCleanNum = iFileNum;
+				NVBAK_LOG("MDCLN num (%d) !", FileTitleInfo5.iMdCleanNum);
+			}
+			break;
+
+		case MDIMP:
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				FileTitleInfo1.iMdImpntNum = iFileNum;
+				NVBAK_LOG("MDIMP num (%d) !", FileTitleInfo1.iMdImpntNum);
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo2.iMdImpntNum = iFileNum;
+				NVBAK_LOG("MDIMP num (%d) !", FileTitleInfo2.iMdImpntNum);
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo3.iMdImpntNum = iFileNum;
+				NVBAK_LOG("MDIMP num (%d) !", FileTitleInfo3.iMdImpntNum);
+			} else if (!nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo4.iMdImpntNum = iFileNum;
+				NVBAK_LOG("MDIMP num (%d) !", FileTitleInfo4.iMdImpntNum);
+			} else {
+				FileTitleInfo5.iMdImpntNum = iFileNum;
+				NVBAK_LOG("MDIMP num (%d) !", FileTitleInfo5.iMdImpntNum);
+			}
+			break;
+
+		case MDCOR:
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				FileTitleInfo1.iMdCoreNum = iFileNum;
+				NVBAK_LOG("MDCOR num (%d) !", FileTitleInfo1.iMdCoreNum);
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo2.iMdCoreNum = iFileNum;
+				NVBAK_LOG("MDCOR num (%d) !", FileTitleInfo2.iMdCoreNum);
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo3.iMdCoreNum = iFileNum;
+				NVBAK_LOG("MDCOR num (%d) !", FileTitleInfo3.iMdCoreNum);
+			} else if (!nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo4.iMdCoreNum = iFileNum;
+				NVBAK_LOG("MDCOR num (%d) !", FileTitleInfo4.iMdCoreNum);
+			} else {
+				FileTitleInfo5.iMdCoreNum = iFileNum;
+				NVBAK_LOG("MDCOR num (%d) !", FileTitleInfo5.iMdCoreNum);
+			}
+			break;
+
+		case MDDATA:
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				FileTitleInfo1.iMdDataNum = iFileNum;
+				NVBAK_LOG("MDDATA num (%d) !", FileTitleInfo1.iMdDataNum);
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo2.iMdDataNum = iFileNum;
+				NVBAK_LOG("MDDATA num (%d) !", FileTitleInfo2.iMdDataNum);
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo3.iMdDataNum = iFileNum;
+				NVBAK_LOG("MDDATA num (%d) !", FileTitleInfo3.iMdDataNum);
+			} else if (!nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo4.iMdDataNum = iFileNum;
+				NVBAK_LOG("MDDATA num (%d) !", FileTitleInfo4.iMdDataNum);
+			} else {
+				FileTitleInfo5.iMdDataNum = iFileNum;
+				NVBAK_LOG("MDDATA num (%d) !", FileTitleInfo5.iMdDataNum);
+			}
+			break;
+		//Add for second modem for MT658*
+		case MD2BOOT:
+			if (nvram_platform_header_offset == 0) {
+				if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+					FileTitleInfo1.iMd2BootNum = iFileNum;
+					NVBAK_LOG("MD2BOOT num (%d) !", FileTitleInfo1.iMd2BootNum);
+				} else if (nvram_md5_support() && !nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo2.iMd2BootNum = iFileNum;
+					NVBAK_LOG("MD2BOOT num (%d) !", FileTitleInfo2.iMd2BootNum);
+				} else if (!nvram_md5_support() && nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo3.iMd2BootNum = iFileNum;
+					NVBAK_LOG("MD2BOOT num (%d) !", FileTitleInfo3.iMd2BootNum);
+				} else if (!nvram_md5_support() && !nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo4.iMd2BootNum = iFileNum;
+					NVBAK_LOG("MD2BOOT num (%d) !", FileTitleInfo4.iMd2BootNum);
+				} else {
+					FileTitleInfo5.iMd2BootNum = iFileNum;
+					NVBAK_LOG("MD2BOOT num (%d) !", FileTitleInfo5.iMd2BootNum);
+				}
+			}
+			break;
+
+		case MD2CLN:
+			if (nvram_platform_header_offset == 0) {
+				if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+					FileTitleInfo1.iMd2CleanNum = iFileNum;
+					NVBAK_LOG("MD2CLN num (%d) !", FileTitleInfo1.iMd2CleanNum);
+				} else if (nvram_md5_support() && !nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo2.iMd2CleanNum = iFileNum;
+					NVBAK_LOG("MD2CLN num (%d) !", FileTitleInfo2.iMd2CleanNum);
+				} else if (!nvram_md5_support() && nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo3.iMd2CleanNum = iFileNum;
+					NVBAK_LOG("MD2CLN num (%d) !", FileTitleInfo3.iMd2CleanNum);
+				} else if (!nvram_md5_support() && !nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo4.iMd2CleanNum = iFileNum;
+					NVBAK_LOG("MD2CLN num (%d) !", FileTitleInfo4.iMd2CleanNum);
+				} else {
+					FileTitleInfo5.iMd2CleanNum = iFileNum;
+					NVBAK_LOG("MD2CLN num (%d) !", FileTitleInfo5.iMd2CleanNum);
+				}
+			}
+			break;
+
+		case MD2IMP:
+			if (nvram_platform_header_offset == 0) {
+				if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+					FileTitleInfo1.iMd2ImpntNum = iFileNum;
+					NVBAK_LOG("MD2IMP num (%d) !", FileTitleInfo1.iMd2ImpntNum);
+				} else if (nvram_md5_support() && !nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo2.iMd2ImpntNum = iFileNum;
+					NVBAK_LOG("MD2IMP num (%d) !", FileTitleInfo2.iMd2ImpntNum);
+				} else if (!nvram_md5_support() && nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo3.iMd2ImpntNum = iFileNum;
+					NVBAK_LOG("MD2IMP num (%d) !", FileTitleInfo3.iMd2ImpntNum);
+				} else if (!nvram_md5_support() && !nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo4.iMd2ImpntNum = iFileNum;
+					NVBAK_LOG("MD2IMP num (%d) !", FileTitleInfo4.iMd2ImpntNum);
+				} else {
+					FileTitleInfo5.iMd2ImpntNum = iFileNum;
+					NVBAK_LOG("MD2IMP num (%d) !", FileTitleInfo5.iMd2ImpntNum);
+				}
+			}
+			break;
+		//End of Comment
+
+		//LTE support
+		case MD5BOOT:
+			if (nvram_platform_header_offset == 0) {
+				if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+					FileTitleInfo1.iMd5BootNum = iFileNum;
+					NVBAK_LOG("MD5BOOT num (%d) !", FileTitleInfo1.iMd5BootNum);
+				} else if (nvram_md5_support() && !nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo2.iMd5BootNum = iFileNum;
+					NVBAK_LOG("MD5BOOT num (%d) !", FileTitleInfo2.iMd5BootNum);
+				} else if (!nvram_md5_support() && nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo3.iMd5BootNum = iFileNum;
+					NVBAK_LOG("MD5BOOT num (%d) !", FileTitleInfo3.iMd5BootNum);
+				} else if (!nvram_md5_support() && !nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo4.iMd5BootNum = iFileNum;
+					NVBAK_LOG("MD5BOOT num (%d) !", FileTitleInfo4.iMd5BootNum);
+				} else {
+					FileTitleInfo5.iMd5BootNum = iFileNum;
+					NVBAK_LOG("MD5BOOT num (%d) !", FileTitleInfo5.iMd5BootNum);
+				}
+			}
+			break;
+
+		case MD5CLN:
+			if (nvram_platform_header_offset == 0) {
+				if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+					FileTitleInfo1.iMd5CleanNum = iFileNum;
+					NVBAK_LOG("MD5CLN num (%d) !", FileTitleInfo1.iMd5CleanNum);
+				} else if (nvram_md5_support() && !nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo2.iMd5CleanNum = iFileNum;
+					NVBAK_LOG("MD5CLN num (%d) !", FileTitleInfo2.iMd5CleanNum);
+				} else if (!nvram_md5_support() && nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo3.iMd5CleanNum = iFileNum;
+					NVBAK_LOG("MD5CLN num (%d) !", FileTitleInfo3.iMd5CleanNum);
+				} else if (!nvram_md5_support() && !nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo4.iMd5CleanNum = iFileNum;
+					NVBAK_LOG("MD5CLN num (%d) !", FileTitleInfo4.iMd5CleanNum);
+				} else {
+					FileTitleInfo5.iMd5CleanNum = iFileNum;
+					NVBAK_LOG("MD5CLN num (%d) !", FileTitleInfo5.iMd5CleanNum);
+				}
+			}
+			break;
+
+		case MD5IMP:
+			if (nvram_platform_header_offset == 0) {
+				if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support() ) {
+					FileTitleInfo1.iMd5ImpntNum = iFileNum;
+					NVBAK_LOG("MD5IMP num (%d) !", FileTitleInfo1.iMd5ImpntNum);
+				} else if (nvram_md5_support() && !nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo2.iMd5ImpntNum = iFileNum;
+					NVBAK_LOG("MD5IMP num (%d) !", FileTitleInfo2.iMd5ImpntNum);
+				} else if (!nvram_md5_support() && nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo3.iMd5ImpntNum = iFileNum;
+					NVBAK_LOG("MD5IMP num (%d) !", FileTitleInfo3.iMd5ImpntNum);
+				} else if (!nvram_md5_support() && !nvram_evdo_support()
+				           && !nvram_ecci_c2k_support()) {
+					FileTitleInfo4.iMd5ImpntNum = iFileNum;
+					NVBAK_LOG("MD5IMP num (%d) !", FileTitleInfo4.iMd5ImpntNum);
+				} else {
+					FileTitleInfo5.iMd5ImpntNum = iFileNum;
+					NVBAK_LOG("MD5IMP num (%d) !", FileTitleInfo5.iMd5ImpntNum);
+				}
+			}
+			break;
+		case VIA:
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				FileTitleInfo1.iViaNum = iFileNum;
+				NVBAK_LOG("VIA num (%d) !", FileTitleInfo1.iViaNum);
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo2.iViaNum = iFileNum;
+				NVBAK_LOG("VIA num (%d) !", FileTitleInfo2.iViaNum);
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo3.iViaNum = iFileNum;
+				NVBAK_LOG("VIA num (%d) !", FileTitleInfo3.iViaNum);
+			} else if (!nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				FileTitleInfo4.iViaNum = iFileNum;
+				NVBAK_LOG("VIA num (%d) !", FileTitleInfo4.iViaNum);
+			}
+			break;
+		case MD3BOOT:
+			if (nvram_ecci_c2k_support()) {
+				FileTitleInfo5.iMd3BootNum = iFileNum;
+				NVBAK_LOG("iMd3BootNum num (%d) !", FileTitleInfo5.iMd3BootNum);
+			}
+			break;
+		case MD3CLN:
+			if (nvram_ecci_c2k_support()) {
+				FileTitleInfo5.iMd3CleanNum = iFileNum;
+				NVBAK_LOG("iMd3CleanNum num (%d) !", FileTitleInfo5.iMd3CleanNum);
+			}
+			break;
+		case MD3IMP:
+			if (nvram_ecci_c2k_support()) {
+				FileTitleInfo5.iMd3ImpntNum = iFileNum;
+				NVBAK_LOG("iMd3ImpntNum num (%d) !", FileTitleInfo5.iMd3ImpntNum);
+			}
+			break;
+		case ALL:
+		default:
+			return false;
+			break;
+		}
+		iFileNum = 0;
+		FileSize = 0;
+	}
+
+	iFileDesc_map = open(g_pcNVM_AllMap, O_WRONLY);
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_map) {
+		/* Error handling */
+		NVBAK_LOG("FileOp_MakeFile cannot open/create map data\n");
+		return false;
+	}
+	write(iFileDesc_map, &ulCheckSum, sizeof(unsigned int));
+	write(iFileDesc_map, &iOldCommonFileNum, sizeof(unsigned int));
+	write(iFileDesc_map, &iOldCustomFileNum, sizeof(unsigned int));
+	if (!nvram_ecci_c2k_support()) {
+		if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		        && nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo1, sizeof(FileTitleInfo1));
+		else if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		         && !nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo2,
+			      sizeof(FileTitleInfo2) - 2 * sizeof(short
+			              int));//In order to align, minus 2*sizeof(short int)
+		else if (nvram_platform_header_offset == 0 && !nvram_md5_support()
+		         && nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo3,
+			      sizeof(FileTitleInfo3) - 4 * sizeof(short
+			              int));//In order to align, minus 4*sizeof(short int)
+		else if (nvram_platform_header_offset == 0 && !nvram_md5_support()
+		         && !nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo4,
+			      sizeof(FileTitleInfo4) - 4 * sizeof(short int));
+		else if (nvram_platform_header_offset != 0 && nvram_md5_support()
+		         && nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo1,
+			      sizeof(FileTitleInfo1) - nvram_platform_header_offset * 2);
+		else if (nvram_platform_header_offset != 0 && nvram_md5_support()
+		         && !nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo2,
+			      sizeof(FileTitleInfo2) - 2 * sizeof(short int) - nvram_platform_header_offset *
+			      2);//In order to align, minus 2*sizeof(short int)
+		else if (nvram_platform_header_offset != 0 && !nvram_md5_support()
+		         && nvram_evdo_support())
+			write(iFileDesc_map, &FileTitleInfo3,
+			      sizeof(FileTitleInfo3) - 4 * sizeof(short int) - nvram_platform_header_offset *
+			      2);//In order to align, minus 4*sizeof(short int)
+		else {
+			int len = sizeof(FileTitleInfo4) - 4 * sizeof(short int) - nvram_platform_header_offset * 2;
+			if (write(iFileDesc_map, &FileTitleInfo4, len) != len) {
+				NVBAK_LOG("[NVRAM]: write error. (errno=%d)", errno);
+				close(iFileDesc_map);
+				return false;
+			}
+		}
+	} else
+		write(iFileDesc_map, &FileTitleInfo5, sizeof(FileTitleInfo5));
+
+	close(iFileDesc_map);
+	iFileDesc_map = open(g_pcNVM_AllMap, O_RDONLY);
+	memset(&FileTitleInfo1, 0, sizeof(File_Title_Header1));
+	memset(&FileTitleInfo2, 0, sizeof(File_Title_Header2));
+	memset(&FileTitleInfo3, 0, sizeof(File_Title_Header3));
+	memset(&FileTitleInfo4, 0, sizeof(File_Title_Header4));
+    if(INVALID_HANDLE_VALUE == iFileDesc_map)
+    {
+        /* Error handling */
+        NVBAK_LOG("FileOp_MakeFile cannot open/create map data\n");
+        return false;
+    }
+	iResult = lseek(iFileDesc_map, sizeof(unsigned int) + 2 * sizeof(unsigned int),
+	                SEEK_SET);
+	if (!nvram_ecci_c2k_support()) {
+
+		if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		        && nvram_evdo_support())
+			read(iFileDesc_map, &FileTitleInfo1, sizeof(FileTitleInfo1));
+		else if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		         && !nvram_evdo_support())
+			read(iFileDesc_map, &FileTitleInfo2,
+			     sizeof(FileTitleInfo2) - 2 * sizeof(short
+			             int));//In order to align, minus 2*sizeof(short int)
+		else if (nvram_platform_header_offset == 0 && !nvram_md5_support()
+		         && nvram_evdo_support())
+			read(iFileDesc_map, &FileTitleInfo3,
+			     sizeof(FileTitleInfo3) - 4 * sizeof(short
+			             int));//In order to align, minus 4*sizeof(short int)
+		else if (nvram_platform_header_offset == 0 && !nvram_md5_support()
+		         && !nvram_evdo_support())
+			if (read(iFileDesc_map, &FileTitleInfo4,sizeof(FileTitleInfo4) - 4 * sizeof(short int)) != sizeof(FileTitleInfo4) - 4 * sizeof(short int)) {
+				NVBAK_LOG("[NVRAM]: read error. (errno=%d)", errno);
+				close(iFileDesc_map);
+				return false;
+			}
+		else if (nvram_platform_header_offset != 0 && nvram_md5_support()
+		         && nvram_evdo_support())
+			read(iFileDesc_map, &FileTitleInfo1,
+			     sizeof(FileTitleInfo1) - nvram_platform_header_offset * 2);
+		else if (nvram_platform_header_offset != 0 && nvram_md5_support()
+		         && !nvram_evdo_support())
+			read(iFileDesc_map, &FileTitleInfo2,
+			     sizeof(FileTitleInfo2) - 2 * sizeof(short int) - nvram_platform_header_offset *
+			     2);//In order to align, minus 2*sizeof(short int)
+		else if (nvram_platform_header_offset != 0 && !nvram_md5_support()
+		         && nvram_evdo_support())
+			read(iFileDesc_map, &FileTitleInfo3,
+			     sizeof(FileTitleInfo3) - 4 * sizeof(short int) - nvram_platform_header_offset *
+			     2);//In order to align, minus 4*sizeof(short int)
+		else
+			if (read(iFileDesc_map, &FileTitleInfo4,
+			     sizeof(FileTitleInfo4) - 4 * sizeof(short int) - nvram_platform_header_offset *
+			     2) != sizeof(FileTitleInfo4) - 4 * sizeof(short int) - nvram_platform_header_offset * 2) {
+			    NVBAK_LOG("[NVRAM]: read error. (errno=%d)", errno);
+				close(iFileDesc_map);
+				return false;
+			}
+	} else
+		read(iFileDesc_map, &FileTitleInfo5, sizeof(FileTitleInfo5));
+#if 0
+	NVBAK_LOG("File_Title_Header iApBootNum(%d)", FileTitleInfo1.iApBootNum);
+	NVBAK_LOG("File_Title_Header iApCleanNum(%d)", FileTitleInfo1.iApCleanNum);
+	NVBAK_LOG("File_Title_Header iMdBootNum(%d)", FileTitleInfo1.iMdBootNum);
+	NVBAK_LOG("File_Title_Header iMdCleanNum(%d)", FileTitleInfo1.iMdCleanNum);
+	NVBAK_LOG("File_Title_Header iMdImpntNum(%d)", FileTitleInfo1.iMdImpntNum);
+	NVBAK_LOG("File_Title_Header iMdCoreNum(%d)", FileTitleInfo1.iMdCoreNum);
+	NVBAK_LOG("File_Title_Header iMdDataNum(%d)", FileTitleInfo1.iMdDataNum);
+	if (nvram_platform_header_offset == 0) {
+		//Add for second modem for MT658*
+		NVBAK_LOG("File_Title_Header iMd2BootNum(%d)", FileTitleInfo1.iMd2BootNum);
+		NVBAK_LOG("File_Title_Header iMd2CleanNum(%d)", FileTitleInfo1.iMd2CleanNum);
+		NVBAK_LOG("File_Title_Header iMd2ImpntNum(%d)", FileTitleInfo1.iMd2ImpntNum);
+		//End of Comment
+		if (nvram_md5_support()) {
+			NVBAK_LOG("File_Title_Header iMd5BootNum(%d)", FileTitleInfo1.iMd5BootNum);
+			NVBAK_LOG("File_Title_Header iMd5CleanNum(%d)", FileTitleInfo1.iMd5CleanNum);
+			NVBAK_LOG("File_Title_Header iMd5ImpntNum(%d)", FileTitleInfo1.iMd5ImpntNum);
+		}
+	}
+
+	if (nvram_evdo_support())
+		NVBAK_LOG("File_Title_Header iViaNum(%d)", FileTitleInfo1.iViaNum);
+
+
+	if (nvram_platform_header_offset == 0) {
+		NVBAK_LOG("File_Title_Header iFileBufLen(%d)", FileTitleInfo1.iFileBufLen);
+		NVBAK_LOG("File_Title_Header BackupFlag(%d)", FileTitleInfo1.BackupFlag);
+	}
+	if (nvram_platform_header_offset != 0) {
+
+		NVBAK_LOG("File_Title_Header iFileBufLen(%d)",
+		          *((short int *) & (FileTitleInfo1.iFileBufLen) - nvram_platform_header_offset));
+		NVBAK_LOG("File_Title_Header BackupFlag(%d)",
+		          *((short int *) & (FileTitleInfo1.BackupFlag) - nvram_platform_header_offset));
+	}
+
+#endif
+
+	close(iFileDesc_map);
+
+	ulCheckSum = FileOp_ComputeCheckSum();
+	NVBAK_LOG("FileOp_ComputeCheckSum:%x", ulCheckSum);
+	if (!FileOp_SetCheckSum(ulCheckSum)) {
+		NVBAK_LOG("FileOp_SetCheckSum Fail !");
+		return false;
+	}
+	NVBAK_LOG("FileOp_BackupData_All end !");
+	return bRet;
+}
+
+
+bool FileOp_BackupData_Special(char * buffer, int count , int mode) {
+	int iLen = 0, iTmpStart = 0, iNum = 0, eBackupType, i;
+	int iFolderNo;
+	bool bResult;
+
+	char strFolder[ALL][10];
+	snprintf(strFolder[0], sizeof(strFolder[0]),"%s", "APRDEB");
+	snprintf(strFolder[1], sizeof(strFolder[1]),"%s", "APRDCL");
+	snprintf(strFolder[2], sizeof(strFolder[2]),"%s", "NVD_IMEI");
+	snprintf(strFolder[3], sizeof(strFolder[3]),"%s", "CALIBRAT");
+	snprintf(strFolder[4], sizeof(strFolder[4]),"%s", "IMPORTNT");
+	snprintf(strFolder[5], sizeof(strFolder[5]),"%s", "NVD_CORE");
+	snprintf(strFolder[6], sizeof(strFolder[6]),"%s", "NVD_DATA");
+
+
+	if (buffer == NULL) {
+		NVBAK_LOG("BackupData_Special:The pointer of buffer is NULL!");
+		return false;
+	}
+	NVBAK_LOG("buffer:%s", buffer);
+
+	if ( count < 0 || count >= 1024 || mode < 0 ) {
+		NVBAK_LOG("BackupData_Special: the value of count and mode is wrong!");
+		return false;
+	}
+
+	int iMask[ALL];
+	memset(iMask, 0, (ALL * (sizeof(int))));
+	char tempBuf[count][(1024 / count) + 1];
+	iLen = strlen(buffer);
+
+	for (i = 0; i < iLen; i++) {
+		if (buffer[i] == ';') {
+			memcpy(tempBuf[iNum], buffer + iTmpStart, i - iTmpStart);
+			tempBuf[iNum][i - iTmpStart] = '\0';
+			iTmpStart += (i - iTmpStart + 1);
+			iNum++;
+		}
+	}
+	if (iNum != count) {
+		NVBAK_LOG("BackupData_Special: the num of real string doesn't match with the value of count !");
+		return false;
+	}
+	for (i = 0; i < iNum; i++) {
+		for (iFolderNo = 0; iFolderNo < ALL; iFolderNo++) {
+			if (0 == strcmp(tempBuf[i], strFolder[iFolderNo])) {
+				iMask[iFolderNo] = 1;
+				break;
+			}
+		}
+	}
+	NVBAK_LOG("iMask:%d,%d,%d,%d,%d,%d,%d\n", iMask[0], iMask[1], iMask[2],
+	          iMask[3], iMask[4], iMask[5], iMask[6]);
+	bool bWorkForBinRegionBackup = false;
+	bResult = FileOp_BackupDataToFiles(iMask, bWorkForBinRegionBackup);
+	return bResult;
+}
+
+//-----------------------------------------------------------------------------
+bool FileOp_RestoreData_All(void) {
+	DIR *dir;
+	struct dirent *entry;
+	struct stat statbuf;
+	const char* lpDestDirName = NULL;
+	char acSrcPathName[MAX_NAMESIZE];
+	char acDstPathName[MAX_NAMESIZE];
+	bool bRet = true;
+	int iResult, eBackupType;
+	unsigned int ulSavedCheckSum;
+	unsigned int ulCheckSum;
+	struct stat st;
+	unsigned int iFileSize;
+	int error_flag = 0;
+	int iFileMask[ALL];
+	memset(iFileMask, 0, (ALL * (sizeof(int))));
+	if (!nvram_md5_support() && !nvram_evdo_support()) {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+		iFileMask[10] = 1;
+		iFileMask[11] = 1;
+		iFileMask[12] = 1;
+		iFileMask[13] = 1;
+	} else if (!nvram_md5_support() && nvram_evdo_support()) {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+		iFileMask[10] = 1;
+		iFileMask[11] = 1;
+		iFileMask[12] = 1;
+	} else if (nvram_md5_support() && !nvram_evdo_support()) {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+		iFileMask[13] = 1;
+	} else {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+	}
+	if (!nvram_ecci_c2k_support()) {
+		iFileMask[14] = 1;
+		iFileMask[15] = 1;
+		iFileMask[16] = 1;
+	}
+
+	NVBAK_LOG("[FileOp_RestoreData_All] start !");
+
+	if (!FileOp_GetCheckSum()) {
+		NVBAK_LOG("[FileOp_RestoreData_All] GetCheckSum Fail !");
+		return false;
+	}
+	ulSavedCheckSum = stBackupFileInfo.ulCheckSum;
+	ulCheckSum = FileOp_ComputeCheckSum();
+	NVBAK_LOG("ulCheckSun:%x", ulCheckSum);
+	if (stat(g_pcNVM_AllFile, &st) < 0) {
+		NVBAK_LOG("Error FileOp_RestoreData stat \n");
+		return false;
+	}
+	iFileSize = st.st_size;
+	NVBAK_LOG("iFileSize:%d\n", iFileSize);
+	ulCheckSum ^= iFileSize;
+
+	NVBAK_LOG("FileOp_CheckSum:%x,%x", ulSavedCheckSum, ulCheckSum);
+	if (!FileOp_CompareCheckSum(ulSavedCheckSum, ulCheckSum)) {
+		NVBAK_LOG("check sum not match!");
+		return false;
+	}
+	for (eBackupType = APBOOT; eBackupType < ALL; eBackupType++) {
+		if (iFileMask[eBackupType] == 1)
+			continue;
+		bRet = FileOp_RestoreFromFiles(eBackupType);
+		if (bRet == false) {
+			NVBAK_LOG("RestoreFromFiles Error!! The No.%d file", eBackupType);
+			error_flag = 1;
+		}
+	}
+	if (error_flag == 0) {
+		NVBAK_LOG("[FileOp_RestoreData_All] end !");
+		return true;
+	} else {
+		NVBAK_LOG("[FileOp_RestoreData_All] some file restore failed !");
+		return false;
+	}
+
+}
+
+bool FileOp_BackupAll_NvRam(void) {
+	bool bRet = true;
+	int iMask[ALL];
+	bool bWorkForBinRegionBackup = false;
+	memset(iMask, 0, (ALL * (sizeof(int))));
+	NVBAK_LOG("FileOp_BackupAll_NvRam Start !");
+
+	bRet = FileOp_BackupDataToFiles(iMask, bWorkForBinRegionBackup);
+
+	NVBAK_LOG("FileOp_BackupAll_NvRam End !");
+
+	return bRet;
+}
+
+bool FileOp_RestoreAll_NvRam(void) {
+	bool bRet = true;
+
+	NVBAK_LOG("[FileOp_RestoreAll_NvRam] Start !");
+
+	bRet = FileOp_RestoreData_All();
+
+	NVBAK_LOG("[FileOp_RestoreAll_NvRam] End !");
+
+	if (bRet == true) {
+		bRet = NVM_DataVerConvertAll(stBackupFileInfo.iCommonFileNum,
+		                             stBackupFileInfo.iCustomFileNum);
+		if (bRet != true)
+			NVBAK_LOG("[FileOp_RestoreAll_NvRam] convert data fail !");
+
+	}
+	return bRet;
+}
+
+static int iDMFlag = 0x12121212;
+char *strDMFileFolderPath = "/mnt/vendor/nvdata/dm";
+bool FileOp_BackupToBinRegionForDM() {
+	DIR *dir;
+	struct dirent *entry;
+	struct stat statbuf;
+	struct stat st;
+	char acSrcPathName[MAX_NAMESIZE];
+	char *tempBuf = NULL;
+	//char *strDMFileFolderPath = "/mnt/vendor/nvdata/dm";
+	char *strUSBFilePath = "/mnt/vendor/nvdata/APCFG/APRDEB/OMADM_USB";
+	int iFileDesc_map, iFileDesc_file;
+	int iFileSize, iFileNum, iResult, fd, iMapFileSize, iDatFileSize;
+
+	iFileSize = 0;
+	iFileNum = 0;
+	/* Create the map file */
+	NVBAK_LOG("enter backup to binregion for DM\n");
+	//fix nvram layout issue , reassgined block numerbers by different platform
+	if (NVM_Init() < 0) {
+		NVBAK_LOG("FileOp_BackupToBinRegionForDM--NVM_Init fail !!!\n");
+		return false;
+	}
+
+	iFileDesc_map = open(g_pcNVM_AllMap, O_TRUNC | O_CREAT | O_RDWR,
+	                     S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+	if (INVALID_HANDLE_VALUE == iFileDesc_map) {
+		/* Error handling */
+		NVBAK_LOG("FileOp_MakeFile cannot open/create map data\n");
+		return false;
+	}
+	iResult = write(iFileDesc_map, &iFileNum,
+	                sizeof(int)); //alloct the space for iFileNum
+
+	iFileDesc_file = open(g_pcNVM_AllFile , O_TRUNC | O_CREAT | O_RDWR,
+	                      S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+	if (INVALID_HANDLE_VALUE == iFileDesc_file) {
+		/* Error handling */
+		NVBAK_LOG("FileOp_MakeFile cannot open/create data file\n");
+		close(iFileDesc_map);
+		return false;
+	}
+
+	dir = opendir(strDMFileFolderPath);
+	if (dir == NULL) {
+		NVBAK_LOG("FileOp_BackupData open dir: %s ,this dir not exist!",
+		          strDMFileFolderPath);
+		close(iFileDesc_map);
+		close(iFileDesc_file);
+		return false;
+	}
+
+	while (1) {
+		entry = readdir(dir);
+
+		if (entry == NULL) {
+			break;
+		}
+
+		if (lstat(entry->d_name, &statbuf) < 0) {
+			NVBAK_LOG("[NVRAM]: lstat error. (errno=%d)", errno);
+			closedir(dir);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			return false;
+		}
+
+		if (!strcmp(entry->d_name, ".") || !strcmp(entry->d_name, "..")) {
+			continue;
+		}
+
+		sprintf(acSrcPathName, "%s/%s", strDMFileFolderPath, entry->d_name);
+		NVBAK_LOG("FileOp_BackupData (%s)\n", acSrcPathName);
+		iFileNum++;
+		if (stat(acSrcPathName, &st) < 0) {
+			NVBAK_LOG("Error FileOp_RestoreData stat \n");
+			closedir(dir);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			return false;
+		}
+		iFileSize = st.st_size;
+		tempBuf = (char*)malloc(iFileSize);
+		if (tempBuf == NULL) {
+			NVBAK_LOG("Error malloc\n");
+			closedir(dir);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			return false;
+		}
+		iResult = write(iFileDesc_map, acSrcPathName, MAX_NAMESIZE);
+		if (iResult != MAX_NAMESIZE) {
+			NVBAK_LOG("Error FileOp_BackupSpecialFile:write1:%d\n", iResult);
+			closedir(dir);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(tempBuf);
+			return false;
+		}
+
+		iResult = write(iFileDesc_map, &iFileSize, sizeof(int));
+		if (iResult != sizeof(int)) {
+			NVBAK_LOG("Error FileOp_BackupSpecialFile:write2:%d\n", iResult);
+			closedir(dir);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(tempBuf);
+			return false;
+		}
+		fd = open(acSrcPathName , O_RDONLY);
+		if (INVALID_HANDLE_VALUE == fd) {
+			/* Error handling */
+			NVBAK_LOG("FileOp_MakeFile cannot open/create data file\n");
+			closedir(dir);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(tempBuf);
+			return false;
+		}
+
+		iResult = read(fd, tempBuf, iFileSize);
+
+		if (iResult != iFileSize) {
+			NVBAK_LOG("Error FileOp_BackupSpecialFile:read1:%d\n", iResult);
+			closedir(dir);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			close(fd);
+			free(tempBuf);
+			return false;
+		}
+		/*
+		if(strcmp(acSrcPathName,"/mnt/vendor/nvdata/APCFG/APRDEB/BT_Addr")==0)
+			{
+				int m;
+				for(m=0;m<8;m++)
+				 NVBAK_LOG("capid:%d\n",*(char*)(tempBuf+m));
+			}*/
+		iResult = write(iFileDesc_file, tempBuf, iFileSize);
+		if (iResult != iFileSize) {
+			NVBAK_LOG("Error FileOp_BackupSpecialFile:write dat:%d\n", iResult);
+			closedir(dir);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			close(fd);
+			free(tempBuf);
+			return false;
+		}
+		/*
+		if(strcmp(acSrcPathName,"/mnt/vendor/nvdata/APCFG/APRDEB/BT_Addr")==0)
+		{
+			int m;
+			for(m=0;m<8;m++)
+			 NVBAK_LOG("capid:%d\n",*(char*)(tempBuf+m));
+		}*/
+		close(fd);
+		free(tempBuf);
+		tempBuf = NULL;
+	}
+	closedir(dir);
+	//USB File
+	if (stat(strUSBFilePath, &st) >= 0) {
+		NVBAK_LOG("FileOp_RestoreData stat:%s \n",strUSBFilePath);
+		iFileSize = st.st_size;
+		memset(acSrcPathName, 0, MAX_NAMESIZE);
+		memcpy(acSrcPathName, strUSBFilePath, strlen(strUSBFilePath) + 1);
+		NVBAK_LOG("USB file:%s\n", acSrcPathName);
+
+		iResult = write(iFileDesc_map, acSrcPathName, MAX_NAMESIZE);
+		iResult = write(iFileDesc_map, &iFileSize, sizeof(int));
+		iFileNum++;
+		/*lseek(iFileDesc_map, 0, SEEK_SET);
+		iResult = write(iFileDesc_map, &iFileNum, sizeof(int));*/
+		tempBuf = (char*)malloc(iFileSize);
+		if (tempBuf == NULL) {
+			NVBAK_LOG("Error malloc2\n");
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			return false;
+		}
+		fd = open(strUSBFilePath , O_RDONLY);
+		if (INVALID_HANDLE_VALUE == fd) {
+			/* Error handling */
+			NVBAK_LOG("FileOp_MakeFile cannot open/create data file\n");
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(tempBuf);
+			return false;
+		}
+
+		iResult = read(fd, tempBuf, iFileSize);
+		if (iResult != iFileSize) {
+			NVBAK_LOG("Error FileOp_BackupSpecialFile:read1:%d\n", iResult);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			close(fd);
+			free(tempBuf);
+			return false;
+		}
+
+		iResult = write(iFileDesc_file, tempBuf, iFileSize);
+		if (iResult != iFileSize) {
+			NVBAK_LOG("Error FileOp_BackupSpecialFile:write dat:%d\n", iResult);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			close(fd);
+			free(tempBuf);
+			return false;
+		}
+		close(fd);
+	}
+	lseek(iFileDesc_map, 0, SEEK_SET);
+	iResult = write(iFileDesc_map, &iFileNum, sizeof(int));
+	NVBAK_LOG("Write filenum(%d) to ALLMAP\n", iFileNum);
+	free(tempBuf);
+	tempBuf = NULL;
+	close(iFileDesc_file);
+	close(iFileDesc_map);
+
+	//backup to bin region
+	if (stat(g_pcNVM_AllMap, &st) < 0) {
+		NVBAK_LOG("[NVRAM]: stat error. (errno=%d)", errno);
+		return false;
+	}
+	iMapFileSize = st.st_size;
+	if (stat(g_pcNVM_AllFile, &st) < 0) {
+		NVBAK_LOG("[NVRAM]: stat error. (errno=%d)", errno);
+		return false;
+	}
+	iDatFileSize = st.st_size;
+
+	int iWriteSize, iBlockSize, iPartitionSize, i, pos = 0;
+	char cMtdDevName[128] = {0};
+	char *bDMBitmap = NULL;
+	struct mtd_info_user info;
+	struct erase_info_user erase_info;
+//    int iBackup_Partition=get_partition_numb("nvram");
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	//strcpy(cMtdDevName, g_NVRAM_BACKUP_DEVICE);
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+	NVBAK_LOG("[NVRAM]:cMtdDevName:%s\n", cMtdDevName);
+
+
+	if (!NVM_GetDeviceInfo(cMtdDevName, &info)) {
+		NVBAK_LOG("[NVRAM]:FileOp_BackupToBinRegionForDM get device info error\r\n");
+		return false;
+	}
+
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVBAK_LOG("[NVRAM]:mtd open error\r\n");
+		return false;
+	}
+
+	iWriteSize = info.writesize;
+	iBlockSize = info.erasesize;
+	iPartitionSize = info.size;
+
+
+	if (nvram_platform_layout_version == 0)
+		BinRegionBlockTotalNum = info.size / iBlockSize - nvram_platform_log_block -
+		                         nvram_platform_resv_block;
+	else if ( nvram_platform_layout_version == 1)
+		BinRegionBlockTotalNum = info.size / iBlockSize ;
+	else {
+		NVRAM_LOG("[NVRAM]: invalid nvram layout version %d\r\n",
+		          nvram_platform_layout_version);
+		close(fd);
+		return false;
+	}
+	NvRamBlockNum = BinRegionBlockTotalNum - nvram_platform_DM_block;
+
+	bDMBitmap = (char*)malloc(BinRegionBlockTotalNum - NvRamBlockNum);
+	if (bDMBitmap == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc bDMBitmap Failed!\n");
+		close(fd);
+		return false;
+	}
+	memset(bDMBitmap, 0, ((BinRegionBlockTotalNum - NvRamBlockNum)*sizeof(char)));
+	NVBAK_LOG("[NVRAM]:mtd get info:iBlockSize:%d,iPartitionSize:%d\n", iBlockSize,
+	          iPartitionSize);
+	//check whether the  block is a bad block or not
+	for (i = (BinRegionBlockTotalNum - 1); i >= NvRamBlockNum; i--) {
+		erase_info.start = i * iBlockSize;
+		erase_info.length = iBlockSize;
+
+		if ((!nvram_emmc_support()) && (!nvram_ufs_support())) {
+
+			if (!NVM_EraseDeviceBlock(cMtdDevName, erase_info)) {
+				NVBAK_LOG("[NVRAM]:mtd erase error,block id:%d\r\n", i);
+				bDMBitmap[i - NvRamBlockNum] = 1;
+			} else {
+				bDMBitmap[i - NvRamBlockNum] = 0;
+				pos++;
+			}
+		} else
+			pos++;
+	}
+	NVBAK_LOG("[NVRAM]DM the available block num:%d\n", pos);
+	if ((int)(iMapFileSize + iDatFileSize + 3 * sizeof(int) +
+	          (BinRegionBlockTotalNum - NvRamBlockNum)*sizeof(char)) >= (pos * iBlockSize)) {
+		NVBAK_LOG("[NVRAM]DM File Size is more than the available block size \n");
+		close(fd);
+		free(bDMBitmap);
+		return false;
+	}
+	tempBuf = (char*)malloc(pos * iBlockSize);
+	if (tempBuf == NULL) {
+		NVBAK_LOG("[NVRAM]DM malloc error \n");
+		close(fd);
+		free(bDMBitmap);
+		return false;
+	}
+	memset(tempBuf, 0xFF, pos * iBlockSize);
+	memcpy(tempBuf, &iDMFlag, sizeof(int));
+	memcpy(tempBuf + sizeof(int), &iMapFileSize, sizeof(int));
+	memcpy(tempBuf + 2 * sizeof(int), &iDatFileSize, sizeof(int));
+	memcpy(tempBuf + 3 * sizeof(int), bDMBitmap,
+	       (BinRegionBlockTotalNum - NvRamBlockNum)*sizeof(char));
+	iFileDesc_map = open(g_pcNVM_AllMap, O_RDONLY);
+	if (INVALID_HANDLE_VALUE == iFileDesc_map) {
+		/* Error handling */
+		NVBAK_LOG("DM FileOp_MakeFile cannot open map data\n");
+		close(fd);
+		free(tempBuf);
+		free(bDMBitmap);
+		return false;
+	}
+	iFileDesc_file = open(g_pcNVM_AllFile , O_RDONLY);
+	if (INVALID_HANDLE_VALUE == iFileDesc_file) {
+		/* Error handling */
+		NVBAK_LOG("DM FileOp_MakeFile cannot open data file\n");
+		close(fd);
+		free(tempBuf);
+		close(iFileDesc_map);
+		free(bDMBitmap);
+		return false;
+	}
+	iResult = read(iFileDesc_map,
+	               tempBuf + 3 * sizeof(int) + (BinRegionBlockTotalNum - NvRamBlockNum) * sizeof(
+	                   char), iMapFileSize);
+	if (iResult != iMapFileSize) {
+		NVBAK_LOG("DM FileOp_MakeFile cannot read map file:%d\n", iResult);
+		close(fd);
+		free(tempBuf);
+		close(iFileDesc_map);
+		close(iFileDesc_file);
+		free(bDMBitmap);
+		return false;
+	}
+
+	iResult = read(iFileDesc_file,
+	               tempBuf + 3 * sizeof(int) + (BinRegionBlockTotalNum - NvRamBlockNum) * sizeof(
+	                   char) + iMapFileSize, iDatFileSize);
+	if (iResult != iDatFileSize) {
+		NVBAK_LOG("DM FileOp_MakeFile cannot read map file:%d\n", iResult);
+		close(fd);
+		free(tempBuf);
+		close(iFileDesc_map);
+		close(iFileDesc_file);
+		free(bDMBitmap);
+		return false;
+	}
+	close(iFileDesc_map);
+	close(iFileDesc_file);
+
+	//write file into bin region
+	iWriteSize = 0;
+	if ((int)(3 * sizeof(int) + (BinRegionBlockTotalNum - NvRamBlockNum)*sizeof(
+	              char) + iMapFileSize + iDatFileSize) > iBlockSize) {
+		int offset = 0;
+		for (pos = NvRamBlockNum; pos < BinRegionBlockTotalNum; pos++) {
+			if (bDMBitmap[pos - NvRamBlockNum] == 0) {
+				if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+					NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+					close(fd);
+					free(tempBuf);
+					free(bDMBitmap);
+					return false;
+				}
+				iResult = write(fd, tempBuf + offset * iBlockSize, iBlockSize);
+				if (iResult != iBlockSize) {
+					NVBAK_LOG("DM FileOp_MakeFile cannot write file into bin region :%d,%d\n",
+					          iResult, pos);
+					close(fd);
+					free(tempBuf);
+					free(bDMBitmap);
+					return false;
+				}
+				offset++;
+				iWriteSize += iBlockSize;
+				if (iWriteSize >= (int)(3 * sizeof(int) + (BinRegionBlockTotalNum -
+				                        NvRamBlockNum)*sizeof(char) + iMapFileSize + iDatFileSize))
+					break;
+			} else
+				continue;
+
+		}
+
+	} else {
+		for (pos = NvRamBlockNum; pos < BinRegionBlockTotalNum; pos++) {
+			if (bDMBitmap[pos - NvRamBlockNum] == 0) {
+				if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0){
+					NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+					close(fd);
+					free(tempBuf);
+					free(bDMBitmap);
+					return false;
+				}
+
+				iResult = write(fd, tempBuf, iBlockSize);
+				if (iResult != iBlockSize) {
+					NVBAK_LOG("DM FileOp_MakeFile cannot write file into bin region :%d,%d\n",
+					          iResult, pos);
+					close(fd);
+					free(tempBuf);
+					free(bDMBitmap);
+					return false;
+				} else
+					break;
+			} else
+				continue;
+		}
+
+	}
+
+	NVBAK_LOG("BackupToBinRegion for DM success\n");
+	close(fd);
+	free(tempBuf);
+	free(bDMBitmap);
+	return true;
+}
+
+bool FileOp_RestoreFromBinRegionForDM() {
+	char acSrcPathName[MAX_NAMESIZE];
+	int iFileDesc_file, iFileDesc_map, fd, iResult, iBlockNum, iFileDesc;
+	int iMapFileSize, iDatFileSize, iBlockSize, i, iDMBackupFlag, iFileNum,
+	    iFileSize;
+
+	char cMtdDevName[128] = {0};
+	char *bDMBitmap = NULL;
+	char *tempBuffer = NULL;
+	char *tempBuffer1 = NULL;
+	struct mtd_info_user info;
+	bool bFound = false;
+	// int iBackup_Partition=get_partition_numb("nvram");
+	NVBAK_LOG("enter restore from binregion for DM\n");
+
+    if(isWriteOnProtection()) {
+        NVBAK_LOG("[NVRAM]: Skip to restore DM because DM doesn't backup to bin region for new chip.\n");
+        return true;
+    }
+
+	//fix nvram layout issue , reassgined block numerbers by different platform
+	if (NVM_Init() < 0) {
+		NVBAK_LOG("[NVRAM]:FileOp_RestoreFromBinRegionForDM--NVM_Init fail !!!\n");
+		return false;
+	}
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+	if (!NVM_GetDeviceInfo(cMtdDevName, &info)) {
+		NVBAK_LOG("[NVRAM]:FileOp_RestoreFromBinRegionForDM get device info error\r\n");
+		return false;
+	}
+
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVBAK_LOG("[NVRAM]:mtd open error\r\n");
+		return false;
+	}
+
+
+	iBlockSize = info.erasesize;
+	//iPartitionSize=info.size;
+
+	if (nvram_platform_layout_version == 0)
+		BinRegionBlockTotalNum = info.size / iBlockSize - nvram_platform_log_block -
+		                         nvram_platform_resv_block;
+	else if ( nvram_platform_layout_version == 1)
+		BinRegionBlockTotalNum = info.size / iBlockSize ;
+	else {
+		NVRAM_LOG("[NVRAM]: invalid nvram layout version %d\r\n",
+		          nvram_platform_layout_version);
+		close(fd);
+		return false;
+	}
+
+	NvRamBlockNum = BinRegionBlockTotalNum - nvram_platform_DM_block;
+
+	bDMBitmap = (char*)malloc(BinRegionBlockTotalNum - NvRamBlockNum);
+	if (bDMBitmap == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc bDMBitmap Failed!\n");
+		close(fd);
+		return false;
+	}
+	tempBuffer = (char*)malloc((BinRegionBlockTotalNum - NvRamBlockNum) *
+	                           iBlockSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		free(bDMBitmap);
+		return false;
+	}
+	int offset = 0;
+	for (i = NvRamBlockNum; i < BinRegionBlockTotalNum; i++) {
+		lseek(fd, i * iBlockSize, SEEK_SET);
+		iResult = read(fd, tempBuffer, iBlockSize);
+		NVBAK_LOG("[NVRAM]:read:%d\n", iResult);
+		if (iResult <= 0) {
+			NVBAK_LOG("[NVRAM]:read size error\r\n");
+			close(fd);
+			free(tempBuffer);
+			free(bDMBitmap);
+			return false;
+		}
+		memcpy(&iDMBackupFlag, tempBuffer, sizeof(int));
+		if (iDMBackupFlag == iDMFlag) {
+			NVBAK_LOG("[NVRAM]:DM bin region found:%d\n", i);
+			bFound = true;
+		} else
+			continue;
+		memcpy(&iMapFileSize, tempBuffer + sizeof(int), sizeof(int));
+		memcpy(&iDatFileSize, tempBuffer + 2 * sizeof(int), sizeof(int));
+		memcpy(bDMBitmap, tempBuffer + 3 * sizeof(int),
+		       (BinRegionBlockTotalNum - NvRamBlockNum)*sizeof(char));
+		if ((int)(iMapFileSize + iDatFileSize + 3 * sizeof(int) +
+		          (BinRegionBlockTotalNum - NvRamBlockNum)*sizeof(char)) > iBlockSize) {
+			int j, iReadSize = iBlockSize;
+			for (j = i - NvRamBlockNum + 1; j < BinRegionBlockTotalNum - NvRamBlockNum;
+			        j++) {
+				if (bDMBitmap[j] == 0) {
+					lseek(fd, (j + NvRamBlockNum)*iBlockSize, SEEK_SET);
+					iResult = read(fd, tempBuffer + iReadSize, iBlockSize);
+					NVBAK_LOG("[NVRAM]:read:%d\n", iResult);
+					if (iResult <= 0) {
+						NVBAK_LOG("[NVRAM]:read size error\r\n");
+						close(fd);
+						free(tempBuffer);
+						free(bDMBitmap);
+						return false;
+					}
+					iReadSize += iBlockSize;
+					if (iReadSize >= (int)(iMapFileSize + iDatFileSize + 3 * sizeof(int) +
+					                       (BinRegionBlockTotalNum - NvRamBlockNum)*sizeof(char))) {
+						NVBAK_LOG("[NVRAM]:All DM File read from bin region\n");
+						break;
+					}
+				}
+			}
+			break;
+		} else
+			break;
+	}
+	if (!bFound) {
+		NVBAK_LOG("[NVRAM]:not find DM file in bin region\n");
+		close(fd);
+		free(tempBuffer);
+		free(bDMBitmap);
+		return false;
+	}
+	free(bDMBitmap);
+	iFileDesc_file = open(g_pcNVM_AllFile , O_TRUNC | O_CREAT | O_RDWR,
+	                      S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+	iFileDesc_map = open(g_pcNVM_AllMap, O_TRUNC | O_CREAT | O_RDWR,
+	                     S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_file) {
+		/* Error handling */
+		NVBAK_LOG("FileOp_MakeFile cannot open/create file data\n");
+		free(tempBuffer);
+		close(fd);
+		if (iFileDesc_map != INVALID_HANDLE_VALUE)
+			close(iFileDesc_map);
+		return false;
+	}
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_map) {
+		/* Error handling */
+		NVBAK_LOG("FileOp_MakeFile cannot open/create map data\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		return false;
+	}
+	if (iMapFileSize<0 || iMapFileSize>=INT_MAX) {
+		NVBAK_LOG("iMapFileSize overflow\n");
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		close(fd);
+		return false;
+	}
+	if (iDatFileSize<0 || iDatFileSize>=INT_MAX) {
+		NVBAK_LOG("iDatFileSize overflow\n");
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		close(fd);
+		return false;
+	}	
+	iResult = write(iFileDesc_map,
+	                tempBuffer + 3 * sizeof(int) + (BinRegionBlockTotalNum - NvRamBlockNum) *
+	                sizeof(char), iMapFileSize);
+	if (iResult != iMapFileSize) {
+		NVBAK_LOG("write map file fail:%d\n", iResult);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		close(fd);
+		return false;
+	}
+
+	iResult = write(iFileDesc_file,
+	                tempBuffer + 3 * sizeof(int) + (BinRegionBlockTotalNum - NvRamBlockNum) *
+	                sizeof(char) + iMapFileSize, iDatFileSize);
+	if (iResult != iDatFileSize) {
+		NVBAK_LOG("write dat file fail:%d\n", iResult);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		close(fd);
+		return false;
+	}
+	free(tempBuffer);
+	close(iFileDesc_file);
+	close(iFileDesc_map);
+	close(fd);
+
+	//creat files based on the temp file
+	iFileDesc_file = open(g_pcNVM_AllFile , O_RDONLY);
+	iFileDesc_map = open(g_pcNVM_AllMap, O_RDONLY);
+    if(INVALID_HANDLE_VALUE == iFileDesc_file)
+    {
+        /* Error handling */
+        NVBAK_LOG("FileOp_MakeFile cannot open file data\n");
+			if(iFileDesc_map != INVALID_HANDLE_VALUE)
+				close(iFileDesc_map);
+        return false;
+    }
+
+	if(INVALID_HANDLE_VALUE == iFileDesc_map)
+    {
+        /* Error handling */
+        NVBAK_LOG("FileOp_MakeFile cannot open map data\n");
+		close(iFileDesc_file);
+        return false;
+    }
+	tempBuffer = (char*)malloc(iMapFileSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("malloc tempBuffer fail!\n");
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		return false;
+	}
+	tempBuffer1 = (char*)malloc(iDatFileSize);
+	if (tempBuffer1 == NULL) {
+		NVBAK_LOG("malloc tempBuffer1 fail!\n");
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		return false;
+	}
+	iResult = read(iFileDesc_map, tempBuffer, iMapFileSize);
+	if (iResult != iMapFileSize) {
+		NVBAK_LOG("read map file fail:%d\n", iResult);
+		free(tempBuffer);
+		free(tempBuffer1);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		return false;
+	}
+	iResult = read(iFileDesc_file, tempBuffer1, iDatFileSize);
+	if (iResult != iDatFileSize) {
+		NVBAK_LOG("read dat file fail:%d\n", iResult);
+		free(tempBuffer);
+		free(tempBuffer1);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		return false;
+	}
+	iFileNum = 0;
+	memcpy(&iFileNum, tempBuffer, sizeof(int));
+	offset = 0;
+	i = 0;
+	NVBAK_LOG("dat file num:%d\n", iFileNum);
+	while (iFileNum > 0 && iFileNum <= INT_MAX) {
+		memcpy(acSrcPathName, tempBuffer + sizeof(int) + i * (MAX_NAMESIZE + sizeof(
+		            int)), MAX_NAMESIZE);
+		NVBAK_LOG("dm file:%s\n", acSrcPathName);
+		memcpy(&iFileSize, tempBuffer + sizeof(int) + i * (MAX_NAMESIZE + sizeof(
+		            int)) + MAX_NAMESIZE, sizeof(int));
+		NVBAK_LOG("file size:%d\n", iFileSize);
+		if (iFileSize <= 0 || iFileSize >= INT_MAX) {
+			/* Error handling */
+			NVBAK_LOG("FileOp_RestoreFromFilesForDM cannot create %s\n", acSrcPathName);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(tempBuffer);
+			free(tempBuffer1);
+			return false;
+		}
+		iFileDesc = open_file_with_dirs(acSrcPathName, 0660);
+		if (INVALID_HANDLE_VALUE == iFileDesc) {
+			/* Error handling */
+			NVBAK_LOG("FileOp_RestoreFromFilesForDM cannot create %s\n", acSrcPathName);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(tempBuffer);
+			free(tempBuffer1);
+			return false;
+		}
+
+		/*
+		if(strcmp(acSrcPathName,"/mnt/vendor/nvdata/APCFG/APRDEB/BT_Addr")==0)
+			{
+				int m;
+				for(m=0;m<8;m++)
+				 NVBAK_LOG("capid:%d\n",*(char*)(tempBuffer1+offset+m));
+			}
+			*/
+		iResult = write(iFileDesc, tempBuffer1 + offset, iFileSize);
+		if (iResult != iFileSize) {
+			NVBAK_LOG("FileOp_RestoreFromFilesForDM cannot write %s,%d\n", acSrcPathName,
+			          iResult);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(tempBuffer);
+			free(tempBuffer1);
+			close(iFileDesc);
+			return false;
+		}
+		offset += iFileSize;
+		iFileNum--;
+		i++;
+		close(iFileDesc);
+	}
+	close(iFileDesc_map);
+	close(iFileDesc_file);
+	free(tempBuffer);
+	free(tempBuffer1);
+	//       close(iFileDesc);
+	NVBAK_LOG("restore from binregion for DM Success\n");
+	return true;
+}
+
+
+bool FileOp_RestoreFromBinRegion_ToFile() {
+	int iFileDesc_file, iFileDesc_map, fd, iResult, iBlockNum, iFileDesc_backupflag;
+	unsigned int iMapFileSize, iDatFileSize, iBlockSize, iPartitionSize, iWriteSize;
+	unsigned short iAPBackupFileNum, iMDBackupFileNum;
+	bool bRet = true;
+	struct stat st;
+
+	char cMtdDevName[128] = {0};
+	char *tempBuffer = NULL;
+	char *tempBitmap1 = NULL;
+	char *tempBitmap2 = NULL;
+	int i, j, pos = 0, flag = 0;
+	bool bSuccessFound = false;
+	struct mtd_info_user info;
+	char temp[128];
+	//fix nvram layout issue , reassgined block numerbers by different platform
+	if (NVM_Init() < 0) {
+		NVBAK_LOG("[NVRAM]:FileOp_RestoreFromBinRegion_ToFile--NVM_Init fail !!!\n");
+		return false;
+	}
+	NVBAK_LOG("[NVRAM]:Enter FileOp_RestoreFromBinRegion_ToFile\n");
+
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+
+	NVBAK_LOG("[NVRAM]:cMtdDevName:%s\n", cMtdDevName);
+	bRet = NVM_GetDeviceInfo(cMtdDevName, &info);
+	if (bRet == false) {
+		NVBAK_LOG("[NVRAM]:FileOp_RestoreFromBinRegion_ToFile get device info error\r\n");
+		return false;
+	}
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVBAK_LOG("[NVRAM]:mtd open error\r\n");
+		return false;
+	}
+
+	iBlockSize = info.erasesize;
+	iPartitionSize = info.size;
+	iWriteSize = info.writesize;
+
+	if (nvram_platform_layout_version == 0)
+		BinRegionBlockTotalNum = info.size / iBlockSize - nvram_platform_log_block -
+		                         nvram_platform_resv_block;
+	else if ( nvram_platform_layout_version == 1)
+		BinRegionBlockTotalNum = info.size / iBlockSize ;
+	else {
+		NVRAM_LOG("[NVRAM]: invalid nvram layout version %d\r\n",
+		          nvram_platform_layout_version);
+		close(fd);
+		return false;
+	}
+	NvRamBlockNum = BinRegionBlockTotalNum - nvram_platform_DM_block;
+	tempBuffer = (char*)malloc(iBlockSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		return false;
+	}
+
+	lseek(fd, pos * iBlockSize, SEEK_SET);
+	iResult = read(fd, tempBuffer, iBlockSize);
+
+	iMapFileSize = *((unsigned int*)tempBuffer); // get the mapfile
+	unsigned int iMemSize;
+	int iReservePos = 0;
+	int iReserveBlockCount = 0;
+	if ((iMapFileSize + 3 * sizeof(unsigned int)) % iWriteSize != 0)
+		iMemSize = (((iMapFileSize + 3 * sizeof(unsigned int)) / iWriteSize) + 1) *
+		           iWriteSize;
+	else
+		iMemSize = iMapFileSize + 3 * sizeof(unsigned
+		                                     int); //mapfile size, datfile size, cleanboot fla
+	NVBAK_LOG("[NVRAM Restore - heli]:map file size:%d\n", iMemSize);
+
+	if ( iMemSize > iBlockSize ) { // > 180KB
+		iReservePos = 1;
+		iReserveBlockCount = 2;
+	} else { // < 128KB
+		iReservePos = 0;
+		iReserveBlockCount = 1;
+	}
+
+	free(tempBuffer);
+	tempBuffer = NULL;
+	tempBuffer = (char*)malloc(iBlockSize *
+	                           iReserveBlockCount); // for 128KB and 256KB
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		return false;
+	}
+
+	iBlockNum = NvRamBlockNum;
+	NVBAK_LOG("[NVRAM]:iBlockSize:%d\n", iBlockSize);
+	NVBAK_LOG("[NVRAM]:iPartitionSize:%d\n", iPartitionSize);
+	NVBAK_LOG("[NVRAM]:BinRegionBlockTotalNum:%d\n", BinRegionBlockTotalNum);
+	NVBAK_LOG("[NVRAM]:NvRamBlockNum:%d\n", NvRamBlockNum);
+	NVBAK_LOG("[NVRAM]:iBlockNum:%d\n", iBlockNum);
+
+	tempBitmap1 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap1 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap1 Fail!!\r\n");
+		free(tempBuffer);
+		close(fd);
+		return false;
+	}
+	tempBitmap2 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap2 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap2 Fail!!\r\n");
+		free(tempBuffer);
+		close(fd);
+		free(tempBitmap1);
+		return false;
+	}
+
+	int iBitmapFlag = 0;
+	while (iBlockNum > 0) {
+		flag = 0;
+		iBlockNum--;
+		NVBAK_LOG("[NVRAM]:iBlockNum:%d\n", iBlockNum);
+		if (lseek(fd, (iBlockNum - iReservePos)*iBlockSize, SEEK_SET) < 0) {
+			NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+			close(fd);
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		iResult = read(fd, tempBuffer, iBlockSize);
+		NVBAK_LOG("[NVRAM]:read:%d\n", iResult);
+		if (iResult <= 0) {
+			NVBAK_LOG("[NVRAM]:read size error\r\n");
+			close(fd);
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		memcpy(tempBitmap1, tempBuffer, NvRamBlockNum * sizeof(char));
+		memcpy(tempBitmap2, tempBuffer + NvRamBlockNum * sizeof(char),
+		       NvRamBlockNum * sizeof(char));
+		for (i = 0; i < NvRamBlockNum; i++) {
+			if (tempBitmap1[i] != tempBitmap2[i]) {
+				NVBAK_LOG("[NVRAM]:1i:%d,1:%d,2:%d\n", i, tempBitmap1[i], tempBitmap2[i]);
+				flag = 1;
+				break;
+			}
+		}
+		if (flag)
+			continue;
+		memcpy(tempBitmap2, tempBuffer + 2 * NvRamBlockNum * sizeof(char),
+		       NvRamBlockNum * sizeof(char));
+		for (i = 0; i < NvRamBlockNum; i++) {
+			if (tempBitmap1[i] != tempBitmap2[i]) {
+				NVBAK_LOG("[NVRAM]:2i:%d,1:%d,2:%d\n", i, tempBitmap1[i], tempBitmap2[i]);
+				flag = 1;
+				break;
+			}
+		}
+		if (flag)
+			continue;
+		memcpy(&iBitmapFlag, tempBuffer + 3 * NvRamBlockNum * sizeof(char),
+		       sizeof(unsigned int));
+		if (iBitmapFlag != (int)BitmapFlag) {
+			NVBAK_LOG("[NVRAM]:iBitMapFlag:%d,BitMapFlag:%d\n", iBitmapFlag, BitmapFlag);
+			continue;
+		}
+		bSuccessFound = true;
+		break;
+	}
+	if (!bSuccessFound) {
+		NVBAK_LOG("[NVRAM]:can not find bad block bit map\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	#if 0
+	for (i = 0; i < NvRamBlockNum; i++) {
+		NVBAK_LOG("[NVRAM_Bitmap]:Block%d,%d\n", i, tempBitmap1[i]);
+	}
+	#endif
+	for (i = 0; i < iBlockNum; i++) {
+		if (tempBitmap1[i] == 0) {
+			pos = i;
+			break;
+		}
+	}
+	if (i == iBlockNum) {
+		NVBAK_LOG("[NVRAM]:can not find map file\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	iResult = read(fd, tempBuffer,
+	               iBlockSize * iReserveBlockCount); // if mapfile > 128KB read 2*128KB
+	NVBAK_LOG("[NVRAM]:map file read size:%d\n", iResult);
+	if (iResult <= 0) {
+		NVBAK_LOG("[NVRAM]:read size error\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	iMapFileSize = *((unsigned int*)tempBuffer);
+	iDatFileSize = *((unsigned int*)(tempBuffer + 4));
+	iAPBackupFileNum = *((unsigned int*)(tempBuffer + 3 * sizeof(
+	        unsigned int) + iMapFileSize));
+	iMDBackupFileNum = *((unsigned short*)(tempBuffer + 3 * sizeof(
+	        unsigned int) + iMapFileSize + sizeof(unsigned int)));
+	NVBAK_LOG("[NVRAM]: map file:%d,dat file:%d\n", iMapFileSize, iDatFileSize);
+	/* NVBAK_LOG("[NVRAM]: AP backup file num:%d,MD backup file num:%d\n",iAPBackupFileNum,iMDBackupFileNum);
+	if(iAPBackupFileNum != 0 ){
+		iFileDesc_backupflag = open(g_pcNVM_BackFlag , O_TRUNC|O_CREAT|O_RDWR|O_SYNC, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP);
+		if(INVALID_HANDLE_VALUE == iFileDesc_backupflag)
+	    {
+	        NVBAK_LOG("[NVRAM]: cannot open backup file num data\n");
+	        close(iFileDesc_backupflag);
+	        close(fd);
+	        free(tempBuffer);
+	        free(tempBitmap1);
+	        free(tempBitmap2);
+	    		return false;
+	    }
+		result=write(iFileDesc_backupflag,&iAPBackupFileNum,sizeof(unsigned int));
+		if(result!=(int)sizeof(unsigned int))
+		{
+	  		NVBAK_LOG("[NVRAM]:map file write error\r\n");
+	  		close(fd);
+	  		free(tempBuffer);
+	  		close(iFileDesc_backupflag);
+			free(tempBitmap1);
+			free(tempBitmap2);
+	  		return false;
+			}
+		}*/
+	iFileDesc_file = open(g_pcNVM_AllFile_Check, O_TRUNC | O_CREAT | O_RDWR,
+	                      S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+	iFileDesc_map = open(g_pcNVM_AllMap_Check,  O_TRUNC | O_CREAT | O_RDWR,
+	                     S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_file) {
+		NVBAK_LOG("[NVRAM]: cannot open file data\n");
+		if (iFileDesc_map != INVALID_HANDLE_VALUE)
+			close(iFileDesc_map);
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_map) {
+		NVBAK_LOG("[NVRAM]: cannot open map data\n");
+		close(iFileDesc_file);
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+
+	iResult = write(iFileDesc_map, tempBuffer + 3 * sizeof(unsigned int),
+	                iMapFileSize);
+	if (iResult != (int)iMapFileSize) {
+		NVBAK_LOG("[NVRAM]:map file write error\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+
+	free(tempBuffer);
+	tempBuffer = NULL;
+	if (iDatFileSize % iBlockSize != 0)
+		tempBuffer = (char*)malloc((iDatFileSize / iBlockSize + 1) * iBlockSize);
+	else
+		tempBuffer = (char*)malloc(iDatFileSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	int iFreeBlockNum = 0;
+	for (i = pos + 1 + iReservePos; i < iBlockNum;
+	        i++) { // heli if > 126KB need pos + 2
+		if (tempBitmap1[i] == 0) {
+			pos = i;
+			break;
+		}
+	}
+	if (i == iBlockNum) {
+		NVBAK_LOG("[NVRAM]:there are not enough good blocks for read nvram data file\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	} else {
+		for (; i < iBlockNum; i++) {
+			if (tempBitmap1[i] == 0)
+				iFreeBlockNum++;
+		}
+		if ((iFreeBlockNum * iBlockSize) < (iDatFileSize)) {
+			NVBAK_LOG("[NVRAM]:there are not enough good blocks for read  nvram data file\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+	}
+	int iReadTime = 0;
+	if (iDatFileSize % iBlockSize != 0)
+		iReadTime = iDatFileSize / iBlockSize + 1;
+	else
+		iReadTime = iDatFileSize / iBlockSize;
+	int iAlreadyRead = 0;
+	NVBAK_LOG("[NVRAM]:dat file read begin:%d\n", pos);
+	for (i = 0; i < iReadTime; i++) {
+		iResult = lseek(fd, pos * iBlockSize, SEEK_SET);
+		if (iResult != pos * (int)iBlockSize) {
+			NVBAK_LOG("[NVRAM]:binregion lseek error\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+
+		iResult = read(fd, tempBuffer + i * iBlockSize, iBlockSize);
+		NVBAK_LOG("[NVRAM]:dat file read size:%d\n", iResult);
+		if (iResult != (int)iBlockSize) {
+			NVBAK_LOG("[NVRAM]:bin region read error\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		iAlreadyRead++;
+		if (iAlreadyRead == iReadTime)
+			break;
+		for (j = pos + 1; j < iBlockNum; j++) {
+			if (tempBitmap1[j] == 0) {
+				pos = j;
+				break;
+			}
+		}
+		if (j >= iBlockNum) {
+			NVBAK_LOG("[NVRAM]:there are not enough good blocks to read nvram data file\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+	}
+	NVBAK_LOG("[NVRAM]:dat file read end:%d\n", pos);
+	iResult = write(iFileDesc_file, tempBuffer, iDatFileSize);
+	if (iResult != (int)iDatFileSize) {
+		NVBAK_LOG("[NVRAM]:dat file write error\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	close(fd);
+	free(tempBuffer);
+	close(iFileDesc_file);
+	close(iFileDesc_map);
+	free(tempBitmap1);
+	free(tempBitmap2);
+	NVBAK_LOG("[NVRAM]:Leave FileOp_RestoreFromBinRegion_ToFile\n");
+	return true;
+}//end FileOp_RestoreFromBinRegion_ToFile
+bool FileOp_CheckBackUpResult() {
+	unsigned int ulSavedCheckSum;
+	unsigned int ulCheckSum;
+	struct stat st;
+	unsigned int iFileSize;
+
+	NVBAK_LOG("[NVRAM]: Enter FileOp_CheckBackUpResult\n");
+
+	if (!FileOp_GetCheckSum()) {
+		NVBAK_LOG("[FileOp_RestoreData_All] GetCheckSum Fail !");
+		return false;
+	}
+	ulSavedCheckSum = stBackupFileInfo.ulCheckSum;
+	ulCheckSum = FileOp_ComputeReadBackCheckSum();
+	NVBAK_LOG("[NVRAM]ulSavedCheckSum:%x", ulSavedCheckSum);
+	NVBAK_LOG("[NVRAM]ulCheckSun:%x", ulCheckSum);
+	if (stat(g_pcNVM_AllFile_Check, &st) < 0) {
+		NVBAK_LOG("[NVRAM]Error FileOp_CheckBackUpResult stat \n");
+		return false;
+	}
+	iFileSize = st.st_size;
+	NVBAK_LOG("[NVRAM]iFileSize:%d\n", iFileSize);
+	ulCheckSum ^= iFileSize;
+
+	NVBAK_LOG("[NVRAM]FileOp_CheckSum:%x,%x", ulSavedCheckSum, ulCheckSum);
+	if (!FileOp_CompareCheckSum(ulSavedCheckSum, ulCheckSum)) {
+		NVBAK_LOG("[NVRAM]check sum not match!");
+		return false;
+	}
+	NVBAK_LOG("[NVRAM]: Leave FileOp_CheckBackUpResult\n");
+	return true;
+}//end of FileOp_CheckBackUpResult
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libfile_op/libfile_op.h b/src/telephonyware/3.0/mtk_nvram/src/libfile_op/libfile_op.h
new file mode 100644
index 0000000..a32a0ef
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libfile_op/libfile_op.h
@@ -0,0 +1,518 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   File_OP.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    header file of main function
+ *
+ * Author:
+ * -------
+ *   Nick Huang (mtk02183)
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * Jun 18 2009 mtk80306
+ * [DUMA00120904] optimize the power button and nvram
+ *
+ *
+ * Apr 29 2009 mtk80306
+ * [DUMA00116080] revise the customization of nvram
+ * revise nvram customization
+ *
+ * Mar 21 2009 mtk80306
+ * [DUMA00112158] fix the code convention.
+ * fix the codeing convention.
+ *
+ * Mar 15 2009 mtk80306
+ * [DUMA00111629] add camera nvram files
+ * add the check of bin region.
+ *
+ * Feb 23 2009 mtk80306
+ * [DUMA00109277] add meta _battery mode.
+ *
+ *
+ * Nov 24 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ * Oct 29 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ *
+ *
+ *******************************************************************************/
+
+//
+// FILE_OP driver.
+//
+#include <stdbool.h>
+
+#ifndef __FILE_OP_H__
+#define __FILE_OP_H__
+
+//*****************************************************************************
+//
+//                          TTT Driver MACRO def
+//
+//*****************************************************************************
+
+//-------------------------------------
+// underlying COM port related defines
+//-------------------------------------
+
+//*****************************************************************************
+//
+//                          FILE_OP Driver data stru def
+//
+//*****************************************************************************
+
+//*****************************************************************************
+//
+//                          FILE_OP Driver var def
+//
+//*****************************************************************************
+
+
+//*****************************************************************************
+//                          FILE_OP Driver General Functions Prototypes
+//
+//*****************************************************************************
+/*
+#ifdef _WIN32
+#define LOGD(x)
+#else
+#include <utils/Log.h>
+#undef LOG_TAG
+#define LOG_TAG "NVBACKUP"
+#endif
+
+#define NVBAK_LOG(...) \
+    do { \
+        LOGD(__VA_ARGS__); \
+    } while (0)
+*/
+#define MAX_NAMESIZE  128
+#define DATA_FLAG  (0xfecf)
+
+//#define MaxFileNum   936
+
+typedef struct {
+	int NameSize;					//the size of file name
+	int FielStartAddr;				//the file offset address in content block
+	int Filesize;					//the size of nvram files
+	char cFileName[MAX_NAMESIZE];	//the name of nvram file
+} File_Title;
+
+//the header in title block
+typedef struct {
+	short int iApBootNum;			//the numbers of nvram file which will resotre ervery boot in ap side.
+	short int iApCleanNum;			//the numbers of nvram file which will resotre when clean boot in ap side .
+	short int iMdBootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMdCleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdCoreNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdDataNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	//Add for second modem for MT658*
+	short int iMd2BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd2CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd2ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	//End of Comment
+	short int iMd5BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd5CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd5ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iViaNum;                //test for VIA
+	int       iFileBufLen;			//the size of file content.
+	int       BackupFlag;			//the flag of valid block
+} File_Title_Header1;
+
+typedef struct {
+	short int iApBootNum;			//the numbers of nvram file which will resotre ervery boot in ap side.
+	short int iApCleanNum;			//the numbers of nvram file which will resotre when clean boot in ap side .
+	short int iMdBootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMdCleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdCoreNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdDataNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	//Add for second modem for MT658*
+	short int iMd2BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd2CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd2ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	//End of Comment
+	short int iMd5BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd5CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd5ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	int       iFileBufLen;			//the size of file content.
+	int       BackupFlag;			//the flag of valid block
+	short int iViaNum;                //test for VIA
+} File_Title_Header2;
+
+
+typedef struct {
+	short int iApBootNum;			//the numbers of nvram file which will resotre ervery boot in ap side.
+	short int iApCleanNum;			//the numbers of nvram file which will resotre when clean boot in ap side .
+	short int iMdBootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMdCleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdCoreNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdDataNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	//Add for second modem for MT658*
+	short int iMd2BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd2CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd2ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iViaNum;                //test for VIA
+	int       iFileBufLen;			//the size of file content.
+	int       BackupFlag;			//the flag of valid block
+	//End of Comment
+	short int iMd5BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd5CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd5ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+} File_Title_Header3;
+
+
+typedef struct {
+	short int iApBootNum;			//the numbers of nvram file which will resotre ervery boot in ap side.
+	short int iApCleanNum;			//the numbers of nvram file which will resotre when clean boot in ap side .
+	short int iMdBootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMdCleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdCoreNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdDataNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	//Add for second modem for MT658*
+	short int iMd2BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd2CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd2ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	int       iFileBufLen;			//the size of file content.
+	int       BackupFlag;			//the flag of valid block
+	//End of Comment
+	short int iMd5BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd5CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd5ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iViaNum;                //test for VIA
+} File_Title_Header4;
+
+typedef struct {
+	short int iApBootNum;			//the numbers of nvram file which will resotre ervery boot in ap side.
+	short int iApCleanNum;			//the numbers of nvram file which will resotre when clean boot in ap side .
+	short int iMdBootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMdCleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdCoreNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdDataNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	//Add for second modem for MT658*
+	short int iMd2BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd2CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd2ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	//End of Comment
+	short int iMd5BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd5CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd5ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd3BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd3CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd3ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	int       iFileBufLen;			//the size of file content.
+	int       BackupFlag;			//the flag of valid block
+} File_Title_Header5;
+
+typedef struct {
+	short int iApBootNum;			//the numbers of nvram file which will resotre ervery boot in ap side.
+	short int iApCleanNum;			//the numbers of nvram file which will resotre when clean boot in ap side .
+	short int iMdBootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMdCleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdCoreNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMdDataNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	//Add for second modem for MT658*
+	short int iMd2BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd2CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd2ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	//End of Comment
+	short int iMd3BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd3CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd3ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	int       iFileBufLen;			//the size of file content.
+	int       BackupFlag;			//the flag of valid block
+	short int iMd5BootNum;			//the numbers of nvram file which will resotre ervery boot in modem side.
+	short int iMd5CleanNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+	short int iMd5ImpntNum;			//the numbers of nvram file which will resotre when clean boot in modem side.
+} File_Title_Header6;
+
+//the type of nvram file
+typedef enum {
+	APBOOT = 0,						//resotre ervery boot in ap side.
+	APCLN,							//resotre when clean boot in ap side.
+	MDBOOT,							//resotre ervery boot in modem side.
+	MDCLN,							//resotre when clean boot in modem side.
+	MDIMP,
+	MDCOR,
+	MDDATA,
+	//Add for second modem for MT658*
+	MD2BOOT,							//resotre ervery boot in modem side.
+	MD2CLN,							//resotre when clean boot in modem side.
+	MD2IMP,
+	//End of Comment
+	//LTE support
+	MD5BOOT,							//resotre ervery boot in modem side.
+	MD5CLN,							//resotre when clean boot in modem side.
+	MD5IMP,
+	VIA,
+	/*Add for C2K modem*/
+	MD3BOOT,							//resotre ervery boot in modem side.
+	MD3CLN,							//resotre when clean boot in modem side.
+	MD3IMP,
+	/*Add for C2K modem-End*/
+	ALL								//all files
+} MetaData;
+
+//#ifndef bool
+//#define bool int
+//#define false 0
+//#define true 1
+//#endif
+
+extern char *strDMFileFolderPath;
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/********************************************************************************
+//FUNCTION:
+//		FileOp_CreateNVMFolder
+//DESCRIPTION:
+//		this function is called to create the directory for ap side
+//
+//PARAMETERS:
+//		None
+//
+//RETURN VALUE:
+//		TRUE is success, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool FileOp_CreateNVMFolder(void );
+
+
+/********************************************************************************
+//FUNCTION:
+//		RestoreData
+//DESCRIPTION:
+//		this function is called to read the the information and content of nvram files in binregion and generate
+//		the file of title and content
+//
+//PARAMETERS:
+//		None
+//
+//RETURN VALUE:
+//		TRUE is success, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool FileOp_RestoreData(MetaData eRestoreType);
+
+/********************************************************************************
+//FUNCTION:
+//		BackupData
+//DESCRIPTION:
+//		this function is called to read the the information and content of nvram files in binregion and generate
+//		the file of title and content
+//
+//PARAMETERS:
+//		None
+//
+//RETURN VALUE:
+//		TRUE is success, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool FileOp_BackupData(MetaData eBackupType);
+
+/********************************************************************************
+//FUNCTION:
+//		BackupAll
+//DESCRIPTION:
+//		this function is called to backup data from fat2 parittion to bin region
+//
+//PARAMETERS:
+//		None
+//
+//RETURN VALUE:
+//		None
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+void FileOp_BackupAll(void );
+
+/********************************************************************************
+//FUNCTION:
+//		RestoreAll
+//DESCRIPTION:
+//		this function is called to restore all files from bin region to fat2 partition
+//
+//PARAMETERS:
+//		None
+//
+//RETURN VALUE:
+//		None
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+void FileOp_RestoreAll(void );
+
+/********************************************************************************
+//FUNCTION:
+//		DeleteAll
+//DESCRIPTION:
+//		this function is called to delete all files in fat2 partition
+//
+//PARAMETERS:
+//		None
+//
+//RETURN VALUE:
+//		None
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+void FileOp_DeleteAll(void );
+
+/********************************************************************************
+//FUNCTION:
+//		DeleteAll
+//DESCRIPTION:
+//		this function is called to delete all files in fat2 partition
+//
+//PARAMETERS:
+//		None
+//
+//RETURN VALUE:
+//		None
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+void FileOp_DeleteRdebData(void );
+
+
+/********************************************************************************
+//FUNCTION:
+//		RestoreBootData
+//DESCRIPTION:
+//		this function is called to restore the APBOOT and MDBOOT file to FAT2 partition from binregion
+//
+//PARAMETERS:
+//		None
+//
+//RETURN VALUE:
+//		None
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+void FileOp_RestoreBootData(void );
+
+bool FileOp_BackupAll_NvRam(void);
+bool FileOp_RestoreAll_NvRam(void);
+bool FileOp_RestoreFromBinRegion(bool bCleanBoot);
+bool FileOp_IsSyncWithBinRegion();
+bool FileOp_BackupToBinRegion_All();
+bool FileOp_ClearBinRegion();
+bool FileOp_RestoreFromBinRegion_ToFile();
+bool FileOp_CheckBackUpResult();
+
+bool FileOp_RecoveryData();
+bool FileOp_SetCleanBootFlag(bool bSetFlag);
+bool FileOp_GetCleanBootFlag(unsigned int * iCleanBootFlag);
+bool FileOp_RestoreFromFiles(int eBackupType);
+bool FileOp_BackupDataToFiles(int * iFileMask, bool bWorkForBinRegion);
+bool FileOp_RestoreData_All(void);
+bool FileOp_BackupData_Special(char * buffer, int count , int mode);
+bool FileOp_CreateBinRegionBadBlockBitMap();
+bool FileOp_CmpBackupFileNum();
+
+bool FileOp_RestoreFromBinRegionForDM();
+bool FileOp_BackupToBinRegionForDM();
+bool FileOp_BackupToBinRegion_All_Ex(int value);
+bool FileOp_BackupToBinRegion_All_Exx(unsigned char *time_value);
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __FILE_OP_H__ */
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libnvram/CFG_file_info.c b/src/telephonyware/3.0/mtk_nvram/src/libnvram/CFG_file_info.c
new file mode 100644
index 0000000..4cc0ae8
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libnvram/CFG_file_info.c
@@ -0,0 +1,932 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   CFG_file_info.c
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *   Configuration File List
+ *
+ *
+ * Author:
+ * -------
+ *   Nick Huang (mtk02183)
+ *
+ ****************************************************************************/
+/*
+#ifndef __CFG_FILE_INFO_H__
+#define __CFG_FILE_INFO_H__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+*/
+#define __ALLOCATE_CFG_AUDIO_DEFAULT_H
+
+#include "CFG_file_public.h"
+#include "libnvram.h"
+#include "libnvram_log.h"
+#include "inc/CFG_file_lid.h"
+#include "inc/CFG_module_file.h"
+#include "inc/CFG_module_default.h"
+#include "inc/CFG_file_info.h"
+#include "CFG_file_info_custom.h"
+#include <string.h>
+#include <stdio.h>
+//#include <cutils/properties.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define MAX_FILENAMELEN 128;
+#define RESERVE_PATH	"Reserved"
+#define RESERVE_VER	"000"
+#define MTK_PRODUCT_INFO_SUPPORT
+
+int BT_ConvertFunc(int, int, char*, char*);
+int SBP_ConvertFunc(int, int, char*, char*);
+
+const TCFG_FILE g_akCFG_File[] = {
+	//nvram version information
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDCL/FILE_VER",		VER(AP_CFG_FILE_VER_INFO_LID), 		4,
+		CFG_FILE_VER_FILE_REC_TOTAL,			DEFAULT_ZERO,						0,  DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDEB/BT_Addr",		VER(AP_CFG_RDEB_FILE_BT_ADDR_LID),	CFG_FILE_BT_ADDR_REC_SIZE,
+		CFG_FILE_BT_ADDR_REC_TOTAL,			DEFAULT_ZERO,				0,  DataConvert , BT_ConvertFunc
+	},
+
+#if 0
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDEB/WIFI",	    	VER(AP_CFG_RDEB_FILE_WIFI_LID),		    CFG_FILE_WIFI_REC_SIZE,
+		CFG_FILE_WIFI_REC_TOTAL,		    	SIGNLE_DEFUALT_REC,				    (char *)&stWifiCfgDefault, DataReset , NULL
+	},
+#endif
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDCL/AUXADC",			VER(AP_CFG_RDCL_FILE_AUXADC_LID),	CFG_FILE_AUXADC_REC_SIZE,
+		CFG_FILE_AUXADC_REC_TOTAL,				SIGNLE_DEFUALT_REC,					(char *)&stADCDefualt, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_Para",	VER(AP_CFG_RDCL_CAMERA_PARA_LID),   CFG_FILE_CAMERA_PARA_REC_SIZE,
+		CFG_FILE_CAMERA_PARA_REC_TOTAL,			DEFAULT_ZERO,						0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_3A",	   	VER(AP_CFG_RDCL_CAMERA_3A_LID),     CFG_FILE_CAMERA_3A_REC_SIZE,
+		CFG_FILE_CAMERA_3A_REC_TOTAL,			    DEFAULT_ZERO,						0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_SHADING",	VER(AP_CFG_RDCL_CAMERA_SHADING_LID), CFG_FILE_CAMERA_SHADING_REC_SIZE,
+		CFG_FILE_CAMERA_SHADING_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_DEFECT",	VER(AP_CFG_RDCL_CAMERA_DEFECT_LID), CFG_FILE_CAMERA_DEFECT_REC_SIZE,
+		CFG_FILE_CAMERA_DEFECT_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_SENSOR",	VER(AP_CFG_RDCL_CAMERA_SENSOR_LID), CFG_FILE_CAMERA_SENSOR_REC_SIZE,
+		CFG_FILE_CAMERA_SENSOR_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_LENS",	VER(AP_CFG_RDCL_CAMERA_LENS_LID),   CFG_FILE_CAMERA_LENS_REC_SIZE,
+		CFG_FILE_CAMERA_LENS_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDCL/UART",			VER(AP_CFG_RDCL_UART_LID), 			CFG_FILE_UART_CONFIG_SIZE,
+		CFG_FILE_UART_CONFIG_TOTAL,					SIGNLE_DEFUALT_REC,				(char *)&stUARTConfigDefault, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDCL/FACTORY",		VER(AP_CFG_RDCL_FACTORY_LID), 		CFG_FILE_FACTORY_REC_SIZE,
+		CFG_FILE_FACTORY_REC_TOTAL,				DEFAULT_ZERO,			    	    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDCL/BWCS",			VER(AP_CFG_RDCL_BWCS_LID), 	        CFG_FILE_BWCS_CONFIG_SIZE,
+		CFG_FILE_BWCS_CONFIG_TOTAL,				SIGNLE_DEFUALT_REC,					(char *)&stBWCSConfigDefault, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDCL/HWMON_ACC",		VER(AP_CFG_RDCL_HWMON_ACC_LID), 	CFG_FILE_HWMON_ACC_REC_SIZE,
+		CFG_FILE_HWMON_ACC_REC_TOTAL,		    DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDCL/HWMON_GYRO",	VER(AP_CFG_RDCL_HWMON_GYRO_LID), 	CFG_FILE_HWMON_GYRO_REC_SIZE,
+		CFG_FILE_HWMON_GYRO_REC_TOTAL,		    DEFAULT_ZERO,					    0, DataReset, NULL
+	},
+#if 0
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDEB/WIFI_CUSTOM",	VER(AP_CFG_RDEB_WIFI_CUSTOM_LID),	CFG_FILE_WIFI_CUSTOM_REC_SIZE,
+		CFG_FILE_WIFI_CUSTOM_REC_TOTAL,		    SIGNLE_DEFUALT_REC,				    (char *)&stWifiCustomDefault, DataReset , NULL
+	},
+#endif
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDEB/OMADM_USB",		VER(AP_CFG_RDEB_OMADM_USB_LID),		CFG_FILE_OMADMUSB_REC_SIZE,
+		CFG_FILE_OMADMUSB_REC_TOTAL,		    SIGNLE_DEFUALT_REC,				    (char *)&stOMADMUSBDefualt, DataReset , NULL
+	},
+	// { "/nvram/APCFG/APRDCL/ADDED",	VER(AP_CFG_RDCL_ADDED_LID),	CFG_FILE_added_CONFIG_SIZE,
+	//	CFG_FILE_added_CONFIG_TOTAL,		    SIGNLE_DEFUALT_REC,				    (char *)&stAddedDefault},
+	{
+		"/mnt/vendor/nvdata/media/Voice_Recognize_Param",   VER(AP_CFG_RDCL_FILE_VOICE_RECOGNIZE_PARAM_LID), CFG_FILE_VOICE_RECOGNIZE_PAR_SIZE,
+		CFG_FILE_VOICE_RECOGNIZE_PAR_TOTAL, SIGNLE_DEFUALT_REC  ,    (char *)&Voice_Recognize_Par_default, DataReset , NULL
+	},
+//Reserved ten item
+	{
+		"/mnt/vendor/nvdata/media/Audio_AudEnh_Control_Opt",   VER(AP_CFG_RDCL_FILE_AUDIO_AUDENH_CONTROL_OPTION_PAR_LID), CFG_FILE_AUDIO_AUDENH_CONTROL_OPTION_PAR_SIZE,
+		CFG_FILE_AUDIO_AUDENH_CONTROL_OPTION_PAR_TOTAL, SIGNLE_DEFUALT_REC  ,    (char *)&AUDENH_Control_Option_Par_default, DataReset , NULL
+	},
+	{
+		"/mnt/vendor/nvdata/media/Audio_VOIP_Param",   VER(AP_CFG_RDCL_FILE_AUDIO_VOIP_PAR_LID), CFG_FILE_AUDIO_VOIP_PAR_SIZE,
+		CFG_FILE_AUDIO_VOIP_PAR_TOTAL, SIGNLE_DEFUALT_REC  ,    (char *)&Audio_VOIP_Par_default, DataReset , NULL
+	},
+	/*yucong add for PS calibration*/
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDCL/HWMON_PS",	VER(AP_CFG_RDCL_HWMON_PS_LID), 	CFG_FILE_HWMON_PS_REC_SIZE,
+		CFG_FILE_HWMON_PS_REC_TOTAL,		    DEFAULT_ZERO,					    0, DataReset, NULL
+	},
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDCL/MD_Type",   VER(AP_CFG_FILE_MDTYPE_LID), CFG_FILE_MDTYPE_CONFIG_SIZE,
+		CFG_FILE_MDTYPE_CONFIG_TOTAL, SIGNLE_DEFUALT_REC  ,    (char *)&stMDTypeDefault, DataReset , NULL
+	},
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDCL/EXT_MD_Type",   VER(AP_CFG_FILE_EXT_MDTYPE_LID), CFG_FILE_EXT_MDTYPE_CONFIG_SIZE,
+		CFG_FILE_EXT_MDTYPE_CONFIG_TOTAL, SIGNLE_DEFUALT_REC,    (char *)&stEXTMDTypeDefault, DataReset , NULL
+	},
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDCL/SDIO",   VER(AP_CFG_RDCL_FILE_SDIO_LID), CFG_FILE_SDIO_CONFIG_SIZE,
+		CFG_FILE_SDIO_CONFIG_TOTAL, SIGNLE_DEFUALT_REC  , (char *)&stSDIOConfigDefault, DataReset , NULL
+	},
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_VERSION",	VER(AP_CFG_RDCL_CAMERA_VERSION_LID),   CFG_FILE_CAMERA_VERSION_REC_SIZE,
+		CFG_FILE_CAMERA_VERSION_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_FEATURE",	VER(AP_CFG_RDCL_CAMERA_FEATURE_LID),   CFG_FILE_CAMERA_FEATURE_REC_SIZE,
+		CFG_FILE_CAMERA_FEATURE_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_GEOMETRY",	VER(AP_CFG_RDCL_CAMERA_GEOMETRY_LID),   CFG_FILE_CAMERA_GEOMETRY_REC_SIZE,
+		CFG_FILE_CAMERA_GEOMETRY_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/APCFG/APRDCL/MD_SBP",   VER(AP_CFG_RDCL_FILE_MD_SBP_LID), CFG_FILE_MD_SBP_CONFIG_SIZE,
+		CFG_FILE_MD_SBP_CONFIG_TOTAL, SIGNLE_DEFUALT_REC  ,    (char *)&stMDSBPConfigDefault, DataReset , NULL
+	},
+
+//Reserved
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_SHADING2",	VER(AP_CFG_RDCL_CAMERA_SHADING_LID), CFG_FILE_CAMERA_SHADING_REC_SIZE,
+		CFG_FILE_CAMERA_SHADING_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_SHADING3",	VER(AP_CFG_RDCL_CAMERA_SHADING_LID), CFG_FILE_CAMERA_SHADING_REC_SIZE,
+		CFG_FILE_CAMERA_SHADING_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_SHADING4",	VER(AP_CFG_RDCL_CAMERA_SHADING_LID), CFG_FILE_CAMERA_SHADING_REC_SIZE,
+		CFG_FILE_CAMERA_SHADING_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_SHADING5",	VER(AP_CFG_RDCL_CAMERA_SHADING_LID), CFG_FILE_CAMERA_SHADING_REC_SIZE,
+		CFG_FILE_CAMERA_SHADING_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_SHADING6",	VER(AP_CFG_RDCL_CAMERA_SHADING_LID), CFG_FILE_CAMERA_SHADING_REC_SIZE,
+		CFG_FILE_CAMERA_SHADING_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_SHADING7",	VER(AP_CFG_RDCL_CAMERA_SHADING_LID), CFG_FILE_CAMERA_SHADING_REC_SIZE,
+		CFG_FILE_CAMERA_SHADING_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_SHADING8",	VER(AP_CFG_RDCL_CAMERA_SHADING_LID), CFG_FILE_CAMERA_SHADING_REC_SIZE,
+		CFG_FILE_CAMERA_SHADING_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_SHADING9",	VER(AP_CFG_RDCL_CAMERA_SHADING_LID), CFG_FILE_CAMERA_SHADING_REC_SIZE,
+		CFG_FILE_CAMERA_SHADING_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_SHADING10",	VER(AP_CFG_RDCL_CAMERA_SHADING_LID), CFG_FILE_CAMERA_SHADING_REC_SIZE,
+		CFG_FILE_CAMERA_SHADING_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_SHADING11",	VER(AP_CFG_RDCL_CAMERA_SHADING_LID), CFG_FILE_CAMERA_SHADING_REC_SIZE,
+		CFG_FILE_CAMERA_SHADING_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_SHADING12",	VER(AP_CFG_RDCL_CAMERA_SHADING_LID), CFG_FILE_CAMERA_SHADING_REC_SIZE,
+		CFG_FILE_CAMERA_SHADING_REC_TOTAL,			DEFAULT_ZERO,					    0, DataReset , NULL
+	},
+
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_PLINE",	VER(AP_CFG_RDCL_CAMERA_PLINE_LID),   CFG_FILE_CAMERA_PLINE_REC_SIZE,
+		CFG_FILE_CAMERA_PLINE_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_PLINE2",	VER(AP_CFG_RDCL_CAMERA_PLINE_LID),   CFG_FILE_CAMERA_PLINE_REC_SIZE,
+		CFG_FILE_CAMERA_PLINE_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_PLINE3",	VER(AP_CFG_RDCL_CAMERA_PLINE_LID),   CFG_FILE_CAMERA_PLINE_REC_SIZE,
+		CFG_FILE_CAMERA_PLINE_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_PLINE4",	VER(AP_CFG_RDCL_CAMERA_PLINE_LID),   CFG_FILE_CAMERA_PLINE_REC_SIZE,
+		CFG_FILE_CAMERA_PLINE_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_PLINE5",	VER(AP_CFG_RDCL_CAMERA_PLINE_LID),   CFG_FILE_CAMERA_PLINE_REC_SIZE,
+		CFG_FILE_CAMERA_PLINE_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_PLINE6",	VER(AP_CFG_RDCL_CAMERA_PLINE_LID),   CFG_FILE_CAMERA_PLINE_REC_SIZE,
+		CFG_FILE_CAMERA_PLINE_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_PLINE7",	VER(AP_CFG_RDCL_CAMERA_PLINE_LID),   CFG_FILE_CAMERA_PLINE_REC_SIZE,
+		CFG_FILE_CAMERA_PLINE_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_PLINE8",	VER(AP_CFG_RDCL_CAMERA_PLINE_LID),   CFG_FILE_CAMERA_PLINE_REC_SIZE,
+		CFG_FILE_CAMERA_PLINE_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_PLINE9",	VER(AP_CFG_RDCL_CAMERA_PLINE_LID),   CFG_FILE_CAMERA_PLINE_REC_SIZE,
+		CFG_FILE_CAMERA_PLINE_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_PLINE10",	VER(AP_CFG_RDCL_CAMERA_PLINE_LID),   CFG_FILE_CAMERA_PLINE_REC_SIZE,
+		CFG_FILE_CAMERA_PLINE_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_PLINE11",	VER(AP_CFG_RDCL_CAMERA_PLINE_LID),   CFG_FILE_CAMERA_PLINE_REC_SIZE,
+		CFG_FILE_CAMERA_PLINE_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_PLINE12",	VER(AP_CFG_RDCL_CAMERA_PLINE_LID),   CFG_FILE_CAMERA_PLINE_REC_SIZE,
+		CFG_FILE_CAMERA_PLINE_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+    #if 0
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_AF",	VER(AP_CFG_RDCL_CAMERA_AF_LID),   CFG_FILE_CAMERA_AF_REC_SIZE,
+		CFG_FILE_CAMERA_AF_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+
+	{
+		"/mnt/vendor/nvdata/media/CAMERA_FLASH_CALIBRATION",	VER(AP_CFG_RDCL_CAMERA_FLASH_CALIBRATION_LID),   CFG_FILE_CAMERA_FLASH_CALIBRATION_REC_SIZE,
+		CFG_FILE_CAMERA_FLASH_CALIBRATION_REC_TOTAL,			        DEFAULT_ZERO,				0, DataReset , NULL
+	},
+	#endif
+};
+int iCustomBeginLID = AP_CFG_CUSTOM_BEGIN_LID;
+extern int iCustomBeginLID;
+int iFileVerInfoLID = AP_CFG_FILE_VER_INFO_LID;
+extern int iFileVerInfoLID;
+int iFileBTAddrLID = AP_CFG_RDEB_FILE_BT_ADDR_LID;
+extern int iFileBTAddrLID;
+int iFileAuxADCLID = AP_CFG_RDCL_FILE_AUXADC_LID;
+extern int iFileAuxADCLID;
+int iFileOMADMUSBLID = AP_CFG_RDEB_OMADM_USB_LID;
+extern int iFileOMADMUSBLID;
+
+
+typedef struct {
+	char	cFileName[128];
+	unsigned int iLID;
+} FileName;
+typedef struct {
+	char cCheckFileName[128];
+	int  iCheckFileIndex;
+
+} CheckFileName;
+
+typedef struct {
+	char cRecordCallerName[128];
+	int  iRecordCallerIndex;
+} RecordCallerName;
+
+
+typedef struct {
+	int lid;
+	unsigned char meta_mode_write;
+	unsigned char security_enable;
+} TCFG_FILE_PROTECT;
+
+
+
+FileName aBackupToBinRegion[] = {
+	{"FILE_VER", AP_CFG_FILE_VER_INFO_LID},
+	{"BT_Addr", AP_CFG_RDEB_FILE_BT_ADDR_LID},
+	{"WIFI", AP_CFG_RDEB_FILE_WIFI_LID},
+	{"AUXADC", AP_CFG_RDCL_FILE_AUXADC_LID},
+	{"FACTORY", AP_CFG_RDCL_FACTORY_LID},
+	{"HWMON_ACC", AP_CFG_RDCL_HWMON_ACC_LID},
+	{"HWMON_GYRO", AP_CFG_RDCL_HWMON_GYRO_LID},
+	{"HWMON_PS", AP_CFG_RDCL_HWMON_PS_LID}, //yucong add for ALSPS calibration
+	{"WIFI_CUSTOM", AP_CFG_RDEB_WIFI_CUSTOM_LID},
+	{"GPS", AP_CFG_CUSTOM_FILE_GPS_LID},
+#ifndef MTK_PRODUCT_INFO_SUPPORT
+	{"PRODUCT_INFO", AP_CFG_REEB_PRODUCT_INFO_LID},
+#endif
+#ifdef	MTK_SDIORETRY_SUPPORT
+	{"SDIO_RETRY", AP_CFG_RDEB_SDIO_RETRY_LID},
+#endif
+#if	defined(MTK_MT8193_HDMI_SUPPORT)||defined(MTK_INTERNAL_HDCP_SUPPORT)
+	{"Hdcp_Key_Table", AP_CFG_RDCL_FILE_HDCP_KEY_LID},
+#endif
+	{"SDIO", AP_CFG_RDCL_FILE_SDIO_LID},
+	{"MD_SBP", AP_CFG_RDCL_FILE_MD_SBP_LID},
+#ifdef MTK_SPEAKER_MONITOR_SUPPORT
+	{"Spk_Monitor", AP_CFG_RDCL_FILE_AUDIO_SPEAKER_MONITOR_LID},
+#endif
+	{"CAMERA_VERSION", AP_CFG_RDCL_CAMERA_VERSION_LID},
+	#if 0
+	{"CAMERA_AF", AP_CFG_RDCL_CAMERA_AF_LID},
+	{"CAMERA_FLASH_CALIBRATION", AP_CFG_RDCL_CAMERA_FLASH_CALIBRATION_LID},
+	#endif
+#ifdef CFG_FILE_FG_CONFIG_TOTAL
+	{"FG", AP_CFG_CUSTOM_FILE_FUEL_GAUGE_LID},
+#endif
+#ifdef MTK_FACTORY_GAMMA_SUPPORT
+	{"PQ_CUSTOM", AP_CFG_RDCL_FILE_PQ_LID},
+#endif
+#ifdef MTK_SCP_SMARTPA_SUPPORT
+	{"smartpa_calib", AP_CFG_CUSTOM_FILE_SMARTPA_CALIB_LID},
+#endif
+};
+FileName aPerformance[] = {
+	{"CAMERA_Para", AP_CFG_RDCL_CAMERA_PARA_LID},
+	{"CAMERA_3A", AP_CFG_RDCL_CAMERA_3A_LID},
+	{"CAMERA_SHADING", AP_CFG_RDCL_CAMERA_SHADING_LID},
+	{"CAMERA_DEFECT", AP_CFG_RDCL_CAMERA_DEFECT_LID},
+	{"CAMERA_SENSOR", AP_CFG_RDCL_CAMERA_SENSOR_LID},
+	{"CAMERA_LENS", AP_CFG_RDCL_CAMERA_LENS_LID},
+	#if 0
+	{"CAMERA_SHADING2", AP_CFG_RDCL_CAMERA_SHADING2_LID},
+	{"CAMERA_SHADING3", AP_CFG_RDCL_CAMERA_SHADING3_LID},
+	{"CAMERA_SHADING4", AP_CFG_RDCL_CAMERA_SHADING4_LID},
+	{"CAMERA_SHADING5", AP_CFG_RDCL_CAMERA_SHADING5_LID},
+	{"CAMERA_SHADING6", AP_CFG_RDCL_CAMERA_SHADING6_LID},
+	{"CAMERA_SHADING7", AP_CFG_RDCL_CAMERA_SHADING7_LID},
+	{"CAMERA_SHADING8", AP_CFG_RDCL_CAMERA_SHADING8_LID},
+	{"CAMERA_SHADING9", AP_CFG_RDCL_CAMERA_SHADING9_LID},
+	{"CAMERA_SHADING10", AP_CFG_RDCL_CAMERA_SHADING10_LID},
+	{"CAMERA_SHADING11", AP_CFG_RDCL_CAMERA_SHADING11_LID},
+	{"CAMERA_SHADING12", AP_CFG_RDCL_CAMERA_SHADING12_LID},
+	{"CAMERA_PLINE", AP_CFG_RDCL_CAMERA_PLINE_LID},
+	{"CAMERA_PLINE2", AP_CFG_RDCL_CAMERA_PLINE2_LID},
+	{"CAMERA_PLINE3", AP_CFG_RDCL_CAMERA_PLINE3_LID},
+	{"CAMERA_PLINE4", AP_CFG_RDCL_CAMERA_PLINE4_LID},
+	{"CAMERA_PLINE5", AP_CFG_RDCL_CAMERA_PLINE5_LID},
+	{"CAMERA_PLINE6", AP_CFG_RDCL_CAMERA_PLINE6_LID},
+	{"CAMERA_PLINE7", AP_CFG_RDCL_CAMERA_PLINE7_LID},
+	{"CAMERA_PLINE8", AP_CFG_RDCL_CAMERA_PLINE8_LID},
+	{"CAMERA_PLINE9", AP_CFG_RDCL_CAMERA_PLINE9_LID},
+	{"CAMERA_PLINE10", AP_CFG_RDCL_CAMERA_PLINE10_LID},
+	{"CAMERA_PLINE11", AP_CFG_RDCL_CAMERA_PLINE11_LID},
+	{"CAMERA_PLINE12", AP_CFG_RDCL_CAMERA_PLINE12_LID},
+	{"CAMERA_GEOMETRY", AP_CFG_RDCL_CAMERA_GEOMETRY_LID},
+	{"CAMERA_AF", AP_CFG_RDCL_CAMERA_AF_LID},
+	{"CAMERA_FLASH_CALIBRATION", AP_CFG_RDCL_CAMERA_FLASH_CALIBRATION_LID},
+    #endif
+};
+const TCFG_FILE_PROTECT g_akCFG_File_Protect[] = {
+	// {AP_CFG_RDEB_FILE_BT_ADDR_LID,1,1},
+};
+CheckFileName aCheckExistList[] = {
+///	{"/mnt/vendor/nvdata/APCFG/APRDCL/FILE_VER",		0},
+
+
+};
+
+RecordCallerName aRecordCallerList[] = {
+	{"Barcode",		1},
+	{"IMEI",		2},
+};
+
+
+
+extern const TCFG_FILE g_akCFG_File[];
+extern FileName aBackupToBinRegion[];
+extern FileName aPerformance[];
+extern CheckFileName aCheckExistList[];
+extern const TCFG_FILE_PROTECT g_akCFG_File_Protect[];
+
+
+
+const unsigned int g_i4CFG_File_Count = sizeof(g_akCFG_File)/sizeof(TCFG_FILE);
+const unsigned int g_Backup_File_Count = sizeof(aBackupToBinRegion)/(sizeof(FileName));
+const unsigned int g_Performance_File_Count = sizeof(aPerformance)/(sizeof(FileName));
+const unsigned int g_Check_File_Count = sizeof(aCheckExistList)/(sizeof(CheckFileName));
+const unsigned int g_i4CFG_File_Protect_Count = sizeof(g_akCFG_File_Protect)/(sizeof(TCFG_FILE_PROTECT));
+const unsigned int g_RecordCaller_Count = sizeof(aRecordCallerList)/(sizeof(RecordCallerName));
+
+extern const unsigned int g_i4CFG_File_Count;
+extern const unsigned int g_Backup_File_Count;
+extern const unsigned int g_Performance_File_Count;
+extern const unsigned int g_Check_File_Count ;
+extern const unsigned int g_i4CFG_File_Protect_Count;
+extern const unsigned int g_RecordCaller_Count;
+//misc log feature
+int nvram_misc_log_feature = 0;
+int nvram_misc_log_block_offset = 2;
+
+
+//check exist feature
+int nvram_check_exist_feature = 0;
+int nvram_check_exist_block_offset = 1;
+
+
+//read back check feature
+int nvram_read_back_feature = 0;
+
+pfConvertFunc aNvRamConvertFuncTable[] = {
+	NULL,//AP_CFG_FILE_VER_INFO_LID
+	NULL,//AP_CFG_RDEB_FILE_BT_ADDR_LID
+	NULL,//AP_CFG_RDCL_FILE_AUXADC_LID
+	NULL,//AP_CFG_RDCL_CAMERA_PARA_LID
+	NULL,//AP_CFG_RDCL_CAMERA_3A_LID
+	NULL,//AP_CFG_RDCL_CAMERA_SHADING_LID
+	NULL,//AP_CFG_RDCL_CAMERA_DEFECT_LID
+	NULL,//AP_CFG_RDCL_CAMERA_SENSOR_LID
+	NULL,//AP_CFG_RDCL_CAMERA_LENS_LID
+	NULL,//AP_CFG_RDCL_UART_LID
+	NULL,//AP_CFG_RDCL_FACTORY_LID
+	NULL,//AP_CFG_RDCL_BWCS_LID
+	NULL,//AP_CFG_RDCL_HWMON_ACC_LID
+	NULL,//AP_CFG_RDCL_HWMON_GYRO_LID
+	NULL,//AP_CFG_RDCL_HWMON_PS_LID
+	NULL,//AP_CFG_RDCL_FILE_AUDIO_LID
+	NULL,//AP_CFG_RDCL_FILE_AUDIO_COMPFLT_LID
+	NULL,//AP_CFG_RDCL_FILE_AUDIO_EFFECT_LID
+	NULL,//AP_CFG_CUSTOM_FILE_GPS_LID
+	NULL,//AP_CFG_RDEB_FILE_WIFI_LID
+	NULL,//AP_CFG_RDEB_WIFI_CUSTOM_LID
+	NULL,//AP_CFG_RDEB_OMADM_USB_LID
+	NULL,//AP_CFG_REEB_PRODUCT_INFO_LID
+#ifdef	MTK_SDIORETRY_SUPPORT
+	NULL,//AP_CFG_REEB_SDIO_RETRY_LID
+#endif
+	NULL,//AP_CFG_RDCL_FILE_MD_SBP_LID
+	NULL,//AP_CFG_RDCL_CAMERA_SHADING2_LID
+	NULL,//AP_CFG_RDCL_CAMERA_SHADING3_LID
+	NULL,//AP_CFG_RDCL_CAMERA_SHADING4_LID
+	NULL,//AP_CFG_RDCL_CAMERA_SHADING5_LID
+	NULL,//AP_CFG_RDCL_CAMERA_SHADING6_LID
+	NULL,//AP_CFG_RDCL_CAMERA_SHADING7_LID
+	NULL,//AP_CFG_RDCL_CAMERA_SHADING8_LID
+	NULL,//AP_CFG_RDCL_CAMERA_SHADING9_LID
+	NULL,//AP_CFG_RDCL_CAMERA_SHADING10_LID
+	NULL,//AP_CFG_RDCL_CAMERA_SHADING11_LID
+	NULL,//AP_CFG_RDCL_CAMERA_SHADING12_LID
+	NULL,//AP_CFG_RDCL_CAMERA_PLINE_LID
+	NULL,//AP_CFG_RDCL_CAMERA_PLINE2_LID
+	NULL,//AP_CFG_RDCL_CAMERA_PLINE3_LID
+	NULL,//AP_CFG_RDCL_CAMERA_PLINE4_LID
+	NULL,//AP_CFG_RDCL_CAMERA_PLINE5_LID
+	NULL,//AP_CFG_RDCL_CAMERA_PLINE6_LID
+	NULL,//AP_CFG_RDCL_CAMERA_PLINE7_LID
+	NULL,//AP_CFG_RDCL_CAMERA_PLINE8_LID
+	NULL,//AP_CFG_RDCL_CAMERA_PLINE9_LID
+	NULL,//AP_CFG_RDCL_CAMERA_PLINE10_LID
+	NULL,//AP_CFG_RDCL_CAMERA_PLINE11_LID
+	NULL,//AP_CFG_RDCL_CAMERA_PLINE12_LID
+
+};
+
+extern pfConvertFunc aNvRamConvertFuncTable[];
+
+//Add for new nvram partition feature
+pfCallbackForDaemon callback_for_nvram_daemon = NULL;
+extern pfCallbackForDaemon callback_for_nvram_daemon;
+
+#ifdef MTK_PRODUCT_INFO_SUPPORT
+extern bool nvram_new_partition_support() {
+	return true;
+}
+const TABLE_FOR_SPECIAL_LID g_new_nvram_lid[] = {
+#ifdef MTK_MLC_NAND_SUPPORT
+	{ AP_CFG_REEB_PRODUCT_INFO_LID, 0, 2 * 1024 * 1024 },
+#else
+	{ AP_CFG_REEB_PRODUCT_INFO_LID, 0, 1024 * 1024 },
+#endif
+};
+const unsigned int g_new_nvram_lid_count = sizeof(g_new_nvram_lid) / sizeof(
+            TABLE_FOR_SPECIAL_LID);
+const char *nvram_new_partition_name = "/dev/pro_info";
+extern const char *nvram_new_partition_name;
+extern const TABLE_FOR_SPECIAL_LID g_new_nvram_lid[];
+extern const unsigned int g_new_nvram_lid_count;
+#else
+extern bool nvram_new_partition_support() {
+	return false;
+}
+const TABLE_FOR_SPECIAL_LID g_new_nvram_lid[] = {0 , 0, 0};
+const unsigned int g_new_nvram_lid_count = 0;
+const char *nvram_new_partition_name = NULL;
+extern const char *nvram_new_partition_name;
+extern const TABLE_FOR_SPECIAL_LID g_new_nvram_lid[];
+extern const unsigned int g_new_nvram_lid_count;
+#endif
+//end new nvram partition feature
+
+#if 0
+int nvram_bt_default_value(unsigned char *ucNvRamData) {
+	unsigned int chipId = 0;
+	int  chipId_ready_retry = 0;
+	char chipId_val[PROPERTY_VALUE_MAX];
+	int  rec_size = CFG_FILE_BT_ADDR_REC_SIZE;
+
+	do {
+		if (property_get("persist.vendor.connsys.chipid", chipId_val, NULL) &&
+		        0 != strcmp(chipId_val, "-1")) {
+			chipId = (unsigned int)strtoul(chipId_val, NULL, 16);
+			break;
+		} else {
+			chipId_ready_retry ++;
+			usleep(500000);
+		}
+	} while (chipId_ready_retry < 10);
+
+	NVRAM_LOG("Get combo chip id retry %d\n", chipId_ready_retry);
+	if (chipId_ready_retry >= 10) {
+		NVRAM_LOG("Get combo chip id fails!\n");
+		return false;
+	} else {
+		NVRAM_LOG("Combo chip id %04x\n", chipId);
+
+		switch (chipId) {
+		case 0x6628:
+			/* NVRAM is MT6628 default */
+			memcpy(ucNvRamData, &stBtDefault_6628, rec_size);
+			break;
+		case 0x6630:
+			/* NVRAM is MT6630 default */
+			memcpy(ucNvRamData, &stBtDefault_6630, rec_size);
+			break;
+		case 0x6632:
+			/* NVRAM is MT6632 default */
+			//memcpy(ucNvRamData, &stBtDefault_6632, rec_size);
+			break;
+		case 0x8163:
+		case 0x8127:
+		case 0x8167:
+		case 0x6582:
+		case 0x6592:
+		case 0x6752:
+		case 0x0321:
+		case 0x0335:
+		case 0x0337:
+		case 0x6580:
+		case 0x6570:
+		case 0x6755:
+		case 0x6797:
+		case 0x6757:
+		case 0x6759:
+		case 0x6763:
+		case 0x6758:
+		case 0x6739:
+		case 0x6771:
+		case 0x6775:
+			/* NVRAM is A-D die chip default */
+			//memcpy(ucNvRamData, &stBtDefault_consys, rec_size);
+			break;
+		case 0x6765:
+		case 0x3967:
+		case 0x6761:
+			/* NVRAM is CONNAC chip default */
+			//memcpy(ucNvRamData, &stBtDefault_connac, rec_size);
+			break;
+		default:
+			NVRAM_LOG("Unknown combo chip id\n");
+			return false;
+		}
+
+		return true;
+	}
+}
+#endif
+
+int BT_ConvertFunc(int CurrentVerID, int NewVerID, char *pSrcMem,
+                   char *pDstMem) {
+	int rec_size = CFG_FILE_BT_ADDR_REC_SIZE;
+	int rec_num = CFG_FILE_BT_ADDR_REC_TOTAL;
+
+	if (NULL == pSrcMem || NULL == pDstMem) {
+		return false;
+	} else {
+		NVRAM_LOG("BT_ConvertFunc: CurrentVerID = %d, NewVerID = %d\n", CurrentVerID, NewVerID);
+
+		if (0 == CurrentVerID && 1 == NewVerID) {
+			memcpy(pDstMem, pSrcMem, 30); /* Keep the customization data */
+			memset(pDstMem + 30, 0, rec_size * rec_num - 30);
+			return true;
+		} else if (1 == CurrentVerID && 2 == NewVerID) {
+			memcpy(pDstMem, pSrcMem, 64); /* Keep the customization data */
+			memset(pDstMem + 64, 0, rec_size * rec_num - 64);
+			return true;
+		}
+		return false;
+	}
+}
+
+#ifdef MTK_EMMC_SUPPORT
+extern bool nvram_emmc_support() {
+	return true;
+}
+#else
+extern bool nvram_emmc_support() {
+	return false;
+}
+#endif
+
+#ifdef MTK_UFS_SUPPORT
+extern bool nvram_ufs_support() {
+	return true;
+}
+#else
+extern bool nvram_ufs_support() {
+	return false;
+}
+#endif
+
+extern bool nvram_md1_support() {
+	#if 0
+
+	char prop_value[PROPERTY_VALUE_MAX];
+	unsigned int md1_support = 0;
+	bool is_support_md1 = false;
+	if (property_get("ro.boot.opt_md1_support", prop_value, NULL)) {
+		md1_support = (unsigned int)strtoul(prop_value, NULL, 0);
+		if (md1_support)
+			is_support_md1 = true;
+	} else {
+		NVRAM_LOG("ro.boot.opt_md1_support property get fail : %s\n", prop_value);
+	}
+	return is_support_md1;
+	#endif
+	return false;
+}
+
+extern bool nvram_md5_support() {
+	#if 0
+	char prop_value[PROPERTY_VALUE_MAX];
+	unsigned int md5_support = 0;
+	bool is_support_md5 = false;
+	if (property_get("ro.boot.opt_md5_support", prop_value, NULL)) {
+		md5_support = (unsigned int)strtoul(prop_value, NULL, 0);
+		if (md5_support)
+			is_support_md5 = true;
+	} else {
+		//NVRAM_LOG("ro.boot.opt_md5_support property get fail : %s\n", prop_value);
+	}
+	return is_support_md5;
+	#endif
+	return false;
+}
+
+
+extern bool nvram_evdo_support() {
+	#if 0
+	char c2k_state_value[PROPERTY_VALUE_MAX];
+	unsigned int c2k_support = 0;
+	bool is_support_c2k = false;
+	if (property_get("ro.boot.opt_md3_support", c2k_state_value, NULL)) {
+		c2k_support = (unsigned int)strtoul(c2k_state_value, NULL, 0);
+		if (c2k_support)
+			is_support_c2k = true;
+		NVRAM_LOG("c2k_support %d\n", c2k_support);
+	} else {
+		NVRAM_LOG("ro.boot.opt_md3_support property get fail : %s\n", c2k_state_value);
+	}
+	return is_support_c2k;
+	#endif
+	return false;
+}
+extern bool nvram_ecci_c2k_support() {
+	#if 0
+	char prop_value[PROPERTY_VALUE_MAX];
+	unsigned int ecci_c2k_support = 0;
+	bool is_support_ecci_c2k = false;
+	if (property_get("ro.boot.opt_eccci_c2k", prop_value, NULL)) {
+		ecci_c2k_support = (unsigned int)strtoul(prop_value, NULL, 0);
+		if (ecci_c2k_support)
+			is_support_ecci_c2k = true;
+	} else {
+		NVRAM_LOG("ro.boot.opt_eccci_c2k property get fail : %s\n", prop_value);
+	}
+	if (is_support_ecci_c2k == false) {
+		property_get("ro.hardware", prop_value, "");
+		if (!strstr(prop_value, "mt2601") && !strstr(prop_value, "mt6572") &&
+		        !strstr(prop_value, "mt6580") && !strstr(prop_value, "mt6582") &&
+		        !strstr(prop_value, "mt6592") && !strstr(prop_value, "mt6735") &&
+		        !strstr(prop_value, "mt6752") && !strstr(prop_value, "mt6755") &&
+		        !strstr(prop_value, "mt6795") && !strstr(prop_value, "mt6797") &&
+		        !strstr(prop_value, "mt7623") && !strstr(prop_value, "mt8127") &&
+		        !strstr(prop_value, "mt8163") && !strstr(prop_value, "mt8173")) {
+			is_support_ecci_c2k = true;
+		}
+	}
+	NVRAM_LOG("is_support_ecci_c2k %d\n", is_support_ecci_c2k);
+	return is_support_ecci_c2k;
+	#endif
+	return false;
+}
+
+
+
+#ifdef NVRAM_MULTI_STORAGE_SUPPORT
+extern int nvram_multi_storage_support(NVRAM_PLATFORM_T* pPlatform ) {
+	pPlatform->log_block = g_CpPlatform_Block_Custom.log_block;
+	pPlatform->resv_block = g_CpPlatform_Block_Custom.resv_block;
+	pPlatform->DM_block = g_CpPlatform_Block_Custom.DM_block;
+	pPlatform->layout_version = g_CpPlatform_Block_Custom.layout_version;
+	pPlatform->header_offset = g_CpPlatform_Block_Custom.header_offset;
+	return true;
+}
+#else
+extern int nvram_multi_storage_support(NVRAM_PLATFORM_T* pPlatform ) {
+	pPlatform->log_block = 0;
+	pPlatform->resv_block = 0;
+	pPlatform->DM_block = 0;
+	pPlatform->layout_version = 0;
+	pPlatform->header_offset = 0;
+	return false;
+}
+#endif
+
+
+int SBP_ConvertFunc(int CurrentVerID, int NewVerID, char *pSrcMem,
+                    char *pDstMem) {
+	int rec_size = CFG_FILE_MD_SBP_CONFIG_SIZE;
+	int rec_num = CFG_FILE_MD_SBP_CONFIG_TOTAL;
+	int src_size = 2 * sizeof(unsigned int);
+	unsigned int *pStart = (unsigned int *)pSrcMem;
+	int i, len = 0;
+
+	if (NULL == pSrcMem || NULL == pDstMem) {
+		return false;
+	} else {
+		if (0 == CurrentVerID && 1 == NewVerID) {
+			NVRAM_LOG("SBP_ConvertFunc curid:%d, newid:%d, src[0]:%d, src[1]:%d\n"
+			          , CurrentVerID, NewVerID, *pStart, *(pStart + 1));
+			memcpy(pDstMem, pSrcMem, src_size); // Keep the customization data
+			// default value: {0, 1}
+			pStart = (unsigned int *)(pDstMem + src_size);
+			len = (rec_size * rec_num - src_size) / sizeof(unsigned int);
+			for (i = 0; i < len; i += 2) {
+				*pStart = 0;
+				*(pStart + 1) = 1;
+				NVRAM_LOG("SBP_ConvertFunc data[%d]:%d, data[%d]:%d\n", i + 2, *pStart, i + 3,
+				          *(pStart + 1));
+				pStart += 2;
+			}
+			return true;
+		}
+		return false;
+	}
+}
+
+int WIFI_ConvertFunc(int CurrentVerID, int NewVerID, char *pSrcMem, char *pDstMem) {
+	unsigned int *pStart = (unsigned int *)pSrcMem;
+
+	if (!pSrcMem && !pDstMem) {
+		NVRAM_LOG("WIFI_ConvertFunc curid:%d, newid:%d, src[%p] or dst[%p]\n",
+			CurrentVerID, NewVerID, pSrcMem, pDstMem);
+		return 0;
+	}
+
+	NVRAM_LOG("WIFI_ConvertFunc curid:%d, newid:%d, src[0]:%d, src[1]:%d\n",
+		CurrentVerID, NewVerID, *pStart, *(pStart + 1));
+
+	/* Keep the customization data.
+	 * Copy version 0 nvram data to the same location of the version 1.
+	 * Modify Wi-Fi nvram version from 0x0106 to 0x0107,
+	 * Then Set new 0x200 bytes value to 0*/
+	if (CurrentVerID == 0 && NewVerID == 1) {
+		memcpy(pDstMem, pSrcMem, 0x200);
+		memset(pDstMem, 0x07, sizeof(char));
+		memset(pDstMem + 0x200, 0, 0x200);
+		return 1;
+	}
+	return 0;
+}
+
+
+/*
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+*/
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libnvram/CFG_file_public.h b/src/telephonyware/3.0/mtk_nvram/src/libnvram/CFG_file_public.h
new file mode 100644
index 0000000..8c37ac1
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libnvram/CFG_file_public.h
@@ -0,0 +1,136 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ */
+/* MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   cfg_file_lid.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ *    header file of main function
+ *
+ * Author:
+ * -------
+ *   Nick Huang (mtk02183)
+ *
+ *******************************************************************************/
+
+#ifndef CFG_FILE_PUBLIC_H
+#define CFG_FILE_PUBLIC_H
+
+#include <sys/types.h>
+
+// the size of file name
+#define FILENAMELENGTH 70
+//the size of versino information
+#define FILEVERLENGTH 4
+
+#define DataReset   1
+#define DataConvert 0
+
+typedef int(*pfConvertFunc)(int, int, char*, char*);
+typedef enum {
+	APRDEB,		//file will reset to default value every boot
+	APRDCL		//file will reset to default value only when clean  boot
+
+} FILE_RESTORE_TYPE;
+
+typedef enum {
+	MULTIPLE_DEFUALT_REC,	//default value is defined global varible * record number
+	SIGNLE_DEFUALT_REC,		//default value is defined global variable.
+	DEFAULT_ZERO,			//default value is 0
+	DEFAULT_FF,				//default value is 0xff
+
+} FILE_DEFAULT_TYPE;
+
+typedef struct {
+	char				cFileName[FILENAMELENGTH];	//file name
+	char				cFileVer[FILEVERLENGTH];	//nvram file version information
+	int 				i4RecSize;		//record size
+	int					i4RecNum;			//record total
+	FILE_DEFAULT_TYPE 	stDefualType;	//the type of default value
+	char 				*pDefualtVaule;	//the defualt value.
+	int                       bDataProcessingType;
+	pfConvertFunc             NVM_DataConvertFunc;
+} TCFG_FILE;
+
+typedef struct {
+	int lid;
+	off_t start_address;
+	off_t size;
+} TABLE_FOR_SPECIAL_LID;
+typedef int(*pfCallbackForDaemon)(void);
+#endif /* CFG_FILE_LID_H */
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libnvram/MTK_LICENSE b/src/telephonyware/3.0/mtk_nvram/src/libnvram/MTK_LICENSE
new file mode 100644
index 0000000..901b162
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libnvram/MTK_LICENSE
@@ -0,0 +1,35 @@
+Copyright Statement:
+
+This software/firmware and related documentation ("MediaTek Software") are
+protected under relevant copyright laws. The information contained herein
+is confidential and proprietary to MediaTek Inc. and/or its licensors.
+Without the prior written permission of MediaTek inc. and/or its licensors,
+any reproduction, modification, use or disclosure of MediaTek Software,
+and information contained herein, in whole or in part, shall be strictly prohibited.
+
+MediaTek Inc. (C) 2018. All rights reserved.
+
+BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+
+The following software/firmware and/or related documentation ("MediaTek Software")
+have been modified by MediaTek Inc. All revisions are subject to any receiver's
+applicable license agreements with MediaTek Inc.
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libnvram/README b/src/telephonyware/3.0/mtk_nvram/src/libnvram/README
new file mode 100644
index 0000000..86068ae
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libnvram/README
@@ -0,0 +1,34 @@
+This directory contains NvRAM libnvram interface, which defines the interface of
+libnvram and is used to build a libnvram shared library.
+
+
+WHAT IT DOES?
+=============
+It provide interface to access NvRAM data which need by modules like WIFI/BT etc.
+
+HOW IT WAS BUILT?
+==================
+
+It needs the following libs from AOSP:
+1.  libc.so
+2.  libcutils.so
+
+and the following libs from MediaTek:
+1.  libcustom_nvram.so
+2.  libnvram_sec.so
+3.  libnvram_platform.so
+
+All source/dependency modules of this module are already put in
+'vendor/mediatek/libs' folder.
+
+
+HOW TO USE IT?
+==============
+
+Files in this directory is used to
+generate a shared library 'libnvram.so'.
+
+The shared library 'libnvram.so' is called by
+NvRAM user which like WIFI/BT modules to access coresponed factory data.    
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libnvram/libnvram.c b/src/telephonyware/3.0/mtk_nvram/src/libnvram/libnvram.c
new file mode 100644
index 0000000..736f98c
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libnvram/libnvram.c
@@ -0,0 +1,6200 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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_lib.c
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *   Stream interface implementation for NVM Driver.
+ *
+ *
+ * Author:
+ * -------
+ *   Nick Huang (mtk02183)
+ *
+ ****************************************************************************/
+
+#include <stdbool.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+//#include "CFG_file_lid.h"
+#include <dirent.h>
+#include<sys/mount.h>
+//#include <fs_mgr.h>
+//#include <fstab.h>
+//#include <cutils/properties.h>
+#include "libnvram_log.h"
+#include "libnvram.h"
+#include "libfile_op.h"
+//#include "../../../../kernel/include/mtd/mtd-abi.h"
+#include <mtd/mtd-abi.h>
+
+// #include "android_filesystem_config.h"
+#include <pthread.h>
+//add for log
+#include <time.h>
+//add for log
+#define PREFIX_IMEI  "MP0B_"   
+#define PREFIX_BARCODE  "MP09_"  
+#define MAXLINE   1024
+#define MaxFileNum   936
+#define INVALID_HANDLE_VALUE    -1
+
+#define AID_SYSTEM 0
+#define AID_RADIO 0
+#define AID_ROOT 0
+#define AID_BLUETOOTH 0
+#define AID_AUDIO 0
+#define	SHRT_MAX	0x7fff
+#define	INT_MAX		0x7fffffff
+
+//#include "libnvram_sec.h"
+#define MTK_BASIC_PACKAGE
+
+extern const char* __progname;
+
+typedef struct {
+	unsigned int ulCheckSum;
+	unsigned int iCommonFileNum;
+	unsigned int iCustomFileNum;
+} BackupFileInfo;
+
+
+extern int iCustomBeginLID;
+extern int iFileVerInfoLID;
+static const char *g_pcNVM            = "/mnt/vendor/nvdata";
+static const char *g_pcNVM_BT         = "/mnt/vendor/nvdata/APCFG/APRDEB/BT_Addr";
+static const char *g_pcNVM_AllFile    = "/mnt/vendor/nvdata/AllFile";
+static const char *g_pcNVM_AllMap     = "/mnt/vendor/nvdata/AllMap";
+static const char *g_pcNVM_Flag       =
+    "/mnt/vendor/nvdata/RestoreFlag";//The File Will be Created after restore
+
+#ifdef MTK_NVRAM_AUTO_BACKUP
+static const char *g_pcNVM_BackFlag   =
+    "/mnt/vendor/nvdata/BackupFlag";//The file will be updated after modifying important data
+#endif
+
+#if 0
+static const char *g_pcNVM_APCalFile  = "/mnt/vendor/nvdata/APCFG/APRDCL";
+static const char *g_pcNVM_APRdebFile = "/mnt/vendor/nvdata/APCFG/APRDEB";
+#endif
+static const char *g_pcNVM_MD         = "/mnt/vendor/nvdata/md/NVRAM";
+static const char *g_pcNVM_MDCalFile  = "/mnt/vendor/nvdata/md/NVRAM/CALIBRAT";
+static const char *g_pcNVM_MDRdebFile = "/mnt/vendor/nvdata/md/NVRAM/NVD_IMEI";
+#if 0
+static const char *g_pcNVM_MDImptFile = "/mnt/vendor/nvdata/md/NVRAM/IMPORTNT";
+static const char *g_pcNVM_MDDataFile = "/mnt/vendor/nvdata/md/NVRAM/NVD_DATA";
+static const char *g_pcNVM_MDCoreFile = "/mnt/vendor/nvdata/md/NVRAM/NVD_CORE";
+//Add for second modem for MT658*
+static const char *g_pcNVM_MD2CalFile  = "/mnt/vendor/nvdata/md2/NVRAM/CALIBRAT";
+static const char *g_pcNVM_MD2RdebFile = "/mnt/vendor/nvdata/md2/NVRAM/NVD_IMEI";
+static const char *g_pcNVM_MD2ImptFile = "/mnt/vendor/nvdata/md2/NVRAM/IMPORTNT";
+//End of Comment
+
+/*Add for C2K modem*/
+static const char *g_pcNVM_MD3CalFile  = "/mnt/vendor/nvdata/md3/NVRAM/CALIBRAT";
+static const char *g_pcNVM_MD3RdebFile = "/mnt/vendor/nvdata/md3/NVRAM/NVD_IMEI";
+static const char *g_pcNVM_MD3ImptFile = "/mnt/vendor/nvdata/md3/NVRAM/IMPORTNT";
+
+
+//LTE support
+static const char *g_pcNVM_MD5CalFile  = "/mnt/vendor/nvdata/md5/NVRAM/CALIBRAT";
+static const char *g_pcNVM_MD5RdebFile = "/mnt/vendor/nvdata/md5/NVRAM/NVD_IMEI";
+static const char *g_pcNVM_MD5ImptFile = "/mnt/vendor/nvdata/md5/NVRAM/IMPORTNT";
+static const char *g_pcNVM_Via = "/mnt/vendor/nvdata/md_via";
+
+
+static const char *g_pcBKP_APCalFile  = "/backup/APCFG/APRDCL";
+static const char *g_pcBKP_APRdebFile = "/backup/APCFG/APRDEB";
+static const char *g_pcBKP_MDCalFile  = "/backup/md/NVRAM/CALIBRAT";
+static const char *g_pcBKP_MDRdebFile = "/backup/md/NVRAM/NVD_IMEI";
+static const char *g_pcBKP_MDImptFile = "/backup/md/NVRAM/IMPORTNT";
+static const char *g_pcBKP_MDDataFile = "/backup/md/NVRAM/NVD_DATA";
+static const char *g_pcBKP_MDCoreFile = "/backup/md/NVRAM/NVD_CORE";
+static const char *g_pcNVM_ModomBackNum =
+    "/mnt/vendor/nvdata/md/NVRAM/IMPORTNT/MP0D_000";////The file will be updated after modifying MD important data
+#endif
+
+// partition device path
+#ifdef MTK_NVRAM_IN_A_FILE
+char g_NVRAM_BACKUP_DEVICE[128] = "/mnt/vendor/nvram/raw";
+char g_LOG_DEVICE[128] = "/mnt/vendor/nvram/raw";
+char g_MISC_DEVICE[128] = "/mnt/sncfg/para";
+char g_NVRAM_PROINFO_DEVICE[128] = "/mnt/sncfg/proinfo";
+#else
+char g_NVRAM_BACKUP_DEVICE[128] = "/dev/block/nvram";
+char g_LOG_DEVICE[128] = "/dev/block/nvram";
+char g_MISC_DEVICE[128] = "/dev/block/para";
+char g_NVRAM_PROINFO_DEVICE[128] = "/dev/block/proinfo";
+#endif
+
+//char g_NVRAM_NVDATA_DEVICE[128] = "/dev/block/platform/mtk-msdc.0/by-name/nvdata";
+
+unsigned int gFileStartAddr = 0;
+pthread_mutex_t gFileStartAddrlock = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutex_t generateFileVerlock = PTHREAD_MUTEX_INITIALIZER;
+#define BitmapFlag 0xAABBCCDD
+#define MAX_FILENUM 32767
+typedef struct {
+	char	cFileName[128];
+	unsigned int iLID;
+} FileName;
+
+extern const TCFG_FILE g_akCFG_File[];
+extern const int g_i4CFG_File_Count;
+extern const TCFG_FILE g_akCFG_File_Custom[];
+extern const int g_i4CFG_File_Custom_Count;
+extern int iCustomBeginLID;
+extern int iFileVerInfoLID;
+extern int iNvRamFileMaxLID;
+extern pfConvertFunc aNvRamConvertFuncTable[];
+volatile int g_i4MaxNvRamLid = 0;
+extern FileName aBackupToBinRegion[];
+extern const unsigned int g_Backup_File_Count;
+//#define forDMBlockNum (2)
+const char *strVerInfo = "NVRAM_VER_INFO";
+pthread_mutex_t dirlock = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutex_t backuplock = PTHREAD_MUTEX_INITIALIZER;
+int  NvRamBlockNum = 0;
+
+#define FSTAB_PREFIX "/mnt/vendor/nvdata/fstab."
+static struct fstab* fstab = NULL;
+
+int nvram_platform_log_block = 2;
+int nvram_platform_resv_block = 2;
+int nvram_platform_DM_block = 1;
+int nvram_platform_layout_version = 0;
+int nvram_platform_header_offset = 0;
+int nvram_init_flag = 0;
+int nvram_gpt_flag = 1;
+int BinRegionBlockTotalNum = 0;
+
+extern const char *nvram_new_partition_name;
+extern const TABLE_FOR_SPECIAL_LID g_new_nvram_lid[];
+extern const unsigned int g_new_nvram_lid_count;
+extern int nvram_misc_log_block_offset;
+
+#if 0
+static struct fstab* read_fstab(void) {
+	char fstab_filename[PROPERTY_VALUE_MAX + sizeof(FSTAB_PREFIX)];
+	char propbuf[PROPERTY_VALUE_MAX];
+
+	property_get("ro.hardware", propbuf, "");
+	snprintf(fstab_filename, sizeof(fstab_filename), FSTAB_PREFIX"%s", propbuf);
+
+	fstab = fs_mgr_read_fstab(fstab_filename);
+	if (!fstab) {
+		NVRAM_LOG("failed to read %s \n", fstab_filename);
+		return NULL;
+	}
+
+	return fstab;
+}
+
+static char *get_device_path(const char *mount_point) {
+	struct fstab_rec *rec = NULL;
+	char *source = NULL;
+
+	rec = fs_mgr_get_entry_for_mount_point(fstab, mount_point);
+	if (!rec) {
+		NVRAM_LOG("failed to get entry for %s \n", mount_point);
+		return NULL;
+	}
+
+	source = rec->blk_device;
+	return source;
+}
+
+static void free_fstab(void) {
+	fs_mgr_free_fstab(fstab);
+}
+
+static int get_partition_path(void) {
+	char *source_path = NULL;
+	if (nvram_emmc_support() || nvram_ufs_support()) {
+		if (!read_fstab()) {
+			NVRAM_LOG("failed to read fstab \n");
+			return -1;
+		}
+
+		source_path = get_device_path(NVRAM_MNT_POINT);
+		if (!source_path) {
+			NVRAM_LOG("failed to get nvram path %s \n", NVRAM_MNT_POINT);
+		} else {
+			memset(g_LOG_DEVICE, 0, sizeof(g_LOG_DEVICE));
+			memset(g_NVRAM_BACKUP_DEVICE, 0, sizeof(g_NVRAM_BACKUP_DEVICE));
+		    //strcpy(g_LOG_DEVICE,source_path);
+		    //strcpy(g_NVRAM_BACKUP_DEVICE,source_path);
+		    snprintf(g_LOG_DEVICE, sizeof(g_LOG_DEVICE),"%s", source_path);
+			snprintf(g_NVRAM_BACKUP_DEVICE, sizeof(g_NVRAM_BACKUP_DEVICE),"%s", source_path);
+			NVRAM_LOG("length of g_NVRAM_BACKUP_DEVICE=%d\n", strlen(source_path));
+		}
+
+		source_path = get_device_path(MISC_MNT_POINT);
+		if (!source_path) {
+			NVRAM_LOG("failed to get misc path %s \n", MISC_MNT_POINT);
+		} else {
+			memset(g_MISC_DEVICE, 0, sizeof g_MISC_DEVICE);
+		    //strcpy(g_MISC_DEVICE,source_path);
+		     snprintf(g_MISC_DEVICE, sizeof(g_MISC_DEVICE),"%s", source_path);
+		}
+
+		source_path = get_device_path(NVDATA_MNT_POINT);
+		if (!source_path) {
+			NVRAM_LOG("failed to get nvdata path %s \n", NVDATA_MNT_POINT);
+		} else {
+			memset(g_NVRAM_NVDATA_DEVICE, 0, sizeof g_NVRAM_NVDATA_DEVICE);
+		    //strcpy(g_NVRAM_NVDATA_DEVICE,source_path);
+		    snprintf(g_NVRAM_NVDATA_DEVICE, sizeof(g_NVRAM_NVDATA_DEVICE),"%s", source_path);
+		}
+
+		source_path = get_device_path(PROINFO_MNT_POINT);
+		if (!source_path) {
+			NVRAM_LOG("failed to get proinfo path %s \n", PROINFO_MNT_POINT);
+		} else {
+			memset(g_NVRAM_PROINFO_DEVICE, 0, sizeof g_NVRAM_PROINFO_DEVICE);
+		    //strcpy(g_NVRAM_PROINFO_DEVICE,source_path);
+		    snprintf(g_NVRAM_PROINFO_DEVICE, sizeof(g_NVRAM_PROINFO_DEVICE),"%s", source_path);
+		}
+
+		free_fstab();
+	} else {
+		memset(g_LOG_DEVICE, 0, sizeof(g_LOG_DEVICE));
+		memset(g_NVRAM_BACKUP_DEVICE, 0, sizeof(g_NVRAM_BACKUP_DEVICE));
+		sprintf(g_LOG_DEVICE, "/dev/nvram");
+		sprintf(g_NVRAM_BACKUP_DEVICE, "/dev/nvram");
+		memset(g_MISC_DEVICE, 0, sizeof g_MISC_DEVICE);
+		sprintf(g_MISC_DEVICE, "/dev/misc");
+		memset(g_NVRAM_PROINFO_DEVICE, 0, sizeof g_NVRAM_PROINFO_DEVICE);
+		sprintf(g_NVRAM_PROINFO_DEVICE, "/dev/pro_info");
+	}
+
+	return 0;
+}
+#endif
+
+int open_file_with_dirs(const char *fn, int flag, mode_t mode) {
+	char tmp[PATH_MAX];
+	int i = 0;
+	int filedesc = 0;
+	struct stat info;
+	int val = 0;
+	umask(000);
+	pthread_mutex_lock(&dirlock);
+	while (*fn) {
+		tmp[i] = *fn;
+
+		if (*fn == '/' && i) {
+			tmp[i] = '\0';
+			if (access(tmp, F_OK) != 0) {
+				if (mkdir(tmp, 0771) == -1) {
+					NVRAM_LOG("mkdir error! %s\n", (char*)strerror(errno));
+					if (errno != EEXIST) {
+						pthread_mutex_unlock(&dirlock);
+						return -1;
+					}
+				}
+#if 1
+				val = stat(tmp, &info);
+				if (val == 0) {
+					//maybe meta tool operate these files
+					if (strstr(tmp, "/media")) {
+						if (-1 == chown(tmp, -1, AID_AUDIO))
+							NVRAM_LOG("change dir group owner failed(media):%s\n", (char*)strerror(errno));
+					} else if (strstr(tmp, "BT_Addr")) {
+						if (-1 == chown(tmp, -1, AID_BLUETOOTH))
+							NVRAM_LOG("change dir group owner failed(bt):%s\n", (char*)strerror(errno));
+					} else {
+						if (-1 == chown(tmp, -1, AID_SYSTEM))
+							NVRAM_LOG("change dir group owner failed:%s\n", (char*)strerror(errno));
+					}
+				}
+#endif
+			}
+			tmp[i] = '/';
+		}
+		i++;
+		fn++;
+	}
+	tmp[i] = '\0';
+	filedesc = open(tmp, flag, mode);
+	if (-1 != filedesc) {
+		val = stat(tmp, &info);
+#if 1
+		if (val == 0) {
+			if (strstr(tmp, "/media")) {
+				if (-1 == chown(tmp, -1, AID_AUDIO))
+					NVRAM_LOG("change file group owner failed(media):%s\n", (char*)strerror(errno));
+			} else if (strstr(tmp, "BT_Addr")) {
+				if (-1 == chown(tmp, -1, AID_BLUETOOTH))
+					NVRAM_LOG("change file group owner failed(bt):%s\n", (char*)strerror(errno));
+			} else {
+				if (-1 == chown(tmp, -1, AID_SYSTEM))
+					NVRAM_LOG("change file group owner failed:%s\n", (char*)strerror(errno));
+			}
+			if (!S_ISDIR(info.st_mode)) {
+				if (-1 == chmod(tmp, mode))
+					NVRAM_LOG("chmod file failed: %s\n", (char*)strerror(errno));
+			}
+		}
+#endif
+	}
+	pthread_mutex_unlock(&dirlock);
+	return filedesc;
+}
+
+bool NVM_GetDeviceInfo(const char *path, struct mtd_info_user *device_info) {
+	int fd;
+	int iRet;
+
+	fd = open(path, O_RDWR);
+	if (fd < 0) {
+		NVRAM_LOG("NVM_GetDeviceInfo : open  %s fail!!! %s\n", path,
+		          (char*)strerror(errno));
+		return false;
+	}
+	if (nvram_gpt_flag == 1
+	#ifdef MTK_NVRAM_IN_A_FILE
+	    || true
+	#endif
+		) {
+		device_info->type = MTD_NANDFLASH;
+		device_info->flags = MTD_WRITEABLE;
+		device_info->size = lseek(fd, 0, SEEK_END);
+		device_info->erasesize = 128 * 1024;
+		device_info->writesize = 512;
+		device_info->oobsize = 0;
+	} else {
+		iRet = ioctl(fd, MEMGETINFO, device_info);
+		if (iRet < 0) {
+			NVRAM_LOG("NVM_GetDeviceInfo : dumchar ioctl fail %s\n",
+			          (char*)strerror(errno));
+			close(fd);
+			return false;
+		}
+	}
+	close(fd);
+
+	return true;
+}
+
+bool NVM_EraseDeviceBlock(const char *path, struct erase_info_user erase_info) {
+	int fd;
+	int iRet;
+
+	if (strstr(path, "mmcblk")) {
+		NVRAM_LOG("NVM_EraseDeviceBlock: mmcblk devie. Skip\n");
+		return true;
+	}
+
+	#ifdef BOOTING_DEVICE_NOT_NAND
+	NVRAM_LOG("NVM_EraseDeviceBlock: BOOTING_DEVICE_NOT_NAND is defined. Skip\n");
+	return true;
+	#endif
+
+	fd = open(path, O_RDWR);
+	if (fd < 0) {
+		NVRAM_LOG("NVM_EraseDeviceBlock: dumchar open fail!!! %s\n",
+		          (char*)strerror(errno));
+		return false;
+	} else {
+	    #ifdef MTK_NVRAM_IN_A_FILE
+		NVRAM_LOG("NVM_EraseDeviceBlock: MTK_NVRAM_IN_A_FILE is defined. Skip\n");
+		#else
+		iRet = ioctl(fd, MEMERASE, &erase_info);
+		if (iRet < 0) {
+			NVRAM_LOG("NVM_EraseDeviceBlock: dumchar erase fail! %s\n",
+			          (char*)strerror(errno));
+			close(fd);
+			return false;
+		}
+		#endif
+	}
+	close(fd);
+
+	return true;
+}
+
+
+//iModifiedFileNum:the num of modified file
+//iSrc:0,from modem;1:from AP
+bool NVM_CheckBackFlag(int iFileDesc) {
+	unsigned int index = 0;
+	char cChecksum = 0;
+	char cBuf = 0;
+	bool flag = true;
+	int iResult = 0;
+	char savedchecksum = 0;
+	struct stat buf;
+	memset(&buf, 0, sizeof(struct stat));
+	if (-1 == iFileDesc) {
+		NVRAM_LOG("NVM_CheckBackFlag:file desc is wrong(ignore)\n");
+		return false;
+	}
+	if (-1 == fstat(iFileDesc, &buf)) {
+		NVRAM_LOG("NVM_CheckBackFlag:Err fstat(checksum)(ignore)\n");
+		return false;
+	}
+	if (buf.st_size != sizeof(unsigned int) + sizeof(char)) {
+		NVRAM_LOG("NVM_CheckBackFlag:file size is wrong\n");
+		return false;
+	}
+	for (index = 0; index < sizeof(unsigned int); ++index) {
+		if (sizeof(char) == read(iFileDesc, &cBuf, sizeof(char))) {
+			if (flag) {
+				cChecksum ^= cBuf;
+				flag = false;
+			} else {
+				cChecksum += cBuf;
+				flag = true;
+			}
+		} else {
+			NVRAM_LOG("NVM_CheckBackFlag:Err read Fail(checksum)(ignore):%d\n", iResult);
+			return false;
+		}
+	}
+	iResult = read(iFileDesc, &savedchecksum, sizeof(char));
+	if (iResult != sizeof(char)) {
+		NVRAM_LOG("[NVRAM]:can not read BackupFlag check sum:%d\n", iResult);
+		return false;
+	}
+	if (cChecksum == savedchecksum)
+		return true;
+	else
+		return false;
+}
+bool NVM_CheckMDBackFlag(int iFileDesc ) {
+	unsigned int index = 0;
+	unsigned short cChecksum = 0;
+	unsigned char *byte_checksum = (unsigned char *)&cChecksum;
+	char cBuf = 0;
+	int iResult = 0;
+	unsigned short savedchecksum = 0;
+	struct stat buf;
+	memset(&buf, 0, sizeof(struct stat));
+
+	if (-1 == iFileDesc) {
+		NVRAM_LOG("NVM_CheckMDBackFlag:file desc is wrong(ignore)\n");
+		return false;
+	}
+	if (-1 == fstat(iFileDesc, &buf)) {
+		NVRAM_LOG("NVM_CheckMDBackFlag:Err fstat(checksum)(ignore)\n");
+		return false;
+	}
+	if (buf.st_size != 4 * sizeof(char)) {
+		NVRAM_LOG("NVM_CheckMDBackFlag:file size is wrong\n");
+		return false;
+	}
+	for (index = 0; index < 2 * sizeof(char); ++index) {
+		if (sizeof(char) == read(iFileDesc, &cBuf, sizeof(char))) {
+			if (index & 0x1)
+				*(byte_checksum + 1) += cBuf;
+			else
+				*(byte_checksum) += cBuf;
+		} else {
+			NVRAM_LOG("NVM_CheckMDBackFlag:Err read Fail(checksum)(ignore):%d\n", iResult);
+			return false;
+		}
+	}
+	iResult = read(iFileDesc, &savedchecksum, sizeof(unsigned short));
+	if (iResult != sizeof(unsigned short)) {
+		NVBAK_LOG("[NVRAM]:can not read MDBackupFile check sum:%d\n", iResult);
+		return false;
+	}
+	if (cChecksum == savedchecksum)
+		return true;
+	else if (savedchecksum == 0xCDEF && cChecksum == 0x0)
+		return true;
+	else
+		return false;
+}
+
+bool NVM_ComputeBackflagCheckSum(int iFileDesc) {
+	char buf = 0;
+	char cChecksum = 0;
+	unsigned int index = 0;
+	bool flag = true;
+	int iResult = 0;
+	if (iFileDesc == -1) {
+		NVRAM_LOG("NVM_ComputeBackflagCheckSum:File desc is wrong\n");
+		return false;
+	}
+	if (-1 == lseek(iFileDesc, 0, SEEK_SET)) {
+		NVRAM_LOG("NVM_ComputeBackflagCheckSum:(check sum)lseek error\n");
+		return false;
+	}
+	for (index = 0; index < sizeof(unsigned int); ++index) {
+		if (sizeof(char) == read(iFileDesc, &buf, sizeof(char))) {
+			if (flag) {
+				cChecksum ^= buf;
+				flag = false;
+			} else {
+				cChecksum += buf;
+				flag = true;
+			}
+		} else {
+			NVRAM_LOG("NVM_ComputeBackflagCheckSum:Err read Fail(checksum)(ignore):%d\n",
+			          iResult);
+			return false;
+		}
+	}
+	iResult = write(iFileDesc, &cChecksum, sizeof(char));
+	if (iResult != sizeof(char)) {
+		NVRAM_LOG("write BackupFlag File check sum Fail:%d\n", iResult);
+		return false;
+	}
+	return true;
+
+}
+bool NVM_GetBackupFileNum(unsigned int * iAPBackupFileNum,
+                          unsigned short *iMDBackupFileNum)
+
+{
+	int fd, iResult;
+	char cMtdDevName[128] = {0};
+	char *tempBuffer = NULL;
+	char *tempBitmap1 = NULL;
+	char *tempBitmap2 = NULL;
+	int i, pos = 0, iBlockSize, iBlockNum, flag = 0;
+	bool bSuccessFound = false;
+	struct mtd_info_user info;
+	unsigned int iMapFileSize;
+	bool bRet;
+//   int iBackup_Partition=get_partition_numb("nvram");
+
+
+	NVRAM_LOG("Get BackupFileNum:\n");
+	if (iAPBackupFileNum == NULL || iMDBackupFileNum == NULL) {
+		NVRAM_LOG("[NVRAM]:the pointer of iAPBackupFileNum or  iMDBackupFileNum is error\r\n");
+		return false;
+	}
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	//strcpy(cMtdDevName,g_NVRAM_BACKUP_DEVICE);
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+	NVRAM_LOG("[NVRAM]:cMtdDevName:%s\n", cMtdDevName);
+
+
+	bRet = NVM_GetDeviceInfo(cMtdDevName, &info);
+	if (false == bRet) {
+		NVRAM_LOG("[NVRAM]:BackupFileNum: get device info fail!!!\n");
+		return false;
+	}
+
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVRAM_LOG("[NVRAM]:mtd open error %s\r\n", (char*)strerror(errno));
+		return false;
+	}
+
+
+	iBlockSize = info.erasesize;
+	//iPartitionSize=info.size;
+	if ( nvram_platform_layout_version == 0)
+		BinRegionBlockTotalNum = info.size / iBlockSize - nvram_platform_log_block -
+		                         nvram_platform_resv_block;
+	else if ( nvram_platform_layout_version == 1)
+		BinRegionBlockTotalNum = info.size / iBlockSize ;
+	else {
+		NVRAM_LOG("[NVRAM]: invalid nvram layout version %d\r\n",
+		          nvram_platform_layout_version);
+		close(fd);
+		return false;
+	}
+	NvRamBlockNum = BinRegionBlockTotalNum - nvram_platform_DM_block;
+
+	tempBuffer = (char*)malloc(iBlockSize);
+	if (tempBuffer == NULL) {
+		NVRAM_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		return false;
+	}
+	iBlockNum = NvRamBlockNum;
+	NVRAM_LOG("[NVRAM]:iBlockNum:%d\n", iBlockNum);
+
+	tempBitmap1 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap1 == NULL) {
+		NVRAM_LOG("[NVRAM]:malloc tempBitmap1 Fail!!\r\n");
+		free(tempBuffer);
+		close(fd);
+		return false;
+	}
+	tempBitmap2 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap2 == NULL) {
+		NVRAM_LOG("[NVRAM]:malloc tempBitmap2 Fail!!\r\n");
+		free(tempBuffer);
+		close(fd);
+		free(tempBitmap1);
+		return false;
+	}
+
+	while (iBlockNum > 0) {
+		flag = 0;
+		iBlockNum--;
+		NVRAM_LOG("[NVRAM]:iBlockNum:%d\n", iBlockNum);
+		if (lseek(fd, iBlockNum * iBlockSize, SEEK_SET) < 0) {
+			NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+			close(fd);
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		iResult = read(fd, tempBuffer, iBlockSize);
+		NVRAM_LOG("[NVRAM]:read:%d\n", iResult);
+		if (iResult <= 0) {
+			NVRAM_LOG("[NVRAM]:read size error\r\n");
+			close(fd);
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		memcpy(tempBitmap1, tempBuffer, NvRamBlockNum * sizeof(char));
+		memcpy(tempBitmap2, tempBuffer + NvRamBlockNum * sizeof(char),
+		       NvRamBlockNum * sizeof(char));
+		for (i = 0; i < NvRamBlockNum; i++) {
+			if (tempBitmap1[i] != tempBitmap2[i]) {
+				NVRAM_LOG("[NVRAM]:1i:%d,1:%d,2:%d\n", i, tempBitmap1[i], tempBitmap2[i]);
+				flag = 1;
+				break;
+			}
+		}
+		if (flag)
+			continue;
+		memcpy(tempBitmap2, tempBuffer + 2 * NvRamBlockNum * sizeof(char),
+		       NvRamBlockNum * sizeof(char));
+		for (i = 0; i < NvRamBlockNum; i++) {
+			if (tempBitmap1[i] != tempBitmap2[i]) {
+				NVRAM_LOG("[NVRAM]:2i:%d,1:%d,2:%d\n", i, tempBitmap1[i], tempBitmap2[i]);
+				flag = 1;
+				break;
+			}
+		}
+		if (flag)
+			continue;
+		bSuccessFound = true;
+		break;
+	}
+	if (!bSuccessFound) {
+		NVRAM_LOG("[NVRAM]:can not find bad block bit map\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	#if 0
+	for (i = 0; i < iBlockNum; i++) {
+		NVRAM_LOG("[NVRAM_Bitmap]:Block%d,%d\n", i, tempBitmap1[i]);
+	}
+	#endif
+	for (i = 0; i < iBlockNum; i++) {
+		if (tempBitmap1[i] == 0) {
+			pos = i;
+			break;
+		}
+	}
+	if (i == iBlockNum) {
+		NVRAM_LOG("[NVRAM]:can not find map file\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	iResult = lseek(fd, pos * iBlockSize, SEEK_SET);
+	if (iResult != (pos * iBlockSize)) {
+		NVRAM_LOG("[NVRAM]:mtd lseek error\r\n");
+		free(tempBuffer);
+		close(fd);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	iResult = read(fd, &iMapFileSize, sizeof(unsigned int));
+	if (iResult != sizeof(unsigned int)) {
+		NVRAM_LOG("[NVRAM]:mtd read error\r\n");
+		free(tempBuffer);
+		close(fd);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	if (iMapFileSize == 0) {
+		NVRAM_LOG("[NVRAM]:MapFile size is zero, BinRegion is empty\r\n");
+		free(tempBuffer);
+		close(fd);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	iResult = lseek(fd, pos * iBlockSize + 3 * sizeof(unsigned int) + iMapFileSize,
+	                SEEK_SET);
+
+	iResult = read(fd, iAPBackupFileNum, sizeof(unsigned int));
+	if (iResult != sizeof(unsigned int)) {
+		NVRAM_LOG("[NVRAM]:mtd read error(AP)\r\n");
+		free(tempBuffer);
+		close(fd);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+
+	iResult = read(fd, iMDBackupFileNum, sizeof(unsigned short));
+	if (iResult != sizeof(unsigned short)) {
+		NVRAM_LOG("[NVRAM]:mtd read error(MD)r\n");
+		free(tempBuffer);
+		close(fd);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	NVRAM_LOG("[NVRAM]:Saved AP Backup File Num:%d,Saved MD Backup File Num:%d\n",
+	          *iAPBackupFileNum, *iMDBackupFileNum);
+	NVRAM_LOG("[NVRAM]:mtd Get Backup File Num success\r\n");
+	close(fd);
+	free(tempBuffer);
+	free(tempBitmap1);
+	free(tempBitmap2);
+	return true;
+
+}
+
+bool NVM_AddBackupNum(unsigned int iModifiedFileNum, int iSrc) {
+	(void)(iModifiedFileNum);
+	(void)(iSrc);
+#ifdef MTK_NVRAM_AUTO_BACKUP
+	int iFileDesc, iResult;
+	unsigned int iSavedFileNum = 0;
+	unsigned short iMDBackupFileNum = 0;
+
+	if (iModifiedFileNum <= 0) {
+		NVRAM_LOG("Err iModifiedFileNum:%d\n", iModifiedFileNum);
+		return false;
+	}
+	if (iSrc == 0)
+		NVRAM_LOG("iModifiedFileNum:%d,from modem\n", iModifiedFileNum);
+	else
+		NVRAM_LOG("iModifiedFileNum:%d,from AP\n", iModifiedFileNum);
+
+	pthread_mutex_lock(&backuplock);
+	iFileDesc = open(g_pcNVM_BackFlag, O_RDWR);
+	if (-1 == iFileDesc) {
+		iFileDesc = open_file_with_dirs(g_pcNVM_BackFlag, O_CREAT | O_RDWR,
+		                                S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+		if (-1 == iFileDesc) {
+			NVRAM_LOG("Err Create BackupFlag File Fail\n");
+			pthread_mutex_unlock(&backuplock);
+			return false;
+		}
+	} else {
+		if (NVM_CheckBackFlag(iFileDesc)) {
+			if (-1 == lseek(iFileDesc, 0, SEEK_SET)) {
+				NVRAM_LOG("NVM_AddBackupNum:read lseek error\n");
+				goto read_from_bin;
+			}
+			iResult = read(iFileDesc, &iSavedFileNum, sizeof(unsigned int));
+			if (iResult != sizeof(unsigned int)) {
+				NVRAM_LOG("Err read BackupFlag File Fail(ignore):%d\n", iResult);
+				goto read_from_bin;
+			}
+			goto read_done;
+		}
+read_from_bin:
+		close(iFileDesc);
+		iFileDesc = open(g_pcNVM_BackFlag, O_TRUNC | O_RDWR);
+		if (!NVM_GetBackupFileNum(&iSavedFileNum, &iMDBackupFileNum)
+		        || iSavedFileNum == 0xFFFFFFFF) {
+			NVRAM_LOG("Err read Backup Number(BIN) Fail(ignore)\n");
+			iSavedFileNum = 0;
+		}
+	}
+read_done:
+	NVRAM_LOG("AddBackupNum Saved:%d\n", iSavedFileNum);
+	iSavedFileNum += iModifiedFileNum;
+	NVRAM_LOG("AddBackupNum Update:%d\n", iSavedFileNum);
+	if (-1 == lseek(iFileDesc, 0, SEEK_SET)) {
+		NVRAM_LOG("NVM_AddBackupNum:write lseek error\n");
+		unlink(g_pcNVM_BackFlag);
+		close(iFileDesc);
+		pthread_mutex_unlock(&backuplock);
+		return false;
+	}
+
+	iResult = write(iFileDesc, &iSavedFileNum, sizeof(unsigned int));
+	if (iResult != sizeof(unsigned int)) {
+		NVRAM_LOG("Err write BackupFlag File Fail:%d\n", iResult);
+		unlink(g_pcNVM_BackFlag);
+		close(iFileDesc);
+		pthread_mutex_unlock(&backuplock);
+		return false;
+	}
+	if (!NVM_ComputeBackflagCheckSum(iFileDesc)) {
+		unlink(g_pcNVM_BackFlag);
+		close(iFileDesc);
+		pthread_mutex_unlock(&backuplock);
+		return false;
+	}
+	pthread_mutex_unlock(&backuplock);
+	close(iFileDesc);
+#endif
+
+	return true;
+}
+
+bool NVM_AddBackupFileNum(unsigned int iLid) {
+	int i;
+
+	for (i = 0; i < (int)g_Backup_File_Count; i++) {
+		if (iLid == aBackupToBinRegion[i].iLID) {
+			if (NVM_AddBackupNum(1, 1)) {
+				NVRAM_LOG("write BackupFlag File success:%d\n", iLid);
+			} else {
+				NVRAM_LOG("write BackupFlag File fail:%d\n", iLid);
+			}
+		}
+	}
+	return true;
+}
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_Init
+//DESCRIPTION:
+//		this function is called to call nvram lib and get max lid.
+//
+//PARAMETERS:
+//		None
+//
+//RETURN VALUE:
+//		the max Lid number.
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+    extern int nvram_platform_callback(NVRAM_PLATFORM_T* pPlatform );
+#ifdef __cplusplus
+}
+#endif
+
+#if 0
+extern int init_nvram_platform_callback();
+extern int nvram_platform_callback();
+
+typedef int(*pfCallbackForPlatform)(NVRAM_PLATFORM_T*);
+extern pfCallbackForPlatform callback_for_nvram_platform;
+#endif
+
+
+
+FileName *gFileNameArray = NULL;
+
+
+int NVM_Init(void) {
+#if 0
+	int ret_callback = 0;
+#endif
+	NVRAM_PLATFORM_T nvram_platform = {0,0,0,0,0};
+	int ret;
+
+    memset(&nvram_platform, 0, sizeof(NVRAM_PLATFORM_T));
+
+	/* If NVRAM Init Completed, do not run twice*/
+	if (nvram_init_flag) {
+		return (g_i4MaxNvRamLid);
+	}
+
+        #if 0
+	/* Each proecss need get nvram device path once*/
+	ret = get_partition_path();
+	if (ret < 0) {
+		NVRAM_LOG("failed to get partition path\n");
+		return -1;
+	}
+        #endif
+#if 0
+	ret_callback = init_nvram_platform_callback();
+	NVRAM_LOG("init_nvram_platform_callback: %d\n", ret_callback);
+	if (callback_for_nvram_platform != NULL) {
+		ret_callback = callback_for_nvram_platform(&nvram_platform);
+		nvram_platform_log_block = nvram_platform.log_block;
+		nvram_platform_resv_block = nvram_platform.resv_block;
+		nvram_platform_DM_block = nvram_platform.DM_block;
+	}
+	/* NVRAM platform layout initialzation*/
+	nvram_platform_callback(&nvram_platform);
+	nvram_platform_log_block = nvram_platform.log_block;
+	nvram_platform_resv_block = nvram_platform.resv_block;
+	nvram_platform_DM_block = nvram_platform.DM_block;
+	nvram_platform_layout_version = nvram_platform.layout_version;
+	nvram_platform_header_offset = nvram_platform.header_offset;
+
+	if (nvram_multi_storage_support(&nvram_platform)) {
+		NVRAM_LOG("Enter nvram_multi_storage_support.\n");
+		nvram_platform_log_block = nvram_platform.log_block;
+		nvram_platform_resv_block = nvram_platform.resv_block;
+		nvram_platform_DM_block = nvram_platform.DM_block;
+		nvram_platform_layout_version = nvram_platform.layout_version;
+		nvram_platform_header_offset = nvram_platform.header_offset;
+	}
+#endif
+
+	NVRAM_LOG("nvram_platform_log_block: %d\n", nvram_platform_log_block);
+	NVRAM_LOG("nvram_platform_resv_block: %d\n", nvram_platform_resv_block);
+	NVRAM_LOG("nvram_platform_DM_block: %d\n", nvram_platform_DM_block);
+	NVRAM_LOG("nvram_platform_layout_version: %d\n", nvram_platform_layout_version);
+	NVRAM_LOG("nvram_platform_header_offset: %d\n", nvram_platform_header_offset);
+	NVRAM_LOG("g_i4CFG_File_Count: %d\n", g_i4CFG_File_Count);
+
+	/* Calculate the Max Lid, contain the common lid and custom lid*/
+	g_i4MaxNvRamLid = g_i4CFG_File_Count + g_i4CFG_File_Custom_Count;
+	NVRAM_LOG("NVM_Init Max Lid: %d\n", g_i4MaxNvRamLid);
+
+	/*
+	 *  If g_NVRAM_BACKUP_DEVICE get the path through the get_partition_path operations,
+	 *  need confirm this path is for GPT solution or PMT solution.
+	 */
+	NVRAM_LOG("[NVRAM]: info nvram_gpt_flag =%d\r\n", nvram_gpt_flag);
+
+	/* NVRAM_Init Completed and set one flag in each process */
+	nvram_init_flag = 1;
+	NVRAM_LOG("[NVRAM]: info NVRAM Init Completed!");
+
+	return (g_i4MaxNvRamLid);
+}
+int NVM_GetLIDByName(char* filename) {
+
+	int i = 0;
+	int Lid = - 1;
+
+	NVRAM_LOG("NVM_GetLIDByName %s \n", filename);
+	if (NVM_Init() < 0) {
+		NVRAM_LOG("NVM_GetLIDByName--NVM_Init fail !!!\n");
+		return -1;
+	}
+
+	if (gFileNameArray == NULL) {
+
+		gFileNameArray = (FileName*)malloc(g_i4MaxNvRamLid * sizeof(FileName));
+		//NVRAM_LOG("gFileNameArray =%x\n", gFileNameArray);
+
+		if (gFileNameArray == NULL) {
+			NVRAM_LOG("Filename array malloc fail \n");
+			free(gFileNameArray);
+			return -1;
+		}
+
+
+		for ( i = 0; i < g_i4CFG_File_Count; i++) {
+
+			//strcpy(gFileNameArray[i].cFileName, g_akCFG_File[i].cFileName);
+			snprintf(gFileNameArray[i].cFileName, sizeof(g_akCFG_File[i].cFileName),"%s", g_akCFG_File[i].cFileName);
+			gFileNameArray[i].iLID = i;
+
+			NVRAM_LOG("deal with cfgfile =%s,%d\n", gFileNameArray[i].cFileName,
+			          gFileNameArray[i].iLID);
+		}
+		for ( i = g_i4CFG_File_Count ;
+		        i < g_i4CFG_File_Count + g_i4CFG_File_Custom_Count; i++) {
+
+			//strcpy(gFileNameArray[i].cFileName, g_akCFG_File_Custom[i-iCustomBeginLID].cFileName);
+			snprintf(gFileNameArray[i].cFileName, sizeof(gFileNameArray[i].cFileName),"%s", g_akCFG_File_Custom[i-iCustomBeginLID].cFileName);
+			gFileNameArray[i].iLID = i;
+
+			NVRAM_LOG("deal with cfgcustfile =%s,%d\n", gFileNameArray[i].cFileName,
+			          gFileNameArray[i].iLID);
+		}
+
+	}
+
+
+
+	if (!filename || (strstr(filename, "Reserved") != NULL)
+	        || (strlen(filename) > FILENAMELENGTH)  || (strlen(filename) == 0)) {
+		NVRAM_LOG("NVRAM: Invalide argument for find LID name array! \n");
+		return -1;
+	}
+
+	for (i = 0 ; i < g_i4MaxNvRamLid; i++) {
+
+		if (strstr(gFileNameArray[i].cFileName, filename)) {
+
+
+			Lid = gFileNameArray[i].iLID;
+
+			break;
+		}
+	}
+	NVRAM_LOG("NVRAM: NVM_GetLIDByName Lid =%d \n", Lid);
+	return Lid;
+
+}
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_GetCfgFileTable
+//DESCRIPTION:
+//		this function is called to the array table of nvram file information .
+//
+//PARAMETERS:
+//		file_lid: [IN] the lid of nvram file
+//
+//RETURN VALUE:
+//		refers to the definition of "TCFG_FILE"
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+const TCFG_FILE* NVM_GetCfgFileTable(int file_lid) {
+	//NVRAM_LOG("NVM_GetCfgFileTable : file_lid = %d\n", file_lid);
+	// NVRAM_LOG("iCustomBeginLID = %d\n", iCustomBeginLID);
+	// NVRAM_LOG("g_i4CFG_File_Count:%d,g_i4CFG_File_Custom_Count:%d\n",g_i4CFG_File_Count,g_i4CFG_File_Custom_Count);
+	if (file_lid >= (g_i4CFG_File_Count + g_i4CFG_File_Custom_Count)) {
+		NVRAM_LOG("NVM_GetCfgFileTable file_lid is over than maximum %d\n",
+		          (g_i4CFG_File_Count + g_i4CFG_File_Custom_Count));
+		return NULL;
+	}
+	//if (file_lid < AP_CFG_CUSTOM_BEGIN_LID)
+	if (file_lid < iCustomBeginLID) {
+		//NVRAM_LOG("NVM_GetCfgFileTable MTK %d\n", file_lid);
+		return g_akCFG_File;
+	}
+
+	//NVRAM_LOG("NVM_GetCfgFileTable Customer %d\n", file_lid);
+	return g_akCFG_File_Custom;
+}
+
+/*******************************************************************************
+//FUNCTION:
+//		NVM_GenerateFileVer
+//DESCRIPTION:
+//		this function is called to generate the version file in backup or nvram partition.
+//
+//PARAMETERS:
+//		CPY_File_To_NVM: [IN] true is generate version file in NVM partition
+//
+//RETURN VALUE:
+//		true is success, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+******************************************************************************/
+bool NVM_GenerateFileVer(bool CPY_File_To_NVM) {
+	int iFileDesc;
+	int iFilNO = 0;
+	char tempstr[FILENAMELENGTH];
+	int iStrLen = 0;
+	memset(tempstr, 0, FILENAMELENGTH);
+	iStrLen = strlen(strVerInfo);
+
+	NVRAM_LOG("NVM_GenerateFileVer: CPY_File_To_NVM=%d ++\n", CPY_File_To_NVM);
+	NVRAM_LOG("iCustomBeginLID = %d\n", iCustomBeginLID);
+
+	// we now use global varialbe to desribe the version instead of files,
+	// so it just return when check default version file
+	if (!CPY_File_To_NVM) {
+		return true;
+	}
+
+	pthread_mutex_lock(&generateFileVerlock);
+	// create the version file in FAT2 partitioin.
+	iFileDesc = open(g_akCFG_File[iFileVerInfoLID].cFileName, O_CREAT | O_RDWR,
+	                 S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH);
+	NVRAM_LOG("Create/Open the file of %s \n",
+	          g_akCFG_File[iFileVerInfoLID].cFileName);
+	if (iFileDesc == -1) {
+		NVRAM_LOG("Create the dir path of %s\n",
+		          g_akCFG_File[iFileVerInfoLID].cFileName);
+		iFileDesc = open_file_with_dirs(g_akCFG_File[iFileVerInfoLID].cFileName,
+		                                O_CREAT | O_RDWR, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH);
+	}
+
+	if (iFileDesc == -1) {
+		NVRAM_LOG("Fail to open %s\n", g_akCFG_File[iFileVerInfoLID].cFileName);
+		pthread_mutex_unlock(&generateFileVerlock);
+		return false;
+	}
+	memcpy(tempstr, strVerInfo, iStrLen + 1);
+	write(iFileDesc, tempstr, FILENAMELENGTH);
+	write(iFileDesc, g_akCFG_File[iFileVerInfoLID].cFileVer, 4);
+	memset(tempstr, 0, FILENAMELENGTH);
+	for (iFilNO = iFileVerInfoLID; iFilNO < iCustomBeginLID; iFilNO++) {
+		int i;
+		iStrLen = strlen(g_akCFG_File[iFilNO].cFileName);
+		for (i = iStrLen; i >= 0; i--) {
+			if (g_akCFG_File[iFilNO].cFileName[i] == '/') {
+                            //strcpy(tempstr,g_akCFG_File[iFilNO].cFileName+i+1);
+                            snprintf(tempstr, sizeof(tempstr),"%s", g_akCFG_File[iFilNO].cFileName+i+1);
+				break;
+			}
+		}
+		write(iFileDesc, tempstr, FILENAMELENGTH);
+		write(iFileDesc, g_akCFG_File[iFilNO].cFileVer, 4);
+		memset(tempstr, 0, FILENAMELENGTH);
+	}
+
+	for (iFilNO = iCustomBeginLID;
+	        iFilNO < (g_i4CFG_File_Count + g_i4CFG_File_Custom_Count); iFilNO++) {
+		int i;
+		iStrLen = strlen(g_akCFG_File_Custom[iFilNO - iCustomBeginLID].cFileName);
+		for (i = iStrLen; i >= 0; i--) {
+			if (g_akCFG_File_Custom[iFilNO - iCustomBeginLID].cFileName[i] == '/') {
+                            strncpy(tempstr, g_akCFG_File_Custom[iFilNO-iCustomBeginLID].cFileName+i+1, sizeof(tempstr)-1);
+                            tempstr[sizeof(tempstr)-1] = '\0';
+				break;
+			}
+		}
+		write(iFileDesc, tempstr, FILENAMELENGTH);
+		write(iFileDesc, g_akCFG_File_Custom[iFilNO - iCustomBeginLID].cFileVer, 4);
+		memset(tempstr, 0, FILENAMELENGTH);
+	}
+	if (-1 == chown(g_akCFG_File[iFileVerInfoLID].cFileName, -1, AID_SYSTEM))
+		NVRAM_LOG("change dir group owner failed:%s\n", (char*)strerror(errno));
+	if (-1 == chmod(g_akCFG_File[iFileVerInfoLID].cFileName, 0664))
+		NVRAM_LOG("chmod file failed: %s\n", (char*)strerror(errno));
+
+	close(iFileDesc);
+	pthread_mutex_unlock(&generateFileVerlock);
+
+	NVRAM_LOG("NVM_GenerateFileVer: CPY_File_To_NVM =%d --\n", CPY_File_To_NVM);
+
+	return true;
+}
+
+
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_CheckVerFile
+//DESCRIPTION:
+//		this function is called to check the exist of versiono file information
+//      in NVM partition or default version.
+//
+//PARAMETERS:
+//		Is_NVM: [IN] true is to check NVM partition, otherwise check default version
+//
+//RETURN VALUE:
+//		true is exist, otherwise version is not exist.
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_CheckVerFile(bool In_NVM) {
+	struct stat statbuf;
+	//NVRAM_LOG("NVM_CheckVerFile: %d\n", In_NVM);
+
+	// when check default version file, just return
+	// becuase we now use global variable (g_akCFG_File.cFileVer)
+	if (In_NVM) {
+		if (stat(g_akCFG_File[iFileVerInfoLID].cFileName, &statbuf) == -1
+		        || !S_ISREG(statbuf.st_mode)) {
+			return false;
+		}
+	}
+	return true;
+}
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_UpdateFileVerNo
+//DESCRIPTION:
+//		this function is called to reset a NvRam to default value.
+//
+//PARAMETERS:
+//		file_lid: [IN] the lid of nvram file
+//
+//RETURN VALUE:
+//		true is success, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_UpdateFileVerNo(int file_lid, VerInfoUpdateFlag UpdateFlag) {
+	int iFileDesc;
+	int iFileSize;
+	int iRealFileLid = 0;
+	struct stat st;
+	char * buffer1 = NULL;
+	char * buffer2 = NULL;
+	int iResult, iStrLen;
+	bool bIsNewVerInfo;
+	char tempstr[FILENAMELENGTH];
+	char tempstr1[FILENAMELENGTH];
+	const TCFG_FILE *pCfgFileTable = NULL;
+
+	struct stat statbuf;
+	int ilooptime, iIndex;
+	off_t offset = 0;
+
+	memset(tempstr, 0, FILENAMELENGTH);
+	memset(tempstr1,0,FILENAMELENGTH);
+
+	NVRAM_LOG("NVM_UpdateFileVerNo: %d ++\n", file_lid);
+	NVRAM_LOG("iCustomBeginLID = %d\n", iCustomBeginLID);
+
+	if (UpdateFlag == VerUpdate) {
+		pCfgFileTable = NVM_GetCfgFileTable(file_lid);
+		//NVRAM_LOG("NVM_GetCfgFileTable done\n");
+		if ( file_lid < iCustomBeginLID ) {
+			NVRAM_LOG("This File LID is belong to common lid!\n");
+			iRealFileLid = file_lid;
+		} else {
+			NVRAM_LOG("This File LID is belong to custom lid\n");
+			iRealFileLid = file_lid - iCustomBeginLID;
+		}
+
+		if (pCfgFileTable == NULL) {
+			NVRAM_LOG("NVM_GetCfgFileTable Fail!!! \n");
+			return false;
+		}
+
+		memset(tempstr1, 0, FILENAMELENGTH);
+		iStrLen = strlen(pCfgFileTable[iRealFileLid].cFileName);
+		for (iIndex = iStrLen; iIndex >= 0; iIndex--) {
+			if ( pCfgFileTable[iRealFileLid].cFileName[iIndex] == '/') {
+	         		//strcpy( tempstr1, pCfgFileTable[iRealFileLid].cFileName + iIndex + 1 );//get the target name
+	         		snprintf(tempstr1, sizeof(tempstr1),"%s", pCfgFileTable[iRealFileLid].cFileName + iIndex + 1);  		
+				break;
+			}
+		}
+
+		NVRAM_LOG("DEBUG searching LID = %d,%s\n", file_lid, tempstr1);
+
+		iFileDesc = open(g_akCFG_File[iFileVerInfoLID].cFileName, O_RDONLY);
+     	if (iFileDesc == -1) {
+        	NVRAM_LOG("Error NVM_UpdateFileVerNo Open1 version file fail \n");
+		pthread_mutex_unlock(&generateFileVerlock);
+        	return false;
+     	}
+		if (fstat(iFileDesc, &statbuf) < 0) {
+			NVBAK_LOG("[NVRAM]: fstat error. (errno=%d)", errno);
+			close(iFileDesc);
+			return false;
+		}
+
+		iFileSize = (int)statbuf.st_size;
+		ilooptime = iFileSize / (FILEVERLENGTH + FILENAMELENGTH);
+
+		for (iIndex = 0; iIndex < ilooptime; iIndex++) {
+#if 1
+			offset = iIndex * (FILEVERLENGTH + FILENAMELENGTH);
+			iResult =pread(iFileDesc, tempstr, FILENAMELENGTH-1, offset);
+			if (iResult != FILENAMELENGTH-1) {
+				NVBAK_LOG("[NVRAM]: pread error. (errno=%d)", errno);
+				close(iFileDesc);
+				return false;
+			}
+			tempstr[iResult]='\0';
+			if (0 == strcmp(tempstr, tempstr1)) {
+				break;
+			}
+#endif
+		}
+		if (iIndex == ilooptime) {
+			NVRAM_LOG("NVM_UpdateFileVerNo find target file fail: %d\n", file_lid);
+			UpdateFlag = VerAdd;
+
+		}
+		close(iFileDesc);
+		memset(tempstr, 0, FILENAMELENGTH);
+	}
+	/* open file */
+	pthread_mutex_lock(&generateFileVerlock);
+	iFileDesc = open(g_akCFG_File[iFileVerInfoLID].cFileName, O_RDWR);
+
+	if (iFileDesc == -1) {
+		NVRAM_LOG("Error NVM_UpdateFileVerNo Open1 version file fail \n");
+		pthread_mutex_unlock(&generateFileVerlock);
+		return false;
+	}
+    	iResult = pread(iFileDesc,tempstr,FILENAMELENGTH-1, 0);
+		if (iResult != FILENAMELENGTH-1) {
+			NVBAK_LOG("[NVRAM]: pread error. (errno=%d)", errno);
+			pthread_mutex_unlock(&generateFileVerlock);
+			close(iFileDesc);
+			return false;
+		}
+		tempstr[iResult]='\0';
+	if (0 == strcmp(tempstr, strVerInfo))
+		bIsNewVerInfo = true;
+	else
+		bIsNewVerInfo = false;
+	memset(tempstr, 0, FILENAMELENGTH);
+
+	if (UpdateFlag == VerUpdate) {
+		/* Ver Info has existed , or added at the end of Version Info File
+		 * move to the address in the version file.
+		 * becuase we just use cFileVer to save the version,
+		 * so the offset address is file_lid* sizeof(cFileVer)
+		 */
+		if (!bIsNewVerInfo) {
+			offset = file_lid * FILEVERLENGTH;
+		}
+
+		if (file_lid < iCustomBeginLID) {
+			if (bIsNewVerInfo) {
+				int i;
+				iStrLen = strlen(g_akCFG_File[file_lid].cFileName);
+				for (i = iStrLen; i >= 0; i--) {
+					if (g_akCFG_File[file_lid].cFileName[i] == '/') {
+             					//strcpy(tempstr,g_akCFG_File[file_lid].cFileName+i+1);
+             					snprintf(tempstr, sizeof(tempstr),"%s", g_akCFG_File[file_lid].cFileName+i+1);  
+						break;
+					}
+				}
+				pwrite(iFileDesc, tempstr, FILENAMELENGTH, offset);
+				memset(tempstr, 0, FILENAMELENGTH);
+			}
+			pwrite(iFileDesc, g_akCFG_File[file_lid].cFileVer, FILEVERLENGTH,
+			       offset + FILENAMELENGTH);
+		} else {
+			if (bIsNewVerInfo) {
+				int i;
+				iStrLen = strlen(g_akCFG_File_Custom[file_lid - iCustomBeginLID].cFileName);
+				for (i = iStrLen; i >= 0; i--) {
+					if (g_akCFG_File_Custom[file_lid - iCustomBeginLID].cFileName[i] == '/') {
+ 			            		//strcpy(tempstr,g_akCFG_File_Custom[file_lid-iCustomBeginLID].cFileName+i+1);
+ 			            		snprintf(tempstr, sizeof(tempstr),"%s", g_akCFG_File_Custom[file_lid-iCustomBeginLID].cFileName+i+1);  	
+						break;
+					}
+				}
+				pwrite(iFileDesc, tempstr, FILENAMELENGTH, offset);
+				memset(tempstr, 0, FILENAMELENGTH);
+			}
+			pwrite(iFileDesc, g_akCFG_File_Custom[file_lid - iCustomBeginLID].cFileVer,
+			       FILEVERLENGTH, offset + FILENAMELENGTH);
+		}
+		//close(iFileDesc);
+	} else if (UpdateFlag == VerDel) {
+		if (stat(g_akCFG_File[iFileVerInfoLID].cFileName, &st) < 0) {
+			NVRAM_LOG("Error NVM_UpdateFileVerNo stat \n");
+			close(iFileDesc);
+			pthread_mutex_unlock(&generateFileVerlock);
+			return false;
+		}
+		offset = 0;
+		iFileSize = st.st_size;
+
+		buffer1 = (char*)malloc(iFileSize);
+		if (bIsNewVerInfo)
+			buffer2 = (char*)malloc(iFileSize - FILEVERLENGTH - FILENAMELENGTH);
+		else
+			buffer2 = (char*)malloc(iFileSize - FILEVERLENGTH);
+		if (buffer1 == NULL || buffer2 == NULL) {
+			NVRAM_LOG("Error NVM_UpdateFileVerNo stat \n");
+			if (buffer1 != NULL)
+				free(buffer1);
+			if (buffer2 != NULL)
+				free(buffer2);
+			close(iFileDesc);
+			pthread_mutex_unlock(&generateFileVerlock);
+			return false;
+		}
+		iResult = pread(iFileDesc, buffer1, iFileSize, offset);
+		if (iResult != st.st_size) {
+			NVRAM_LOG("Error NVM_UpdateFileVerNo read del\n");
+			NVRAM_LOG("iResult = %d, st.st_size = %d.\n", iResult, (int)st.st_size);
+			free(buffer1);
+			free(buffer2);
+			close(iFileDesc);
+			pthread_mutex_unlock(&generateFileVerlock);
+			return false;
+		}
+		close(iFileDesc);
+		pthread_mutex_unlock(&generateFileVerlock);
+		if (!bIsNewVerInfo) {
+			memcpy(buffer2, buffer1, file_lid * FILEVERLENGTH);
+			memcpy(buffer2 + file_lid * FILEVERLENGTH,
+			       buffer1 + (file_lid + 1)*FILEVERLENGTH,
+			       iFileSize - (file_lid + 1)*FILEVERLENGTH);
+		} else {
+			memcpy(buffer2, buffer1, (file_lid + 1) * (FILEVERLENGTH + FILENAMELENGTH));
+			memcpy(buffer2 + (file_lid + 1) * (FILEVERLENGTH + FILENAMELENGTH),
+			       buffer1 + (file_lid + 1 + 1) * (FILEVERLENGTH + FILENAMELENGTH),
+			       iFileSize - (file_lid + 1 + 1) * (FILEVERLENGTH + FILENAMELENGTH));
+		}
+		pthread_mutex_lock(&generateFileVerlock);
+		iFileDesc = open(g_akCFG_File[iFileVerInfoLID].cFileName,
+		                 O_TRUNC | O_RDWR);
+		if (iFileDesc == -1) {
+			NVRAM_LOG("Error NVM_UpdateFileVerNo Open2 version file fail \n");
+			free(buffer1);
+			free(buffer2);
+			pthread_mutex_unlock(&generateFileVerlock);
+			return false;
+		}
+		if (!bIsNewVerInfo) {
+			iResult = pwrite(iFileDesc, buffer2, iFileSize - FILEVERLENGTH, 0);
+			if (iResult != (iFileSize - FILEVERLENGTH)) {
+				NVRAM_LOG("Error NVM_UpdateFileVerNo write version file fail \n");
+				close(iFileDesc);
+				free(buffer1);
+				free(buffer2);
+				pthread_mutex_unlock(&generateFileVerlock);
+				return false;
+			}
+		} else {
+			iResult = pwrite(iFileDesc, buffer2, iFileSize - FILEVERLENGTH - FILENAMELENGTH,
+			                 0);
+			if (iResult != (iFileSize - FILEVERLENGTH - FILENAMELENGTH)) {
+				NVRAM_LOG("Error NVM_UpdateFileVerNo write version file fail \n");
+				close(iFileDesc);
+				free(buffer1);
+				free(buffer2);
+				pthread_mutex_unlock(&generateFileVerlock);
+				return false;
+			}
+		}
+		free(buffer1);
+		free(buffer2);
+	} else if (UpdateFlag == VerAdd) {
+		if (stat(g_akCFG_File[iFileVerInfoLID].cFileName, &st) < 0) {
+			NVRAM_LOG("Error NVM_UpdateFileVerNo stat \n");
+			close(iFileDesc);
+			pthread_mutex_unlock(&generateFileVerlock);
+			return false;
+		}
+		iFileSize = st.st_size;
+		bool bAddedAtend;
+		if (bIsNewVerInfo) {
+			if ((file_lid + 1) * (FILEVERLENGTH + FILENAMELENGTH) >= iFileSize)
+				bAddedAtend = true;
+			else
+				bAddedAtend = false;
+		} else {
+			if (file_lid * FILEVERLENGTH >= iFileSize)
+				bAddedAtend = true;
+			else
+				bAddedAtend = false;
+		}
+		if (bAddedAtend) {
+			NVRAM_LOG("Added at the end of the file \n");
+			if (bIsNewVerInfo)
+				offset = (file_lid + 1) * (FILEVERLENGTH + FILENAMELENGTH);
+			else
+				offset = file_lid * FILEVERLENGTH;
+
+			if (file_lid < iCustomBeginLID) {
+				if (bIsNewVerInfo) {
+					int i;
+					iStrLen = strlen(g_akCFG_File[file_lid].cFileName);
+					for (i = iStrLen; i >= 0; i--) {
+						if (g_akCFG_File[file_lid].cFileName[i] == '/') {
+               						//strcpy(tempstr,g_akCFG_File[file_lid].cFileName+i+1);
+               						snprintf(tempstr, sizeof(tempstr),"%s", g_akCFG_File[file_lid].cFileName+i+1); 
+							break;
+						}
+					}
+					pwrite(iFileDesc, tempstr, FILENAMELENGTH, offset);
+					memset(tempstr, 0, FILENAMELENGTH);
+				}
+				pwrite(iFileDesc, g_akCFG_File[file_lid].cFileVer, FILEVERLENGTH,
+				       offset + FILENAMELENGTH);
+			} else {
+				if (bIsNewVerInfo) {
+					int i;
+					iStrLen = strlen(g_akCFG_File_Custom[file_lid - iCustomBeginLID].cFileName);
+					for (i = iStrLen; i >= 0; i--) {
+						if (g_akCFG_File_Custom[file_lid - iCustomBeginLID].cFileName[i] == '/') {
+	               					//strcpy(tempstr,g_akCFG_File_Custom[file_lid-iCustomBeginLID].cFileName+i+1);
+	               					snprintf(tempstr, sizeof(tempstr),"%s", g_akCFG_File_Custom[file_lid-iCustomBeginLID].cFileName+i+1);
+							break;
+						}
+					}
+					pwrite(iFileDesc, tempstr, FILENAMELENGTH, offset);
+					memset(tempstr, 0, FILENAMELENGTH);
+				}
+				pwrite(iFileDesc, g_akCFG_File_Custom[file_lid - iCustomBeginLID].cFileVer,
+				       FILEVERLENGTH, offset + FILENAMELENGTH);
+			}
+		} else {
+			NVRAM_LOG("Added at the middle part of the file \n");
+			buffer1 = (char*)malloc(iFileSize);
+			if (bIsNewVerInfo) {
+				buffer2 = (char*)malloc(iFileSize + FILEVERLENGTH + FILENAMELENGTH);
+			} else {
+				buffer2 = (char*)malloc(iFileSize + FILEVERLENGTH);
+			}
+			if (buffer1 == NULL || buffer2 == NULL) {
+				NVRAM_LOG("Error NVM_UpdateFileVerNo stat \n");
+				if (buffer1 != NULL)
+					free(buffer1);
+				if (buffer2 != NULL)
+					free(buffer2);
+				close(iFileDesc);
+				pthread_mutex_unlock(&generateFileVerlock);
+				return false;
+			}
+			close(iFileDesc);
+			pthread_mutex_unlock(&generateFileVerlock);
+			pthread_mutex_lock(&generateFileVerlock);
+			iFileDesc = open(g_akCFG_File[iFileVerInfoLID].cFileName, O_RDWR);
+			if (iFileDesc == -1) {
+				NVRAM_LOG("Error NVM_UpdateFileVerNo Open1 version file fail \n");
+				pthread_mutex_unlock(&generateFileVerlock);
+				free(buffer1);
+				free(buffer2);
+				return false;
+			}
+			iResult = pread(iFileDesc, buffer1, iFileSize, 0);
+			if (iResult != iFileSize) {
+				NVRAM_LOG("Error NVM_UpdateFileVerNo read add \n");
+				free(buffer1);
+				free(buffer2);
+				close(iFileDesc);
+				pthread_mutex_unlock(&generateFileVerlock);
+				return false;
+			}
+			close(iFileDesc);
+			pthread_mutex_unlock(&generateFileVerlock);
+			NVRAM_LOG("cpy1\n");
+			if (bIsNewVerInfo) {
+				memcpy(buffer2, buffer1, (file_lid + 1) * (FILEVERLENGTH + FILENAMELENGTH));
+			} else {
+				memcpy(buffer2, buffer1, file_lid * FILEVERLENGTH);
+			}
+			if (file_lid < iCustomBeginLID) {
+				if (bIsNewVerInfo) {
+					int i;
+					iStrLen = strlen(g_akCFG_File[file_lid].cFileName);
+					for (i = iStrLen; i >= 0; i--) {
+						if (g_akCFG_File[file_lid].cFileName[i] == '/') {
+                 					//strcpy(tempstr,g_akCFG_File[file_lid].cFileName+i+1);
+                 					snprintf(tempstr, sizeof(tempstr),"%s", g_akCFG_File[file_lid].cFileName+i+1);
+							break;
+						}
+					}
+					memcpy(buffer2 + (file_lid + 1) * (FILENAMELENGTH + FILEVERLENGTH), tempstr,
+					       FILENAMELENGTH);
+					memset(tempstr, 0, FILENAMELENGTH);
+					memcpy(buffer2 + (file_lid + 1) * (FILENAMELENGTH + FILEVERLENGTH) +
+					       FILENAMELENGTH,
+					       g_akCFG_File[file_lid].cFileVer, FILEVERLENGTH);
+				} else {
+					memcpy(buffer2 + file_lid * FILEVERLENGTH, g_akCFG_File[file_lid].cFileVer,
+					       FILEVERLENGTH);
+				}
+			} else {
+				if (bIsNewVerInfo) {
+					int i;
+					iStrLen = strlen(g_akCFG_File_Custom[file_lid - iCustomBeginLID].cFileName);
+					for (i = iStrLen; i >= 0; i--) {
+						if (g_akCFG_File_Custom[file_lid - iCustomBeginLID].cFileName[i] == '/') {
+                  					//strcpy(tempstr,g_akCFG_File_Custom[file_lid-iCustomBeginLID].cFileName+i+1);
+                  					snprintf(tempstr, sizeof(tempstr),"%s", g_akCFG_File_Custom[file_lid-iCustomBeginLID].cFileName+i+1);  
+							break;
+						}
+					}
+					memcpy(buffer2 + (file_lid + 1) * (FILENAMELENGTH + FILEVERLENGTH), tempstr,
+					       FILENAMELENGTH);
+					memset(tempstr, 0, FILENAMELENGTH);
+					memcpy(buffer2 + (file_lid + 1) * (FILENAMELENGTH + FILEVERLENGTH) +
+					       FILENAMELENGTH,
+					       g_akCFG_File_Custom[file_lid - iCustomBeginLID].cFileVer, FILEVERLENGTH);
+
+				} else {
+					memcpy(buffer2 + file_lid * FILEVERLENGTH,
+					       g_akCFG_File_Custom[file_lid - iCustomBeginLID].cFileVer, FILEVERLENGTH);
+				}
+			}
+			NVRAM_LOG("cpy2\n");
+			if (bIsNewVerInfo) {
+				memcpy(buffer2 + (file_lid + 1 + 1) * (FILEVERLENGTH + FILENAMELENGTH),
+				       buffer1 + (file_lid + 1) * (FILEVERLENGTH + FILENAMELENGTH),
+				       iFileSize - (file_lid + 1) * (FILEVERLENGTH + FILENAMELENGTH));
+			} else {
+				memcpy(buffer2 + (file_lid + 1)*FILEVERLENGTH,
+				       buffer1 + file_lid * FILEVERLENGTH,
+				       iFileSize - file_lid * FILEVERLENGTH);
+			}
+			NVRAM_LOG("cpy3\n");
+			pthread_mutex_lock(&generateFileVerlock);
+			iFileDesc = open(g_akCFG_File[iFileVerInfoLID].cFileName, O_TRUNC | O_RDWR);
+			if (iFileDesc == -1) {
+				NVRAM_LOG("Error NVM_UpdateFileVerNo Open2 version file fail \n");
+				free(buffer1);
+				free(buffer2);
+				pthread_mutex_unlock(&generateFileVerlock);
+				return false;
+			}
+			if (bIsNewVerInfo) {
+				iResult = pwrite(iFileDesc, buffer2, iFileSize + FILEVERLENGTH + FILENAMELENGTH,
+				                 0);
+				if (iResult != (iFileSize + FILEVERLENGTH + FILENAMELENGTH)) {
+					NVRAM_LOG("Error NVM_UpdateFileVerNo write version file fail \n");
+					close(iFileDesc);
+					free(buffer1);
+					free(buffer2);
+					pthread_mutex_unlock(&generateFileVerlock);
+					return false;
+				}
+			} else {
+				iResult = pwrite(iFileDesc, buffer2, iFileSize + FILEVERLENGTH, 0);
+				if (iResult != (iFileSize + FILEVERLENGTH)) {
+					NVRAM_LOG("Error NVM_UpdateFileVerNo write version file fail \n");
+					close(iFileDesc);
+					free(buffer1);
+					free(buffer2);
+					pthread_mutex_unlock(&generateFileVerlock);
+					return false;
+				}
+			}
+			free(buffer1);
+			free(buffer2);
+		}
+	} else {
+		pthread_mutex_unlock(&generateFileVerlock);
+		return false;
+	}
+	close(iFileDesc);
+	pthread_mutex_unlock(&generateFileVerlock);
+	NVRAM_LOG("UpdateFileVerNo: %d --\n", file_lid);
+	return true;
+}
+#define Loop_num    4096
+
+static unsigned int NVM_ComputeCheckSum(void)
+{
+     time_t start = time(NULL);
+     NVBAK_LOG("Starting NVM_ComputeCheckSum (pid %d) on %s",getpid(),ctime(&start));////add for log
+     int iFileDesc_file;
+     unsigned int iFileSize;
+     unsigned int ulCheckSum=0;
+     int looptime;
+     struct stat st;
+     int i,flag,j;//add j
+     int iResult;
+     int iLength=sizeof(unsigned int);
+     unsigned int tempNum;
+     unsigned int  tempBuf[4096] ;//add for read
+     int jloop_num=0;
+	 int  tmplooptime;//add for read
+     if(stat(g_pcNVM_AllFile,&st)<0)
+     {
+        NVBAK_LOG("Error NVM_ComputeCheckSum stat \n");
+        return 0;
+    }
+   iFileSize=st.st_size;
+   looptime=iFileSize/(sizeof(unsigned int));
+   tmplooptime = looptime/(Loop_num) + 1;
+   iFileDesc_file = open(g_pcNVM_AllFile , O_RDWR);
+      if(iFileDesc_file<0)
+      {
+            NVBAK_LOG("NVM_ComputeCheckSum cannot open data file\n");
+            return 0;
+      }
+   flag=1;
+   //NVBAK_LOG("looptime is %d \n", looptime);////add for log
+   //NVBAK_LOG("tmplooptime is %d \n", tmplooptime);////add for log
+   //time_t start_while = time(NULL);////add for log
+   //NVBAK_LOG("Start_while NVM_ComputeCheckSum (pid %d) on %s",getpid(),ctime(&start_while));//add
+   for(i=0;i<tmplooptime;i++)
+    {
+        if(i != tmplooptime-1 )
+        {
+            jloop_num=Loop_num;}
+        else
+        {
+            jloop_num=looptime%(Loop_num);}
+            //NVBAK_LOG("Start_while: i is %d, NVM_ComputeCheckSum (pid %d) on %s",i,getpid(),ctime(&start_while));// add for log
+            iResult=read(iFileDesc_file, tempBuf, jloop_num*iLength);
+            //NVBAK_LOG("Start_while: iResult is %d, NVM_ComputeCheckSum (pid %d) on %s",iResult,getpid(),ctime(&start_while));//add for log
+        if(iResult!= jloop_num*iLength)
+        {
+            NVBAK_LOG("NVM_ComputeCheckSum cannot read checksum data\n");
+            close(iFileDesc_file);
+            return 0;
+        }
+        //NVBAK_LOG("Start_while:before_while NVM_ComputeCheckSum (pid %d) on %s",getpid(),ctime(&start_while));//add for log
+        for(j=0;j<jloop_num;j++)
+        {
+            if(flag)
+            {
+                ulCheckSum^=tempBuf[j];
+                flag=0;
+            }
+            else
+            {
+                ulCheckSum+=tempBuf[j];
+                flag=1;
+            }
+      }
+      }
+      tempNum=0;
+      iLength=iFileSize%(sizeof(unsigned int));
+      iResult=read(iFileDesc_file, &tempNum, iLength);
+      NVBAK_LOG("tempNum = %x", tempNum);//add for log
+      if(iResult!= iLength)
+           {
+              NVBAK_LOG("NVM_ComputeCheckSum cannot read last checksum data\n");
+              close(iFileDesc_file);
+              return 0;
+           }
+        ulCheckSum+=tempNum;
+        //ulCheckSum^=gFileStartAddr;
+        close(iFileDesc_file);
+        time_t end = time(NULL);
+        NVBAK_LOG("Ending NVM_ComputeCheckSum (pid %d) on %s",getpid(),ctime(&end));//add for log
+        return ulCheckSum;
+}
+#if 0
+static unsigned int NVM_ComputeCheckSum(void) {
+	int iFileDesc_file;
+	char cReadData;
+	unsigned int iFileSize;
+	unsigned int ulCheckSum = 0;
+	int looptime;
+	struct stat st;
+	int i, flag;
+	int iResult;
+	int iLength = sizeof(unsigned int);
+	unsigned int tempNum;
+
+	if (stat(g_pcNVM_AllFile, &st) < 0) {
+		NVBAK_LOG("Error NVM_ComputeCheckSum stat \n");
+		return 0;
+	}
+
+	iFileSize = st.st_size;
+
+	looptime = iFileSize / (sizeof(unsigned int));
+
+	iFileDesc_file = open(g_pcNVM_AllFile , O_RDWR);
+	if (iFileDesc_file < 0) {
+		NVBAK_LOG("NVM_ComputeCheckSum cannot open data file\n");
+		return 0;
+	}
+	flag = 1;
+	for (i = 0; i < looptime; i++) {
+		iResult = read(iFileDesc_file, &tempNum, iLength);
+		if (iResult != iLength) {
+			NVBAK_LOG("NVM_GetCheckSum cannot read checksum data\n");
+			close(iFileDesc_file);
+			return 0;
+		}
+		if (flag) {
+			ulCheckSum ^= tempNum;
+			flag = 0;
+		} else {
+			ulCheckSum += tempNum;
+			flag = 1;
+		}
+	}
+	tempNum = 0;
+	iLength = iFileSize % (sizeof(unsigned int));
+	iResult = read(iFileDesc_file, &tempNum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("NVM_GetCheckSum cannot read last checksum data\n");
+		close(iFileDesc_file);
+		return 0;
+	}
+	ulCheckSum += tempNum;
+	//ulCheckSum^=gFileStartAddr;
+	close(iFileDesc_file);
+	return ulCheckSum;
+}
+#endif
+
+
+static BackupFileInfo stBackupFileInfo;
+static bool NVM_GetCheckSum(void) {
+	int iFileDesc_map;
+	int iResult;
+	int iLength = sizeof(unsigned int);
+
+	iFileDesc_map = open(g_pcNVM_AllMap, O_RDONLY);
+	if (iFileDesc_map < 0) {
+		NVBAK_LOG("NVM_GetCheckSum cannot open/create map data\n");
+		return false;
+	}
+	iResult = read(iFileDesc_map, &stBackupFileInfo.ulCheckSum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("NVM_GetCheckSum cannot read checksum data\n");
+		close(iFileDesc_map);
+		return false;
+	}
+	iLength = sizeof(unsigned int);
+	iResult = read(iFileDesc_map, &stBackupFileInfo.iCommonFileNum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("NVM_GetCheckSum cannot read checksum data\n");
+		close(iFileDesc_map);
+		return false;
+	}
+	iResult = read(iFileDesc_map, &stBackupFileInfo.iCustomFileNum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("NVM_GetCheckSum cannot read checksum data\n");
+		close(iFileDesc_map);
+		return false;
+	}
+	close(iFileDesc_map);
+
+	return true;
+}
+
+bool NVM_SetCheckSum(unsigned int ulCheckSum) {
+	int iFileDesc_map = 0;
+	int iResult;
+	int iLength = sizeof(unsigned int);
+	unsigned int iOldCommonFileNum = g_i4CFG_File_Count;
+	unsigned int iOldCustomFileNum = g_i4CFG_File_Custom_Count;
+
+	pthread_mutex_lock(&gFileStartAddrlock);
+	ulCheckSum ^= gFileStartAddr;
+	gFileStartAddr = 0;
+	pthread_mutex_unlock(&gFileStartAddrlock);
+	iFileDesc_map = open(g_pcNVM_AllMap, O_WRONLY);
+	if (iFileDesc_map < 0) {
+		NVBAK_LOG("NVM_SetCheckSum cannot open/create map data\n");
+		return false;
+	}
+	iResult = write(iFileDesc_map, &ulCheckSum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("NVM_SetCheckSum cannot write checksum data\n");
+		close(iFileDesc_map);
+		return false;
+	}
+	NVBAK_LOG("common file num:%d,custom file num:%d\n", iOldCommonFileNum,
+	          iOldCustomFileNum);
+	iLength = sizeof(unsigned int);
+	iResult = write(iFileDesc_map, &iOldCommonFileNum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("NVM_SetCheckSum cannot write common file num data\n");
+		close(iFileDesc_map);
+		return false;
+	}
+	iResult = write(iFileDesc_map, &iOldCustomFileNum, iLength);
+	if (iResult != iLength) {
+		NVBAK_LOG("NVM_SetCheckSum cannot write custom file num data\n");
+		close(iFileDesc_map);
+		return false;
+	}
+	close(iFileDesc_map);
+	return true;
+}
+
+static bool NVM_CompareCheckSum(unsigned int ulCheckSum1,
+                                unsigned int ulCheckSum2) {
+	if (ulCheckSum1 != ulCheckSum2)
+		return false;
+	return true;
+}
+bool NVM_RestoreFromFiles_OneFile(int eBackupType, int file_lid,
+                                  const char* filename, bool* find_flag) {
+	int iFileDesc_file, iFileDesc_map, iFileDesc, iSize;
+	int iFileTitleOffset = 0;
+	short int iFileNum = 0;
+	char *buf;  /* content  */
+	File_Title *FileInfo = NULL;
+	bool bRet = false;
+	off_t iRet;
+	File_Title_Header1 FileTitleInfo1;
+	File_Title_Header2 FileTitleInfo2;
+	File_Title_Header3 FileTitleInfo3;
+	File_Title_Header4 FileTitleInfo4;
+	File_Title_Header5 FileTitleInfo5;
+
+	memset(&FileTitleInfo3, 0x00, sizeof(File_Title_Header3));
+	int fhs = sizeof(unsigned int) + 2 * sizeof(unsigned int) + sizeof(
+	              File_Title_Header1);
+
+	if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+		NVRAM_LOG("NVM_RestoreFromFiles_OneFile: File_Title_Header1 set\n");
+	} else if (nvram_md5_support() && !nvram_evdo_support()
+	           && !nvram_ecci_c2k_support()) {
+		NVRAM_LOG("NVM_RestoreFromFiles_OneFile: File_Title_Header2 set\n");
+		fhs = sizeof(unsigned int) + 2 * sizeof(unsigned int) + sizeof(
+		          File_Title_Header2) - 2 * sizeof(short
+		                  int); //In order to align, minus 2*sizeof(short int)
+	} else if (!nvram_md5_support() && nvram_evdo_support()
+	           && !nvram_ecci_c2k_support()) {
+		NVRAM_LOG("NVM_RestoreFromFiles_OneFile: File_Title_Header3 set\n");
+		fhs = sizeof(unsigned int) + 2 * sizeof(unsigned int) + sizeof(
+		          File_Title_Header3) - 4 * sizeof(short
+		                  int); //In order to align, minus 4*sizeof(short int)
+	} else if (!nvram_md5_support() && !nvram_evdo_support()
+	           && !nvram_ecci_c2k_support()) {
+		NVRAM_LOG("NVM_RestoreFromFiles_OneFile: File_Title_Header4 set\n");
+		fhs = sizeof(unsigned int) + 2 * sizeof(unsigned int) + sizeof(
+		          File_Title_Header4) - 4 * sizeof(short int);
+	} else {
+		NVRAM_LOG("NVM_RestoreFromFiles_OneFile: File_Title_Header5 set\n");
+		fhs = sizeof(unsigned int) + 2 * sizeof(unsigned int) + sizeof(
+		          File_Title_Header5);
+	}
+	int fis = sizeof(File_Title);
+
+	const TCFG_FILE *pCfgFielTable = NULL;
+	int iRealFileLid = 0;
+	int filesizeintable = 0;
+	if ((filename == NULL) && (file_lid >= 0)) {
+		NVRAM_LOG("NVM_RestoreFromFiles_OneFile : %d ++\n", file_lid);
+		NVRAM_LOG("iCustomBeginLID = %d\n", iCustomBeginLID);
+
+		if (!NVM_CheckVerFile(true)) {
+			NVM_GenerateFileVer(true);
+		}
+
+		//get the file informatin table.
+		pCfgFielTable = NVM_GetCfgFileTable(file_lid);
+		if (pCfgFielTable == NULL) {
+			NVRAM_LOG("NVM_RestoreFromFiles_OneFile: NVM_GetCfgFileTable Fail!!!\n");
+			return 0;
+		}
+
+
+		if (file_lid == iFileVerInfoLID) {
+			if (!NVM_GenerateFileVer(true)) {
+				return 0;
+			}
+			NVRAM_LOG("NVM_RestoreFromFiles_OneFile:Wrong file_lid Fail!!!\n");
+			return 0;
+		}
+
+		if (file_lid >= iCustomBeginLID) {
+			iRealFileLid = file_lid - iCustomBeginLID;
+		} else {
+			iRealFileLid = file_lid;
+		}
+
+	} else {
+		NVRAM_LOG("NVM_RestoreFromFiles_OneFile(MD): %s ++\n", filename);
+	}
+	/* malloc the buffer of title buf */
+	FileInfo = (File_Title *)malloc(sizeof(File_Title));
+	memset(FileInfo, 0, sizeof(File_Title));
+
+	iFileDesc_file = open(g_pcNVM_AllFile , O_RDWR);
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_file) {
+		/* Error handling */
+		NVBAK_LOG("NVM_RestoreFromFiles_OneFile cannot open file data\n");
+		free(FileInfo);
+		return false;
+	}
+
+        iFileDesc_map = open(g_pcNVM_AllMap, O_RDWR);
+
+	if ( iFileDesc_map < 0) {
+		NVBAK_LOG("NVM_RestoreFromFiles_OneFile cannot open allmap file\n");
+	}
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_map) {
+		/* Error handling */
+		NVBAK_LOG("NVM_RestoreFromFiles_OneFile cannot open map data\n");
+		close(iFileDesc_file);
+		free(FileInfo);
+		return false;
+	}
+
+	if (lseek(iFileDesc_map, sizeof(unsigned int) + 2 * sizeof(unsigned int), SEEK_SET) < 0){
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(FileInfo);
+		return false;
+	}
+	if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support())
+		iSize = (int)read(iFileDesc_map, &FileTitleInfo1, sizeof(File_Title_Header1));
+	else if (nvram_md5_support() && !nvram_evdo_support()
+	         && !nvram_ecci_c2k_support())
+		iSize = (int)read(iFileDesc_map, &FileTitleInfo2,
+		                  sizeof(File_Title_Header2) - 2 * sizeof(short
+		                          int)); //In order to align, minus 2*sizeof(short int)
+
+	else if (!nvram_md5_support() && nvram_evdo_support()
+	         && !nvram_ecci_c2k_support())
+		iSize = (int)read(iFileDesc_map, &FileTitleInfo3,
+		                  sizeof(File_Title_Header3) - 4 * sizeof(short
+		                          int)); //In order to align, minus 4*sizeof(short int)
+
+	else if (!nvram_md5_support() && !nvram_evdo_support()
+	         && !nvram_ecci_c2k_support())
+		iSize = (int)read(iFileDesc_map, &FileTitleInfo4,
+		                  sizeof(File_Title_Header4) - 4 * sizeof(short int));
+	else
+		iSize = (int)read(iFileDesc_map, &FileTitleInfo5, sizeof(File_Title_Header5));
+#if 0
+
+	NVBAK_LOG("File_Title_Header iApBootNum(%d)", FileTitleInfo1.iApBootNum);
+	NVBAK_LOG("File_Title_Header iApCleanNum(%d)", FileTitleInfo1.iApCleanNum);
+	NVBAK_LOG("File_Title_Header iMdBootNum(%d)", FileTitleInfo1.iMdBootNum);
+	NVBAK_LOG("File_Title_Header iMdCleanNum(%d)", FileTitleInfo1.iMdCleanNum);
+	NVBAK_LOG("File_Title_Header iMdImpntNum(%d)", FileTitleInfo1.iMdImpntNum);
+	NVBAK_LOG("File_Title_Header iMdCoreNum(%d)", FileTitleInfo1.iMdCoreNum);
+	NVBAK_LOG("File_Title_Header iMdDataNum(%d)", FileTitleInfo1.iMdDataNum);
+	if (nvram_platform_header_offset == 0) {
+		//Add for second modem for MT658*
+		NVBAK_LOG("File_Title_Header iMd2BootNum(%d)", FileTitleInfo1.iMd2BootNum);
+		NVBAK_LOG("File_Title_Header iMd2CleanNum(%d)", FileTitleInfo1.iMd2CleanNum);
+		NVBAK_LOG("File_Title_Header iMd2ImpntNum(%d)", FileTitleInfo1.iMd2ImpntNum);
+		//End of Comment
+		if (nvram_md5_support()) {
+			NVBAK_LOG("File_Title_Header iMd5BootNum(%d)", FileTitleInfo1.iMd5BootNum);
+			NVBAK_LOG("File_Title_Header iMd5CleanNum(%d)", FileTitleInfo1.iMd5CleanNum);
+			NVBAK_LOG("File_Title_Header iMd5ImpntNum(%d)", FileTitleInfo1.iMd5ImpntNum);
+		}
+	}
+	if (nvram_evdo_support())
+		NVBAK_LOG("File_Title_Header iViaNum(%d)", FileTitleInfo1.iViaNum);
+
+	if (nvram_platform_header_offset == 0) {
+
+		NVBAK_LOG("File_Title_Header iFileBufLen(%d)", FileTitleInfo1.iFileBufLen);
+		NVBAK_LOG("File_Title_Header BackupFlag(%d)", FileTitleInfo1.BackupFlag);
+	}
+
+	if (nvram_platform_header_offset != 0) {
+		NVBAK_LOG("File_Title_Header iFileBufLen(%d)",
+		          *((short int *) & (FileTitleInfo1.iFileBufLen) - nvram_platform_header_offset));
+		NVBAK_LOG("File_Title_Header BackupFlag(%d)",
+		          *((short int *) & (FileTitleInfo1.BackupFlag) - nvram_platform_header_offset));
+	}
+
+#endif
+	if (nvram_platform_header_offset != 0) {
+		fhs = fhs - nvram_platform_header_offset * 2;
+	}
+	switch (eBackupType) {
+	case APBOOT:
+		if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile APBOOT start !");
+			iFileNum = FileTitleInfo1.iApBootNum;
+			iFileTitleOffset = fhs;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile APBOOT start !");
+			iFileNum = FileTitleInfo2.iApBootNum;
+			iFileTitleOffset = fhs;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile APBOOT start !");
+			iFileNum = FileTitleInfo3.iApBootNum;
+			iFileTitleOffset = fhs;
+		} else if (!nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile APBOOT start !");
+			iFileNum = FileTitleInfo4.iApBootNum;
+			iFileTitleOffset = fhs;
+		} else {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile APBOOT start !");
+			iFileNum = FileTitleInfo5.iApBootNum;
+			iFileTitleOffset = fhs;
+		}
+		break;
+
+	case APCLN:
+		if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile APCLN start !");
+			iFileNum = FileTitleInfo1.iApCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum) * fis;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile APCLN start !");
+			iFileNum = FileTitleInfo2.iApCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum) * fis;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile APCLN start !");
+			iFileNum = FileTitleInfo3.iApCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum) * fis;
+		} else if (!nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile APCLN start !");
+			iFileNum = FileTitleInfo4.iApCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum) * fis;
+		} else {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile APCLN start !");
+			iFileNum = FileTitleInfo5.iApCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum) * fis;
+		}
+		break;
+
+	case MDBOOT:
+		if (nvram_md5_support() && nvram_evdo_support()  && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDBOOT start !");
+			iFileNum = FileTitleInfo1.iMdBootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum +
+			                          FileTitleInfo1.iApCleanNum) * fis;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDBOOT start !");
+			iFileNum = FileTitleInfo2.iMdBootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum +
+			                          FileTitleInfo2.iApCleanNum) * fis;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDBOOT start !");
+			iFileNum = FileTitleInfo3.iMdBootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum +
+			                          FileTitleInfo3.iApCleanNum) * fis;
+		} else if (!nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDBOOT start !");
+			iFileNum = FileTitleInfo4.iMdBootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum +
+			                          FileTitleInfo4.iApCleanNum) * fis;
+		} else {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDBOOT start !");
+			iFileNum = FileTitleInfo5.iMdBootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum +
+			                          FileTitleInfo5.iApCleanNum) * fis;
+		}
+
+		break;
+
+	case MDCLN:
+		if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDCLN start !");
+			iFileNum = FileTitleInfo1.iMdCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+			                          + FileTitleInfo1.iMdBootNum) * fis;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDCLN start !");
+			iFileNum = FileTitleInfo2.iMdCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+			                          + FileTitleInfo2.iMdBootNum) * fis;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDCLN start !");
+			iFileNum = FileTitleInfo3.iMdCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+			                          + FileTitleInfo3.iMdBootNum) * fis;
+		} else if (!nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDCLN start !");
+			iFileNum = FileTitleInfo4.iMdCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+			                          + FileTitleInfo4.iMdBootNum) * fis;
+		} else {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDCLN start !");
+			iFileNum = FileTitleInfo5.iMdCleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum) * fis;
+		}
+		break;
+
+	case MDIMP:
+		if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDIMP start !");
+			iFileNum = FileTitleInfo1.iMdImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+			                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum) * fis;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDIMP start !");
+			iFileNum = FileTitleInfo2.iMdImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+			                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum) * fis;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDIMP start !");
+			iFileNum = FileTitleInfo3.iMdImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+			                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum) * fis;
+		}
+
+		else if (!nvram_md5_support() && !nvram_evdo_support()
+		         && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDIMP start !");
+			iFileNum = FileTitleInfo4.iMdImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+			                          + FileTitleInfo4.iMdBootNum + FileTitleInfo4.iMdCleanNum) * fis;
+		} else {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDIMP start !");
+			iFileNum = FileTitleInfo5.iMdImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum) * fis;
+		}
+		break;
+
+	case MDCOR:
+		if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDCOR start !");
+			iFileNum = FileTitleInfo1.iMdCoreNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+			                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+			                          FileTitleInfo1.iMdImpntNum) * fis;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDCOR start !");
+			iFileNum = FileTitleInfo2.iMdCoreNum;
+			iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+			                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+			                          FileTitleInfo2.iMdImpntNum) * fis;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDCOR start !");
+			iFileNum = FileTitleInfo3.iMdCoreNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+			                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+			                          FileTitleInfo3.iMdImpntNum) * fis;
+		}
+
+		else if (!nvram_md5_support() && !nvram_evdo_support()
+		         && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDCOR start !");
+			iFileNum = FileTitleInfo4.iMdCoreNum;
+			iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+			                          + FileTitleInfo4.iMdBootNum + FileTitleInfo4.iMdCleanNum +
+			                          FileTitleInfo4.iMdImpntNum) * fis;
+		} else {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDCOR start !");
+			iFileNum = FileTitleInfo5.iMdCoreNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum) * fis;
+		}
+		break;
+
+	case MDDATA:
+		if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDDATA start !");
+			iFileNum = FileTitleInfo1.iMdDataNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+			                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+			                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum) * fis;
+		} else if (nvram_md5_support() && !nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDDATA start !");
+			iFileNum = FileTitleInfo2.iMdDataNum;
+			iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+			                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+			                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum) * fis;
+		} else if (!nvram_md5_support() && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDDATA start !");
+			iFileNum = FileTitleInfo3.iMdDataNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+			                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+			                          FileTitleInfo3.iMdImpntNum + FileTitleInfo3.iMdCoreNum) * fis;
+		}
+
+		else if (!nvram_md5_support() && !nvram_evdo_support()
+		         && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDDATA start !");
+			iFileNum = FileTitleInfo4.iMdDataNum;
+			iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+			                          + FileTitleInfo4.iMdBootNum + FileTitleInfo4.iMdCleanNum +
+			                          FileTitleInfo4.iMdImpntNum + FileTitleInfo4.iMdCoreNum) * fis;
+		} else {
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile MDDATA start !");
+			iFileNum = FileTitleInfo5.iMdDataNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum) * fis;
+		}
+		break;
+
+	//Add for second modem for MT658*
+	case MD2BOOT:
+
+		if (nvram_platform_header_offset == 0) {
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2BOOT start !");
+				iFileNum = FileTitleInfo1.iMd2BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+				                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+				                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+				                          FileTitleInfo1.iMdDataNum) * fis;
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2BOOT start !");
+				iFileNum = FileTitleInfo2.iMd2BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+				                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+				                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum +
+				                          FileTitleInfo2.iMdDataNum) * fis;
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2BOOT start !");
+				iFileNum = FileTitleInfo3.iMd2BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+				                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+				                          FileTitleInfo3.iMdImpntNum + FileTitleInfo3.iMdCoreNum +
+				                          FileTitleInfo3.iMdDataNum) * fis;
+			}
+
+			else if (!nvram_md5_support() && !nvram_evdo_support()
+			         && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2BOOT start !");
+				iFileNum = FileTitleInfo4.iMd2BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+				                          + FileTitleInfo4.iMdBootNum + FileTitleInfo4.iMdCleanNum +
+				                          FileTitleInfo4.iMdImpntNum + FileTitleInfo4.iMdCoreNum +
+				                          FileTitleInfo4.iMdDataNum) * fis;
+			} else {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2BOOT start !");
+				iFileNum = FileTitleInfo5.iMd2BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+				                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+				                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+				                          FileTitleInfo5.iMdDataNum) * fis;
+			}
+		}
+		break;
+
+	case MD2CLN:
+		if (nvram_platform_header_offset == 0) {
+
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2CLN start !");
+				iFileNum = FileTitleInfo1.iMd2CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+				                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+				                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+				                          FileTitleInfo1.iMdDataNum + FileTitleInfo1.iMd2BootNum) * fis;
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2CLN start !");
+				iFileNum = FileTitleInfo2.iMd2CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+				                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+				                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum +
+				                          FileTitleInfo2.iMdDataNum + FileTitleInfo2.iMd2BootNum) * fis;
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2CLN start !");
+				iFileNum = FileTitleInfo3.iMd2CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+				                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+				                          FileTitleInfo3.iMdImpntNum + FileTitleInfo3.iMdCoreNum +
+				                          FileTitleInfo3.iMdDataNum + FileTitleInfo3.iMd2BootNum) * fis;
+			}
+
+			else if (!nvram_md5_support() && !nvram_evdo_support()
+			         && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2CLN start !");
+				iFileNum = FileTitleInfo4.iMd2CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+				                          + FileTitleInfo4.iMdBootNum + FileTitleInfo4.iMdCleanNum +
+				                          FileTitleInfo4.iMdImpntNum + FileTitleInfo4.iMdCoreNum +
+				                          FileTitleInfo4.iMdDataNum + FileTitleInfo4.iMd2BootNum) * fis;
+			} else {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2CLN start !");
+				iFileNum = FileTitleInfo5.iMd2CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+				                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+				                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+				                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum) * fis;
+			}
+		}
+		break;
+
+	case MD2IMP:
+		if (nvram_platform_header_offset == 0) {
+			if (nvram_md5_support() && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2IMP start !");
+				iFileNum = FileTitleInfo1.iMd2ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+				                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+				                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+				                          FileTitleInfo1.iMdDataNum + FileTitleInfo1.iMd2BootNum +
+				                          FileTitleInfo1.iMd2CleanNum) * fis;
+			} else if (nvram_md5_support() && !nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2IMP start !");
+				iFileNum = FileTitleInfo2.iMd2ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+				                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+				                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum +
+				                          FileTitleInfo2.iMdDataNum + FileTitleInfo2.iMd2BootNum +
+				                          FileTitleInfo2.iMd2CleanNum) * fis;
+			} else if (!nvram_md5_support() && nvram_evdo_support()
+			           && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2IMP start !");
+				iFileNum = FileTitleInfo3.iMd2ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+				                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+				                          FileTitleInfo3.iMdImpntNum + FileTitleInfo3.iMdCoreNum +
+				                          FileTitleInfo3.iMdDataNum + FileTitleInfo3.iMd2BootNum +
+				                          FileTitleInfo3.iMd2CleanNum) * fis;
+			}
+
+			else if (!nvram_md5_support() && !nvram_evdo_support()
+			         && !nvram_ecci_c2k_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2IMP start !");
+				iFileNum = FileTitleInfo4.iMd2ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo4.iApBootNum + FileTitleInfo4.iApCleanNum
+				                          + FileTitleInfo4.iMdBootNum + FileTitleInfo4.iMdCleanNum +
+				                          FileTitleInfo4.iMdImpntNum + FileTitleInfo4.iMdCoreNum +
+				                          FileTitleInfo4.iMdDataNum + FileTitleInfo4.iMd2BootNum +
+				                          FileTitleInfo4.iMd2CleanNum) * fis;
+			} else {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD2IMP start !");
+				iFileNum = FileTitleInfo5.iMd2ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+				                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+				                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+				                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+				                          FileTitleInfo5.iMd2CleanNum) * fis;
+			}
+		}
+		break;
+	//End of Comment
+
+	case MD5BOOT:
+		if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		        && !nvram_ecci_c2k_support()) {
+			if (nvram_evdo_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD5BOOT start !");
+				iFileNum = FileTitleInfo1.iMd5BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+				                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+				                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+				                          FileTitleInfo1.iMdDataNum + FileTitleInfo1.iMd2BootNum +
+				                          FileTitleInfo1.iMd2CleanNum + FileTitleInfo1.iMd2ImpntNum) * fis;
+			} else {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD5BOOT start !");
+				iFileNum = FileTitleInfo2.iMd5BootNum;
+				iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+				                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+				                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum +
+				                          FileTitleInfo2.iMdDataNum + FileTitleInfo2.iMd2BootNum +
+				                          FileTitleInfo2.iMd2CleanNum + FileTitleInfo2.iMd2ImpntNum) * fis;
+			}
+		} else if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		           && nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MD5BOOT start !");
+			iFileNum = FileTitleInfo5.iMd5BootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+			                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+			                          FileTitleInfo5.iMd2CleanNum + FileTitleInfo5.iMd2ImpntNum) * fis;
+		}
+		break;
+
+	case MD5CLN:
+		if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		        && !nvram_ecci_c2k_support()) {
+			if (nvram_evdo_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD5CLN start !");
+				iFileNum = FileTitleInfo1.iMd5CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+				                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+				                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+				                          FileTitleInfo1.iMdDataNum + FileTitleInfo1.iMd2BootNum +
+				                          FileTitleInfo1.iMd2CleanNum + FileTitleInfo1.iMd2ImpntNum +
+				                          FileTitleInfo1.iMd5BootNum) * fis;
+			} else {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD5CLN start !");
+				iFileNum = FileTitleInfo2.iMd5CleanNum;
+				iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+				                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+				                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum +
+				                          FileTitleInfo2.iMdDataNum + FileTitleInfo2.iMd2BootNum +
+				                          FileTitleInfo2.iMd2CleanNum + FileTitleInfo2.iMd2ImpntNum +
+				                          FileTitleInfo2.iMd5BootNum) * fis;
+			}
+		} else if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		           && nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MD5CLN start !");
+			iFileNum = FileTitleInfo5.iMd5CleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+			                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+			                          FileTitleInfo5.iMd2CleanNum + FileTitleInfo5.iMd2ImpntNum +
+			                          FileTitleInfo5.iMd5BootNum) * fis;
+		}
+		break;
+
+	case MD5IMP:
+		if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		        && !nvram_ecci_c2k_support()) {
+			if (nvram_evdo_support()) {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD5IMP start !");
+				iFileNum = FileTitleInfo1.iMd5ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+				                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+				                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+				                          FileTitleInfo1.iMdDataNum + FileTitleInfo1.iMd2BootNum +
+				                          FileTitleInfo1.iMd2CleanNum + FileTitleInfo1.iMd2ImpntNum +
+				                          FileTitleInfo1.iMd5BootNum + FileTitleInfo1.iMd5CleanNum) * fis;
+			} else {
+				NVBAK_LOG("FileOp_RestoreFromFiles MD5IMP start !");
+				iFileNum = FileTitleInfo2.iMd5ImpntNum;
+				iFileTitleOffset = fhs + (FileTitleInfo2.iApBootNum + FileTitleInfo2.iApCleanNum
+				                          + FileTitleInfo2.iMdBootNum + FileTitleInfo2.iMdCleanNum +
+				                          FileTitleInfo2.iMdImpntNum + FileTitleInfo2.iMdCoreNum +
+				                          FileTitleInfo2.iMdDataNum + FileTitleInfo2.iMd2BootNum +
+				                          FileTitleInfo2.iMd2CleanNum + FileTitleInfo2.iMd2ImpntNum +
+				                          FileTitleInfo2.iMd5BootNum + FileTitleInfo2.iMd5CleanNum) * fis;
+			}
+		} else if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		           && nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MD5IMP start !");
+			iFileNum = FileTitleInfo5.iMd5ImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+			                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+			                          FileTitleInfo5.iMd2CleanNum + FileTitleInfo5.iMd2ImpntNum +
+			                          FileTitleInfo5.iMd5BootNum + FileTitleInfo5.iMd5CleanNum) * fis;
+		}
+
+		break;
+	case VIA:
+		if (nvram_platform_header_offset == 0 && nvram_md5_support()
+		        && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles VIA start !");
+			iFileNum = FileTitleInfo1.iViaNum;
+			iFileTitleOffset = fhs + (FileTitleInfo1.iApBootNum + FileTitleInfo1.iApCleanNum
+			                          + FileTitleInfo1.iMdBootNum + FileTitleInfo1.iMdCleanNum +
+			                          FileTitleInfo1.iMdImpntNum + FileTitleInfo1.iMdCoreNum +
+			                          FileTitleInfo1.iMdDataNum + FileTitleInfo1.iMd2BootNum +
+			                          FileTitleInfo1.iMd2CleanNum + FileTitleInfo1.iMd2ImpntNum +
+			                          FileTitleInfo1.iMd5BootNum + FileTitleInfo1.iMd5CleanNum +
+			                          FileTitleInfo1.iMd5ImpntNum) * fis;
+		} else if (nvram_platform_header_offset == 0 && !nvram_md5_support()
+		           && nvram_evdo_support() && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles VIA start !");
+			iFileNum = FileTitleInfo3.iViaNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+			                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+			                          FileTitleInfo3.iMdImpntNum + FileTitleInfo3.iMdCoreNum +
+			                          FileTitleInfo3.iMdDataNum + FileTitleInfo3.iMd2BootNum +
+			                          FileTitleInfo3.iMd2CleanNum + FileTitleInfo3.iMd2ImpntNum) * fis;
+		} else if (nvram_platform_header_offset != 0 && nvram_evdo_support()
+		           && !nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles VIA start !");
+			iFileNum = FileTitleInfo3.iViaNum;
+			iFileTitleOffset = fhs + (FileTitleInfo3.iApBootNum + FileTitleInfo3.iApCleanNum
+			                          + FileTitleInfo3.iMdBootNum + FileTitleInfo3.iMdCleanNum +
+			                          FileTitleInfo3.iMdImpntNum + FileTitleInfo3.iMdCoreNum +
+			                          FileTitleInfo3.iMdDataNum) * fis;
+		} else
+			break;
+		break;
+
+	case MD3BOOT:
+		if (nvram_platform_header_offset == 0 && nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MD3BOOT start !");
+			iFileNum = FileTitleInfo5.iMd3BootNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+			                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+			                          FileTitleInfo5.iMd2CleanNum + FileTitleInfo5.iMd2ImpntNum +
+			                          FileTitleInfo5.iMd5BootNum + FileTitleInfo5.iMd5CleanNum +
+			                          FileTitleInfo5.iMd5ImpntNum) * fis;
+		}
+		break;
+
+	case MD3CLN:
+		if (nvram_platform_header_offset == 0 && nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MD3CLN start !");
+			iFileNum = FileTitleInfo5.iMd3CleanNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+			                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+			                          FileTitleInfo5.iMd2CleanNum + FileTitleInfo5.iMd2ImpntNum +
+			                          FileTitleInfo5.iMd5BootNum + FileTitleInfo5.iMd5CleanNum +
+			                          FileTitleInfo5.iMd5ImpntNum + FileTitleInfo5.iMd3BootNum) * fis;
+		}
+		break;
+
+
+	case MD3IMP:
+		if (nvram_platform_header_offset == 0 && nvram_ecci_c2k_support()) {
+			NVBAK_LOG("FileOp_RestoreFromFiles MD3IMP start !");
+			iFileNum = FileTitleInfo5.iMd3ImpntNum;
+			iFileTitleOffset = fhs + (FileTitleInfo5.iApBootNum + FileTitleInfo5.iApCleanNum
+			                          + FileTitleInfo5.iMdBootNum + FileTitleInfo5.iMdCleanNum +
+			                          FileTitleInfo5.iMdImpntNum + FileTitleInfo5.iMdCoreNum +
+			                          FileTitleInfo5.iMdDataNum + FileTitleInfo5.iMd2BootNum +
+			                          FileTitleInfo5.iMd2CleanNum + FileTitleInfo5.iMd2ImpntNum +
+			                          FileTitleInfo5.iMd5BootNum + FileTitleInfo5.iMd5CleanNum +
+			                          FileTitleInfo5.iMd5ImpntNum + FileTitleInfo5.iMd3BootNum +
+			                          FileTitleInfo5.iMd3CleanNum) * fis;
+		}
+		break;
+
+	case ALL:
+		break;
+	default:
+		close(iFileDesc_map);
+		close(iFileDesc_file);
+		free(FileInfo);
+		return false;
+		//break;
+	}
+
+	iRet = lseek(iFileDesc_map, iFileTitleOffset, SEEK_SET);
+
+	//restore all files one by one according to the fout.txt and fTitleInfo.txt
+	//do
+	//avoid the file num of some folder is zero
+	while (iFileNum > 0  && iFileNum < MAX_FILENUM) {
+		iSize = (int)read(iFileDesc_map, FileInfo, sizeof(File_Title));
+		if ((filename == NULL) && (file_lid >= 0) && (pCfgFielTable != NULL)) {
+			if (strcmp(FileInfo->cFileName, pCfgFielTable[iRealFileLid].cFileName) != 0) {
+				--iFileNum;
+				continue;
+			}
+		} else if ((filename != NULL) && (strncmp("/nvdata", filename, 7) == 0)) {
+			NVBAK_LOG("filename+7 %s\n", filename + 7);
+			NVBAK_LOG("FileInfo->cFileName + 11 %s\n", FileInfo->cFileName + 11);
+
+			if (strcmp(FileInfo->cFileName + 11, filename + 7) != 0) { //compare string after /mnt/vendor/nvdata and /nvdata
+				--iFileNum;
+				continue;
+			}
+		} else if (filename != NULL){
+			if (strcmp(FileInfo->cFileName, filename) != 0) {
+				--iFileNum;
+				continue;
+			}
+		} else {
+		    NVBAK_LOG("cFileName or filename == NULL\n");
+		}
+		*find_flag = 1;
+		iFileNum = 0;
+		NVBAK_LOG("FileInfo: %s\n", FileInfo->cFileName);
+		if ((filename == NULL) && (file_lid >= 0) && (pCfgFielTable != NULL)) {
+			filesizeintable = pCfgFielTable[iRealFileLid].i4RecNum *
+			                  pCfgFielTable[iRealFileLid].i4RecSize;
+			NVBAK_LOG("FileInfo: startaddr(0x%x) size(0x%x) size in table(0x%x).\n",
+			          FileInfo->FielStartAddr, FileInfo->Filesize, filesizeintable);
+			if (FileInfo->Filesize != filesizeintable + 2) {
+				NVBAK_LOG("Restored file size error !");
+				close(iFileDesc_map);
+				close(iFileDesc_file);
+				free(FileInfo);
+				return false;
+			}
+		}
+        NVBAK_LOG("FileInfo->Filesize=%d,INT_MAX=%d\n",FileInfo->Filesize,INT_MAX);
+        if(FileInfo->Filesize <=0 || FileInfo->Filesize >=INT_MAX) {
+            NVBAK_LOG("FileInfo->Filesize overflow\n");
+            close(iFileDesc_map);
+            close(iFileDesc_file);
+            free(FileInfo);
+            return false;
+        }
+		buf = (char *)malloc(FileInfo->Filesize);
+
+		//read the data and write to the file
+		iRet = lseek(iFileDesc_file, FileInfo->FielStartAddr, SEEK_SET);
+		if (iRet == -1) {
+			NVBAK_LOG("lseek fail !");
+			free(buf);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(FileInfo);
+			return false;
+		}
+		iSize = (int)read(iFileDesc_file, buf, FileInfo->Filesize);
+		if (iSize != FileInfo->Filesize) {
+			NVBAK_LOG("read fail !iSize=%d,FileInfo->Filesize=%d\n", iSize,
+			          FileInfo->Filesize);
+			free(buf);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(FileInfo);
+			return false;
+		}
+
+		iFileDesc = open_file_with_dirs(FileInfo->cFileName, O_CREAT | O_TRUNC | O_RDWR,
+		                                S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP );
+
+		if (INVALID_HANDLE_VALUE == iFileDesc) {
+			/* Error handling */
+			NVBAK_LOG("NVM_RestoreFromFiles_OneFile cannot create %s\n",
+			          FileInfo->cFileName);
+
+			//added
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(buf);
+			free(FileInfo);
+			return false;
+		}
+		iSize = (int)write(iFileDesc, buf, FileInfo->Filesize);
+		if (iSize != FileInfo->Filesize) {
+			NVBAK_LOG("write fail !iSize=%d,FileInfo->Filesize=%d\n", iSize,
+			          FileInfo->Filesize);
+			close(iFileDesc);
+			free(buf);
+			close(iFileDesc_map);
+			close(iFileDesc_file);
+			free(FileInfo);
+			return false;
+		}
+		close(iFileDesc);
+		free(buf);
+		if ((filename == NULL) && (file_lid >= 0)) {
+
+#ifndef MTK_BASIC_PACKAGE
+			if (!NVM_Enc_Dnc_File(file_lid, DECODE)) {
+				NVRAM_LOG("Dnc fail!!!\n");
+				close(iFileDesc_map);
+				close(iFileDesc_file);
+				free(FileInfo);
+				return false;
+			}
+#endif
+
+#if 0
+			if (NVM_ProtectDataFile(file_lid, true) == 1) {
+				NVRAM_LOG("NVM_RestoreFromFiles_OneFile ProtectDataFile Success!!\n");
+			} else {
+				NVRAM_LOG("NVM_RestoreFromFiles_OneFile ProtectDataFile SET Fail!!\n");
+				return false;
+			}
+#endif
+			if (NVM_CheckFile(FileInfo->cFileName)
+			        && (NVM_CheckFileSize(iRealFileLid, pCfgFielTable) != -1)) {
+				NVRAM_LOG("NVM_RestoreFromFiles_OneFile ProtectDataFile Success!!\n");
+			} else {
+				NVRAM_LOG("NVM_RestoreFromFiles_OneFile ProtectDataFile Fail!!\n");
+				close(iFileDesc_map);
+				close(iFileDesc_file);
+				free(FileInfo);
+				return false;
+			}
+		}
+		bRet = true;
+		break;
+	}
+
+	close(iFileDesc_map);
+	close(iFileDesc_file);
+	free(FileInfo);
+	return bRet;
+}
+
+bool NVM_CheckData_OneFile(int file_lid, const char * filename) {
+	bool bRet = false;
+	int eBackupType;
+	unsigned int ulSavedCheckSum;
+	unsigned int ulCheckSum;
+	struct stat st;
+	unsigned int iFileSize;
+	bool find_flag = 0;
+	int iFileMask[ALL];
+	memset(iFileMask, 0, (ALL * (sizeof(int))));
+	if (!nvram_md5_support() && !nvram_evdo_support()) {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+		iFileMask[10] = 1;
+		iFileMask[11] = 1;
+		iFileMask[12] = 1;
+		iFileMask[13] = 1;
+	} else if (!nvram_md5_support() && nvram_evdo_support()) {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+		iFileMask[10] = 1;
+		iFileMask[11] = 1;
+		iFileMask[12] = 1;
+	} else if (nvram_md5_support() && !nvram_evdo_support()) {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+		iFileMask[13] = 1;
+	} else {
+		iFileMask[5] = 1;
+		iFileMask[6] = 1;
+	}
+	if (!nvram_ecci_c2k_support()) {
+		iFileMask[14] = 1;
+		iFileMask[15] = 1;
+		iFileMask[16] = 1;
+	}
+
+	NVBAK_LOG("[NVM_CheckData_OneFile] start !");
+
+	if (!NVM_GetCheckSum()) {
+		NVBAK_LOG("[NVM_CheckData_OneFile] GetCheckSum Fail !");
+		return false;
+	}
+	ulSavedCheckSum = stBackupFileInfo.ulCheckSum;
+	ulCheckSum = NVM_ComputeCheckSum();
+	NVBAK_LOG("ulCheckSun:%u\n", ulCheckSum);
+	if (stat(g_pcNVM_AllFile, &st) < 0) {
+		NVBAK_LOG("Error NVM_CheckData_OneFile stat \n");
+		return false;
+	}
+	iFileSize = st.st_size;
+	NVBAK_LOG("iFileSize:%d\n", iFileSize);
+	ulCheckSum ^= iFileSize;
+
+	NVBAK_LOG("NVM_CheckData_OneFile:%x,%x", ulSavedCheckSum, ulCheckSum);
+	if (!NVM_CompareCheckSum(ulSavedCheckSum, ulCheckSum)) {
+		NVBAK_LOG("check sum not match!");
+		return false;
+	}
+
+	for (eBackupType = APBOOT; eBackupType < ALL; eBackupType++) {
+		if (iFileMask[eBackupType] == 1)
+			continue;
+		if (find_flag == 0)
+			bRet = NVM_RestoreFromFiles_OneFile(eBackupType, file_lid, filename,
+			                                    &find_flag);
+		else
+			break;
+	}
+
+	NVBAK_LOG("[NVM_CheckData_OneFile] end !");
+	return bRet;
+}
+
+bool NVM_RestoreFromBinRegion_OneFile(int file_lid, const char * filename) {
+	int iFileDesc_file, iFileDesc_map, fd, iResult, iBlockNum, iFileDesc_backupflag;
+	unsigned int iMapFileSize, iDatFileSize, iBlockSize, iPartitionSize,
+	         iAPBackupFileNum,iWriteSize;
+//   int BinRegionBlockTotalNum,NvRamBlockNum,forDMBlockNum=2;
+	unsigned short iMDBackupFileNum;
+	bool bRet = true;
+	char cMtdDevName[128] = {0};
+	char *tempBuffer = NULL;
+	char *tempBitmap1 = NULL;
+	char *tempBitmap2 = NULL;
+	int i, j, pos = 0, flag = 0;
+	bool bSuccessFound = false;
+	struct mtd_info_user info;
+	NVBAK_LOG("[NVRAM]:NVM_RestoreFromBinRegion_OneFile\n");
+	//int iBackup_Partition=get_partition_numb("nvram");
+
+	(void)(iFileDesc_backupflag);
+
+	//fix nvram layout issue , reassgined block numerbers by different platform
+	if (NVM_Init() < 0) {
+		NVBAK_LOG("[NVRAM]:NVM_RestoreFromBinRegion_OneFile--NVM_Init fail !!!\n");
+		return false;
+	}
+
+	if ((file_lid < 0) && (filename == NULL)) {
+		NVBAK_LOG("[NVRAM]:NVM_RestoreFromBinRegion_OneFile bad arg\n");
+		return false;
+	}
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+        //strcpy(cMtdDevName, g_NVRAM_BACKUP_DEVICE);
+        snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_BACKUP_DEVICE);
+	NVBAK_LOG("[NVRAM]:cMtdDevName:%s\n", cMtdDevName);
+
+	if (!NVM_GetDeviceInfo(cMtdDevName, &info)) {
+		NVBAK_LOG("[NVRAM]:NVM_RestoreFromBinRegion_OneFile get device info fail!!!\n");
+	}
+
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVBAK_LOG("[NVRAM]:mtd open error %s\r\n", (char*)strerror(errno));
+		return false;
+	}
+	iBlockSize = info.erasesize;
+	iPartitionSize = info.size;
+   iWriteSize = info.writesize;
+
+	if (nvram_platform_layout_version == 0)
+		BinRegionBlockTotalNum = info.size / iBlockSize - nvram_platform_log_block -
+		                         nvram_platform_resv_block;
+	else if (nvram_platform_layout_version == 1)
+		BinRegionBlockTotalNum = info.size / iBlockSize;
+	else {
+		NVBAK_LOG("[NVRAM]: invalid nvram layout version %d\r\n",
+		          nvram_platform_layout_version);
+		close(fd);
+		return false;
+	}
+
+	NvRamBlockNum = BinRegionBlockTotalNum - nvram_platform_DM_block;
+
+	tempBuffer = (char*)malloc(iBlockSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		return false;
+	}
+
+	if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0 || read(fd, tempBuffer, iBlockSize) != iBlockSize) {
+		NVBAK_LOG("[NVRAM]: lseek or read error. (errno=%d)", errno);
+		free(tempBuffer);
+		close(fd);
+		return false;
+	}
+
+	iMapFileSize = *((unsigned int*)tempBuffer); // get the mapfile
+	iDatFileSize = *((unsigned int*)(tempBuffer + 4));
+	NVBAK_LOG("[NVRAM]: map file:%d,dat file:%d\n", iMapFileSize, iDatFileSize);
+	if(iMapFileSize == 0 || iMapFileSize == 0xFFFFFFFF) {
+		NVBAK_LOG("[NVRAM]:map file size error\r\n");
+		free(tempBuffer);
+		close(fd);
+		return false;
+	}
+	if(iDatFileSize == 0 || iDatFileSize == 0xFFFFFFFF) {
+		NVBAK_LOG("[NVRAM]:data file size error\r\n");
+		free(tempBuffer);
+		close(fd);
+		return false;
+	}
+	unsigned int iMemSize;
+	int iReservePos = 0;
+	int iReserveBlockCount = 0;
+	if ((iMapFileSize + 3 * sizeof(unsigned int)) % iWriteSize != 0)
+		iMemSize = (((iMapFileSize + 3 * sizeof(unsigned int)) / iWriteSize) + 1) *
+		           iWriteSize;
+	else
+		iMemSize = iMapFileSize + 3 * sizeof(unsigned
+		                                     int); //mapfile size, datfile size, cleanboot fla
+	NVBAK_LOG("[NVRAM Restore - heli]:map file size:%d\n", iMemSize);
+
+	if ( iMemSize > iBlockSize ) { // > 180KB
+		iReservePos = 1;
+		iReserveBlockCount = 2;
+	} else { // < 128KB
+		iReservePos = 0;
+		iReserveBlockCount = 1;
+	}
+
+	free(tempBuffer);
+	tempBuffer = NULL;
+	tempBuffer = (char*)malloc(iBlockSize *
+	                           iReserveBlockCount); // for 128KB and 256KB
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		return false;
+	}
+	iBlockNum = NvRamBlockNum;
+	NVBAK_LOG("[NVRAM]:iBlockNum:%d\n", iBlockNum);
+
+	tempBitmap1 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap1 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap1 Fail!!\r\n");
+		free(tempBuffer);
+		close(fd);
+		return false;
+	}
+	tempBitmap2 = (char *)malloc(NvRamBlockNum);
+	if (tempBitmap2 == NULL) {
+		NVBAK_LOG("[NVRAM]:malloc tempBitmap2 Fail!!\r\n");
+		free(tempBuffer);
+		close(fd);
+		free(tempBitmap1);
+		return false;
+	}
+
+	int iBitmapFlag = 0;
+	while (iBlockNum > 0) {
+		flag = 0;
+		iBlockNum--;
+		NVBAK_LOG("[NVRAM]:iBlockNum:%d\n", iBlockNum);
+		if (lseek(fd, (iBlockNum - iReservePos)*iBlockSize, SEEK_SET) < 0) {
+			NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+			close(fd);
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		iResult = read(fd, tempBuffer, iBlockSize);
+		NVBAK_LOG("[NVRAM]:read:%d\n", iResult);
+		if (iResult <= 0) {
+			NVBAK_LOG("[NVRAM]:read size error\r\n");
+			close(fd);
+			free(tempBuffer);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		memcpy(tempBitmap1, tempBuffer, NvRamBlockNum * sizeof(char));
+		memcpy(tempBitmap2, tempBuffer + NvRamBlockNum * sizeof(char),
+		       NvRamBlockNum * sizeof(char));
+		for (i = 0; i < NvRamBlockNum; i++) {
+			if (tempBitmap1[i] != tempBitmap2[i]) {
+				NVBAK_LOG("[NVRAM]:1i:%d,1:%d,2:%d\n", i, tempBitmap1[i], tempBitmap2[i]);
+				flag = 1;
+				break;
+			}
+		}
+		if (flag)
+			continue;
+		memcpy(tempBitmap2, tempBuffer + 2 * NvRamBlockNum * sizeof(char),
+		       NvRamBlockNum * sizeof(char));
+		for (i = 0; i < NvRamBlockNum; i++) {
+			if (tempBitmap1[i] != tempBitmap2[i]) {
+				NVBAK_LOG("[NVRAM]:2i:%d,1:%d,2:%d\n", i, tempBitmap1[i], tempBitmap2[i]);
+				flag = 1;
+				break;
+			}
+		}
+		if (flag)
+			continue;
+		memcpy(&iBitmapFlag, tempBuffer + 3 * NvRamBlockNum * sizeof(char),
+		       sizeof(unsigned int));
+		if (iBitmapFlag != (int)BitmapFlag) {
+			NVBAK_LOG("[NVRAM]:iBitMapFlag:%d,BitMapFlag:%d\n", iBitmapFlag, BitmapFlag);
+			continue;
+		}
+		bSuccessFound = true;
+		break;
+	}
+	if (!bSuccessFound) {
+		NVBAK_LOG("[NVRAM]:can not find bad block bit map\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	#if 0
+	for (i = 0; i < NvRamBlockNum; i++) {
+		NVBAK_LOG("[NVRAM_Bitmap]:Block%d,%d\n", i, tempBitmap1[i]);
+	}
+	#endif
+	for (i = 0; i < iBlockNum; i++) {
+		if (tempBitmap1[i] == 0) {
+			pos = i;
+			break;
+		}
+	}
+	if (i == iBlockNum) {
+		NVBAK_LOG("[NVRAM]:can not find map file\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	if (lseek(fd, pos * iBlockSize, SEEK_SET) < 0) {
+		NVBAK_LOG("[NVRAM]: lseek error. (errno=%d)", errno);
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+   iResult = read(fd, tempBuffer,
+				  iBlockSize * iReserveBlockCount); // if mapfile > 128KB read 2*128KB
+	NVBAK_LOG("[NVRAM]:map file read size:%d\n", iResult);
+	if (iResult <= 0) {
+		NVBAK_LOG("[NVRAM]:read size error\r\n");
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	iMapFileSize = *((unsigned int*)tempBuffer);
+	iDatFileSize = *((unsigned int*)(tempBuffer + 4));
+	iAPBackupFileNum = *((unsigned int*)(tempBuffer + 3 * sizeof(
+	        unsigned int) + iMapFileSize));
+	iMDBackupFileNum = *((unsigned short*)(tempBuffer + 3 * sizeof(
+	        unsigned int) + iMapFileSize + sizeof(unsigned int)));
+	NVBAK_LOG("[NVRAM]: map file:%d,dat file:%d\n", iMapFileSize, iDatFileSize);
+	/* NVBAK_LOG("[NVRAM]: AP backup file num:%d,MD backup file num:%d\n",iAPBackupFileNum,iMDBackupFileNum);
+	if(iAPBackupFileNum != 0 ){
+		iFileDesc_backupflag = open(g_pcNVM_BackFlag , O_TRUNC|O_CREAT|O_RDWR, S_IRUSR|S_IWUSR| S_IRGRP |S_IWGRP);
+		if(INVALID_HANDLE_VALUE == iFileDesc_backupflag)
+			{
+	    		NVBAK_LOG("[NVRAM]: cannot open backup file num data\n");
+				close(iFileDesc_backupflag);
+	    		close(fd);
+				free(tempBuffer);
+				free(tempBitmap1);
+				free(tempBitmap2);
+	    		return false;
+			}
+		result=write(iFileDesc_backupflag,&iAPBackupFileNum,sizeof(unsigned int));
+		if(result!=(int)sizeof(unsigned int))
+		{
+	  		NVBAK_LOG("[NVRAM]:map file write error\r\n");
+	  		close(fd);
+	  		free(tempBuffer);
+	  		close(iFileDesc_backupflag);
+			free(tempBitmap1);
+			free(tempBitmap2);
+	  		return false;
+			}
+		}*/
+	iFileDesc_file = open(g_pcNVM_AllFile , O_TRUNC | O_CREAT | O_RDWR,
+	                      S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+	iFileDesc_map = open(g_pcNVM_AllMap, O_TRUNC | O_CREAT | O_RDWR,
+	                     S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_file) {
+		NVBAK_LOG("[NVRAM]: cannot open file data\n");
+		if (iFileDesc_map != INVALID_HANDLE_VALUE)
+			close(iFileDesc_map);
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+
+	if (INVALID_HANDLE_VALUE == iFileDesc_map) {
+		NVBAK_LOG("[NVRAM]: cannot open map data\n");
+		close(iFileDesc_file);
+		close(fd);
+		free(tempBuffer);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+
+	iResult = write(iFileDesc_map, tempBuffer + 3 * sizeof(unsigned int),
+	                iMapFileSize);
+	if (iResult != (int)iMapFileSize) {
+		NVBAK_LOG("[NVRAM]:map file write error\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+
+	free(tempBuffer);
+	tempBuffer = NULL;
+	if (iDatFileSize % iBlockSize != 0)
+		tempBuffer = (char*)malloc((iDatFileSize / iBlockSize + 1) * iBlockSize);
+	else
+		tempBuffer = (char*)malloc(iDatFileSize);
+	if (tempBuffer == NULL) {
+		NVBAK_LOG("[NVRAM]:memory malloc error\r\n");
+		close(fd);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	int iFreeBlockNum = 0;
+	for (i = pos + 1 + iReservePos; i < iBlockNum;
+	        i++) { // heli if > 126KB need pos + 2
+   	  if(tempBitmap1[i]==0)
+	  	{
+			pos = i;
+			break;
+		}
+	}
+	if (i == iBlockNum) {
+		NVBAK_LOG("[NVRAM]:there are not enough good blocks for read nvram data file\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	} else {
+		for (; i < iBlockNum; i++) {
+			if (tempBitmap1[i] == 0)
+				iFreeBlockNum++;
+		}
+		if ((iFreeBlockNum * iBlockSize) < (iDatFileSize)) {
+			NVBAK_LOG("[NVRAM]:there are not enough good blocks for read  nvram data file\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+	}
+	int iReadTime = 0;
+	if (iDatFileSize % iBlockSize != 0)
+		iReadTime = iDatFileSize / iBlockSize + 1;
+	else
+		iReadTime = iDatFileSize / iBlockSize;
+	int iAlreadyRead = 0;
+	NVBAK_LOG("[NVRAM]:dat file read begin:%d\n", pos);
+	for (i = 0; i < iReadTime; i++) {
+		iResult = lseek(fd, pos * iBlockSize, SEEK_SET);
+		if (iResult != pos * (int)iBlockSize) {
+			NVBAK_LOG("[NVRAM]:binregion lseek error\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+
+		iResult = read(fd, tempBuffer + i * iBlockSize, iBlockSize);
+		NVBAK_LOG("[NVRAM]:dat file read size:%d\n", iResult);
+		if (iResult != (int)iBlockSize) {
+			NVBAK_LOG("[NVRAM]:bin region read error\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+		iAlreadyRead++;
+		if (iAlreadyRead == iReadTime)
+			break;
+		for (j = pos + 1; j < iBlockNum; j++) {
+			if (tempBitmap1[j] == 0) {
+				pos = j;
+				break;
+			}
+		}
+		if (j >= iBlockNum) {
+			NVBAK_LOG("[NVRAM]:there are not enough good blocks to read nvram data file\r\n");
+			close(fd);
+			free(tempBuffer);
+			close(iFileDesc_file);
+			close(iFileDesc_map);
+			free(tempBitmap1);
+			free(tempBitmap2);
+			return false;
+		}
+	}
+	NVBAK_LOG("[NVRAM]:dat file read end:%d\n", pos);
+	iResult = write(iFileDesc_file, tempBuffer, iDatFileSize);
+	if (iResult != (int)iDatFileSize) {
+		NVBAK_LOG("[NVRAM]:dat file write error\r\n");
+		close(fd);
+		free(tempBuffer);
+		close(iFileDesc_file);
+		close(iFileDesc_map);
+		free(tempBitmap1);
+		free(tempBitmap2);
+		return false;
+	}
+	close(fd);
+	free(tempBuffer);
+	close(iFileDesc_file);
+	close(iFileDesc_map);
+	free(tempBitmap1);
+	free(tempBitmap2);
+
+
+	bRet = NVM_CheckData_OneFile(file_lid, filename);
+	return bRet;
+
+}
+
+/*******************************************************************************
+//FUNCTION:
+//NVM_ComputeCheckNo
+//DESCRIPTION:
+//		this function is called to compute CheckNo of file in NvRam
+//PARAMETERS:
+//		filepath:[IN] the path name of the file
+//		ContentSize:[IN] the content size of the file
+//		CheckNo_flag:[IN] the flag of CheckNo in the file
+//RETURN VALUE:
+//		CheckNo
+//DEPENDENCY:
+//		NVM_CheckFileSize must be called
+//GLOBALS AFFECTED:
+//		None
+********************************************************************************/
+char NVM_ComputeCheckNo(const char * filepath, char *pCheckNo_flag,
+                        bool IS_OLD_FILE) {
+	int iFileDesc = 0;
+	unsigned int i = 0, ilooptimes = 0;
+	bool flag = 0;
+	char buf, cCheckNo;
+	struct stat st;
+    if (filepath == NULL)
+        {
+            NVRAM_LOG("NVM_ComputeCheckNo: filepath == NULL!!\n");
+            return 0;
+        }
+	if (stat(filepath, &st) < 0) {
+		NVRAM_LOG("Error NVM_ComputeCheckNo stat!\n");
+		*pCheckNo_flag = 0xFF;
+		return 0;
+	}
+	iFileDesc = open(filepath, O_RDONLY);
+	if (iFileDesc == -1) { //if file doesn't exist
+		NVRAM_LOG("NVM_ComputeCheckNo:Open file failed!");
+		*pCheckNo_flag = 0xFF;
+		return 0;
+	}
+	memset(&buf, 0, sizeof(char));
+	memset(&cCheckNo, 0, sizeof(char));
+	if (IS_OLD_FILE)
+		ilooptimes = (st.st_size - 2 * sizeof(char)) / sizeof(char);
+	else
+		ilooptimes = st.st_size / sizeof(char);
+	for (i = 0; i < ilooptimes; ++i) {
+		if (sizeof(char) == read(iFileDesc, &buf, sizeof(char))) {
+			if (flag) {
+				cCheckNo ^= buf;
+				flag = false;
+			} else {
+				cCheckNo += buf;
+				flag = true;
+			}
+		} else {
+			NVRAM_LOG("NVM_ComputeCheckNo:Read file failed!");
+			*pCheckNo_flag = 0xFF;
+			close(iFileDesc);
+			return 0;
+		}
+
+	}
+	close(iFileDesc);
+	return cCheckNo;
+}
+/********************************************************************************
+//FUNCTION:
+//		NVM_CheckFileSize
+//DESCRIPTION:
+//		this function is called to Check the size of the file in NvRam contain the check bytes.
+//
+//PARAMETERS:
+//		file_lid:[IN] the lid of the file
+//
+//RETURN VALUE:
+//		true is exist, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+int NVM_CheckFileSize(int iRealFileLid, const TCFG_FILE *pCfgFielTable) {
+	struct stat st;
+	if (stat(pCfgFielTable[iRealFileLid].cFileName, &st) < 0) {
+		NVRAM_LOG("NVM_CheckFileSize:stat Fail!!!\n");
+		return -1;
+	}
+
+	NVRAM_LOG("NVM_CheckFileSize:stat_size:%lld,size in table:%d\n", st.st_size,
+	          pCfgFielTable[iRealFileLid].i4RecNum * pCfgFielTable[iRealFileLid].i4RecSize);
+	switch (pCfgFielTable[iRealFileLid].stDefualType) {
+	case DEFAULT_ZERO:
+	case DEFAULT_FF:		// when the type of default value is DEFAULT_ZERO/DEFAULT_FF
+	case SIGNLE_DEFUALT_REC:
+		if (pCfgFielTable[iRealFileLid].i4RecNum * pCfgFielTable[iRealFileLid].i4RecSize
+		        == st.st_size)
+			return 0;
+		else if (pCfgFielTable[iRealFileLid].i4RecNum *
+		         pCfgFielTable[iRealFileLid].i4RecSize == st.st_size - 2 * sizeof(char))
+			return 1;
+		else {
+			NVRAM_LOG("NVM_CheckFileSize:File size not match!!!\n");
+			return -1;
+		}
+		break;
+
+	case MULTIPLE_DEFUALT_REC:	// when the type of default value is MULTIPLE_DEFUALT_REC, we use the defined default value of one record to generate file
+		if (pCfgFielTable[iRealFileLid].i4RecNum * pCfgFielTable[iRealFileLid].i4RecNum
+		        * pCfgFielTable[iRealFileLid].i4RecSize == st.st_size)
+			return 0;
+		else if (pCfgFielTable[iRealFileLid].i4RecNum *
+		         pCfgFielTable[iRealFileLid].i4RecNum * pCfgFielTable[iRealFileLid].i4RecSize ==
+		         st.st_size - 2 * sizeof(char))
+			return 1;
+		else {
+			NVRAM_LOG("NVM_CheckFileSize:File size not match!!!\n");
+			return -1;
+		}
+		break;
+	default:
+		break;
+
+	}
+	return -1;
+}
+/********************************************************************************
+//FUNCTION:
+//		NVM_SetCheckNo
+//DESCRIPTION:
+//		this function is called to set the CheckNo of the file in NvRam.
+//
+//PARAMETERS:
+//		filepath:[IN] the path name of the file
+//
+//RETURN VALUE:
+//		true is success, otherwise is fail
+//
+//DEPENDENCY:
+//		NVM_CheckFileSize must be called
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_SetCheckNo(const char *filepath, bool isOldFile) {
+	char cCheckNo = 0;
+	char cCheckFlag = 0;
+	int iFileDesc;
+	char cFlagValue = 0xAA;
+
+	cCheckNo = NVM_ComputeCheckNo(filepath, &cCheckFlag, isOldFile);
+	NVRAM_LOG("NVM_SetCheckNo: CheckNo:%x\n", cCheckNo);
+	NVRAM_LOG("NVM_SetCheckNo: CheckFlag:%x\n", cCheckFlag);
+	if (cCheckFlag == 0xFF) {
+		NVRAM_LOG("NVM_SetCheckNo: ComputeCheckNoFail!!\n");
+		return 0;
+	}
+	iFileDesc = open(filepath, O_RDWR | O_SYNC);
+	if (iFileDesc == -1) { //if file doesn't exist
+		NVRAM_LOG("NVM_SetCheckNo:Open file failed!");
+		return 0;
+	}
+	if (isOldFile) {
+		if (lseek(iFileDesc, -2 * (int)sizeof(char), SEEK_END) < 0) {
+			NVRAM_LOG("NVM_SetCheckNo: (OldFile) lseek Fail!!\n");
+			close(iFileDesc);
+			return 0;
+		}
+	} else {
+		if (lseek(iFileDesc, 0, SEEK_END) < 0) {
+			NVRAM_LOG("NVM_SetCheckNo: (Newfile) lseek Fail!!\n");
+			close(iFileDesc);
+			return 0;
+		}
+	}
+	if (sizeof(char) != write(iFileDesc, &cFlagValue, sizeof(char))) {
+		NVRAM_LOG("NVM_SetCheckNo: write Check flag Fail!!\n");
+		close(iFileDesc);
+		return 0;
+	}
+	if (sizeof(char) == write(iFileDesc, &cCheckNo, sizeof(char))) {
+		NVRAM_LOG("NVM_SetCheckNo: CheckNo generate successfully!\n");
+		close(iFileDesc);
+		return 1;
+	} else {
+		NVRAM_LOG("NVM_SetCheckNo: CheckNo generate Fail!\n");
+		close(iFileDesc);
+		return 0;
+	}
+}
+
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_CheckFile
+//DESCRIPTION:
+//		this function is called to Check file in NvRam correct.
+//
+//PARAMETERS:
+//		filepath:[IN] the path name of the file
+//
+//RETURN VALUE:
+//		true is correct (1), otherwise is fail(0)
+//
+//DEPENDENCY:
+//		NVM_CheckFileSize must be called
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_CheckFile(const char * filepath) {
+	char cCheckNo = 0;
+	char cCheckNo_file[2];
+	char cCheckFlag = 0;
+	int iFileDesc;
+	char cFlagValue = 0xAA;
+	bool ISOLDFILE = true;
+    if (filepath == NULL)
+        {
+            NVRAM_LOG("NVM_CheckFile: filepath == NULL!!\n");
+            return 0;
+        }
+	memset(cCheckNo_file, 0, 2 * sizeof(char));
+
+	cCheckNo = NVM_ComputeCheckNo(filepath, &cCheckFlag, ISOLDFILE);
+	if (cCheckFlag == 0xFF) {
+		NVRAM_LOG("NVM_CheckFile: ComputeCheckNo Fail!!\n");
+		return 0;
+	}
+	iFileDesc = open(filepath, O_RDONLY);
+	if (iFileDesc == -1) { //if file doesn't exist
+		NVRAM_LOG("NVM_CheckFile:Open file failed!");
+		return 0;
+	}
+	if (lseek(iFileDesc, -2 * sizeof(char), SEEK_END) < 0) {
+		NVRAM_LOG("NVM_CheckFile: lseek Fail!!\n");
+		close(iFileDesc);
+		return 0;
+	} else {
+		if (2 * sizeof(char) == read(iFileDesc, cCheckNo_file, 2 * sizeof(char)))
+			if (cCheckNo_file[0] == cFlagValue) {
+				if (cCheckNo_file[1] == cCheckNo) {
+					NVRAM_LOG("NVM_CheckFile: File is correct!\n");
+					close(iFileDesc);
+					return 1;
+
+				} else {
+					NVRAM_LOG("NVM_CheckFile: File has been modified!!\n");
+					close(iFileDesc);
+					return 0;
+				}
+			} else {
+				NVRAM_LOG("NVM_CheckFile: Check flag in File has been destroyed!!\n");
+				close(iFileDesc);
+				return 0;
+			}
+		else {
+			NVRAM_LOG("NVM_CheckFile: Read file Fail!!\n");
+			close(iFileDesc);
+			return 0;
+		}
+
+	}
+
+}
+/********************************************************************************
+//FUNCTION:
+//		NVM_ProtectUserData
+//DESCRIPTION:
+//		this function is called to Protect User's Data.
+//
+//PARAMETERS:
+//		filepath:[IN] the path name of the file
+//
+//RETURN VALUE:
+//		true is correct (1), otherwise is fail(0)
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+//int loop_Reset_Protect = 0;
+pthread_mutex_t recoverlock = PTHREAD_MUTEX_INITIALIZER;
+
+int NVM_ProtectDataFile(int file_lid, bool Setflag) {
+	int CheckFileSize_flag = 0;
+	const TCFG_FILE *pCfgFielTable = NULL;
+	int iRealFileLid = 0;
+	bool restore_flag = false;
+	int i = 0, j = 0;
+	char filename[MAX_NAMESIZE];
+	memset(filename, 0, MAX_NAMESIZE);
+
+	NVRAM_LOG("NVM_ProtectDataFile : %d ++\n", file_lid);
+	NVRAM_LOG("iCustomBeginLID = %d\n", iCustomBeginLID);
+
+	if (!NVM_CheckVerFile(true)) {
+		NVM_GenerateFileVer(true);
+	}
+
+	//get the file informatin table.
+	pCfgFielTable = NVM_GetCfgFileTable(file_lid);
+	if (pCfgFielTable == NULL) {
+		NVRAM_LOG("NVM_ProtectDataFile: NVM_GetCfgFileTable Fail!!!\n");
+		return -1;
+	}
+
+
+	if (file_lid == iFileVerInfoLID) {
+		if (!NVM_GenerateFileVer(true)) {
+			return -1;
+		}
+		NVRAM_LOG("NVM_ProtectDataFile:Wrong file_lid Fail!!!\n");
+		return -1;
+	}
+
+	if (file_lid >= iCustomBeginLID) {
+		iRealFileLid = file_lid - iCustomBeginLID;
+	} else {
+		iRealFileLid = file_lid;
+	}
+
+	CheckFileSize_flag = NVM_CheckFileSize(iRealFileLid, pCfgFielTable);
+	//NVRAM_LOG("NVM_ProtectUserData\n");
+	if (CheckFileSize_flag == -1) {
+		NVRAM_LOG("NVM_ProtectUserData:File Size Error!!!\n");
+		goto restore;
+	}
+	if (Setflag || CheckFileSize_flag == 0) {
+		NVRAM_LOG("NVM_ProtectUserData:Set Check Num\n");
+		if (!NVM_SetCheckNo(pCfgFielTable[iRealFileLid].cFileName,
+		                    CheckFileSize_flag)) {
+			NVRAM_LOG("NVM_ProtectUserData:Set Check Num Fail!!!\n");
+			return 0;
+		} else {
+			NVRAM_LOG("NVM_ProtectUserData:Set Check Num Success\n");
+			return 1;
+		}
+
+	}
+	if (!Setflag) {
+		//NVRAM_LOG("NVM_ProtectUserData:Check File\n");
+		if (!NVM_CheckFile(pCfgFielTable[iRealFileLid].cFileName)) {
+			NVRAM_LOG("NVM_ProtectUserData:Check Failed!!!\n");
+			goto restore;
+		} else {
+			NVRAM_LOG("NVM_ProtectUserData:Check Success\n");
+			return 1;
+		}
+	}
+
+restore:
+	for (j = strlen(pCfgFielTable[iRealFileLid].cFileName) - 1; j >= 0; j--)
+		if (pCfgFielTable[iRealFileLid].cFileName[j] == '/') {
+					//strcpy(filename,pCfgFielTable[iRealFileLid].cFileName+j+1);
+					snprintf(filename, sizeof(filename),"%s", (char *)(pCfgFielTable[iRealFileLid].cFileName+j+1));
+			NVRAM_LOG("filename:%s\n", filename);
+		break;
+		}
+	for (i = 0; i < (int)g_Backup_File_Count; i++) {
+		if (0 == strcmp(filename, aBackupToBinRegion[i].cFileName)
+		        && (unsigned int)file_lid == aBackupToBinRegion[i].iLID) {
+			restore_flag = true;
+			break;
+		}
+	}
+	NVRAM_LOG("NVM_ProtectUserData: Restore or Reset!\n");
+	pthread_mutex_lock(&recoverlock);
+	if (!restore_flag || (restore_flag
+	                      && !NVM_RestoreFromBinRegion_OneFile(file_lid, NULL))) {
+		pthread_mutex_unlock(&recoverlock);
+		if (restore_flag)
+			NVRAM_LOG("NVM_ProtectUserData Restore Fail! Reset!!\n");
+		else
+			NVRAM_LOG("NVM_ProtectUserData Reset\n");
+		if (!NVM_ResetFileToDefault(file_lid)) {
+			NVRAM_LOG("NVM_ProtectUserData Reset Fail!!\n");
+			return 0;
+		} else {
+#ifndef MTK_BASIC_PACKAGE
+			if (!NVM_Enc_Dnc_File(file_lid, DECODE)) {
+				NVRAM_LOG("Dec fail!!!\n");
+				return false;
+			}
+#endif
+			NVRAM_LOG("NVM_ProtectUserData Reset Success\n");
+			return 1;
+		}
+	} else {
+		pthread_mutex_unlock(&recoverlock);
+		NVRAM_LOG("NVM_ProtectUserData Restore Success\n");
+		return 1;
+	}
+}
+/********************************************************************************
+//FUNCTION:
+//		NVM_ResetFileToDefault
+//DESCRIPTION:
+//		this function is called to reset a NvRam to default value.
+//
+//PARAMETERS:
+//		file_lid: [IN] the lid of nvram file
+//
+//RETURN VALUE:
+//		true is success, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+extern FileName aPerformance[];
+extern const unsigned int g_Performance_File_Count;
+bool NVM_ResetFileToDefault(int file_lid) {
+	int iFileDesc;
+	char *databuf = NULL;
+	int i = 0;
+	const TCFG_FILE *pCfgFielTable = NULL;
+	int iRealFileLid = 0;
+	int i4RecNum, i4RecSize;
+
+	NVRAM_LOG("NVM_ResetFileToDefault : %d ++\n", file_lid);
+	NVRAM_LOG("iCustomBeginLID = %d\n", iCustomBeginLID);
+
+	if (!NVM_CheckVerFile(true)) {
+		if (false == NVM_GenerateFileVer(true)) {
+			NVRAM_LOG("GenerateFileVer Fail!\n");
+			return false;
+		}
+	}
+
+	//get the file informatin table.
+	pCfgFielTable = NVM_GetCfgFileTable(file_lid);
+	if (pCfgFielTable == NULL) {
+		NVRAM_LOG("NVM_GetCfgFileTable Fail!!!\n");
+		return false;
+	}
+
+	// if the file lid is version file,
+	// just generate it directly by call NVM_GenerateFileVer(...)
+	//if (file_lid == AP_CFG_FILE_VER_INFO_LID)
+	if (file_lid == iFileVerInfoLID) {
+		if (!NVM_GenerateFileVer(true)) {
+			return false;
+		}
+		return true;
+	}
+
+	// calculate the offset lid in the file inforamtion table.
+	// because of custom's lid is from AP_CFG_CUSTOM_BEGIN_LID,
+	// so the offset(iRealFileLid) lid is file_lid - AP_CFG_CUSTOM_BEGIN_LID*/
+	//if (file_lid >= AP_CFG_CUSTOM_BEGIN_LID) {
+	if (file_lid >= iCustomBeginLID) {
+		iRealFileLid = file_lid - iCustomBeginLID;
+	} else {
+		iRealFileLid = file_lid;
+	}
+
+	switch (pCfgFielTable[iRealFileLid].stDefualType) {
+	case DEFAULT_ZERO:
+	case DEFAULT_FF:		// when the type of default value is DEFAULT_ZERO/DEFAULT_FF, we don't care the default vlaue
+		iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName,
+		                 O_CREAT | O_TRUNC | O_RDWR, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+
+		if (iFileDesc == -1) {
+			iFileDesc = open_file_with_dirs(pCfgFielTable[iRealFileLid].cFileName,
+			                                O_CREAT | O_RDWR, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+			NVRAM_LOG("Create the dir path of %s\n", pCfgFielTable[iRealFileLid].cFileName);
+		}
+
+		if (iFileDesc == -1) {
+			NVRAM_LOG("Error NVM_ResetFileToDefault can't open file %s\n",
+			          pCfgFielTable[iRealFileLid].cFileName);
+			return false;
+		}
+
+		i4RecNum = pCfgFielTable[iRealFileLid].i4RecNum;
+		i4RecSize = pCfgFielTable[iRealFileLid].i4RecSize;
+
+		databuf = (char*)malloc(i4RecSize * i4RecNum);
+		if (databuf == NULL) {
+			NVRAM_LOG("malloc databuf failed!\n");
+			close(iFileDesc);
+			return false;
+		}
+
+		if (pCfgFielTable[iRealFileLid].stDefualType == DEFAULT_ZERO) {
+			memset(databuf, 0, i4RecSize * i4RecNum);
+		} else {
+			memset(databuf, 0xff, i4RecSize * i4RecNum);
+		}
+		write(iFileDesc, databuf, i4RecSize * i4RecNum);
+
+		if (databuf != NULL) {
+			free(databuf);
+		}
+
+		close(iFileDesc);
+		break;
+
+	case SIGNLE_DEFUALT_REC:	// when the type of default value is SIGNLE_DEFUALT_REC, we use the defined default vlaue to generate file
+		iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName,
+		                 O_CREAT | O_TRUNC | O_RDWR, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+
+		if (iFileDesc == -1) {
+			iFileDesc = open_file_with_dirs(pCfgFielTable[iRealFileLid].cFileName,
+			                                O_CREAT | O_RDWR, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+			NVRAM_LOG("Create the dir path of %s\n", pCfgFielTable[iRealFileLid].cFileName);
+		}
+
+		if (iFileDesc == -1) {
+			NVRAM_LOG("Error NVM_ResetFileToDefault can't open file %s\n",
+			          pCfgFielTable[iRealFileLid].cFileName);
+			return false;
+		}
+
+		i4RecNum = pCfgFielTable[iRealFileLid].i4RecNum;
+		i4RecSize = pCfgFielTable[iRealFileLid].i4RecSize;
+
+		write(iFileDesc, pCfgFielTable[iRealFileLid].pDefualtVaule,
+		      i4RecSize * i4RecNum);
+		close(iFileDesc);
+		break;
+
+	case MULTIPLE_DEFUALT_REC:	// when the type of default value is MULTIPLE_DEFUALT_REC, we use the defined default value of one record to generate file
+		iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName,
+		                 O_CREAT | O_TRUNC | O_RDWR, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+
+		if (iFileDesc == -1) {
+			iFileDesc = open_file_with_dirs(pCfgFielTable[iRealFileLid].cFileName,
+			                                O_CREAT | O_RDWR, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+			NVRAM_LOG("Create the dir path of %s\n", pCfgFielTable[iRealFileLid].cFileName);
+		}
+
+		if (iFileDesc == -1) {
+			NVRAM_LOG("Error NVM_ResetFileToDefault can't open file %s\n",
+			          pCfgFielTable[iRealFileLid].cFileName);
+			return false;
+		}
+
+		if ((pCfgFielTable[iRealFileLid].pDefualtVaule == NULL)
+		        || (pCfgFielTable[iRealFileLid].i4RecNum < 2)) {
+
+			NVRAM_LOG("NVM_ResetFileToDefault Mulitple para is error \n");
+			close(iFileDesc);
+			return false;
+		}
+
+		i4RecNum = pCfgFielTable[iRealFileLid].i4RecNum;
+		i4RecSize = pCfgFielTable[iRealFileLid].i4RecSize;
+
+		//use one record to generate all record value
+		for (i = 0; i < i4RecNum; i++) {
+			write(iFileDesc, pCfgFielTable[iRealFileLid].pDefualtVaule,
+			      i4RecSize * i4RecNum);
+		}
+
+		close(iFileDesc);
+		break;
+
+	default:
+		break;
+
+	}
+
+	NVM_UpdateFileVerNo(file_lid, VerUpdate);
+	unsigned int index = 0;
+	bool maskflag = 0;
+	for (index = 0; index < g_Performance_File_Count; index++) {
+		if ((unsigned int)file_lid == aPerformance[index].iLID) {
+			maskflag = 1;
+			break;
+		}
+	}
+	if (maskflag == 0) {
+#if 0
+		if (NVM_ProtectDataFile(file_lid, Setflag) == 1) {
+			NVRAM_LOG("NVM_ResetFileToDefault ProtectDataFile Success!!\n");
+		} else {
+			NVRAM_LOG("NVM_ResetFileToDefault ProtectDataFile SET Fail!!\n");
+			return false;
+		}
+
+#endif
+		NVRAM_LOG("NVM_ResetFileToDefault :Set Check Num\n");
+		if (!NVM_SetCheckNo(pCfgFielTable[iRealFileLid].cFileName, false)) {
+			NVRAM_LOG("NVM_ResetFileToDefault :Set Check Num Fail!!!\n");
+			return false;
+		} else {
+			NVRAM_LOG("NVM_ResetFileToDefault :Set Check Num Success\n");
+		}
+		NVRAM_LOG("NVM_ResetFileToDefault Success!!\n");
+	}
+#ifndef MTK_BASIC_PACKAGE
+	if (!NVM_Enc_Dnc_File(file_lid, ENCODE)) {
+		NVRAM_LOG("Enc fail!!!\n");
+		return false;
+	}
+#endif
+	NVRAM_LOG("NVM_ResetFileToDefault : %d --\n", file_lid);
+	return true;
+}
+
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_CmpFileVerNo
+//DESCRIPTION:
+//		this function is called to compare file version between FAT2 and default version.
+//
+//PARAMETERS:
+//		file_lid: [IN] the lid of nvram file
+//
+//RETURN VALUE:
+//		true is same, otherwise is not same
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_CmpFileVerNo(int file_lid) {
+	int iFileDesc;
+	char cFbyte[FILEVERLENGTH] = {0, 0, 0, 0};
+	int i = 0, iResult;
+	const TCFG_FILE *pCfgFielTable = NULL;
+	int iRealFileLid = 0;
+    char tempstr[FILENAMELENGTH]={0};
+    char tempstr1[FILENAMELENGTH]={0};
+	bool bIsNewVerInfo;
+
+	NVRAM_LOG("NVM_CmpFileVerNo %d  \n" , file_lid);
+	//get the file informatin table. if the file lid is version file, just generate it directly by call GenerateFileVer
+	pCfgFielTable = NVM_GetCfgFileTable(file_lid);
+	if (pCfgFielTable == NULL) {
+		NVRAM_LOG("NVM_GetCfgFileTable Fail!!!\n");
+		return false;
+	}
+
+	//if (file_lid >= AP_CFG_CUSTOM_BEGIN_LID) {
+	if (file_lid >= iCustomBeginLID) {
+		//iRealFileLid = file_lid - AP_CFG_CUSTOM_BEGIN_LID;
+		iRealFileLid = file_lid - iCustomBeginLID;
+	} else {
+		iRealFileLid = file_lid;
+	}
+	int iStrLen;
+	iStrLen = strlen(pCfgFielTable[iRealFileLid].cFileName);
+	for (i = iStrLen; i >= 0; i--) {
+		if (pCfgFielTable[iRealFileLid].cFileName[i] == '/') {
+                    //strcpy(tempstr1,pCfgFielTable[iRealFileLid].cFileName+i+1);//get the target name
+                    snprintf(tempstr1, sizeof(tempstr1),"%s", pCfgFielTable[iRealFileLid].cFileName+i+1);
+			break;
+		}
+	}
+	if (i < 0) {
+		NVRAM_LOG("Path parse Fail!!!\n");
+		return false;
+	}
+
+#if 1
+	//NVRAM_LOG("Check if FILE_VER exists before openning it!\n");
+	if (!NVM_CheckVerFile(true)) {
+		if (false == NVM_GenerateFileVer(true)) {
+			NVRAM_LOG("GenerateFileVer Fail!\n");
+			return false;
+		}
+	}
+#endif
+
+	//compare the file version
+	iFileDesc = open(g_akCFG_File[iFileVerInfoLID].cFileName, O_RDONLY);
+	if (iFileDesc == -1) {
+		NVRAM_LOG("Error NVM_CmpFileVerNo Open2 version file fail: %s\n",
+		          g_akCFG_File[iFileVerInfoLID].cFileName);
+		return false;
+	}
+    iResult = read(iFileDesc,tempstr,FILENAMELENGTH-1);
+	if (iResult != FILENAMELENGTH-1) {
+		NVBAK_LOG("[NVRAM]: read error. (errno=%d)", errno);
+		close(iFileDesc);
+		return false;
+	}
+	tempstr[iResult]='\0';
+	if (0 == strcmp(tempstr, strVerInfo)) {
+		//NVRAM_LOG("New version info file\n");
+		bIsNewVerInfo = true;
+	} else {
+		//NVRAM_LOG("Old version info file\n");
+		bIsNewVerInfo = false;
+	}
+	if (bIsNewVerInfo) {
+		memset(tempstr, 0, FILENAMELENGTH);
+		if (-1 == lseek(iFileDesc, (file_lid + 1) * (FILEVERLENGTH + FILENAMELENGTH),
+		                SEEK_SET)) {
+			NVRAM_LOG("Error NVM_CmpFileVerNo lseek version file fail: %s\n",
+			          g_akCFG_File[iFileVerInfoLID].cFileName);
+			close(iFileDesc);
+			return false;
+		}
+    		iResult = read(iFileDesc, tempstr, FILENAMELENGTH-1);
+			if (iResult != FILENAMELENGTH-1) {
+				NVBAK_LOG("[NVRAM]: read error. (errno=%d)", errno);
+				close(iFileDesc);
+				return false;
+			}
+			tempstr[iResult]='\0';
+		if (0 == strcmp(tempstr, tempstr1)) {
+			if (-1 == lseek(iFileDesc,
+			                (file_lid + 1) * (FILEVERLENGTH + FILENAMELENGTH) + FILENAMELENGTH, SEEK_SET)) {
+				NVRAM_LOG("Error NVM_CmpFileVerNo lseek version file fail: %s\n",
+				          g_akCFG_File[iFileVerInfoLID].cFileName);
+				close(iFileDesc);
+				return false;
+			}
+			if (read(iFileDesc, cFbyte, FILEVERLENGTH) != FILEVERLENGTH) {
+				NVBAK_LOG("[NVRAM]: read error. (errno=%d)", errno);
+				close(iFileDesc);
+				return false;
+			}
+		} else {
+			//search the version info from the file
+			struct stat statbuf;
+			int iFileSize, ilooptime;
+			if (fstat(iFileDesc, &statbuf) < 0) {
+				NVBAK_LOG("[NVRAM]: fstat error. (errno=%d)", errno);
+				close(iFileDesc);
+				return false;
+			}
+			iFileSize = (int)statbuf.st_size;
+			ilooptime = iFileSize / (FILEVERLENGTH + FILENAMELENGTH);
+			for (i = 0; i < ilooptime; i++) {
+				if (-1 == lseek(iFileDesc, i * (FILEVERLENGTH + FILENAMELENGTH), SEEK_SET)) {
+					NVRAM_LOG("Error NVM_CmpFileVerNo lseek version file fail: %s\n",
+					          g_akCFG_File[iFileVerInfoLID].cFileName);
+					close(iFileDesc);
+					return false;
+				}
+    		    iResult = read(iFileDesc, tempstr, FILENAMELENGTH-1);
+				if (iResult != FILENAMELENGTH-1) {
+					NVBAK_LOG("[NVRAM]: read error. (errno=%d)", errno);
+					close(iFileDesc);
+					return false;
+				}
+				tempstr[iResult]='\0';
+				if (0 == strcmp(tempstr, tempstr1)) {
+					memset(tempstr, 0, FILENAMELENGTH);
+                                if (-1 == lseek(iFileDesc, i * (FILEVERLENGTH + FILENAMELENGTH)+FILENAMELENGTH, SEEK_SET)) {
+                                        NVRAM_LOG("Error NVM_CmpFileVerNo lseek version file fail: %s\n",
+                                            g_akCFG_File[iFileVerInfoLID].cFileName);
+                                        close(iFileDesc);
+                                        return false;
+                                }
+					if (read(iFileDesc, cFbyte, FILEVERLENGTH) != FILEVERLENGTH) {
+							NVBAK_LOG("[NVRAM]: read error. (errno=%d)", errno);
+							close(iFileDesc);
+							return false;
+					}
+					cFbyte[FILEVERLENGTH-1] = '\0';
+					NVRAM_LOG("FILEVER size change, Load File Version: %s, NvRam File Version: %s\n",
+						pCfgFielTable[iRealFileLid].cFileVer, cFbyte);
+					break;
+				} else {
+					memset(tempstr, 0, FILENAMELENGTH);
+					continue;
+				}
+			}
+			if (i == ilooptime) {
+				NVRAM_LOG("Error NVM_CmpFileVerNo find target file fail: %d\n", file_lid);
+				close(iFileDesc);
+				return false;
+			}
+		}
+	} else {
+		if (-1 == lseek(iFileDesc, file_lid * FILEVERLENGTH, SEEK_SET)) {
+			NVRAM_LOG("Error NVM_CmpFileVerNo lseek version file fail: %s\n",
+			          g_akCFG_File[iFileVerInfoLID].cFileName);
+			close(iFileDesc);
+			return false;
+		}
+		if (read(iFileDesc, cFbyte, FILEVERLENGTH) !=  FILEVERLENGTH) {
+			NVBAK_LOG("[NVRAM]: read error. (errno=%d)", errno);
+			close(iFileDesc);
+			return false;
+		}
+
+		cFbyte[FILEVERLENGTH-1] = '\0';
+		NVRAM_LOG("!!old version FILEVER, Load File Version: %s, NvRam File Version: %s\n",
+		    pCfgFielTable[iRealFileLid].cFileVer, cFbyte);
+	}
+
+	close(iFileDesc);
+	NVRAM_LOG("Load File Version: %s, NvRam File Version: %s\n",
+	          pCfgFielTable[iRealFileLid].cFileVer, cFbyte);
+	// compare the version one by one char
+	for (i = 0; i < 4; i++) {
+		if (pCfgFielTable[iRealFileLid].cFileVer[i] != cFbyte[i]) {
+			NVRAM_LOG("Error NVM_CmpFileVerNo is not same %d, %d ,%d\n",
+			          iRealFileLid, pCfgFielTable[iRealFileLid].cFileVer[i], cFbyte[i]);
+			return false;
+		}
+	}
+
+	return true;
+}
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_DataVerConvert
+//DESCRIPTION:
+//		this function is called to convert data acccording to the version info .
+//
+//PARAMETERS:
+//		file_lid: [IN] the lid of nvram file
+//RETURN VALUE:
+//		convert successfully?
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+int NVM_DataVerConvert(int file_lid) {
+	const TCFG_FILE *pCfgFielTable = NULL;
+	int iRealFileLid = 0;
+	int iFileDesc;
+	int iCurrentFileVerNO;
+	int iNewFileVerNO;
+	int iResult = 1;
+     char pFileVerInfo[4]={0};
+	int rec_size = 0;
+	int rec_num = 0;
+	char* pSrcMem = NULL;
+	char* pDstMem = NULL;
+	struct stat st;
+	int iFileSize;
+     char tempstr[FILENAMELENGTH]={0};
+	bool bIsNewVerInfo;
+	bool setflag = true;
+	//return 1;
+	NVRAM_LOG("NVM_DataVerConvert %d  \n" , file_lid);
+	//NVRAM_LOG("iCustomBeginLID = %d\n", iCustomBeginLID);
+	iFileDesc = open(g_akCFG_File[iFileVerInfoLID].cFileName, O_RDONLY);
+	if (iFileDesc == -1) {
+		NVRAM_LOG("Error NVM_DataVerConvert Open2 version file fail: %s\n",
+		          g_akCFG_File[iFileVerInfoLID].cFileName);
+		return 0;
+	}
+
+	iResult = read(iFileDesc,tempstr,FILENAMELENGTH-1);
+	if (iResult != FILENAMELENGTH-1) {
+		NVBAK_LOG("[NVRAM]: read error. (errno=%d)", errno);
+		close(iFileDesc);
+		return 0;
+	}
+	tempstr[iResult]='\0';
+	if (0 == strcmp(tempstr, strVerInfo)) {
+		NVRAM_LOG("New version info file\n");
+		bIsNewVerInfo = true;
+	} else {
+		NVRAM_LOG("Old version info file\n");
+		bIsNewVerInfo = false;
+	}
+
+	if (stat(g_akCFG_File[iFileVerInfoLID].cFileName, &st) < 0) {
+		NVRAM_LOG("Error NVM_DataVerConvert stat \n");
+		close(iFileDesc);
+		return 0;
+	}
+	//if the file lid is greater than the max file lid
+	if (bIsNewVerInfo) {
+		if (((file_lid + 1 + 1) * (FILEVERLENGTH + FILENAMELENGTH)) > st.st_size) {
+			NVRAM_LOG("NVM_DataVerConvert:the file lid is greater than the max file lid, reset it\n");
+			if (!NVM_ResetFileToDefault(file_lid)) {
+				NVRAM_LOG("reset the file fail\n");
+				close(iFileDesc);
+				return 0;
+			}
+			close(iFileDesc);
+			return 1;
+		}
+	} else {
+		if (((file_lid + 1) * FILEVERLENGTH) > st.st_size) {
+			NVRAM_LOG("NVM_DataVerConvert:the file lid is greater than the max file lid, reset it\n");
+			if (!NVM_ResetFileToDefault(file_lid)) {
+				NVRAM_LOG("reset the file fail\n");
+				close(iFileDesc);
+				return 0;
+			}
+			close(iFileDesc);
+			return 1;
+		}
+
+	}
+
+	pCfgFielTable = NVM_GetCfgFileTable(file_lid);
+	if (pCfgFielTable == NULL) {
+		NVRAM_LOG("NVM_GetCfgFileTable Fail!!!\n");
+		close(iFileDesc);
+		return 0;
+	}
+
+	if (file_lid >= iCustomBeginLID) {
+		iRealFileLid = file_lid - iCustomBeginLID;
+	} else {
+		iRealFileLid = file_lid;
+	}
+
+	if (bIsNewVerInfo) {
+		if (-1 == lseek(iFileDesc,
+		                (file_lid + 1) * (FILEVERLENGTH + FILENAMELENGTH) + FILENAMELENGTH, SEEK_SET)) {
+			NVRAM_LOG("Error NVM_DataVerConvert lseek version file fail: %s\n",
+			          g_akCFG_File[iFileVerInfoLID].cFileName);
+			close(iFileDesc);
+			return 0;
+		}
+	} else {
+		if (-1 == lseek(iFileDesc, file_lid * FILEVERLENGTH, SEEK_SET)) {
+			NVRAM_LOG("Error NVM_DataVerConvert lseek version file fail: %s\n",
+			          g_akCFG_File[iFileVerInfoLID].cFileName);
+			close(iFileDesc);
+			return 0;
+		}
+	}
+
+     iResult=read(iFileDesc, pFileVerInfo, FILEVERLENGTH-1);
+	 if (iResult != FILEVERLENGTH-1) {
+		NVBAK_LOG("[NVRAM]: read error. (errno=%d)", errno);
+		close(iFileDesc);
+		return 0;
+	 }
+	 pFileVerInfo[iResult]='\0';
+	close(iFileDesc);
+
+	iNewFileVerNO = atoi(pCfgFielTable[iRealFileLid].cFileVer);
+	iCurrentFileVerNO = atoi(pFileVerInfo);
+
+	if (stat(pCfgFielTable[iRealFileLid].cFileName, &st) < 0) {
+		NVRAM_LOG("Error NVM_DataVerConvert stat \n");
+		return 0;
+	}
+
+	iFileSize = st.st_size;
+	//iFileDesc=NVM_GetFileDesc(file_lid, &rec_size, &rec_num, ISWRITE);
+	iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName, O_RDWR);
+	if (iFileDesc == -1) {
+		NVRAM_LOG("Error NVM_DataVerConvert Open2  file fail: %s\n",
+		          pCfgFielTable[iRealFileLid].cFileName);
+		return 0;
+	}
+	pSrcMem = (char*)malloc(iFileSize);
+	if (pSrcMem == NULL) {
+		NVRAM_LOG("Error NVM_DataVerConvert malloc \n");
+		close(iFileDesc);
+		return 0;
+	}
+	memset(pSrcMem, 0, iFileSize);
+	if (read(iFileDesc, pSrcMem , iFileSize) < 0) {
+		NVRAM_LOG("Read NVRAM fails %d\n", errno);
+		close(iFileDesc);
+		free(pSrcMem);
+		return 0;
+	}
+
+	rec_size = pCfgFielTable[iRealFileLid].i4RecSize;
+	rec_num = pCfgFielTable[iRealFileLid].i4RecNum;
+	pDstMem = (char*)malloc(rec_size * rec_num);
+	if (pDstMem == NULL) {
+		NVRAM_LOG("Error NVM_DataVerConvert malloc2 \n");
+		free(pSrcMem);
+		close(iFileDesc);
+		return 0;
+	}
+	memset(pDstMem, 0, rec_size * rec_num);
+
+	//Call Nvram Data Convert Function
+	/*
+	if(aNvRamConvertFuncTable[file_lid]!=NULL)
+	{
+	  iResult=aNvRamConvertFuncTable[file_lid](iCurrentFileVerNO,iNewFileVerNO,pSrcMem,pDstMem);
+	  if(iResult!=1)
+		  {
+			 NVRAM_LOG("Error NVM_DataVerConvert fail \n");
+			 free(pSrcMem);
+			 free(pDstMem);
+			 close(iFileDesc);
+			 return 0;
+		  }
+	}
+	*/
+	if (pCfgFielTable[iRealFileLid].NVM_DataConvertFunc != NULL) {
+		iResult = pCfgFielTable[iRealFileLid].NVM_DataConvertFunc(iCurrentFileVerNO,
+		          iNewFileVerNO, pSrcMem, pDstMem);
+		if (iResult != 1) {
+			NVRAM_LOG("Error NVM_DataVerConvert fail \n");
+			free(pSrcMem);
+			free(pDstMem);
+			close(iFileDesc);
+			return 0;
+		}
+	} else {
+		NVRAM_LOG("Error NVM_DataVerConvert doesn't exist \n");
+		free(pSrcMem);
+		free(pDstMem);
+		close(iFileDesc);
+		return 0;
+	}
+	close(iFileDesc);
+	//Clear the old content of the file
+	iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName, O_TRUNC | O_RDWR);
+	if (iFileDesc == -1) {
+		NVRAM_LOG("Error NVM_DataVerConvert Open2  file fail: %s\n",
+		          pCfgFielTable[iRealFileLid].cFileName);
+		free(pSrcMem);
+		free(pDstMem);
+		return 0;
+	}
+	//NVRAM_LOG("rec_num:%d,%d\n",rec_num,rec_size);
+	if (write(iFileDesc, pDstMem , rec_num * rec_size) < 0) {
+		printf("WriteFile bt nvram failed:%d\r\n", errno);
+		free(pSrcMem);
+		free(pDstMem);
+		close(iFileDesc);
+		return 0;
+	}
+	free(pSrcMem);
+	free(pDstMem);
+	close(iFileDesc);
+	if (iResult == 1) {
+		//if Data convert successfully, the data version info in ver file should also be changed.
+		NVM_UpdateFileVerNo(file_lid, VerUpdate);
+#if 0
+		iFileDesc = open(g_akCFG_File[iFileVerInfoLID].cFileName, O_RDWR);
+		if (iFileDesc == -1) {
+			NVRAM_LOG("Error NVM_DataVerConvert Open2 version file fail: %s\n",
+			          g_akCFG_File[iFileVerInfoLID].cFileName);
+			return 0;
+		}
+		sprintf(pFileVerInfo, "%03d", iNewFileVerNO);
+		if (bIsNewVerInfo) {
+			if (-1 == lseek(iFileDesc,
+			                (file_lid + 1) * (FILEVERLENGTH + FILENAMELENGTH) + FILENAMELENGTH, SEEK_SET)) {
+				NVRAM_LOG("Error NVM_DataVerConvert lseek version file fail: %s\n",
+				          g_akCFG_File[iFileVerInfoLID].cFileName);
+				close(iFileDesc);
+				return 0;
+			}
+		} else {
+			if (-1 == lseek(iFileDesc, file_lid * FILEVERLENGTH, SEEK_SET)) {
+				NVRAM_LOG("Error NVM_DataVerConvert lseek version file fail: %s\n",
+				          g_akCFG_File[iFileVerInfoLID].cFileName);
+				close(iFileDesc);
+				return 0;
+			}
+		}
+		write(iFileDesc, pFileVerInfo, FILEVERLENGTH);
+		close(iFileDesc);
+#endif
+	}
+	bool maskflag = 0;
+	unsigned int index = 0;
+	for (index = 0; index < g_Performance_File_Count; index++) {
+		if ((unsigned int)file_lid == aPerformance[index].iLID) {
+			maskflag = 1;
+			break;
+		}
+	}
+	if (maskflag == 0) {
+		if (NVM_ProtectDataFile(file_lid, setflag) == 1) {
+			NVRAM_LOG("NVM_DataVerConvert ProtectDataFile Success!!\n");
+		} else {
+			NVRAM_LOG("NVM_DataVerConvert ProtectDataFile SET Fail!!\n");
+			return false;
+		}
+	}
+	return iResult;
+
+}
+static bool NVM_CheckFileNum(unsigned int iOldCommonFileNum,
+                             unsigned int iOldCustomFileNum) {
+	unsigned int iLid = 0;
+	int iNewCustomFileNum = iNvRamFileMaxLID - iCustomBeginLID;
+	if ((iOldCommonFileNum == 0) || (iOldCustomFileNum == 0)) {
+		NVRAM_LOG("File Num is zero, maybe this nvram data is from 32mp,48mpv0 or SD update\n");//support for 32mp and 48mpv0
+		return true;
+	}
+	if ((iOldCommonFileNum == (unsigned int)iCustomBeginLID)
+	        && (iOldCustomFileNum == (unsigned int)iNewCustomFileNum)) {
+		NVRAM_LOG("File Num matches\n");
+		return true;
+	} else {
+		if (iOldCommonFileNum < (unsigned int)iCustomBeginLID
+		        && iOldCommonFileNum > 0) {
+			for (iLid = iOldCommonFileNum; iLid < (unsigned int)iCustomBeginLID; iLid++) {
+				if (!NVM_UpdateFileVerNo(iLid, VerAdd)) {
+					NVRAM_LOG("NVM_CheckFileNum: Update File Fail:%d\n", iLid);
+					return false;
+				}
+			}
+		}
+
+		if (iOldCustomFileNum < (unsigned int)iNewCustomFileNum
+		        && iOldCustomFileNum > 0) {
+			for (iLid = (iCustomBeginLID + iOldCustomFileNum);
+			        iLid < (unsigned int)(iCustomBeginLID + iNewCustomFileNum); iLid++) {
+				if (!NVM_UpdateFileVerNo(iLid, VerAdd)) {
+					NVRAM_LOG("NVM_CheckFileNum: Update File Fail:%d\n", iLid);
+					return false;
+				}
+			}
+		}
+
+		if (iOldCommonFileNum > (unsigned int)iCustomBeginLID) {
+			for (iLid = (unsigned int)iCustomBeginLID; iLid < iOldCommonFileNum; iLid++) {
+				if (!NVM_UpdateFileVerNo(iLid, VerDel)) {
+					NVRAM_LOG("NVM_CheckFileNum: Update File Version Fail:%d\n", iLid);
+					return false;
+				}
+			}
+		}
+
+		if (iOldCustomFileNum > (unsigned int)iNewCustomFileNum) {
+			for (iLid = (iOldCommonFileNum + iNewCustomFileNum);
+			        iLid < (iOldCommonFileNum + iOldCustomFileNum); iLid++) {
+				if (!NVM_UpdateFileVerNo(iLid, VerDel)) {
+					NVRAM_LOG("NVM_CheckFileNum: Update File Version Fail:%d\n", iLid);
+					return false;
+				}
+			}
+		}
+
+	}
+
+	return true;
+}
+/********************************************************************************
+//FUNCTION:
+//		NVM_DataVerConvertAll
+//DESCRIPTION:
+//		this function is called to convert all data acccording to the version info .
+//
+//PARAMETERS:
+//		file_lid: [IN] the lid of nvram file
+//RETURN VALUE:
+//		convert successfully?
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_DataVerConvertAll(unsigned int iOldCommonFileNum,
+                           unsigned int iOldCustomFileNum) {
+	int iLID = 1;
+	int iFileDesc = 0;
+	const TCFG_FILE *pCfgFielTable = NULL;
+	int iRealFileLid;
+	bool bWrongFileVer = false;
+	NVRAM_LOG("Enter DataConvert All\n");
+	if (iOldCommonFileNum == 0 || iOldCustomFileNum == 0) {
+		NVRAM_LOG("File Num is zero, maybe this nvram data is from 32mp,48mpv0 or SD update\n");//support for 32mp and 48mpv0
+		return true;
+	}
+	if (!NVM_CheckVerFile(true)) {
+		NVRAM_LOG("fatal error: cna't find version info file\n");
+		return false;
+	}
+	if (!NVM_CheckFileNum(iOldCommonFileNum, iOldCustomFileNum)) {
+		NVRAM_LOG("NVM_CheckFileNum fail\n");
+		return false;
+	}
+	for (iLID = 1; iLID < iNvRamFileMaxLID; iLID++) {
+		bool bFileExist = true;
+		struct stat st;
+		memset(&st, 0, sizeof(st));
+		pCfgFielTable = NVM_GetCfgFileTable(iLID);
+		if (pCfgFielTable == NULL) {
+			NVRAM_LOG("NVM_GetCfgFileTable Fail!!!\n");
+			return false;
+		}
+
+		if (iLID >= iCustomBeginLID) {
+			iRealFileLid = iLID - iCustomBeginLID;
+		} else {
+			iRealFileLid = iLID;
+		}
+		if (stat(pCfgFielTable[iRealFileLid].cFileName, &st) < 0) {
+			NVRAM_LOG("this file doesn't exist, maybe this file is a new file or camera file\n");
+			bFileExist = false;
+		}
+
+		if (bFileExist) { //Camera NvRam Data should not be checked.
+			if (!NVM_CmpFileVerNo(iLID)) {
+				NVRAM_LOG("DataConvert Begin\n");
+				if (0 == NVM_DataVerConvert(iLID)) {
+					//Clear the old content of the file
+					iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName, O_TRUNC | O_RDWR);
+					if (iFileDesc == -1) {
+						NVRAM_LOG("NVM_Clear File Content Fail\n");
+						return false;
+					}
+					close(iFileDesc);
+
+					NVRAM_LOG("Data Convert Fail,reset the file\n");
+					if (!NVM_ResetFileToDefault(iLID)) {
+						NVRAM_LOG("reset the file fail\n");
+						return false;
+					}
+
+				}
+				NVRAM_LOG("DataConvert End\n");
+			} else {
+				//if version info is the same ,then output the size info
+				NVRAM_LOG("Compare the size of same vesion file\n");
+
+				int iLoadFileSize = (pCfgFielTable[iRealFileLid].i4RecSize) *
+				                    (pCfgFielTable[iRealFileLid].i4RecNum);
+				NVRAM_LOG("Compare the size,the load file size:%d, the nvram file size:%lld\n",
+				          iLoadFileSize, st.st_size);
+				if (iLoadFileSize != st.st_size
+				        && iLoadFileSize + 2 * (int)sizeof(char) != st.st_size) {
+					NVRAM_LOG("NvRam data size can't match between version \n");
+					bWrongFileVer = true;
+				}
+
+			}
+
+		}
+	}
+	NVRAM_LOG("Leave DataConvert All\n");
+	if (bWrongFileVer == true)
+		return false;
+	return true;
+}
+/********************************************************************************
+//FUNCTION:
+//		NVM_CheckFileID
+//DESCRIPTION:
+//		this function is called to check the file lid and record id of nvram file.
+//
+//PARAMETERS:
+//		file_lid: 	[IN]		the lid of nvram file
+//		rec_id:		[IN]		the record id
+//
+//RETURN VALUE:
+//		true is success, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_CheckFileID(int file_lid, int rec_id) {
+	const TCFG_FILE *pCfgFielTable = NULL;
+	int iRealFileLid = 0;
+
+	NVRAM_LOG("iCustomBeginLID = %d\n", iCustomBeginLID);
+	//get the file informatin table. if the file lid is version file, just generate it directly by call GenerateFileVer
+	pCfgFielTable = NVM_GetCfgFileTable(file_lid);
+
+	if (pCfgFielTable == NULL) {
+		NVRAM_LOG("NVM_GetCfgFileTable Fail!!!\n");
+		return false;
+	}
+
+	//if (file_lid >= AP_CFG_CUSTOM_BEGIN_LID) {
+	if (file_lid >= iCustomBeginLID) {
+		//iRealFileLid = file_lid - AP_CFG_CUSTOM_BEGIN_LID;
+		iRealFileLid = file_lid - iCustomBeginLID;
+	} else {
+		iRealFileLid = file_lid;
+	}
+
+	// check the lid and record number
+	if ((rec_id > pCfgFielTable[iRealFileLid].i4RecNum)
+	        || (file_lid >= g_i4MaxNvRamLid)) {
+		return false;
+	}
+
+	return true;
+}
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_ReadFileVerInfo
+//DESCRIPTION:
+//		this function is called to read the version information of nvram file.
+//		if the file version is not right, it wll be reset to default value
+//
+//PARAMETERS:
+//		file_lid:	[IN] the lid of nvram file
+//
+//RETURN VALUE:
+//		refers to the definition of "F_INFO"
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+F_INFO NVM_ReadFileVerInfo(int file_lid) {
+	int iFileDesc;
+	struct stat statbuf;
+	char byte[4] = {0, 0, 0, 0};
+	F_INFO file_info;
+	const TCFG_FILE *pCfgFielTable = NULL;
+	int iRealFileLid = 0;
+	int iResult = 0;
+
+	NVRAM_LOG("NVM_ReadFileVerInfo ++\n");
+	NVRAM_LOG("iCustomBeginLID = %d\n", iCustomBeginLID);
+	memset(&file_info, 0, sizeof(file_info));
+
+	pCfgFielTable = NVM_GetCfgFileTable(file_lid);
+	if (pCfgFielTable == NULL) {
+		NVRAM_LOG("NVM_GetCfgFileTable Fail!!! \n");
+		return file_info;
+	}
+
+	// get the file informatin table. if the file lid is version file,
+	// just generate it directly by call GenerateFileVer
+	//if (file_lid >= AP_CFG_CUSTOM_BEGIN_LID)
+	if (file_lid >= iCustomBeginLID) {
+		//iRealFileLid = file_lid - AP_CFG_CUSTOM_BEGIN_LID;
+		iRealFileLid = file_lid - iCustomBeginLID;
+		NVRAM_LOG("Custom File Lid is %d !!! \n", iRealFileLid);
+	} else {
+		iRealFileLid = file_lid;
+		NVRAM_LOG("Default File Lid is %d !!! \n", iRealFileLid);
+	}
+
+	//check the version file is exist or not. if not, generate it.
+	if (NVM_CheckVerFile(true)) {
+		NVRAM_LOG("Version file is exist on nvram \n");
+		if (!NVM_CmpFileVerNo(file_lid)) {
+			// if file version is not same, reset it.
+			if (pCfgFielTable[iRealFileLid].bDataProcessingType == DataReset) { //Reset Data
+				iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName, O_CREAT | O_TRUNC,
+				                 S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+				if (iFileDesc == -1) {
+					NVRAM_LOG("NVM_Clear File Content Fail_Check Version \n");
+					return file_info;
+				}
+				close(iFileDesc);
+				if (!NVM_ResetFileToDefault(file_lid))
+					return file_info;
+			} else {
+				NVRAM_LOG("NVM_ReadFileVerInfo NVM_CheckFileInfo Fail: Convert!!! \n");
+				//only for test
+				iResult = NVM_DataVerConvert(file_lid);
+				if (iResult == 0) {
+
+					iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName, O_CREAT | O_TRUNC,
+					                 S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+					if (iFileDesc == -1) {
+						NVRAM_LOG("NVM_Clear File Content Fail_Check Version \n");
+						return file_info;
+					}
+					close(iFileDesc);
+					if (!NVM_ResetFileToDefault(file_lid))
+						return file_info;
+				}
+			}
+		} else {
+			NVRAM_LOG("NvRam Read %s File \n", pCfgFielTable[iRealFileLid].cFileName);
+			if (stat(pCfgFielTable[iRealFileLid].cFileName, &statbuf) == -1
+			        || !S_ISREG(statbuf.st_mode)) {
+				NVRAM_LOG("%s File is not exist: Reset!!! \n",
+				          pCfgFielTable[iRealFileLid].cFileName);
+				//only for test
+				if (!NVM_ResetFileToDefault(file_lid))
+					return file_info;
+			}
+		}
+	} else {
+		NVRAM_LOG("Version file is not exist on nvram \n");
+		if (!NVM_GenerateFileVer(true)) {
+			return file_info;
+		} else {
+			NVRAM_LOG("NVM_ReadFileVerInfo Version File is not exist: Reset!!! \n");
+			if (false == NVM_ResetFileToDefault(file_lid)) {
+				NVRAM_LOG("reset fail!\n");
+				return file_info;
+			}
+		}
+	}
+
+	//read the file version
+	//iFileDesc = open(g_akCFG_File[AP_CFG_FILE_VER_INFO_LID].cFileName, O_RDONLY, S_IRUSR);
+	iFileDesc = open(g_akCFG_File[iFileVerInfoLID].cFileName, O_RDONLY);
+	if (iFileDesc == -1) {
+		NVRAM_LOG("Error NVM_ReadFileVerInfo Open version file fail\n");
+		return file_info;
+	}
+    char tempstr[FILENAMELENGTH]={0};
+	bool bIsNewVerInfo;
+    iResult =read(iFileDesc,tempstr,FILENAMELENGTH-1);
+	if (iResult != FILENAMELENGTH-1) {
+		NVBAK_LOG("[NVRAM]: read error. (errno=%d)", errno);
+		close(iFileDesc);
+		return file_info;
+	}
+	tempstr[iResult]='\0';
+	if (0 == strcmp(tempstr, strVerInfo)) {
+		NVRAM_LOG("New version info file\n");
+		bIsNewVerInfo = true;
+	} else {
+		NVRAM_LOG("Old version info file\n");
+		bIsNewVerInfo = false;
+	}
+	if (bIsNewVerInfo) {
+		if (-1 == lseek(iFileDesc,
+		                (file_lid + 1) * (FILEVERLENGTH + FILENAMELENGTH) + FILENAMELENGTH, SEEK_SET)) {
+			NVRAM_LOG("Error NVM_ReadFileVerInfo lseek version file fail\n");
+			close(iFileDesc);
+			return file_info;
+		}
+	} else {
+		if (-1 == lseek(iFileDesc, file_lid * FILEVERLENGTH, SEEK_SET)) {
+			NVRAM_LOG("Error NVM_ReadFileVerInfo lseek version file fail\n");
+			close(iFileDesc);
+			return file_info;
+		}
+	}
+	if (read(iFileDesc, byte, FILEVERLENGTH) != FILEVERLENGTH) {
+		NVBAK_LOG("[NVRAM]: read error. (errno=%d)", errno);
+		close(iFileDesc);
+		return file_info;
+	}
+	close(iFileDesc);
+
+	memcpy(file_info.cFileVer, byte, FILEVERLENGTH);
+	memcpy(file_info.cFileName, pCfgFielTable[iRealFileLid].cFileName,
+	       FILENAMELENGTH);
+	file_info.i4RecSize = pCfgFielTable[iRealFileLid].i4RecSize;
+	file_info.i4RecNum = pCfgFielTable[iRealFileLid].i4RecNum;
+	file_info.i4MaxFileLid = g_i4CFG_File_Count + g_i4CFG_File_Custom_Count;
+
+	NVRAM_LOG("ReadFileVerInfo --\n");
+	return file_info;
+}
+
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_CheckFileInfo
+//DESCRIPTION:
+//		this function is called to check file information, including the file lid
+// 		and record id.if the file version is not right, it wll be reset to default
+//		value.
+//
+//PARAMETERS:
+//		file_lid: 	[IN]		the lid of nvram file
+//		rec_id:	[IN]		the record id
+//
+//RETURN VALUE:
+//		true is success, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_CheckFileInfo(int file_lid, int rec_id) {
+	struct stat statbuf;
+	const TCFG_FILE *pCfgFielTable = NULL;
+	int iRealFileLid = 0;
+
+	NVRAM_LOG("NVM_CheckFileInfo ++\n");
+	//NVRAM_LOG("iCustomBeginLID = %d\n", iCustomBeginLID);
+
+	// get the file informatin table. if the file lid is version file,
+	// just generate it directly by call GenerateFileVer
+	pCfgFielTable = NVM_GetCfgFileTable(file_lid);
+	if (pCfgFielTable == NULL) {
+		NVRAM_LOG("NVM_CheckFileInfo NVM_GetCfgFileTable Fail!!! \n");
+		return false;
+	}
+
+	//if (file_lid < AP_CFG_CUSTOM_BEGIN_LID) {
+	if (file_lid < iCustomBeginLID) {
+		iRealFileLid = file_lid;
+	} else {
+		//iRealFileLid = file_lid - AP_CFG_CUSTOM_BEGIN_LID;
+		iRealFileLid = file_lid - iCustomBeginLID;
+	}
+
+	//check the lid and record id are right or not
+	if (!NVM_CheckFileID(file_lid, rec_id)) {
+		return false;
+	}
+
+	//check the file versio and check the version file is exist or not. if not, generate it.
+	if (NVM_CheckVerFile(true)) {
+		if (!NVM_CmpFileVerNo(file_lid)) {
+			NVRAM_LOG("NVM_CheckFileInfo NVM_CheckFileInfo Fail: Reset!!! \n");
+			if (!NVM_ResetFileToDefault(file_lid)) {
+				return false;
+			}
+		} else {
+			if (stat(pCfgFielTable[iRealFileLid].cFileName, &statbuf) == -1 ||
+			        !S_ISREG(statbuf.st_mode)) {
+				NVRAM_LOG("NVM_CheckFileInfo File is not exist: Reset!!! \n");
+				if (!NVM_ResetFileToDefault(file_lid)) {
+					return false;
+				}
+			}
+		}
+	} else {
+		if (!NVM_GenerateFileVer(true)) {
+			return false;
+		} else {
+			NVRAM_LOG("NVM_CheckFileInfo NVM_GenerateFileVer to Reset!!! \n");
+			if (!NVM_ResetFileToDefault(file_lid)) {
+				return false;
+			}
+		}
+	}
+
+	NVRAM_LOG("NVM_CheckFileInfo --\n");
+	return true;
+}
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_GetFileDesc
+//DESCRIPTION:
+//		this function is called to the desc of nvram file and the information
+//      of record size and number.
+//
+//PARAMETERS:
+//		file_lid: 	[IN]	the lid of nvram file
+//		pRecSize: 	[OUT] 	the record size
+//		pRecNum: 	[OUT] 	the rocord number
+//		IsRead: 	[IN]	true is read, otherwise is write
+//
+//RETURN VALUE:
+//		the file file desc
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+
+F_ID NVM_GetFileDesc(int file_lid, int *pRecSize, int *pRecNum, bool IsRead) {
+	int iFileDesc;
+	int iResult;
+	const TCFG_FILE *pCfgFielTable = NULL;
+	int iRealFileLid = 0;
+	bool Checkflag = 0;
+	F_ID FileID;
+	FileID.iFileDesc = -1;
+	FileID.ifile_lid = file_lid;
+	FileID.bIsRead = IsRead;
+
+	unsigned int index = 0;
+	bool maskflag = 0;
+	bool bRet = false;
+	int index_in_list = -1;
+	struct mtd_info_user info;
+	int i = 0;
+	char cMtdDevName[128] = {0};
+	struct erase_info_user erase_info;
+	for (index = 0; index < g_Performance_File_Count; index++) {
+		if ((unsigned int)file_lid == aPerformance[index].iLID) {
+			maskflag = 1;
+			break;
+		}
+	}
+	//NVRAM_LOG("NVM_GetFileDesc ++\n");
+	if (NVM_Init() < 0) {
+		NVRAM_LOG("NVM_GetFileDesc--NVM_Init fail !!!\n");
+		return FileID;
+	}
+	//NVRAM_LOG("iCustomBeginLID = %d\n", iCustomBeginLID);
+	//get the file informatin table. if the file lid is version file, just generate it directly by call GenerateFileVer
+#ifndef MTK_BASIC_PACKAGE
+	if (!NVM_CheckWritePermission(IsRead, file_lid)) {
+		return FileID;
+	}
+#endif
+
+	pCfgFielTable = NVM_GetCfgFileTable(file_lid);
+	//NVRAM_LOG("NVM_GetCfgFileTable done\n");
+	//if (file_lid < AP_CFG_CUSTOM_BEGIN_LID) {
+	if (file_lid < iCustomBeginLID) {
+		iRealFileLid = file_lid;
+	} else {
+		//iRealFileLid = file_lid - AP_CFG_CUSTOM_BEGIN_LID;
+		iRealFileLid = file_lid - iCustomBeginLID;
+	}
+
+	if (pCfgFielTable == NULL) {
+		NVRAM_LOG("NVM_GetCfgFileTable Fail!!! \n");
+		return FileID;
+	}
+
+	if (nvram_new_partition_support()) {
+		if (NVM_InSpecialLidList(file_lid, &index_in_list)) {
+			if (pRecSize != NULL && pRecNum != NULL) {
+				*pRecSize = pCfgFielTable[iRealFileLid].i4RecSize;
+				*pRecNum  = pCfgFielTable[iRealFileLid].i4RecNum;
+			}
+			goto Solve_Special_Lid;
+		}
+	}
+
+	//get file hanle.
+
+	NVRAM_LOG("%s: Open %s,LID:%d\n", __func__,
+	          pCfgFielTable[iRealFileLid].cFileName, file_lid);
+	//Check if the lid is reserved.
+	if (strcmp(pCfgFielTable[iRealFileLid].cFileName, "Reserved") == 0) {
+		NVRAM_LOG("The LID is Reserved, please check lid you used!!!");
+		return FileID;
+	}
+	if (IsRead) {
+		iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName, O_RDONLY);
+	} else {
+		iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName, O_RDWR);
+	}
+	//get file RecSize and RecNum information
+	if (pRecSize != NULL && pRecNum != NULL) {
+		*pRecSize = pCfgFielTable[iRealFileLid].i4RecSize;
+		*pRecNum  = pCfgFielTable[iRealFileLid].i4RecNum;
+	}
+	if (iFileDesc == -1) { //if file doesn't exist
+		if (access(g_pcNVM_Flag, F_OK) == 0) {
+			NVRAM_LOG("File is not exist, try to restore from binregion!!!");
+			for (i = 0; i < (int)g_Backup_File_Count; i++) {
+				if ((unsigned int)file_lid == aBackupToBinRegion[i].iLID) {
+					if (NVM_RestoreFromBinRegion_OneFile(file_lid, NULL)) {
+						NVRAM_LOG("successfully restore.\n");
+						goto ProtectData;
+					}
+					break;
+				}
+			}
+		}
+		NVRAM_LOG("Create the dir path of %s\n", pCfgFielTable[iRealFileLid].cFileName);
+		iFileDesc = open_file_with_dirs(pCfgFielTable[iRealFileLid].cFileName,
+		                                O_CREAT | O_RDWR, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); //create the file
+		if (iFileDesc == -1) {
+			NVRAM_LOG("Error Num %s\n", (char*)strerror(errno));
+			NVRAM_LOG("Error NVM_GetFileDesc open_file_with_dirs file fail: %s\n",
+			          pCfgFielTable[iRealFileLid].cFileName);
+			} else {
+		close(iFileDesc);
+			}
+		if (!NVM_ResetFileToDefault(file_lid)) {
+			NVRAM_LOG("ResetFileToDefault Failed\n");
+			return FileID;
+		}
+	} else {
+		close(iFileDesc);//avoid the bug of re-open file
+		if (!NVM_CmpFileVerNo(file_lid)) {
+			// if file version is not same, convert it.
+			if (pCfgFielTable[iRealFileLid].bDataProcessingType == DataReset) { //Reset Data
+				NVRAM_LOG("NVM_ReadFileVerInfo NVM_CheckFileInfo Fail: Reset!!! \n");
+				iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName, O_TRUNC);
+				if (iFileDesc == -1) {
+					NVRAM_LOG("NVM_Clear File Content Fail_Get File Desc \n");
+					return FileID;
+				}
+				close(iFileDesc);
+				if (!NVM_ResetFileToDefault(file_lid))
+					return FileID;
+			} else {
+				NVRAM_LOG("NVM_ReadFileVerInfo NVM_CheckFileInfo Fail: Convert!!! \n");
+				//only for test
+				iResult = NVM_DataVerConvert(file_lid);
+				if (iResult == 0) {
+					iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName, O_TRUNC);
+					if (iFileDesc == -1) {
+						NVRAM_LOG("NVM_Clear File Content Fail_Get File Desc \n");
+						return FileID;
+					}
+					close(iFileDesc);
+					if (!NVM_ResetFileToDefault(file_lid))
+						return FileID;
+				}
+			}
+		}
+
+	}
+ProtectData:
+#ifndef MTK_BASIC_PACKAGE
+	if (!NVM_Enc_Dnc_File(file_lid, DECODE)) {
+		NVRAM_LOG("Dec fail!!!\n");
+		return FileID;
+	}
+#endif
+	if (maskflag == 0) {
+		if (NVM_ProtectDataFile(file_lid, Checkflag) == 1) {
+			NVRAM_LOG("NVM_GetFileDesc ProtectDataFile Check Success!!\n");
+		} else {
+			NVRAM_LOG("NVM_GetFileDesc ProtectDataFile Fail!!\n");
+			return FileID;
+		}
+	}
+	if (IsRead) {
+		iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName, O_RDONLY);
+	} else {
+		iFileDesc = open(pCfgFielTable[iRealFileLid].cFileName, O_RDWR | O_SYNC);
+	}
+	//NVRAM_LOG("NVM_GetFileDesc --\n");
+	FileID.iFileDesc = iFileDesc;
+	return FileID;
+
+
+Solve_Special_Lid:
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+        //strcpy(cMtdDevName, g_NVRAM_PROINFO_DEVICE);
+        snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_NVRAM_PROINFO_DEVICE);
+	NVRAM_LOG("New NVRAM partition name is %s.\n", cMtdDevName);
+	bRet = NVM_GetDeviceInfo(cMtdDevName, &info);
+	if (false == bRet) {
+		NVRAM_LOG("NVM_GetSequenceNum: get device info fail!!!\n");
+		return FileID;
+	}
+
+	if (g_new_nvram_lid[index_in_list].start_address % info.erasesize != 0
+	        || g_new_nvram_lid[index_in_list].start_address +
+	        g_new_nvram_lid[index_in_list].size > (long)info.size) {
+		NVRAM_LOG("Lid info in special info is error!!!\n");
+		return FileID;
+	}
+
+	if ((!nvram_emmc_support()) && (!nvram_ufs_support())) {
+		if ((pRecSize != NULL) && ((unsigned int)*pRecSize < info.writesize)) {
+			NVRAM_LOG("*pRecSize %d < info.writesize %d\n", *pRecSize, info.writesize);
+			*pRecSize = info.writesize;
+		}
+	}
+
+	if (*pRecSize % info.writesize != 0) {
+		NVRAM_LOG("Please make sure size for special lid in new nvram partition should alignment %d\n",
+		          info.writesize);
+		return FileID;
+	}
+
+	if (IsRead) {
+		iFileDesc = open(cMtdDevName, O_RDONLY);
+	} else {
+		if ((!nvram_emmc_support()) && (!nvram_ufs_support())) {
+			erase_info.start = g_new_nvram_lid[index_in_list].start_address;
+			erase_info.length = g_new_nvram_lid[index_in_list].size;
+			if (g_new_nvram_lid[index_in_list].size < (long)info.erasesize)
+				erase_info.length = info.erasesize;
+			bRet = NVM_EraseDeviceBlock(cMtdDevName, erase_info);
+			if ( false == bRet) {
+				NVRAM_LOG("NVM_IncSequenceNum: erase device failed");
+				return FileID;
+			}
+		}
+
+		iFileDesc = open(cMtdDevName, O_RDWR | O_SYNC);
+	}
+
+	if (iFileDesc < 0) {
+		NVRAM_LOG("Open new nvram partition fail!!!\n");
+		return FileID;
+	}
+
+	if (lseek(iFileDesc, g_new_nvram_lid[index_in_list].start_address,
+	          SEEK_SET) < 0) {
+		NVRAM_LOG("seek for lid %d fail!!!\n", file_lid);
+		close(iFileDesc);
+		return FileID;
+	}
+	FileID.iFileDesc = iFileDesc;
+	return FileID;
+
+}
+
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_CloseFileDesc
+//DESCRIPTION:
+//		this function is called to close the file desc which is open by NVM_GetFileDesc.
+//
+//PARAMETERS:
+//		hFile: 	[IN] the file desc
+//
+//RETURN VALUE:
+//		true is success, otherwise is fail
+//
+//DEPENDENCY:
+//		GetFileDesc must have been called
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_CloseFileDesc(F_ID FileID) {
+
+	int index_in_list = -1;
+	bool Setflag = 1;
+	if (nvram_new_partition_support()) {
+		if (NVM_InSpecialLidList(FileID.ifile_lid, &index_in_list)) {
+			//the handle of pro info shoud be closed
+			if (FileID.iFileDesc == -1) {
+				return false;
+			}
+
+#if 0
+			//if (!FileID.bIsRead)
+			{
+				if (0 != fsync(FileID.iFileDesc)) {
+					NVRAM_LOG("NVM_CloseFileDesc fsync file error!!\n");
+					return false;
+				}
+			}
+#endif
+			if (0 != close(FileID.iFileDesc)) {
+				NVRAM_LOG("NVM_CloseFileDesc Close file error!!\n");
+				return false;
+			}
+			return true;
+		}
+	}
+
+	if (FileID.iFileDesc == -1) {
+		return false;
+	}
+
+	//if (!FileID.bIsRead)
+	{
+		if (0 != fsync(FileID.iFileDesc)) {
+			NVRAM_LOG("NVM_CloseFileDesc fsync file error!!\n");
+			return false;
+		}
+	}
+
+	if (0 != close(FileID.iFileDesc)) {
+		NVRAM_LOG("NVM_CloseFileDesc Close file error!!\n");
+		return false;
+	}
+	bool maskflag = 0;
+	unsigned int index = 0;
+	for (index = 0; index < g_Performance_File_Count; index++) {
+		if ((unsigned int)FileID.ifile_lid == aPerformance[index].iLID) {
+			maskflag = 1;
+			break;
+		}
+	}
+	if (maskflag || FileID.bIsRead) {
+#ifndef MTK_BASIC_PACKAGE
+		if (!NVM_Enc_Dnc_File(FileID.ifile_lid, ENCODE)) {
+			NVRAM_LOG("Enc fail!!!\n");
+			return false;
+		}
+#endif
+	}
+	if (maskflag)
+		return true;
+	if (true == FileID.bIsRead) {
+		NVRAM_LOG("NVM_CloseFileDesc: Open by Readonly, no need to check when close\n");
+		return true;
+	}
+	if (NVM_ProtectDataFile(FileID.ifile_lid, Setflag) == 1) {
+		NVRAM_LOG("NVM_CloseFileDesc ProtectDataFile Success!!\n");
+#ifndef MTK_BASIC_PACKAGE
+		if (!NVM_Enc_Dnc_File(FileID.ifile_lid, ENCODE)) {
+			NVRAM_LOG("Enc fail!!!\n");
+			return false;
+		}
+#endif
+		return true;
+	} else {
+		NVRAM_LOG("NVM_CloseFileDesc ProtectDataFile SET Fail!!\n");
+		return false;
+	}
+
+}
+
+unsigned int NVM_GetSequenceNum(void) {
+	nvram_journal_handle_t *journal;
+	struct mtd_info_user info;
+	int fd;
+	int iResult;
+	unsigned int sequence = 0;
+	bool bRet;
+	loff_t offset = 0;
+	char *buffer = NULL;
+	char cMtdDevName[128] = {0};
+
+
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	if (nvram_platform_layout_version == 0)
+            snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_LOG_DEVICE);
+	else if (nvram_platform_layout_version == 1) {
+		NVRAM_LOG("NVM_GetSequenceNum: could't support in nvram layout version %d\n",
+		          nvram_platform_layout_version);
+		return true;
+		//	ret = NVM_GetDeviceInfo(MISC_DEVICE, &info);
+	} else {
+		NVRAM_LOG("NVM_GetSequenceNum: invalid nvram layout version %d\n",
+		          nvram_platform_layout_version);
+		return false;
+	}
+	bRet = NVM_GetDeviceInfo(cMtdDevName, &info);
+	if (false == bRet) {
+		NVRAM_LOG("NVM_GetSequenceNum: get device info fail!!!\n");
+		return -1;
+	}
+	if (info.writesize < sizeof(nvram_journal_handle_t) || info.size == 0) {
+		NVRAM_LOG("NVM_GetSequenceNum: journal size is larger than device write size!!!\n");
+		return -1;
+	}
+
+	journal = (nvram_journal_handle_t *)malloc(sizeof(nvram_journal_handle_t));
+	if (NULL == journal) {
+		NVRAM_LOG("NVM_GetSequenceNum : allocate for journal fail!!!\n");
+		return false;
+	}
+	memset(journal, 0, sizeof(nvram_journal_handle_t));
+
+	buffer = (char *) malloc(info.writesize);
+	if (NULL == buffer) {
+		NVRAM_LOG("NVM_GetSequenceNum: allocate for temp buffer fail!!!\n");
+		free(journal);
+		return -1;
+	}
+	memset(buffer, 0, info.writesize);
+
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVRAM_LOG("NVM_GetSequenceNum: dumchar open fail!!!\n");
+		free(journal);
+		free(buffer);
+		return -1;
+	}
+
+	offset = info.size - info.erasesize;
+	iResult = lseek(fd, offset, SEEK_SET);
+	if (iResult  < 0) {
+		NVRAM_LOG("NVM_GetSequenceNum: seek log device fail!!!\n");
+		free(journal);
+		free(buffer);
+		close(fd);
+		return -1;
+	}
+	iResult = read(fd, buffer, info.writesize);
+	if ((unsigned int)iResult != info.writesize) {
+		NVRAM_LOG("NVM_GetSequenceNum: read nvram super page fail, iResult = %d !!!\n",
+		          iResult);
+		free(journal);
+		free(buffer);
+		close(fd);
+		return -1;
+	}
+	close(fd);
+	memcpy(journal, buffer, sizeof(nvram_journal_handle_t));
+	if (journal->h_magic == NVRAM_JOURNAL_MAGIC) {
+		sequence = journal->h_sequence;
+	} else {
+		sequence = 0;
+	}
+	free(journal);
+	free(buffer);
+	return sequence;
+}
+
+bool NVM_IncSequenceNum(unsigned int sequence) {
+	nvram_journal_handle_t *journal;
+	struct mtd_info_user info;
+
+	struct erase_info_user erase_info;
+
+	int fd;
+	int iResult;
+	bool bRet;
+	loff_t offset;
+	time_t tm;
+	char *buffer = NULL;
+	char cMtdDevName[128] = {0};
+
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	if (nvram_platform_layout_version == 0)
+		snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_LOG_DEVICE);
+	else if (nvram_platform_layout_version == 1) {
+		NVRAM_LOG("NVM_IncSequenceNum: could't support in nvram layout version %d\n",
+		          nvram_platform_layout_version);
+		return true;
+		//	ret = NVM_GetDeviceInfo(MISC_DEVICE, &info);
+	} else {
+		NVRAM_LOG("NVM_IncSequenceNum: invalid nvram layout version %d\n",
+		          nvram_platform_layout_version);
+		return false;
+	}
+	bRet = NVM_GetDeviceInfo(cMtdDevName, &info);
+	if (false == bRet) {
+		NVRAM_LOG("NVM_IncSequenceNum: get device info fail!!!\n");
+		return false;
+	}
+	if (info.writesize < sizeof(nvram_journal_handle_t) || info.size == 0) {
+		NVRAM_LOG("NVM_IncSequenceNum: journal size is larger than device write size!!!\n");
+		return false;
+	}
+
+	journal = (nvram_journal_handle_t *)malloc(sizeof(nvram_journal_handle_t));
+	if (NULL == journal) {
+		NVRAM_LOG("NVM_IncSequenceNum: allocate for journal fail!!!\n");
+		return false;
+	}
+	memset(journal, 0, sizeof(nvram_journal_handle_t));
+
+	buffer = (char *) malloc(info.writesize);
+	if (NULL == buffer) {
+		NVRAM_LOG("NVM_IncSequenceNum: allocate for temp buffer fail!!!\n");
+		free(journal);
+		return false;
+	}
+	memset(buffer, 0, info.writesize);
+
+	tm = time(&tm);
+	journal->h_magic = NVRAM_JOURNAL_MAGIC;
+	journal->h_type = NVRAM_JOURNAL_SUPER_PAGE;
+	journal->h_sequence = ++sequence;
+	journal->h_utc_time = tm;
+
+	offset = info.size - info.erasesize;
+	if ((!nvram_emmc_support()) && (!nvram_ufs_support())) {
+		erase_info.start = offset;
+		erase_info.length = info.erasesize;
+
+
+		bRet = NVM_EraseDeviceBlock(cMtdDevName, erase_info);
+		if ( false == bRet) {
+			NVRAM_LOG("NVM_IncSequenceNum: erase device failed\n");
+			free(journal);
+			free(buffer);
+			return false;
+		}
+	}
+
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVRAM_LOG("NVM_IncSequenceNum: dumchar open fail!!!\n");
+		free(journal);
+		free(buffer);
+		return false;
+	}
+	iResult = lseek(fd, offset, SEEK_SET);
+	if (iResult  < 0) {
+		NVRAM_LOG("NVM_IncSequenceNum: seek log device fail!!!\n");
+		free(journal);
+		free(buffer);
+		close(fd);
+		return false;
+	}
+	memcpy(buffer, journal, sizeof(nvram_journal_handle_t));
+	iResult = write(fd, buffer, info.writesize);
+	if ((unsigned int)iResult != info.writesize) {
+		NVRAM_LOG("NVM_IncSequenceNum: read nvram super page fail, iResult = %d !!!\n",
+		          iResult);
+		free(journal);
+		free(buffer);
+		close(fd);
+		return false;
+	}
+	free(journal);
+	free(buffer);
+	close(fd);
+	return true;
+}
+
+//add by min
+bool NVM_HistoryLog_add_file(const char *fix_dir, const char *pre_fix_file,nvram_journal_handle_t *journal)
+{
+     DIR *dir;
+     struct dirent *entry;
+     struct stat  st;
+     int size=0;
+     int read_size=0;
+     char acSrcPathName[MAX_NAMESIZE];
+     int fd;
+     unsigned char buffer[MAX_BARCODE_LENGTH];//3 barcode is 66*3 < MAX_BARCODE_LENGTH
+     NVRAM_LOG("NVRAM_HistoryLog: dir is  %s\n",fix_dir);
+     dir = opendir(fix_dir);
+     int num=0;// how much barcode file
+    if(dir == NULL)
+    {
+        NVRAM_LOG("NVRAM_HistoryLog: open dir %s error %s\n",fix_dir, (char*)strerror(errno));
+        return false;
+     } 
+    while(1)
+    {
+         entry = readdir(dir);
+         if(entry == NULL)
+         {
+            break;
+         }
+
+         if (!strcmp(entry->d_name, ".")|| !strcmp(entry->d_name, ".."))
+         {
+    		continue;
+          }
+          if(strncmp(entry->d_name,pre_fix_file,strlen(pre_fix_file)) == 0)
+          {
+              if(num >= 3)
+                  break;// total 3 barcode file
+              sprintf(acSrcPathName, "%s/%s", fix_dir, entry->d_name);
+              NVRAM_LOG("NVRAM_HistoryLog: file is  %s",acSrcPathName);
+              if(stat(acSrcPathName,&st)<0)
+              {
+                    NVRAM_LOG("NVRAM_HistoryLog: Error %s stat ",acSrcPathName);
+     	            closedir(dir);
+                    return false;
+              }
+             size=st.st_size;
+             fd= open(acSrcPathName,O_RDONLY);
+             if (fd < 0)
+             {
+				NVRAM_LOG("NVRAM_HistoryLog: open %s error %s\n",acSrcPathName, (char*)strerror(errno) );
+                closedir(dir);
+				return false;
+    	     }
+             NVRAM_LOG("NVRAM_HistoryLog: sizeofbuffer is %lu\n",sizeof(buffer));
+             read_size= (int)read(fd, buffer, size);
+              if (read_size != size)
+             {
+		         NVRAM_LOG("NVRAM_HistoryLog: read_size is %d",read_size);
+                 close(fd);
+                 closedir(dir);
+		         return false;
+             }
+             NVRAM_LOG("NVRAM_HistoryLog: readsize is %d\n",read_size);
+             if(120 == read_size)
+             {
+                 memcpy(journal->imei, entry->d_name, MAX_IMEI_LENGTH);//add by min, copy IMEI_FLAG to joural
+                 memcpy(journal->imei+strlen(entry->d_name), buffer, size);//add by min, copy imei to joural
+             }
+             else if(66 == read_size)
+             {
+				memcpy(journal->barcode+num*(size+strlen(entry->d_name)), entry->d_name, strlen(entry->d_name));//add by min, copy BARCODE_FLAG to joural
+				memcpy(journal->barcode+num*(size+strlen(entry->d_name))+strlen(entry->d_name), buffer , size);//add by min, copy barcode to joural
+			 }
+			 else
+             {
+                NVRAM_LOG("NVRAM_HistoryLog: read_size is wrong %d",read_size);
+             }
+             num++;
+             close(fd);
+         }
+    }
+    closedir(dir);
+    return true;
+//  add
+}
+//add by min
+//add by min
+bool NVM_HistoryLog_Time(unsigned int level, const char *func, unsigned int line,const char *log,unsigned char *time)
+{//add
+	NVRAM_LOG("NVM_HistoryLog: time is  %s\n",time);
+    bool bRet = false;
+    int iResult = 0;
+    int fd;
+    //time_t tm;//don't use tm
+    loff_t start_address;
+    loff_t offset;
+    unsigned int writepages_per_block = 0;
+    unsigned int sequence = 0;
+    nvram_journal_handle_t *journal;
+    struct mtd_info_user info;
+   
+    struct erase_info_user erase_info;
+    
+    char *buffer = NULL;
+	char cMtdDevName[128] = {0};
+    //just when log level larger than default log level, the log will print
+    if (level < DEFAULT_LOG_LEVEL)
+        return true;
+
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+    if (nvram_platform_layout_version == 0)
+        snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_LOG_DEVICE);
+	else if (nvram_platform_layout_version == 1)
+	{
+		NVRAM_LOG("NVM_HistoryLog: could't support in nvram layout version %d\n",nvram_platform_layout_version);
+		 return true;
+		//	ret = NVM_GetDeviceInfo(MISC_DEVICE, &info);
+	}
+	else
+	{
+	 	NVRAM_LOG("NVM_HistoryLog: invalid nvram layout version %d\n",nvram_platform_layout_version);
+	 	return false;
+	}
+   	bRet =  NVM_GetDeviceInfo(cMtdDevName, &info);
+	if (false == bRet)
+	{
+        NVRAM_LOG("NVM_HistoryLog : get device info failed!!!\n");
+        return false;
+    }
+    if(info.writesize < sizeof(nvram_journal_handle_t) || info.size == 0)
+	{
+        NVRAM_LOG("NVM_HistoryLog : journal size is larger than device write size!!!\n");
+        return false;
+    }
+
+    //calculate the location for write log
+    writepages_per_block = info.erasesize/info.writesize;
+    sequence = NVM_GetSequenceNum();
+    if(sequence < 0)
+	{
+        NVRAM_LOG("NVM_HistoryLog : get sequence number fail!!!\n");
+        return false;
+    }
+
+    start_address = (loff_t)((loff_t)info.size - ((loff_t)nvram_platform_log_block * (loff_t)info.erasesize));
+    offset = (loff_t)((loff_t)info.writesize * ((loff_t)sequence % ((loff_t)writepages_per_block * ((loff_t)nvram_platform_log_block - 1))));
+
+    if((!nvram_emmc_support()) && (!nvram_ufs_support()))
+	{
+	    if ((sequence % writepages_per_block ) == 0)
+		{
+			erase_info.start = start_address + offset;
+			erase_info.length = info.erasesize;
+
+		   bRet = NVM_EraseDeviceBlock(cMtdDevName, erase_info);
+		   if (false == bRet)
+		   {
+	           NVRAM_LOG("NVM_HistoryLog : erase super block fail!!!\n");
+	           return false;
+	       }
+	    }
+    }
+    journal = (nvram_journal_handle_t *)malloc(sizeof(nvram_journal_handle_t));
+    if (NULL == journal) {
+        NVRAM_LOG("NVM_HistoryLog : allocate for journal fail!!!\n");
+        return false;
+    }
+    memset(journal, 0, sizeof(nvram_journal_handle_t));
+
+    buffer = (char*)malloc(info.writesize);
+    if (NULL == buffer) {
+        NVRAM_LOG("NVM_HistoryLog : allocate for temp buffer fail!!!\n");
+        free(journal);
+        return false;
+    }
+    memset(buffer, 0, info.writesize);
+
+    //tm = time(&tm);//don't use tm
+    journal->h_magic = NVRAM_JOURNAL_MAGIC;
+    journal->h_type = NVRAM_JOURNAL_LOG_PAGE;
+    journal->h_sequence = sequence;
+    //journal->h_utc_time = time;//don't use tm
+    journal->h_func_line = line;
+    //by min,IMEI
+    if(!NVM_HistoryLog_add_file(g_pcNVM_MDRdebFile, PREFIX_IMEI,journal))
+     {
+        NVRAM_LOG("NVRAM_HistoryLog: get IMEI error");
+		free(journal);
+		free(buffer);
+        return false;
+     }
+    //by min,BARCODE
+    if(!NVM_HistoryLog_add_file(g_pcNVM_MDCalFile, PREFIX_BARCODE,journal))
+    {
+       NVRAM_LOG("NVRAM_HistoryLog: get barcode error");
+	   free(journal);
+	   free(buffer);
+       return false;
+    }
+    memcpy(journal->h_func_name, func , strlen(func));
+    snprintf(journal->h_log, MAX_LOG_LENGTH, "%s:%s", time, log);
+    journal->h_log_lengeh = strlen(journal->h_log);
+
+	fd = open(cMtdDevName, O_RDWR);
+    if (fd < 0)
+	{
+        NVRAM_LOG("NVM_HistoryLog : open log device fail!!!\n");
+        free(journal);
+        free(buffer);
+        return false;
+    }
+    iResult = lseek(fd, start_address + offset, SEEK_SET);
+    if (iResult  < 0)
+	{
+        NVRAM_LOG("NVM_HistoryLog : seek log device fail!!!\n");
+        free(journal);
+        free(buffer);
+        close(fd);
+        return false;
+    }
+    memcpy(buffer, journal, sizeof(nvram_journal_handle_t));
+    iResult = write(fd, buffer, info.writesize);
+    if((unsigned int)iResult != info.writesize)
+	{
+        NVRAM_LOG("NVM_HistoryLog : write log device fail, iResult = %d !!!\n", iResult);
+        free(journal);
+        free(buffer);
+        close(fd);
+        return false;
+    }
+    free(journal);
+    free(buffer);
+    close(fd);
+    //sync();
+    bRet = NVM_IncSequenceNum(sequence);
+    if( false == bRet)
+	{
+        NVRAM_LOG("NVM_HistoryLog : update sequence number fail!!!\n");
+        return false;
+    }
+
+    return true;
+	
+//add	
+}
+
+bool NVM_HistoryLog(unsigned int level, const char *func, unsigned int line,
+                    const char *log) {
+	bool bRet = false;
+	int iResult = 0;
+	int fd;
+	time_t tm;
+	loff_t start_address;
+	loff_t offset;
+	unsigned int writepages_per_block = 0;
+	unsigned int sequence = 0;
+	nvram_journal_handle_t *journal;
+	struct mtd_info_user info;
+
+	struct erase_info_user erase_info;
+
+	char *buffer = NULL;
+	char cMtdDevName[128] = {0};
+	//just when log level larger than default log level, the log will print
+	if (level < DEFAULT_LOG_LEVEL)
+		return true;
+
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	if (nvram_platform_layout_version == 0)
+		//strcpy(cMtdDevName, g_LOG_DEVICE);
+                snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_LOG_DEVICE);
+	else if (nvram_platform_layout_version == 1) {
+		NVRAM_LOG("NVM_HistoryLog: could't support in nvram layout version %d\n",
+		          nvram_platform_layout_version);
+		return true;
+		//	ret = NVM_GetDeviceInfo(MISC_DEVICE, &info);
+	} else {
+		NVRAM_LOG("NVM_HistoryLog: invalid nvram layout version %d\n",
+		          nvram_platform_layout_version);
+		return false;
+	}
+	bRet =  NVM_GetDeviceInfo(cMtdDevName, &info);
+	if (false == bRet) {
+		NVRAM_LOG("NVM_HistoryLog : get device info failed!!!\n");
+		return false;
+	}
+	if (info.writesize < sizeof(nvram_journal_handle_t) || info.size == 0) {
+		NVRAM_LOG("NVM_HistoryLog : journal size is larger than device write size!!!\n");
+		return false;
+	}
+
+	//calculate the location for write log
+	writepages_per_block = info.erasesize / info.writesize;
+	sequence = NVM_GetSequenceNum();
+	if (sequence < 0) {
+		NVRAM_LOG("NVM_HistoryLog : get sequence number fail!!!\n");
+		return false;
+	}
+
+	start_address = info.size - ((loff_t)nvram_platform_log_block *
+	                             (loff_t)info.erasesize);
+	offset = (loff_t)((loff_t)info.writesize * ((loff_t)sequence % ((loff_t)writepages_per_block *
+	                                    (loff_t)(nvram_platform_log_block - 1))));
+
+	if ((!nvram_emmc_support()) && (!nvram_ufs_support())) {
+		if ((sequence % writepages_per_block ) == 0) {
+			erase_info.start = start_address + offset;
+			erase_info.length = info.erasesize;
+
+			bRet = NVM_EraseDeviceBlock(cMtdDevName, erase_info);
+			if (false == bRet) {
+				NVRAM_LOG("NVM_HistoryLog : erase super block fail!!!\n");
+				return false;
+			}
+		}
+	}
+	journal = (nvram_journal_handle_t *)malloc(sizeof(nvram_journal_handle_t));
+	if (NULL == journal) {
+		NVRAM_LOG("NVM_HistoryLog : allocate for journal fail!!!\n");
+		return false;
+	}
+	memset(journal, 0, sizeof(nvram_journal_handle_t));
+
+	buffer = (char*)malloc(info.writesize);
+	if (NULL == buffer) {
+		NVRAM_LOG("NVM_HistoryLog : allocate for temp buffer fail!!!\n");
+		free(journal);
+		return false;
+	}
+	memset(buffer, 0, info.writesize);
+
+	tm = time(&tm);
+	journal->h_magic = NVRAM_JOURNAL_MAGIC;
+	journal->h_type = NVRAM_JOURNAL_LOG_PAGE;
+	journal->h_sequence = sequence;
+	journal->h_utc_time = tm;
+	journal->h_func_line = line;
+
+	memcpy(journal->h_func_name, func , strlen(func));
+	snprintf(journal->h_log, MAX_LOG_LENGTH, "%s:%s", ctime(&tm), log);
+	journal->h_log_lengeh = strlen(journal->h_log);
+
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVRAM_LOG("NVM_HistoryLog : open log device fail!!!\n");
+		free(journal);
+		free(buffer);
+		return false;
+	}
+	iResult = lseek(fd, start_address + offset, SEEK_SET);
+	if (iResult  < 0) {
+		NVRAM_LOG("NVM_HistoryLog : seek log device fail!!!\n");
+		free(journal);
+		free(buffer);
+		close(fd);
+		return false;
+	}
+	memcpy(buffer, journal, sizeof(nvram_journal_handle_t));
+	iResult = write(fd, buffer, info.writesize);
+	if ((unsigned int)iResult != info.writesize) {
+		NVRAM_LOG("NVM_HistoryLog : write log device fail, iResult = %d !!!\n",
+		          iResult);
+		free(journal);
+		free(buffer);
+		close(fd);
+		return false;
+	}
+	free(journal);
+	free(buffer);
+	close(fd);
+	//sync();
+	bRet = NVM_IncSequenceNum(sequence);
+	if ( false == bRet) {
+		NVRAM_LOG("NVM_HistoryLog : update sequence number fail!!!\n");
+		return false;
+	}
+
+	return true;
+}
+
+unsigned int NVM_MiscGetSeqNum(void) {
+	nvram_journal_handle_t *journal;
+	struct mtd_info_user info;
+	int fd;
+	int iResult;
+	unsigned int sequence = 0;
+	bool bRet;
+	loff_t offset = 0;
+	char *buffer = NULL;
+	char cMtdDevName[128] = {0};
+
+	if ((!nvram_emmc_support()) && (!nvram_ufs_support())) {
+		NVRAM_LOG("NVM_MiscGetSeqNum: not support NAND\n");
+		return false;
+	}
+	if (nvram_platform_layout_version == 1) {
+		NVRAM_LOG("NVM_MiscGetSeqNum: could't support in nvram layout version %d\n",
+		          nvram_platform_layout_version);
+		return -1;
+	}
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	//strcpy(cMtdDevName, g_MISC_DEVICE);
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_MISC_DEVICE);
+	bRet = NVM_GetDeviceInfo(cMtdDevName, &info);
+	if (false == bRet) {
+		NVRAM_LOG("NVM_MiscGetSeqNum: get device info fail!!!\n");
+		return -1;
+	}
+	if (info.writesize < sizeof(nvram_journal_handle_t) || info.size == 0) {
+		NVRAM_LOG("NVM_MiscGetSeqNum: journal size is larger than device write size!!!\n");
+		return -1;
+	}
+
+	journal = (nvram_journal_handle_t *)malloc(sizeof(nvram_journal_handle_t));
+	if (NULL == journal) {
+		NVRAM_LOG("NVM_MiscGetSeqNum : allocate for journal fail!!!\n");
+		return false;
+	}
+	memset(journal, 0, sizeof(nvram_journal_handle_t));
+
+	buffer = (char *) malloc(info.writesize);
+	if (NULL == buffer) {
+		NVRAM_LOG("NVM_MiscGetSeqNum: allocate for temp buffer fail!!!\n");
+		free(journal);
+		return -1;
+	}
+	memset(buffer, 0, info.writesize);
+	if (nvram_platform_layout_version == 1) {
+		NVRAM_LOG("NVM_MiscGetSeqNum: could't support in nvram layout version %d\n",
+		          nvram_platform_layout_version);
+		return -1;
+	}
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVRAM_LOG("NVM_MiscGetSeqNum: dumchar open fail!!!\n");
+		free(journal);
+		free(buffer);
+		return -1;
+	}
+	offset = (loff_t)((loff_t)info.size - (loff_t)info.erasesize * (loff_t)nvram_misc_log_block_offset);
+
+	iResult = lseek(fd, offset, SEEK_SET);
+	if (iResult  < 0) {
+		NVRAM_LOG("NVM_MiscGetSeqNum: seek log device fail!!!\n");
+		free(journal);
+		free(buffer);
+		close(fd);
+		return -1;
+	}
+	iResult = read(fd, buffer, info.writesize);
+	if ((unsigned int)iResult != info.writesize) {
+		NVRAM_LOG("NVM_MiscGetSeqNum: read nvram super page fail, iResult = %d !!!\n",
+		          iResult);
+		free(journal);
+		free(buffer);
+		close(fd);
+		return -1;
+	}
+	close(fd);
+	memcpy(journal, buffer, sizeof(nvram_journal_handle_t));
+	if (journal->h_magic == NVRAM_MISC_JOURNAL_MAGIC) {
+		sequence = journal->h_sequence;
+	} else {
+		sequence = 0;
+	}
+	free(journal);
+	free(buffer);
+	return sequence;
+}
+
+bool NVM_MiscIncSeqNum(unsigned int sequence) {
+	nvram_journal_handle_t *journal;
+	struct mtd_info_user info;
+	char cMtdDevName[128] = {0};
+
+	int fd;
+	int iResult;
+	bool bRet;
+	loff_t offset;
+	time_t tm;
+	char *buffer = NULL;
+
+	if ((!nvram_emmc_support()) && (!nvram_ufs_support())) {
+		NVRAM_LOG("NVM_MiscIncSeqNum: not support NAND\n");
+		return false;
+	}
+	if (nvram_platform_layout_version == 1) {
+		NVRAM_LOG("NVM_MiscGetSeqNum: could't support in nvram layout version %d\n",
+		          nvram_platform_layout_version);
+		return -1;
+	}
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	//strcpy(cMtdDevName, g_MISC_DEVICE);
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_MISC_DEVICE);
+	bRet = NVM_GetDeviceInfo(cMtdDevName, &info);
+	if (false == bRet) {
+		NVRAM_LOG("NVM_MiscIncSeqNum: get device info fail!!!\n");
+		return false;
+	}
+	if (info.writesize < sizeof(nvram_journal_handle_t) || info.size == 0) {
+		NVRAM_LOG("NVM_MiscIncSeqNum: journal size is larger than device write size!!!\n");
+		return false;
+	}
+
+	journal = (nvram_journal_handle_t *)malloc(sizeof(nvram_journal_handle_t));
+	if (NULL == journal) {
+		NVRAM_LOG("NVM_MiscIncSeqNum: allocate for journal fail!!!\n");
+		return false;
+	}
+	memset(journal, 0, sizeof(nvram_journal_handle_t));
+
+	buffer = (char *) malloc(info.writesize);
+	if (NULL == buffer) {
+		NVRAM_LOG("NVM_MiscIncSeqNum: allocate for temp buffer fail!!!\n");
+		free(journal);
+		return false;
+	}
+	memset(buffer, 0, info.writesize);
+
+	tm = time(&tm);
+	journal->h_magic = NVRAM_MISC_JOURNAL_MAGIC;
+	journal->h_type = NVRAM_JOURNAL_SUPER_PAGE;
+	journal->h_sequence = ++sequence;
+	journal->h_utc_time = tm;
+
+
+	offset = (loff_t)((loff_t)info.size - (loff_t)info.erasesize * (loff_t)nvram_misc_log_block_offset);
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVRAM_LOG("NVM_MiscIncSeqNum: dumchar open fail!!!\n");
+		free(journal);
+		free(buffer);
+		return false;
+	}
+	iResult = lseek(fd, offset, SEEK_SET);
+	if (iResult  < 0) {
+		NVRAM_LOG("NVM_MiscIncSeqNum: seek log device fail!!!\n");
+		free(journal);
+		free(buffer);
+		close(fd);
+		return false;
+	}
+	memcpy(buffer, journal, sizeof(nvram_journal_handle_t));
+	iResult = write(fd, buffer, info.writesize);
+	if ((unsigned int)iResult != info.writesize) {
+		NVRAM_LOG("NVM_MiscIncSeqNum: read nvram super page fail, iResult = %d !!!\n",
+		          iResult);
+		free(journal);
+		free(buffer);
+		close(fd);
+		return false;
+	}
+	free(journal);
+	free(buffer);
+	close(fd);
+
+	return true;
+}
+
+
+bool NVM_MiscLog(unsigned int level, const char *func, unsigned int line,
+                 const char *log) {
+	bool bRet = false;
+	int iResult = 0;
+	int fd;
+	time_t tm;
+	loff_t start_address;
+	loff_t offset;
+	unsigned int writepages_per_block = 0;
+	unsigned int sequence = 0;
+	nvram_journal_handle_t *journal;
+	struct mtd_info_user info;
+
+	char *buffer = NULL;
+	char cMtdDevName[128] = {0};
+
+	(void)(level);
+	if (nvram_platform_layout_version == 1) {
+		NVRAM_LOG("NVM_MiscLog: not support in layout version %d\n",
+		          nvram_platform_layout_version);
+		return false;
+	}
+
+	if ((!nvram_emmc_support()) && (!nvram_ufs_support())) {
+		NVRAM_LOG("NVM_MiscLog: not support NAND\n");
+		return false;
+	}
+
+	//Get the info about log_device(/dev/nvram), we use the last 16 block(2M) for nvram journal log
+	if (nvram_platform_layout_version == 1) {
+		NVRAM_LOG("NVM_MiscLog : couldn't support in this nvram layout %d\n",
+		          nvram_platform_layout_version);
+		return false;
+	}
+	memset(cMtdDevName, 0, sizeof cMtdDevName);
+	//strcpy(cMtdDevName, g_MISC_DEVICE);
+	snprintf(cMtdDevName, sizeof(cMtdDevName),"%s", g_MISC_DEVICE);
+	bRet =  NVM_GetDeviceInfo(cMtdDevName, &info);
+	if (false == bRet) {
+		NVRAM_LOG("NVM_MiscLog : get device info failed!!!\n");
+		return false;
+	}
+	if (info.writesize < sizeof(nvram_journal_handle_t) || info.size == 0) {
+		NVRAM_LOG("NVM_MiscLog : journal size is larger than device write size!!!\n");
+		return false;
+	}
+
+	//calculate the location for write log
+	writepages_per_block = info.erasesize / info.writesize;
+	sequence = NVM_MiscGetSeqNum();
+	if (sequence < 0) {
+		NVRAM_LOG("NVM_MiscLog : get sequence number fail!!!\n");
+		return false;
+	}
+
+
+	//save NVRAM misc log at 3nd block of misc region
+	start_address = info.size - (loff_t)info.erasesize * (loff_t)
+	                nvram_misc_log_block_offset ;
+	//sequence number always in first write unit
+	offset = (loff_t)((loff_t)info.writesize * ((loff_t)sequence % (loff_t)writepages_per_block + 1));
+
+
+	journal = (nvram_journal_handle_t *)malloc(sizeof(nvram_journal_handle_t));
+	if (NULL == journal) {
+		NVRAM_LOG("NVM_MiscLog : allocate for journal fail!!!\n");
+		return false;
+	}
+	memset(journal, 0, sizeof(nvram_journal_handle_t));
+
+	buffer = (char*)malloc(info.writesize);
+	if (NULL == buffer) {
+		NVRAM_LOG("NVM_MiscLog : allocate for temp buffer fail!!!\n");
+		free(journal);
+		return false;
+	}
+	memset(buffer, 0, info.writesize);
+
+	tm = time(&tm);
+	journal->h_magic = NVRAM_MISC_JOURNAL_MAGIC;
+	journal->h_type = NVRAM_JOURNAL_LOG_PAGE;
+	journal->h_sequence = sequence;
+	journal->h_utc_time = tm;
+	journal->h_func_line = line;
+	memcpy(journal->h_func_name, func , strlen(func));
+	snprintf(journal->h_log, MAX_LOG_LENGTH, "%s:%s", ctime(&tm), log);
+	journal->h_log_lengeh = strlen(journal->h_log);
+
+	fd = open(cMtdDevName, O_RDWR);
+	if (fd < 0) {
+		NVRAM_LOG("NVM_MiscLog : open log device fail!!!\n");
+		free(journal);
+		free(buffer);
+		return false;
+	}
+	iResult = lseek(fd, start_address + offset, SEEK_SET);
+	if (iResult  < 0) {
+		NVRAM_LOG("NVM_MiscLog : seek log device fail start_address=%llx,offset=%llx!!!\n",
+		          start_address, offset);
+		free(journal);
+		free(buffer);
+		close(fd);
+		return false;
+	}
+	memcpy(buffer, journal, sizeof(nvram_journal_handle_t));
+	iResult = write(fd, buffer, info.writesize);
+	if ((unsigned int)iResult != info.writesize) {
+		NVRAM_LOG("NVM_MiscLog : write log device fail, iResult = %d !!!\n", iResult);
+		free(journal);
+		free(buffer);
+		close(fd);
+		return false;
+	}
+	free(journal);
+	free(buffer);
+	close(fd);
+	//sync();
+	bRet = NVM_MiscIncSeqNum(sequence);
+	if ( false == bRet) {
+		NVRAM_LOG("NVM_MiscLog : update sequence number fail!!!\n");
+		return false;
+	}
+
+	return true;
+}
+bool NVM_InSpecialLidList(int file_lid, int *index) {
+	int i;
+	if (g_new_nvram_lid_count == 0) {
+		NVRAM_LOG("The spcial lid is empty!!!\n");
+		return false;
+	}
+
+	for (i = 0; i < (int)g_new_nvram_lid_count; i++) {
+		if (file_lid == g_new_nvram_lid[i].lid) {
+			*index = i;
+			break;
+		}
+	}
+
+	if (i == (int)g_new_nvram_lid_count)
+		return false;
+	else {
+		NVRAM_LOG("%d is in new nvram partition!!!\n", file_lid);
+		return true;
+	}
+}
+
+bool Check_FileVerinFirstBoot(void) {
+	int ret;
+	int max_lid_num = 0;
+	struct stat statbuf;
+
+	NVRAM_LOG("Check FILE_VER in first boot\n");
+	max_lid_num = NVM_Init();
+	if (max_lid_num <= 0) {
+		NVRAM_LOG("Check_FileVerinFirstBoot--NVM_Init fail !!!\n");
+		return false;
+	}
+	ret = stat(g_pcNVM_Flag, &statbuf);
+	if (-1 == ret) {
+		NVRAM_LOG("No RestoreFlag\n");
+		if (stat(g_akCFG_File[iFileVerInfoLID].cFileName, &statbuf) == -1
+		        || !S_ISREG(statbuf.st_mode)
+		        || statbuf.st_size != ((FILENAMELENGTH + FILEVERLENGTH) * (max_lid_num + 1))) {
+			NVRAM_LOG("FILE_VER is invalid, generate it manually\n");
+			return NVM_GenerateFileVer(true);
+		}
+	}
+	return true;
+}
+bool Check_UpdateStatus(void) {
+	struct stat info;
+	struct stat statbuf;
+	struct stat stb;
+	int val = 0;
+	int ret = 0;
+	int vre = 0;
+
+	NVRAM_LOG("Check if upgrade status\n");
+	val = stat(g_pcNVM, &info);
+	if (-1 == val) {
+		NVRAM_LOG("No data/nvram folder and no need to change permission\n");
+		return true;
+	} else {
+		ret = stat(g_pcNVM_MD, &statbuf);
+		//------KK->L/KK.AOSP->L
+		if ((info.st_gid != AID_SYSTEM) || (ret >= 0 && statbuf.st_uid != AID_RADIO
+		                                    && statbuf.st_uid != AID_SYSTEM && statbuf.st_uid != AID_ROOT) || (ret >= 0
+		                                            && statbuf.st_gid != AID_RADIO && statbuf.st_gid != AID_SYSTEM)) {
+			NVRAM_LOG("Upgrade status, need to change all files' permission!!\n");
+			if (chown("/mnt/vendor/nvdata", AID_ROOT, AID_SYSTEM)) {
+				NVRAM_LOG("Fail to change all files' permission when upgrade\n");
+				return false;
+			}
+		}
+		vre = stat(g_pcNVM_BT, &stb);
+		//------KK->cobranch/KK.AOSP->cobranch/L->cobranch
+		if (vre >= 0 && stb.st_gid != AID_BLUETOOTH) {
+			NVRAM_LOG("Upgrade status, need to change BT file permission!!\n");
+			if (chown("/mnt/vendor/nvdata/APCFG/APRDEB/BT_Addr", AID_ROOT, AID_BLUETOOTH)) {
+				NVRAM_LOG("Fail to change BT group permission when upgrade\n");
+				return false;
+			}
+			if (chmod("/mnt/vendor/nvdata/APCFG", 0771) ||
+				chmod("/mnt/vendor/nvdata/APCFG/APRDEB", 0771) ||
+				chmod("/mnt/vendor/nvdata/APCFG/APRDCL", 0771) ||
+				chmod("/mnt/vendor/nvdata/APCFG/APRDCL/FILE_VER", 0664)) {
+				NVRAM_LOG("Fail to change BT folder permission when upgrade for /mnt/vendor/nvdata\n");
+				return false;
+			}
+		}
+
+		return true;
+	}
+}
+
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libnvram/libnvram.h b/src/telephonyware/3.0/mtk_nvram/src/libnvram/libnvram.h
new file mode 100644
index 0000000..a037554
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libnvram/libnvram.h
@@ -0,0 +1,481 @@
+/*****************************************************************************
+*  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) 2008
+*
+*  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:
+ * ---------
+ *   Libnvram.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *
+ *
+ *
+ * Author:
+ * -------
+ *  Nick Huang (mtk02183)
+ *
+ ****************************************************************************/
+
+
+#ifndef __NVRAM_LIB_H
+#define __NVRAM_LIB_H
+
+#include "CFG_file_public.h"
+#include <stdbool.h>
+#include <time.h>
+#include <mtd/mtd-abi.h>
+#include <linux/limits.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define loff_t off_t
+#define NVRAM_JOURNAL_HANDLE_SIZE	512
+
+#define NVRAM_JOURNAL_MAGIC 0x5a5a7b7b
+#define NVRAM_MISC_JOURNAL_MAGIC 0x4D52564E
+#define MAX_FUNCTION_NAME_LENGTH  48
+#define MAX_IMEI_LENGTH           130  //IMEI is 120
+#define MAX_BARCODE_LENGTH        250   //barcode is 66
+//#define LOG_BLOCK_NUMBER   8
+//#define RESERVE_BLOCK_NUMBER    8
+#define MAX_LOG_LENGTH  (NVRAM_JOURNAL_HANDLE_SIZE - 5 * sizeof(unsigned int) - sizeof(time_t) - MAX_FUNCTION_NAME_LENGTH-MAX_IMEI_LENGTH-MAX_BARCODE_LENGTH)                    //add by min,MAX_LOG_LENGTH must change
+#define DEFAULT_LOG_LEVEL 1
+#define NVRAM_JOURNAL_SUPER_PAGE  0
+#define NVRAM_JOURNAL_LOG_PAGE  1
+//#define NVRAM_MNT_POINT "/nvram"
+//#define MISC_MNT_POINT "/misc"
+//#define PROINFO_MNT_POINT "/proinfo"
+//#define NVDATA_MNT_POINT "/mnt/vendor/nvdata"
+
+// To prevent bad block in nand project, we save bin region to one file in file system.
+#define MTK_NVRAM_IN_A_FILE
+
+typedef struct {
+	char 	cFileVer[FILEVERLENGTH];
+	char 	cFileName[FILENAMELENGTH];
+	int 	i4RecSize;
+	int 	i4RecNum;
+	int 	i4MaxFileLid;
+} F_INFO;
+typedef struct {
+	int iFileDesc;
+	int ifile_lid;
+	bool bIsRead;
+} F_ID;
+
+typedef enum {
+	VerUpdate,
+	VerDel,
+	VerAdd,
+} VerInfoUpdateFlag;
+
+#pragma pack(4)
+typedef struct nvram_journal_handle {
+	unsigned int h_magic;
+	unsigned int h_type;
+	unsigned int h_sequence;
+	time_t h_utc_time;
+	char h_func_name[MAX_FUNCTION_NAME_LENGTH];
+	unsigned int h_func_line;
+	unsigned int h_log_lengeh;
+	char h_log[MAX_LOG_LENGTH];
+    unsigned char  imei[MAX_IMEI_LENGTH];
+    unsigned char barcode[MAX_BARCODE_LENGTH];
+} nvram_journal_handle_t;
+#pragma pack()
+#define ISREAD      1
+#define ISWRITE     0
+#if 0
+#ifdef _WIN32
+#define LOGD(x)
+#else
+#include <log/log.h>
+#undef LOG_TAG
+#define LOG_TAG "NVRAM"
+#endif
+
+
+#define NVRAM_LOG(...) \
+    do { \
+        ALOGD(__VA_ARGS__); \
+    } while (0)
+#endif
+bool NVM_GetBackupFileNum(unsigned int * iAPBackupFileNum,
+                          unsigned short *iMDBackupFileNum);
+
+bool NVM_AddBackupNum(unsigned int iModifiedFileNum, int iSrc);
+
+bool NVM_AddBackupFileNum(unsigned int iLid);
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_Init
+//DESCRIPTION:
+//		this function is called to call nvram pdd and get max lid.
+//
+//PARAMETERS:
+//		None
+//
+//RETURN VALUE:
+//		the max Lid number.
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+int NVM_Init(void);
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_CheckVerFile
+//DESCRIPTION:
+//		this function is called to check the exist of versiono file information
+//      in FAT 2 partition or default version.
+//
+//PARAMETERS:
+//		Is_FAT2: [IN] TRUE is to check fat2 partition, otherwise check default version
+//
+//RETURN VALUE:
+//		TRUE is exist, otherwise version is not exist.
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_CheckVerFile(bool In_NVM);
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_GenerateFileVer
+//DESCRIPTION:
+//		this function is called to generate the version file in fat2 or user partition.
+//
+//PARAMETERS:
+//		CPY_File_To_Fat2: [IN] TRUE is generate version file in FAT2 partition
+//
+//RETURN VALUE:
+//		TRUE is success, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_GenerateFileVer(bool CPY_File_To_NVM);
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_CmpFileVerNo
+//DESCRIPTION:
+//		this function is called to compare file version between FAT2 and default version.
+//
+//PARAMETERS:
+//		file_lid: [IN] the lid of nvram file
+//
+//RETURN VALUE:
+//		TRUE is same, otherwise is not same
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_CmpFileVerNo(int file_lid);
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_CheckFileID
+//DESCRIPTION:
+//		this function is called to check the file lid and record id of nvram file.
+//
+//PARAMETERS:
+//		file_lid: 	[IN]		the lid of nvram file
+//		rec_id:		[IN]		the record id
+//
+//RETURN VALUE:
+//		TRUE is success, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_CheckFileID(int file_lid, int rec_id);
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_CheckFileInfo
+//DESCRIPTION:
+//		this function is called to check file information, including the file lid
+// 		and record id.if the file version is not right, it wll be reset to default
+//		value.
+//
+//PARAMETERS:
+//		file_lid: 	[IN]		the lid of nvram file
+//		rec_id:	[IN]		the record id
+//
+//RETURN VALUE:
+//		TRUE is success, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_CheckFileInfo(int file_lid, int rec_id);
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_ReadFileVerInfo
+//DESCRIPTION:
+//		this function is called to read the version information of nvram file.
+//		if the file version is not right, it wll be reset to default value
+//
+//PARAMETERS:
+//		file_lid:	[IN] the lid of nvram file
+//
+//RETURN VALUE:
+//		refers to the definition of "F_INFO"
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+F_INFO NVM_ReadFileVerInfo(int file_lid);
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_UpdateFileVerNo
+//DESCRIPTION:
+//		this function is called to reset a NvRam to default value.
+//
+//PARAMETERS:
+//		file_lid: [IN] the lid of nvram file
+//
+//RETURN VALUE:
+//		TRUE is success, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_UpdateFileVerNo(int file_lid, VerInfoUpdateFlag UpdateFlag);
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_ResetFileToDefault
+//DESCRIPTION:
+//		this function is called to reset a NvRam to default value.
+//
+//PARAMETERS:
+//		file_lid: [IN] the lid of nvram file
+//
+//RETURN VALUE:
+//		TRUE is success, otherwise is fail
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_ResetFileToDefault(int file_lid);
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_GetFileHandle
+//DESCRIPTION:
+//		this function is called to the handle of nvram file and the information
+//      of record size and number.
+//
+//PARAMETERS:
+//		file_lid: 	[IN]	the lid of nvram file
+//		pRecSize: 	[OUT] 	the record size
+//		pRecNum: 	[OUT] 	the rocord number
+//		IsRead: 	[IN]	TRUE is read, otherwise is write
+//
+//RETURN VALUE:
+//		the file handle
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+F_ID NVM_GetFileDesc(int file_lid, int *pRecSize, int *pRecNum, bool IsRead);
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_CloseFileHandle
+//DESCRIPTION:
+//		this function is called to close the handle which is open by GetFileHandle.
+//
+//PARAMETERS:
+//		hFile: 	[IN] the file handle
+//
+//RETURN VALUE:
+//		TRUE is success, otherwise is fail
+//
+//DEPENDENCY:
+//		GetFileHandle must have been called
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+bool NVM_CloseFileDesc(F_ID iFileID);
+
+
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_GetLIDByName
+//DESCRIPTION:
+//		this function is called to get right lid accoring to file name.
+//
+//PARAMETERS:
+//		filename: [IN] the name of nvram file
+//RETURN VALUE:
+//		Get lid successfully? -1 mean fail, others mean ok
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+int NVM_GetLIDByName(char* filename);
+
+/********************************************************************************
+//FUNCTION:
+//		NVM_DataVerConvertAll
+//DESCRIPTION:
+//		this function is called to convert all data acccording to the version info .
+//
+//PARAMETERS:
+//		file_lid: [IN] the lid of nvram file
+//RETURN VALUE:
+//		convert successfully?
+//
+//DEPENDENCY:
+//		None
+//
+//GLOBALS AFFECTED
+//		None
+********************************************************************************/
+
+
+bool NVM_DataVerConvertAll(unsigned int iOldCommonFileNum,
+                           unsigned int iOldCustomFileNum);
+int NVM_DataVerConvert(int file_lid);
+int NVM_ProtectDataFile(int file_lid, bool Setflag);
+bool NVM_CheckBackFlag(int iFileDesc);
+bool NVM_CheckMDBackFlag(int iFileDesc);
+bool NVM_ComputeBackflagCheckSum(int iFileDesc);
+bool NVM_RestoreFromBinRegion_OneFile(int file_lid, const char * filename);
+bool NVM_HistoryLog(unsigned int level, const char *func, unsigned int line,
+                    const char *log);
+bool NVM_HistoryLog_Time(unsigned int level, const char *func, unsigned int line,const char *log,unsigned char *time);
+unsigned int NVM_GetSequenceNum(void);
+bool NVM_IncSequenceNum(unsigned int sequence);
+bool NVM_InSpecialLidList(int file_lid, int *index);
+bool NVM_CheckFile(const char * filepath);
+
+#define NVRAM_HISTORY_LOG(n, log)   NVM_HistoryLog(n, __func__, __LINE__, log)
+#define NVRAM_HISTORY_LOG_TIME(n,time,log)   NVM_HistoryLog_Time(n, __func__, __LINE__, log , time)//add by min
+
+bool NVM_MiscIncSeqNum(unsigned int sequence);
+unsigned int NVM_MiscGetSeqNum(void);
+bool NVM_MiscLog(unsigned int level, const char *func, unsigned int line,
+                 const char *log);
+#define NVRAM_MISC_LOG(n, log)   NVM_MiscLog(n, __func__, __LINE__, log)
+
+bool NVM_GetDeviceInfo(const char *path, struct mtd_info_user *device_info);
+extern int init_nvram_platform_callback();
+
+
+bool Check_FileVerinFirstBoot(void);
+
+bool Check_UpdateStatus(void);
+
+bool NVM_EraseDeviceBlock(const char *path, struct erase_info_user erase_info);
+
+
+typedef struct NVRAM_PLATFORM {
+	int log_block;
+	int resv_block;
+	int DM_block;
+	int layout_version;
+	int header_offset;
+} NVRAM_PLATFORM_T;
+extern int nvram_platform_callback(NVRAM_PLATFORM_T* pPlatform );
+
+extern int nvram_multi_storage_support(NVRAM_PLATFORM_T* pPlatform );
+extern bool nvram_md1_support();
+extern bool nvram_md5_support();
+extern bool nvram_evdo_support();
+int NVM_CheckFileSize(int iRealFileLid, const TCFG_FILE *pCfgFielTable);
+extern bool nvram_new_partition_support();
+extern bool nvram_emmc_support();
+extern bool nvram_ecci_c2k_support();
+extern bool nvram_ufs_support();
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif //__NVRAM_LIB_H
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libnvram/libnvram_log.h b/src/telephonyware/3.0/mtk_nvram/src/libnvram/libnvram_log.h
new file mode 100644
index 0000000..f00a209
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libnvram/libnvram_log.h
@@ -0,0 +1,139 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2008
+*
+*  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:
+ * ---------
+ *   File_OP.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *    header file of main function
+ *
+ * Author:
+ * -------
+ *   Nick Huang (mtk02183)
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * Jun 18 2009 mtk80306
+ * [DUMA00120904] optimize the power button and nvram
+ *
+ *
+ * Apr 29 2009 mtk80306
+ * [DUMA00116080] revise the customization of nvram
+ * revise nvram customization
+ *
+ * Mar 21 2009 mtk80306
+ * [DUMA00112158] fix the code convention.
+ * fix the codeing convention.
+ *
+ * Mar 15 2009 mtk80306
+ * [DUMA00111629] add camera nvram files
+ * add the check of bin region.
+ *
+ * Feb 23 2009 mtk80306
+ * [DUMA00109277] add meta _battery mode.
+ *
+ *
+ * Nov 24 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ * Oct 29 2008 mbj08139
+ * [DUMA00105099] create meta code
+ *
+ *
+ *
+ *
+ *******************************************************************************/
+
+#ifndef __NVRAM_LOG_H__
+#define __NVRAM_LOG_H__
+
+
+
+//#define LOG_TAG "META  "
+
+
+//#define META_LOG(fmt, args...) printf(LOG_TAG fmt, ##args)
+#include <syslog.h>
+#include "log.h"
+
+#ifdef _WIN32
+#define LOGD(x)
+#else
+#undef LOG_TAG
+#define LOG_TAG "NVRAM"
+#endif
+
+//#undef ALOGD
+//#define ALOGD(...) ({printf(LOG_TAG "  : " __VA_ARGS__); printf("\n");})
+
+
+#define TEXT(__a)  __a
+
+#if 1
+//#define NVBAK_LOG(fmt, ...) syslog(LOG_DEBUG, fmt, ## __VA_ARGS__)
+//#define NVRAM_LOG(fmt, ...) syslog(LOG_DEBUG, fmt, ## __VA_ARGS__)
+//#define NVBAK_LOG(fmt, ...) LOG(fmt, ## __VA_ARGS__)
+//#define NVRAM_LOG(fmt, ...) LOG(fmt, ## __VA_ARGS__)
+#define NVBAK_LOG(fmt, ...) ({LOG(fmt, ## __VA_ARGS__);syslog(LOG_DEBUG, fmt, ## __VA_ARGS__);})
+#define NVRAM_LOG(fmt, ...) ({LOG(fmt, ## __VA_ARGS__);syslog(LOG_DEBUG, fmt, ## __VA_ARGS__);})
+#else
+#define NVBAK_LOG(fmt, ...) printf(fmt, ## __VA_ARGS__)
+#define NVRAM_LOG(fmt, ...) printf(fmt, ## __VA_ARGS__)
+//#define NVBAK_LOG(fmt, ...) fprintf(stderr, fmt, ## __VA_ARGS__)
+//#define NVRAM_LOG(fmt, ...) fprintf(stderr, fmt, ## __VA_ARGS__)
+#endif
+
+/*****************************************************************************/
+
+
+
+
+
+
+
+#endif /* __NVRAM_LOG_H__ */
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libnvram/libnvram_sec.h b/src/telephonyware/3.0/mtk_nvram/src/libnvram/libnvram_sec.h
new file mode 100644
index 0000000..8e71a17
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libnvram/libnvram_sec.h
@@ -0,0 +1,117 @@
+/*****************************************************************************
+ *  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) 2008
+ *
+ *  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:
+ * ---------
+ *   Libnvram_sec.h
+ *
+ * Project:
+ * --------
+ *   YuSu
+ *
+ * Description:
+ * ------------
+ *
+ *
+ *
+ * Author:
+ * -------
+ *  Jian lin (mtk81139)
+ *
+ ****************************************************************************/
+
+
+#ifndef __NVRAM_LIB_SEC_H
+#define __NVRAM_LIB_SEC_H
+
+#include "libnvram.h"
+#include "libnvram_log.h"
+//#include "CFG_file_lid.h"
+//#include "Custom_NvRam_LID.h"
+//#include "sec_nvram.h"
+
+
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+#define BOOT_MODE_FILE "/sys/class/BOOT/BOOT/boot/boot_mode"
+#define META_MODE '1'
+#define ADVMETA_MODE '5'
+#define ENCODE  true
+#define DECODE  false
+
+bool NVM_Enc_Dnc_File(int file_lid, bool IS_end);
+bool NVM_CheckWritePermission(bool IsRead, int file_lid);
+
+typedef struct {
+	int lid;
+	unsigned char meta_mode_write;
+	unsigned char security_enable;
+} TCFG_FILE_PROTECT;
+
+
+
+
+/* used for META library */
+#define NVRAM_CIPHER_LEN (16)
+
+/******************************************************************************
+ *  MODEM CONTEXT FOR BOTH USER SPACE PROGRAM AND KERNEL MODULE
+ ******************************************************************************/
+typedef struct {
+	unsigned char data[NVRAM_CIPHER_LEN];
+	unsigned int ret;
+
+} META_CONTEXT;
+
+/******************************************************************************
+ *  EXPORT FUNCTIONS
+ ******************************************************************************/
+int __attribute__((weak)) sec_nvram_enc (META_CONTEXT *meta_ctx);
+int __attribute__((weak)) sec_nvram_dec (META_CONTEXT *meta_ctx);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif //__NVRAM_LIB_H
diff --git a/src/telephonyware/3.0/mtk_nvram/src/libnvram/log.h b/src/telephonyware/3.0/mtk_nvram/src/libnvram/log.h
new file mode 100644
index 0000000..bcbe30e
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/libnvram/log.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2013 Felix Fietkau <nbd@openwrt.org>
+ * Copyright (C) 2013 John Crispin <blogic@openwrt.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef __LOG_H
+#define __LOG_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include <libubox/ulog.h>
+
+#ifdef URNGD_DEBUG
+#define DEBUG(level, fmt, ...) do { \
+	if (debug >= level) { \
+		ulog(LOG_DEBUG, fmt, ## __VA_ARGS__); \
+	} } while (0)
+#else
+#define DEBUG(level, fmt, ...)
+#endif
+
+#define LOG   ULOG_INFO
+#define ERROR ULOG_ERR
+
+extern unsigned int debug;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/MTK_LICENSE b/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/MTK_LICENSE
new file mode 100644
index 0000000..901b162
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/MTK_LICENSE
@@ -0,0 +1,35 @@
+Copyright Statement:
+
+This software/firmware and related documentation ("MediaTek Software") are
+protected under relevant copyright laws. The information contained herein
+is confidential and proprietary to MediaTek Inc. and/or its licensors.
+Without the prior written permission of MediaTek inc. and/or its licensors,
+any reproduction, modification, use or disclosure of MediaTek Software,
+and information contained herein, in whole or in part, shall be strictly prohibited.
+
+MediaTek Inc. (C) 2018. All rights reserved.
+
+BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+
+The following software/firmware and/or related documentation ("MediaTek Software")
+have been modified by MediaTek Inc. All revisions are subject to any receiver's
+applicable license agreements with MediaTek Inc.
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/NOTICE b/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/NOTICE
new file mode 100644
index 0000000..c3f777d
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/NOTICE
@@ -0,0 +1,4 @@
+This MediaTek software package contains software with the following notices and under the following licenses:
+
+=============================================================================
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/README b/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/README
new file mode 100644
index 0000000..a9d2c83
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/README
@@ -0,0 +1,37 @@
+This directory contains NvRAM daemon binary
+
+
+WHAT IT DOES?
+=============
+It provide restore NvRAM data from backup partition to file system when filesystem is empty
+And it provide callback for specific request of NvRAM modules, like do some data convert things.
+
+HOW IT WAS BUILT?
+==================
+
+It needs the following libs from AOSP:
+1.  libc.so
+2.  libcutils.so
+
+and the following libs from MediaTek:
+1. libnvram.so
+2. libcustom_nvram.so
+3. libfile_op
+4. libnvram_daemon_callback
+
+
+All source/dependency modules of this module are already put in
+'vendor/mediatek/libs' folder.
+
+
+HOW TO USE IT?
+==============
+
+Files in this directory is used to
+generate a binary which's name is 'nvram_daemon'
+
+The binary  'nvram_daemon'' is loaded when system boot up,
+it would do NvRAM data restore tings when file system is empty.
+
+
+All the source code of this library were written by MediaTek co..
diff --git a/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/nvram_daemon.c b/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/nvram_daemon.c
new file mode 100644
index 0000000..392a7f4
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/nvram_daemon.c
@@ -0,0 +1,292 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
+ * the prior written permission of MediaTek inc. and/or its licensors, any
+ * reproduction, modification, use or disclosure of MediaTek Software, and
+ * information contained herein, in whole or in part, shall be strictly
+ * prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ * 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 RECEIVER AGREES
+ * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+ * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+ * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
+ * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
+ * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek
+ * Software") have been modified by MediaTek Inc. All revisions are subject to
+ * any receiver's applicable license agreements with MediaTek Inc.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+#include <pthread.h>
+//#include <cutils/properties.h>
+#include "libnvram.h"
+#include "libnvram_log.h"
+
+#if 0
+#include "nvram_battery.h"
+#include "nvram_bt.h"
+#include "nvram_wifi.h"
+#endif 
+
+//#include "nvram_touchpanel.h"
+#if 0
+    #include "nvram_acc.h"
+    #include "nvram_gyro.h"
+    #include "nvram_ps.h"
+#endif
+#include "nvram_productinfo.h"
+#include "libfile_op.h"
+enum NVRAM_USER {
+	NU_BATTERY,
+	NU_WIFI,
+	NU_BT,
+	NU_FM,
+	//NU_TOUCHPANEL,
+	NU_HWMON,
+	NU_HWMON_PS,
+	NU_PRODUCT_INFO,
+	NU_MAX
+};
+
+typedef struct _NVRAM_USER_DATA {
+	const char*	pcName;
+	pthread_t	kThread;
+	void* (*start_routine)(void*);
+} NVRAM_USER_DATA;
+
+static NVRAM_USER_DATA g_akNUData[NU_MAX] = {
+#if 0
+	{"Battery", 0, NVRAM_BATTERY},
+	{"Bluetooth", 0, NVRAM_BT},
+	{"WIFI", 0, NVRAM_WIFI},
+#endif
+	//{"Touchpanel", 0, NVRAM_TOUCHPANEL},
+#if 0
+	{"HWMON_ACC", 0, NVRAM_ACC},
+	{"HWMON_GYRO", 0, NVRAM_GYRO},
+	{"HWMON_PS", 0, NVRAM_PS},
+#endif
+	{"PROUDCT_INFO", 0, NVRAM_PRODUCTINFO},
+	{"None", 0, NULL}
+};
+extern int iCustomBeginLID;
+static bool bCleanBoot = true;
+extern pfCallbackForDaemon callback_for_nvram_daemon;
+
+bool Init_AllThreads_In_Nvram(void) {
+	int i, ret;
+	void* thread_result;
+	for (i = 0; i < NU_MAX; ++i) {
+		if (g_akNUData[i].start_routine) {
+			ret = pthread_create(&g_akNUData[i].kThread, NULL, g_akNUData[i].start_routine,
+			                     NULL);
+			if (ret != 0) {
+				//NVRAM_LOG("%s Thread creation failed\n", g_akNUData[i].pcName);
+				return false;
+			}
+		}
+	}
+	//NVRAM_LOG("Finish thread create\n");
+
+	for (i = NU_MAX - 1; i >= 0 ; --i) {
+		if (g_akNUData[i].start_routine) {
+			ret = pthread_join(g_akNUData[i].kThread, &thread_result);
+			if (ret != 0) {
+				//NVRAM_LOG("%s Thread join failed\n", g_akNUData[i].pcName);
+				return false;
+			}
+		}
+	}
+	//NVRAM_LOG("Finish thread joint\n");
+	return true;
+}
+bool Init_Productinfo_In_Nvram(void) {
+	int i, ret;
+	void* thread_result;
+	for (i = 0; i < NU_MAX; ++i) {
+		if (strcmp(g_akNUData[i].pcName, "PROUDCT_INFO") == 0) {
+			if (g_akNUData[i].start_routine) {
+				ret = pthread_create(&g_akNUData[i].kThread, NULL, g_akNUData[i].start_routine,
+				                     NULL);
+				if (ret != 0) {
+					//NVRAM_LOG("%s Thread creation failed\n", g_akNUData[i].pcName);
+					return false;
+				}
+			}
+			if (g_akNUData[i].start_routine) {
+				ret = pthread_join(g_akNUData[i].kThread, &thread_result);
+				if (ret != 0) {
+					//NVRAM_LOG("%s Thread join failed\n", g_akNUData[i].pcName);
+					return false;
+				}
+			}
+			return true;
+		}
+	}
+	NVRAM_LOG("PROUDCT_INFO thread is not in init list\n");
+	return false;
+}
+
+#define NVRAM_INIT_FILE_PATH "/tmp/nvram_init"
+
+int main(int argc, char** argv) {
+	int iMaxLidNum = 0;
+	int ret_callback = -1;
+	char cypto_state_value[100] = {0};
+	char nvram_init_value[100] = {0};
+	char decypt_state_value[100] = {0};
+    int iFD = -1, len = 0;
+#if 0
+	unsigned char fstab_filename[256];
+	unsigned char src1[256 + 1]; //"/odm/etc/fstab*"
+	unsigned char src2[256 + 1]; //"vendor/etc/fstab*"
+	unsigned char src3[256 + 1]; //"/fstab*"
+	unsigned char dst[256 + 12]; // "/mnt/vendor/nvdata"
+
+	/* copy /fstab.mt*** to /nvdata/fstab.mtxxx */
+	find_fstab_filename(fstab_filename, 256);
+	snprintf(src1, 256 + 1, "/odm/etc/""%s", fstab_filename);
+	snprintf(src2, 256 + 1, "/vendor/etc/""%s", fstab_filename);
+	snprintf(src3, 256 + 1, "/""%s", fstab_filename);
+	snprintf(dst, 256 + 12, "/mnt/vendor/nvdata/""%s", fstab_filename);
+
+	if (access(src1, F_OK) == 0) {
+	    if (copy_file(src1, dst)) {
+		    NVRAM_LOG("can't copy fstab file,src1(%s),dst(%s)!!!\n",src1,dst);
+		    exit(EXIT_FAILURE);
+            }
+	}
+	else if(access(src2, F_OK) == 0) {
+	    if (copy_file(src2, dst)) {
+		    NVRAM_LOG("can't copy fstab file,src2(%s),dst(%s)!!!\n",src2,dst);
+		    exit(EXIT_FAILURE);
+            }
+	}
+	else if(access(src3, F_OK) == 0) {
+	    if (copy_file(src3, dst)) {
+		    NVRAM_LOG("can't copy fstab file,src3(%s),dst(%s)!!!\n",src3,dst);
+		    exit(EXIT_FAILURE);
+            }
+	}
+	else {
+		NVRAM_LOG("can't find fstab file!!!\n");
+		exit(EXIT_FAILURE);
+        }
+#endif
+	if (argc == 2) {
+		if(!strcmp("backup", argv[1])) {
+			NVRAM_LOG("into FileOp_BackupToBinRegion_All");
+			FileOp_BackupToBinRegion_All();
+		}else if(!strcmp("proinfo", argv[1])) {
+			NVRAM_LOG("Proinfo test");
+			Init_Productinfo_In_Nvram();
+		}
+		goto final;
+	}
+
+	ulog_open(ULOG_KMSG, LOG_DAEMON, "nvram_daemon");
+	iMaxLidNum = NVM_Init();
+	NVRAM_LOG("Total nvram Lid number is %d\n", iMaxLidNum);
+	umask(000);
+	if (iMaxLidNum <= 0) {
+		NVRAM_LOG("Total nvram Lid number is error !!!\n");
+		exit(EXIT_FAILURE);
+	}
+
+        #if 0
+	if (nvram_emmc_support() || nvram_ufs_support()) {
+		if (!Check_UpdateStatus()) {
+			NVRAM_LOG("fail to check upgrade status in first boot\n");
+		}
+	}
+        #endif
+#ifdef MTK_NVRAM_AUTO_BACKUP
+	if (!FileOp_CmpBackupFileNum()) {
+		FileOp_BackupToBinRegion_All();
+		FileOp_SetCleanBootFlag(true);
+	} else {
+#endif
+		if (!FileOp_RecoveryData())
+			//if(!FileOp_RestoreFromBinRegionForDM())
+		{
+			NVRAM_LOG("Bin Region Restore to NvRam Fail\n");
+			//exit(EXIT_FAILURE);
+		}
+#ifdef MTK_NVRAM_AUTO_BACKUP
+	}
+#endif
+
+	if (!Check_FileVerinFirstBoot()) {
+		NVRAM_LOG("Check FILE_VER in first boot, and fail to generate FILE_VER\n");
+	}
+
+	//Add for product info feature
+        #if 0
+	if (nvram_new_partition_support()) {
+		NVRAM_LOG("Begin excute customer callback!!!\n");
+		init_callback();
+		if (callback_for_nvram_daemon != NULL)
+			ret_callback = callback_for_nvram_daemon();
+		NVRAM_LOG("Callback return %d\n", ret_callback);
+	}
+        #endif
+	//end for product info feature
+
+#if 0
+	property_get("vendor.service.nvram_init", &nvram_init_value[0], "");
+
+	if (0 == property_set("vendor.service.nvram_init", "Ready")) {
+		NVRAM_LOG("Set Ready property success\n");
+		if (!Init_AllThreads_In_Nvram())
+			NVRAM_LOG("init all threads fail\n");
+	} else
+		NVRAM_LOG("Set property failed, %s\n", (char*)strerror(errno));
+#endif
+    iFD = open(NVRAM_INIT_FILE_PATH, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+    if (iFD >= 0) {
+        nvram_init_value[0] = '1';
+        len = write(iFD, &nvram_init_value[0], 1);
+        if (1 == len) {
+            NVRAM_LOG("Write %s ready success\n", NVRAM_INIT_FILE_PATH);
+        } else {
+            NVRAM_LOG("Write %s ready failed\n", NVRAM_INIT_FILE_PATH);
+        }
+        close(iFD);
+    } else {
+        NVRAM_LOG("Cannot open %s\n", NVRAM_INIT_FILE_PATH);
+    }
+final:
+	NVRAM_LOG("NVRAM daemon sleep !\n");
+	NVRAM_LOG("NVRAM daemon sync start !\n");
+	sync();
+	NVRAM_LOG("NVRAM daemon sync end !\n");
+	NVRAM_LOG("NVRAM daemon exits !\n");
+	exit(EXIT_SUCCESS);
+}
diff --git a/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/nvram_productinfo.c b/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/nvram_productinfo.c
new file mode 100644
index 0000000..4fcb726
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/nvram_productinfo.c
@@ -0,0 +1,84 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
+ * the prior written permission of MediaTek inc. and/or its licensors, any
+ * reproduction, modification, use or disclosure of MediaTek Software, and
+ * information contained herein, in whole or in part, shall be strictly
+ * prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ * 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 RECEIVER AGREES
+ * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+ * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+ * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
+ * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
+ * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek
+ * Software") have been modified by MediaTek Inc. All revisions are subject to
+ * any receiver's applicable license agreements with MediaTek Inc.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+#include <pthread.h>
+#include <time.h>
+#include "libnvram.h"
+#include "libnvram_log.h"
+extern int iFilePRODUCT_INFOLID;
+
+
+/* Just tell NVRAM to create Product info default record */
+void* NVRAM_PRODUCTINFO(void* arg) {
+	F_ID pin_fid = {0};
+	int rec_size = 0;
+	int rec_num = 0;
+	unsigned char proinfo_buf[1024];
+	unsigned char proinfo_wir[1024] = {0x01, 0x02, 0x03, 0x04, 0x05};
+
+	NVRAM_LOG("[NVRAM Daemon]product info lid %d ++\n", iFilePRODUCT_INFOLID);
+	pin_fid = NVM_GetFileDesc(iFilePRODUCT_INFOLID, &rec_size, &rec_num, ISWRITE);
+	NVRAM_LOG("[NVRAM Daemon] product info FID %d rec_size %d rec_num %d\n",
+	          pin_fid.iFileDesc, rec_size, rec_num);
+
+	if (read(pin_fid.iFileDesc, &proinfo_buf, rec_num * rec_size) < 0) {
+		NVRAM_LOG("Read NVRAM fails %d\n", errno);
+		NVM_CloseFileDesc(pin_fid);
+		return NULL;
+	}
+
+	lseek(pin_fid.iFileDesc, 0, 0);
+
+	if (write(pin_fid.iFileDesc, &proinfo_wir, rec_num * rec_size) < 0) {
+		NVRAM_LOG("Initialize NVRAM fails %d\n", errno);
+	}
+
+	if (!NVM_CloseFileDesc(pin_fid))
+		NVRAM_LOG("[NVRAM Daemon] close product info error");
+
+	pthread_exit(NULL);
+	return NULL;
+}
diff --git a/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/nvram_productinfo.h b/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/nvram_productinfo.h
new file mode 100644
index 0000000..046f870
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/nvram_daemon_src/nvram_productinfo.h
@@ -0,0 +1,48 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
+ * the prior written permission of MediaTek inc. and/or its licensors, any
+ * reproduction, modification, use or disclosure of MediaTek Software, and
+ * information contained herein, in whole or in part, shall be strictly
+ * prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ * 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 RECEIVER AGREES
+ * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+ * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+ * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
+ * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
+ * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek
+ * Software") have been modified by MediaTek Inc. All revisions are subject to
+ * any receiver's applicable license agreements with MediaTek Inc.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#ifndef __NVRAM_PRODUCTINFO_H__
+#define __NVRAM_PRODUCTINFO_H__
+void* NVRAM_PRODUCTINFO(void* arg);
+#endif
diff --git a/src/telephonyware/3.0/mtk_nvram/src/nvram_test_src/MTK_LICENSE b/src/telephonyware/3.0/mtk_nvram/src/nvram_test_src/MTK_LICENSE
new file mode 100644
index 0000000..901b162
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/nvram_test_src/MTK_LICENSE
@@ -0,0 +1,35 @@
+Copyright Statement:
+
+This software/firmware and related documentation ("MediaTek Software") are
+protected under relevant copyright laws. The information contained herein
+is confidential and proprietary to MediaTek Inc. and/or its licensors.
+Without the prior written permission of MediaTek inc. and/or its licensors,
+any reproduction, modification, use or disclosure of MediaTek Software,
+and information contained herein, in whole or in part, shall be strictly prohibited.
+
+MediaTek Inc. (C) 2018. All rights reserved.
+
+BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO
+MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+
+The following software/firmware and/or related documentation ("MediaTek Software")
+have been modified by MediaTek Inc. All revisions are subject to any receiver's
+applicable license agreements with MediaTek Inc.
+
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/nvram_test_src/NOTICE b/src/telephonyware/3.0/mtk_nvram/src/nvram_test_src/NOTICE
new file mode 100644
index 0000000..c3f777d
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/nvram_test_src/NOTICE
@@ -0,0 +1,4 @@
+This MediaTek software package contains software with the following notices and under the following licenses:
+
+=============================================================================
+
diff --git a/src/telephonyware/3.0/mtk_nvram/src/nvram_test_src/README b/src/telephonyware/3.0/mtk_nvram/src/nvram_test_src/README
new file mode 100644
index 0000000..732c805
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/nvram_test_src/README
@@ -0,0 +1,35 @@
+This directory contains NvRAM test binary
+
+
+WHAT IT DOES?
+=============
+It provides to backup NvRAM data to bin region
+
+
+HOW IT WAS BUILT?
+==================
+
+It needs the following libs from AOSP:
+1.  libc.so
+2.  libcutils.so
+
+and the following libs from MediaTek:
+1. libnvram.so
+2. libfile_op
+
+
+All source/dependency modules of this module are already put in
+'vendor/mediatek/libs' folder.
+
+
+HOW TO USE IT?
+==============
+
+Files in this directory is used to
+generate a binary which's name is 'nvram_test'
+
+The binary  'nvram_test' is loaded when system boot up,
+it would do NvRAM data backup operation.
+
+
+All the source code of this library were written by MediaTek co..
diff --git a/src/telephonyware/3.0/mtk_nvram/src/nvram_test_src/nvram_test.c b/src/telephonyware/3.0/mtk_nvram/src/nvram_test_src/nvram_test.c
new file mode 100644
index 0000000..f70df81
--- /dev/null
+++ b/src/telephonyware/3.0/mtk_nvram/src/nvram_test_src/nvram_test.c
@@ -0,0 +1,65 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein is
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
+ * the prior written permission of MediaTek inc. and/or its licensors, any
+ * reproduction, modification, use or disclosure of MediaTek Software, and
+ * information contained herein, in whole or in part, shall be strictly
+ * prohibited.
+ *
+ * MediaTek Inc. (C) 2010. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ * 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 RECEIVER AGREES
+ * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+ * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+ * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
+ * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
+ * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'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 RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek
+ * Software") have been modified by MediaTek Inc. All revisions are subject to
+ * any receiver's applicable license agreements with MediaTek Inc.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+#include <pthread.h>
+#include "libnvram.h"
+#include "libnvram_log.h"
+
+int main(int argc, char** argv) {
+    ulog_open(ULOG_KMSG, LOG_DAEMON, "nvram_test");
+    if (argc != 2) {
+		NVRAM_LOG("Usage: nvram_test <command>");
+    }
+
+	if(!strcmp("backup", argv[1])) {
+	   FileOp_BackupToBinRegion_All();
+	} else if (!strcmp("clearBinRegion", argv[1])) {
+	    FileOp_ClearBinRegion();
+    } else {
+	   NVRAM_LOG("%s doesn't support this command, %s", argv[0], argv[1]);
+	}
+	exit(EXIT_SUCCESS);
+}