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