[Feature]merge oem partitions and logs form MR3.0-Partition

Change-Id: I5f241e1554ba6c8ba42320e0c38e9ffa2b803657
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/classes/mkoemapp2img.bbclass b/meta-sdk/meta/meta-lynqSDK-T800/classes/mkoemapp2img.bbclass
new file mode 100755
index 0000000..6c3d6a1
--- /dev/null
+++ b/meta-sdk/meta/meta-lynqSDK-T800/classes/mkoemapp2img.bbclass
@@ -0,0 +1,15 @@
+IMAGE_FSTYPES_NO_WHITESPACE ?= "$(echo "${IMAGE_FSTYPES}" | tr -d '[:space:]')"
+EXTRA_DIR_OEMAPP2_IMAGE_PATH := "${DEPLOY_DIR_IMAGE}/oemapp2"
+
+mk_oemapp2_image(){
+	if [ ! -d "$EXTRA_DIR_OEMAPP2_IMAGE_PATH" ]; then
+		mkdir -p ${EXTRA_DIR_OEMAPP2_IMAGE_PATH}
+		#echo "just test mount a read-write directory /oemapp2 12 22222222222222222" > ${EXTRA_DIR_OEMAPP2_IMAGE_PATH}/test.txt
+	fi
+
+	OEMAPP_IMG="oemapp2.img"	
+	mksquashfs ${EXTRA_DIR_OEMAPP2_IMAGE_PATH} ${DEPLOY_DIR_IMAGE}/${OEMAPP_IMG} -b 64K -comp xz -noappend
+}
+
+
+ROOTFS_POSTPROCESS_COMMAND += " mk_oemapp2_image;"
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/classes/mkoemappimg.bbclass b/meta-sdk/meta/meta-lynqSDK-T800/classes/mkoemappimg.bbclass
new file mode 100755
index 0000000..e3faf0c
--- /dev/null
+++ b/meta-sdk/meta/meta-lynqSDK-T800/classes/mkoemappimg.bbclass
@@ -0,0 +1,16 @@
+IMAGE_FSTYPES_NO_WHITESPACE ?= "$(echo "${IMAGE_FSTYPES}" | tr -d '[:space:]')"
+EXTRA_DIR_OEMAPP_IMAGE_PATH := "${DEPLOY_DIR_IMAGE}/oemapp"
+
+mk_oemapp_image(){
+	if [ ! -d "$EXTRA_DIR_OEMAPP_IMAGE_PATH" ]; then
+		mkdir -p ${EXTRA_DIR_OEMAPP_IMAGE_PATH}
+		#echo "just test mount a read-write directory /oemapp 12 1111111111" > ${EXTRA_DIR_OEMAPP_IMAGE_PATH}/test.txt
+	fi
+
+	ls ${EXTRA_DIR_OEMAPP_IMAGE_PATH}
+	OEMAPP_IMG="oemapp.img"	
+	mksquashfs ${EXTRA_DIR_OEMAPP_IMAGE_PATH} ${DEPLOY_DIR_IMAGE}/${OEMAPP_IMG} -b 64K -comp xz -noappend
+}
+
+
+ROOTFS_POSTPROCESS_COMMAND += " mk_oemapp_image;"
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/classes/mkoemdataimg.bbclass b/meta-sdk/meta/meta-lynqSDK-T800/classes/mkoemdataimg.bbclass
new file mode 100755
index 0000000..bdd9b21
--- /dev/null
+++ b/meta-sdk/meta/meta-lynqSDK-T800/classes/mkoemdataimg.bbclass
@@ -0,0 +1,29 @@
+IMAGE_FSTYPES_NO_WHITESPACE ?= "$(echo "${IMAGE_FSTYPES}" | tr -d '[:space:]')"
+EXTRA_DIR_IMAGE_PATH := "${DEPLOY_DIR_IMAGE}/oemdata"
+
+mk_oemdata_image(){
+	if [ ! -d "$EXTRA_DIR_IMAGE_PATH" ]; then
+		mkdir -p ${EXTRA_DIR_IMAGE_PATH}
+		#echo "just test mount a read-write directory /oemdata" > ${EXTRA_DIR_IMAGE_PATH}/test.txt
+	fi
+
+	STATE_PARTITION="oemdata.ubifs"
+	STATE_UBI="oemdata.img"	
+	STATE_UBINIZE_CFG="oemdata.cfg"
+	cat << EOF > ${STATE_UBINIZE_CFG}
+[ubifs]
+mode=ubi
+image=${DEPLOY_DIR_IMAGE}/${STATE_PARTITION}
+vol_id=0
+vol_type=dynamic
+vol_name=oemdata
+vol_flags=autoresize
+EOF
+
+	#mkfs.ubifs -r ${EXTRA_DIR_IMAGE_PATH} -m 4096 -e 253952 -c 240 -o ${DEPLOY_DIR_IMAGE}/${STATE_PARTITION} ${MKUBIFS_ARGS}
+	#ubinize -o ${DEPLOY_DIR_IMAGE}/${STATE_UBI} -m 4096 -p 256KiB -s 4096 ${UBINIZE_ARGS} ${STATE_UBINIZE_CFG}
+
+	mkfs.ubifs -r ${EXTRA_DIR_IMAGE_PATH} -o ${DEPLOY_DIR_IMAGE}/${STATE_PARTITION} ${MKUBIFS_ARGS}
+	ubinize -o ${DEPLOY_DIR_IMAGE}/${STATE_UBI} ${UBINIZE_ARGS} ${STATE_UBINIZE_CFG}
+}
+ROOTFS_POSTPROCESS_COMMAND += " mk_oemdata_image;"
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/conf/machine/auto2735evb-ivt-main.conf b/meta-sdk/meta/meta-lynqSDK-T800/conf/machine/auto2735evb-ivt-main.conf
index 6891ee3..3c54c03 100755
--- a/meta-sdk/meta/meta-lynqSDK-T800/conf/machine/auto2735evb-ivt-main.conf
+++ b/meta-sdk/meta/meta-lynqSDK-T800/conf/machine/auto2735evb-ivt-main.conf
@@ -12,7 +12,7 @@
 EXFAT_SUPPORT = "yes"
 
 # AB update
-AB_OTA_PARTITIONS += "vbmeta"
+AB_OTA_PARTITIONS += "vbmeta oemapp oemapp2"
 
 
 MEMORY_SIZE = "1024"
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/recipes-bsp/scatter/files/auto2735-ivt-mcp_nand/partition_nand.xml b/meta-sdk/meta/meta-lynqSDK-T800/recipes-bsp/scatter/files/auto2735-ivt-mcp_nand/partition_nand.xml
old mode 100644
new mode 100755
index 229338f..d0c878d
--- a/meta-sdk/meta/meta-lynqSDK-T800/recipes-bsp/scatter/files/auto2735-ivt-mcp_nand/partition_nand.xml
+++ b/meta-sdk/meta/meta-lynqSDK-T800/recipes-bsp/scatter/files/auto2735-ivt-mcp_nand/partition_nand.xml
@@ -28,7 +28,7 @@
 	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="148096" end="148415" name="tee_a" />
 	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="148416" end="148735" name="tee_b" />
 	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="148736" end="156927" name="nvram" />
-	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="156928" end="165119" name="nvcfg" />
+	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="156928" end="165119" name="oemdata" />
 	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="165120" end="165375" name="mcupm" />
 	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="165376" end="165631" name="sspm" />
 	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="165632" end="165887" name="dpm" />
@@ -40,6 +40,10 @@
 	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="167040" end="167167" name="vbmeta_b" />
 	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="167168" end="175359" name="userdata" />
 	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="175360" end="180479" name="expdb" />
-	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="180480" end="248639" name="log" />
-	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="248640" end="261439" name="delta" />
-</partition>
\ No newline at end of file
+	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="180480" end="183999" name="delta" />
+	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="184000" end="204479" name="oemapp2_a" />
+	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="204480" end="224959" name="oemapp2_b" />
+	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="224960" end="242879" name="oemapp_a" />
+	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="242880" end="260799" name="oemapp_b" />
+	<entry type="{0FC63DAF-8483-4772-8E79-3D69D8477DE4}" start="260800" end="261375" name="secdata" />
+</partition>
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/images/mtk-image-2735.bb b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/images/mtk-image-2735.bb
index 9f7599e..f4c77e5 100755
--- a/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/images/mtk-image-2735.bb
+++ b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/images/mtk-image-2735.bb
@@ -18,6 +18,12 @@
 inherit mkstatepart
 inherit mkuserdataimg
 inherit mksncfg
+#you.chen@2022-07-11 for change partition begin
+DEPENDS += "init-oem"
+inherit mkoemdataimg
+inherit mkoemappimg
+inherit mkoemapp2img
+#you.chen@2022-07-11 for change partition end
 inherit create-sparse-image
 inherit staging-copyfile
 inherit avb_sign_image
@@ -133,10 +139,22 @@
    . ${TOPDIR}/rootbase.sh
    #echo "${ROOTFS_BASE}"   
    cp -af ${ROOTFS_BASE}/* ${IMAGE_ROOTFS}/
+   #you.chen@2022-07-11 for change partition begin
+   install -d ${IMAGE_ROOTFS}/oemdata
+   install -d ${IMAGE_ROOTFS}/oemapp
+   install -d ${IMAGE_ROOTFS}/oemapp2
+   #you.chen@2022-07-11 for change partition end
    echo "copy ok----\n"
 }
 
 ROOTFS_PREPROCESS_COMMAND += "mk_lynq_base_part_rootfs_pre;"
 
+#you.chen@2022-07-25 for change partition begin
+mk_oem_init_part_rootfs_post() {
+    cp ${STAGING_DIR_HOST}/${datadir}/init/* ${IMAGE_ROOTFS}/${datadir}/init/
+}
+
+ROOTFS_POSTPROCESS_COMMAND += "mk_oem_init_part_rootfs_post;"
+#you.chen@2022-07-25 for change partition end
 
 addtask modem_align_4kb after do_image_complete before do_build
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/init_mmc b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/init_mmc
new file mode 100755
index 0000000..39f1e3b
--- /dev/null
+++ b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/init_mmc
@@ -0,0 +1,129 @@
+#!/bin/sh
+
+file_emmc_device="/dev/mmcblk0"
+file_emmc_partition="/dev/mmcblk0p1"
+# file_check_result="/var/log/emmc_check.txt"
+# file_log="/var/log/emmc_init.log"
+# file_mount_point="/media/mmc1"
+file_check_result="/tmp/emmc_check.txt"
+file_log="/tmp/emmc_init.log"
+file_mount_point="/media"
+
+emmc_result_no_emmc="emmc_no_device"
+emmc_result_success="emmc_success"
+emmc_result_no_partition="emmc_no_partition"
+emmc_result_mount_fail="emmc_mount_fail"
+
+find_format=0
+find_mount_point=0
+
+mountCheck() {
+	i=1
+	find_format=0
+	find_mount_point=0
+	echo "$1 read $file_emmc_partition property start" >> $file_log
+	ext4=`df -T $file_emmc_partition`
+	for element in $ext4
+	do
+		echo "line$i:$element" >> $file_log
+		if [ $element == "ext4" ] ; then
+			echo "find format: ext4" >> $file_log
+			find_format=1
+		elif [ $element == "${file_mount_point}" ] ; then
+			echo "find mount point: ${file_mount_point}" >> $file_log
+			find_mount_point=1
+		fi
+		i=`expr $i + 1`
+	done
+	echo "$1 read $file_emmc_partition property end" >> $file_log
+}
+
+time=$(date "+%Y-%m-%d %H:%M:%S")
+echo "emmc power on checkstart($time)" > $file_log
+
+#检查是否有emmc设备,如果没有
+if [ ! -e $file_emmc_device ] ; then
+	echo "no emmc device detected"  >> $file_log
+	echo "$emmc_result_no_emmc" > $file_check_result
+else #如果有
+	echo "found $file_emmc_device" >> $file_log
+
+#检查有没有分区设备,如果没有则进行分区
+	if [ ! -e $file_emmc_partition ] ; then
+			echo "make emmc partition start" >> $file_log
+			echo -e "n\np\n1\n\n\nw\n" | fdisk /dev/mmcblk0
+			echo "make emmc partition end" >> $file_log
+			sleep 1s
+	fi
+
+#再次尝试,如果还是找不到分区设备,则认为emmc有问题
+	if [ ! -e $file_emmc_partition ] ; then
+		echo "can not make partition:$file_emmc_device" >> $file_log
+		echo "$emmc_result_no_partition" > $file_check_result
+	else
+		echo "found $file_emmc_partition" >> $file_log
+
+	#检查是否已经mount,因为可能被系统自动调用fstab而mount上
+		mountCheck kkk
+		echo "kkk find mount_point:$find_mount_point, find_format:$find_format" >> $file_log
+		
+	#如果已经mount上,并且格式为ext4,则成功,否则认为有问题
+		if [ $find_mount_point -eq 1 -a $find_format -eq 1 ] ; then
+			echo "$file_emmc_partition has alreay mount" >> $file_log
+			echo "$emmc_result_success" > $file_check_result
+		else
+		#先卸载挂载点
+			echo "umount $file_mount_point" >> $file_log
+			umount $file_mount_point
+		#先尝试是否可以mount上, 如果已经格式化,只要执行挂载就可以,尽量不格式化emmc
+			echo "find $file_emmc_partition, and mount to $file_mount_point" >> $file_log
+			mount -t ext4 $file_emmc_partition $file_mount_point
+		#检查是否可以挂载上
+			mountCheck bbb
+			echo "bbb find mount_point:$find_mount_point, find_format:$find_format" >> $file_log
+		#如果挂载上,并且是ext4格式,则成功
+			if [ $find_mount_point -eq 1 -a $find_format -eq 1 ] ; then
+				echo "$file_emmc_partition mount success" >> $file_log
+				echo "$emmc_result_success" > $file_check_result
+			#如果挂载上,却不是ext4格式,则格式化为ext4
+			elif [ $find_mount_point -eq 1 -a $find_format -eq 0 ] ; then
+				#先卸载
+				echo "$file_emmc_partition mounted, but it's not ext4 format" >> $file_log
+				echo "umount $file_mount_point" >> $file_log
+				umount $file_mount_point
+				#格式化emmc为ext4格式
+				echo "fomat $file_emmc_partition to ext4" >> $file_log
+				echo "mkfs.ext4 $file_mount_point" >> $file_log
+				mkfs.ext4 $file_emmc_partition >> $file_log 2>&1
+			#如果挂载不上,也格式化为ext4
+			else
+				#格式化emmc为ext4格式
+				echo "$file_emmc_partition can not mount" >> $file_log
+				echo "fomat $file_emmc_partition to ext4" >> $file_log
+				echo "mkfs.ext4 $file_mount_point" >> $file_log
+				mkfs.ext4 $file_emmc_partition >> $file_log 2>&1
+			fi
+			
+			#重新挂载
+			if [ $find_mount_point -eq 0 -o $find_format -eq 0 ] ; then
+				echo "try mount $file_emmc_partition after proper process" >> $file_log
+				mount -t auto $file_emmc_partition $file_mount_point
+				sleep 1s
+				#检查是否可以挂载上
+				mountCheck zzz
+				echo "zzz find mount_point:$find_mount_point, find_format:$find_format" >> $file_log
+
+				if [ $find_mount_point -eq 1 -a $find_format -eq 1 ] ; then
+					echo "$file_emmc_partition mount success" >> $file_log
+					echo "$emmc_result_success" > $file_check_result
+				else
+					echo "$file_emmc_partition mount failed" >> $file_log
+					echo "$emmc_result_mount_fail" > $file_check_result
+				fi
+			fi
+		fi
+	fi
+fi
+
+#exit 0
+
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/init_mount_nand b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/init_mount_nand
old mode 100644
new mode 100755
index 812850b..7c6aebc
--- a/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/init_mount_nand
+++ b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/init_mount_nand
@@ -7,6 +7,13 @@
 PROTECT1_PATH=/mnt/vendor/protect_f
 PROTECT2_PATH=/mnt/vendor/protect_s
 
+#you.chen@2022-07-11 add for load oemapp begin
+ROOT_MTD=`cat /proc/cmdline | tr " " "\n" | grep -v "," | grep -e "^ubi.mtd=" | awk -F "=" '{print $2}'`
+if [ ! "$ROOT_MTD" == "" ]; then
+	AVB_SLOT_FLAG=`grep "mtd$ROOT_MTD" /proc/mtd | sed 's/.*\("system_.*"\)/\1/g' | awk -F '"' '{print $2}' | awk -F "system_" '{print $2}'`
+fi
+#you.chen@2022-07-11 add for load oemapp end
+
 mnt_folder(){
 	BLK_NAME=$1
 	MNT_FOLDER=$2
@@ -24,9 +31,27 @@
 	elif [ $BLK_NAME == "protect_b" ]; then
 		mntdone=`mount -t ubifs /dev/ubi4_0 $MNT_FOLDER 2>&1`
 		echo "mount: mount protect_b"
+	#you.chen@2022-07-11 add for load oemapp begin
 	elif [ $BLK_NAME == "log" ]; then
-		mntdone=`mount -t ubifs /dev/ubi6_0 $MNT_FOLDER 2>&1`
+		#mntdone=`mount -t ubifs /dev/ubi6_0 $MNT_FOLDER 2>&1`
 		echo "mount: mount log"
+	elif [ $BLK_NAME == "oemdata" ]; then
+		ubi_num=`ubiattach /dev/ubi_ctrl -m 28 -d 10 -b 1`
+		mntdone=`mount -t ubifs /dev/ubi10_0 $MNT_FOLDER 2>&1`
+		echo "mount: mount oemdata"
+	elif [ $BLK_NAME == "oemapp_a" ]; then
+		mntdone=`mount -t squashfs /dev/mtdblock43 $MNT_FOLDER 2>&1`
+		echo "mount: mount oemapp"
+	elif [ $BLK_NAME == "oemapp_b" ]; then
+		mntdone=`mount -t squashfs /dev/mtdblock44 $MNT_FOLDER 2>&1`
+		echo "mount: mount oemapp"
+	elif [ $BLK_NAME == "oemapp2_a" ]; then
+		mntdone=`mount -t squashfs /dev/mtdblock41 $MNT_FOLDER 2>&1`
+		echo "mount: mount oemapp2"
+	elif [ $BLK_NAME == "oemapp2_b" ]; then
+		mntdone=`mount -t squashfs /dev/mtdblock42 $MNT_FOLDER 2>&1`
+		echo "mount: mount oemapp2"
+	#you.chen@2022-07-11 add for load oemapp end
 	fi
 
 	if [ ! "$mntdone" == "" ]; then
@@ -51,13 +76,15 @@
 			ubimkvol /dev/ubi4 -m -N protect_b
 			mount -t ubifs /dev/ubi4_0 $MNT_FOLDER
 			echo "mount: format mount protect_b"
-		elif [ $BLK_NAME == "log" ]; then
-			ubidetach -m 40
-			ubiformat /dev/mtd40
-			ubiattach /dev/ubi_ctrl -m 40 -b 1
-			ubimkvol /dev/ubi6 -m -N log
-			mount -t ubifs /dev/ubi6_0 $MNT_FOLDER
-			echo "mount: format mount log"
+		#you.chen@2022-07-11 add for load oemapp begin
+		elif [ $BLK_NAME == "oemdata" ]; then
+			ubidetach -m 28
+			echo -e "y\n" | ubiformat /dev/mtd28
+			ubiattach /dev/ubi_ctrl -m 28 -d 10 -b 1
+			ubimkvol /dev/ubi10 -m -N oemdata
+			mount -t ubifs /dev/ubi10_0 $MNT_FOLDER 2>&1
+			echo "mount: format mount oemdata"
+		#you.chen@2022-07-11 add for load oemapp end
 		fi
 	fi
 }
@@ -96,16 +123,24 @@
 }
 
 init_log() {
-	mnt_folder log /log
-	if [ -e /dev/mmcblk1p1 ]; then
-		if [ ! -e /run/media/mmcblk1p1 ]; then
-			mkdir -p /run/media/mmcblk1p1
-		fi
-		mount -t exfat /dev/mmcblk1p1 /run/media/mmcblk1p1
-		rm -rf /var/log
-		ln -sf /run/media/mmcblk1p1 /var/log
+	#you.chen@2022-07-11 add gsw's emmc init scrips begin
+	if [ -f /usr/share/init/init_mmc ]; then
+		/bin/sh /usr/share/init/init_mmc
+	fi
+	#you.chen@2022-07-11 add gsw's emmc init scrips end
+    #liu.tao@2022-08-04 modify log nand to emmc
+	if [ -e /dev/mmcblk0p1 ]; then
+       	#mkfs -t ext4 /dev/mmcblk0
+       	if [ -e /media ]; then
+        	#mount -t ext4 /dev/mmcblk0p1 /media
+        	mount --bind /media /var/log
+        else
+            #Since you do not have permission to create the file, mount it directly
+            mount -t ext4 /dev/mmcblk0p1 /var/log    
+        fi
 	else
-		allink=`ls -al /var | grep 'log ->' 2>&1`
+	    mnt_folder log /log
+		#allink=`ls -al /var | grep 'log ->' 2>&1`
 		if [ ! "$allink" == "" ]; then
 			#echo "=== /var/log is already link, unlink it ===" > /dev/kmsg
 			unlink /var/log
@@ -148,6 +183,25 @@
 }
 #init_log2 &
 
+#you.chen@2022-07-11 add for load oemapp begin
+init_oemapp() {
+
+	mnt_folder oemdata /oemdata
+
+	if [ "$AVB_SLOT_FLAG" == "a" ]; then
+		mnt_folder oemapp_a /oemapp
+		mnt_folder oemapp2_a /oemapp2
+	elif [ "$AVB_SLOT_FLAG" == "b" ]; then
+		mnt_folder oemapp_b /oemapp
+		mnt_folder oemapp2_b /oemapp2
+	else
+		echo "unkown ab slot, not mount oemapp"
+	fi
+}
+
+init_oemapp &
+#you.chen@2022-07-11 add for load oemapp end
+
 init_partlabel() {
 	mkdir -p /dev/disk/by-partlabel
 	if [ -d "/dev/disk/by-partlabel" ]; then
@@ -175,6 +229,10 @@
 		ln -s ../../mtd36 vbmeta_a
 		ln -s ../../mtd37 vbmeta_b
 		ln -s ../../mtd39 expdb
+        	ln -s ../../mtd41 oemapp2_a
+        	ln -s ../../mtd42 oemapp2_b
+        	ln -s ../../mtd43 oemapp_a
+        	ln -s ../../mtd44 oemapp_b
 	fi
 
 	mount -t tmpfs /dev/disk/by-partlabel/misc /misc
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/wifi_network b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/wifi_network
new file mode 100755
index 0000000..01bdeb9
--- /dev/null
+++ b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/wifi_network
@@ -0,0 +1 @@
+192.168.15.0/28
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/init-2735_1.0.0.bb b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/init-2735_1.0.0.bb
index 23096c1..07c39e4 100755
--- a/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/init-2735_1.0.0.bb
+++ b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/init-2735_1.0.0.bb
@@ -37,6 +37,10 @@
 #DEPENDS+= "udev"
 #dongyu@2022.7.15 delete for Slow loading of ETS port end
 
+#you.chen@2022-07-11 add gsw's emmc init scrips begin
+SRC_URI += "file://init_mmc"
+#you.chen@2022-07-11 add gsw's emmc init scrips end 
+
 #dongyu@2022.7.15 abb for Slow loading of ETS port start
 SRC_URI += "file://init_smp.service"
 #dongyu@2022.7.15 add for Slow loading of ETS port end
@@ -54,6 +58,10 @@
                ${datadir}/init/meta_tst \
                ${datadir}/init/init_speech \
                ${datadir}/init/init_usb \
+               /oemdata \
+               /oemapp \
+               /oemapp2 \
+               ${@bb.utils.contains('BOOTDEV_TYPE', 'nand',  ' ${datadir}/init/init_mmc', ' ', d)} \
                ${datadir}/init/smp.sh \
                ${datadir}/init/lynq_data_recover \
                ${datadir}/init/lynq_ubi1_wmtd \
@@ -105,6 +113,11 @@
 #dongyu@2022.7.15 add (${systemd_unitdir}/system/init_smp.service) for Slow loading of ETS port end
 
 do_install_append() {
+    #you.chen@2022-07-11 add for add partition begin
+    install -d ${D}oemdata
+    install -d ${D}oemapp
+    install -d ${D}oemapp2
+    #you.chen@2022-07-11 add for add partition end
     install -d ${D}${datadir}/init
     install -m 0755 init_network ${D}${datadir}/init/init_network
     install -m 0755 usb_switch ${D}${datadir}/init/usb_switch
@@ -128,6 +141,9 @@
 
     if [ "${BOOTDEV_TYPE}" = "nand" ]; then
         install -m 0755 init_mount_nand ${D}${datadir}/init/init_mount
+        #you.chen@2022-07-11 add gsw's emmc init scrips begin
+    	install -m 0755 init_mmc ${D}${datadir}/init/init_mmc
+        #you.chen@2022-07-11 add gsw's emmc init scrips end
     else
         install -m 0755 init_mount ${D}${datadir}/init/init_mount
     fi
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/init-oem_1.0.0.bb b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/init-oem_1.0.0.bb
new file mode 100755
index 0000000..ec32bf8
--- /dev/null
+++ b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/init-oem_1.0.0.bb
@@ -0,0 +1,32 @@
+#Basic Configuration
+DESCRIPTION = "Initial settting"
+LICENSE = "MediaTekProprietary"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
+
+SRC_URI = "file://LICENSE"
+SRC_URI += "file://init_mount"
+SRC_URI += "file://init_mount_nand"
+SRC_URI += "file://wifi_network"
+SRC_URI += "${@bb.utils.contains('BOOTDEV_TYPE', 'nand',  'file://init_mmc', ' ', d)}"
+
+S = "${WORKDIR}"
+
+#Skip strip check in QA test
+INSANE_SKIP_${PN} += "already-stripped"
+
+FILES_${PN} = "${datadir}/init/init_mount \
+               /etc/config/wifi_network \
+               ${@bb.utils.contains('BOOTDEV_TYPE', 'nand',  ' ${datadir}/init/init_mmc', ' ', d)} \
+               "
+
+do_install_append() {
+    install -d ${D}${datadir}/init
+    install -d ${D}/etc/config
+    install -m 0644 wifi_network ${D}/etc/config/wifi_network 
+    if [ "${BOOTDEV_TYPE}" = "nand" ]; then
+        install -m 0755 init_mount_nand ${D}${datadir}/init/init_mount
+    	install -m 0755 init_mmc ${D}${datadir}/init/init_mmc
+    else
+        install -m 0755 init_mount ${D}${datadir}/init/init_mount
+    fi
+}
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/recipes-devtools/flashtool/files/auto2735evb-ivt-main/flashproc.py b/meta-sdk/meta/meta-lynqSDK-T800/recipes-devtools/flashtool/files/auto2735evb-ivt-main/flashproc.py
index f1fd618..b895511 100755
--- a/meta-sdk/meta/meta-lynqSDK-T800/recipes-devtools/flashtool/files/auto2735evb-ivt-main/flashproc.py
+++ b/meta-sdk/meta/meta-lynqSDK-T800/recipes-devtools/flashtool/files/auto2735evb-ivt-main/flashproc.py
@@ -49,7 +49,12 @@
                 ['fastboot', 'flash', 'dpm', 'dpm.img'],
                 ['fastboot', 'flash', 'userdata', 'userdata.img'],
                 ['fastboot', 'flash', 'vbmeta_a', 'vbmeta.img'],
-                ['fastboot', 'flash', 'vbmeta_b', 'vbmeta.img']]
+                ['fastboot', 'flash', 'vbmeta_b', 'vbmeta.img'],
+                ['fastboot', 'flash', 'oemdata', 'oemdata.img'],
+                ['fastboot', 'flash', 'oemapp_a', 'oemapp.img'],
+                ['fastboot', 'flash', 'oemapp_b', 'oemapp.img'],
+                ['fastboot', 'flash', 'oemapp2_a', 'oemapp2.img'],
+                ['fastboot', 'flash', 'oemapp2_b', 'oemapp2.img']]
 }
 
 userprocedures = {
@@ -131,7 +136,15 @@
                 ['fastboot', 'erase', 'vbmeta_a'],
                 ['fastboot', 'flash', 'vbmeta_a', 'vbmeta.img'],
                 ['fastboot', 'erase', 'vbmeta_b'],
-                ['fastboot', 'flash', 'vbmeta_b', 'vbmeta.img']]
+                ['fastboot', 'flash', 'vbmeta_b', 'vbmeta.img'],
+                ['fastboot', 'erase', 'oemapp_a'],
+                ['fastboot', 'flash', 'oemapp_a', 'oemapp.img'],
+                ['fastboot', 'erase', 'oemapp_b'],
+                ['fastboot', 'flash', 'oemapp_b', 'oemapp.img'],
+                ['fastboot', 'erase', 'oemapp2_a'],
+                ['fastboot', 'flash', 'oemapp2_a', 'oemapp2.img'],
+                ['fastboot', 'erase', 'oemapp2_b'],
+                ['fastboot', 'flash', 'oemapp2_b', 'oemapp2.img']]
 }
 
 userdataprocedures = {
@@ -179,6 +192,16 @@
                 ['fastboot', 'flash', 'vbmeta_a', 'vbmeta.img'],
                 ['fastboot', 'erase', 'vbmeta_b'],
                 ['fastboot', 'flash', 'vbmeta_b', 'vbmeta.img'],
+                ['fastboot', 'erase', 'oemapp_a'],
+                ['fastboot', 'flash', 'oemapp_a', 'oemapp.img'],
+                ['fastboot', 'erase', 'oemapp_b'],
+                ['fastboot', 'flash', 'oemapp_b', 'oemapp.img'],
+                ['fastboot', 'erase', 'oemapp2_a'],
+                ['fastboot', 'flash', 'oemapp2_a', 'oemapp2.img'],
+                ['fastboot', 'erase', 'oemapp2_b'],
+                ['fastboot', 'flash', 'oemapp2_b', 'oemapp2.img'],
+                ['fastboot', 'erase', 'oemdata'],
+                ['fastboot', 'flash', 'oemdata', 'oemdata.img'],
                 ['fastboot', 'erase', 'userdata'],
                 ['fastboot', 'flash', 'userdata', 'userdata.img']]
 }