[Feature][T106][task-view-944]Support the M22 Nand

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

Change-Id: Icc3f521166744d7ee55789304a30f94992c4a602
diff --git a/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/product.ini b/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/product.ini
new file mode 100755
index 0000000..9cc8232
--- /dev/null
+++ b/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/product.ini
@@ -0,0 +1,9 @@
+[imagefs]

+largefile_split_enable=no

+mkfs_jffs2=-v -X lzo --pagesize=0x800 --eraseblock=0x20000 --little-endian --no-cleanmarkers --squash 

+

+[nvrofs]

+mkfs_jffs2=-v -X lzo --pagesize=0x800 --eraseblock=0x20000 --little-endian --no-cleanmarkers --squash

+

+[resource]

+mkfs_jffs2=-v -X lzo --pagesize=0x800 --eraseblock=0x20000 --little-endian --no-cleanmarkers --squash

diff --git a/allbins/zx297520v3/prj_vehicle/config_dc_4Gb/partition_M22.bin b/allbins/zx297520v3/prj_vehicle/config_dc_4Gb/partition_M22.bin
new file mode 100755
index 0000000..e6d9094
--- /dev/null
+++ b/allbins/zx297520v3/prj_vehicle/config_dc_4Gb/partition_M22.bin
Binary files differ
diff --git a/allbins/zx297520v3/prj_vehicle/config_dc_4Gb/partition_M22.ini b/allbins/zx297520v3/prj_vehicle/config_dc_4Gb/partition_M22.ini
new file mode 100755
index 0000000..df94ad5
--- /dev/null
+++ b/allbins/zx297520v3/prj_vehicle/config_dc_4Gb/partition_M22.ini
@@ -0,0 +1,115 @@
+[PartitionHead]
+partition_magic=0x31594876
+partition_platform=WF7520
+partition_version=0x00201304
+partition_entrys=0x12
+partition_crc=0x12345678
+
+[Partition0]
+partition_name=zloader
+partition_type=nand
+partition_addr=0x00000000
+partition_size=0x00040000
+
+[Partition1]
+partition_name=uboot
+partition_type=nand
+partition_addr=0x00040000
+partition_size=0x00100000
+
+[Partition2]
+partition_name=uboot2
+partition_type=nand
+partition_addr=0x00140000
+partition_size=0x00100000
+
+[Partition3]
+partition_name=nvrofs
+partition_type=nand
+partition_addr=0x00240000
+partition_size=0x00200000
+
+[Partition4]
+partition_name=flags
+partition_type=nand
+partition_addr=0x00440000
+partition_size=0x004C0000
+
+[Partition5]
+partition_name=imagefs
+partition_type=nand
+partition_addr=0x00900000
+partition_size=0x00C00000
+
+[Partition6]
+partition_name=imagefs2
+partition_type=nand
+partition_addr=0x01500000
+partition_size=0x00C00000
+
+[Partition7]
+partition_name=rootfs
+partition_type=nand
+partition_addr=0x02100000
+partition_size=0x01400000
+
+[Partition8]
+partition_name=rootfs2
+partition_type=nand
+partition_addr=0x03500000
+partition_size=0x01400000
+
+[Partition9]
+partition_name=userdata
+partition_type=nand
+partition_addr=0x04900000
+partition_size=0x01000000
+
+[Partition10]
+partition_name=caprootfs
+partition_type=nand
+partition_addr=0x05900000
+partition_size=0x02800000
+
+[Partition11]
+partition_name=caprootfs2
+partition_type=nand
+partition_addr=0x08100000
+partition_size=0x02800000
+
+[Partition12]
+partition_name=capuserdata
+partition_type=nand
+partition_addr=0x0A900000
+partition_size=0x02800000
+
+[Partition13]
+partition_name=oem
+partition_type=nand
+partition_addr=0x0D100000
+partition_size=0x00E00000
+
+[Partition14]
+partition_name=oem2
+partition_type=nand
+partition_addr=0x0DF00000
+partition_size=0x00E00000
+
+[Partition15]
+partition_name=oemdata
+partition_type=nand
+partition_addr=0x0ED00000
+partition_size=0x01000000
+
+[Partition16]
+partition_name=ddr
+partition_type=ddr
+partition_addr=0x00000000
+partition_size=0xFFFFFFFF
+
+[Partition17]
+partition_name=raw
+partition_type=raw
+partition_addr=0x00000000
+partition_size=0x10000000
+
diff --git a/allbins/zx297520v3/prj_vehicle/scripts_linux/AllInOneImage_dc_ref_M22.ini b/allbins/zx297520v3/prj_vehicle/scripts_linux/AllInOneImage_dc_ref_M22.ini
new file mode 100755
index 0000000..d5a470a
--- /dev/null
+++ b/allbins/zx297520v3/prj_vehicle/scripts_linux/AllInOneImage_dc_ref_M22.ini
@@ -0,0 +1,36 @@
+[GeneralSetting]

+storage_type=1

+is_nv_coalition=1

+TLoaderAddr=0x80000

+

+[Output]

+FilePath=7520V3SC_VEC_DC_REF_M22.bin

+

+[TLoader]

+FilePath=../allbins_dc_ref_M22/tloader.bin

+

+[TBoot]

+FilePath=../allbins_dc_ref_M22/tboot.bin

+

+[Partition]

+FilePath=../allbins_dc_ref_M22/partition.bin

+

+[ProductInfo]

+FilePath=../allbins_dc_ref_M22/product.ini

+

+[Image]

+../allbins_dc_ref_M22/ap_imagefs.img

+../allbins_dc_ref_M22/ap_imagefs2.img

+../allbins_dc_ref_M22/ap_userdata.img

+../allbins_dc_ref_M22/ap_capuserdata.img

+../allbins_dc_ref_M22/cap_oemdata.img

+../allbins_dc_ref_M22/ap_rootfs.img

+../allbins_dc_ref_M22/ap_rootfs2.img

+../allbins_dc_ref_M22/ap_caprootfs.img

+../allbins_dc_ref_M22/ap_caprootfs2.img

+../allbins_dc_ref_M22/cap_oem.img

+../allbins_dc_ref_M22/cap_oem2.img

+../allbins_dc_ref_M22/flags.bin

+../allbins_dc_ref_M22/uboot.bin

+../allbins_dc_ref_M22/uboot2.bin

+../allbins_dc_ref_M22/zloader.bin

diff --git a/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWInOneImage_dc_ref_M22.ini b/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWInOneImage_dc_ref_M22.ini
new file mode 100755
index 0000000..3379634
--- /dev/null
+++ b/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWInOneImage_dc_ref_M22.ini
@@ -0,0 +1,18 @@
+

+[NVIMAGE]

+NvrwPath=../allbins_dc_ref_M22/nvrwall.bin

+

+[NVRO]

+

+

+[NVRW]

+../allbins_dc_ref_M22/ati_nvrw_0x00000800.bin

+../allbins_dc_ref_M22/at_nvrw_0x00001000.bin

+../allbins_dc_ref_M22/drv_nvrw_0x00012000.bin

+../allbins_dc_ref_M22/phycfg_nvrw_0x00001400.bin

+../allbins_dc_ref_M22/psPriData_nvrw_0x00002000.bin

+../allbins_dc_ref_M22/psPubData_nvrw_0x00001C00.bin

+../allbins_dc_ref_M22/Ref_nvrw_0x26C00.bin

+../allbins_dc_ref_M22/tsp_nvrw_0x00000000.bin

+../allbins_dc_ref_M22/voice_nvrw_0x00016000.bin

+

diff --git a/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref_M22.ini b/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref_M22.ini
new file mode 100755
index 0000000..548577c
--- /dev/null
+++ b/allbins/zx297520v3/prj_vehicle/scripts_linux/NVRWOInOneImage_dc_ref_M22.ini
@@ -0,0 +1,39 @@
+

+;NV合并

+[NVIMAGE]

+;NvroPath=modem_nvro.bin

+NvrwoPath=../allbins_dc_ref_M22/nvrwoall.bin

+

+[NVRO]

+;举例../../../zx297520/nv/CA_3M_BX/amtComm_nvro_0x00000000.bin

+

+[NVRWO]

+;举例../../../zx297520/nv/CA_3M_BX/at_nvrw_0x00022000.bin

+../allbins_dc_ref_M22/phycom_nvrwo_0x0002BC00.bin

+;xf.li@20230927 add for DRDI start

+../allbins_dc_ref_M22/phycom_nvrwo_0x0002C400.bin

+../allbins_dc_ref_M22/phycom_nvrwo_0x00037C00.bin

+;xf.li@20230927 add for DRDI end

+../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x00003400.bin

+;xf.li@20230927 add for DRDI start

+../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x0002CC00.bin

+../allbins_dc_ref_M22/phyGgeAmtUser_nvrwo_0x00038400.bin

+;xf.li@20230927 add for DRDI end

+../allbins_dc_ref_M22/phyGgeCom_nvrwo_0x0000EC00.bin

+../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x00007800.bin

+;xf.li@20230927 add for DRDI start

+../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x0003C800.bin

+../allbins_dc_ref_M22/phyLteaAmtUser_nvrwo_0x00031000.bin

+;xf.li@20230927 add for DRDI end

+../allbins_dc_ref_M22/phyLteaCom_nvrwo_0x00012C00.bin

+../allbins_dc_ref_M22/phyLtetxtable_nvrwo_0x0001BC00.bin

+../allbins_dc_ref_M22/phyTdsAmtUser_nvrwo_0x00002800.bin

+../allbins_dc_ref_M22/phyTdsCom_nvrwo_0x0000E400.bin

+../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x00005000.bin

+;xf.li@20230927 add for DRDI start

+../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x0002E800.bin

+../allbins_dc_ref_M22/phyWcdmaAmtUser_nvrwo_0x0003A000.bin

+;xf.li@20230927 add for DRDI end

+../allbins_dc_ref_M22/phyWcdmaCom_nvrwo_0x00012400.bin

+../allbins_dc_ref_M22/zxRfM0_nvrwo_0x00016C00.bin

+

diff --git a/allbins/zx297520v3/prj_vehicle/scripts_linux/copybin_a_to_b.sh b/allbins/zx297520v3/prj_vehicle/scripts_linux/copybin_a_to_b.sh
index 697130b..1f0278f 100755
--- a/allbins/zx297520v3/prj_vehicle/scripts_linux/copybin_a_to_b.sh
+++ b/allbins/zx297520v3/prj_vehicle/scripts_linux/copybin_a_to_b.sh
@@ -9,6 +9,9 @@
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc/ap_imagefs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc/ap_imagefs2.img
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_4Gb/ap_imagefs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_4Gb/ap_imagefs2.img
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref/ap_imagefs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref/ap_imagefs2.img
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref_M22/ap_imagefs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref_M22/ap_imagefs2.img
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_systemd/ap_imagefs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_systemd/ap_imagefs2.img
 
 #ap_rootfs.img
@@ -16,12 +19,18 @@
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc/ap_rootfs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc/ap_rootfs2.img
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_4Gb/ap_rootfs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_4Gb/ap_rootfs2.img
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref/ap_rootfs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref/ap_rootfs2.img
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref_M22/ap_rootfs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref_M22/ap_rootfs2.img
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_systemd/ap_rootfs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_systemd/ap_rootfs2.img
 
 #ap_caprootfs
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc/ap_caprootfs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc/ap_caprootfs2.img
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_4Gb/ap_caprootfs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_4Gb/ap_caprootfs2.img
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref/ap_caprootfs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref/ap_caprootfs2.img
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref_M22/ap_caprootfs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref_M22/ap_caprootfs2.img
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_systemd/ap_caprootfs.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_systemd/ap_caprootfs2.img
 
 #uboot
@@ -29,10 +38,16 @@
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc/uboot.bin  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc/uboot2.bin
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_4Gb/uboot.bin  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_4Gb/uboot2.bin
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref/uboot.bin  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref/uboot2.bin
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref_M22/uboot.bin  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref_M22/uboot2.bin
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_systemd/uboot.bin  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_systemd/uboot2.bin
 
 #oem
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins/ap_oem.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins/ap_oem2.img
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_4Gb/cap_oem.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_4Gb/cap_oem2.img
 cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref/cap_oem.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref/cap_oem2.img
-cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_systemd/cap_oem.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_systemd/cap_oem2.img
\ No newline at end of file
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref_M22/cap_oem.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_ref_M22/cap_oem2.img
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+cp -rvf $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_systemd/cap_oem.img  $TOP_DIR/zx297520v3/prj_vehicle/allbins_dc_systemd/cap_oem2.img
diff --git a/allbins/zx297520v3/prj_vehicle/scripts_linux/copybin_vehicle_dc_ref.sh b/allbins/zx297520v3/prj_vehicle/scripts_linux/copybin_vehicle_dc_ref.sh
index 364ab03..1f9e9eb 100755
--- a/allbins/zx297520v3/prj_vehicle/scripts_linux/copybin_vehicle_dc_ref.sh
+++ b/allbins/zx297520v3/prj_vehicle/scripts_linux/copybin_vehicle_dc_ref.sh
@@ -5,14 +5,25 @@
 
 #partition
 cp -rvf $TOP_DIR/allbins/zx297520v3/prj_vehicle/config_dc_4Gb/*  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+cp -rvf $TOP_DIR/allbins/zx297520v3/prj_vehicle/config_dc_4Gb/partition_M22.ini  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/partition.ini
+cp -rvf $TOP_DIR/allbins/zx297520v3/prj_vehicle/config_dc_4Gb/partition_M22.bin  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/partition.bin
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 
 #rpm
 cp -rvf $TOP_DIR/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.img  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/evb_cpurpm.img
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+cp -rvf $TOP_DIR/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.img  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/evb_cpurpm.img
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+
 cp -rvf $TOP_DIR/rpm/project/zx297520v3/bin/tos/modem_7520v3/*  $TOP_DIR/allbins/zx297520v3/prj_vehicle/elf_dc_ref/
 rm $TOP_DIR/allbins/zx297520v3/prj_vehicle/elf_dc_ref/evb_cpurpm.img
 
 #phy
 cp -rvf $TOP_DIR/cp/phy/bin/zx297520v3/merge_lte_220a1_bin/ps/evb_cpuphy.bin  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/evb_cpuphy.bin
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+cp -rvf $TOP_DIR/cp/phy/bin/zx297520v3/merge_lte_220a1_bin/ps/evb_cpuphy.bin  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/evb_cpuphy.bin
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 cp -rvf $TOP_DIR/cp/phy/bin/zx297520v3/merge_lte_220a1_bin/ps/*  $TOP_DIR/allbins/zx297520v3/prj_vehicle/elf_dc_ref/
 rm $TOP_DIR/allbins/zx297520v3/prj_vehicle/elf_dc_ref/evb_cpuphy.bin
 
@@ -34,6 +45,23 @@
 rm $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/phyTdsAmtCali_nvro_0x00048000.bin
 rm $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/phyWcdmaAmtCali_nvro_0x00058000.bin
 rm $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/phyLteaAmtCali_nvro_0x00078000.bin
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+mkdir -p $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/config
+cp -rvf $TOP_DIR/allbins/zx297520v3/prj_evb/nv/* $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/
+cp -rvf $TOP_DIR/allbins/zx297520v3/prj_evb/nv/merge_lte/* $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/
+cp -rvf $TOP_DIR/allbins/zx297520v3/prj_vehicle/nv/* $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/
+cp -rvf $TOP_DIR/allbins/zx297520v3/prj_vehicle/nv_dc_ref/* $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/
+rm -rf $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/merge_lte
+rm -rf $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/ps_nopsm
+rm -rf $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/th_psm
+rm -rf $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/单天线
+rm $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/amtComm_nvro_0x00000000.bin
+rm $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/phyGgeAmtCali_nvro_0x00050000.bin
+rm $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/phyLteAmtCali_nvro_0x00008000.bin
+rm $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/phyTdsAmtCali_nvro_0x00048000.bin
+rm $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/phyWcdmaAmtCali_nvro_0x00058000.bin
+rm $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/phyLteaAmtCali_nvro_0x00078000.bin
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 
 #uboot
 mkdir -p $TOP_DIR/allbins/zx297520v3/prj_vehicle/elf_dc_ref/boot/dl_off
@@ -41,6 +69,13 @@
 cp -rvf $TOP_DIR/boot/prj/zx297520v3/vehicle_dc_ref/bin/tloader.bin  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/tloader.bin
 cp -rvf $TOP_DIR/boot/prj/zx297520v3/vehicle_dc_ref/bin/uboot.bin  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/uboot.bin
 cp -rvf $TOP_DIR/boot/prj/zx297520v3/vehicle_dc_ref/bin/dl_off/zloader.bin  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/zloader.bin
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+cp -rvf $TOP_DIR/boot/prj/zx297520v3/vehicle_dc_ref/bin/tboot.bin  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/tboot.bin
+cp -rvf $TOP_DIR/boot/prj/zx297520v3/vehicle_dc_ref/bin/tloader.bin  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/tloader.bin
+cp -rvf $TOP_DIR/boot/prj/zx297520v3/vehicle_dc_ref/bin/uboot.bin  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/uboot.bin
+cp -rvf $TOP_DIR/boot/prj/zx297520v3/vehicle_dc_ref/bin/dl_off/zloader.bin  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/zloader.bin
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+
 cp -rvf $TOP_DIR/boot/prj/zx297520v3/vehicle_dc_ref/bin/u-boot  $TOP_DIR/allbins/zx297520v3/prj_vehicle/elf_dc_ref/boot/u-boot
 cp -rvf $TOP_DIR/boot/prj/zx297520v3/vehicle_dc_ref/bin/u-boot.map  $TOP_DIR/allbins/zx297520v3/prj_vehicle/elf_dc_ref/boot/u-boot.map
 cp -rvf $TOP_DIR/boot/prj/zx297520v3/vehicle_dc_ref/bin/z-load  $TOP_DIR/allbins/zx297520v3/prj_vehicle/elf_dc_ref/boot/z-load
@@ -50,11 +85,23 @@
 
 #ap
 cp -rvf $TOP_DIR/ap/project/zx297520v3/prj_vehicle_dc_ref/bin/220A1/allbins/*  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+cp -rvf $TOP_DIR/ap/project/zx297520v3/prj_vehicle_dc_ref/bin/220A1/allbins/*  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 cp -rvf $TOP_DIR/ap/project/zx297520v3/prj_vehicle_dc_ref/bin/220A1/elfs/*  $TOP_DIR/allbins/zx297520v3/prj_vehicle/elf_dc_ref/
 
 #cap
 mkdir -p $TOP_DIR/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap
 cp -rvf $TOP_DIR/cap/allbins/zx297520v3/vehicle_dc_ref/bins/*  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+cp -rvf $TOP_DIR/cap/allbins/zx297520v3/vehicle_dc_ref/bins/*  $TOP_DIR/allbins/zx297520v3/prj_vehicle/allbins_dc_ref_M22/
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 cp -rvf $TOP_DIR/cap/allbins/zx297520v3/vehicle_dc_ref/elf/*  $TOP_DIR/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/
-
-
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+cp ../allbins_dc_ref_M22/ap_caprootfs_M22.img ../allbins_dc_ref_M22/ap_caprootfs.img
+cp ../allbins_dc_ref_M22/ap_capuserdata_M22.img ../allbins_dc_ref_M22/ap_capuserdata.img
+cp ../allbins_dc_ref_M22/ap_cpuap_M22.bin ../allbins_dc_ref_M22/ap_cpuap.bin
+cp ../allbins_dc_ref_M22/ap_rootfs_M22.img ../allbins_dc_ref_M22/ap_rootfs.img
+cp ../allbins_dc_ref_M22/cap_oemdata_M22.img ../allbins_dc_ref_M22/cap_oemdata.img
+cp ../allbins_dc_ref_M22/cap_oem_M22.img ../allbins_dc_ref_M22/cap_oem.img
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
diff --git a/allbins/zx297520v3/prj_vehicle/scripts_linux/merge_M22.sh b/allbins/zx297520v3/prj_vehicle/scripts_linux/merge_M22.sh
new file mode 100755
index 0000000..c406730
--- /dev/null
+++ b/allbins/zx297520v3/prj_vehicle/scripts_linux/merge_M22.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+CURR_DIR=`pwd`
+TOP_DIR=$CURR_DIR/../../../..
+
+chmod -R a+x $CURR_DIR/*
+chmod a+x $TOP_DIR/tools/SignTool/*
+chmod a+x $TOP_DIR/allbins/tools/squashfskit/*
+chmod a+x $TOP_DIR/allbins/tools/resign_tool/*
+
+#./Image -n  NVRWInOneImage.ini
+#./Image -n  NVRWOInOneImage.ini
+#./Image -n  NVRWInOneImage_dc.ini
+#./Image -n  NVRWOInOneImage_dc.ini
+#./Image -n  NVRWInOneImage_dc_4Gb.ini
+#./Image -n  NVRWOInOneImage_dc_4Gb.ini
+#./Image -n  NVRWInOneImage_dc_ref.ini
+#./Image -n  NVRWOInOneImage_dc_ref.ini
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+./Image -n  NVRWInOneImage_dc_ref_M22.ini
+./Image -n  NVRWOInOneImage_dc_ref_M22.ini
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+#./Image -n  NVRWInOneImage_dc_systemd.ini
+#./Image -n  NVRWOInOneImage_dc_systemd.ini
+#Ç©ÃûÀÏоƬ£¬½öÖ§³ÖRSA 1024£¬ÐèÒª¼ÓµÚÈý¸ö²ÎÊýΪv3t
+#bash  product_resign.sh  ../key/RSA_1024/private.k  ../allbins_dc         v3t
+#bash  product_resign.sh  ../key/RSA_1024/private.k  ../allbins_dc_4Gb     v3t
+#bash  product_resign.sh  ../key/RSA_1024/private.k  ../allbins_dc_ref     v3t
+#bash  product_resign.sh  ../key/RSA_1024/private.k  ../allbins_dc_systemd v3t
+#Ç©ÃûÐÅÏ¢°²È«Ð¾Æ¬£¬Ö§³ÖRSA 2048
+#bash  product_resign.sh  ../key/RSA_2048/private.k  ../allbins_dc
+#bash  product_resign.sh  ../key/RSA_2048/private.k  ../allbins_dc_4Gb
+#bash  product_resign.sh  ../key/RSA_2048/private.k  ../allbins_dc_ref
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+#bash  product_resign.sh  ../key/RSA_2048/private.k  ../allbins_dc_ref_M22
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+#bash  product_resign.sh  ../key/RSA_2048/private.k  ../allbins_dc_systemd
+#./Image -f  FsImage.ini
+#./Image -f  FsImage_dc.ini
+#./Image -f  FsImage_dc_4Gb.ini
+#./Image -f  FsImage_dc_ref.ini
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+./Image -f  FsImage_dc_ref_M22.ini
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+#./Image -f  FsImage_dc_systemd.ini
+bash copybin_a_to_b.sh
+#./Image -m  AllInOneImage.ini
+#./Image -m  AllInOneImage_dc.ini
+#./Image -m  AllInOneImage_dc_4Gb.ini
+#./Image -m  AllInOneImage_dc_ref.ini
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+./Image -m  AllInOneImage_dc_ref_M22.ini
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+#./Image -m  AllInOneImage_dc_systemd.ini
+
+
diff --git a/ap/Makefile b/ap/Makefile
index 0e5fed9..cefe54b 100755
--- a/ap/Makefile
+++ b/ap/Makefile
@@ -179,6 +179,15 @@
 	dd if=$(IMAGE_DIR)/rootfs_signed.img of=$(IMAGE_DIR)/rootfs.sign bs=704 count=1
 	cat $(IMAGE_DIR)/rootfs.sign  $(IMAGE_DIR)/linux_kernel.img  >  $(IMAGE_DIR)/rootfs_kernel.img
 	@$(SIGN) -i $(IMAGE_DIR)/rootfs_kernel.img -o $(PRJ_BIN_DIR)/allbins/ap_cpuap.bin -k $(PRIVATE_KEY_PATH)
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+ifeq ($(LYNQ_NAND_TYPE),M22)
+	mkimage -A arm -O linux -C none  -T filesystem -a 0 -e 0 -n 'rootfs' -d $(IMAGE_DIR)/rootfs_M22.img $(IMAGE_DIR)/rootfs_u_M22.img
+	@$(SIGN) -i $(IMAGE_DIR)/rootfs_u_M22.img  -o $(IMAGE_DIR)/rootfs_signed_M22.img  -k $(PRIVATE_KEY_PATH)
+	dd if=$(IMAGE_DIR)/rootfs_signed_M22.img of=$(IMAGE_DIR)/rootfs_M22.sign bs=704 count=1
+	cat $(IMAGE_DIR)/rootfs_M22.sign  $(IMAGE_DIR)/linux_kernel.img  >  $(IMAGE_DIR)/rootfs_kernel_M22.img
+	@$(SIGN) -i $(IMAGE_DIR)/rootfs_kernel_M22.img -o $(PRJ_BIN_DIR)/allbins/ap_cpuap_M22.bin -k $(PRIVATE_KEY_PATH)
+endif
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 else
 	@cp -v $(IMAGE_DIR)/linux_kernel.img      $(PRJ_BIN_DIR)/allbins/ap_cpuap.bin
 endif
@@ -536,6 +545,11 @@
 	bash $(BUILD_DIR)/jffs2_lzma.sh $(ROOTFS_DIR) $(IMAGE_DIR)/rootfs.img lzma
 else
 	bash $(BUILD_DIR)/jffs2_lzma.sh $(ROOTFS_DIR) $(IMAGE_DIR)/rootfs.img lzo
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+ifeq ($(LYNQ_NAND_TYPE),M22)
+	bash $(BUILD_DIR)/jffs2_lzma.sh $(ROOTFS_DIR) $(IMAGE_DIR)/rootfs_M22.img lzo lynq
+endif
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 endif
 else
 ifeq ($(ROOT_FS_TYPE),squashfs)
@@ -685,6 +699,11 @@
 normal_copybin: normal_check
 	mkdir -p $(PRJ_BIN_DIR)/allbins $(PRJ_BIN_DIR)/elfs/normalelfs
 	cp -v $(IMAGE_DIR)/rootfs.img $(PRJ_BIN_DIR)/allbins/ap_rootfs.img
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+ifeq ($(LYNQ_NAND_TYPE),M22)
+	cp -v $(IMAGE_DIR)/rootfs_M22.img $(PRJ_BIN_DIR)/allbins/ap_rootfs_M22.img
+endif
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 ifeq ($(CONFIG_SIGN_IMAGE),yes)
 	chmod a+x $(SIGN)
 	mkimage -A arm -O linux -C none  -T filesystem -a 0 -e 0 -n 'rootfs' -d $(IMAGE_DIR)/rootfs.img $(IMAGE_DIR)/rootfs_u.img
@@ -692,6 +711,15 @@
 	dd if=$(IMAGE_DIR)/rootfs_signed.img of=$(IMAGE_DIR)/rootfs.sign bs=704 count=1
 	cat $(IMAGE_DIR)/rootfs.sign  $(IMAGE_DIR)/linux_kernel.img  >  $(IMAGE_DIR)/rootfs_kernel.img
 	@$(SIGN) -i $(IMAGE_DIR)/rootfs_kernel.img -o $(PRJ_BIN_DIR)/allbins/ap_cpuap.bin -k $(PRIVATE_KEY_PATH)
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+ifeq ($(LYNQ_NAND_TYPE),M22)
+	mkimage -A arm -O linux -C none  -T filesystem -a 0 -e 0 -n 'rootfs' -d $(IMAGE_DIR)/rootfs_M22.img $(IMAGE_DIR)/rootfs_u_M22.img
+	@$(SIGN) -i $(IMAGE_DIR)/rootfs_u_M22.img  -o $(IMAGE_DIR)/rootfs_signed_M22.img  -k $(PRIVATE_KEY_PATH)
+	dd if=$(IMAGE_DIR)/rootfs_signed_M22.img of=$(IMAGE_DIR)/rootfs_M22.sign bs=704 count=1
+	cat $(IMAGE_DIR)/rootfs_M22.sign  $(IMAGE_DIR)/linux_kernel.img  >  $(IMAGE_DIR)/rootfs_kernel_M22.img
+	@$(SIGN) -i $(IMAGE_DIR)/rootfs_kernel_M22.img -o $(PRJ_BIN_DIR)/allbins/ap_cpuap_M22.bin -k $(PRIVATE_KEY_PATH)
+endif
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 else
 	@cp -v $(IMAGE_DIR)/linux_kernel.img      $(PRJ_BIN_DIR)/allbins/ap_cpuap.bin
 endif
diff --git a/ap/app/zte_comm/zte_mainctrl/netdev_proc.c b/ap/app/zte_comm/zte_mainctrl/netdev_proc.c
index 7dabf64..4a4ae9b 100755
--- a/ap/app/zte_comm/zte_mainctrl/netdev_proc.c
+++ b/ap/app/zte_comm/zte_mainctrl/netdev_proc.c
@@ -67,7 +67,7 @@
 
 	int i = 0;
 	char * postptr = NULL;
-	int ip6_seg = 0; //ipv6µØÖ·ÖÐðºÅµÄ¸öÊý
+	int ip6_seg = 0; //ipv6��ַ��ð�ŵĸ���
 	int ip6_seg_loc = 0;
 	int len;
 
@@ -81,10 +81,10 @@
 		}
 	}
 
-	if (ip6_seg == 3) //¼¤»îÐÅϢΪipv6ºó׺£¬²»ÐèÒª½Ø¶Ï
+	if (ip6_seg == 3) //������ϢΪipv6��׺������Ҫ�ض�
 		postptr = ip6;
 
-	else if (ip6_seg == 7) //¼¤»îÐÅϢΪipv6ǰ׺+ºó׺£¬ÐèÒª½Ø¶Ï´¦Àí
+	else if (ip6_seg == 7) //������ϢΪipv6ǰ׺+��׺����Ҫ�ضϴ���
 		postptr = &ip6[ip6_seg_loc + 1];
 	else
 		softap_assert("ipv6 address %s is wrong!", ip6);
@@ -163,7 +163,7 @@
 	}
 	ptr = buf;
 	nleft = len;
-	// O_TRUNC:½«Îļþ³¤¶È½Ø¶ÏΪ0£¬×öΪÐÂÎļþдÈë
+	// O_TRUNC:���ļ����Ƚض�Ϊ0����Ϊ���ļ�д��
 	fd = open(path, O_RDWR | O_CREAT | O_TRUNC | O_SYNC, 777);
 	if (fd < 0){
 		slog(NET_PRINT, SLOG_ERR, "net_write_file Open fail, error:%s, path:%s\n", strerror(errno), path);
@@ -346,7 +346,7 @@
 }
 
 
-/*¼¤»îIPµÄ×îºóÒ»¸öÊý×ÖµÄ2½øÖƵĺó3λÊÇ010 001 000ʱ+2£¬·ñÔò-2*/
+/*����IP�����һ�����ֵ�2���Ƶĺ�3λ��010 001 000ʱ+2������-2*/
 FILE *pdp_direct_config_quick4(const char *nv_pswan, struct pdp_active_info *actinfo)
 {
 	int i = 0;
@@ -410,7 +410,7 @@
 		wan_ip = addr-1;
 	}
 	for(i = 3; i < 32; i++){
-		/*²»ÊÇÁ¬ÐøµÄÈ«0 && ²»ÊÇÁ¬ÐøµÄÈ«1*/
+		/*����������ȫ0 && ����������ȫ1*/
 		if(((addr>>i)<<i) != addr && (((1<<i)-1)|addr) != addr)
 			break;
 	}
@@ -827,7 +827,7 @@
 				snprintf(defwan_if, sizeof(defwan_if), "%s%d", ps_wan, actinfo->c_id);
 				strcpy(defwan_real, defwan_if);
 				strcpy(defwan_dev_name, ps_wan);
-				//½«µ±Ç°ÓÐÐ§Íø¿ÚÖÐÓÅÏȼ¶×î¸ßµÄÉèÖÃΪȱʡÍâÍø¿Ú
+				//����ǰ��Ч���������ȼ���ߵ�����Ϊȱʡ������
 				if(actinfo->act_info.ip46flag & V4_VALID){
 					sc_cfg_set("default_wan_name", defwan_if);
 					sc_cfg_set("default_wan_rel", defwan_real);
@@ -866,7 +866,7 @@
 		if(actinfo->act_info.ip46flag & V6_VALID)
 			defwan6_change = strcmp(defwan6_if_old, defwan_real);
 		
-		//Êý¾ÝÏÈͨ£¬ºó×öÆäËûÅäÖã¬×¢Òâµã: ·À»ðǽ¶Ìʱ¼äÄÚ¿ÉÄÜδÉúЧ
+		//������ͨ�������������ã�ע���: ����ǽ��ʱ���ڿ���δ��Ч
 		if (
 #ifndef USE_CAP_SUPPORT
 			defwan4_change && 
@@ -1070,7 +1070,7 @@
 #endif
 		slog(NET_PRINT, SLOG_NORMAL, "pdp_wan_config_quick defwan_change v4:%d v6:%d \n", defwan4_change, defwan6_change);
 		
-		//ȱʡÍâÍø¿Ú·¢Éú±ä»¯ÔòÖØÉènatºÍfilter
+		//ȱʡ�����ڷ����仯������nat��filter
 		if (defwan4_change || defwan6_change) {
 			zte_router_init();
 			if(actinfo->act_info.ip46flag & V4_VALID){
@@ -1257,12 +1257,12 @@
 	}
 }
 /**************************************************************************
-* º¯ÊýÃû³Æ£º pdp_act_proc
-* ¹¦ÄÜÃèÊö£º PSÍøÂçÉ豸¼¤»î½Ó¿Ú
-* ²ÎÊý˵Ã÷£º pdp_active_info(IN):PDP¼¤»îÐÅÏ¢
-* ·µ »Ø Öµ£º ²Ù×÷³É¹¦·µ»Ø1.
-* ÆäËü˵Ã÷£º atÏà¹ØÓ¦Óýø³Ìµ÷Óã¬Èçatserver¡¢pcserver¡¢VoLTE¡¢²ÊÐŵÈÓ¦Óýø³Ì£»
-* ½Ó¿ÚÄÚ²¿ÊµÏÖ¶ÔÓÚµÄPSÉ豸µÄ¼¤»î¼°ÏàÓ¦µÄÍøÂçÅäÖÃ
+* �������ƣ� pdp_act_proc
+* ���������� PS�����豸����ӿ�
+* ����˵���� pdp_active_info(IN):PDP������Ϣ
+* �� �� ֵ�� �����ɹ�����1.
+* ����˵���� at���Ӧ�ý��̵��ã���atserver��pcserver��VoLTE�����ŵ�Ӧ�ý��̣�
+* �ӿ��ڲ�ʵ�ֶ��ڵ�PS�豸�ļ����Ӧ����������
 **************************************************************************/
 int net_pdp_act_proc(struct pdp_active_info *actinfo)
 {
@@ -1308,7 +1308,7 @@
 			sc_cfg_set(nv_name2, "");
 		}
 	}
-	//¶ÔÓÚatserver´¥·¢µÄPDP¼¤»î£¬ÊÇÓÃÓÚÆÕͨÉÏÍâÍøÒµÎñµÄ£¬´æÔÚNATת»»
+	//����atserver������PDP�����������ͨ������ҵ��ģ�����NATת��
 	if (actinfo->pdp_type == PDP_NORMAL) {
 		snprintf(char_cid, sizeof(char_cid), "%d", actinfo->c_id);
 		sc_cfg_set("default_cid", char_cid);
@@ -1318,7 +1318,7 @@
 			pdp_wan_config(actinfo);
 		//sc_cfg_set("ps_state", "working");
 	}
-	//¶ÔÓÚÍâºË´¥·¢µÄPDP¼¤»î£¬½øÐÐÇŽӻò¼¶Áª
+	//������˴�����PDP��������Žӻ���
 	else if (actinfo->pdp_type == PDP_EXT) {
 #ifdef USE_CAP_SUPPORT
 		if(prefix_len > 0){
@@ -1329,7 +1329,7 @@
 				set_br_addr6(actinfo->c_id, 1);
 		}
 #endif
-		//cp¼¶Áª£¬apÇŽÓ
+		//cp������ap��
 		if(quick_flag[0] == '1' && (actinfo->act_info.ip46flag == V4_VALID || prefix_len > 0)){
 			pdp_direct_config_quick(actinfo, prefix, prefix_len);
 		}else{
@@ -1343,13 +1343,13 @@
 		} else
 			softap_assert("need_jilian=%s error", need_jilian);
 		}
-		/*¸ÃÎÊÌâÓÃÓÚUSB ÈȲå°Îʱ״̬±ê¼Ç£¬½öÔÚPDP¼¤»îÖ®ºó£¬
-		²Å¶ÔÈȲå°ÎÏûÏ¢½øÐд¦Àí*/
+		/*����������USB �Ȳ��ʱ״̬��ǣ�����PDP����֮��
+		�Ŷ��Ȳ����Ϣ���д���*/
 		sprintf(psext_state, "ps_ext%d_pdpstate", actinfo->c_id);
 		sc_cfg_set(psext_state, "working");
 
 	}
-	//±¾µØÓ¦ÓÃÉÏÍâÍøµÄPDP¼¤»î£¬ÈçVoLTEµÈ
+	//����Ӧ����������PDP�����VoLTE��
 	else if (actinfo->pdp_type == PDP_LOCAL) {
 		if(quick_flag[0] == '1' && (actinfo->act_info.ip46flag == V4_VALID || prefix_len > 0))
 			pdp_wan_config_quick(actinfo, prefix, prefix_len);
@@ -1378,12 +1378,12 @@
 }
 
 /**************************************************************************
-* º¯ÊýÃû³Æ£º pdp_deact_proc
-* ¹¦ÄÜÃèÊö£º PSÍøÂçÉ豸ȥ»î½Ó¿Ú
-* ²ÎÊý˵Ã÷£º c_id(IN):PDP¼¤»îc_id.
-* ·µ »Ø Öµ£º ²Ù×÷³É¹¦·µ»Ø1.
-* ÆäËü˵Ã÷£º atÏà¹ØÓ¦Óýø³Ìµ÷Óã¬Èçatserver¡¢pcserver¡¢VoLTE¡¢²ÊÐŵÈÓ¦Óýø³Ì£»
-½Ó¿ÚÄÚ²¿ÊµÏÖ¶ÔÓÚµÄPSÉ豸ȥ»î£»Ö§³Ö46µ¥Õ»È¥»î£¬ËùÒÔÈë²ÎÐèҪָʾ46Çé¿ö
+* �������ƣ� pdp_deact_proc
+* ���������� PS�����豸ȥ��ӿ�
+* ����˵���� c_id(IN):PDP����c_id.
+* �� �� ֵ�� �����ɹ�����1.
+* ����˵���� at���Ӧ�ý��̵��ã���atserver��pcserver��VoLTE�����ŵ�Ӧ�ý��̣�
+�ӿ��ڲ�ʵ�ֶ��ڵ�PS�豸ȥ�֧��46��ջȥ����������Ҫָʾ46���
 **************************************************************************/
 int net_pdp_deact_proc(int c_id, unsigned char ip46flag)
 {
@@ -1412,7 +1412,7 @@
 
 	closelog();
 
-	//ÍâºËpdpÈ¥»î,È¥ÇÅÈ¥¼¶Áª
+	//���pdpȥ��,ȥ��ȥ����
 	if (0 == strcmp("bridge", pdp_mode)) {
 #ifdef USE_CAP_SUPPORT
 		if(ip46flag == V6_VALID || ip46flag == V46_VALID){
@@ -1449,7 +1449,7 @@
 	} else if (0 == strcmp("ppp", pdp_mode)) {
 		//if (ip46flag == V4_VALID || ip46flag == V46_VALID) { for ipv6
 #if 0
-			sc_cfg_get("pppd_user_term", pppd_user_term, sizeof(pppd_user_term)); //¼ì²â¸ÃpdpÈ¥¼¤»îÊÇ·ñÊÇÓÉÖն˶ϿªpppÁ´½Ó·¢ÆðµÄ
+			sc_cfg_get("pppd_user_term", pppd_user_term, sizeof(pppd_user_term)); //����pdpȥ�����Ƿ������ն˶Ͽ�ppp���ӷ����
 			if (strcmp(pppd_user_term,  "terminate") != 0) {
 				sc_cfg_set("ppp_pdpstate", "dead");
 
@@ -1469,7 +1469,7 @@
 		net_sendmsg_2_atctl(c_id, ip46flag, MSG_CMD_LINKDOWN_END);	
 		return 1;
 	}
-	//atserver pdpÈ¥»î ½«default_cidÖÿÕ
+	//atserver pdpȥ�� ��default_cid�ÿ�
 	else if (0 == strcmp("gateway", pdp_mode)) {
 		//sc_cfg_set("default_cid", "");
 		//sc_cfg_set("ps_state", "dead");
@@ -1498,12 +1498,12 @@
 
 
 /**************************************************************************
-* º¯ÊýÃû³Æ£º netdev_connect_internet
-* ¹¦ÄÜÃèÊö£º webui·¢Ë͵ÄÁ¬½ÓÇëÇó,½Ó¿ÚÄÚ²¿½øÐÐifconfig up£¬²¢Æô¶¯ÏàÓ¦µÄµØÖ··ÖÅä½ø³Ì
-* ²ÎÊý˵Ã÷£º netdev_id£ºÍøÂçÉ豸¶ÔÓ¦µÄºêÃû£¬²Î¼ûUSB_NET_DEVµÈºêÖµ
-* ·µ »Ø Öµ£º ²Ù×÷³É¹¦·µ»Ø1.
-* ÆäËü˵Ã÷£º É豸Ö÷¿ØÄ£¿éµ÷Óô˽ӿÚǰ£¬ÐèÒª¼ì²âµ±Ç°É豸ÎïÀíͨ·ÒÑͨ£¬·ñÔò²»Ó¦¸Ãµ÷Óô˽ӿڣ»
-* Ö÷¿ØÄ£¿éÐèÒªÑÏ¿ØÖظ´µÄµ÷Óøýӿڣ¬ÒòΪÿµ÷ÓÃÒ»´Î¸Ã½Ó¿Ú£¬ÄÚ²¿½Ô»áÖØÐÂÖ´ÐÐÒ»´ÎÍêÕûµÄµØÖ··ÖÅäÁ÷³Ì£»
+* �������ƣ� netdev_connect_internet
+* ���������� webui���͵���������,�ӿ��ڲ�����ifconfig up����������Ӧ�ĵ�ַ�������
+* ����˵���� netdev_id�������豸��Ӧ�ĺ������μ�USB_NET_DEV�Ⱥ�ֵ
+* �� �� ֵ�� �����ɹ�����1.
+* ����˵���� �豸����ģ����ô˽ӿ�ǰ����Ҫ��⵱ǰ�豸����ͨ·��ͨ������Ӧ�õ��ô˽ӿڣ�
+* ����ģ����Ҫ�Ͽ��ظ��ĵ��øýӿڣ���Ϊÿ����һ�θýӿڣ��ڲ��Ի�����ִ��һ�������ĵ�ַ�������̣�
 **************************************************************************/
 int net_netdev_connect_internet(unsigned char netdev_id)
 {
@@ -1538,11 +1538,11 @@
 }
 
 /**************************************************************************
-* º¯ÊýÃû³Æ£º netdev_disconnect_internet
-* ¹¦ÄÜÃèÊö£º webui·¢Ë͵ĶϿªÁ¬½ÓÇëÇó,½Ó¿ÚÄÚ²¿½øÐÐifconfig down£¬²¢É±µôÏàÓ¦µÄµØÖ··ÖÅä½ø³Ì
-* ²ÎÊý˵Ã÷£º netdev_id£ºÍøÂçÉ豸¶ÔÓ¦µÄºêÃû£¬²Î¼ûUSB_NET_DEVµÈºêÖµ
-* ·µ »Ø Öµ£º ²Ù×÷³É¹¦·µ»Ø1.
-* ÆäËü˵Ã÷£º É豸Ö÷¿ØÄ£¿éµ÷Óô˽ӿÚ
+* �������ƣ� netdev_disconnect_internet
+* ���������� webui���͵ĶϿ���������,�ӿ��ڲ�����ifconfig down����ɱ����Ӧ�ĵ�ַ�������
+* ����˵���� netdev_id�������豸��Ӧ�ĺ������μ�USB_NET_DEV�Ⱥ�ֵ
+* �� �� ֵ�� �����ɹ�����1.
+* ����˵���� �豸����ģ����ô˽ӿ�
 **************************************************************************/
 int net_netdev_disconnect_internet(unsigned char netdev_id)
 {
@@ -1568,7 +1568,7 @@
 		else if (0 == strcmp(eth_curtype, "lan")) {
 			system("landev_updown.sh \"ethwan\" \"down\"");
 			slog(NET_PRINT, SLOG_NORMAL, "rj45 as lan disconnect end!\n");
-		} else { //Ϊ·ÀÖ¹eth_curtypeÅжϳö´íËù×öµÄ¼æÈÝ
+		} else { //Ϊ��ֹeth_curtype�жϳ��������ļ���
 			system("wan_ipv4.sh \"linkdown\" \"ethwan\"");
 			if(atoi(wbwanv6_enable) == 1)
 				system("wan_ipv6.sh \"linkdown\" \"ethwan\"");
@@ -1599,24 +1599,24 @@
 }
 
 /**************************************************************************
-* º¯ÊýÃû³Æ£º netdev_plugin_proc
-* ¹¦ÄÜÃèÊö£º ÈȲå°ÎÉ豸²åÈë,½Ó¿ÚÄÚ²¿¼ì²âÊÇ·ñÐèÒª½øÐÐ×Ô¶¯²¦ºÅ£¬ÈçÐèÒª£¬Ö´ÐеØÖ··ÖÅä¡¢×éÍøµÈÁ÷³Ì
-* ²ÎÊý˵Ã÷£º netdev_id£ºÍøÂçÉ豸¶ÔÓ¦µÄºêÃû£¬²Î¼ûUSB_NET_DEVµÈºêÖµ
-* ·µ »Ø Öµ£º ²Ù×÷³É¹¦·µ»Ø1.
-* ÆäËü˵Ã÷£º É豸Ö÷¿Øµ÷Óô˽ӿÚʱ£¬±íÃ÷¸ÃÍøÂçÉ豸ÎïÀíͨ·ÒÑͨ£¬¿ÉÒÔ½øÐÐIPÊý¾Ý°üµÄÊÕ·¢ÁË
+* �������ƣ� netdev_plugin_proc
+* ���������� �Ȳ���豸����,�ӿ��ڲ�����Ƿ���Ҫ�����Զ����ţ�����Ҫ��ִ�е�ַ���䡢����������
+* ����˵���� netdev_id�������豸��Ӧ�ĺ������μ�USB_NET_DEV�Ⱥ�ֵ
+* �� �� ֵ�� �����ɹ�����1.
+* ����˵���� �豸���ص��ô˽ӿ�ʱ�������������豸����ͨ·��ͨ�����Խ���IP���ݰ����շ���
 **************************************************************************/
 int net_netdev_plugin_proc(unsigned char netdev_id)
 {
 
 	slog(NET_PRINT, SLOG_NORMAL, "mainctrl:net_netdev_plugin_proc start! netdev_id=%u\n", netdev_id);
 	openlog("netapi", LOG_CONS | LOG_PID, LOG_DAEMON);
-	//USB½ö´æÔÚÓÚÄÚÍøÖÐ
+	//USB��������������
 	if (netdev_id == USB_LAN_DEV) {
 		system("landev_updown.sh \"usblan\" \"up\"");
 		slog(NET_PRINT, SLOG_ERR, "usb as lan plugin end!\n");
 	}
-	//ÈȲå°Î½öÐ迼ÂÇ×Ô¶¯Ä£Ê½£¬²»Ð迼ÂÇÊÖ¹¤²¦ºÅµÄÁ¬½Ó
-	//¸Ã·Ö֧ͬʱ´¦ÀíÁËlan/wan/autoÈýÖÖÇé¿ö£¬RJ45_LAN_DEVÔÝʱÎÞ·¨Ê¹ÓÃ
+	//�Ȳ�ν��迼���Զ�ģʽ�����迼���ֹ����ŵ�����
+	//�÷�֧ͬʱ������lan/wan/auto���������RJ45_LAN_DEV��ʱ�޷�ʹ��
 	else if (netdev_id == RJ45_WAN_DEV || netdev_id == SW_WAN_DEV) {
 		ethwan_id = netdev_id;
 		ethwan_plugin();
@@ -1653,11 +1653,11 @@
 }
 
 /**************************************************************************
-* º¯ÊýÃû³Æ£º netdev_plugout_proc
-* ¹¦ÄÜÃèÊö£º ÈȲå°ÎÉ豸°Î³ö,½Ó¿ÚÄÚ²¿½øÐÐifconfig down£¬²¢É±µôÏàÓ¦µÄµØÖ··ÖÅä½ø³Ì
-* ²ÎÊý˵Ã÷£º netdev_id£ºÍøÂçÉ豸¶ÔÓ¦µÄºêÃû£¬²Î¼ûUSB_NET_DEVµÈºêÖµ
-* ·µ »Ø Öµ£º ²Ù×÷³É¹¦·µ»Ø1.
-* ÆäËü˵Ã÷£º É豸Ö÷¿Øµ÷Óô˽ӿÚʱ£¬±íÃ÷¸ÃÍøÂçÉ豸ÎïÀíͨ·ÒѶϣ¬²»ÒªÔÙ½øÐÐIPÊý¾Ý°üÊÕ·¢
+* �������ƣ� netdev_plugout_proc
+* ���������� �Ȳ���豸�γ�,�ӿ��ڲ�����ifconfig down����ɱ����Ӧ�ĵ�ַ�������
+* ����˵���� netdev_id�������豸��Ӧ�ĺ������μ�USB_NET_DEV�Ⱥ�ֵ
+* �� �� ֵ�� �����ɹ�����1.
+* ����˵���� �豸���ص��ô˽ӿ�ʱ�������������豸����ͨ·�Ѷϣ���Ҫ�ٽ���IP���ݰ��շ�
 **************************************************************************/
 int net_netdev_plugout_proc(unsigned char netdev_id)
 {
@@ -1667,13 +1667,13 @@
 	sc_cfg_get("wbwanv6_enable", wbwanv6_enable, sizeof(wbwanv6_enable));
 	openlog("netapi", LOG_CONS | LOG_PID, LOG_DAEMON);
 	slog(NET_PRINT, SLOG_NORMAL, "mainctrl:net_netdev_plugout_proc start! netdev_id=%u\n", netdev_id);
-	//ÄÚÍøÇŵãÈ¥³ý
+	//�����ŵ�ȥ��
 	if (netdev_id == USB_LAN_DEV) {
 		system("landev_updown.sh \"usblan\" \"down\"");
 		slog(NET_PRINT, SLOG_NORMAL, "usb as lan plugout end!\n");
 		return 1;
 	}
-	//Ðè񻂿·ÖÄÚÍâÍøÄ£Ê½
+	//��Ҫ����������ģʽ
 	else if (netdev_id == RJ45_WAN_DEV || netdev_id == SW_WAN_DEV) {
 		ethwan_id = netdev_id;
 		ethwan_plugout();
@@ -1711,7 +1711,7 @@
 		//assert(0);
 		return 0;
 	}
-	//wifi ifconfig downÓÉÆäÄ£¿é¸ºÔð£¬rj45 °Î³ýÉ豸Ïûʧ£¬ÓÉÇý¶¯¸ºÔð
+	//wifi ifconfig down����ģ�鸺��rj45 �γ��豸��ʧ������������
 	//memset(cmd, 0, sizeof(cmd));
 	//sprintf(cmd, "ifconfig %s down" , wan_if);
 	//system(cmd);
@@ -1721,12 +1721,12 @@
 }
 
 /**************************************************************************
-* º¯ÊýÃû³Æ£º net_tc_control
-* ¹¦ÄÜÃèÊö£º Á÷Á¿¿ØÖÆ
-* ²ÎÊý˵Ã÷£º ÐèÒªÁ÷Á¿¼à¿ØµÄÉÏÏÂÐÐÁ¿£¬Êý¾Ý¿¨ÐèÒªÓÐcid£¬ufiģʽ²»ÐèÒª
-*            0±íʾ²»ÐèÒªÁ÷¿Ø
-* ·µ »Ø Öµ£º ²Ù×÷³É¹¦·µ»Ø1.
-* ÆäËü˵Ã÷£º ¸øÐèÒªÁ÷Á¿¿ØÖƵÄÓ¦Óõ÷Óã¬ÈçÉÏÐÐÐèÒªÁ÷¿Ø£¬ÇëµÈÄÜÉÏÍâÍøºóÔÙµ÷Ó㬷ñÔòÎÞ·¨»ñÈ¡ÍâÍø¿Ú½øÐÐÁ÷¿Ø
+* �������ƣ� net_tc_control
+* ���������� ��������
+* ����˵���� ��Ҫ������ص��������������ݿ���Ҫ��cid��ufiģʽ����Ҫ
+*            0��ʾ����Ҫ����
+* �� �� ֵ�� �����ɹ�����1.
+* ����˵���� ����Ҫ�������Ƶ�Ӧ�õ��ã���������Ҫ���أ���������������ٵ��ã������޷���ȡ�����ڽ�������
 **************************************************************************/
 int net_tc_control(struct tc_control_info *tcinfo, int src_id)
 {
@@ -1740,7 +1740,7 @@
 
 	sc_cfg_set("tc_enable", "1");
 
-	/* Á÷Á¿Í³¼ÆÊÇÕë¶ÔByte£¬ËùÒÔÒª³ýÒÔ8 */
+	/* ����ͳ�������Byte������Ҫ����8 */
 	sprintf(up, "%d", (tcinfo->tc_uplink / 8));
 	sc_cfg_set("tc_uplink", up);
 	sprintf(down, "%d", (tcinfo->tc_downlink) / 8);
@@ -1759,7 +1759,7 @@
 	return 1;
 }
 
-/*PPPÐÎ̬µÄPDP¼¤»î£¬ÔÝʱ½öÖ§³ÖIPV4*/
+/*PPP��̬��PDP�����ʱ��֧��IPV4*/
 int pdp_ppp_config(struct pdp_active_info *actinfo)
 {
 
@@ -1802,7 +1802,7 @@
 	return 1;
 }
 
-/*NORMALÐÎ̬µÄPDP¼¤»îµÄ˫ջµØÖ·±£´æ£¬²¢´¥·¢ÍâÍø¿ÚµØÖ·ÅäÖýű¾*/
+/*NORMAL��̬��PDP�����˫ջ��ַ���棬�����������ڵ�ַ���ýű�*/
 int pdp_wan_config(struct pdp_active_info *actinfo)
 {
 	char nv_ip[NV_NAME_LEN] = {0};
@@ -1856,7 +1856,7 @@
 	return 1;
 }
 
-/*ÇŽÓÀà×éÍøÅäÖã¬CP²àÓÉÓÚPS²»ÊDZê×¢µÄlinuxÒÔÌ«Íø¿ÚÐÎ̬£¬ËùÒÔÐèÒª½øÐж¨ÖÆÂ·ÓÉ£¬ÒÔʵÏÖÍø¿Ú¹ØÁª£»AP²àÖ±½Óbr0¼´¿É*/
+/*�Ž����������ã�CP������PS���DZ�ע��linux��̫������̬��������Ҫ���ж���·�ɣ���ʵ�����ڹ�����AP��ֱ��br0����*/
 int pdp_direct_config(struct pdp_active_info *actinfo)
 {
 	char nv_ip[NV_NAME_LEN] = {0};
@@ -1881,7 +1881,7 @@
 		snprintf(nv_secdns, sizeof(nv_secdns), "%s%d_secdns", ps_wan, actinfo->c_id);
 		sc_cfg_set(nv_secdns, actinfo->act_info.sec_dns);
 		snprintf(nv_gw, sizeof(nv_gw), "%s%d_gw", ps_wan, actinfo->c_id);
-		//Óû§ÅäÖþ²Ì¬gw
+		//�û����þ�̬gw
 		if (0 != strcmp(actinfo->act_info.gateway, "")) {
 			sc_cfg_set(nv_gw, actinfo->act_info.gateway);
 		}
@@ -1914,7 +1914,7 @@
 	return 1;
 }
 
-//±£´æPDP¼¤»îµÄÓû§Òâͼ£¬ÒÔ±ãPDPÈ¥»îʱÄܹ»×¼È·ÊÍ·ÅÏà¹ØÍøÂç×ÊÔ´
+//����PDP������û���ͼ���Ա�PDPȥ��ʱ�ܹ�׼ȷ�ͷ����������Դ
 void set_pdp_mode(int c_id, unsigned char pdp_type)
 {
 	char pdp_mode[NV_NAME_LEN] = {0};
@@ -1943,7 +1943,7 @@
 
 }
 
-//ÉèÖÃPDP¼¤»îµÄ˫ջ֧³ÖÇé¿ö£¬ÒÔ±ãÉèÖÃNORMALÍâÍø¿ÚµÄDNSʱʹÓã»
+//����PDP�����˫ջ֧��������Ա�����NORMAL�����ڵ�DNSʱʹ�ã�
 void set_pdp_act_type(int c_id, unsigned char ip46flag)
 {
 	char pdp_act_type[NV_NAME_LEN] = { 0 };
@@ -2007,14 +2007,14 @@
 		sc_cfg_set("rj45_state", "idle");
 		sc_cfg_set("eth_curtype", "");
 		vlan_config(RJ45_WAN_DEV, "add");
-		if(strchr(ethwan_name, '.') == NULL)//¸ù¾ÝnvÏîethwanÖµÊÇ·ñÓÐ'.'À´ÅжÏÊÇswitch»¹Êǵ¥phy	
-		{//Ö»Óе¥phy²ÅÉèÖÃ180s¶¨Ê±Æ÷£¬³¬Ê±»¹Î´»ñÈ¡ipµØÖ·Ôò½«ethwanÌí¼Óbr0ÇÅÏÂ
+		if(strchr(ethwan_name, '.') == NULL)//����nv��ethwanֵ�Ƿ���'.'���ж���switch���ǵ�phy	
+		{//ֻ�е�phy������180s��ʱ������ʱ��δ��ȡip��ַ��ethwan����br0����
 			creattimer(&ethwan_id);
 		}
 		system("auto_dial.sh \"ethwan\"");
 	} else if (0 == strcmp(eth_type, "wan")) {
 		sc_cfg_set("eth_curtype", "wan");
-		if(strchr(ethwan_name, '.') != NULL)//¸ù¾ÝnvÏîethwanÖµÊÇ·ñÓÐ'.'À´ÅжÏÊÇswitch»¹Êǵ¥phy	
+		if(strchr(ethwan_name, '.') != NULL)//����nv��ethwanֵ�Ƿ���'.'���ж���switch���ǵ�phy	
 		{
 			set_ethwan_port_mode(1);
 		}
@@ -2023,8 +2023,8 @@
 		sc_cfg_set("rj45_state", "idle");
 		if (0 == strcmp(eth_dialmode, "auto") || 0 == strcmp(eth_dialmode, "ondemand")) {
 			sc_cfg_set("rj45_state", "connect");
-			if(strchr(ethwan_name, '.') == NULL)//¸ù¾ÝnvÏîethwanÖµÊÇ·ñÓÐ'.'À´ÅжÏÊÇswitch»¹Êǵ¥phy	
-			{//Ö»Óе¥phy²ÅÉèÖÃ180s¶¨Ê±Æ÷£¬³¬Ê±»¹Î´»ñÈ¡ipµØÖ·Ôò½«ethwanÌí¼Óbr0ÇÅÏÂ
+			if(strchr(ethwan_name, '.') == NULL)//����nv��ethwanֵ�Ƿ���'.'���ж���switch���ǵ�phy	
+			{//ֻ�е�phy������180s��ʱ������ʱ��δ��ȡip��ַ��ethwan����br0����
 				creattimer(&ethwan_id);
 			}
 			system("wan_ipv4.sh \"linkup\" \"ethwan\"");
@@ -2033,7 +2033,7 @@
 		}
 	} else if (0 == strcmp(eth_type, "lan")) {
 		sc_cfg_set("eth_curtype", "lan");
-		if(strchr(ethwan_name, '.') != NULL)//¸ù¾ÝnvÏîethwanÖµÊÇ·ñÓÐ'.'À´ÅжÏÊÇswitch»¹Êǵ¥phy	
+		if(strchr(ethwan_name, '.') != NULL)//����nv��ethwanֵ�Ƿ���'.'���ж���switch���ǵ�phy	
 		{
 			set_ethwan_port_mode(0);
 			sc_cfg_get("rj45_pluginstate", rj45_pluginstate, sizeof(rj45_pluginstate));
@@ -2060,8 +2060,8 @@
 
 	sc_cfg_get("ethwan", ethwan_name, sizeof(ethwan_name));
 	sc_cfg_get("wanport3_in_lan", lanflag, sizeof(lanflag));
-	if(strchr(ethwan_name, '.') != NULL && strcmp(lanflag, "1") == 0)//¸ù¾ÝnvÏîethwanÖµÊÇ·ñÓÐ'.'À´ÅжÏÊÇswitch»¹Êǵ¥phy	
-	{//switchÐÎ̬ÇÒwan¿Ú¶ÔÓ¦port3ÒѾ­¼ÓÈëvlan100,¼´eth0.100ÒѾ­´´½¨ÇÒ¹ÒÔÚbr0ÏÂ
+	if(strchr(ethwan_name, '.') != NULL && strcmp(lanflag, "1") == 0)//����nv��ethwanֵ�Ƿ���'.'���ж���switch���ǵ�phy	
+	{//switch��̬��wan�ڶ�Ӧport3�Ѿ�����vlan100,��eth0.100�Ѿ������ҹ���br0��
 		slog(NET_PRINT, SLOG_NORMAL, "rj45 eth0.100 has been created and mounted to br0!\n");
 		return;
 	}
@@ -2094,8 +2094,8 @@
 		if(atoi(wbwanv6_enable) == 1)
 			system("wan_ipv6.sh \"linkdown\" \"ethwan\"");
 	} else if (0 == strcmp(eth_curtype, "lan")) {	
-		//switchÐÎ̬´ËʱûÓÐeth0.200Íø¿Ú
-		if(strchr(ethwan_name, '.') != NULL)//¸ù¾ÝnvÏîethwanÖµÊÇ·ñÓÐ'.'À´ÅжÏÊÇswitch»¹Êǵ¥phy	
+		//switch��̬��ʱû��eth0.200����
+		if(strchr(ethwan_name, '.') != NULL)//����nv��ethwanֵ�Ƿ���'.'���ж���switch���ǵ�phy	
 		{
 			sc_cfg_get("rj45_pluginstate", rj45_pluginstate, sizeof(rj45_pluginstate));
 			plugstate = atoi(rj45_pluginstate);
@@ -2120,9 +2120,9 @@
 
 	sc_cfg_set("rj45_state", "dead");
 	vlan_config(RJ45_WAN_DEV, "rem");
-	if(strchr(ethwan_name, '.') != NULL)//¸ù¾ÝnvÏîethwanÖµÊÇ·ñÓÐ'.'À´ÅжÏÊÇswitch»¹Êǵ¥phy	
+	if(strchr(ethwan_name, '.') != NULL)//����nv��ethwanֵ�Ƿ���'.'���ж���switch���ǵ�phy	
 	{
-		set_ethwan_port_mode(1);	//½«switchµÄwan¿Úport3»¹Ô­³Éwan£¬·ñÔòÏ´βåÈëport3¿ÉÄÜ»¹ÊÇlan¿Ú
+		set_ethwan_port_mode(1);	//��switch��wan��port3��ԭ��wan�������´β���port3���ܻ���lan��
 	}
 }
 void ethlan_plugout()
@@ -2132,8 +2132,8 @@
 
 	sc_cfg_get("ethwan", ethwan_name, sizeof(ethwan_name));
 	sc_cfg_get("wanport3_in_lan", lanflag, sizeof(lanflag));
-	if(strchr(ethwan_name, '.') != NULL && strcmp(lanflag, "1") == 0)//¸ù¾ÝnvÏîethwanÖµÊÇ·ñÓÐ'.'À´ÅжÏÊÇswitch»¹Êǵ¥phy	
-	{//switchÐÎ̬ÇÒwan¿Ú¶ÔÓ¦port3ÒѾ­¼ÓÈëvlan100,¼´eth0.100Ï»¹ÓÐport3¶Ë¿Ú£¬ËùÒÔ»¹²»ÄÜɾ³ýeth0.100
+	if(strchr(ethwan_name, '.') != NULL && strcmp(lanflag, "1") == 0)//����nv��ethwanֵ�Ƿ���'.'���ж���switch���ǵ�phy	
+	{//switch��̬��wan�ڶ�Ӧport3�Ѿ�����vlan100,��eth0.100�»���port3�˿ڣ����Ի�����ɾ��eth0.100
 		slog(NET_PRINT, SLOG_NORMAL, "rj45 eth0.100 has been created and mounted to br0!\n");
 		return;
 	}
@@ -2155,13 +2155,13 @@
 }
 
 
-/*rj45 ÍâÍø¿Úʱ£¬¸ù¾Ýµ±Ç°×´Ì¬£¬ÈôΪworking or init or nullÔòÏÈlinkdown£¬É±ËÀÏà¹Ø½ø³Ì£¬È»ºóÆôÓã»ÈôΪdeadÔòÖ±½ÓÆôÓÃ*/
+/*rj45 ������ʱ�����ݵ�ǰ״̬����Ϊworking or init or null����linkdown��ɱ����ؽ��̣�Ȼ�����ã���Ϊdead��ֱ������*/
 void eth_connect()
 {
 	char ethwan_name[NV_NAME_LEN] = {0};
 	char eth_curtype[NV_NAME_LEN] = {0};
 	char work_state[NV_NAME_LEN] = {0};
-	//rj45Ö§³Öwan/lan¹¦ÄÜ£¬¿ÉÑ¡Ôñ³ÉΪÍâÍø¿Ú»òÄÚÍø¿Ú
+	//rj45֧��wan/lan���ܣ���ѡ���Ϊ�����ڻ�������
 	char wbwanv6_enable[NV_NAME_LEN] = {0};
 	sc_cfg_get("wbwanv6_enable", wbwanv6_enable, sizeof(wbwanv6_enable));
 	vlan_config(RJ45_WAN_DEV, "add");
@@ -2170,16 +2170,16 @@
 	if (0 == strcmp(eth_curtype, "lan")) {
 		system("landev_updown.sh \"ethwan\" \"up\"");
 		slog(NET_PRINT, SLOG_NORMAL, "rj45 as lan connect end!\n");
-	} else { // ĬÈÏ×÷Ϊwan¿Ú´¦Àí
+	} else { // Ĭ����Ϊwan�ڴ���
 		sc_cfg_get("rj45_state", work_state, sizeof(work_state));
-		//work_state=deadÔòµ±Ç°´¦ÓÚ¶Ï¿ª×´Ì¬£¬Ö±½Ólinkup£¬ÆäËû×´¿öÏÈlinkdown
+		//work_state=dead��ǰ���ڶϿ�״̬��ֱ��linkup������״����linkdown
 		if (0 == strcmp(work_state, "connect") || 0 == strcmp(work_state, "working")) {
 			system("wan_ipv4.sh \"linkdown\" \"ethwan\"");
 			if(atoi(wbwanv6_enable) == 1)
 				system("wan_ipv6.sh \"linkdown\" \"ethwan\"");
 			sc_cfg_set("rj45_state", "connect");
-			if(strchr(ethwan_name, '.') == NULL)//¸ù¾ÝnvÏîethwanÖµÊÇ·ñÓÐ'.'À´ÅжÏÊÇswitch»¹Êǵ¥phy	
-			{//Ö»Óе¥phy²ÅÉèÖÃ180s¶¨Ê±Æ÷£¬³¬Ê±»¹Î´»ñÈ¡ipµØÖ·Ôò½«ethwanÌí¼Óbr0ÇÅÏÂ
+			if(strchr(ethwan_name, '.') == NULL)//����nv��ethwanֵ�Ƿ���'.'���ж���switch���ǵ�phy	
+			{//ֻ�е�phy������180s��ʱ������ʱ��δ��ȡip��ַ��ethwan����br0����
 				creattimer(&ethwan_id);
 			}
 			system("wan_ipv4.sh \"linkup\" \"ethwan\"");
@@ -2187,8 +2187,8 @@
 				system("wan_ipv6.sh \"linkup\" \"ethwan\"");
 		} else if (0 == strcmp(work_state, "idle")) {
 			sc_cfg_set("rj45_state", "connect");
-			if(strchr(ethwan_name, '.') == NULL)//¸ù¾ÝnvÏîethwanÖµÊÇ·ñÓÐ'.'À´ÅжÏÊÇswitch»¹Êǵ¥phy	
-			{//Ö»Óе¥phy²ÅÉèÖÃ180s¶¨Ê±Æ÷£¬³¬Ê±»¹Î´»ñÈ¡ipµØÖ·Ôò½«ethwanÌí¼Óbr0ÇÅÏÂ
+			if(strchr(ethwan_name, '.') == NULL)//����nv��ethwanֵ�Ƿ���'.'���ж���switch���ǵ�phy	
+			{//ֻ�е�phy������180s��ʱ������ʱ��δ��ȡip��ַ��ethwan����br0����
 				creattimer(&ethwan_id);
 			}
 			system("wan_ipv4.sh \"linkup\" \"ethwan\"");
@@ -2203,7 +2203,7 @@
 
 }
 
-//wifi stationÍâÍø¿ÚµÄµØÖ··ÖÅäÇëÇóÁ÷³Ì£¬Èô֮ǰÒѾ­´¦ÓÚworking̬£¬ÐèÒªÏÈÇå³ýËùÓÐ×ÊÔ´
+//wifi station�����ڵĵ�ַ�����������̣���֮ǰ�Ѿ�����working̬����Ҫ�����������Դ
 void wifi_connect()
 {
 	char work_state[NV_NAME_LEN] = {0};
@@ -2265,7 +2265,7 @@
 	//    sc_cfg_set("wan_name", wanif);
 
 	slog(NET_PRINT, SLOG_NORMAL, "set default_wan_name = %s \n", wanif);
-	//Èç¹ûĬÈÏÍâÍø¿ÚÊǶÔЭÒéÕ»µÄ£¬ÐèÒª½«Íø¿ÚÃû´«µÝ¸øÄÚºËʵÏÖ¿ìËÙת·¢Æ½Ì¨»°
+	//���Ĭ���������Ƕ�Э��ջ�ģ���Ҫ�����������ݸ��ں�ʵ�ֿ���ת��ƽ̨��
 	if (strncmp(wanif, ps_wan, strlen(ps_wan)) == 0) {
 		memset(cmd_test, 0, sizeof(cmd_test));
 		sprintf(cmd_test, "echo %s > /proc/net/ps_name", wanif);
@@ -2339,14 +2339,14 @@
 
 	//sprintf(nv_usbwan,"%s_ip", usb_wan);
 	//sc_cfg_get(nv_usbwan, usbwan_ip, sizeof(usbwan_ip));
-	//¶ÔÓÚswÍø¿Ú£¬ethwanµÄÉèÖÃÊÇÔÚÈȲ岥ʱÉèÖõģ¬ÔÚzte_routerÆô¶¯£¬
-	//³õʼ»¯eth_wanʱ£¬ÓпÉÄÜÉÐδÍê³É¸ÃÉèÖã¬Òò´ËÐèÒªÖØÐ»ñÈ¡É豸Ãû
+	//����sw���ڣ�ethwan�����������Ȳ岥ʱ���õģ���zte_router������
+	//��ʼ��eth_wanʱ���п�����δ��ɸ����ã������Ҫ���»�ȡ�豸��
 	sc_cfg_get("ethwan", eth_wan, sizeof(eth_wan));
 	snprintf(nv_ethwan, sizeof(nv_ethwan), "%s_ip", eth_wan);
 	sc_cfg_get(nv_ethwan, ethwan_ip, sizeof(ethwan_ip));
 	snprintf(nv_wifiwan, sizeof(nv_wifiwan), "%s_ip", wifi_wan);
 	sc_cfg_get(nv_wifiwan, wifiwan_ip, sizeof(wifiwan_ip));
-	//sc_cfg_get("wlan0_ip", wifiwan_ip, sizeof(wifiwan_ip));//wlan0ÊÊÅä
+	//sc_cfg_get("wlan0_ip", wifiwan_ip, sizeof(wifiwan_ip));//wlan0����
 
 	sc_cfg_get("default_cid", cid, sizeof(cid));
 	if (0 != strcmp(cid, "")) {
@@ -2393,12 +2393,12 @@
 		}
 	}
 
-	//½«µ±Ç°ÓÐÐ§Íø¿ÚÖÐÓÅÏȼ¶×î¸ßµÄÉèÖÃΪȱʡÍâÍø¿Ú
+	//����ǰ��Ч���������ȼ���ߵ�����Ϊȱʡ������
 	set_def_wan(defwan_if, defwan_real);
 
 	slog(NET_PRINT, SLOG_NORMAL, "proc_wan_change_v4 old:%s, now:%s! \n", defwan_if_old, defwan_real);
 
-	//½«È±Ê¡ÍâÍø¿ÚµÄdev_id·¢Ë͸øÖ÷¿Ø
+	//��ȱʡ�����ڵ�dev_id���͸�����
 	//if (strlen(defwan_dev_name) == 0 || 0 != strcmp(defwan_if_old, defwan_real))
 	{
 		defwan_dev_info.dev_id = getDevId_byname(defwan_dev_name);
@@ -2419,7 +2419,7 @@
 	if (strcmp(defwan_if_old, defwan_real) != 0)
 		defwan_change = 1;
 
-	//Êý¾ÝÏÈͨ£¬ºó×öÆäËûÅäÖã¬×¢Òâµã: ·À»ðǽ¶Ìʱ¼äÄÚ¿ÉÄÜδÉúЧ
+	//������ͨ�������������ã�ע���: ����ǽ��ʱ���ڿ���δ��Ч
 #ifndef USE_CAP_SUPPORT
 	if (defwan_change)
 #endif
@@ -2429,7 +2429,7 @@
 	system("cat /proc/uptime 1>dev/console 2>&1");
 	slog(NET_PRINT, SLOG_NORMAL, "proc_wan_change_v4 data ok, defwan_change:%d \n", defwan_change);
 
-	//ȱʡÍâÍø¿Ú·¢Éú±ä»¯ÔòÖØÉènatºÍfilter
+	//ȱʡ�����ڷ����仯������nat��filter
 	if (defwan_change) {
 		zte_router_init();
 		//dns_set(defwan_if);
@@ -2533,7 +2533,7 @@
 	}
 
 	set_def_wan6(defwan_if_ipv6, defwan_real_ipv6);
-	//½«È±Ê¡ÍâÍø¿ÚµÄdev_id·¢Ë͸øÖ÷¿Ø
+	//��ȱʡ�����ڵ�dev_id���͸�����
 	//if (strlen(defwan_dev_name) == 0 || strcmp(defwan6_if_old, defwan_real_ipv6)!=0)
 	{
 		defwan_dev_info.dev_id = getDevId_byname(defwan_dev_name);
@@ -2565,7 +2565,7 @@
 			}
 		}
 	}
-	//Êý¾ÝÏÈͨ£¬ºó×öÆäËûÅäÖã¬×¢Òâµã: ·À»ðǽ¶Ìʱ¼äÄÚ¿ÉÄÜδÉúЧ
+	//������ͨ�������������ã�ע���: ����ǽ��ʱ���ڿ���δ��Ч
 	if (0 == strcmp(defwan_if_ipv6, eth_wan) && atoi(wbwanv6_enable) == 1)
 		system("wan_ipv6_config.sh \"ethwan\"");
 	else if (0 == strcmp(defwan_if_ipv6, wifi_wan) && atoi(wbwanv6_enable) == 1)
@@ -2578,7 +2578,7 @@
 	system("cat /proc/uptime 1>dev/console 2>&1");
 	slog(NET_PRINT, SLOG_NORMAL, "proc_wan_change_v6 data ok \n");
 
-	//Èç¹ûĬÈÏwan¿ÚÓб䣬ÐèÒªÖØÐÂÅäÖ÷ÓÉ¡¢·À»ðǽµÈÐÅÏ¢
+	//���Ĭ��wan���б䣬��Ҫ��������·�ɡ�����ǽ����Ϣ
 	if (strcmp(defwan6_if_old, defwan_real_ipv6) != 0) {
 		zte_router_init();
 		memset(defwan6_if_old, 0, ZTE_ROUTER_WAN_IF_NAME_LEN);
@@ -2615,7 +2615,7 @@
 		return;
 	}
 }
-//µ±³¬Ê±ºó£¬ÍøÂçÄÚ²¿Í£Ö¹µØÖ·ÇëÇóÏà¹Ø¶¯×÷£¬²¢·¢ËÍÏûÏ¢¸øÖ÷¿Ø
+//����ʱ�������ڲ�ֹͣ��ַ������ض�������������Ϣ������
 void out_of_time(unsigned char netdev_id)
 {
 	struct dialfail_dev_info dialfail_dev_info = {0};
@@ -2657,7 +2657,7 @@
 		ipc_send_message(MODULE_ID_MAIN_CTRL, MODULE_ID_WIFI, MSG_CMD_NET_WAN_DIAL_FAIL, 0, NULL, 0);
 	}
 
-	//Á¬½Ó³¬Ê±Ö®ºó·¢ËÍÏûÏ¢¸øÖ÷¿Ø
+	//���ӳ�ʱ֮������Ϣ������
 	sprintf(tmp_name, "zte_blc");
 	slog(NET_PRINT, SLOG_ERR, "out_of_time: send MSG_CMD_NET_WAN_DIAL_FAIL msg to mainctl,netdev_id=%u\n", dialfail_dev_info.dev_id);
 
diff --git a/ap/build/jffs2_lzma.sh b/ap/build/jffs2_lzma.sh
index ec42243..e98373d 100755
--- a/ap/build/jffs2_lzma.sh
+++ b/ap/build/jffs2_lzma.sh
@@ -1,13 +1,28 @@
 #!/bin/bash
-
-if [ x"$PAGESIZE" = x"" ]; then
-  PAGESIZE=0x800
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+if [ x"$4" = x"lynq" ]; then
+  echo "lynq nand type"
+  if [ x"$LYNQ_NAND_TYPE" = x"M22" ]; then
+    NAND_PAGESIZE=$LYNQ_M22_PAGESIZE
+    NAND_ERASEBLOCK=$LYNQ_M22_ERASEBLOCK
+  else
+    NAND_PAGESIZE=$PAGESIZE
+    NAND_ERASEBLOCK=$ERASEBLOCK
+  fi
+else
+  echo "default nand type"
+  NAND_PAGESIZE=$PAGESIZE
+  NAND_ERASEBLOCK=$ERASEBLOCK
 fi
 
-if [ x"$ERASEBLOCK" = x"" ]; then
-  ERASEBLOCK=0x20000
+if [ x"$NAND_PAGESIZE" = x"" ]; then
+  NAND_PAGESIZE=0x800
 fi
 
+if [ x"$NAND_ERASEBLOCK" = x"" ]; then
+  NAND_ERASEBLOCK=0x20000
+fi
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 JFFS2_COMPRESS_TYPE=$3
 COMPR_OPT="-X lzma"
 
@@ -18,8 +33,9 @@
 if [ x"$JFFS2_COMPRESS_TYPE" = x"lzo" ]; then
   COMPR_OPT="-X lzo"
 fi
-
-mkfs.jffs2_lzma -v $COMPR_OPT --pagesize=$PAGESIZE --eraseblock=$ERASEBLOCK --little-endian --no-cleanmarkers --squash -d $1 -o $2
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+mkfs.jffs2_lzma -v $COMPR_OPT --pagesize=$NAND_PAGESIZE --eraseblock=$NAND_ERASEBLOCK --little-endian --no-cleanmarkers --squash -d $1 -o $2
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 if [ $? -ne 0 ]; then
   echo "mkfs.jffs2_lzma error"
   exit -1
diff --git a/ap/project/zx297520v3/prj_vehicle_dc_ref/build/config.mk b/ap/project/zx297520v3/prj_vehicle_dc_ref/build/config.mk
index 345df0e..570b686 100755
--- a/ap/project/zx297520v3/prj_vehicle_dc_ref/build/config.mk
+++ b/ap/project/zx297520v3/prj_vehicle_dc_ref/build/config.mk
@@ -30,7 +30,12 @@
 # pagesize 2K and block size 128K default

 export PAGESIZE=0x1000

 export ERASEBLOCK=0x40000

-

+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START

+#lynq_nand_type only for jffs2

+export LYNQ_NAND_TYPE=M22

+export LYNQ_M22_PAGESIZE=0x800

+export LYNQ_M22_ERASEBLOCK=0x20000

+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END

 # yes is debug mode,other value is release mode.

 export GLOBAL_DEBUG=no

 

diff --git a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/include/nand-config-default.inc b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/include/nand-config-default.inc
index 439b293..fe9fc43 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/include/nand-config-default.inc
+++ b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/include/nand-config-default.inc
@@ -2,9 +2,19 @@
 ERASEBLOCK     = "0x40000"
 UBI_LEB_SIZE   = "253952"
 UBI_IMAGE_SEQ  = "1024"
-
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+LYNQ_M22_PAGESIZE = "0x800"
+LYNQ_M22_ERASEBLOCK = "0x20000"
+LYNQ_M22_UBI_LEB_SIZE = "126976"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 #rootfs ubi参数配置
 #MKUBIFS_ARGS = "-m ${PAGESIZE} -e ${UBI_LEB_SIZE} -c 122 -x zlib -F"
 UBINIZE_ARGS = "-m ${PAGESIZE} -p ${ERASEBLOCK} -s ${PAGESIZE} -Q ${UBI_IMAGE_SEQ}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+LYNQ_M22_UBINIZE_ARGS = "-m ${LYNQ_M22_PAGESIZE} -p ${LYNQ_M22_ERASEBLOCK} -s ${LYNQ_M22_PAGESIZE} -Q ${UBI_IMAGE_SEQ}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 #userdata ubi参数配置
 USERDATA_UBINIZE_ARGS = "${UBINIZE_ARGS}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+LYNQ_M22_USERDATA_UBINIZE_ARGS = "${LYNQ_M22_UBINIZE_ARGS}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
index edb2de4..0ff4c1a 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
+++ b/cap/zx297520v3/sources/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
@@ -51,7 +51,9 @@
 
 # storage type: nand or emmc
 STRORAGE_TYPE = "nand"
-STRORAGE_CONF = "nand-config-4k"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+STRORAGE_CONF = "nand-config-default"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 require conf/distro/include/${STRORAGE_CONF}.inc
 
 #rootfs文件系统类型
@@ -469,6 +471,9 @@
 #xf.li@20240716 add for MOBILETEK_LOG_ENCRYPT value: "enable","disable"
 MOBILETEK_LOG_ENCRYPT = "disable"
 
+#xf.li@20250123 add for M22 SDK value (support M22 or not): "M22", "default"
+MOBILETEK_NAND_TYPE = "M22"
+
 LYNQ_CONFIG_COMMITID = "e2a3410390ff0ad762462ccb6af8faa5e16dcd61"
 LYNQ_CONFIG_VERSION = "T106_ap_version_cap_0425"
 LYNQ_CONFIG_SW_VERSION = "T106_ap_version_MR3.02b06.00"
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/zxic-image.bb b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/zxic-image.bb
index bce89e6..ef3cdd5 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/zxic-image.bb
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/zxic-image.bb
@@ -147,6 +147,11 @@
 		cp -arfp ${BSPDIR}/sources/meta-zxic-custom/conf/distro/include/${USERDATA_UBINIZE_CFG} ${B}
 		mkdir -p ${BINS-PATH}
 		${B}/ubinize-cfg.sh "${BINS-PATH}/${USEDATA_FS_NAME}"  "${B}/${USERDATA_UBINIZE_CFG}"  "${USERDATA_UBINIZE_ARGS}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+if ${@bb.utils.contains('MOBILETEK_NAND_TYPE','M22','true','false',d)}; then
+		${B}/ubinize-cfg.sh "${BINS-PATH}/ap_capuserdata_M22.img"  "${B}/${USERDATA_UBINIZE_CFG}"  "${LYNQ_M22_USERDATA_UBINIZE_ARGS}"
+fi
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 		mkdir -p ${IMAGE_ROOTFS}/etc_ro/
 		cp -v "${BINS-PATH}/${USEDATA_FS_NAME}" ${IMAGE_ROOTFS}/etc_ro/
 	fi
@@ -207,6 +212,11 @@
 		cp -arfp ${BSPDIR}/sources/meta-zxic-custom/conf/distro/include/${OEMDATA_UBINIZE_CFG} ${B}
 		mkdir -p ${BINS-PATH}
 		${B}/ubinize-cfg.sh "${BINS-PATH}/${OEMDATA_FS_NAME}"  "${B}/${OEMDATA_UBINIZE_CFG}"  "${USERDATA_UBINIZE_ARGS}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+if ${@bb.utils.contains('MOBILETEK_NAND_TYPE','M22','true','false',d)}; then
+		${B}/ubinize-cfg.sh "${BINS-PATH}/cap_oemdata_M22.img"  "${B}/${OEMDATA_UBINIZE_CFG}"  "${LYNQ_M22_USERDATA_UBINIZE_ARGS}"
+fi
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 		mkdir -p ${IMAGE_ROOTFS}/etc_ro/
 		cp -v "${BINS-PATH}/${OEMDATA_FS_NAME}" ${IMAGE_ROOTFS}/etc_ro/
 	fi
@@ -234,12 +244,21 @@
 		${S}/squashfs_dm-verity.sh  ${S}/${ROOT_FS_NAME}.unsigned  ${S} \
 			${BINS-PATH}/ap_caprootfs.img.dm ${SIGNIMAGE_PRIVATE_KEY} ${BSPDIR}/tools/SignTool/SignImage
 		${S}/ubinize-static.sh vol_rootfs "${BINS-PATH}/ap_caprootfs.img" ${BINS-PATH}/ap_caprootfs.img.dm "${UBINIZE_ARGS}"
-
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+if ${@bb.utils.contains('MOBILETEK_NAND_TYPE','M22','true','false',d)}; then
+		${S}/ubinize-static.sh vol_rootfs "${BINS-PATH}/ap_caprootfs_M22.img" ${BINS-PATH}/ap_caprootfs.img.dm "${LYNQ_M22_UBINIZE_ARGS}"
+fi
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 		if ${@bb.utils.contains('DISTRO_FEATURES','oemfs','true','false',d)}; then
 			rm -fv ${BINS-PATH}/cap_oem.img.dm
 			${B}/squashfs_dm-verity.sh  ${S}/cap_oem.img.unsigned  ${B} \
 				${BINS-PATH}/cap_oem.img.dm ${SIGNIMAGE_PRIVATE_KEY} ${BSPDIR}/tools/SignTool/SignImage
 			${B}/ubinize-static.sh vol_oem "${BINS-PATH}/cap_oem.img" ${BINS-PATH}/cap_oem.img.dm "${UBINIZE_ARGS}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+if ${@bb.utils.contains('MOBILETEK_NAND_TYPE','M22','true','false',d)}; then
+			${B}/ubinize-static.sh vol_oem "${BINS-PATH}/cap_oem_M22.img" ${BINS-PATH}/cap_oem.img.dm "${LYNQ_M22_UBINIZE_ARGS}"
+fi
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
 		fi
 	fi
 }