diff --git a/ci/base.lock.yml b/ci/base.lock.yml index b78d9be19..a9fb8c703 100644 --- a/ci/base.lock.yml +++ b/ci/base.lock.yml @@ -3,13 +3,13 @@ header: overrides: repos: oe-core: - commit: 62d2381bdee1cebb5924f8594f8a9994083d4f7d + commit: 9a25b3e72051a30794e147564028487a598ce82d bitbake: commit: 3a99c26fa581d70ed67bd08a5e0e0d0b18369a7c meta-arm: commit: 28606c721503b70e8343968731a24260cfe985bc meta-openembedded: - commit: dc0ccaa27311b3379749ecf44f98c0b5e249902e + commit: dc2335d63b279a4ee344a8b7034a61319f242101 meta-virtualization: commit: 022f4356d4a9b389f51472d40a9330aa59f6bb9a meta-audioreach: @@ -17,7 +17,7 @@ overrides: meta-selinux: commit: 7351443c6579671bcf048817438f1740ad23eaab meta-updater: - commit: fff4a58a057c26ec0a2067ea5f32acd75ef7add4 + commit: a081e4927cba1dc98e887bd8aaaa5580de7a72c5 meta-security: commit: 226839ac408223f8041cde1b1d8b762d6fbc8050 meta-dpdk: diff --git a/ci/qcom-distro.yml b/ci/qcom-distro.yml index eeca66e00..280016d60 100644 --- a/ci/qcom-distro.yml +++ b/ci/qcom-distro.yml @@ -37,6 +37,13 @@ repos: meta-selinux: url: https://git.yoctoproject.org/meta-selinux + patches: + libsepol-nativesdk: + repo: meta-qcom + path: patches/selinux/0001-libsepol-enable-nativesdk.patch + libselinux-nativesdk: + repo: meta-qcom + path: patches/selinux/0002-libselinux-enable-nativesdk.patch meta-updater: url: https://github.com/uptane/meta-updater diff --git a/classes-recipe/nhlos-license.bbclass b/classes-recipe/nhlos-license.bbclass deleted file mode 100644 index 019243e88..000000000 --- a/classes-recipe/nhlos-license.bbclass +++ /dev/null @@ -1,35 +0,0 @@ -# -# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. -# -# SPDX-License-Identifier: MIT -# -# If specified, NHLOS_LICENSE and NHLOS_LICENSE_MD5 specify the licence file -# (and the checksum) for the NHLOS binaries. - -NHLOS_LICENSE ??= "" -NHLOS_LICENSE_MD5 ??= "" - -# LICENSE needs to be set directly as base.bbclass verified it before the -# anonymous python function has a chance to kick in. -LICENSE = "${@ 'NHLOS-${BPN}' if d.getVar('NHLOS_LICENSE') else 'CLOSED'}" - -def handle_nhlos_license(d, pkgs): - if d.getVar("NHLOS_LICENSE"): - pn = d.getVar('BPN') - d.setVarFlag("NO_GENERIC_LICENSE", f"NHLOS-{pn}", '${NHLOS_LICENSE}') - d.appendVar('SRC_URI', ' file://${NHLOS_LICENSE}') - d.appendVar('LIC_FILES_CHKSUM', ' file://${NHLOS_LICENSE};md5=${NHLOS_LICENSE_MD5}') - d.appendVar('PACKAGE_BEFORE_PN', ' ${PN}-license') - - for pkg in pkgs: - # Depend on the main package to get the license file - d.appendVar("RDEPENDS:" + pkg, " ${PN}-license") - -install_nhlos_license() { - if [ -n "${NHLOS_LICENSE}" ] ; then - install -d ${D}${datadir}/${BPN} - install -m 0644 ${NHLOS_LICENSE} ${D}${datadir}/${BPN} - fi -} - -FILES:${PN}-license = "${@ '${datadir}/${BPN}' if d.getVar('NHLOS_LICENSE') else ''}" diff --git a/conf/layer.conf b/conf/layer.conf index 4d0ce399a..2a7017155 100644 --- a/conf/layer.conf +++ b/conf/layer.conf @@ -24,6 +24,8 @@ BBFILES_DYNAMIC += " \ ai:${LAYERDIR}/dynamic-layers/ai/*/*/*.bbappend \ meta-arm:${LAYERDIR}/dynamic-layers/meta-arm/*/*/*.bb \ meta-arm:${LAYERDIR}/dynamic-layers/meta-arm/*/*/*.bbappend \ + multimedia-layer:${LAYERDIR}/dynamic-layers/multimedia-layer/*/*/*.bb \ + multimedia-layer:${LAYERDIR}/dynamic-layers/multimedia-layer/*/*/*.bbappend \ networking-layer:${LAYERDIR}/dynamic-layers/networking-layer/*/*/*.bb \ networking-layer:${LAYERDIR}/dynamic-layers/networking-layer/*/*/*.bbappend \ openembedded-layer:${LAYERDIR}/dynamic-layers/openembedded-layer/*/*/*.bb \ diff --git a/dynamic-layers/ai/recipes-ml/onnxruntime/onnxruntime_%.bbappend b/dynamic-layers/ai/recipes-ml/onnxruntime/onnxruntime_%.bbappend new file mode 100644 index 000000000..b8c6ad5f6 --- /dev/null +++ b/dynamic-layers/ai/recipes-ml/onnxruntime/onnxruntime_%.bbappend @@ -0,0 +1,3 @@ +# Temporarily revert to old abseil-cpp version +DEPENDS:remove:qcom = "abseil-cpp" +DEPENDS:append:qcom = " abseil-cpp-camx" diff --git a/dynamic-layers/multimedia-layer/recipes-multimedia/webrtc-audio-processing/webrtc-audio-processing-1_%.bbappend b/dynamic-layers/multimedia-layer/recipes-multimedia/webrtc-audio-processing/webrtc-audio-processing-1_%.bbappend new file mode 100644 index 000000000..b8c6ad5f6 --- /dev/null +++ b/dynamic-layers/multimedia-layer/recipes-multimedia/webrtc-audio-processing/webrtc-audio-processing-1_%.bbappend @@ -0,0 +1,3 @@ +# Temporarily revert to old abseil-cpp version +DEPENDS:remove:qcom = "abseil-cpp" +DEPENDS:append:qcom = " abseil-cpp-camx" diff --git a/dynamic-layers/multimedia-layer/recipes-multimedia/webrtc-audio-processing/webrtc-audio-processing-2_%.bbappend b/dynamic-layers/multimedia-layer/recipes-multimedia/webrtc-audio-processing/webrtc-audio-processing-2_%.bbappend new file mode 100644 index 000000000..b8c6ad5f6 --- /dev/null +++ b/dynamic-layers/multimedia-layer/recipes-multimedia/webrtc-audio-processing/webrtc-audio-processing-2_%.bbappend @@ -0,0 +1,3 @@ +# Temporarily revert to old abseil-cpp version +DEPENDS:remove:qcom = "abseil-cpp" +DEPENDS:append:qcom = " abseil-cpp-camx" diff --git a/dynamic-layers/openembedded-layer/recipes-bsp/thermald/files/0001-thd_gddv-fix-building-on-32-bit-systems.patch b/dynamic-layers/openembedded-layer/recipes-bsp/thermald/files/0001-thd_gddv-fix-building-on-32-bit-systems.patch new file mode 100644 index 000000000..8b5603d4a --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-bsp/thermald/files/0001-thd_gddv-fix-building-on-32-bit-systems.patch @@ -0,0 +1,32 @@ +From 30251d7754fe308251747dc40328a52a6b0e0601 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Sat, 8 Aug 2026 00:27:15 +0300 +Subject: [PATCH] thd_gddv: fix building on 32-bit systems + +Fix the error caused by type mismatch: + +src/thd_gddv.cpp: In member function 'int cthd_gddv::evaluate_condition(condition&)': +src/thd_gddv.cpp:1721:39: error: format '%ld' expects argument of type 'long int', but argument 4 has type 'time_t' {aka 'long long int'} [-Werror=format=] + +Signed-off-by: Dmitry Baryshkov +Upstream-Status: Pending [waiting for approval] +--- + src/thd_gddv.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/thd_gddv.cpp b/src/thd_gddv.cpp +index e822b9f72f45..a2691594960d 100644 +--- a/src/thd_gddv.cpp ++++ b/src/thd_gddv.cpp +@@ -1718,7 +1718,7 @@ int cthd_gddv::evaluate_condition(struct condition& condition) { + return ret; + + if (condition.time) { +- thd_log_debug("time condition matched %ld \n", condition.state_entry_time); ++ thd_log_debug("time condition matched %" PRId64" \n", condition.state_entry_time); + if (condition.state_entry_time == 0) { + condition.state_entry_time = time(nullptr); + return THD_ERROR; +-- +2.47.3 + diff --git a/dynamic-layers/openembedded-layer/recipes-bsp/thermald/thermald_%.bbappend b/dynamic-layers/openembedded-layer/recipes-bsp/thermald/thermald_%.bbappend new file mode 100644 index 000000000..3bfcb3e89 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-bsp/thermald/thermald_%.bbappend @@ -0,0 +1,2 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" +SRC_URI:append:qcom = " file://0001-thd_gddv-fix-building-on-32-bit-systems.patch" diff --git a/dynamic-layers/openembedded-layer/recipes-devtools/abseil-cpp-camx/abseil-cpp-camx/0001-absl-always-use-asm-sgidefs.h.patch b/dynamic-layers/openembedded-layer/recipes-devtools/abseil-cpp-camx/abseil-cpp-camx/0001-absl-always-use-asm-sgidefs.h.patch new file mode 100644 index 000000000..6fecf2560 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-devtools/abseil-cpp-camx/abseil-cpp-camx/0001-absl-always-use-asm-sgidefs.h.patch @@ -0,0 +1,38 @@ +From 11faa06436fdeb0c9948080a11f9a99d3b5ba16c Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 9 Apr 2020 13:06:27 -0700 +Subject: [PATCH] absl: always use + +Fixes mips/musl build, since sgidefs.h is not present on all C libraries +but on linux asm/sgidefs.h is there and contains same definitions, using +that makes it portable. + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +--- + absl/base/internal/direct_mmap.h | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/absl/base/internal/direct_mmap.h b/absl/base/internal/direct_mmap.h +index 1beb2ee4..140b0697 100644 +--- a/absl/base/internal/direct_mmap.h ++++ b/absl/base/internal/direct_mmap.h +@@ -41,13 +41,9 @@ + + #ifdef __mips__ + // Include definitions of the ABI currently in use. +-#if defined(__BIONIC__) || !defined(__GLIBC__) +-// Android doesn't have sgidefs.h, but does have asm/sgidefs.h, which has the ++// bionic/musl C libs don't have sgidefs.h, but do have asm/sgidefs.h, which has the + // definitions we need. + #include +-#else +-#include +-#endif // __BIONIC__ || !__GLIBC__ + #endif // __mips__ + + // SYS_mmap and SYS_munmap are not defined in Android. +-- +2.25.1 + diff --git a/dynamic-layers/openembedded-layer/recipes-devtools/abseil-cpp-camx/abseil-cpp-camx/0002-abseil-ppc-fixes.patch b/dynamic-layers/openembedded-layer/recipes-devtools/abseil-cpp-camx/abseil-cpp-camx/0002-abseil-ppc-fixes.patch new file mode 100644 index 000000000..a0b99dd20 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-devtools/abseil-cpp-camx/abseil-cpp-camx/0002-abseil-ppc-fixes.patch @@ -0,0 +1,100 @@ +From 5891332fecd3bf707b58dda56b4b3f80583b5ef9 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 21 Sep 2024 20:53:06 +0800 +Subject: [PATCH] abseil: ppc fixes + +An all-in-one patch that fixes several issues: + +1) UnscaledCycleClock not fully implemented for ppc*-musl (disabled on musl) +2) powerpc stacktrace implementation only works on glibc (disabled on musl) +3) powerpc stacktrace implementation has ppc64 assumptions (fixed) +4) examine_stack.cpp makes glibc assumptions on powerpc (fixed) + +Sourced from void linux + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +--- + absl/base/internal/unscaledcycleclock.cc | 4 ++-- + absl/base/internal/unscaledcycleclock_config.h | 3 ++- + absl/debugging/internal/examine_stack.cc | 8 +++++++- + absl/debugging/internal/stacktrace_config.h | 2 +- + 4 files changed, 12 insertions(+), 5 deletions(-) + +diff --git a/absl/base/internal/unscaledcycleclock.cc b/absl/base/internal/unscaledcycleclock.cc +index 68f92730..5dbfaab6 100644 +--- a/absl/base/internal/unscaledcycleclock.cc ++++ b/absl/base/internal/unscaledcycleclock.cc +@@ -20,7 +20,7 @@ + #include + #endif + +-#if defined(__powerpc__) || defined(__ppc__) ++#if (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__) + #ifdef __GLIBC__ + #include + #elif defined(__FreeBSD__) +@@ -58,7 +58,7 @@ double UnscaledCycleClock::Frequency() { + return base_internal::NominalCPUFrequency(); + } + +-#elif defined(__powerpc__) || defined(__ppc__) ++#elif (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__) + + int64_t UnscaledCycleClock::Now() { + #ifdef __GLIBC__ +diff --git a/absl/base/internal/unscaledcycleclock_config.h b/absl/base/internal/unscaledcycleclock_config.h +index 43a3dabe..196a8535 100644 +--- a/absl/base/internal/unscaledcycleclock_config.h ++++ b/absl/base/internal/unscaledcycleclock_config.h +@@ -21,7 +21,8 @@ + + // The following platforms have an implementation of a hardware counter. + #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \ +- defined(__powerpc__) || defined(__ppc__) || defined(_M_IX86) || \ ++ ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \ ++ defined(_M_IX86) || \ + (defined(_M_X64) && !defined(_M_ARM64EC)) + #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1 + #else +diff --git a/absl/debugging/internal/examine_stack.cc b/absl/debugging/internal/examine_stack.cc +index 3dd6ba1a..f923b055 100644 +--- a/absl/debugging/internal/examine_stack.cc ++++ b/absl/debugging/internal/examine_stack.cc +@@ -36,6 +36,10 @@ + #include + #include + ++#if defined(__powerpc__) ++#include ++#endif ++ + #include "absl/base/attributes.h" + #include "absl/base/internal/raw_logging.h" + #include "absl/base/macros.h" +@@ -177,8 +181,10 @@ void* GetProgramCounter(void* const vuc) { + return reinterpret_cast(context->uc_mcontext.pc); + #elif defined(__powerpc64__) + return reinterpret_cast(context->uc_mcontext.gp_regs[32]); +-#elif defined(__powerpc__) ++#elif defined(__powerpc__) && defined(__GLIBC__) + return reinterpret_cast(context->uc_mcontext.uc_regs->gregs[32]); ++#elif defined(__powerpc__) ++ return reinterpret_cast((context->uc_regs)->gregs[32]); + #elif defined(__riscv) + return reinterpret_cast(context->uc_mcontext.__gregs[REG_PC]); + #elif defined(__s390__) && !defined(__s390x__) +diff --git a/absl/debugging/internal/stacktrace_config.h b/absl/debugging/internal/stacktrace_config.h +index 88949fe9..4e26a6b7 100644 +--- a/absl/debugging/internal/stacktrace_config.h ++++ b/absl/debugging/internal/stacktrace_config.h +@@ -67,7 +67,7 @@ + #elif defined(__i386__) || defined(__x86_64__) + #define ABSL_STACKTRACE_INL_HEADER \ + "absl/debugging/internal/stacktrace_x86-inl.inc" +-#elif defined(__ppc__) || defined(__PPC__) ++#elif (defined(__ppc__) || defined(__PPC__)) && defined(__GLIBC__) + #define ABSL_STACKTRACE_INL_HEADER \ + "absl/debugging/internal/stacktrace_powerpc-inl.inc" + #elif defined(__aarch64__) diff --git a/dynamic-layers/openembedded-layer/recipes-devtools/abseil-cpp-camx/abseil-cpp-camx_20260107.1.bb b/dynamic-layers/openembedded-layer/recipes-devtools/abseil-cpp-camx/abseil-cpp-camx_20260107.1.bb new file mode 100644 index 000000000..f2b21edbd --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-devtools/abseil-cpp-camx/abseil-cpp-camx_20260107.1.bb @@ -0,0 +1,62 @@ +SUMMARY = "Abseil is a cpp library like STL" +DESCRIPTION = "Abseil provides pieces missing from the C++ standard. Contains \ +additional useful libraries like algorithm, container, debugging, hash, memory, \ +meta, numeric, strings, synchronization, time, types and utility." +HOMEPAGE = "https://abseil.io/" +SECTION = "libs" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915" + +_BPN = "abseil-cpp" +_BP = "${_BPN}-${PV}" +S = "${UNPACKDIR}/${_BP}" + +SRC_URI = "https://github.com/abseil/${_BPN}/releases/download/${PV}/${_BP}.tar.gz \ + file://0001-absl-always-use-asm-sgidefs.h.patch \ + file://0002-abseil-ppc-fixes.patch \ + " +SRC_URI[sha256sum] = "4314e2a7cbac89cac25a2f2322870f343d81579756ceff7f431803c2c9090195" + +UPSTREAM_CHECK_URI = "https://github.com/abseil/abseil-cpp/releases" +UPSTREAM_CHECK_REGEX = "releases/tag/(?P\d+(\.\d+)+)" + +inherit cmake + +EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON \ + -DBUILD_TESTING=OFF \ + -DABSL_ENABLE_INSTALL=ON \ + -DCMAKE_CXX_STANDARD=17 \ + " +# riscv32-yoe-linux-ld.lld: error: undefined reference: __atomic_store_8 +# >>> referenced by /usr/lib/libabsl_flags_internal.so.2505.0.0 (disallowed by --no-allow-shlib-undefined) +LDFLAGS:append:riscv32 = " -latomic" + +SYSROOT_DIRS:append:class-nativesdk:mingw32 = " ${bindir}" + +PACKAGES_DYNAMIC += "^libabsl-camx-*" +PACKAGES_DYNAMIC:class-native = "" + +PACKAGESPLITFUNCS =+ "split_dynamic_packages" + +python split_dynamic_packages() { + libdir = d.getVar('libdir') + + libpackages = do_split_packages( + d, + root=libdir, + file_regex=r'^libabsl-camx_(.*)\.so\..*$', + output_pattern='libabsl-camx-%s', + description="abseil shared library %s", + prepend=True, + extra_depends='', + ) + if libpackages: + d.appendVar('RDEPENDS:' + d.getVar('PN'), ' ' + ' '.join(libpackages)) +} + +ALLOW_EMPTY:${PN} = "1" + +BBCLASSEXTEND = "native nativesdk" + +# Add CVE_PRODUCT to match the NVD CPE product name +CVE_PRODUCT = "abseil:common_libraries" diff --git a/dynamic-layers/openembedded-layer/recipes-kernel/crash/crash/0001-Makefile-support-cross-compiling-for-32-bit-arm.patch b/dynamic-layers/openembedded-layer/recipes-kernel/crash/crash/0001-Makefile-support-cross-compiling-for-32-bit-arm.patch deleted file mode 100644 index 102674000..000000000 --- a/dynamic-layers/openembedded-layer/recipes-kernel/crash/crash/0001-Makefile-support-cross-compiling-for-32-bit-arm.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Mon, 30 Jun 2026 00:00:00 +0000 -Subject: [PATCH] Makefile: support cross compiling for 32-bit arm - -The CONF_TARGET_ARCH cross-compilation mapping enumerates aarch64, -s390x, powerpc64, ppc64le, alpha, i386, mips, sparc64 and riscv64 but -omits 32-bit arm. As a result, building with CROSS_COMPILE=arm-* (e.g. -arm-poky-linux-gnueabi-) aborts at Makefile parse time with: - - Makefile:75: *** The current Arch(arm) does not support cross compilation. Stop. - -ARM is already a valid crash target (defs.h/configure.c), so map the -normalized "arm" arch to CONF_TARGET_ARCH=ARM like every other arch. - -Upstream-Status: Pending -Signed-off-by: Khem Raj ---- - Makefile | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/Makefile b/Makefile -index 1111111..2222222 100644 ---- a/Makefile -+++ b/Makefile -@@ -55,6 +55,8 @@ ifeq (${ARCH}, x86_64) - CONF_TARGET_ARCH := X86_64 - else ifeq (${ARCH}, aarch64) - CONF_TARGET_ARCH := ARM64 -+else ifeq (${ARCH}, arm) -+CONF_TARGET_ARCH := ARM - else ifeq (${ARCH}, s390x) - CONF_TARGET_ARCH := S390X - else ifeq (${ARCH}, powerpc64) --- -2.43.0 diff --git a/dynamic-layers/openembedded-layer/recipes-kernel/crash/crash_9.0.2.bbappend b/dynamic-layers/openembedded-layer/recipes-kernel/crash/crash_9.0.2.bbappend deleted file mode 100644 index 3edc4fb50..000000000 --- a/dynamic-layers/openembedded-layer/recipes-kernel/crash/crash_9.0.2.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" - -SRC_URI:append:qcom = " \ - file://0001-Makefile-support-cross-compiling-for-32-bit-arm.patch \ -" diff --git a/dynamic-layers/openembedded-layer/recipes-support/protobuf-camx/protobuf_6.33.6.bbappend b/dynamic-layers/openembedded-layer/recipes-support/protobuf-camx/protobuf_6.33.6.bbappend new file mode 100644 index 000000000..b8c6ad5f6 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-support/protobuf-camx/protobuf_6.33.6.bbappend @@ -0,0 +1,3 @@ +# Temporarily revert to old abseil-cpp version +DEPENDS:remove:qcom = "abseil-cpp" +DEPENDS:append:qcom = " abseil-cpp-camx" diff --git a/dynamic-layers/openembedded-layer/recipes-support/re2/re2_%.bbappend b/dynamic-layers/openembedded-layer/recipes-support/re2/re2_%.bbappend new file mode 100644 index 000000000..b8c6ad5f6 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-support/re2/re2_%.bbappend @@ -0,0 +1,3 @@ +# Temporarily revert to old abseil-cpp version +DEPENDS:remove:qcom = "abseil-cpp" +DEPENDS:append:qcom = " abseil-cpp-camx" diff --git a/lib/qcom/dtb_only_fitimage.py b/lib/qcom/dtb_only_fitimage.py index 09f53faac..986ab8cbd 100644 --- a/lib/qcom/dtb_only_fitimage.py +++ b/lib/qcom/dtb_only_fitimage.py @@ -23,15 +23,9 @@ class QcomItsNodeRoot(ItsNodeRootKernel): def __init__(self, description, address_cells, conf_prefix, mkimage=None): # We only pass the essential parameters needed for QCOM DTB-only FIT image generation # because FIT features like signing, hashing, and padding are not required here. - # Original full signature for reference: - # super().__init__(description, address_cells, host_prefix, arch, conf_prefix, - # sign_enable, sign_keydir, mkimage, mkimage_dtcopts, - # mkimage_sign, mkimage_sign_args, hash_algo, sign_algo, - # pad_algo, sign_keyname_conf, sign_individual, sign_keyname_img - super().__init__(description, address_cells, None, "arm64", conf_prefix, - False, None, mkimage, None, - None, None, None, None, - None, None, False, None) + # The fit_os value is unused since no kernel node is emitted. + super().__init__(description, address_cells, None, "arm64", None, conf_prefix, + mkimage=mkimage) self._mkimage_extra_opts = [] self._dtbs = [] diff --git a/patches/selinux/0001-libsepol-enable-nativesdk.patch b/patches/selinux/0001-libsepol-enable-nativesdk.patch new file mode 100644 index 000000000..43e871c07 --- /dev/null +++ b/patches/selinux/0001-libsepol-enable-nativesdk.patch @@ -0,0 +1,27 @@ +From acc225f1ed99213a4e3a6f6c0384498a8122d428 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Mon, 3 Aug 2026 23:50:21 +0300 +Subject: [meta-selinux][PATCH 1/2] libsepol: enable nativesdk + +Enable nativesdk class extension, letting libsepol to satisfy +dependencies of nativesdk-rpm if SELinux is enabled by the distro. + +Signed-off-by: Dmitry Baryshkov +Upstream-Status: Submitted [https://lore.kernel.org/yocto-patches/20260804114749.625810-1-dmitry.baryshkov@oss.qualcomm.com/T/#t] +--- + recipes-security/selinux/libsepol_3.10.bb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/recipes-security/selinux/libsepol_3.10.bb b/recipes-security/selinux/libsepol_3.10.bb +index 0a51aba28ee8..49cc9d256460 100644 +--- a/recipes-security/selinux/libsepol_3.10.bb ++++ b/recipes-security/selinux/libsepol_3.10.bb +@@ -17,4 +17,4 @@ DEPENDS = "flex-native" + # sections which are not affected by -ffile-prefix-map, causing buildpaths QA failure + LTO = "" + +-BBCLASSEXTEND = "native" ++BBCLASSEXTEND = "native nativesdk" +-- +2.47.3 + diff --git a/patches/selinux/0002-libselinux-enable-nativesdk.patch b/patches/selinux/0002-libselinux-enable-nativesdk.patch new file mode 100644 index 000000000..f5cfeb940 --- /dev/null +++ b/patches/selinux/0002-libselinux-enable-nativesdk.patch @@ -0,0 +1,33 @@ +From 97b3072a20f21b0ec523e788d318b912c2153fa2 Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Mon, 3 Aug 2026 23:50:21 +0300 +Subject: [meta-selinux][PATCH 2/2] libselinux: enable nativesdk + +Enable nativesdk class extension, letting libselinux to satisfy +dependencies of nativesdk-rpm if SELinux is enabled by the distro. The +binaries are not necessary for the SDK, so they are explicitly dropped. + +Signed-off-by: Dmitry Baryshkov +Upstream-Status: Submitted [https://lore.kernel.org/yocto-patches/20260804114749.625810-2-dmitry.baryshkov@oss.qualcomm.com/] +--- + recipes-security/selinux/libselinux_3.10.bb | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/recipes-security/selinux/libselinux_3.10.bb b/recipes-security/selinux/libselinux_3.10.bb +index 86c9168a002d..94f3fcdf861d 100644 +--- a/recipes-security/selinux/libselinux_3.10.bb ++++ b/recipes-security/selinux/libselinux_3.10.bb +@@ -32,4 +32,9 @@ EXTRA_OEMAKE:append:libc-musl = " FTS_LDLIBS=-lfts" + # sections which are not affected by -ffile-prefix-map, causing buildpaths QA failure + LTO = "" + +-BBCLASSEXTEND = "native" ++BBCLASSEXTEND = "native nativesdk" ++ ++do_install:append:class-nativesdk() { ++ # /sbin is hardcoded in the Makefile ++ rm -r ${D}${prefix}/sbin ++} +-- +2.47.3 + diff --git a/recipes-bsp/firmware/firmware-qcom-dragonboard-apq8060.bb b/recipes-bsp/firmware/firmware-qcom-dragonboard-apq8060.bb deleted file mode 100644 index af67aa937..000000000 --- a/recipes-bsp/firmware/firmware-qcom-dragonboard-apq8060.bb +++ /dev/null @@ -1,30 +0,0 @@ -# Specify location of the corresponding NON-HLOS.bin file by adding -# NHLOS_URI:pn-firmware-qcom-dragonboard-apq8060 = "..." to local.conf. Use -# "file://" if the file is provided locally. - -DESCRIPTION = "QCOM Firmware for Dragonboard APQ8060 board" - -LICENSE = "CLOSED" - -# dragonboard8060 firmware is unsigned, so install into generic location -FW_QCOM_NAME = "apq8060" - -FW_QCOM_LIST = "q6.mbn" - -S = "${UNPACKDIR}" - -require recipes-bsp/firmware/firmware-qcom.inc -require recipes-bsp/firmware/firmware-qcom-nhlos.inc - -unpack_nhlos_image:append() { - if [ -d ${B}/firmware/IMAGE ] ; then - mv ${B}/firmware/IMAGE ${B}/firmware/image - for file in ${B}/firmware/image/* ; do - mv "${file}" ${B}/firmware/image/`basename ${file} | tr A-Z a-z` - done - fi -} - -SPLIT_FIRMWARE_PACKAGES = " \ - linux-firmware-qcom-${FW_QCOM_NAME}-q6 \ -" diff --git a/recipes-bsp/firmware/firmware-qcom-dragonboard-apq8074.bb b/recipes-bsp/firmware/firmware-qcom-dragonboard-apq8074.bb deleted file mode 100644 index ce2c3556d..000000000 --- a/recipes-bsp/firmware/firmware-qcom-dragonboard-apq8074.bb +++ /dev/null @@ -1,23 +0,0 @@ -# Specify location of the corresponding NON-HLOS.bin file by adding -# NHLOS_URI:pn-firmware-qcom-dragonboard-apq8074 = "..." to local.conf. Use -# "file://" if the file is provided locally. - -DESCRIPTION = "QCOM Firmware for Dragonboard APQ8074 board" - -LICENSE = "CLOSED" - -# dragonboard8074 firmware is unsigned, so install into generic location -FW_QCOM_NAME = "apq8074" - -FW_QCOM_LIST = "adsp.mbn mba.mbn modem.mbn wcnss.mbn" - -S = "${UNPACKDIR}" - -require recipes-bsp/firmware/firmware-qcom.inc -require recipes-bsp/firmware/firmware-qcom-nhlos.inc - -SPLIT_FIRMWARE_PACKAGES = " \ - linux-firmware-qcom-${FW_QCOM_NAME}-audio \ - linux-firmware-qcom-${FW_QCOM_NAME}-modem \ - linux-firmware-qcom-${FW_QCOM_NAME}-wifi \ -" diff --git a/recipes-bsp/firmware/firmware-qcom-nhlos.inc b/recipes-bsp/firmware/firmware-qcom-nhlos.inc deleted file mode 100644 index 199bfab82..000000000 --- a/recipes-bsp/firmware/firmware-qcom-nhlos.inc +++ /dev/null @@ -1,88 +0,0 @@ -# Handle NON-HLOS.bin unpacking in a generic way -# Include the file to be able to dissect the image using handle_nonhlos_image() -# If NHLOS_URI is defined, the image will be dissected automatically -# -# If specified, NHLOS_LICENSE and NHLOS_LICENSE_MD5 specify the licence file -# (and the checksum) for the NHLOS binaries. -# -# Additionally PROPRIETARY_URI can be specified. Its contents will be used to -# provide additional firmware files (like Adreno or IPA), which are not a part -# of NON-HLOS.bin. - -NHLOS_URI ??= "" -PROPRIETARY_URI ??= "" - -# List all firmware files to be installed -FW_QCOM_LIST ??= "" - -DEPENDS += "pil-squasher-native mtools-native" - -# Conditionally populate SRC_URI. We have to do it here rather than in python -# script to let base.bbclass to pick up dependencies -SRC_URI += "${NHLOS_URI} ${PROPRIETARY_URI}${@ ';subdir=proprietary' if d.getVar('PROPRIETARY_URI') != '' else '' }" - -inherit nhlos-license - -python() { - handle_nhlos_license(d, d.getVar("SPLIT_FIRMWARE_PACKAGES").split()) -} - -unpack_nhlos_image() { - mkdir -p ${B}/firmware - mcopy -n -s -i "$1" ::/* ${B}/firmware/ -} - -handle_nonhlos_image() { - for fw in ${B}/firmware/image/*.mdt ; do - pil-squasher ${B}/`basename $fw mdt`mbn $fw || exit 1 - done -} - -# If the URL is the file:// URI, the whole local path will be duplicated in the UNPACKDIR. -# Otherwise we just need the last (filename) part of the path. -def get_nhlos_path(path): - from urllib.parse import urlparse - if path == "": - return "" - url = urlparse(path) - if url.scheme == "file": - return url.path - return url.path.rsplit('/', 1)[1] - -do_compile:prepend() { - if [ -z "${NHLOS_URI}" ] ; then - bbwarn "${PN}: not packaging NHLOS firmware. Please provide HNLOS_URI" - else - unpack_nhlos_image ${UNPACKDIR}/${@get_nhlos_path(d.getVar("NHLOS_URI"))} - handle_nonhlos_image - fi -} - -do_install:prepend() { - if [ -n "${NHLOS_URI}${PROPRIETARY_URI}" ] ; then - install_nhlos_license - - install -d ${D}${FW_QCOM_PATH} - - for fw in ${FW_QCOM_LIST} ; do - if [ -r ${S}/proprietary/$fw ] ; then - install -m 0644 ${S}/proprietary/$fw ${D}${FW_QCOM_PATH} - elif [ -r ${B}/$fw ] ; then - install -m 0644 ${B}/$fw ${D}${FW_QCOM_PATH} - elif [ -r ${B}/firmware/image/$fw ] ; then - if [ -d ${B}/firmware/image/$fw ] ; then - find ${B}/firmware/image/$fw -type f | while read f ; do - relpath="${f#${B}/firmware/image/}" - install -Dm 0644 "$f" ${D}${FW_QCOM_PATH}/"$relpath" - done - else - install -m 0644 ${B}/firmware/image/$fw ${D}${FW_QCOM_PATH} - fi - fi - done - fi -} - -# Make sure that there is nothing in the meta-package, all firmware must go to -# a particular package. -FILES:${PN} = "" diff --git a/recipes-bsp/firmware/firmware-qcom-qar2130p.bb b/recipes-bsp/firmware/firmware-qcom-qar2130p.bb deleted file mode 100644 index 527111b64..000000000 --- a/recipes-bsp/firmware/firmware-qcom-qar2130p.bb +++ /dev/null @@ -1,44 +0,0 @@ -# Specify location of the corresponding NON-HLOS.bin file by adding -# NHLOS_URI:pn-firmware-qcom-sar2130p = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "QCOM Firmware for QAR2130P device" - -LICENSE = "CLOSED" - -FW_QCOM_NAME = "sar2130p" - -FW_QCOM_LIST = "\ - a620_zap.mbn \ - adsp.mbn adsp_dtb.mbn adspr.jsn adsps.jsn adspua.jsn \ - cdsp.mbn cdsp_dtb.mbn cdspr.jsn \ - ipa_fws.mbn \ -" - -S = "${UNPACKDIR}" - -require recipes-bsp/firmware/firmware-qcom.inc -require recipes-bsp/firmware/firmware-qcom-nhlos.inc - -SPLIT_FIRMWARE_PACKAGES = "\ - linux-firmware-qcom-${FW_QCOM_NAME}-adreno \ - linux-firmware-qcom-${FW_QCOM_NAME}-audio \ - linux-firmware-qcom-${FW_QCOM_NAME}-compute \ - linux-firmware-qcom-${FW_QCOM_NAME}-ipa \ - linux-firmware-qcom-adreno-gmu-a621 \ -" - -do_install:prepend() { - if [ -r "${UNPACKDIR}/proprietary/a621_gmu.bin" ] ; then - install -d ${D}${FW_QCOM_BASE_PATH} - install -m 0644 ${UNPACKDIR}/proprietary/a621_gmu.bin ${D}${FW_QCOM_BASE_PATH} - fi - - if [ -n "${NHLOS_URI}" ] ; then - install -d ${D}/${nonarch_base_libdir}/firmware/ath12k/WCN7850/hw2.0/ - install -m 0644 ${UNPACKDIR}/firmware/image/kiwi/bdwlan.e30 ${D}/${nonarch_base_libdir}/firmware/ath12k/WCN7850/hw2.0/board.bin - fi -} - -FILES:linux-firmware-qcom-adreno-gmu-a621 += "${FW_QCOM_BASE_PATH}/a621_gmu.bin*" -FILES:${PN} += "${nonarch_base_libdir}/firmware/ath12k" diff --git a/recipes-bsp/firmware/firmware-qcom-qcm6490-idp.bb b/recipes-bsp/firmware/firmware-qcom-qcm6490-idp.bb index b88dcb7df..34e9be755 100644 --- a/recipes-bsp/firmware/firmware-qcom-qcm6490-idp.bb +++ b/recipes-bsp/firmware/firmware-qcom-qcm6490-idp.bb @@ -1,10 +1,9 @@ -# Specify location of the corresponding NON-HLOS.bin file by adding -# NHLOS_URI:pn-firmware-qcom-qcm6490-idp = "..." to local.conf. Use "file://" -# if the file is provided locally. +# Placeholder recipe, actual modem firmware is provided in a separate layer DESCRIPTION = "QCOM Firmware for QCM6490-IDP board" -LICENSE = "CLOSED" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" FW_QCOM_NAME = "qcm6490" @@ -15,8 +14,9 @@ FW_QCOM_LIST = "\ S = "${UNPACKDIR}" require recipes-bsp/firmware/firmware-qcom.inc -require recipes-bsp/firmware/firmware-qcom-nhlos.inc SPLIT_FIRMWARE_PACKAGES = "\ linux-firmware-qcom-${FW_QCOM_NAME}-modem \ " + +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-modem = "" diff --git a/recipes-bsp/firmware/firmware-qcom-rb3gen2.bb b/recipes-bsp/firmware/firmware-qcom-rb3gen2.bb index 6862048ea..8f55d33bb 100644 --- a/recipes-bsp/firmware/firmware-qcom-rb3gen2.bb +++ b/recipes-bsp/firmware/firmware-qcom-rb3gen2.bb @@ -1,10 +1,9 @@ -# Specify location of the corresponding NON-HLOS.bin file by adding -# NHLOS_URI:pn-firmware-qcom-rb3gen2 = "..." to local.conf. Use "file://" -# if the file is provided locally. +# Placeholder recipe, actual modem firmware is provided in a separate layer DESCRIPTION = "QCOM Firmware for Rb3 Gen2 board" -LICENSE = "CLOSED" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" FW_QCOM_NAME = "qcs6490" @@ -15,8 +14,9 @@ FW_QCOM_LIST = "\ S = "${UNPACKDIR}" require recipes-bsp/firmware/firmware-qcom.inc -require recipes-bsp/firmware/firmware-qcom-nhlos.inc SPLIT_FIRMWARE_PACKAGES = "\ linux-firmware-qcom-${FW_QCOM_NAME}-modem \ " + +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-modem = "" diff --git a/recipes-bsp/firmware/firmware-qcom-sdm845-hdk.bb b/recipes-bsp/firmware/firmware-qcom-sdm845-hdk.bb deleted file mode 100644 index 5db4e31f4..000000000 --- a/recipes-bsp/firmware/firmware-qcom-sdm845-hdk.bb +++ /dev/null @@ -1,26 +0,0 @@ -# Specify location of the corresponding NON-HLOS.bin file by adding -# NHLOS_URI:pn-firmware-qcom-sdm845-hdk = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "QCOM Firmware for SDM845 HDK (aka HDK845) board" - -LICENSE = "CLOSED" - -FW_QCOM_NAME = "sdm845-hdk" -FW_QCOM_SUBDIR = "sdm845/Qualcomm/SDM845-HDK" - -# ADSP, CDSP, modem and WLAN are a part of linux-firmware -FW_QCOM_LIST = "\ - ipa_fws.mbn \ - slpi.mbn slpir.jsn \ -" - -S = "${UNPACKDIR}" - -require recipes-bsp/firmware/firmware-qcom.inc -require recipes-bsp/firmware/firmware-qcom-nhlos.inc - -SPLIT_FIRMWARE_PACKAGES = "\ - linux-firmware-qcom-${FW_QCOM_NAME}-ipa \ - linux-firmware-qcom-${FW_QCOM_NAME}-sensors \ -" diff --git a/recipes-bsp/firmware/firmware-qcom-sm8150-hdk.bb b/recipes-bsp/firmware/firmware-qcom-sm8150-hdk.bb deleted file mode 100644 index 54b0ece2b..000000000 --- a/recipes-bsp/firmware/firmware-qcom-sm8150-hdk.bb +++ /dev/null @@ -1,40 +0,0 @@ -# Specify location of the corresponding NON-HLOS.bin file by adding -# NHLOS_URI:pn-firmware-qcom-sm8350-hdk = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "QCOM Firmware for SM8150 HDK (aka HDK855) board" - -LICENSE = "CLOSED" - -FW_QCOM_NAME = "sm8150" - -FW_QCOM_LIST = "\ - adsp.mbn adspr.jsn adspua.jsn \ - cdsp.mbn cdspr.jsn \ - ipa_fws.mbn \ - modem.mbn modemuw.jsn \ - slpi.mbn slpir.jsn \ - wlanmdsp.mbn \ -" - -S = "${UNPACKDIR}" - -require recipes-bsp/firmware/firmware-qcom.inc -require recipes-bsp/firmware/firmware-qcom-nhlos.inc - -SPLIT_FIRMWARE_PACKAGES = "\ - linux-firmware-qcom-${FW_QCOM_NAME}-audio \ - linux-firmware-qcom-${FW_QCOM_NAME}-compute \ - linux-firmware-qcom-${FW_QCOM_NAME}-ipa \ - linux-firmware-qcom-${FW_QCOM_NAME}-modem \ - linux-firmware-qcom-${FW_QCOM_NAME}-sensors \ - linux-firmware-qcom-${FW_QCOM_NAME}-venus \ - linux-firmware-qcom-${FW_QCOM_NAME}-wifi \ -" - -do_install:prepend() { - if [ -r "${S}/proprietary/venus.mbn" ] ; then - install -d ${D}${FW_QCOM_BASE_PATH}/vpu - install -m 0644 ${S}/proprietary/venus.mbn ${D}${FW_QCOM_BASE_PATH}/vpu/vpu10_2v.mbn - fi -} diff --git a/recipes-bsp/firmware/firmware-qcom-sm8350-hdk.bb b/recipes-bsp/firmware/firmware-qcom-sm8350-hdk.bb deleted file mode 100644 index 5486381aa..000000000 --- a/recipes-bsp/firmware/firmware-qcom-sm8350-hdk.bb +++ /dev/null @@ -1,40 +0,0 @@ -# Specify location of the corresponding NON-HLOS.bin file by adding -# NHLOS_URI:pn-firmware-qcom-sm8350-hdk = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "QCOM Firmware for SM8350 HDK (aka HDK888) board" - -LICENSE = "CLOSED" - -FW_QCOM_NAME = "sm8350" - -FW_QCOM_LIST = "\ - adsp.mbn adspr.jsn adspua.jsn battmgr.jsn \ - cdsp.mbn cdspr.jsn \ - ipa_fws.mbn \ - modem.mbn modemr.jsn \ - slpi.mbn slpir.jsn \ -" - -S = "${UNPACKDIR}" - -require recipes-bsp/firmware/firmware-qcom.inc -require recipes-bsp/firmware/firmware-qcom-nhlos.inc - -SPLIT_FIRMWARE_PACKAGES = "\ - linux-firmware-qcom-${FW_QCOM_NAME}-audio \ - linux-firmware-qcom-${FW_QCOM_NAME}-compute \ - linux-firmware-qcom-${FW_QCOM_NAME}-ipa \ - linux-firmware-qcom-${FW_QCOM_NAME}-modem \ - linux-firmware-qcom-${FW_QCOM_NAME}-sensors \ - linux-firmware-qcom-${FW_QCOM_NAME}-venus \ -" - -# Different vpu20_4v.mbn files are not compatible and support different -# platforms. Use platform-specific name for the file in generic location. -do_install:prepend() { - if [ -r "${S}/proprietary/vpu20_4v.mbn" ] ; then - install -d ${D}${FW_QCOM_BASE_PATH}/vpu - install -m 0644 ${S}/proprietary/vpu20_4v.mbn ${D}${FW_QCOM_BASE_PATH}/vpu/vpu20_4v_sm8350.mbn - fi -} diff --git a/recipes-bsp/firmware/firmware-qcom-sm8450-hdk.bb b/recipes-bsp/firmware/firmware-qcom-sm8450-hdk.bb deleted file mode 100644 index 1931138c0..000000000 --- a/recipes-bsp/firmware/firmware-qcom-sm8450-hdk.bb +++ /dev/null @@ -1,40 +0,0 @@ -# Specify location of the corresponding NON-HLOS.bin file by adding -# NHLOS_URI:pn-firmware-qcom-sm8450-hdk = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "QCOM Firmware for SM8450 HDK board" - -LICENSE = "CLOSED" - -FW_QCOM_NAME = "sm8450" - -FW_QCOM_LIST = "\ - adsp.mbn adspr.jsn adspua.jsn battmgr.jsn \ - cdsp.mbn cdspr.jsn \ - ipa_fws.mbn \ - modem.mbn modemr.jsn \ - slpi.mbn slpir.jsn slpius.jsn \ -" - -S = "${UNPACKDIR}" - -require recipes-bsp/firmware/firmware-qcom.inc -require recipes-bsp/firmware/firmware-qcom-nhlos.inc - -SPLIT_FIRMWARE_PACKAGES = "\ - linux-firmware-qcom-${FW_QCOM_NAME}-audio \ - linux-firmware-qcom-${FW_QCOM_NAME}-compute \ - linux-firmware-qcom-${FW_QCOM_NAME}-ipa \ - linux-firmware-qcom-${FW_QCOM_NAME}-modem \ - linux-firmware-qcom-${FW_QCOM_NAME}-sensors \ - linux-firmware-qcom-${FW_QCOM_NAME}-venus \ -" - -# Different vpu20_4v.mbn files are not compatible and support different -# platforms. Use platform-specific name for the file in generic location. -do_install:prepend() { - if [ -r "${S}/proprietary/vpu20_4v.mbn" ] ; then - install -d ${D}${FW_QCOM_BASE_PATH}/vpu - install -m 0644 ${S}/proprietary/vpu20_4v.mbn ${D}${FW_QCOM_BASE_PATH}/vpu/vpu20_4v_sm8450.mbn - fi -} diff --git a/recipes-bsp/firmware/firmware-qcom-sm8550-hdk.bb b/recipes-bsp/firmware/firmware-qcom-sm8550-hdk.bb deleted file mode 100644 index 20ed9b0c5..000000000 --- a/recipes-bsp/firmware/firmware-qcom-sm8550-hdk.bb +++ /dev/null @@ -1,28 +0,0 @@ -# Specify location of the corresponding NON-HLOS.bin file by adding -# NHLOS_URI:pn-firmware-qcom-sm8450-hdk = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "QCOM Firmware for SM8550 HDK board" - -LICENSE = "CLOSED" - -FW_QCOM_NAME = "sm8550" - -FW_QCOM_LIST = "\ - adsp.mbn adsp_dtb.mbn adspr.jsn adsps.jsn adspua.jsn battmgr.jsn \ - cdsp.mbn cdsp_dtb.mbn cdspr.jsn \ - ipa_fws.mbn \ - modem.mbn modemr.jsn \ -" - -S = "${UNPACKDIR}" - -require recipes-bsp/firmware/firmware-qcom.inc -require recipes-bsp/firmware/firmware-qcom-nhlos.inc - -SPLIT_FIRMWARE_PACKAGES = "\ - linux-firmware-qcom-${FW_QCOM_NAME}-audio \ - linux-firmware-qcom-${FW_QCOM_NAME}-compute \ - linux-firmware-qcom-${FW_QCOM_NAME}-ipa \ - linux-firmware-qcom-${FW_QCOM_NAME}-modem \ -" diff --git a/recipes-bsp/firmware/firmware-qcom-sm8650-hdk.bb b/recipes-bsp/firmware/firmware-qcom-sm8650-hdk.bb deleted file mode 100644 index 43a74c205..000000000 --- a/recipes-bsp/firmware/firmware-qcom-sm8650-hdk.bb +++ /dev/null @@ -1,26 +0,0 @@ -# Specify location of the corresponding NON-HLOS.bin file by adding -# NHLOS_URI:pn-firmware-qcom-sm8450-hdk = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "QCOM Firmware for SM8650 HDK board" - -LICENSE = "CLOSED" - -FW_QCOM_NAME = "sm8650" - -FW_QCOM_LIST = "\ - adsp.mbn adsp_dtb.mbn adspr.jsn adsps.jsn adspua.jsn battmgr.jsn \ - cdsp.mbn cdsp_dtb.mbn cdspr.jsn \ - ipa_fws.mbn \ -" - -S = "${UNPACKDIR}" - -require recipes-bsp/firmware/firmware-qcom.inc -require recipes-bsp/firmware/firmware-qcom-nhlos.inc - -SPLIT_FIRMWARE_PACKAGES = "\ - linux-firmware-qcom-${FW_QCOM_NAME}-audio \ - linux-firmware-qcom-${FW_QCOM_NAME}-compute \ - linux-firmware-qcom-${FW_QCOM_NAME}-ipa \ -" diff --git a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-qar2130p.bb b/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-qar2130p.bb deleted file mode 100644 index b81cb37a8..000000000 --- a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-qar2130p.bb +++ /dev/null @@ -1,18 +0,0 @@ -# Specify location of the corresponding dspso.bin file by adding -# DSPSO_URI:pn-firmware-qcom-qar2130p = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "Hexagon DSP binaries for QAR2130P device" - -DSPSO_SOC = "sar2130p" -DSPSO_DEVICE = "QAR2130P" -DSPSO_DEVICE_MODEL = "Qualcomm Snapdragon AR2 Gen1 Smart Viewer Development Kit" - -LICENSE = "CLOSED" -DEPENDS = "firmware-${DSP_PKG_NAME}" -S = "${UNPACKDIR}" - -require hexagon-dspso.inc - -SKIP_FILEDEPS:hexagon-dsp-binaries-${DSP_PKG_NAME}-adsp = "1" -SKIP_FILEDEPS:hexagon-dsp-binaries-${DSP_PKG_NAME}-cdsp = "1" diff --git a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sdm845-hdk.bb b/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sdm845-hdk.bb deleted file mode 100644 index be07badad..000000000 --- a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sdm845-hdk.bb +++ /dev/null @@ -1,23 +0,0 @@ -# Specify location of the corresponding dspso.bin file by adding -# DSPSO_URI:pn-firmware-qcom-sm8150-hdk = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "Hexagon DSP binaries for SDM845 HDK (aka HDK845) board" - -DSPSO_SOC = "sdm845" -DSPSO_DEVICE = "SDM845-HDK" - -# Config for SDM845-HDK is a part of the main repo -DSPSO_CONFIG = "hexagon-dsp-binaries-qualcomm-sdm845-hdk-config" - -LICENSE = "CLOSED" -DEPENDS = "firmware-${DSP_PKG_NAME}" -S = "${UNPACKDIR}" - -# Only package SLPI binaries, ADSP and CDSP are provided by -# hexagon-dsp-binaries -DSPSO_PACKAGES = " \ - hexagon-dsp-binaries-${DSP_PKG_NAME}-sdsp \ -" - -require hexagon-dspso.inc diff --git a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8150-hdk.bb b/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8150-hdk.bb deleted file mode 100644 index 35faaf40b..000000000 --- a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8150-hdk.bb +++ /dev/null @@ -1,17 +0,0 @@ -# Specify location of the corresponding dspso.bin file by adding -# DSPSO_URI:pn-firmware-qcom-sm8150-hdk = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "Hexagon DSP binaries for SM8150 HDK (aka HDK855) board" - -DSPSO_SOC = "sm8150" -DSPSO_DEVICE = "SM8150-HDK" -DSPSO_DEVICE_MODEL = "Qualcomm Technologies, Inc. SM8150 HDK" - -LICENSE = "CLOSED" -DEPENDS = "firmware-${DSP_PKG_NAME}" -S = "${UNPACKDIR}" - -require hexagon-dspso.inc - -SKIP_FILEDEPS:hexagon-dsp-binaries-${DSP_PKG_NAME}-cdsp = "1" diff --git a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8350-hdk.bb b/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8350-hdk.bb deleted file mode 100644 index 7e77389ab..000000000 --- a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8350-hdk.bb +++ /dev/null @@ -1,17 +0,0 @@ -# Specify location of the corresponding dspso.bin file by adding -# DSPSO_URI:pn-firmware-qcom-sm8350-hdk = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "Hexagon DSP binaries for SM8350 HDK (aka HDK888) board" - -DSPSO_SOC = "sm8350" -DSPSO_DEVICE = "SM8350-HDK" -DSPSO_DEVICE_MODEL = "Qualcomm Technologies, Inc. SM8350 HDK" - -LICENSE = "CLOSED" -DEPENDS = "firmware-${DSP_PKG_NAME}" -S = "${UNPACKDIR}" - -require hexagon-dspso.inc - -SKIP_FILEDEPS:hexagon-dsp-binaries-${DSP_PKG_NAME}-cdsp = "1" diff --git a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8450-hdk.bb b/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8450-hdk.bb deleted file mode 100644 index 33a7207c1..000000000 --- a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8450-hdk.bb +++ /dev/null @@ -1,18 +0,0 @@ -# Specify location of the corresponding dspso.bin file by adding -# DSPSO_URI:pn-firmware-qcom-sm8450-hdk = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "Hexagon DSP binaries for SM8450 HDK board" - -DSPSO_SOC = "sm8450" -DSPSO_DEVICE = "SM8450-HDK" -DSPSO_DEVICE_MODEL = "Qualcomm Technologies, Inc. SM8450 HDK" - -LICENSE = "CLOSED" -DEPENDS = "firmware-${DSP_PKG_NAME}" -S = "${UNPACKDIR}" - -require hexagon-dspso.inc - -SKIP_FILEDEPS:hexagon-dsp-binaries-${DSP_PKG_NAME}-adsp = "1" -SKIP_FILEDEPS:hexagon-dsp-binaries-${DSP_PKG_NAME}-cdsp = "1" diff --git a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8550-hdk.bb b/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8550-hdk.bb deleted file mode 100644 index 59bdefb47..000000000 --- a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8550-hdk.bb +++ /dev/null @@ -1,18 +0,0 @@ -# Specify location of the corresponding dspso.bin file by adding -# DSPSO_URI:pn-firmware-qcom-sm8550-hdk = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "Hexagon DSP binaries for SM8550 HDK board" - -DSPSO_SOC = "sm8550" -DSPSO_DEVICE = "SM8550-HDK" -DSPSO_DEVICE_MODEL = "Qualcomm Technologies, Inc. SM8550 HDK" - -LICENSE = "CLOSED" -DEPENDS = "firmware-${DSP_PKG_NAME}" -S = "${UNPACKDIR}" - -require hexagon-dspso.inc - -SKIP_FILEDEPS:hexagon-dsp-binaries-${DSP_PKG_NAME}-adsp = "1" -SKIP_FILEDEPS:hexagon-dsp-binaries-${DSP_PKG_NAME}-cdsp = "1" diff --git a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8650-hdk.bb b/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8650-hdk.bb deleted file mode 100644 index 7f4049b65..000000000 --- a/recipes-bsp/hexagon-dspso/hexagon-dspso-qcom-sm8650-hdk.bb +++ /dev/null @@ -1,18 +0,0 @@ -# Specify location of the corresponding dspso.bin file by adding -# DSPSO_URI:pn-firmware-qcom-sm8650-hdk = "..." to local.conf. Use "file://" -# if the file is provided locally. - -DESCRIPTION = "Hexagon DSP binaries for SM8650 HDK board" - -DSPSO_SOC = "sm8650" -DSPSO_DEVICE = "SM8650-HDK" -DSPSO_DEVICE_MODEL = "Qualcomm Technologies, Inc. SM8650 HDK" - -LICENSE = "CLOSED" -DEPENDS = "firmware-${DSP_PKG_NAME}" -S = "${UNPACKDIR}" - -require hexagon-dspso.inc - -SKIP_FILEDEPS:hexagon-dsp-binaries-${DSP_PKG_NAME}-adsp = "1" -SKIP_FILEDEPS:hexagon-dsp-binaries-${DSP_PKG_NAME}-cdsp = "1" diff --git a/recipes-bsp/hexagon-dspso/hexagon-dspso.inc b/recipes-bsp/hexagon-dspso/hexagon-dspso.inc deleted file mode 100644 index 6a76cd254..000000000 --- a/recipes-bsp/hexagon-dspso/hexagon-dspso.inc +++ /dev/null @@ -1,120 +0,0 @@ -# Handle dspso.bin unpacking in a generic way -# If DSPSO_URI is defined, the image will be dissected automatically - -DSPSO_URI ??= "" - -DSPSO_SOC ?= "unknown" -DSPSO_VENDOR ?= "Qualcomm" -DSPSO_DEVICE ?= "Unknown" - -DSPSO_PACKAGES ?= " \ - hexagon-dsp-binaries-${DSP_PKG_NAME}-adsp \ - hexagon-dsp-binaries-${DSP_PKG_NAME}-cdsp \ - hexagon-dsp-binaries-${DSP_PKG_NAME}-sdsp \ -" - -# Conditionally populate SRC_URI. We have to do it here rather than in python -# script to let base.bbclass to pick up dependencies -SRC_URI += "${DSPSO_URI}" - -# Extract package name part -DSP_PKG_NAME ?= "${@d.getVar("PN").split("hexagon-dspso-")[-1]}" - -DSP_QCOM_BASE_PATH = "${datadir}/qcom" -DSP_QCOM_CONF_D_PATH = "${DSP_QCOM_BASE_PATH}/conf.d" -DSP_QCOM_SUBPATH = "${DSPSO_SOC}/${DSPSO_VENDOR}/${DSPSO_DEVICE}" -DSP_QCOM_PATH = "${DSP_QCOM_BASE_PATH}/${DSP_QCOM_SUBPATH}" - -DSPSO_CONFIG ?= "hexagon-dsp-binaries-${DSP_PKG_NAME}-config" - -DEPENDS += "e2fsprogs-native" - -inherit allarch - -PACKAGES:append = " \ - hexagon-dsp-binaries-${DSP_PKG_NAME}-config \ - ${DSPSO_PACKAGES} \ -" - -inherit nhlos-license - -python() { - handle_nhlos_license(d, d.getVar("DSPSO_PACKAGES").split()) -} - -RDEPENDS:hexagon-dsp-binaries-${DSP_PKG_NAME}-adsp = "${DSPSO_CONFIG}" -RDEPENDS:hexagon-dsp-binaries-${DSP_PKG_NAME}-cdsp = "${DSPSO_CONFIG}" -RDEPENDS:hexagon-dsp-binaries-${DSP_PKG_NAME}-sdsp = "${DSPSO_CONFIG}" - -FILES:hexagon-dsp-binaries-${DSP_PKG_NAME}-adsp = "${DSP_QCOM_PATH}/dsp/adsp" -FILES:hexagon-dsp-binaries-${DSP_PKG_NAME}-cdsp = "${DSP_QCOM_PATH}/dsp/cdsp" -FILES:hexagon-dsp-binaries-${DSP_PKG_NAME}-config = "${DSP_QCOM_CONF_D_PATH}" -FILES:hexagon-dsp-binaries-${DSP_PKG_NAME}-sdsp = "${DSP_QCOM_PATH}/dsp/sdsp" - -INSANE_SKIP:hexagon-dsp-binaries-${DSP_PKG_NAME}-adsp = "arch libdir file-rdeps textrel" -INSANE_SKIP:hexagon-dsp-binaries-${DSP_PKG_NAME}-cdsp = "arch libdir file-rdeps textrel" -INSANE_SKIP:hexagon-dsp-binaries-${DSP_PKG_NAME}-sdsp = "arch libdir file-rdeps textrel" - -# If the URL is the file:// URI, the whole local path will be duplicated in the UNPACKDIR. -# Otherwise we just need the last (filename) part of the path. -def get_dspso_path(path): - from urllib.parse import urlparse - if path == "": - return "" - url = urlparse(path) - if url.scheme == "file": - return url.path - return url.path.rsplit('/', 1)[1] - -handle_dspso_image() { - for path in adsp cdsp sdsp ; do - case "${PACKAGES}" in - *${path}*) - ;; - *) - continue - ;; - esac - mkdir -p ${B}/dspso-$path - debugfs $1 -R "ls -p /$path" | \ - grep '^/[0-9]*/100' | cut -d/ -f6 | \ - while read name ; do echo "dump /$path/$name ${B}/dspso-$path/$name" ; done | \ - debugfs ${1} - done -} - -generate_config() { - if [ -n "${DSPSO_DEVICE_MODEL}" ] ; then - cat >> ${B}/${BPN}.yaml << EOF -machines: - ${DSPSO_DEVICE_MODEL}: - DSP_LIBRARY_PATH: ${DSP_QCOM_SUBPATH} -EOF - fi -} - -do_compile:prepend() { - if [ -z "${DSPSO_URI}" ] ; then - bbwarn "${PN}: not packaging DSPSO firmware. Please provide DSPSO_URI" - else - handle_dspso_image ${UNPACKDIR}/${@get_dspso_path(d.getVar("DSPSO_URI"))} - fi - generate_config -} - -do_install:prepend() { - if [ -n "${DSPSO_URI}" ] ; then - install_nhlos_license - fi - if [ -f "${B}/${BPN}.yaml" ] ; then - install -d ${D}${DSP_QCOM_CONF_D_PATH} - install -m 0644 ${B}/${BPN}.yaml ${D}${DSP_QCOM_CONF_D_PATH} - fi - ls ${B}/dspso-adsp/* && mkdir -p ${D}${DSP_QCOM_PATH}/dsp/adsp && install -m 0644 ${B}/dspso-adsp/* ${D}${DSP_QCOM_PATH}/dsp/adsp - ls ${B}/dspso-cdsp/* && mkdir -p ${D}${DSP_QCOM_PATH}/dsp/cdsp && install -m 0644 ${B}/dspso-cdsp/* ${D}${DSP_QCOM_PATH}/dsp/cdsp - ls ${B}/dspso-sdsp/* && mkdir -p ${D}${DSP_QCOM_PATH}/dsp/sdsp && install -m 0644 ${B}/dspso-sdsp/* ${D}${DSP_QCOM_PATH}/dsp/sdsp -} - -# Make sure that there is nothing in the meta-package, all firmware must go to -# a particular package. -FILES:${PN} = "" diff --git a/recipes-bsp/images/initramfs-firmware-db8074-image.bb b/recipes-bsp/images/initramfs-firmware-db8074-image.bb deleted file mode 100644 index 54e51eb38..000000000 --- a/recipes-bsp/images/initramfs-firmware-db8074-image.bb +++ /dev/null @@ -1,7 +0,0 @@ -DESCRIPTION = "Tiny ramdisk image with Dragonboard APQ8074 firmware files" - -PACKAGE_INSTALL += " \ - packagegroup-dragonboard-apq8074-firmware \ -" - -require initramfs-firmware-image.inc diff --git a/recipes-bsp/images/initramfs-firmware-mega-image.bb b/recipes-bsp/images/initramfs-firmware-mega-image.bb index 70b000b7e..430b0a2a2 100644 --- a/recipes-bsp/images/initramfs-firmware-mega-image.bb +++ b/recipes-bsp/images/initramfs-firmware-mega-image.bb @@ -7,7 +7,6 @@ PACKAGE_INSTALL = " \ # Qualcomm Dragonboard / Robotics platforms PACKAGE_INSTALL += " \ - packagegroup-dragonboard-apq8074-firmware \ packagegroup-dragonboard410c-firmware \ packagegroup-dragonboard820c-firmware \ packagegroup-dragonboard845c-firmware \ @@ -37,24 +36,4 @@ PACKAGE_INSTALL += " \ packagegroup-sa8775p-ride-hexagon-dsp-binaries \ " -# Qualcomm HDKs -PACKAGE_INSTALL += " \ - packagegroup-sm8150-hdk-firmware \ - packagegroup-sm8350-hdk-firmware \ - packagegroup-sm8450-hdk-firmware \ - packagegroup-sm8550-hdk-firmware \ - packagegroup-sm8650-hdk-firmware \ - packagegroup-sm8150-hdk-hexagon-dsp-binaries \ - packagegroup-sm8350-hdk-hexagon-dsp-binaries \ - packagegroup-sm8450-hdk-hexagon-dsp-binaries \ - packagegroup-sm8550-hdk-hexagon-dsp-binaries \ - packagegroup-sm8650-hdk-hexagon-dsp-binaries \ -" - -# Other Qualcomm DevKits -PACKAGE_INSTALL += " \ - packagegroup-qar2130p-firmware \ - packagegroup-qar2130p-hexagon-dsp-binaries \ -" - require initramfs-firmware-image.inc diff --git a/recipes-bsp/images/initramfs-firmware-qar2130p-image.bb b/recipes-bsp/images/initramfs-firmware-qar2130p-image.bb deleted file mode 100644 index dd3cd2d51..000000000 --- a/recipes-bsp/images/initramfs-firmware-qar2130p-image.bb +++ /dev/null @@ -1,10 +0,0 @@ -DESCRIPTION = "Tiny ramdisk image with QAR2130P devices firmware files" - -PACKAGE_INSTALL += " \ - packagegroup-qar2130p-firmware \ -" - -BAD_RECOMMENDATIONS = " \ -" - -require initramfs-firmware-image.inc diff --git a/recipes-bsp/images/initramfs-firmware-sdm845-hdk-image.bb b/recipes-bsp/images/initramfs-firmware-sdm845-hdk-image.bb deleted file mode 100644 index 613e5df86..000000000 --- a/recipes-bsp/images/initramfs-firmware-sdm845-hdk-image.bb +++ /dev/null @@ -1,7 +0,0 @@ -DESCRIPTION = "Tiny ramdisk image with SDM845 HDK devices firmware files" - -PACKAGE_INSTALL += " \ - packagegroup-sdm845-hdk-firmware \ -" - -require initramfs-firmware-image.inc diff --git a/recipes-bsp/images/initramfs-firmware-sm8150-hdk-image.bb b/recipes-bsp/images/initramfs-firmware-sm8150-hdk-image.bb deleted file mode 100644 index bc14156c2..000000000 --- a/recipes-bsp/images/initramfs-firmware-sm8150-hdk-image.bb +++ /dev/null @@ -1,11 +0,0 @@ -DESCRIPTION = "Tiny ramdisk image with SM8150 HDK devices firmware files" - -PACKAGE_INSTALL += " \ - packagegroup-sm8150-hdk-firmware \ -" - -BAD_RECOMMENDATIONS = " \ - linux-firmware-qcom-sm8150-sensors \ -" - -require initramfs-firmware-image.inc diff --git a/recipes-bsp/images/initramfs-firmware-sm8350-hdk-image.bb b/recipes-bsp/images/initramfs-firmware-sm8350-hdk-image.bb deleted file mode 100644 index e346d70e1..000000000 --- a/recipes-bsp/images/initramfs-firmware-sm8350-hdk-image.bb +++ /dev/null @@ -1,11 +0,0 @@ -DESCRIPTION = "Tiny ramdisk image with SM8350 HDK devices firmware files" - -PACKAGE_INSTALL += " \ - packagegroup-sm8350-hdk-firmware \ -" - -BAD_RECOMMENDATIONS = " \ - linux-firmware-qcom-sm8350-sensors \ -" - -require initramfs-firmware-image.inc diff --git a/recipes-bsp/images/initramfs-firmware-sm8450-hdk-image.bb b/recipes-bsp/images/initramfs-firmware-sm8450-hdk-image.bb deleted file mode 100644 index b516361d5..000000000 --- a/recipes-bsp/images/initramfs-firmware-sm8450-hdk-image.bb +++ /dev/null @@ -1,11 +0,0 @@ -DESCRIPTION = "Tiny ramdisk image with SM8450 HDK devices firmware files" - -PACKAGE_INSTALL += " \ - packagegroup-sm8450-hdk-firmware \ -" - -BAD_RECOMMENDATIONS = " \ - linux-firmware-qcom-sm8450-sensors \ -" - -require initramfs-firmware-image.inc diff --git a/recipes-bsp/images/initramfs-firmware-sm8550-hdk-image.bb b/recipes-bsp/images/initramfs-firmware-sm8550-hdk-image.bb deleted file mode 100644 index f831c7fea..000000000 --- a/recipes-bsp/images/initramfs-firmware-sm8550-hdk-image.bb +++ /dev/null @@ -1,10 +0,0 @@ -DESCRIPTION = "Tiny ramdisk image with SM8550 HDK devices firmware files" - -PACKAGE_INSTALL += " \ - packagegroup-sm8550-hdk-firmware \ -" - -BAD_RECOMMENDATIONS = " \ -" - -require initramfs-firmware-image.inc diff --git a/recipes-bsp/images/initramfs-firmware-sm8650-hdk-image.bb b/recipes-bsp/images/initramfs-firmware-sm8650-hdk-image.bb deleted file mode 100644 index bf9ea6845..000000000 --- a/recipes-bsp/images/initramfs-firmware-sm8650-hdk-image.bb +++ /dev/null @@ -1,11 +0,0 @@ -DESCRIPTION = "Tiny ramdisk image with SM8650 HDK devices firmware files" - -PACKAGE_INSTALL += " \ - packagegroup-sm8650-hdk-firmware \ - packagegroup-sm8550-hdk-firmware \ -" - -BAD_RECOMMENDATIONS = " \ -" - -require initramfs-firmware-image.inc diff --git a/recipes-bsp/packagegroups/packagegroup-dragonboard-apq8074.bb b/recipes-bsp/packagegroups/packagegroup-dragonboard-apq8074.bb deleted file mode 100644 index 27a0686ff..000000000 --- a/recipes-bsp/packagegroups/packagegroup-dragonboard-apq8074.bb +++ /dev/null @@ -1,14 +0,0 @@ -SUMMARY = "Packages for the Dragonboard APQ8074 board" - -inherit packagegroup - -PACKAGES = " \ - ${PN}-firmware \ -" - -RRECOMMENDS:${PN}-firmware = " \ - ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a3xx', '', d)} \ - linux-firmware-qcom-apq8074-audio \ - linux-firmware-qcom-apq8074-modem \ - linux-firmware-qcom-apq8074-wifi \ -" diff --git a/recipes-bsp/packagegroups/packagegroup-qar2130p.bb b/recipes-bsp/packagegroups/packagegroup-qar2130p.bb deleted file mode 100644 index aa91d8bc3..000000000 --- a/recipes-bsp/packagegroups/packagegroup-qar2130p.bb +++ /dev/null @@ -1,20 +0,0 @@ -inherit packagegroup - -PACKAGES = " \ - ${PN}-firmware \ - ${PN}-hexagon-dsp-binaries \ -" - -RRECOMMENDS:${PN}-firmware = " \ - ${@bb.utils.contains_any('DISTRO_FEATURES', 'opencl opengl vulkan', 'linux-firmware-qcom-adreno-a650 linux-firmware-qcom-adreno-gmu-a621 linux-firmware-qcom-sar2130p-adreno', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca-wcn7850', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath12k-wcn7850', '', d)} \ - firmware-qcom-qar2130p \ - linux-firmware-qcom-sar2130p-audio \ - linux-firmware-qcom-sar2130p-compute \ -" - -RRECOMMENDS:${PN}-hexagon-dsp-binaries = " \ - hexagon-dsp-binaries-qcom-qar2130p-adsp \ - hexagon-dsp-binaries-qcom-qar2130p-cdsp \ -" diff --git a/recipes-bsp/packagegroups/packagegroup-sdm845-hdk.bb b/recipes-bsp/packagegroups/packagegroup-sdm845-hdk.bb deleted file mode 100644 index 1655f55b9..000000000 --- a/recipes-bsp/packagegroups/packagegroup-sdm845-hdk.bb +++ /dev/null @@ -1,25 +0,0 @@ -SUMMARY = "Packages for the SDM845-HDK (aka HDK845) board" - -inherit packagegroup - -PACKAGES = " \ - ${PN}-firmware \ - ${PN}-hexagon-dsp-binaries \ -" - -RRECOMMENDS:${PN}-firmware = " \ - ${@bb.utils.contains_any('DISTRO_FEATURES', 'opencl opengl vulkan', 'linux-firmware-qcom-adreno-a630 linux-firmware-qcom-sdm845-adreno', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath10k-wcn3990 linux-firmware-wil6210', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca-wcn399x', '', d)} \ - linux-firmware-qcom-sdm845-audio \ - linux-firmware-qcom-sdm845-compute \ - linux-firmware-qcom-sdm845-modem \ - linux-firmware-qcom-sdm845-hdk-sensors \ -" - -# FIXME -RDEPENDS:${PN}-hexagon-dsp-binaries = " \ - hexagon-dsp-binaries-thundercomm-db845c-adsp \ - hexagon-dsp-binaries-thundercomm-db845c-cdsp \ - hexagon-dsp-binaries-qcom-sdm845-hdk-sdsp \ -" diff --git a/recipes-bsp/packagegroups/packagegroup-sm8150-hdk.bb b/recipes-bsp/packagegroups/packagegroup-sm8150-hdk.bb deleted file mode 100644 index 1286a9eb0..000000000 --- a/recipes-bsp/packagegroups/packagegroup-sm8150-hdk.bb +++ /dev/null @@ -1,26 +0,0 @@ -SUMMARY = "Packages for the SM8150-HDK (aka HDK855) board" - -inherit packagegroup - -PACKAGES = " \ - ${PN}-firmware \ - ${PN}-hexagon-dsp-binaries \ -" - -RRECOMMENDS:${PN}-firmware = " \ - ${@bb.utils.contains_any('DISTRO_FEATURES', 'opencl opengl vulkan', 'linux-firmware-qcom-adreno-a640 linux-firmware-qcom-sm8150-adreno', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca-wcn399x', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath10k-wcn3990 linux-firmware-qcom-sm8150-wifi', '', d)} \ - firmware-qcom-sm8150-hdk \ - linux-firmware-qcom-sm8150-audio \ - linux-firmware-qcom-sm8150-compute \ - linux-firmware-qcom-sm8150-ipa \ - linux-firmware-qcom-sm8150-modem \ - linux-firmware-qcom-sm8150-sensors \ -" - -RRECOMMENDS:${PN}-hexagon-dsp-binaries = " \ - hexagon-dsp-binaries-qcom-sm8150-hdk-adsp \ - hexagon-dsp-binaries-qcom-sm8150-hdk-cdsp \ - hexagon-dsp-binaries-qcom-sm8150-hdk-sdsp \ -" diff --git a/recipes-bsp/packagegroups/packagegroup-sm8350-hdk.bb b/recipes-bsp/packagegroups/packagegroup-sm8350-hdk.bb deleted file mode 100644 index ceac0015d..000000000 --- a/recipes-bsp/packagegroups/packagegroup-sm8350-hdk.bb +++ /dev/null @@ -1,28 +0,0 @@ -SUMMARY = "Packages for the SM8350-HDK (aka HDK888) board" - -inherit packagegroup - -PACKAGES = " \ - ${PN}-firmware \ - ${PN}-hexagon-dsp-binaries \ -" - -RRECOMMENDS:${PN}-firmware = " \ - ${@bb.utils.contains_any('DISTRO_FEATURES', 'opencl opengl vulkan', 'linux-firmware-qcom-adreno-a660 linux-firmware-qcom-sm8350-adreno', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca-qca2066', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath11k-wcn6855', '', d)} \ - firmware-qcom-sm8350-hdk \ - linux-firmware-lt9611uxc \ - linux-firmware-qcom-sm8350-audio \ - linux-firmware-qcom-sm8350-compute \ - linux-firmware-qcom-sm8350-ipa \ - linux-firmware-qcom-sm8350-modem \ - linux-firmware-qcom-sm8350-sensors \ - linux-firmware-qcom-vpu \ -" - -RRECOMMENDS:${PN}-hexagon-dsp-binaries = " \ - hexagon-dsp-binaries-qcom-sm8350-hdk-adsp \ - hexagon-dsp-binaries-qcom-sm8350-hdk-cdsp \ - hexagon-dsp-binaries-qcom-sm8350-hdk-sdsp \ -" diff --git a/recipes-bsp/packagegroups/packagegroup-sm8450-hdk.bb b/recipes-bsp/packagegroups/packagegroup-sm8450-hdk.bb deleted file mode 100644 index 5595722d4..000000000 --- a/recipes-bsp/packagegroups/packagegroup-sm8450-hdk.bb +++ /dev/null @@ -1,26 +0,0 @@ -SUMMARY = "Packages for the SM8450-HDK board" - -inherit packagegroup - -PACKAGES = " \ - ${PN}-firmware \ - ${PN}-hexagon-dsp-binaries \ -" - -RRECOMMENDS:${PN}-firmware = " \ - ${@bb.utils.contains_any('DISTRO_FEATURES', 'opencl opengl vulkan', 'linux-firmware-qcom-adreno-a730 linux-firmware-qcom-sm8450-adreno', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca-qca2066', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath11k-wcn6855', '', d)} \ - firmware-qcom-sm8450-hdk \ - linux-firmware-lt9611uxc \ - linux-firmware-qcom-sm8450-audio \ - linux-firmware-qcom-sm8450-compute \ - linux-firmware-qcom-sm8450-modem \ - linux-firmware-qcom-sm8450-sensors \ -" - -RRECOMMENDS:${PN}-hexagon-dsp-binaries = " \ - hexagon-dsp-binaries-qcom-sm8450-hdk-adsp \ - hexagon-dsp-binaries-qcom-sm8450-hdk-cdsp \ - hexagon-dsp-binaries-qcom-sm8450-hdk-sdsp \ -" diff --git a/recipes-bsp/packagegroups/packagegroup-sm8550-hdk.bb b/recipes-bsp/packagegroups/packagegroup-sm8550-hdk.bb deleted file mode 100644 index 2066b8f08..000000000 --- a/recipes-bsp/packagegroups/packagegroup-sm8550-hdk.bb +++ /dev/null @@ -1,23 +0,0 @@ -inherit packagegroup - -PACKAGES = " \ - ${PN}-firmware \ - ${PN}-hexagon-dsp-binaries \ -" - -RRECOMMENDS:${PN}-firmware = " \ - ${@bb.utils.contains_any('DISTRO_FEATURES', 'opencl opengl vulkan', 'linux-firmware-qcom-adreno-a740 linux-firmware-qcom-sm8550-adreno', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca-wcn7850', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath12k-wcn7850', '', d)} \ - firmware-qcom-sm8550-hdk \ - linux-firmware-lt9611uxc \ - linux-firmware-qcom-sm8550-audio \ - linux-firmware-qcom-sm8550-compute \ - linux-firmware-qcom-sm8550-ipa \ - linux-firmware-qcom-sm8550-modem \ -" - -RRECOMMENDS:${PN}-hexagon-dsp-binaries = " \ - hexagon-dsp-binaries-qcom-sm8550-hdk-adsp \ - hexagon-dsp-binaries-qcom-sm8550-hdk-cdsp \ -" diff --git a/recipes-bsp/packagegroups/packagegroup-sm8650-hdk.bb b/recipes-bsp/packagegroups/packagegroup-sm8650-hdk.bb deleted file mode 100644 index e24325d06..000000000 --- a/recipes-bsp/packagegroups/packagegroup-sm8650-hdk.bb +++ /dev/null @@ -1,25 +0,0 @@ -SUMMARY = "Packages for the SM8650-HDK board" - -inherit packagegroup - -PACKAGES = " \ - ${PN}-firmware \ - ${PN}-hexagon-dsp-binaries \ -" - -RRECOMMENDS:${PN}-firmware = " \ - ${@bb.utils.contains_any('DISTRO_FEATURES', 'opencl opengl vulkan', 'linux-firmware-qcom-adreno-g709 linux-firmware-qcom-sm8650-adreno', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca-wcn7850', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath12k-wcn7850', '', d)} \ - firmware-qcom-sm8650-hdk \ - linux-firmware-lt9611uxc \ - linux-firmware-qcom-sm8650-audio \ - linux-firmware-qcom-sm8650-audio-tplg \ - linux-firmware-qcom-sm8650-compute \ - linux-firmware-qcom-sm8650-ipa \ -" - -RRECOMMENDS:${PN}-hexagon-dsp-binaries = " \ - hexagon-dsp-binaries-qcom-sm8650-hdk-adsp \ - hexagon-dsp-binaries-qcom-sm8650-hdk-cdsp \ -" diff --git a/recipes-core/systemd/systemd-boot_%.bbappend b/recipes-core/systemd/systemd-boot_%.bbappend deleted file mode 100644 index c35b5607b..000000000 --- a/recipes-core/systemd/systemd-boot_%.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -FILESEXTRAPATHS:prepend:qcom := "${THISDIR}/systemd:" - -SRC_URI:append:qcom = " \ - file://0001-boot-stub-honor-PE-SectionAlignment-when-loading-inn.patch \ -" diff --git a/recipes-core/systemd/systemd/0001-boot-stub-honor-PE-SectionAlignment-when-loading-inn.patch b/recipes-core/systemd/systemd/0001-boot-stub-honor-PE-SectionAlignment-when-loading-inn.patch deleted file mode 100644 index 37d697306..000000000 --- a/recipes-core/systemd/systemd/0001-boot-stub-honor-PE-SectionAlignment-when-loading-inn.patch +++ /dev/null @@ -1,167 +0,0 @@ -From 2d6a7100adc2ab4a239ac31f094c1037c1a99d98 Mon Sep 17 00:00:00 2001 -From: Josh Hoffer -Date: Wed, 3 Jun 2026 17:19:33 -0700 -Subject: [PATCH] boot/stub: honor PE SectionAlignment when loading inner - kernel - -The stub copies the embedded kernel PE into an xmalloc_pages() -allocation with AllocateAnyPages, which only guarantees EFI_PAGE_SIZE -(4 KiB) alignment. - -The arm64 kernel declares SectionAlignment = SZ_64K. When _text is not -64K-aligned the kernel's EFI stub reallocates and copies the image, -which can fail with EFI_OUT_OF_RESOURCES on memory-constrained firmware -(e.g. U-Boot, bounded by CONFIG_SYS_MALLOC_LEN rather than full DRAM). -The failure is non-deterministic since AllocateAnyPages returns whatever -page the allocator finds first. - -Plumb SectionAlignment through pe_kernel_info() and allocate via -xmalloc_aligned_pages(). For alignment <= EFI_PAGE_SIZE (e.g. x86_64) it -reduces to a plain AllocatePages(), so the change is free there. - -SectionAlignment comes from the PE header, which the spec requires to be -a power of 2. Sanitize it in pe_kernel_info() right where it is parsed: -a non-conforming value falls back to plain page alignment (matching the -behavior of older systemd-stub versions that ignored the field) rather -than propagate something that would break xmalloc_aligned_pages()'s -over-alignment maths, with a log_warning() so the fallback stays -diagnosable. - -Co-developed-by: Claude -Signed-off-by: Viswanath Kraleti - -Upstream-Status: Submitted [ https://github.com/systemd/systemd/pull/42463 ] ---- - src/boot/boot.c | 3 ++- - src/boot/linux.c | 18 +++++++++++++----- - src/boot/pe.c | 21 ++++++++++++++++++++- - src/boot/pe.h | 7 ++++++- - 4 files changed, 41 insertions(+), 8 deletions(-) - -diff --git a/src/boot/boot.c b/src/boot/boot.c -index 3ba430a844206..dbe7f0c8ab60c 100644 ---- a/src/boot/boot.c -+++ b/src/boot/boot.c -@@ -3101,7 +3101,8 @@ static EFI_STATUS call_image_start( - uint32_t compat_address; - - err = pe_kernel_info(loaded_image->ImageBase, /* ret_entry_point= */ NULL, &compat_address, -- /* ret_size_in_memory= */ NULL); -+ /* ret_size_in_memory= */ NULL, -+ /* ret_section_alignment= */ NULL); - if (err != EFI_SUCCESS) { - if (err != EFI_UNSUPPORTED) - return log_error_status(err, "Error finding kernel compat entry address: %m"); -diff --git a/src/boot/linux.c b/src/boot/linux.c -index b1f38e597d653..bd71ada48358c 100644 ---- a/src/boot/linux.c -+++ b/src/boot/linux.c -@@ -160,14 +160,14 @@ EFI_STATUS linux_exec( - const struct iovec *initrd) { - - size_t kernel_size_in_memory = 0; -- uint32_t compat_entry_point, entry_point; -+ uint32_t compat_entry_point, entry_point, section_alignment; - EFI_STATUS err; - - assert(parent_image); - assert(iovec_is_set(kernel)); - assert(iovec_is_valid(initrd)); - -- err = pe_kernel_info(kernel->iov_base, &entry_point, &compat_entry_point, &kernel_size_in_memory); -+ err = pe_kernel_info(kernel->iov_base, &entry_point, &compat_entry_point, &kernel_size_in_memory, §ion_alignment); - #if defined(__i386__) || defined(__x86_64__) - if (err == EFI_UNSUPPORTED) - /* Kernel is too old to support LINUX_INITRD_MEDIA_GUID, try the deprecated EFI handover -@@ -264,9 +264,17 @@ EFI_STATUS linux_exec( - if (err != EFI_SUCCESS) - return log_error_status(err, "Cannot read sections: %m"); - -- /* Do we need to ensure under 4gb address on x86? */ -- _cleanup_pages_ Pages loaded_kernel_pages = xmalloc_pages( -- AllocateAnyPages, EfiLoaderCode, EFI_SIZE_TO_PAGES(kernel_size_in_memory), 0); -+ /* Honor the PE SectionAlignment (SZ_64K on arm64): if _text is not aligned the kernel's EFI stub -+ * reallocates and copies the image, which can fail with EFI_OUT_OF_RESOURCES on memory-constrained -+ * firmware. When alignment <= EFI_PAGE_SIZE (e.g. x86_64) xmalloc_aligned_pages() reduces to a -+ * plain AllocatePages() with no extra over-allocation. pe_kernel_info() already sanitized a -+ * non-conforming SectionAlignment to plain page alignment. */ -+ _cleanup_pages_ Pages loaded_kernel_pages = xmalloc_aligned_pages( -+ AllocateAnyPages, -+ EfiLoaderCode, -+ EFI_SIZE_TO_PAGES(kernel_size_in_memory), -+ section_alignment, -+ /* addr= */ 0); - - uint8_t* loaded_kernel = PHYSICAL_ADDRESS_TO_POINTER(loaded_kernel_pages.addr); - FOREACH_ARRAY(h, headers, n_headers) { -diff --git a/src/boot/pe.c b/src/boot/pe.c -index 5fbf5a42e5386..e96600ab05d55 100644 ---- a/src/boot/pe.c -+++ b/src/boot/pe.c -@@ -460,7 +460,12 @@ static uint32_t get_compatibility_entry_address(const DosFileHeader *dos, const - return 0; - } - --EFI_STATUS pe_kernel_info(const void *base, uint32_t *ret_entry_point, uint32_t *ret_compat_entry_point, size_t *ret_size_in_memory) { -+EFI_STATUS pe_kernel_info( -+ const void *base, -+ uint32_t *ret_entry_point, -+ uint32_t *ret_compat_entry_point, -+ size_t *ret_size_in_memory, -+ uint32_t *ret_section_alignment) { - assert(base); - - const DosFileHeader *dos = (const DosFileHeader *) base; -@@ -475,6 +480,16 @@ EFI_STATUS pe_kernel_info(const void *base, uint32_t *ret_entry_point, uint32_t - * of the SizeOfImage field in the PE header and return it */ - size_t size_in_memory = pe->OptionalHeader.SizeOfImage; - -+ /* Honoring SectionAlignment lets callers place the image so the kernel's EFI stub need not relocate -+ * it (SZ_64K on arm64). The PE spec requires a power of 2; for a non-conforming value fall back to -+ * plain page alignment (what we assumed before honoring this field) rather than propagate something -+ * that would break the allocator's over-alignment math. */ -+ uint32_t section_alignment = pe->OptionalHeader.SectionAlignment; -+ if (!ISPOWEROF2(section_alignment)) { -+ log_warning("PE SectionAlignment %" PRIu32 " is not a power of 2, falling back to page alignment.", section_alignment); -+ section_alignment = EFI_PAGE_SIZE; -+ } -+ - /* Support for LINUX_INITRD_MEDIA_GUID was added in kernel stub 1.0. */ - if (pe->OptionalHeader.MajorImageVersion < 1) - return EFI_UNSUPPORTED; -@@ -486,6 +501,8 @@ EFI_STATUS pe_kernel_info(const void *base, uint32_t *ret_entry_point, uint32_t - *ret_compat_entry_point = 0; - if (ret_size_in_memory) - *ret_size_in_memory = size_in_memory; -+ if (ret_section_alignment) -+ *ret_section_alignment = section_alignment; - return EFI_SUCCESS; - } - -@@ -500,6 +517,8 @@ EFI_STATUS pe_kernel_info(const void *base, uint32_t *ret_entry_point, uint32_t - *ret_compat_entry_point = compat_entry_point; - if (ret_size_in_memory) - *ret_size_in_memory = size_in_memory; -+ if (ret_section_alignment) -+ *ret_section_alignment = section_alignment; - - return EFI_SUCCESS; - } -diff --git a/src/boot/pe.h b/src/boot/pe.h -index 7387f3e2fdff8..5c8dc86fe9389 100644 ---- a/src/boot/pe.h -+++ b/src/boot/pe.h -@@ -57,7 +57,12 @@ EFI_STATUS pe_memory_locate_sections( - const char *const section_names[], - PeSectionVector sections[]); - --EFI_STATUS pe_kernel_info(const void *base, uint32_t *ret_entry_point, uint32_t *ret_compat_entry_point, size_t *ret_size_in_memory); -+EFI_STATUS pe_kernel_info( -+ const void *base, -+ uint32_t *ret_entry_point, -+ uint32_t *ret_compat_entry_point, -+ size_t *ret_size_in_memory, -+ uint32_t *ret_section_alignment); - - EFI_STATUS pe_kernel_check_no_relocation(const void *base); - diff --git a/recipes-core/systemd/systemd_%.bbappend b/recipes-core/systemd/systemd_%.bbappend index 12e9f47ef..abb92268c 100644 --- a/recipes-core/systemd/systemd_%.bbappend +++ b/recipes-core/systemd/systemd_%.bbappend @@ -1,7 +1,6 @@ FILESEXTRAPATHS:prepend:qcom := "${THISDIR}/${PN}:" SRC_URI:append:qcom = " \ - file://0001-boot-stub-honor-PE-SectionAlignment-when-loading-inn.patch \ file://99-dma-heap.rules \ "