[Feature][T8TSK-304] merge mtk official patch 5th AP patch release

Only Configure: No
Affected branch: N/A
Affected module: N/A
Is it affected on both ZXIC and MTK: only MTK
Self-test: Yes
Doc Update: No

Change-Id: I532b4e9177aece17bd716ba6c7a8236db6a4a27d
diff --git a/meta/meta-mediatek-ivt/recipes-yummy/mtk_phonecall_ioplugin/files/mtk_phonecall_ctl.c b/meta/meta-mediatek-ivt/recipes-yummy/mtk_phonecall_ioplugin/files/mtk_phonecall_ctl.c
index 79a664e..6c0deee 100755
--- a/meta/meta-mediatek-ivt/recipes-yummy/mtk_phonecall_ioplugin/files/mtk_phonecall_ctl.c
+++ b/meta/meta-mediatek-ivt/recipes-yummy/mtk_phonecall_ioplugin/files/mtk_phonecall_ctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: MediaTekProprietary
 /* Copyright Statement:
  *
  * This software/firmware and related documentation ("MediaTek Software") are
diff --git a/meta/meta-mediatek-ivt/recipes-yummy/mtk_phonecall_ioplugin/files/mtk_phonecall_pcm.c b/meta/meta-mediatek-ivt/recipes-yummy/mtk_phonecall_ioplugin/files/mtk_phonecall_pcm.c
index 97d0fa1..422d4b9 100755
--- a/meta/meta-mediatek-ivt/recipes-yummy/mtk_phonecall_ioplugin/files/mtk_phonecall_pcm.c
+++ b/meta/meta-mediatek-ivt/recipes-yummy/mtk_phonecall_ioplugin/files/mtk_phonecall_pcm.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: MediaTekProprietary
 /* Copyright Statement:
  *
  * This software/firmware and related documentation ("MediaTek Software") are
diff --git a/meta/meta-mediatek-mt2735/conf/machine/auto2735evb-ivt-base.conf b/meta/meta-mediatek-mt2735/conf/machine/auto2735evb-ivt-base.conf
index c2faa57..c9fbb9f 100755
--- a/meta/meta-mediatek-mt2735/conf/machine/auto2735evb-ivt-base.conf
+++ b/meta/meta-mediatek-mt2735/conf/machine/auto2735evb-ivt-base.conf
@@ -155,6 +155,7 @@
 MODEM_CUSTOM_EXIST = "${@ os.path.exists('${MODEM_CUSTOM}')}"
 MODEM_DIR = "${@'${MODEM_INT}/${MODEM_PROJECT}' if ${MODEM_INT_EXIST} == True else '${MODEM_CUSTOM}/${MODEM_PROJECT}'}"
 EXTRA_IMAGEDEPENDS += "${@'modem' if ${MODEM_INT_EXIST} == True or ${MODEM_CUSTOM_EXIST} == True else ''}"
+
 # MIPC
 MIPC_MODEM_PROJECT = "mt2735_ivt_nlwg_wide_temp"
 MIPC_INT = "${TOPDIR}/../src/telephonyware/3.0/mipc_internal"
diff --git a/src/connectivity/gps/2.0/gps_hal/src/gpshal_worker.c b/src/connectivity/gps/2.0/gps_hal/src/gpshal_worker.c
index 95fccb2..0b38e6e 100755
--- a/src/connectivity/gps/2.0/gps_hal/src/gpshal_worker.c
+++ b/src/connectivity/gps/2.0/gps_hal/src/gpshal_worker.c
@@ -503,7 +503,6 @@
 
 void connection_broken_basic(void) {
     LOGW("connection broken...");
-
     if (g_gpshal_ctx.fd_mnl2hal_basic != -1){
         mnldinf_epoll_del_fd(g_gpshal_ctx.fd_worker_epoll, g_gpshal_ctx.fd_mnl2hal_basic);
     }
@@ -656,7 +655,6 @@
         int i;
         int n;
         memset(events, 0, sizeof(events));
-
         n = epoll_wait(g_gpshal_ctx.fd_worker_epoll, events, MAX_EPOLL_EVENT , -1);
         if (n == -1) {
             if (errno == EINTR) {
diff --git a/src/kernel/linux/v4.19/arch/arm64/boot/dts/mediatek/mt2735.dtsi b/src/kernel/linux/v4.19/arch/arm64/boot/dts/mediatek/mt2735.dtsi
index cac4d53..aab8034 100644
--- a/src/kernel/linux/v4.19/arch/arm64/boot/dts/mediatek/mt2735.dtsi
+++ b/src/kernel/linux/v4.19/arch/arm64/boot/dts/mediatek/mt2735.dtsi
@@ -385,7 +385,7 @@
 			alignment = <0 0x10000>;
 			reg = <0 0x60040000 0 0x330000>;
 		};
-		
+
 		reserve-memory-sspm_share {
 			compatible = "mediatek,reserve-memory-sspm_share";
 			no-map;
diff --git a/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/v02/medmcu_logger.c b/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/v02/medmcu_logger.c
index 55391b9..b933751 100644
--- a/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/v02/medmcu_logger.c
+++ b/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/v02/medmcu_logger.c
@@ -80,11 +80,14 @@
 #define BASE_DPMAIF_INT             (0x1022D400)
 #define BASE_DPMAIF_DL              (0x1022DC00)
 #define BASE_DPMAIF_UL              (0x1022DD00)
+#define BASE_DPMAIF_PD_DL           (0x1022D100)
+#define BASE_DPMAIF_PD_WDMA         (0x1022D300)
 
 #define DPMAIF_INT_BASE             (DPMAIF_BASE + 0x400)
 #define DPMAIF_DL_BASE              (DPMAIF_BASE + 0xC00)
 #define DPMAIF_UL_BASE              (DPMAIF_BASE + 0xD00)
-
+#define DPMAIF_PD_DL_BASE           (DPMAIF_BASE + 0x100)
+#define DPMAIF_PD_WDMA_BASE         (DPMAIF_BASE + 0x300)
 
 #define MTK_MDMA_BASE               (0x15104000)
 #define MTK_MDMA_RANGE              (0x25C)
@@ -1270,7 +1273,54 @@
 		pr_notice("+-----------------------------------------------+\n");
 	}
 
-	pr_notice("Dump MDMA_TX_DESC...\n");//jb.qi change for medmcu sleep fail on 20230418
+	pr_notice("Dump DPMAIF_PD_DL...\n");
+	if (seq != NULL) {
+		seq_puts(seq, " 	  <<DPMAIF_PD_DL CR DUMP>>\n");
+	} else {
+		pr_notice("       <<DPMAIF_PD_DL CR DUMP>>\n");
+	}
+	for (i = 0; i < 0x100; i = i + 0x10) {
+		sprintf(buf, "0x%08x : 0x%08x 0x%08x 0x%08x 0x%08x\n", BASE_DPMAIF_PD_DL + i,
+			reg_read(DPMAIF_PD_DL_BASE + i), reg_read(DPMAIF_PD_DL_BASE + i + 4),
+			reg_read(DPMAIF_PD_DL_BASE + i + 8), reg_read(DPMAIF_PD_DL_BASE + i + 0xc));
+		if (seq != NULL) {
+			seq_printf(seq, "%s", buf);
+		} else {
+			pr_notice("[MEDHW] %s", buf);
+		}
+	}
+	if (seq != NULL) {
+		seq_puts(seq, "+-----------------------------------------------+\n");
+		seq_puts(seq, "\n");
+	} else {
+		pr_notice("+-----------------------------------------------+\n");
+	}
+
+	pr_notice("Dump DPMAIF_PD_WDMA...\n");
+	if (seq != NULL) {
+		seq_puts(seq, " 	  <<DPMAIF_PD_WDMA CR DUMP>>\n");
+	} else {
+		pr_notice("       <<DPMAIF_PD_WDMA CR DUMP>>\n");
+	}
+
+	for (i = 0; i < 0x100; i = i + 0x10) {
+		sprintf(buf, "0x%08x : 0x%08x 0x%08x 0x%08x 0x%08x\n", BASE_DPMAIF_PD_WDMA + i,
+			reg_read(DPMAIF_PD_WDMA_BASE + i), reg_read(DPMAIF_PD_WDMA_BASE + i + 4),
+			reg_read(DPMAIF_PD_WDMA_BASE + i + 8), reg_read(DPMAIF_PD_WDMA_BASE + i + 0xc));
+		if (seq != NULL) {
+			seq_printf(seq, "%s", buf);
+		} else {
+			pr_notice("[MEDHW] %s", buf);
+		}
+	}
+	if (seq != NULL) {
+		seq_puts(seq, "+-----------------------------------------------+\n");
+		seq_puts(seq, "\n");
+	} else {
+		pr_notice("+-----------------------------------------------+\n");
+	}
+
+	pr_notice("Dump MDMA_TX_DESC...\n");
 	if (seq != NULL) {
 		seq_puts(seq, " 	  <<MDMA_TX_DESC CR DUMP>>\n");
 	} else {
diff --git a/src/kernel/linux/v4.19/drivers/tty/serial/8250/8250_mtk.c b/src/kernel/linux/v4.19/drivers/tty/serial/8250/8250_mtk.c
index 45cf1f3..2db30a2 100644
--- a/src/kernel/linux/v4.19/drivers/tty/serial/8250/8250_mtk.c
+++ b/src/kernel/linux/v4.19/drivers/tty/serial/8250/8250_mtk.c
@@ -57,6 +57,8 @@
 #define MTK_UART_TX_TRIGGER	1
 #define MTK_UART_RX_TRIGGER	MTK_UART_RX_SIZE
 
+#define MAX_POLLING_CNT 8
+
 #ifdef CONFIG_SERIAL_8250_DMA
 enum dma_rx_status {
 	DMA_RX_START = 0,
@@ -90,6 +92,20 @@
 #ifdef CONFIG_SERIAL_8250_DMA
 static void mtk8250_rx_dma(struct uart_8250_port *up);
 
+static int mtk8250_uart_rx_dma(struct uart_8250_port *up)
+{
+	unsigned int iir = 0;
+	unsigned int tmo = MAX_POLLING_CNT;
+
+	while (tmo--) {
+		iir = serial_in(up, UART_IIR);
+		if (iir & UART_IIR_NO_INT)
+		break;
+	}
+	serial_out(up, UART_IER, 0);
+	return 0;
+}
+
 static void mtk8250_dma_rx_complete(void *param)
 {
 	struct uart_8250_port *up = param;
@@ -158,6 +174,7 @@
 	if (data->rx_status != DMA_RX_START)
 		return;
 
+	dma->rx_dma = mtk8250_uart_rx_dma;
 	dma->rxconf.src_port_window_size	= dma->rx_size;
 	dma->rxconf.src_addr				= dma->rx_addr;
 
@@ -172,6 +189,7 @@
 	serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
 	serial_out(up, UART_EFR, UART_EFR_ECB);
 	serial_out(up, UART_LCR, lcr);
+	serial_out(up, UART_IER, 0);
 
 	if (dmaengine_slave_config(dma->rxchan, &dma->rxconf) != 0)
 		pr_err("failed to configure rx dma channel\n");
@@ -313,6 +331,22 @@
 #endif
 
 	serial8250_do_set_termios(port, termios, old);
+#ifdef CONFIG_SERIAL_8250_DMA
+	if (up->dma) {
+		if (!uart_console(port)) {
+			unsigned int tmo = MAX_POLLING_CNT;
+			unsigned int iir = 0;
+
+			while (tmo--) {
+				iir = serial_port_in(port, UART_IIR);
+				if (iir & UART_IIR_NO_INT)
+					break;
+			}
+			up->ier = 0;
+			serial_port_out(port, UART_IER, 0x0);
+		}
+	}
+#endif
 
 	/*
 	 * Mediatek UARTs use an extra highspeed register (MTK_UART_HIGHS)
@@ -383,6 +417,11 @@
 
 	mtk8250_set_flow_ctrl(up, mode);
 
+#ifdef CONFIG_SERIAL_8250_DMA
+	if (up->dma && (!uart_console(port)))
+		serial_port_out(port, UART_IER, 0x0);
+#endif
+
 	if (uart_console(port))
 		up->port.cons->cflag = termios->c_cflag;
 
@@ -417,11 +456,11 @@
 static int __maybe_unused mtk8250_runtime_suspend(struct device *dev)
 {
 	struct mtk8250_data *data = dev_get_drvdata(dev);
-	struct uart_8250_port *up = serial8250_get_port(data->line);
+//	struct uart_8250_port *up = serial8250_get_port(data->line);
 
 	/* wait until UART in idle status */
-	while
-		(serial_in(up, MTK_UART_DEBUG0));
+//	while
+//		(serial_in(up, MTK_UART_DEBUG0));
 
 	if (data->clk_count == 0U) {
 		dev_dbg(dev, "%s clock count is 0\n", __func__);
@@ -589,8 +628,10 @@
 	uart.port.handle_irq = mtk8250_handle_irq;
 	uart.port.uartclk = clk_get_rate(data->uart_clk);
 #ifdef CONFIG_SERIAL_8250_DMA
-	if (data->dma)
+	if (data->dma) {
 		uart.dma = data->dma;
+		uart.dma->rx_dma = mtk8250_uart_rx_dma;
+	}
 #endif
 
 	/* Disable Rate Fix function */
diff --git a/src/kernel/modules/netsys_driver/nat/hw_nat/frame_engine.h b/src/kernel/modules/netsys_driver/nat/hw_nat/frame_engine.h
index 49e1c6b..a4c06c0 100755
--- a/src/kernel/modules/netsys_driver/nat/hw_nat/frame_engine.h
+++ b/src/kernel/modules/netsys_driver/nat/hw_nat/frame_engine.h
@@ -206,9 +206,9 @@
 #define CAH_WDATA           (PPE_BASE + 0x32C)
 #define CAH_RDATA           (PPE_BASE + 0x330)
 #define PPE_SBW_CTRL        (PPE_BASE + 0x374)
-#define PPE_S0_DBG          (PPE_BASE + 0x384)//jb.qi change for reboot after sleep on 20230417
-#define PPE_S1_DBG          (PPE_BASE + 0x388)//jb.qi change for reboot after sleep on 20230417
-#define PPE_S2_DBG          (PPE_BASE + 0x38C)//jb.qi change for reboot after sleep on 20230417
+#define PPE_S0_DBG          (PPE_BASE + 0x384)
+#define PPE_S1_DBG          (PPE_BASE + 0x388)
+#define PPE_S2_DBG          (PPE_BASE + 0x38C)
 
 #define PS_CFG	            (PPE_BASE + 0x400)
 #define PS_FBC		    (PPE_BASE + 0x404)
@@ -251,7 +251,7 @@
 
 #define MEDHW_SSR1_DST_RB0_CFG		(MED_BASE + 0xa0)
 #define MEDHW_SSR1_DST_RB0_STS		(MED_BASE + 0xa4)
-//MED_HNAT_INFO_HOST_ADD_ENTRY_CNT (18):\A0
+//MED_HNAT_INFO_HOST_ADD_ENTRY_CNT (18): 
 #define MEDHW_SSR1_DST_RB0_INC		(MED_BASE + 0xb0)
 #define MEDHW_SSR1_DST_RB0_DEC		(MED_BASE + 0xb4)
 
@@ -588,9 +588,9 @@
 #define MIB_CAH_CTRL_PPE1   (PPE1_BASE + 0x350)
 #define PPE1_6RD_ID	    (PPE1_BASE + 0x36c)
 #define PPE1_SBW_CTRL       (PPE1_BASE + 0x374)
-#define PPE1_S0_DBG         (PPE1_BASE + 0x384)//jb.qi change for reboot after sleep on 20230417
-#define PPE1_S1_DBG         (PPE1_BASE + 0x388)//jb.qi change for reboot after sleep on 20230417
-#define PPE1_S2_DBG         (PPE1_BASE + 0x38C)//jb.qi change for reboot after sleep on 20230417
+#define PPE1_S0_DBG         (PPE1_BASE + 0x384)
+#define PPE1_S1_DBG         (PPE1_BASE + 0x388)
+#define PPE1_S2_DBG         (PPE1_BASE + 0x38C)
 
 #define NETSYS_DVFS_CFG0		(netsys_base + 0xCC)
 #define NETSYS_DVFS_EN			BIT(0)
diff --git a/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.c b/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.c
old mode 100755
new mode 100644
index 6757f3d..7233406
--- a/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.c
+++ b/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.c
@@ -3349,7 +3349,7 @@
 	else
 		return 0;
 }
-/*jb.qi change for reboot after sleep on 20230417 start*/
+
 void ppe_resume_foe_hash_mode(void)
 {
 	/* set foe table */
@@ -3497,7 +3497,7 @@
 
 	return 0;
 }
-/*jb.qi change for reboot after sleep on 20230417 end*/
+
 void ppe_setfoe_ebl(uint32_t foe_ebl)
 {
 	u32 ppe_flow_set = 0;
@@ -3895,7 +3895,7 @@
 }
 
 
-#if (0) //jb.qi change for reboot after sleep on 20230417
+#if (0)
 static void foe_free_tbl(uint32_t num_of_entry, struct device *dev)
 {
 	u32 foe_tbl_size, mib_tbl_size;
@@ -3950,7 +3950,7 @@
 
 	return 0;
 }
-/*jb.qi change for reboot after sleep on 20230417 start*/
+
 void ppe_en_scan_mode(void)
 {
 	/* enable scan mode */
@@ -3971,7 +3971,7 @@
 	return 0;
 }
 
-int ppe_eng_stop(void) 
+int ppe_eng_stop(void)
 {
 	/* Set PPE FOE ENABLE */
 	ppe_setfoe_glocfg_ebl(0);
@@ -3989,7 +3989,7 @@
 
 	return 0;
 }
-/*jb.qi change for reboot after sleep on 20230417 end*/
+
 struct net_device *ra_dev_get_by_name(const char *name)
 {
 	return dev_get_by_name(&init_net, name);
@@ -5105,7 +5105,7 @@
 	ppe_set_cache_ebl();
 
 	/* Initialize PPE related register */
-	ppe_en_scan_mode(); //jb.qi change for reboot after sleep on 20230417
+	ppe_en_scan_mode();
 	ppe_eng_start();
 }
 
diff --git a/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.h b/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.h
index 858b3b5..7972e74 100755
--- a/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.h
+++ b/src/kernel/modules/netsys_driver/nat/hw_nat/hnat_common.h
@@ -59,12 +59,12 @@
 #ifndef NEXTHDR_IPIP
 #define NEXTHDR_IPIP 4
 #endif
-/*jb.qi change for reboot after sleep on 20230417 start*/
+
 void ppe_resume_foe_hash_mode(void);
 void ppe_set_gdm_fwd(uint32_t ebl);
 void ppe_suspend_tbl_clear(void);
 int ppe_suspend_check_status(void);
-/*jb.qi change for reboot after sleep on 20230417 end*/
+
 int ppe_setfoe_hash_mode(u32 hash_mode, struct device *dev);
 void ppe_set_dst_port(uint32_t ebl);
 void ppe_set_ip_prot(void);
@@ -140,6 +140,6 @@
 void hwnat_config_setting(void);
 void fe_feature_setting(void);
 void FOE_INFO_DUMP(struct sk_buff *skb);
-int ppe_dis_scan_mode(void);//jb.qi change for reboot after sleep on 20230417
-int ppe_eng_stop(void);//jb.qi change for reboot after sleep on 20230417
+int ppe_dis_scan_mode(void);
+int ppe_eng_stop(void);
 #endif
diff --git a/src/kernel/modules/netsys_driver/nat/hw_nat/ra_nat.c b/src/kernel/modules/netsys_driver/nat/hw_nat/ra_nat.c
index 70e8b2b..9f9b2ff 100644
--- a/src/kernel/modules/netsys_driver/nat/hw_nat/ra_nat.c
+++ b/src/kernel/modules/netsys_driver/nat/hw_nat/ra_nat.c
@@ -541,7 +541,7 @@
 
 	return ret;
 }
-/*jb.qi change for reboot after sleep on 20230417 start*/
+
 void ppe_restore_hook(void)
 {
 	if (!(fe_feature & MANUAL_MODE)) {
@@ -607,7 +607,7 @@
 		ppe_get_dev_stats = NULL;
 	}
 }
-/*jb.qi change for reboot after sleep on 20230417 end*/
+
 void ppe_modify_hook(bool clear, unsigned char hook_id, int dir) {
 
 	pr_info("ppe_modify_hook, clear = %d, hook_id = %d, dir=%d\n", clear, hook_id, dir);
@@ -697,7 +697,6 @@
 
 int hnat_pm_suspend(struct device *device)
 {
-	/*jb.qi change for reboot after sleep on 20230417 start*/
 	int ret;
 
 	ppe_clear_hook();
@@ -731,13 +730,12 @@
 	ppe_restore_hook();
 
 	return ret;
-	/*jb.qi change for reboot after sleep on 20230417 end*/
 }
 
 int hnat_pm_resume(struct device *device)
 {
 	NAT_PRINT("MEDIATEK HW NAT Module Enabled\n");
-	/*jb.qi change for reboot after sleep on 20230417 end*/
+
 	/* Set PPE FOE Hash Mode */
 	//if (!ppe_setfoe_hash_mode(DFL_FOE_HASH_MODE, &pdev_hnat->dev)) {
 	//	pr_info("PPE0 memory allocation failed\n");
@@ -771,7 +769,7 @@
 
 	ppe_restore_hook();
 	pr_notice("!!!! hnat restore hook\n");
-	/*jb.qi change for reboot after sleep on 20230417 end*/
+
 	pr_notice("!!!! hnat resume done\n");
 
 	return 0;
diff --git a/src/telephonyware/3.0/ccci_fsd/src/ccci_fsd.c b/src/telephonyware/3.0/ccci_fsd/src/ccci_fsd.c
index badf0d2..685cf52 100644
--- a/src/telephonyware/3.0/ccci_fsd/src/ccci_fsd.c
+++ b/src/telephonyware/3.0/ccci_fsd/src/ccci_fsd.c
@@ -84,7 +84,7 @@
 #define FS_WAKE_UNLOCK() release_wake_lock(FS_WAKE_LOCK_NAME)
 
 static char	   md_id = 0;
-static char debug_wakeup = 0; // jb.qi change for abnormal resume on 20230328
+static char debug_wakeup = 0; // enable all log for wakeup msg
 
 /*
  * The maximum log level for messages to be logged to the syslog.
@@ -96,7 +96,7 @@
     LOG_LEVEL_INFO,
     LOG_LEVEL_DEBUG,
 };
-/*jb.qi change for abnormal resume start on 20230328*/
+
 #define DEBUGLEVEL LOG_LEVEL_ERR
 #define LOGD(fmt, ...) \
 do { \
@@ -125,7 +125,7 @@
     if (debug_wakeup || LOG_LEVEL_ERR <= DEBUGLEVEL) \
         ERROR(fmt, ##__VA_ARGS__); \
 } while(0)
-/*jb.qi change for abnormal resume end on 20230328*/
+
 #ifdef CCCI_FSD_UT
 #define dbg_printf(...) printf(__VA_ARGS__) //__android_log_print(ANDROID_LOG_DEBUG, MD_COMN_TAG, __VA_ARGS__);
 #else
@@ -744,7 +744,7 @@
 	return;
 
 }
-/*jb.qi change for abnormal resume start on 20230328*/
+
 static void print_file_name(const char *op_str, char *str, int len)
 {
     if (!op_str || len < 0)
@@ -763,7 +763,7 @@
     else
         LOGW("%s: [str_len = %d or no sub str]\n", op_str, len);
 }
-/*jb.qi change for abnormal resume end on 20230328*/
+
 static bool FS_GetPackInfo(FS_PACKET_INFO* pPackInfo, char* pData)
 {
 	unsigned int PackNum = *((unsigned int*)pData);
@@ -4458,7 +4458,7 @@
 				stream = (STREAM_DATA *)pkt_buff;
 				ccci_h = (CCCI_BUFF_T *)&stream->header;
 				ReqBufIndex = ccci_h->reserved;
-				/*jb.qi change for abnormal resume start on 20230328*/
+
 				if (ccci_h->data[0] & CCCI_FS_AP_CCCI_WAKEUP) {
 					debug_wakeup = 1;
 					ccci_h->data[0] &= (~CCCI_FS_AP_CCCI_WAKEUP);
@@ -4476,7 +4476,6 @@
 							"data[1]=0x%X channel=0x%X reserved=0x%X\n", RetVal,
 							ReqBufIndex, ccci_h->data[0], ccci_h->data[1],
 							ccci_h->channel, ccci_h->reserved);
-				/*jb.qi change for abnormal resume end on 20230328*/
 				buffer_slot = (STREAM_DATA *)((char *)g_FsInfo.pFsBuf + (FS_MAX_BUF_SIZE + sizeof(STREAM_DATA))*ReqBufIndex);
 				p_fs_buff = (char *)buffer_slot;
 			                /******************************************
@@ -4558,7 +4557,7 @@
 		}
 
 		LOGD("OpID = 0X%X\n", pFsBuf->OperateID);
-		/*jb.qi change for abnormal resume start on 20230328*/
+
 		if (debug_wakeup) {
 			LOGW("[wakeup message] OpID = 0X%X\n", pFsBuf->OperateID);
 			switch (pFsBuf->OperateID) {
@@ -4605,7 +4604,7 @@
 					break;
 			}
 		}
-		/*jb.qi change for abnormal resume end on 20230328*/
+
 		switch(pFsBuf->OperateID) {
 #ifdef CCCI_FSD_UT
 			/*ut test*/
diff --git a/src/telephonyware/3.0/ccci_fsd/src/ccci_fsd.h b/src/telephonyware/3.0/ccci_fsd/src/ccci_fsd.h
index 46967d3..5ea2e16 100644
--- a/src/telephonyware/3.0/ccci_fsd/src/ccci_fsd.h
+++ b/src/telephonyware/3.0/ccci_fsd/src/ccci_fsd.h
@@ -376,7 +376,7 @@
 #define MAX_FS_PKT_BYTE (3584-128)
 #define MAX_FS_BUF_BYTE 4096
 
-#define CCCI_FS_AP_CCCI_WAKEUP (0x40000000) //jb.qi change for abnormal resume on 20230328
+#define CCCI_FS_AP_CCCI_WAKEUP (0x40000000)
 #define CCCI_FS_REQ_SEND_AGAIN 0x80000000
 #define CCCI_FS_PEER_REQ_SEND_AGAIN(_p) (((((CCCI_BUFF_T*)(_p))->data[0] & CCCI_FS_REQ_SEND_AGAIN) != 0)? 1: 0)
 
diff --git a/src/telephonyware/3.0/ccci_mdinit/src/md_init_fsm.c b/src/telephonyware/3.0/ccci_mdinit/src/md_init_fsm.c
index c7d7001..e05ffb6 100755
--- a/src/telephonyware/3.0/ccci_mdinit/src/md_init_fsm.c
+++ b/src/telephonyware/3.0/ccci_mdinit/src/md_init_fsm.c
@@ -63,10 +63,9 @@
 #endif
 // for FSD wake_lock not released
 #include <signal.h>
-/*warren add for MTK MR3.0 NVRAM can`t Banckup BinRegion on 2022/09/06 start*/
 #include <limits.h>
 #include <stdbool.h>
-/*warren add for MTK MR3.0 NVRAM can`t Banckup BinRegion on 2022/09/06 end*/
+
 #ifdef NEED_CTRL_AS_SP
 int dl_aee_system_exception(const char *module, const char *path, unsigned int flag, const char* msg, ...);
 #endif
@@ -942,7 +941,6 @@
 #endif
 }
 
-/*warren add for MTK MR3.0 NVRAM can`t Banckup BinRegion on 2022/09/06 start*/
 #define NVRAM_INIT_FILE_PATH "/tmp/nvram_init"
 
 static int str2int(char *str, int base, int *err) {
@@ -1026,7 +1024,6 @@
 	}
 	return ret;
 }
-/*warren add for MTK MR3.0 NVRAM can`t Banckup BinRegion on 2022/09/06 end*/
 
 typedef enum {
 	MODE_UNKNOWN = -1,	  /* -1 */
@@ -1371,9 +1368,7 @@
 	if (!first_boot)
 		check_to_restart_md();
 	check_decrypt_ready();
-        /*warren add for MTK MR3.0 NVRAM can`t Banckup BinRegion on 2022/09/06 start*/
 	check_nvram_ready();
-        /*warren add for MTK MR3.0 NVRAM can`t Banckup BinRegion on 2022/09/06 end*/
 	set_md_boot_env_data(md_id, monitor_fd);
 	start_service_verified(fsd_name, fsd_service_status, MAX_WAIT_FOR_PROPERTY);
 
diff --git a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/ims/RpImsController.cpp b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/ims/RpImsController.cpp
index 03a64eb..ed7ad74 100644
--- a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/ims/RpImsController.cpp
+++ b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/ims/RpImsController.cpp
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: MediaTekProprietary
 /* Copyright Statement:
  *
  * This software/firmware and related documentation ("MediaTek Software") are
@@ -56,6 +57,7 @@
 
 #include "RfxDispatchThread.h"
 #include "Rfx.h"
+#include "rfx_properties.h"
 #include "RilParcelUtils.h"
 #include <telephony/mtk_ril_request_info.h>
 #include "RfxRootController.h"
@@ -157,6 +159,17 @@
 }
 
 extern "C" {
+int isImsSupport() {
+    int isImsSupport = 0;
+    char prop_value[RFX_PROPERTY_VALUE_MAX] = {0};
+    rfx_property_get("persist.vendor.ims.support", prop_value, "1");
+    isImsSupport = atoi(prop_value);
+    RFX_LOG_D(RFX_LOG_TAG, "isImsSupport = %d", isImsSupport);
+    return isImsSupport;
+}
+}
+
+extern "C" {
 void mipc_ims_set_config_cb(mipc_msg_t *msg_ptr, void *priv_ptr) {
     mipc_result_enum result;
     mipc_sim_ps_id_enum sim_ps_id;
@@ -194,8 +207,15 @@
 
         uint8_t data[6]={0,0,0,0,1,1};
         mipc_msg_t *msg_req_ptr = NULL;
-        data[0] = enable;
-        RFX_LOG_D(RFX_LOG_TAG,"handleSetImsEnableRequest enalbe = %d\n",enable);
+
+        if (isImsSupport()) {
+            data[0] = enable;
+        } else {
+            data[4] = 0;
+            data[5] = 0;
+        }
+
+        RFX_LOG_D(RFX_LOG_TAG,"handleSetImsEnableRequest enable = %d, ims support = %d\n", data[0], isImsSupport());
 
         msg_req_ptr = mipc_msg_init(MIPC_IMS_SET_CONFIG_REQ, (mipc_msg_sim_ps_id_enum)slot_id_to_mipc_sim_id(request->getSlotId()));
         if(msg_req_ptr) {
@@ -219,7 +239,7 @@
         Parcel *p = request->getParcel();
         int32_t status;
         int count;
-        if(p != NULL) {
+        if(isImsSupport() && (p != NULL)) {
             status = p->readInt32(&count);
             if (status != 0) {
                 RFX_LOG_D(RFX_LOG_TAG,"handleSetImsCfgRequest readerror\n");
@@ -259,8 +279,8 @@
 
         uint8_t data[6]={volte,vilte,vowifi,viwifi,sms,eims};
         mipc_msg_t *msg_req_ptr;
-        RFX_LOG_D(RFX_LOG_TAG,"handleSetImsCfgRequest volte=%d,vilte=%d,vowifi=%d,viwifi=%d,sms=%d,eims=%d\n",
-            volte,vilte,vowifi,viwifi,sms,eims);
+        RFX_LOG_D(RFX_LOG_TAG,"handleSetImsCfgRequest isImsSupport()=%d, volte=%d,vilte=%d,vowifi=%d,viwifi=%d,sms=%d,eims=%d\n",
+            isImsSupport(), volte,vilte,vowifi,viwifi,sms,eims);
 
         msg_req_ptr = mipc_msg_init(MIPC_IMS_SET_CONFIG_REQ, (mipc_msg_sim_ps_id_enum)slot_id_to_mipc_sim_id(request->getSlotId()));
         if(msg_req_ptr) {
diff --git a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/ApnContext.cpp b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/ApnContext.cpp
index 758f54a..983bead 100644
--- a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/ApnContext.cpp
+++ b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/ApnContext.cpp
@@ -290,7 +290,6 @@
                        mApnType.c_str(), RpDataUtils::apnState2string(newState), RpDataUtils::requestOrUrcToString(response->getId()));
 
             // no need config the network for DEFAULT pdn.
-            //if (ApnContext::mApnType != TEXT_APN_TYPE_DEFAULT) {
             if (ApnContext::mApnType != TEXT_APN_TYPE_DEFAULT && ApnContext::mApnType != TEXT_IOT_APN_TYPE_DEFAULT) {
                 RpDataUtils::configNetwork(dcResponse.netId, dcResponse.ifname, dcResponse.gateways, dcResponse.dnses);
             }
@@ -311,11 +310,6 @@
             RFX_LOG_D(RFX_LOG_TAG, "ApnContext(%s) ::notifyStateChange with newState = %s, with Urc: %s",
                        mApnType.c_str(), RpDataUtils::apnState2string(newState), RpDataUtils::requestOrUrcToString(urc->getId()));
 
-            // no need config the network for DEFAULT pdn.
-            //if (ApnContext::mApnType != TEXT_APN_TYPE_DEFAULT) {
-                //RpDataUtils::configNetwork(dcResponse.netId, dcResponse.ifname, dcResponse.gateways, dcResponse.dnses);
-            //}
-
             ApnContext::mRpDataController->notifyWorld(urc);
         }
         break;
diff --git a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.cpp b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.cpp
index 340d0aa..f6d260e 100755
--- a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.cpp
+++ b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.cpp
@@ -50,7 +50,6 @@
 #include <errno.h>
 #include <unistd.h>
 #include <cutils/jstring.h>
-#include <cutils/properties.h>
 
 #include <string>
 using namespace std;
@@ -231,7 +230,7 @@
 void RpDataController::handleSetupDataRequest(const sp<RfxMessage>& request) {
     logD(RFX_LOG_TAG, "handleSetupDataRequest with clientId: %d, with token: %d",
             request->getClientId(), request->getToken());
-    //checkMccMnc();
+
     if (request->getClientId() > 0) {
         RpDataController::mDcTracker.requestNetwork(request);
     } else {
@@ -523,6 +522,7 @@
     result = ss.isInService(ss.getRilDataRegState());
  
     logD(RFX_LOG_TAG, "RpDataController::isAttached, with result: %s", RpDataUtils::b2s(result).c_str());
+
     if (!result) {
         sp<RfxMessage> Req = RfxMessage::obtainRequest(m_slot_id,
                 RADIO_TECH_GROUP_GSM, RIL_REQUEST_DATA_REGISTRATION_STATE);
@@ -537,26 +537,3 @@
 
     RpDataController::sendToGsm(request);;
 }
-void RpDataController::checkMccMnc()
-{
-    logD(RFX_LOG_TAG, "checkMccMnc");
-    String8 mccmnc;
-    int count = 0;
-    char mccmncvalue[32]={0};
-    String8 mccMncKey("");
-    mccmnc = getStatusManager(0)->getString8Value(RFX_STATUS_KEY_GSM_OPERATOR_NUMERIC, String8(""));//just support slot 0
-    logD(RFX_LOG_TAG, "mccmnc:%s",mccmnc.string());
-    while(mccmnc.isEmpty() && (count < 10))
-    {
-        RpApnController *apnController = (RpApnController *)findController(RFX_OBJ_CLASS_INFO(RpApnController));
-        apnController->reloadApnDBPub();
-        mccmnc = getStatusManager(0)->getString8Value(RFX_STATUS_KEY_GSM_OPERATOR_NUMERIC, String8(""));
-        if (mccmnc.isEmpty())
-        {
-            sleep(1);
-            count++;
-        }
-    }
-    logD(RFX_LOG_TAG, "count:%d,mccmnc:%s",count,mccmnc.string());
-}
-
diff --git a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.h b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.h
index 5a91d35..d270e08 100755
--- a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.h
+++ b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.h
@@ -73,7 +73,6 @@
     bool isAttached();
     void setApnReady(bool ready);
     int getApnReady(void);
-    void checkMccMnc();
 
 // Override
 protected: