diff --git a/projects/ROCKNIX/bootloader/dtb.xml b/projects/ROCKNIX/bootloader/dtb.xml
index 37bb91069c..592b0ae2af 100644
--- a/projects/ROCKNIX/bootloader/dtb.xml
+++ b/projects/ROCKNIX/bootloader/dtb.xml
@@ -77,4 +77,18 @@
meson-g12b-odroid-go-ultra
meson-g12b-powkiddy-rgb10-max-3-pro
+
+ sm8250-retroidpocket-rp5
+ sm8250-retroidpocket-flip2
+ sm8250-retroidpocket-rpmini
+ sm8250-retroidpocket-rpminiv2
+
+
+ qcs8550-ayn-odin2
+ qcs8550-ayn-odin2portal
+ qcs8550-ayn-odin2mini
+ qcs8550-ayaneo-pocketace
+ qcs8550-ayaneo-pocketdmg
+ qcs8550-ayaneo-pocketdmg
+
diff --git a/projects/ROCKNIX/devices/SM8250/bootloader/grub b/projects/ROCKNIX/devices/SM8250/bootloader/grub
index 40de980b44..0532db5f3e 100755
--- a/projects/ROCKNIX/devices/SM8250/bootloader/grub
+++ b/projects/ROCKNIX/devices/SM8250/bootloader/grub
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
-source ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options
+DTBXML="${PROJECT_DIR}/${PROJECT}/bootloader/dtb.xml"
mkdir -p "${INSTALL}/usr/share/bootloader/EFI/BOOT"
cat << EOF > "${INSTALL}/usr/share/bootloader/EFI/BOOT/grub.cfg"
@@ -39,48 +39,29 @@ terminal_output gfxterm
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
-menuentry 'Retroid Pocket 5' \$menuentry_id_option 'rp5' {
+EOF
+
+xmlstarlet sel -t -m "//${DEVICE}/file" \
+ -v "concat(@short, '|', @full, '|', @rotation, '|', .)" -n "${DTBXML}" | while IFS='|' read -r SHORT FULL ROTATION DTB; do
+
+ cat << EOF >> "${INSTALL}/usr/share/bootloader/EFI/BOOT/grub.cfg"
+menuentry '${FULL}' \$menuentry_id_option '${SHORT}' {
savedefault
search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:3
- devicetree /${DEVICE_DTB[0]}.dtb
-}
-menuentry 'Retroid Pocket Flip2' \$menuentry_id_option 'rpflip2' {
- savedefault
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:3
- devicetree /${DEVICE_DTB[1]}.dtb
-}
-menuentry 'Retroid Pocket Mini' \$menuentry_id_option 'rpmini' {
- savedefault
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:1
- devicetree /${DEVICE_DTB[2]}.dtb
-}
-menuentry 'Retroid Pocket Mini V2' \$menuentry_id_option 'rpminiv2' {
- savedefault
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:1
- devicetree /${DEVICE_DTB[3]}.dtb
-}
-menuentry 'Retroid Pocket 5 RECOVERY' \$menuentry_id_option 'rp5-recovery' {
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:3 recovery
- devicetree /${DEVICE_DTB[0]}.dtb
-}
-menuentry 'Retroid Pocket Flip2 RECOVERY' \$menuentry_id_option 'rpflip2-recovery' {
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:3 recovery
- devicetree /${DEVICE_DTB[1]}.dtb
-}
-menuentry 'Retroid Pocket Mini RECOVERY' \$menuentry_id_option 'rpmini-recovery' {
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:1 recovery
- devicetree /${DEVICE_DTB[2]}.dtb
-}
-menuentry 'Retroid Pocket Mini V2 RECOVERY' \$menuentry_id_option 'rpminiv2-recovery' {
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:1 recovery
- devicetree /${DEVICE_DTB[3]}.dtb
+ linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:${ROTATION}
+ devicetree /${DTB}.dtb
}
EOF
+done
+
+xmlstarlet sel -t -m "//${DEVICE}/file" \
+ -v "concat(@short, '|', @full, '|', @rotation, '|', .)" -n "${DTBXML}" | while IFS='|' read -r SHORT FULL ROTATION DTB; do
+
+ cat << EOF >> "${INSTALL}/usr/share/bootloader/EFI/BOOT/grub.cfg"
+menuentry '${FULL} RECOVERY' \$menuentry_id_option '${SHORT}-recovery' {
+ search --set -f /KERNEL
+ linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:${ROTATION} recovery
+ devicetree /${DTB}.dtb
+}
+EOF
+done
diff --git a/projects/ROCKNIX/devices/SM8250/bootloader/mkimage b/projects/ROCKNIX/devices/SM8250/bootloader/mkimage
index 6c694b02cc..16061c404d 100644
--- a/projects/ROCKNIX/devices/SM8250/bootloader/mkimage
+++ b/projects/ROCKNIX/devices/SM8250/bootloader/mkimage
@@ -3,7 +3,7 @@
mkimage_dtb() {
echo "image: copying device trees..."
- for dtb in ${DEVICE_DTB[@]}; do
+ for dtb in ${DTB[@]}; do
echo "image: copying ${dtb}.dtb..."
mcopy "${RELEASE_DIR}/3rdparty/bootloader/${dtb}.dtb" ::
done
@@ -14,5 +14,8 @@ mkimage_efi() {
mcopy -s -o "${RELEASE_DIR}/3rdparty/bootloader/EFI" ::
}
+DTBXML="${PROJECT_DIR}/${PROJECT}/bootloader/dtb.xml"
+readarray -t DTB < <(xmlstarlet sel -t -v "//dtb/${DEVICE}/${SUBDEVICE}/file" ${DTBXML})
+
mkimage_dtb
mkimage_efi
diff --git a/projects/ROCKNIX/devices/SM8250/options b/projects/ROCKNIX/devices/SM8250/options
index 8975af1e55..9aa814d052 100644
--- a/projects/ROCKNIX/devices/SM8250/options
+++ b/projects/ROCKNIX/devices/SM8250/options
@@ -24,14 +24,13 @@
esac
PARTITION_TABLE="gpt"
- DEVICE_DTB=("sm8250-retroidpocket-rp5" "sm8250-retroidpocket-flip2" "sm8250-retroidpocket-rpmini" "sm8250-retroidpocket-rpminiv2")
HW_CPU="Snapdragon 865"
# Kernel target
KERNEL_TARGET="Image"
# Additional kernel make parameters (for example to specify the u-boot loadaddress)
- KERNEL_MAKE_EXTRACMD=" $(for DTB in "${DEVICE_DTB[@]}"; do echo -n "qcom/${DTB}.dtb "; done)"
+ KERNEL_MAKE_EXTRACMD=" $(xmlstarlet sel -t -m "//dtb/${DEVICE}//file" -o "qcom/" -v "." -o ".dtb " "${PROJECT_DIR}/${PROJECT}/bootloader/dtb.xml")"
# Kernel cmdline
EXTRA_CMDLINE="quiet rootwait console=tty0 clk_ignore_unused pd_ignore_unused"
diff --git a/projects/ROCKNIX/devices/SM8550/bootloader/grub b/projects/ROCKNIX/devices/SM8550/bootloader/grub
index e86d0b66f2..4bbae185f4 100755
--- a/projects/ROCKNIX/devices/SM8550/bootloader/grub
+++ b/projects/ROCKNIX/devices/SM8550/bootloader/grub
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
-source ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options
+DTBXML="${PROJECT_DIR}/${PROJECT}/bootloader/dtb.xml"
mkdir -p "${INSTALL}/usr/share/bootloader/EFI/BOOT"
cat << EOF > "${INSTALL}/usr/share/bootloader/EFI/BOOT/grub.cfg"
@@ -32,79 +32,36 @@ set timeout_style=menu
set lang=en_US
loadfont /EFI/BOOT/dejavu-mono.pf2
set rotation=270
-set gfxmode=1920x1080
+set gfxmode=auto
insmod efi_gop
insmod gfxterm
terminal_output gfxterm
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
-menuentry 'AYN Odin2' \$menuentry_id_option 'odin2' {
- savedefault
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
- devicetree /${DEVICE_DTB[1]}.dtb
-}
-menuentry 'AYN Odin2 Portal' \$menuentry_id_option 'odin2portal' {
- savedefault
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
- devicetree /${DEVICE_DTB[0]}.dtb
-}
-menuentry 'AYN Odin2 Mini' \$menuentry_id_option 'odin2mini' {
- savedefault
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
- devicetree /${DEVICE_DTB[2]}.dtb
-}
-menuentry 'AYANEO Pocket ACE' \$menuentry_id_option 'pocketace' {
- savedefault
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
- devicetree /${DEVICE_DTB[3]}.dtb
-}
-menuentry 'AYANEO Pocket DMG' \$menuentry_id_option 'pocketdmg' {
- savedefault
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
- devicetree /${DEVICE_DTB[4]}.dtb
-}
-menuentry 'AYANEO Pocket EVO' \$menuentry_id_option 'pocketevo' {
- savedefault
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
- devicetree /${DEVICE_DTB[5]}.dtb
-}
-
-menuentry 'AYN Odin2 RECOVERY' \$menuentry_id_option 'odin2-recovery' {
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
- devicetree /${DEVICE_DTB[1]}.dtb
-}
-menuentry 'AYN Odin2 Portal RECOVERY' \$menuentry_id_option 'odin2portal-recovery' {
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
- devicetree /${DEVICE_DTB[0]}.dtb
-}
-menuentry 'AYN Odin2 Mini RECOVERY' \$menuentry_id_option 'odin2mini-recovery' {
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
- devicetree /${DEVICE_DTB[2]}.dtb
-}
-menuentry 'AYANEO Pocket ACE RECOVERY' \$menuentry_id_option 'pocketace-recovery' {
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
- devicetree /${DEVICE_DTB[3]}.dtb
-}
-menuentry 'AYANEO Pocket DMG RECOVERY' \$menuentry_id_option 'pocketdmg-recovery' {
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
- devicetree /${DEVICE_DTB[4]}.dtb
-}
-menuentry 'AYANEO Pocket EVO RECOVERY' \$menuentry_id_option 'pocketevo-recovery' {
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
- devicetree /${DEVICE_DTB[5]}.dtb
-}
-
EOF
+
+xmlstarlet sel -t -m "//${DEVICE}/file" \
+ -v "concat(@short, '|', @full, '|', .)" -n "${DTBXML}" | while IFS='|' read -r SHORT FULL DTB; do
+
+ cat << EOF >> "${INSTALL}/usr/share/bootloader/EFI/BOOT/grub.cfg"
+menuentry '${FULL}' \$menuentry_id_option '${SHORT}' {
+ savedefault
+ search --set -f /KERNEL
+ linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
+ devicetree /${DTB}.dtb
+}
+EOF
+done
+
+xmlstarlet sel -t -m "//${DEVICE}/file" \
+ -v "concat(@short, '|', @full, '|', .)" -n "${DTBXML}" | while IFS='|' read -r SHORT FULL DTB; do
+
+ cat << EOF >> "${INSTALL}/usr/share/bootloader/EFI/BOOT/grub.cfg"
+menuentry '${FULL} RECOVERY' \$menuentry_id_option '${SHORT}-recovery' {
+ search --set -f /KERNEL
+ linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} recovery
+ devicetree /${DTB}.dtb
+}
+EOF
+done
diff --git a/projects/ROCKNIX/devices/SM8550/bootloader/mkimage b/projects/ROCKNIX/devices/SM8550/bootloader/mkimage
index b4ea8b903d..e218d1c98b 100644
--- a/projects/ROCKNIX/devices/SM8550/bootloader/mkimage
+++ b/projects/ROCKNIX/devices/SM8550/bootloader/mkimage
@@ -3,7 +3,7 @@
mkimage_dtb() {
echo "image: copying device trees..."
- for dtb in ${DEVICE_DTB[@]}; do
+ for dtb in ${DTB[@]}; do
echo "image: copying ${dtb}.dtb..."
mcopy "${RELEASE_DIR}/3rdparty/bootloader/${dtb}.dtb" ::
done
@@ -24,6 +24,9 @@ mkimage_uboot() {
mcopy -s -o "${RELEASE_DIR}/3rdparty/bootloader/boot" ::
}
+DTBXML="${PROJECT_DIR}/${PROJECT}/bootloader/dtb.xml"
+readarray -t DTB < <(xmlstarlet sel -t -v "//dtb/${DEVICE}/${SUBDEVICE}/file" ${DTBXML})
+
mkimage_dtb
mkimage_efi
mkimage_linuxloader
diff --git a/projects/ROCKNIX/devices/SM8550/options b/projects/ROCKNIX/devices/SM8550/options
index 991c49f86d..46a260a7b6 100644
--- a/projects/ROCKNIX/devices/SM8550/options
+++ b/projects/ROCKNIX/devices/SM8550/options
@@ -25,14 +25,13 @@
esac
PARTITION_TABLE="gpt"
- DEVICE_DTB=("qcs8550-ayn-odin2portal" "qcs8550-ayn-odin2" "qcs8550-ayn-odin2mini" "qcs8550-ayaneo-pocketace" "qcs8550-ayaneo-pocketdmg" "qcs8550-ayaneo-pocketevo")
HW_CPU="Snapdragon 8 Gen2"
# Kernel target
KERNEL_TARGET="Image"
# Additional kernel make parameters (for example to specify the u-boot loadaddress)
- KERNEL_MAKE_EXTRACMD=" $(for DTB in "${DEVICE_DTB[@]}"; do echo -n "qcom/${DTB}.dtb "; done)"
+ KERNEL_MAKE_EXTRACMD=" $(xmlstarlet sel -t -m "//dtb/${DEVICE}//file" -o "qcom/" -v "." -o ".dtb " "${PROJECT_DIR}/${PROJECT}/bootloader/dtb.xml")"
# Kernel cmdline
EXTRA_CMDLINE="quiet rootwait console=tty0 allow_mismatched_32bit_el0 fw_devlink.strict=1 pcie_ports=compat irqaffinity=0-2 cgroup.memory=nokmem,nosocket nosoftlockup"
diff --git a/projects/ROCKNIX/packages/tools/grub/sources/SM8250/dejavu-mono.pf2 b/projects/ROCKNIX/packages/tools/grub/config/dejavu-mono.pf2
old mode 100755
new mode 100644
similarity index 100%
rename from projects/ROCKNIX/packages/tools/grub/sources/SM8250/dejavu-mono.pf2
rename to projects/ROCKNIX/packages/tools/grub/config/dejavu-mono.pf2
diff --git a/projects/ROCKNIX/packages/tools/grub/sources/SM8250/grubenv b/projects/ROCKNIX/packages/tools/grub/config/grubenv
similarity index 100%
rename from projects/ROCKNIX/packages/tools/grub/sources/SM8250/grubenv
rename to projects/ROCKNIX/packages/tools/grub/config/grubenv
diff --git a/projects/ROCKNIX/packages/tools/grub/package.mk b/projects/ROCKNIX/packages/tools/grub/package.mk
index d80deb9ade..479b61d122 100644
--- a/projects/ROCKNIX/packages/tools/grub/package.mk
+++ b/projects/ROCKNIX/packages/tools/grub/package.mk
@@ -70,6 +70,7 @@ makeinstall_target() {
search_label chain reboot loadenv test gfxterm efi_gop
mkdir -p ${INSTALL}/usr/share/bootloader/EFI/BOOT
+ cp -av ${PKG_DIR}/config/* ${INSTALL}/usr/share/bootloader/EFI/BOOT
cp -av bootaa64.efi ${INSTALL}/usr/share/bootloader/EFI/BOOT
# Create grub configuration
@@ -77,8 +78,4 @@ makeinstall_target() {
# Always install the update script
find_file_path bootloader/update.sh && cp -av ${FOUND_PATH} ${INSTALL}/usr/share/bootloader
-
- if [ -d ${PKG_DIR}/sources/${DEVICE} ]; then
- cp -av ${PKG_DIR}/sources/${DEVICE}/* ${INSTALL}/usr/share/bootloader/EFI/BOOT
- fi
}
diff --git a/projects/ROCKNIX/packages/tools/grub/sources/SM8550/dejavu-mono.pf2 b/projects/ROCKNIX/packages/tools/grub/sources/SM8550/dejavu-mono.pf2
deleted file mode 100755
index b9ffc7894f..0000000000
Binary files a/projects/ROCKNIX/packages/tools/grub/sources/SM8550/dejavu-mono.pf2 and /dev/null differ
diff --git a/projects/ROCKNIX/packages/tools/grub/sources/SM8550/grubenv b/projects/ROCKNIX/packages/tools/grub/sources/SM8550/grubenv
deleted file mode 100644
index a77303c080..0000000000
--- a/projects/ROCKNIX/packages/tools/grub/sources/SM8550/grubenv
+++ /dev/null
@@ -1,3 +0,0 @@
-# GRUB Environment Block
-# WARNING: Do not edit this file by tools other than grub-editenv!!!
-##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
\ No newline at end of file