From 82a117be11cbd40d4a64b4b7699b049d38107d09 Mon Sep 17 00:00:00 2001 From: "chunfei.wang" Date: Wed, 5 Aug 2026 07:39:25 +0000 Subject: [PATCH 2/7] a9: armbian support multidtb [1/1] PD#SWPL-274170 Problem: a9 armbian support 4g/8g/16g Solution: add 4g/8g/16g dtb Fixed conflicts: NA Verify: A9 Change-Id: I1cfa77c486c973513a3b952babf409415e17b4e5 Signed-off-by: chunfei.wang --- config/boards/a9-by401-6.12-bookworm-gnome.conf | 4 ++-- config/boards/a9-by401-6.12-noble-minimal.conf | 4 ++-- lib/function-img.sh | 3 ++- scripts/build-kernel.sh | 9 +++++++++ 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/config/boards/a9-by401-6.12-bookworm-gnome.conf b/config/boards/a9-by401-6.12-bookworm-gnome.conf index 2c4b55c..6cb9c7e 100644 --- a/config/boards/a9-by401-6.12-bookworm-gnome.conf +++ b/config/boards/a9-by401-6.12-bookworm-gnome.conf @@ -141,9 +141,9 @@ MODULES_INITRD="mesona9-by401-initrd" # Work name for logging WORK_BOARD="A311Y3-BY401" if [ ${HDMIONLY} = "yes" ];then - KERNEL_DEVICETREE="a9_a311y3_by401_hdmi_linux.dtb" + KERNEL_DEVICETREE="a9_a311y3_by401_4g_hdmi_linux.dtb a9_a311y3_by401_8g_hdmi_linux.dtb a9_a311y3_by401_16g_hdmi_linux.dtb a9_a311y3_by401_4g_hdmi_linux_v1.dtb a9_a311y3_by401_8g_hdmi_linux_v1.dtb a9_a311y3_by401_16g_hdmi_linux_v1.dtb" else - KERNEL_DEVICETREE="a9_a311y3_by401_linux.dtb" + KERNEL_DEVICETREE="a9_a311y3_by401_4g_linux.dtb a9_a311y3_by401_8g_linux.dtb a9_a311y3_by401_16g_linux.dtb a9_a311y3_by401_4g_linux_v1.dtb a9_a311y3_by401_8g_linux_v1.dtb a9_a311y3_by401_16g_linux_v1.dtb" fi # wifi config diff --git a/config/boards/a9-by401-6.12-noble-minimal.conf b/config/boards/a9-by401-6.12-noble-minimal.conf index fffb9c8..41820f3 100644 --- a/config/boards/a9-by401-6.12-noble-minimal.conf +++ b/config/boards/a9-by401-6.12-noble-minimal.conf @@ -125,9 +125,9 @@ MODULES_INITRD="mesona9-by401-initrd" # Work name for logging WORK_BOARD="A311Y3-BY401" if [ ${HDMIONLY} = "yes" ];then - KERNEL_DEVICETREE="a9_a311y3_by401_hdmi_linux.dtb" + KERNEL_DEVICETREE="a9_a311y3_by401_4g_hdmi_linux.dtb a9_a311y3_by401_8g_hdmi_linux.dtb a9_a311y3_by401_16g_hdmi_linux.dtb a9_a311y3_by401_4g_hdmi_linux_v1.dtb a9_a311y3_by401_8g_hdmi_linux_v1.dtb a9_a311y3_by401_16g_hdmi_linux_v1.dtb" else - KERNEL_DEVICETREE="a9_a311y3_by401_linux.dtb" + KERNEL_DEVICETREE = "a9_a311y3_by401_4g_linux.dtb a9_a311y3_by401_8g_linux.dtb a9_a311y3_by401_16g_linux.dtb a9_a311y3_by401_4g_linux_v1.dtb a9_a311y3_by401_8g_linux_v1.dtb a9_a311y3_by401_16g_linux_v1.dtb" fi # wifi config diff --git a/lib/function-img.sh b/lib/function-img.sh index d354667..56b7a70 100644 --- a/lib/function-img.sh +++ b/lib/function-img.sh @@ -1291,8 +1291,9 @@ function pack_image_platform() { display_alert "ERROR: Source file does not exist, skipping link creation for $TARGET_LOGO. ($SOURCE_LOGO)" exit 1 fi + # 检查 amlbian.dtb - SOURCE_DTB="$DTBS_DIR/$KERNEL_DEVICETREE" + SOURCE_DTB="$DTBS_DIR/multi.dtb" TARGET_DTB="$D/amlbian.dtb" if [ -e "$SOURCE_DTB" ]; then ln -sf "$SOURCE_DTB" "$TARGET_DTB" diff --git a/scripts/build-kernel.sh b/scripts/build-kernel.sh index c7a06d4..5f0fa26 100644 --- a/scripts/build-kernel.sh +++ b/scripts/build-kernel.sh @@ -440,6 +440,15 @@ function compile_kernel() { if [[ ${dtb_count} -gt 0 ]]; then export AMLBIAN_KERNEL_DTB_DIR="${dtb_staging_dir}" display_alert "COMPILE-KERNEL AMLBIAN_KERNEL_DTB_DIR=${AMLBIAN_KERNEL_DTB_DIR} (count=${dtb_count})" + + echo "SOURCE_DIR=${SOURCE_DIR}" + echo "build_dir=${build_dir}" + echo "dtb_staging_dir=${dtb_staging_dir}" + if [ $(echo "${KERNEL_DEVICETREE}" | wc -w ) -gt 1 ]; then + ${SOURCE_DIR}/../prebuilt/hosttools/kernel/dtbTool -o ${dtb_staging_dir}/multi.dtb -p ${build_dir}/scripts/dtc/ ${dtb_staging_dir}/ + else + install -m 0644 ${dtb_staging_dir}/${KERNEL_DEVICETREE} ${dtb_staging_dir}/multi.dtb + fi else display_alert "COMPILE-KERNEL No DTBs staged for packaging" fi -- 2.43.2