diff --git a/conf/machine/include/xml/uis7885-2h10-uboot22.xml b/conf/machine/include/xml/uis7885-2h10-uboot22.xml
index cad6b1ddf..7a2159382 100755
--- a/conf/machine/include/xml/uis7885-2h10-uboot22.xml
+++ b/conf/machine/include/xml/uis7885-2h10-uboot22.xml
@@ -3208,15 +3208,17 @@
-
-
-
-
+
+
+
+
+
+
@@ -3688,6 +3690,18 @@
2
Download sml operation
+
+ SPLLoaderSDBOOT
+ UBOOT_LOADER_SDBOOT
+ UBOOT_LOADER2
+
+ 0x0
+ 0x0
+
+ 1
+ 0
+ SPLLoaderSDBOOT image file
+
UBOOTLoader
UBOOT_LOADER
diff --git a/conf/machine/include/xml/uis7885-2h10-ubuntu20.xml b/conf/machine/include/xml/uis7885-2h10-ubuntu20.xml
index b9f8a8eb2..199e57018 100755
--- a/conf/machine/include/xml/uis7885-2h10-ubuntu20.xml
+++ b/conf/machine/include/xml/uis7885-2h10-ubuntu20.xml
@@ -3208,15 +3208,17 @@
-
-
-
-
+
+
+
+
+
+
@@ -3688,6 +3690,18 @@
2
Download sml operation
+
+ SPLLoaderSDBOOT
+ UBOOT_LOADER_SDBOOT
+ UBOOT_LOADER2
+
+ 0x0
+ 0x0
+
+ 1
+ 0
+ SPLLoaderSDBOOT image file
+
UBOOTLoader
UBOOT_LOADER
diff --git a/conf/machine/uis7885-2h10.conf b/conf/machine/uis7885-2h10.conf
index 68548bc1c..6763f11c9 100755
--- a/conf/machine/uis7885-2h10.conf
+++ b/conf/machine/uis7885-2h10.conf
@@ -172,6 +172,7 @@ U_BOOT_MACHINE_PATCH = ""
QT_SUPPORTED = "true"
CHIPRAM_SUPPORT_BOTH_EMMC_UFS = "yes"
+SUPPORT_EMMC_UFS_SDBOOT = "yes"
SUPPORT_VOICECALL = "true"
diff --git a/recipes-bsp/chipram/chipram.bb b/recipes-bsp/chipram/chipram.bb
index 5a5984396..f737ef78d 100755
--- a/recipes-bsp/chipram/chipram.bb
+++ b/recipes-bsp/chipram/chipram.bb
@@ -60,6 +60,14 @@ do_compile () {
oe_runmake -C ${S} O=${B}/ufs ${CHIPRAM_MACHINE}
oe_runmake -C ${S} O=${B}/ufs
fi
+
+ if [ ${SUPPORT_EMMC_UFS_SDBOOT} = "yes" ]; then
+ #########build spl-sd.bin###########################
+ export CONFIG_SD_SPL=true
+ oe_runmake -C ${S} O=${B}/sd ${CHIPRAM_MACHINE}
+ oe_runmake -C ${S} O=${B}/sd
+ fi
+
if [ ${CHIPRAM_SUPPORT_BOTH_EMMC_NAND} = "yes" ]; then
#########build spl-nand.bin###########################
install -m 0644 ${S}/../../devtools/mcp_gen/mcp.xls ${STAGING_BINDIR_NATIVE}/
@@ -118,6 +126,11 @@ do_deploy(){
sign_unisoc_bin "${DEPLOYDIR}/u-boot-spl-16k-ufs.bin"
fi
+ if [ ${SUPPORT_EMMC_UFS_SDBOOT} = "yes" ];then
+ install -m 0644 ${B}/sd/nand_spl/u-boot-spl-16k.bin ${DEPLOYDIR}/u-boot-spl-16k.bin
+ sign_unisoc_bin "${DEPLOYDIR}/u-boot-spl-16k.bin"
+ fi
+
if [ ${CHIPRAM_SUPPORT_BOTH_EMMC_NAND} = "yes" ];then
install -m 0644 ${B}/nand/nand_spl/u-boot-spl-16k.bin ${DEPLOYDIR}/u-boot-spl-16k-nand.bin
sign_unisoc_bin "${DEPLOYDIR}/u-boot-spl-16k-nand.bin"
diff --git a/recipes-bsp/u-boot/u-boot22.bb b/recipes-bsp/u-boot/u-boot22.bb
index 37e6211cd..f1c1e76a7 100755
--- a/recipes-bsp/u-boot/u-boot22.bb
+++ b/recipes-bsp/u-boot/u-boot22.bb
@@ -74,6 +74,12 @@ do_compile:prepend() {
if [ ${AB_PARTITIONS} = "true" ]; then
export CONFIG_AB_PARTITIONS=true
fi
+
+ if [ ${SUPPORT_EMMC_UFS_SDBOOT} = "yes" ]; then
+ export BOOT_SDBOOT=true
+ fi
+
+
}
do_compile () {
diff --git a/recipes-core/initscripts/initscripts/mount_emmc.sh b/recipes-core/initscripts/initscripts/mount_emmc.sh
index c20f186d6..bfdc32808 100644
--- a/recipes-core/initscripts/initscripts/mount_emmc.sh
+++ b/recipes-core/initscripts/initscripts/mount_emmc.sh
@@ -1,13 +1,29 @@
#!/bin/sh
#emmc dev name set
-echo "rcS:mount_emmc start"
-for folder in $(ls /sys/class/block/ | grep 'mmcblk0p');do
- id=${folder#*mmcblk0p}
- name=$(cat /sys/class/block/mmcblk0/$folder/uevent)
- subname=${name##*=}
- ln -s /dev/mmcblk0p$id /dev/mmcblk0p_$subname
- ln -s /dev/mmcblk0p$id /dev/$subname
-done
+is_sdboot=$(cat /proc/cmdline | grep "sdboot" | wc -l)
+if [ $is_sdboot -eq 0 ]; then
+ for folder in $(ls /sys/class/block/ | grep 'mmcblk0p');do
+ id=${folder#*mmcblk0p}
+ name=$(cat /sys/class/block/mmcblk0/$folder/uevent)
+ subname=${name##*=}
+ ln -s /dev/mmcblk0p$id /dev/mmcblk0p_$subname
+ ln -s /dev/mmcblk0p$id /dev/$subname
+ if [ $link_dev -eq 1 ];then
+ ln -s /dev/mmcblk0p$id /dev/disk/by-partlabel/$subname
+ fi
+ done
+else
+ for folder in $(ls /sys/class/block/ | grep 'mmcblk1p');do
+ id=${folder#*mmcblk1p}
+ name=$(cat /sys/class/block/mmcblk1/$folder/uevent)
+ subname=${name##*=}
+ ln -s /dev/mmcblk1p$id /dev/mmcblk1p_$subname
+ ln -s /dev/mmcblk1p$id /dev/$subname
+ if [ $link_dev -eq 1 ];then
+ ln -s /dev/mmcblk1p$id /dev/disk/by-partlabel/$subname
+ fi
+ done
+fi
#ufs dev name set
for devdir in /sys/block/sd*; do
diff --git a/recipes-ubuntu/unisoc-fs-mount/files/mount_emmc.sh b/recipes-ubuntu/unisoc-fs-mount/files/mount_emmc.sh
index c20f186d6..bfdc32808 100755
--- a/recipes-ubuntu/unisoc-fs-mount/files/mount_emmc.sh
+++ b/recipes-ubuntu/unisoc-fs-mount/files/mount_emmc.sh
@@ -1,13 +1,29 @@
#!/bin/sh
#emmc dev name set
-echo "rcS:mount_emmc start"
-for folder in $(ls /sys/class/block/ | grep 'mmcblk0p');do
- id=${folder#*mmcblk0p}
- name=$(cat /sys/class/block/mmcblk0/$folder/uevent)
- subname=${name##*=}
- ln -s /dev/mmcblk0p$id /dev/mmcblk0p_$subname
- ln -s /dev/mmcblk0p$id /dev/$subname
-done
+is_sdboot=$(cat /proc/cmdline | grep "sdboot" | wc -l)
+if [ $is_sdboot -eq 0 ]; then
+ for folder in $(ls /sys/class/block/ | grep 'mmcblk0p');do
+ id=${folder#*mmcblk0p}
+ name=$(cat /sys/class/block/mmcblk0/$folder/uevent)
+ subname=${name##*=}
+ ln -s /dev/mmcblk0p$id /dev/mmcblk0p_$subname
+ ln -s /dev/mmcblk0p$id /dev/$subname
+ if [ $link_dev -eq 1 ];then
+ ln -s /dev/mmcblk0p$id /dev/disk/by-partlabel/$subname
+ fi
+ done
+else
+ for folder in $(ls /sys/class/block/ | grep 'mmcblk1p');do
+ id=${folder#*mmcblk1p}
+ name=$(cat /sys/class/block/mmcblk1/$folder/uevent)
+ subname=${name##*=}
+ ln -s /dev/mmcblk1p$id /dev/mmcblk1p_$subname
+ ln -s /dev/mmcblk1p$id /dev/$subname
+ if [ $link_dev -eq 1 ];then
+ ln -s /dev/mmcblk1p$id /dev/disk/by-partlabel/$subname
+ fi
+ done
+fi
#ufs dev name set
for devdir in /sys/block/sd*; do
diff --git a/recipes-update/unisoc-ota/unisoc-ota/default/mount_emmc.sh b/recipes-update/unisoc-ota/unisoc-ota/default/mount_emmc.sh
index 66c567b77..ed07966ba 100755
--- a/recipes-update/unisoc-ota/unisoc-ota/default/mount_emmc.sh
+++ b/recipes-update/unisoc-ota/unisoc-ota/default/mount_emmc.sh
@@ -1,13 +1,24 @@
#!/bin/sh
#emmc dev name set
echo "rcS:mount_emmc start"
-for folder in $(ls /sys/class/block/ | grep 'mmcblk0p');do
- id=${folder#*mmcblk0p}
- name=$(cat /sys/class/block/mmcblk0/$folder/uevent)
- subname=${name##*=}
- ln -s /dev/mmcblk0p$id /dev/mmcblk0p_$subname
- ln -s /dev/mmcblk0p$id /dev/$subname
+is_sdboot=$(cat /proc/cmdline | grep "sdboot" | wc -l)
+if [ $is_sdboot -eq 0 ]; then
+ for folder in $(ls /sys/class/block/ | grep 'mmcblk0p');do
+ id=${folder#*mmcblk0p}
+ name=$(cat /sys/class/block/mmcblk0/$folder/uevent)
+ subname=${name##*=}
+ ln -s /dev/mmcblk0p$id /dev/mmcblk0p_$subname
+ ln -s /dev/mmcblk0p$id /dev/$subname
done
+else
+ for folder in $(ls /sys/class/block/ | grep 'mmcblk1p');do
+ id=${folder#*mmcblk1p}
+ name=$(cat /sys/class/block/mmcblk1/$folder/uevent)
+ subname=${name##*=}
+ ln -s /dev/mmcblk1p$id /dev/mmcblk1p_$subname
+ ln -s /dev/mmcblk1p$id /dev/$subname
+ done
+if
#ufs dev name set
for folder in $(ls /sys/class/block/sda/ | grep 'sda');do
@@ -16,4 +27,3 @@ for folder in $(ls /sys/class/block/sda/ | grep 'sda');do
subname=${name##*=}
ln -s /dev/sda$id /dev/$subname
done
-