[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/make/module/custom/custom_config.mak b/mcu/make/module/custom/custom_config.mak
new file mode 100755
index 0000000..5540d6b
--- /dev/null
+++ b/mcu/make/module/custom/custom_config.mak
@@ -0,0 +1,11 @@
+ifeq ($(strip $(RTOS)),MERTOS)

+  CATEGORY_INCDIRS += ./service/mertos/include

+  CATEGORY_INCDIRS += ./service/kal/common/include

+  CATEGORY_INCDIRS += ./service/kal/os/mertos/include

+  CATEGORY_INCDIRS += ./service/kal/lib/mlib/include

+endif

+

+CATEGORY_INCDIRS += driver/sys_drv/init/inc

+

+

+CATEGORY_DEFS += 
\ No newline at end of file
diff --git a/mcu/make/module/custom/driver/custom.mak b/mcu/make/module/custom/driver/custom.mak
new file mode 100644
index 0000000..1c61162
--- /dev/null
+++ b/mcu/make/module/custom/driver/custom.mak
@@ -0,0 +1,74 @@
+INC_DIR =
+COMP_DEFS =
+FOLDER_LIST =
+# source file folder for xgen
+GEN_FOLDER_LIST = $(strip $(BUILD_SYSDIR)) $(strip $(BUILD_CODEGENDIR))
+INC_DIR += $(strip $(BUILD_SYSDIR)) $(strip $(BUILD_CODEGENDIR))
+# Define source file lists to SRC_LIST
+# Define source file folder to FOLDER_LIST
+
+FOLDER_LIST += $(GEN_FOLDER_LIST)
+
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.c),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.cpp),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.s),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.S),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.dws),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.rec),$(FILE)) \
+)
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+  SRC_LIST += custom/protocol/common/ps/custom_nras_config.c
+endif
+
+ifeq ($(strip $(LGE_SECURITY)), TRUE)
+  INC_DIR += custom/modem/lgesecurity
+endif
+		   
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+  SRC_LIST += custom/protocol/common/ps/custom_nras_config.c
+endif
+
+SRC_LIST :=  $(call uniq,$(SRC_LIST))
+
+INC_DIR += driver/sys_drv/cache/inc
+INC_DIR += driver/sys_drv/cache/inc/$(MD_VER_FOLDER)
+
+INC_DIR :=  $(call uniq,$(INC_DIR))
+
+# Add gblob sml verify file
+SRC_LIST += custom/middleware/common/custom_sml_sec_verify.c
+
+SRC_LIST += custom/middleware/common/custom_nvram_lid_prot.c
+
+# Define the specified compile options to COMP_DEFS
+COMP_DEFS += __UCS2_ENCODING \
+            MMI_ON_HARDWARE_P \
+            APCS_INTWORK \
+            USE_JAM=0 \
+            COMPILER_SUPPORTS_LONG=1
+
+ifeq ($(filter __NOR_FLASH_BOOTING__,$(strip $(DEFINES))),)
+  ifdef NEED_BUILD_BOOTLOADER
+    ifeq ($(strip $(NEED_BUILD_BOOTLOADER)),TRUE)
+      COMP_DEFS += __BL_ENABLE__
+      COMP_DEFS += REMAPPING
+    endif
+  endif
+endif
+
+ifeq ($(strip $(ENHANCED_SINGLE_BANK_NOR_FLASH_SUPPORT)),TRUE)
+  COMP_DEFS += REMAPPING
+endif
diff --git a/mcu/make/module/custom/driver/custom_driver.mak b/mcu/make/module/custom/driver/custom_driver.mak
new file mode 100644
index 0000000..6865989
--- /dev/null
+++ b/mcu/make/module/custom/driver/custom_driver.mak
@@ -0,0 +1,151 @@
+# Define ./interface/modem folder path by project option 
+ifneq ($(filter __MD93__,$(strip $(MODULE_DEFS))),)
+	MD_VER_FOLDER_PATH = mt6293
+else ifneq ($(filter __MD95__,$(strip $(MODULE_DEFS))),)
+	MD_VER_FOLDER_PATH = mt6295
+else ifneq ($(filter __MD97__,$(strip $(MODULE_DEFS))),)
+	MD_VER_FOLDER_PATH = mt6297
+else ifneq ($(filter __MD97P__,$(strip $(MODULE_DEFS))),)
+	MD_VER_FOLDER_PATH = mt6297p
+else
+	#no match chip
+endif
+AUTO_MERGE_FOLDER = ./custom/driver/audio ./custom/driver/drv/misc_drv
+
+INC_DIR =
+COMP_DEFS =
+FOLDER_LIST =
+
+INC_DIR += ./interface/driver/storage/sim
+# Define source file lists to SRC_LIST
+# Define source file folder to FOLDER_LIST
+
+#driver
+ifneq ($(strip $(TEST_LOAD_TYPE)),BASIC)
+  FOLDER_LIST += $(call CUSTOM_FLD_MAPPING,./custom/driver/audio)
+endif
+
+FOLDER_LIST += ./custom/driver/common
+
+FOLDER_LIST += $(call CUSTOM_FLD_MAPPING,./custom/driver/drv/misc_drv) \
+               
+ifneq ($(strip $(TEST_LOAD_TYPE)),BASIC)
+  ifneq ($(strip $(TEST_LOAD_TYPE)),L1S)
+    ifdef GPS_SUPPORT
+      ifneq ($(strip $(GPS_SUPPORT)),NONE)
+        FOLDER_LIST += $(call CUSTOM_FLD_MAPPING,./custom/driver/drv/gps)
+        INC_DIR += $(call CUSTOM_FLD_MAPPING,./custom/driver/drv/gps)
+      endif
+    endif
+  endif
+endif
+
+## 
+AUTO_MERGE_TMP := $(foreach DIR,$(AUTO_MERGE_FOLDER),$(if $(filter $(DIR)/_Default_BB/$(strip $(PLATFORM)) $(call CUSTOM_FLD_MAPPING,$(DIR)),$(FOLDER_LIST)),$(DIR),))
+
+SRC_LIST += $(foreach DIR,$(AUTO_MERGE_TMP), \
+  $(subst /,/,$(foreach file,$(wildcard $(DIR)/_Default_BB/$(strip $(PLATFORM))/*.c) $(wildcard $(DIR)/_Default_BB/$(strip $(PLATFORM))/*.cpp),$(if $(wildcard $(call CUSTOM_FLD_MAPPING,$(DIR))/$(notdir $(file))),,$(file))) $(wildcard $(call CUSTOM_FLD_MAPPING,$(DIR))/*.c) $(wildcard $(call CUSTOM_FLD_MAPPING,$(DIR))/*.cpp)) \
+)
+
+FOLDER_LIST := $(filter-out $(foreach DIR,$(AUTO_MERGE_TMP),$(DIR)/_Default_BB/$(strip $(PLATFORM)) $(call CUSTOM_FLD_MAPPING,$(DIR))),$(FOLDER_LIST))
+
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.c),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.cpp),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.s),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.S),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.dws),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.rec),$(FILE)) \
+)
+
+#only in MoDIS
+ifeq ($(filter __MTK_TARGET__, $(strip $(MODULE_DEFS))),)
+  MODIS_DIS_FILE := custom_emi.c custom_flash.c usb_custom.c wndrv_configure.c wndrv_rf_ah.c wndrv_rf_maxim.c
+  MODIS_DIS_FILE += custom_flash_norfdm5.c afe.c mal1_create.c kbdmain_joystick.c ERS_api.c ERS_sys.s custom_sfi.c
+  MODIS_DIS_FILE += combo_flash_init.c combo_flash_nor.c
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),$(call Lower,$(MODIS_DIS_FILE))),,$(file)))
+endif
+ 
+SRC_LIST :=  $(call uniq,$(SRC_LIST))
+
+#  Define include path lists to INC_DIR
+#ifeq ($(strip $(DSP_SOLUTION)),DUALMACDSP)
+# AUDFOLDER = driver/audio/src/v2
+#else
+  AUDFOLDER = driver/audio/src/v1
+#endif
+
+INC_DIR += driver/btmt/rf_desense
+
+
+INC_DIR += $(strip $(AUDFOLDER))/inc
+INC_DIR += driver/btmt/rf_desense \
+           driver/peripheral/inc \
+           driver/storage/flash/mtd/inc \
+           driver/storage/flash/fdm/inc \
+           driver/connectivity/usb_class/include
+INC_DIR += driver/sys_drv/cache/inc
+INC_DIR += driver/sys_drv/cache/inc/$(MD_VER_FOLDER)
+
+INC_DIR += service/nvram/include
+
+# File System custom file (temporary solution)
+INC_DIR += driver/storage/mc/inc
+
+ifeq ($(filter __MTK_TARGET__,$(strip $(MODULE_DEFS))),)
+  INC_DIR += MoDIS_VC9/drv_sim/include
+endif
+
+INC_DIR :=  $(call uniq,$(INC_DIR))
+
+
+# Define the specified compile options to COMP_DEFS
+COMP_DEFS += __UCS2_ENCODING \
+            MMI_ON_HARDWARE_P \
+            APCS_INTWORK \
+            USE_JAM=0 \
+            COMPILER_SUPPORTS_LONG=1
+
+ifeq ($(filter __NOR_FLASH_BOOTING__,$(strip $(DEFINES))),)
+  ifdef NEED_BUILD_BOOTLOADER
+    ifeq ($(strip $(NEED_BUILD_BOOTLOADER)),TRUE)
+      COMP_DEFS += __BL_ENABLE__
+      COMP_DEFS += REMAPPING
+    endif
+  endif
+endif
+
+ifeq ($(strip $(ENHANCED_SINGLE_BANK_NOR_FLASH_SUPPORT)),TRUE)
+  COMP_DEFS += REMAPPING
+endif
+INC_DIR += driver/peripheral/inc
+INC_DIR += driver/devdrv/usim/inc
+INC_DIR += driver/devdrv/elm/inc
+INC_DIR += interface/driver/devdrv/cuif/inc
+INC_DIR += interface/driver/sleep_drv \
+           interface/driver/dvfs_drv/$(MD_VER_FOLDER)
+
+INC_DIR += interface/l1/el1/external
+
+INC_DIR += interface/protocol/general \
+           $(UNIVERSAL_COMMON)/interface/modem/$(MD_VER_FOLDER_PATH)/common/nr/external/custom
+
+ifneq ($(filter __MIPS_IA__, $(strip $(MODULE_DEFS))),)
+INC_DIR += driver/sys_drv/mmu/inc
+endif
+
+# *************************************************************************
+# From Global include path 
+# *************************************************************************
+INC_DIR += driver/connectivity/usb_driver/inc
+
diff --git a/mcu/make/module/custom/l1/custom_l1.mak b/mcu/make/module/custom/l1/custom_l1.mak
new file mode 100644
index 0000000..b427861
--- /dev/null
+++ b/mcu/make/module/custom/l1/custom_l1.mak
@@ -0,0 +1,166 @@
+INC_DIR =
+COMP_DEFS =
+FOLDER_LIST =
+
+# Define ./interface/modem folder path by project option
+ifneq ($(filter __MD93__,$(strip $(MODULE_DEFS))),)
+    MD_VER_FOLDER_PATH = mt6293
+else ifneq ($(filter __MD95__,$(strip $(MODULE_DEFS))),)
+    MD_VER_FOLDER_PATH = mt6295
+else ifneq ($(filter __MD97__,$(strip $(MODULE_DEFS))),)
+    MD_VER_FOLDER_PATH = mt6297
+else ifneq ($(filter __MD97P__,$(strip $(MODULE_DEFS))),)
+    MD_VER_FOLDER_PATH = mt6297p
+else
+    #no match chip
+endif
+
+# Define source file lists to SRC_LIST
+# Define source file folder to FOLDER_LIST
+ifdef RF_MODULE
+  ifneq ($(strip $(RF_MODULE)),NONE)
+    FOLDER_LIST +=custom/l1/gl1_rf/$(strip $(RF_MODULE))
+  endif
+endif
+
+#Multi-Mode RF
+ifdef MM_RF_MODULE
+  ifneq ($(strip $(MM_RF_MODULE)),NONE)
+    FOLDER_LIST += custom/l1/mml1_rf/$(strip $(MM_RF_MODULE))
+    INC_DIR += custom/l1/mml1_rf/$(strip $(MM_RF_MODULE))
+    ifneq ($(filter __MD97__ __MD97P__, $(strip $(MODULE_DEFS))),)	
+    FOLDER_LIST += custom/l1/mml1_devices/$(strip $(MM_DEVICE))
+    INC_DIR += custom/l1/mml1_devices/$(strip $(MM_DEVICE))
+    INC_DIR += interface/l1/mml1/external/mml1_cdf/inc/common
+    INC_DIR += interface/l1/mml1/external/mml1_rf/mmrf_common
+    INC_DIR += interface/l1/mml1/external/mml1_cdf/inc/device_drivers_fe
+    INC_DIR += interface/l1/mml1/external/mml1_cdf/inc/device_drivers_rf
+    INC_DIR += interface/l1/mml1/external/mml1_cdf/inc/sku_mgr
+    INC_DIR += interface/l1/mml1/external/mml1_etdpd
+    INC_DIR += driver/devdrv/digrf_platform/inc
+    endif
+  endif
+endif
+
+ifdef UMTS_RF_MODULE
+  ifneq ($(strip $(UMTS_RF_MODULE)),NONE)
+    FOLDER_LIST += custom/l1/ul1_rf/$(strip $(UMTS_RF_MODULE))
+    INC_DIR += custom/l1/ul1_rf/$(strip $(UMTS_RF_MODULE))
+  endif
+endif
+
+ifdef UMTS_TDD128_RF_MODULE
+  ifneq ($(strip $(UMTS_TDD128_RF_MODULE)),NONE)
+    FOLDER_LIST += custom/l1/tl1_rf/$(strip $(UMTS_TDD128_RF_MODULE))
+    INC_DIR += custom/l1/tl1_rf/$(strip $(UMTS_TDD128_RF_MODULE))
+  endif
+endif
+
+ifdef LTE_RF_MODULE
+  ifneq ($(strip $(LTE_RF_MODULE)),NONE)
+    FOLDER_LIST += custom/l1/el1_rf/$(strip $(LTE_RF_MODULE))
+    INC_DIR += custom/l1/el1_rf/$(strip $(LTE_RF_MODULE))
+    INC_DIR += interface/l1/el1/external/comm/rf_custom/inc
+    INC_DIR += interface/l1/el1/external
+#    FOLDER_LIST += custom/l1/el1_rf/$(strip $(LTE_RF_MODULE))/Toolgen
+    INC_DIR += custom/l1/el1_rf/$(strip $(LTE_RF_MODULE))/Toolgen
+    FOLDER_LIST += custom/l1/el1_rf/$(strip $(LTE_RF_MODULE))/TST_Config
+    INC_DIR += custom/l1/el1_rf/$(strip $(LTE_RF_MODULE))/TST_Config
+  endif
+endif
+
+ifdef C2K_RF_MODULE
+  ifneq ($(strip $(C2K_RF_MODULE)),NONE)
+    #FOLDER_LIST += custom/l1/cl1_rf/$(strip $(C2K_RF_MODULE))
+    INC_DIR += custom/l1/cl1_rf/$(strip $(C2K_RF_MODULE))
+  endif
+endif
+
+ifdef NR_RF_MODULE
+  ifneq ($(strip $(NR_RF_MODULE)),NONE)
+    FOLDER_LIST += custom/l1/nl1_rf/$(strip $(NR_RF_MODULE))
+    INC_DIR += custom/l1/nl1_rf/$(strip $(NR_RF_MODULE))
+    INC_DIR += interface/l1/mml1/external/mml1_cdf/inc/common
+    INC_DIR += interface/l1/mml1/external/mml1_rf/mmrf_common
+    INC_DIR += interface/l1/mml1/external/mml1_cdf/inc/device_drivers_fe
+    INC_DIR += interface/l1/nl1/external
+ifneq ($(filter __MD97__ __MD97P__,$(strip $(MODULE_DEFS))),)
+    INC_DIR += $(UNIVERSAL_COMMON)/interface/modem/$(MD_VER_FOLDER_PATH)/common/nr/external/custom
+    INC_DIR += $(UNIVERSAL_COMMON)/interface/modem/$(MD_VER_FOLDER_PATH)/common/nr/external/5g
+endif
+    INC_DIR += interface/l1/nl1/external/4g
+    INC_DIR += interface/l1/nl1/external/5g
+    #INC_DIR += interface/l1/nl1/external/md97/rf_custom
+    INC_DIR += interface/l1/nl1/external
+    #FOLDER_LIST += custom/l1/nl1_rf/$(strip $(NR_RF_MODULE))/Toolgen
+    #INC_DIR += custom/l1/nl1_rf/$(strip $(NR_RF_MODULE))/Toolgen
+    #FOLDER_LIST += custom/l1/nl1_rf/$(strip $(NR_RF_MODULE))/TST_Config
+    #INC_DIR += custom/l1/nl1_rf/$(strip $(NR_RF_MODULE))/TST_Config
+  endif
+endif
+
+#NL1 folder
+FOLDER_LIST += custom/l1/nl1
+
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.c),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.cpp),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.s),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.S),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.dws),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.rec),$(FILE)) \
+)
+
+# Not compile lte_custom_mipi_ref.c , it is tool gen file and included by other file in el1 custom folder
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),lte_custom_mipi_antca.c),,$(file)))
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),lte_custom_mipi_ca.c),,$(file)))
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),lte_custom_mipi_ref.c),,$(file)))
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),lte_custom_mipi_dpd_ref.c),,$(file)))
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),lte_custom_mipi_ant_ref.c),,$(file)))
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),lte_custom_rf_tas_ref.c),,$(file)))
+ifeq ($(filter __MD95__,$(strip $(MODULE_DEFS))),)
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),lte_custom_rf_ant_database.c),,$(file)))
+endif
+SRC_LIST :=  $(call uniq,$(SRC_LIST))
+
+INC_DIR += interface/l1/gl1/internal
+		   
+ifdef RF_MODULE
+  ifneq ($(strip $(RF_MODULE)),NONE)
+    INC_DIR +=custom/l1/gl1_rf/$(strip $(RF_MODULE))
+  endif
+endif
+ifeq ($(filter __MTK_TARGET__,$(strip $(MODULE_DEFS))),)
+  INC_DIR += MoDIS_VC9/drv_sim/include
+endif
+
+INC_DIR :=  $(call uniq,$(INC_DIR))
+
+
+# Define the specified compile options to COMP_DEFS
+COMP_DEFS += __UCS2_ENCODING \
+            MMI_ON_HARDWARE_P \
+            APCS_INTWORK \
+            USE_JAM=0 \
+            COMPILER_SUPPORTS_LONG=1
+
+INC_DIR += interface/l1/el1/external
+INC_DIR += interface/l1/cl1/common
+# *************************************************************************
+# From Global include path 
+# *************************************************************************
+
+SRC_RULE_AUTOAMMS_DRDI := wcustomdata.c lte_custom_drdi.c l1d_custom_drdi.c t12193.c mml1_drdi.c
+TARGET_AMMS_DRDI_LIST := interface/l1/mml1/external/mml1_rfd/amms_drdi/auto_amms_drdi_list.txt interface/l1/mml1/external/mml1_rfd/amms_drdi/auto_amms_drdi_special_symbol_list.txt
+
+NOT_USE_CATEGORY_INCLUDE = TRUE
\ No newline at end of file
diff --git a/mcu/make/module/custom/middleware/custom_middleware.mak b/mcu/make/module/custom/middleware/custom_middleware.mak
new file mode 100644
index 0000000..36bb460
--- /dev/null
+++ b/mcu/make/module/custom/middleware/custom_middleware.mak
@@ -0,0 +1,70 @@
+INC_DIR =
+COMP_DEFS =
+FOLDER_LIST =
+
+# Define source file lists to SRC_LIST
+# Define source file folder to FOLDER_LIST
+#middleware
+FOLDER_LIST += ./custom/middleware/common
+ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+ifeq ($(strip $(HIF_USB_SUPPORT)),TRUE)
+FOLDER_LIST += ./custom/middleware/common/usbc_custom_mode
+endif
+endif
+#INC_DIR += ./custom/middleware/common/usbc_custom_mode
+ifneq ($(strip $(TEST_LOAD_TYPE)),BASIC)
+  FOLDER_LIST += $(call CUSTOM_FLD_MAPPING,./custom/middleware/meta)
+endif
+
+
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.c),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.cpp),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.s),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.S),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.dws),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.rec),$(FILE)) \
+)
+
+#only in MoDIS
+ifeq ($(filter __MTK_TARGET__, $(strip $(MODULE_DEFS))),)
+  ifdef MODIS_TAP_ACCESS
+    ifeq ($(strip $(MODIS_TAP_ACCESS)), CLDMA)
+      MODIS_DIS_FILE += usbc_custom.c
+    endif
+  endif
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),$(call Lower,$(MODIS_DIS_FILE))),,$(file)))
+endif
+
+ 
+SRC_LIST :=  $(call uniq,$(SRC_LIST))
+INC_DIR += driver/audio/med/audio/include
+INC_DIR += driver/sys_drv/cache/inc
+INC_DIR += driver/sys_drv/cache/inc/$(MD_VER_FOLDER)
+
+# ATCI is always needed.
+INC_DIR += custom/protocol/common/atci/include
+
+ifeq ($(filter __MTK_TARGET__,$(strip $(MODULE_DEFS))),)
+  INC_DIR += MoDIS_VC9/drv_sim/include
+endif
+
+INC_DIR :=  $(call uniq,$(INC_DIR))
+
+
+# Define the specified compile options to COMP_DEFS
+COMP_DEFS += __UCS2_ENCODING \
+            MMI_ON_HARDWARE_P \
+            APCS_INTWORK \
+            USE_JAM=0 \
+            COMPILER_SUPPORTS_LONG=1
diff --git a/mcu/make/module/custom/protocol/custom_protocol.mak b/mcu/make/module/custom/protocol/custom_protocol.mak
new file mode 100644
index 0000000..82e6ced
--- /dev/null
+++ b/mcu/make/module/custom/protocol/custom_protocol.mak
@@ -0,0 +1,192 @@
+INC_DIR =
+COMP_DEFS =
+FOLDER_LIST =
+
+# Define source file lists to SRC_LIST
+# Define source file folder to FOLDER_LIST
+#modem
+FOLDER_LIST += $(call CUSTOM_FLD_MAPPING,./custom/modem/ps) \
+               custom/protocol/common/atp/src \
+               custom/protocol/common/atci/src \
+               custom/protocol/common/ps \
+               ./custom/modem/common
+
+
+#fdr_reorg
+ifneq ($(strip $(TEST_LOAD_TYPE)),BASIC)
+FOLDER_LIST += custom/protocol/common/ps
+else
+SRC_LIST += custom/protocol/common/ps/custom_em.c \
+            custom/protocol/common/ps/ul1_nvram_def.c
+endif
+
+
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.c),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.cpp),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.s),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.S),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.dws),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.rec),$(FILE)) \
+)
+
+ # Not compile ul1_nvram_def_md93.c/ul1_nvram_def_md95.c
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),ul1_nvram_def_md93.c),,$(file)))  
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),ul1_nvram_def_md95.c),,$(file))) 
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),ul1_nvram_def_md97.c),,$(file)))  
+SRC_LIST :=  $(call uniq,$(SRC_LIST))
+
+ifneq ($(filter BASIC,$(TEST_LOAD_TYPE)),)
+  SRC_LIST := $(filter-out custom/protocol/common/ps/custom_eas_config.c,$(SRC_LIST))
+else
+  ## For caband_gen
+  ifneq ($(strip $(MODIS_CONFIG)),TRUE)
+    SRC_LIST += $(strip $(PROJDIR))/custom/modem/eas_caband_tbl/eas_caband_tbl_v2.c
+  else
+    SRC_LIST += $(strip $(MODISPROJDIR))/_BUILD_XGEN/custom/modem/eas_caband_tbl/eas_caband_tbl_v2.c
+  endif
+endif
+
+ifeq ($(filter __L5_SUPPORT__, $(strip $(MODULE_DEFS))),)
+  SRC_LIST := $(filter-out custom/protocol/common/ps/custom_l5.c,$(SRC_LIST))
+  SRC_LIST := $(filter-out custom/protocol/common/ps/custom_l5_at.c,$(SRC_LIST))
+  SRC_LIST := $(filter-out custom/protocol/common/ps/custom_l5_mipc.c,$(SRC_LIST))
+  SRC_LIST := $(filter-out custom/protocol/common/ps/custom_l5_mbci.c,$(SRC_LIST))
+endif
+
+INC_DIR += custom/protocol/common/ps \
+           $(call CUSTOM_FLD_MAPPING,./custom/modem/ps) \
+           protocol/interface/l4misc \
+           protocol/interface/l4 \
+           protocol/layer4/l4/include \
+           protocol/layer4/l4/atci/include \
+           protocol/layer4/l4/l4c/include/common \
+           protocol/layer4/l4/l4c/include/proc \
+           protocol/layer4/l4/csm/cc/include \
+           protocol/layer4/l4/uem/include \
+           protocol/layer4/l4/phb/include \
+           protocol/layer4/l4/csm/cc/include \
+           protocol/layer4/l4/csm \
+           protocol/layer4/l4/tcm/etcm/include \
+           protocol/layer4/l4/smsal/include \
+           protocol/layer4/l4/csm/ss/asn1/gen/include \
+           protocol/layer4/l4/smu/include \
+           protocol/layer4/l4/rac/common/include \
+           protocol/layer4/l4/rac/ugrac/include \
+           protocol/layer4/sim/include \
+           interface/l1/gl1/internal
+
+ifeq ($(strip $(LGE_SECURITY)), TRUE)
+  INC_DIR += custom/modem/lgesecurity
+endif
+		   
+ifdef RF_MODULE
+  ifneq ($(strip $(RF_MODULE)),NONE)
+    INC_DIR +=custom/l1/gl1_rf/$(strip $(RF_MODULE))
+  endif
+endif
+
+ifneq ($(strip $(EUTRAN_MODE_SUPPORT)),NONE)
+  INC_DIR += protocol/layer4/l4/rac/erac/include
+endif
+
+INC_DIR += $(strip $(PROJDIR))/verno \
+           $(strip $(PROJDIR))/nvram_auto_gen
+
+INC_DIR += driver/sys_drv/cache/inc
+INC_DIR += driver/sys_drv/cache/inc/$(MD_VER_FOLDER)
+INC_DIR += service/mtf/inc
+
+# ATCI is always needed.
+INC_DIR += custom/protocol/common/atci/include
+
+# ATP is always needed.
+INC_DIR += custom/protocol/common/atp/include
+
+ifeq ($(filter __MTK_TARGET__,$(strip $(MODULE_DEFS))),)
+  INC_DIR += MoDIS_VC9/drv_sim/include
+endif
+
+INC_DIR :=  $(call uniq,$(INC_DIR))
+
+
+# Define the specified compile options to COMP_DEFS
+COMP_DEFS += __UCS2_ENCODING \
+            MMI_ON_HARDWARE_P \
+            APCS_INTWORK \
+            USE_JAM=0 \
+            COMPILER_SUPPORTS_LONG=1
+
+ifneq ($(words $(wildcard $(call CUSTOM_FLD_MAPPING,./custom/modem/ps)/custom_port_setting.c)), 0)
+    COMP_DEFS += __CUSTOMIZED_PORT_SETTING__
+endif
+
+INC_DIR += protocol/interface/ims
+
+INC_DIR += interface/l1/el1/external
+
+INC_DIR += interface/protocol/general
+
+#fdr_reorg
+INC_DIR += interface/protocol/as_c2k/common \
+           custom/protocol/common/ps \
+           interface/l1/cl1/common \
+           interface/protocol/nas_c2k \
+           protocol/interface/general \
+           protocol/interface/iwlan \
+           interface/protocol/as_c2k/1xrtt \
+           interface/protocol/as_c2k/evdo \
+           interface/protocol/l2_c2k/common
+
+INC_DIR += service/kal/common/include
+INC_DIR += service/kal/lib/mlib/include
+INC_DIR += driver/sys_drv/init/inc
+INC_DIR += service/sst/include
+INC_DIR += driver/devdrv/elm/inc
+INC_DIR += interface/driver/sib_drv/scc
+INC_DIR += interface/driver/devdrv/pcie
+
+INC_DIR += protocol/interface/lte
+INC_DIR += protocol/interface/agps
+INC_DIR += protocol/interface/ddm
+ifneq ($(filter __L5_SUPPORT__, $(strip $(MODULE_DEFS))),)
+INC_DIR += interface/protocol/l5/mipc/common
+INC_DIR += interface/protocol/l5/mipc/msg
+INC_DIR += $(strip $(PROJDIR))/modem/mipc/include
+endif
+INC_DIR += interface/driver/dpcopro/custom
+
+INC_DIR += interface/service/icd \
+           interface/service/icd/errc \
+           interface/service/icd/nl1 \
+           interface/service/icd/nl2 \
+           interface/service/icd/el2 \
+           interface/service/icd/el1 \
+           interface/service/icd/event/enas \
+           interface/service/icd/event/errc \
+           interface/service/icd/event/nrrc \
+           interface/service/icd/event/nl2 \
+           interface/service/icd/event/el2 \
+           interface/service/icd/event/nl1 \
+           interface/service/icd/event/el1 \
+           interface/service/icd/event/cm
+
+ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297)
+  CATEGORY_INCDIRS += protocol/interface/enl2/el2
+  CATEGORY_INCDIRS += protocol/interface/enl2/en_common
+else ifeq ($(strip $(MTK_MODEM_ARCH)), MT6297P)
+  CATEGORY_INCDIRS += protocol/interface/enl2/el2
+  CATEGORY_INCDIRS += protocol/interface/enl2/en_common
+else
+  CATEGORY_INCDIRS += protocol/interface/el2
+endif
diff --git a/mcu/make/module/custom/service/custom_service.mak b/mcu/make/module/custom/service/custom_service.mak
new file mode 100644
index 0000000..f9ed8ac
--- /dev/null
+++ b/mcu/make/module/custom/service/custom_service.mak
@@ -0,0 +1,140 @@
+INC_DIR =
+COMP_DEFS =
+FOLDER_LIST =
+
+# Define ./interface/modem folder path by project option
+ifneq ($(filter __MD93__,$(strip $(MODULE_DEFS))),)
+    MD_VER_FOLDER_PATH = mt6293
+else ifneq ($(filter __MD95__,$(strip $(MODULE_DEFS))),)
+    MD_VER_FOLDER_PATH = mt6295
+else ifneq ($(filter __MD97__,$(strip $(MODULE_DEFS))),)
+    MD_VER_FOLDER_PATH = mt6297
+else ifneq ($(filter __MD97P__,$(strip $(MODULE_DEFS))),)
+    MD_VER_FOLDER_PATH = mt6297p
+else
+    #no match chip
+endif
+# Define source file lists to SRC_LIST
+# Define source file folder to FOLDER_LIST
+
+#service
+ifeq ($(strip $(TST_SUPPORT)), TRUE)
+FOLDER_LIST += ./custom/service/tst
+endif
+
+ifneq ($(filter __MTK_TARGET__,$(strip $(MODULE_DEFS))),)
+FOLDER_LIST += ./custom/service/fs
+endif
+
+FOLDER_LIST += ./custom/service/nvram \
+               ./custom/service/common \
+               ./custom/service/mcf \
+               $(strip $(PROJDIR))/nvram_auto_gen
+
+
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.c),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.cpp),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.s),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.S),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.dws),$(FILE)) \
+)
+SRC_LIST += $(foreach DIR,$(FOLDER_LIST), \
+  $(foreach FILE,$(wildcard $(DIR)/*.rec),$(FILE)) \
+)
+
+# Not compile nl1_nvram_def_md97.c
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),nl1_nvram_def_md97.c),,$(file))) 
+# Not compile el1_nvram_def_md93.c/el1_nvram_def_md95.c
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),el1_nvram_def_md93.c),,$(file)))  
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),el1_nvram_def_md95.c),,$(file))) 
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),el1_nvram_def_md97.c),,$(file))) 
+# Not compile mml1_nvram_def_md93.c/mml1_nvram_def_md95.c
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),mml1_nvram_def_md93.c),,$(file)))  
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),mml1_nvram_def_md95.c),,$(file))) 
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),mml1_nvram_def_md97.c),,$(file))) 
+# Not compile mmrfc_nvram_def_md97.c
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),mmrfc_nvram_def_md97.c),,$(file)))
+SRC_LIST :=  $(call uniq,$(SRC_LIST))
+
+ifeq ($(strip $(DHL_SUPPORT)), TRUE)
+SRC_LIST += ./custom/service/tst/dhl_export_config.c
+SRC_LIST += ./custom/service/tst/dhl_custom_set_log_buf.c
+endif
+
+#only in MoDIS
+ifeq ($(filter __MTK_TARGET__, $(strip $(MODULE_DEFS))),)
+  MODIS_DIS_FILE := custom_emi.c custom_flash.c usb_custom.c wndrv_configure.c wndrv_rf_ah.c wndrv_rf_maxim.c
+  MODIS_DIS_FILE += custom_flash_norfdm5.c afe.c mal1_create.c kbdmain_joystick.c ERS_api.c ERS_sys.s custom_sfi.c
+  MODIS_DIS_FILE += combo_flash_init.c combo_flash_nor.c
+  SRC_LIST := $(foreach file,$(SRC_LIST),$(if $(filter $(notdir $(call Lower,$(file))),$(call Lower,$(MODIS_DIS_FILE))),,$(file)))
+endif
+
+SRC_LIST :=  $(call uniq,$(SRC_LIST))
+
+INC_DIR +=    ./service/nvram/include \
+              ./service/fs/common/include
+              
+
+# SV5
+INC_DIR += ./service/sys_svc/gfh/public \
+              ./service/sss/interface/inc \
+              ./service/sst/include \
+              ./service/sst/include
+
+ifeq ($(filter __MTK_TARGET__,$(strip $(MODULE_DEFS))),)
+  INC_DIR += MoDIS_VC9/drv_sim/include
+endif
+
+#INC_DIR += ./service/tst/local_inc
+# for customize secure
+INC_DIR += ./interface/service/sys_svc
+
+INC_DIR :=  $(call uniq,$(INC_DIR))
+
+
+# Define the specified compile options to COMP_DEFS
+COMP_DEFS += __UCS2_ENCODING \
+            MMI_ON_HARDWARE_P \
+            APCS_INTWORK \
+            USE_JAM=0 \
+            COMPILER_SUPPORTS_LONG=1
+
+ifeq ($(filter __NOR_FLASH_BOOTING__,$(strip $(DEFINES))),)
+  ifdef NEED_BUILD_BOOTLOADER
+    ifeq ($(strip $(NEED_BUILD_BOOTLOADER)),TRUE)
+      COMP_DEFS += __BL_ENABLE__
+      COMP_DEFS += REMAPPING
+    endif
+  endif
+endif
+
+ifeq ($(strip $(ENHANCED_SINGLE_BANK_NOR_FLASH_SUPPORT)),TRUE)
+  COMP_DEFS += REMAPPING
+endif
+INC_DIR += interface/l1/el1/external
+ifneq ($(filter __MD97__ __MD97P__,$(strip $(MODULE_DEFS))),)
+INC_DIR += $(UNIVERSAL_COMMON)/interface/modem/$(MD_VER_FOLDER_PATH)/common/nr/external/custom
+INC_DIR += $(UNIVERSAL_COMMON)/interface/modem/$(MD_VER_FOLDER_PATH)/common/nr/external/5g
+endif
+INC_DIR += interface/l1/nl1/external/4g
+INC_DIR += interface/l1/nl1/external/5g
+INC_DIR += interface/protocol/general
+#fdr_reorg
+INC_DIR += interface/protocol/as_c2k/common \
+           interface/service/sbp \
+           interface/l1/cl1/common \
+           interface/protocol/nas_c2k \
+           interface/protocol/as_c2k/1xrtt \
+           interface/protocol/as_c2k/evdo \
+           interface/protocol/l2_c2k/common
+
+INC_DIR += interface/service/mcf