diff --git a/.github/workflows/build-yocto.yml b/.github/workflows/build-yocto.yml index 4d4705396..ef284c545 100644 --- a/.github/workflows/build-yocto.yml +++ b/.github/workflows/build-yocto.yml @@ -145,6 +145,7 @@ jobs: machine: - iq-8275-evk - iq-9075-evk + - iq-x5121-evk - iq-x7181-evk - kaanapali-mtp - qcm6490-idp diff --git a/ci/iq-x5121-evk.yml b/ci/iq-x5121-evk.yml new file mode 100644 index 000000000..7f62fdb44 --- /dev/null +++ b/ci/iq-x5121-evk.yml @@ -0,0 +1,8 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json + +header: + version: 14 + includes: + - ci/base.yml + +machine: iq-x5121-evk diff --git a/conf/machine/include/fit-dtb-compatible.inc b/conf/machine/include/fit-dtb-compatible.inc index af5012ce5..4e5a29b0d 100644 --- a/conf/machine/include/fit-dtb-compatible.inc +++ b/conf/machine/include/fit-dtb-compatible.inc @@ -10,6 +10,7 @@ FIT_DTB_COMPATIBLE[hamoa-iot-evk] = " \ qcom,hamoa-evk \ qcom,hamoav2.1-evk \ " +FIT_DTB_COMPATIBLE[purwa-iot-evk] = "qcom,purwa-evk" FIT_DTB_COMPATIBLE[kaanapali-mtp] = "qcom,kaanapali-mtp" FIT_DTB_COMPATIBLE[lemans-evk] = " \ qcom,qcs9075-iot \ diff --git a/conf/machine/include/qcom-purwa.inc b/conf/machine/include/qcom-purwa.inc new file mode 100644 index 000000000..a10b3af86 --- /dev/null +++ b/conf/machine/include/qcom-purwa.inc @@ -0,0 +1,19 @@ +# Configurations and variables for Purwa SoC family. + +SOC_FAMILY = "purwa" +require conf/machine/include/qcom-base.inc +require conf/machine/include/qcom-common.inc + +QCOM_VFAT_SECTOR_SIZE = "512" + +DEFAULTTUNE = "armv8-6a-crypto" +require conf/machine/include/arm/arch-armv8-6a.inc + +MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += " \ + packagegroup-qcom-boot-essential \ + packagegroup-machine-essential-qcom-purwa-soc \ +" + +MACHINE_EXTRA_RRECOMMENDS += " \ + packagegroup-qcom-boot-additional \ +" diff --git a/conf/machine/iq-x5121-evk.conf b/conf/machine/iq-x5121-evk.conf new file mode 100644 index 000000000..bfa904cc5 --- /dev/null +++ b/conf/machine/iq-x5121-evk.conf @@ -0,0 +1,25 @@ +#@TYPE: Machine +#@NAME: Qualcomm Purwa IoT Evaluation Kit (EVK) based on IQ-X5121 +#@DESCRIPTION: Machine configuration for Qualcomm IQ-X5121 Evaluation Kit (EVK) + +require conf/machine/include/qcom-purwa.inc + +MACHINE_FEATURES += "efi pci" + +QCOM_DTB_DEFAULT ?= "purwa-iot-evk" + +KERNEL_DEVICETREE ?= " \ + qcom/purwa-iot-evk.dtb \ + " + +MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += " \ + packagegroup-purwa-iot-evk-firmware \ + packagegroup-purwa-iot-evk-hexagon-dsp-binaries \ +" + +QCOM_CDT_FILE = "IQ_X_EVK_CDT" +QCOM_BOOT_FILES_SUBDIR = "iq-x5121" +QCOM_PARTITION_FILES_SUBDIR ?= "partitions/iq-x5121-evk/nvme" +QCOM_PARTITION_FILES_SUBDIR_SPINOR ?= "partitions/iq-x5121-evk/spinor" + +QCOM_BOOT_FIRMWARE = "firmware-qcom-boot-iq-x5121" diff --git a/recipes-bsp/firmware-boot/firmware-qcom-boot-iq-x5121.inc b/recipes-bsp/firmware-boot/firmware-qcom-boot-iq-x5121.inc new file mode 100644 index 000000000..8666aa2a5 --- /dev/null +++ b/recipes-bsp/firmware-boot/firmware-qcom-boot-iq-x5121.inc @@ -0,0 +1,28 @@ +DESCRIPTION = "QCOM NHLOS Firmware for Qualcomm IQ-X5121 platform" +LICENSE = "LICENSE.qcom-2" +LIC_FILES_CHKSUM = "file://${UNPACKDIR}/LICENSE.${BPN};md5=6e1bae7ef13289c332a27b917fb49764" + +include firmware-qcom-boot-common.inc + +FW_ARTIFACTORY = "softwarecenter.qualcomm.com/download/software/chip/ubuntu_qualcomm_iot-spf-1-0/ubuntu-qualcomm-iot-spf-1-0_test_device_public" +#FW_BUILD_ID = "r1.0.r1_${PV}/hamoa_iot-ubun-1-0-r1" +FW_BUILD_ID = "r1.0_00001.0/hamoa_iot-ubun-1-0" +FW_BIN_PATH = "common/build/bin" +BOOTBINARIES = "HAMOA_bootbinaries" + +S = "${UNPACKDIR}/${BOOTBINARIES}/spinor" + +#SRC_URI = " \ +# https://${FW_ARTIFACTORY}/${FW_BUILD_ID}/${FW_BIN_PATH}/HAMOA_bootbinaries.zip;downloadfilename=HAMOA_bootbinaries_${PV}.zip;name=bootbinaries \ +# https://${FW_ARTIFACTORY}/${FW_BUILD_ID}/LICENSE.txt;downloadfilename=LICENSE.${BPN};name=license \ +# https://artifacts.codelinaro.org/artifactory/codelinaro-le/Qualcomm_Linux/X1E80100/cdt/IQ-X.1.2-EVK-CDT.tar.gz;downloadfilename=cdt-iq-x7181-evk_${PV}.tar.gz;name=cdt-iq-x7181-evk \ +# " +SRC_URI = " \ + https://${FW_ARTIFACTORY}/${FW_BUILD_ID}/HAMOA_bootbinaries.zip;downloadfilename=HAMOA_bootbinaries_${PV}.zip;name=bootbinaries \ + https://${FW_ARTIFACTORY}/${FW_BUILD_ID}/LICENSE.txt;downloadfilename=LICENSE.${BPN};name=license \ + https://artifacts.codelinaro.org/artifactory/codelinaro-le/Qualcomm_Linux/X1E80100/cdt/IQ-X.1.2-EVK-CDT.tar.gz;downloadfilename=cdt-iq-x7181-evk_${PV}.tar.gz;name=cdt-iq-x7181-evk \ + " +SRC_URI[cdt-iq-x7181-evk.sha256sum] = "279c47ff8f1a7f4300d296fcb7fbb3d025d903e4c16f62fbb74939804949584e" +SRC_URI[license.sha256sum] = "3ad8f1fd82f2918c858cec2d0887b7df6f71a06416beecfdb3efe7d62874d863" + +QCOM_BOOT_IMG_SUBDIR = "iq-x5121/spinor" diff --git a/recipes-bsp/firmware-boot/firmware-qcom-boot-iq-x5121_00004.0.bb b/recipes-bsp/firmware-boot/firmware-qcom-boot-iq-x5121_00004.0.bb new file mode 100644 index 000000000..147bed42d --- /dev/null +++ b/recipes-bsp/firmware-boot/firmware-qcom-boot-iq-x5121_00004.0.bb @@ -0,0 +1,3 @@ +require firmware-qcom-boot-iq-x5121.inc + +SRC_URI[bootbinaries.sha256sum] = "fe987d99a6a0ad5882c05a416ae38694fbe1f9411489b1ad2d505ac4e59ddfe9" diff --git a/recipes-bsp/hexagon-dsp-binaries/hexagon-dsp-binaries_20260110.bb b/recipes-bsp/hexagon-dsp-binaries/hexagon-dsp-binaries_20260110.bb index edbbe9420..aae2aa353 100644 --- a/recipes-bsp/hexagon-dsp-binaries/hexagon-dsp-binaries_20260110.bb +++ b/recipes-bsp/hexagon-dsp-binaries/hexagon-dsp-binaries_20260110.bb @@ -48,6 +48,8 @@ PACKAGE_BEFORE_PN =+ "\ ${PN}-qcom-iq9075-evk-gdsp \ ${PN}-qcom-hamoa-iot-evk-adsp \ ${PN}-qcom-hamoa-iot-evk-cdsp \ + ${PN}-qcom-purwa-iot-evk-adsp \ + ${PN}-qcom-purwa-iot-evk-cdsp \ ${PN}-qcom-kaanapali-mtp-adsp \ ${PN}-qcom-kaanapali-mtp-cdsp \ ${PN}-qcom-qcs615-ride-adsp \ @@ -86,6 +88,8 @@ LICENSE:${PN}-qcom-iq9075-evk-cdsp = "dspso-qcom-2" LICENSE:${PN}-qcom-iq9075-evk-gdsp = "dspso-qcom-2" LICENSE:${PN}-qcom-hamoa-iot-evk-adsp = "dspso-qcom-2" LICENSE:${PN}-qcom-hamoa-iot-evk-cdsp = "dspso-qcom-2" +LICENSE:${PN}-qcom-purwa-iot-evk-adsp = "dspso-qcom-2" +LICENSE:${PN}-qcom-purwa-iot-evk-cdsp = "dspso-qcom-2" LICENSE:${PN}-qcom-kaanapali-mtp-adsp = "dspso-qcom-2" LICENSE:${PN}-qcom-kaanapali-mtp-cdsp = "dspso-qcom-2" LICENSE:${PN}-qcom-qcs615-ride-adsp = "dspso-qcom-2" @@ -127,6 +131,8 @@ RDEPENDS:${PN}-qcom-iq9075-evk-gdsp = "${PN}-conf linux-firmware-qcom-sa8775p-ge RDEPENDS:${PN}-qcom-iq9075-evk-gdsp += "${PN}-qcom-sa8775p-ride-gdsp" RDEPENDS:${PN}-qcom-hamoa-iot-evk-adsp = "${PN}-conf linux-firmware-qcom-x1e80100-audio (= 1:${PV})" RDEPENDS:${PN}-qcom-hamoa-iot-evk-cdsp = "${PN}-conf linux-firmware-qcom-x1e80100-compute (= 1:${PV})" +RDEPENDS:${PN}-qcom-purwa-iot-evk-adsp = "${PN}-conf linux-firmware-qcom-x1e80100-audio (= 1:${PV})" +RDEPENDS:${PN}-qcom-purwa-iot-evk-cdsp = "${PN}-conf linux-firmware-qcom-x1e80100-compute (= 1:${PV})" RDEPENDS:${PN}-qcom-kaanapali-mtp-adsp = "${PN}-conf linux-firmware-qcom-kaanapali-audio (= 1:${PV})" RDEPENDS:${PN}-qcom-kaanapali-mtp-cdsp = "${PN}-conf linux-firmware-qcom-kaanapali-compute (= 1:${PV})" RDEPENDS:${PN}-qcom-qcs615-ride-adsp = "${PN}-conf linux-firmware-qcom-qcs615-audio (= 1:${PV})" @@ -167,6 +173,8 @@ FILES:${PN}-qcom-iq9075-evk-cdsp = "${datadir}/qcom/sa8775p/Qualcomm/IQ9075-EVK/ FILES:${PN}-qcom-iq9075-evk-gdsp = "${datadir}/qcom/sa8775p/Qualcomm/IQ9075-EVK/dsp/gdsp*" FILES:${PN}-qcom-hamoa-iot-evk-adsp = "${datadir}/qcom/x1e80100/Qualcomm/Hamoa-IoT-EVK/dsp/adsp*" FILES:${PN}-qcom-hamoa-iot-evk-cdsp = "${datadir}/qcom/x1e80100/Qualcomm/Hamoa-IoT-EVK/dsp/cdsp*" +FILES:${PN}-qcom-purwa-iot-evk-adsp = "${datadir}/qcom/x1e80100/Qualcomm/Hamoa-IoT-EVK/dsp/adsp*" +FILES:${PN}-qcom-purwa-iot-evk-cdsp = "${datadir}/qcom/x1e80100/Qualcomm/Hamoa-IoT-EVK/dsp/cdsp*" FILES:${PN}-qcom-kaanapali-mtp-adsp = "${datadir}/qcom/kaanapali/Qualcomm/Kaanapali-MTP/dsp/adsp*" FILES:${PN}-qcom-kaanapali-mtp-cdsp = "${datadir}/qcom/kaanapali/Qualcomm/Kaanapali-MTP/dsp/cdsp*" FILES:${PN}-qcom-qcs615-ride-adsp = "${datadir}/qcom/qcs615/Qualcomm/QCS615-RIDE/dsp/adsp" @@ -196,6 +204,8 @@ FILES:${PN}-thundercomm-rb5-sdsp = "${datadir}/qcom/sm8250/Thundercomm/RB5/dsp/s INSANE_SKIP:${PN}-qcom-db820c-adsp = "arch libdir file-rdeps textrel" INSANE_SKIP:${PN}-qcom-hamoa-iot-evk-adsp = "arch libdir file-rdeps textrel" INSANE_SKIP:${PN}-qcom-hamoa-iot-evk-cdsp = "arch libdir file-rdeps textrel" +INSANE_SKIP:${PN}-qcom-purwa-iot-evk-adsp = "arch libdir file-rdeps textrel" +INSANE_SKIP:${PN}-qcom-purwa-iot-evk-cdsp = "arch libdir file-rdeps textrel" INSANE_SKIP:${PN}-qcom-kaanapali-mtp-adsp = "arch libdir file-rdeps textrel" INSANE_SKIP:${PN}-qcom-kaanapali-mtp-cdsp = "arch libdir file-rdeps textrel" INSANE_SKIP:${PN}-qcom-qcs615-ride-adsp = "arch libdir file-rdeps textrel" diff --git a/recipes-bsp/images/initramfs-firmware-mega-image.bb b/recipes-bsp/images/initramfs-firmware-mega-image.bb index 64bde7714..70b000b7e 100644 --- a/recipes-bsp/images/initramfs-firmware-mega-image.bb +++ b/recipes-bsp/images/initramfs-firmware-mega-image.bb @@ -12,6 +12,7 @@ PACKAGE_INSTALL += " \ packagegroup-dragonboard820c-firmware \ packagegroup-dragonboard845c-firmware \ packagegroup-hamoa-iot-evk-firmware \ + packagegroup-purwa-iot-evk-firmware \ packagegroup-iq-8275-evk-firmware \ packagegroup-iq-9075-evk-firmware \ packagegroup-qcs615-ride-firmware \ @@ -24,6 +25,7 @@ PACKAGE_INSTALL += " \ packagegroup-dragonboard820c-hexagon-dsp-binaries \ packagegroup-dragonboard845c-hexagon-dsp-binaries \ packagegroup-hamoa-iot-evk-hexagon-dsp-binaries \ + packagegroup-purwa-iot-evk-hexagon-dsp-binaries \ packagegroup-iq-8275-evk-hexagon-dsp-binaries \ packagegroup-iq-9075-evk-hexagon-dsp-binaries \ packagegroup-qcs615-ride-hexagon-dsp-binaries \ diff --git a/recipes-bsp/packagegroups/packagegroup-machine-essential.bb b/recipes-bsp/packagegroups/packagegroup-machine-essential.bb index 1a730a565..fa33e3ea0 100644 --- a/recipes-bsp/packagegroups/packagegroup-machine-essential.bb +++ b/recipes-bsp/packagegroups/packagegroup-machine-essential.bb @@ -6,6 +6,7 @@ PACKAGES = " \ ${PN}-board-generic \ ${PN}-qcom-generic \ ${PN}-qcom-hamoa-soc \ + ${PN}-qcom-purwa-soc \ ${PN}-qcom-qcm2290-soc \ ${PN}-qcom-qcs6490-soc \ ${PN}-qcom-qcs8300-soc \ @@ -114,6 +115,26 @@ RRECOMMENDS:${PN}-qcom-hamoa-soc += " \ kernel-module-videocc-sm8550 \ " +RRECOMMENDS:${PN}-qcom-purwa-soc += " \ + ${PN}-board-generic \ + ${PN}-qcom-generic \ + kernel-module-ath11k-pci \ + kernel-module-ath12k \ + kernel-module-camcc-x1e80100 \ + kernel-module-dispcc-x1e80100 \ + kernel-module-gpucc-x1e80100 \ + kernel-module-lpasscc-sc8280xp \ + kernel-module-pinctrl-sm8550-lpass-lpi \ + kernel-module-pmic-glink \ + kernel-module-pmic-glink-altmode \ + kernel-module-pwrseq-qcom-wcn \ + kernel-module-snd-soc-wcd938x \ + kernel-module-snd-soc-wsa884x \ + kernel-module-snd-soc-x1e80100 \ + kernel-module-tscrcc-x1e80100 \ + kernel-module-videocc-sm8550 \ +" + RRECOMMENDS:${PN}-qcom-qcm2290-soc += " \ ${PN}-board-generic \ ${PN}-qcom-generic \ diff --git a/recipes-bsp/packagegroups/packagegroup-purwa-iot-evk.bb b/recipes-bsp/packagegroups/packagegroup-purwa-iot-evk.bb new file mode 100644 index 000000000..576498cdc --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-purwa-iot-evk.bb @@ -0,0 +1,21 @@ +SUMMARY = "Packages for the Purwa IoT EVK platform" + +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-g705 linux-firmware-qcom-x1e80100-adreno', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca-qca61x4-usb linux-firmware-qca-wcn7850', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath11k-wcn6855 linux-firmware-ath12k-wcn7850', '', d)} \ + linux-firmware-qcom-x1e80100-audio \ + linux-firmware-qcom-x1e80100-compute \ + linux-firmware-qcom-vpu \ +" + +RDEPENDS:${PN}-hexagon-dsp-binaries = " \ + hexagon-dsp-binaries-qcom-purwa-iot-evk-cdsp \ +" diff --git a/recipes-bsp/partition/qcom-partition-conf_git.bb b/recipes-bsp/partition/qcom-partition-conf_git.bb index 21c615abf..bcd27ca16 100644 --- a/recipes-bsp/partition/qcom-partition-conf_git.bb +++ b/recipes-bsp/partition/qcom-partition-conf_git.bb @@ -3,8 +3,10 @@ DESCRIPTION = "GPT partition binaries and QDL scripts for Qualcomm reference dev LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=b0a8acd90d872086b279ead88af03369" -SRC_URI = "git://github.com/qualcomm-linux/qcom-ptool.git;branch=main;protocol=https" -SRCREV = "509133553f095292f2d9b691a29239d75d083392" +#SRC_URI = "git://github.com/qualcomm-linux/qcom-ptool.git;branch=main;protocol=https" +#SRCREV = "509133553f095292f2d9b691a29239d75d083392" +SRC_URI = "git://github.com/xinlon-z/qcom-ptool.git;branch=purwa-evk;protocol=https" +SRCREV = "d05ddd79b65b395f84d7ba8c8a7c7f5feacdd35a" INHIBIT_DEFAULT_DEPS = "1"