diff options
Diffstat (limited to 'recipes-bsp')
68 files changed, 1464 insertions, 117 deletions
diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-nexus.inc b/recipes-bsp/firmware-nexus/firmware-qcom-nexus.inc new file mode 100644 index 0000000..892bf6d --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-nexus.inc @@ -0,0 +1,28 @@ +LICENSE = "Proprietary" +LIC_FILES_CHKSUM = "file://license.txt;md5=0d238870f50c84250a14191d17aaf1d5" + +SRC_URI = "https://dl.google.com/dl/android/aosp/qcom-${FW_QCOM_NAME}-${AOSP_BUILD}-${CHECKSUM_qcom}.tgz;name=qcom" + +PV = "${AOSP_BUILD}" + +require recipes-bsp/firmware/firmware-qcom.inc + +DEPENDS += "pil-squasher-native" + +# extract the license file +do_extract() { + head -n 280 ${WORKDIR}/extract-qcom-${FW_QCOM_NAME}.sh | tail -n +16 > ${S}/license.txt + tail -n +315 ${WORKDIR}/extract-qcom-${FW_QCOM_NAME}.sh | tar xzfv - -C ${S} +} +addtask extract after do_unpack before do_patch + +do_compile() { + for fw in ${S}/vendor/qcom/${FW_QCOM_NAME}/proprietary/*.mdt ; do + pil-squasher ${B}/`basename $fw mdt`mbn $fw + done +} + +do_install() { + install -d ${D}${FW_QCOM_PATH} + install -m 0644 license.txt ${D}${FW_QCOM_PATH} +} diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-nexus4.bb b/recipes-bsp/firmware-nexus/firmware-qcom-nexus4.bb new file mode 100644 index 0000000..58e7e3f --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-nexus4.bb @@ -0,0 +1,33 @@ +DESCRIPTION = "QCOM Firmware for LGE Google Nexus 4" + +LICENSE = "Proprietary" +LIC_FILES_CHKSUM = "file://license.txt;md5=0d238870f50c84250a14191d17aaf1d5" + +FW_QCOM_NAME = "mako" +FW_QCOM_SUBDIR = "apq8064/LGE/${FW_QCOM_NAME}" +AOSP_BUILD = "lmy48t" +CHECKSUM_qcom = "8c489b7e" + +SRC_URI[qcom.sha256sum] = "d87a4e4958c5750818fd525c32c7b6a659cd8da7e0dd46d92c16ad8c5aa1bf68" + +require recipes-bsp/firmware-nexus/firmware-qcom-nexus.inc + +SRC_URI += "git://android.googlesource.com/device/lge/${FW_QCOM_NAME};protocol=https;branch=master;name=aosp" +SRCREV_aosp = "33f0114334f9304dd69a8dfac24bc7f3d195d3be" +PV:append = "+git${SRCPV}" + +RDEPENDS:${PN} += "linux-firmware-qcom-adreno-a3xx" + +do_install:append() { + install -d ${D}${FW_QCOM_PATH} + + install -m 0644 dsps.mbn ${D}${FW_QCOM_PATH} + install -m 0644 q6.mbn ${D}${FW_QCOM_PATH} + install -m 0644 vidc.mbn ${D}${FW_QCOM_PATH} + install -m 0644 wcnss.mbn ${D}${FW_QCOM_PATH} + + install -m 0644 vendor/qcom/${FW_QCOM_NAME}/proprietary/vidc_1080p.fw ${D}${FW_QCOM_PATH} + + install -m 0644 ${WORKDIR}/git/WCNSS_cfg.dat ${D}${FW_QCOM_PATH} + install -m 0644 ${WORKDIR}/git/WCNSS_qcom_wlan_nv.bin ${D}${FW_QCOM_PATH} +} diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-nexus5.bb b/recipes-bsp/firmware-nexus/firmware-qcom-nexus5.bb new file mode 100644 index 0000000..f11fc9a --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-nexus5.bb @@ -0,0 +1,23 @@ +DESCRIPTION = "QCOM Firmware for LGE Google Nexus 5" + +FW_QCOM_NAME = "hammerhead" +FW_QCOM_SUBDIR = "msm8974/LGE/${FW_QCOM_NAME}" +AOSP_BUILD = "m4b30z" +CHECKSUM_qcom = "d6c0fe26" +CHECKSUM_factory = "625c027b" + +SRC_URI[qcom.sha256sum] = "f8c29461e279b311958f9476ef78b9ab654aeb9903f5c2912f11d5d4bcfd021d" +SRC_URI[factory.sha256sum] = "625c027b21afe6de7c3d0de66e3a42000269dd00c2ef9a5347007734537f3ea2" + +RDEPENDS:${PN} += "linux-firmware-qcom-adreno-a3xx" + +require recipes-bsp/firmware-nexus/firmware-qcom-nexus.inc +RADIO_VFAT = "1" +require recipes-bsp/firmware-nexus/firmware-qcom-radio.inc + +do_install:append() { + install -d ${D}${FW_QCOM_PATH} + + install -m 0644 adsp.mbn ${D}${FW_QCOM_PATH} + install -m 0644 venus.mbn ${D}${FW_QCOM_PATH} +} diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-nexus5x.bb b/recipes-bsp/firmware-nexus/firmware-qcom-nexus5x.bb new file mode 100644 index 0000000..317ea5a --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-nexus5x.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "QCOM Firmware for LGE Google Nexus 5X" + +LIC_FILES_CHKSUM = "file://license.txt;md5=76ab107d8eb5f8a7927011ac29447b4a" + +FW_QCOM_NAME = "bullhead" +FW_QCOM_SUBDIR = "msm8992/LGE/${FW_QCOM_NAME}" +VENDOR = "lge" +AOSP_BUILD = "opm7.181205.001" +CHECKSUM_vendor = "bb4176a6" +CHECKSUM_factory = "5f189d84" + +SRC_URI[vendor.sha256sum] = "eaba58f7219eb477697869454138d151b38a1589db1ab40cec1b4525774fe869" +SRC_URI[factory.sha256sum] = "5f189d84781a26b49aca0de84a941a32ae0150da0aab89f1d7709d56c31b3c0a" + +require firmware-qcom-pixel.inc +RADIO_VFAT = "1" +require firmware-qcom-radio.inc diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-nexus6.bb b/recipes-bsp/firmware-nexus/firmware-qcom-nexus6.bb new file mode 100644 index 0000000..9d6df42 --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-nexus6.bb @@ -0,0 +1,19 @@ +DESCRIPTION = "QCOM Firmware for Motorola Google Nexus 6" + +FW_QCOM_NAME = "shamu" +FW_QCOM_SUBDIR = "apq8084/Motorola/${FW_QCOM_NAME}" +AOSP_BUILD = "ngi77b" +CHECKSUM_qcom = "b5a5aacc" + +SRC_URI[qcom.sha256sum] = "811ccc3c8bd4b832a26fc36aac5a46af7000d849c7217032e1d0819bfb2000dc" + +RDEPENDS:${PN} += "linux-firmware-qcom-adreno-a4xx" + +require recipes-bsp/firmware-nexus/firmware-qcom-nexus.inc + +do_install:append() { + install -d ${D}${FW_QCOM_PATH} + + install -m 0644 adsp.mbn ${D}${FW_QCOM_PATH} + install -m 0644 venus.mbn ${D}${FW_QCOM_PATH} +} diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-nexus6p.bb b/recipes-bsp/firmware-nexus/firmware-qcom-nexus6p.bb new file mode 100644 index 0000000..aa69cb5 --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-nexus6p.bb @@ -0,0 +1,16 @@ +DESCRIPTION = "QCOM Firmware for LGE Google Nexus 6P" + +LIC_FILES_CHKSUM = "file://license.txt;md5=ab57c77a2230b7254cd6be1f1c0d6806" + +FW_QCOM_NAME = "angler" +FW_QCOM_SUBDIR = "msm8994/Huawei/${FW_QCOM_NAME}" +VENDOR = "huawei" +AOSP_BUILD = "opm7.181205.001" +CHECKSUM_vendor = "52ed73ce" +CHECKSUM_factory = "b75ce068" + +SRC_URI[vendor.sha256sum] = "2eb9a77de059739d33c7fad07e34034f03a93d70eea39460bb0d9278e5763053" +SRC_URI[factory.sha256sum] = "b75ce068f23a0e793805f80fccbc081eca52861ef5eb080c47f502de4c3f9713" + +require firmware-qcom-pixel.inc +require firmware-qcom-radio.inc diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-nexus7-2013.bb b/recipes-bsp/firmware-nexus/firmware-qcom-nexus7-2013.bb new file mode 100644 index 0000000..f9ef2e2 --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-nexus7-2013.bb @@ -0,0 +1,33 @@ +DESCRIPTION = "QCOM Firmware for Asus Google Nexus 7 (2013)" + +FW_QCOM_NAME = "flo" +FW_QCOM_SUBDIR = "apq8064/Asus/${FW_QCOM_NAME}" +AOSP_BUILD = "mob30x" +CHECKSUM_qcom = "43963492" + +SRC_URI[qcom.sha256sum] = "1ccc740a461be8ea84369b1c13fc89cb3f26f8bc1400fedec8b3dd1f630a7994" + +RDEPENDS:${PN} += "linux-firmware-qcom-adreno-a3xx" + +require recipes-bsp/firmware-nexus/firmware-qcom-nexus.inc + +SRC_URI += "git://android.googlesource.com/device/asus/${FW_QCOM_NAME};protocol=https;branch=master;name=aosp" +SRCREV_aosp = "9d9fee956a9c4c7be4f69f7a472d3fc0e759c2dd" +PV:append = "+git${SRCPV}" + +do_install:append() { + install -d ${D}${FW_QCOM_PATH} + + install -m 0644 dsps.mbn ${D}${FW_QCOM_PATH} + install -m 0644 gss.mbn ${D}${FW_QCOM_PATH} + install -m 0644 q6.mbn ${D}${FW_QCOM_PATH} + install -m 0644 vidc.mbn ${D}${FW_QCOM_PATH} + install -m 0644 wcnss.mbn ${D}${FW_QCOM_PATH} + + install -m 0644 vendor/qcom/${FW_QCOM_NAME}/proprietary/vidcfw.elf ${D}${FW_QCOM_PATH} + install -m 0644 vendor/qcom/${FW_QCOM_NAME}/proprietary/vidc_1080p.fw ${D}${FW_QCOM_PATH} + + install -m 0644 ${WORKDIR}/git/WCNSS_cfg.dat ${D}${FW_QCOM_PATH} + install -m 0644 ${WORKDIR}/git/WCNSS_qcom_wlan_nv_deb.bin ${D}${FW_QCOM_PATH} + install -m 0644 ${WORKDIR}/git/WCNSS_qcom_wlan_nv_flo.bin ${D}${FW_QCOM_PATH}/WCNSS_qcom_wlan_nv.bin +} diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-pixel.bb b/recipes-bsp/firmware-nexus/firmware-qcom-pixel.bb new file mode 100644 index 0000000..0d5886c --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-pixel.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "QCOM Firmware for Google Pixel / Pixel XL" + +FW_QCOM_NAME = "sailfish" +FW_QCOM_SUBDIR = "msm8996/Google/${FW_QCOM_NAME}" +EXTRA_DEVICE_SUBDIR = "msm8996/Google/marlin" +AOSP_BUILD = "qp1a.191005.007.a3" +CHECKSUM_vendor = "a1615a0f" +CHECKSUM_factory = "d4552659" + +SRC_URI[vendor.sha256sum] = "1cfffa986c4640a8bb3466f69a6f9bf511b4b6a8cb06fb0e1474a331e53876d6" +SRC_URI[factory.sha256sum] = "d455265945bb936a653730031af7d7a4aba70dc0c775024666a53491c9833b61" + +RDEPENDS:${PN} += "linux-firmware-qcom-adreno-a530" + +require firmware-qcom-pixel.inc +RADIO_ROOTDIR = "1" +require firmware-qcom-radio.inc diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc b/recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc new file mode 100644 index 0000000..c354631 --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc @@ -0,0 +1,79 @@ +LICENSE = "Proprietary" +LIC_FILES_CHKSUM ?= "file://license.txt;md5=63a79fa5adc049f2e411b1f700cf0f19" + +VENDOR ?= "google_devices" +EXTRA_DEVICE_SUBDIR ??= "" + +SRC_URI = "https://dl.google.com/dl/android/aosp/${VENDOR}-${FW_QCOM_NAME}-${AOSP_BUILD}-${CHECKSUM_vendor}.tgz;name=vendor" + +PV = "${AOSP_BUILD}" + +require recipes-bsp/firmware/firmware-qcom.inc + +DEPENDS += "pil-squasher-native" + +VENDOR_IMG_SPARSE ?= "1" + +# extract the license file +do_extract() { + head -n 280 ${WORKDIR}/extract-${VENDOR}-${FW_QCOM_NAME}.sh | tail -n +16 > ${S}/license.txt + tail -n +315 ${WORKDIR}/extract-${VENDOR}-${FW_QCOM_NAME}.sh | tar xzfv - -C ${S} + if [ "${VENDOR_IMG_SPARSE}" = "1" ] ; then + simg2img ${S}/vendor/${VENDOR}/${FW_QCOM_NAME}/proprietary/vendor.img ${B}/vendor.img + else + rm -f ${B}/vendor.img + ln -sr ${S}/vendor/${VENDOR}/${FW_QCOM_NAME}/proprietary/vendor.img ${B}/vendor.img + fi + + # FIXME: also extract fastrpc shell + mkdir -p ${B}/firmware + debugfs ${B}/vendor.img -R 'ls -p /firmware' | \ + grep '^/[0-9]*/100' | cut -d/ -f6 > ${B}/firmware/fw.lst + debugfs ${B}/vendor.img -R 'ls -p /firmware' | \ + grep '^/[0-9]*/100' | cut -d/ -f6 | \ + while read name ; do echo "dump /firmware/$name ${B}/firmware/$name" ; done | \ + debugfs ${B}/vendor.img + + radio="${S}/vendor/${VENDOR}/${FW_QCOM_NAME}/proprietary/radio.img" + if [ -r "${radio}" ] ; then + rm -rf "${radio}_images" + qc_image_unpacker -i "${radio}" -f || exit 1 + + if ! [ -r "${radio}_images"/modem ] ; then + echo "modem image not found" + exit 1 + fi + + mkdir -p ${B}/firmware + mcopy -i "${radio}_images"/modem ::/image/* ${B}/firmware/ + mdir -i "${radio}_images"/modem ::/image + fi +} +addtask extract after do_unpack before do_patch +do_extract[depends] += "rust-android-sparse-native:do_populate_sysroot e2fsprogs-native:do_populate_sysroot qc-image-unpacker-native:do_populate_sysroot mtools-native:do_populate_sysroot" + +do_compile() { + for fw in ${B}/firmware/*.mdt ; do + pil-squasher ${B}/`basename $fw mdt`mbn $fw || exit 1 + done +} + +do_install() { + install -d ${D}${FW_QCOM_PATH} + for fw in adsp cdsp ipa_fws modem slpi venus ; do + ls ${B}/$fw*.mbn && install -m 0644 ${B}/$fw*.mbn ${D}${FW_QCOM_PATH} + done + + ls ${B}/firmware/*.jsn && install -m 0644 ${B}/firmware/*.jsn ${D}${FW_QCOM_PATH} + + ls ${B}/firmware/a[0-9]*_gmu.bin && install -m 0644 ${B}/firmware/a[0-9]*_gmu.bin ${D}${FW_QCOM_PATH} + ls ${B}/a[0-9]*.mbn && install -m 0644 ${B}/a[0-9]*.mbn ${D}${FW_QCOM_PATH} + + install -m 0644 license.txt ${D}${FW_QCOM_PATH} + + # Remove duplicates + rm -f ${D}${FW_QCOM_PATH}/a630_gmu.bin + rm -f ${D}${FW_QCOM_PATH}/a650_gmu.bin + + [ -z "${EXTRA_DEVICE_SUBDIR}" ] || ln -sr ${D}${FW_QCOM_PATH} ${D}${FW_QCOM_BASE_PATH}/${EXTRA_DEVICE_SUBDIR} +} diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-pixel2.bb b/recipes-bsp/firmware-nexus/firmware-qcom-pixel2.bb new file mode 100644 index 0000000..8a43922 --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-pixel2.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "QCOM Firmware for Google Pixel 2 / 2XL" + +FW_QCOM_NAME = "walleye" +FW_QCOM_SUBDIR = "msm8998/Google/${FW_QCOM_NAME}" +EXTRA_DEVICE_SUBDIR = "msm8998/Google/taimen" +AOSP_BUILD = "rp1a.201005.004.a1" +CHECKSUM_vendor = "2fdea26a" + +SRC_URI[vendor.sha256sum] = "4ec6cf5dfd6616ae39cf61f95657662e4b17dd193b6ab30547ef016359cfc118" + +RDEPENDS:${PN} += "linux-firmware-qcom-adreno-a530" + +require firmware-qcom-pixel.inc + +do_install:append() { + install -m 0644 ${B}/firmware/a540_gpmu.fw2 ${D}${FW_QCOM_PATH} +} diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-pixel3.bb b/recipes-bsp/firmware-nexus/firmware-qcom-pixel3.bb new file mode 100644 index 0000000..cf64e35 --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-pixel3.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "QCOM Firmware for Google Pixel 3 / 3 XL" + +FW_QCOM_NAME = "blueline" +FW_QCOM_SUBDIR = "sdm845/Google/${FW_QCOM_NAME}" +EXTRA_DEVICE_SUBDIR = "sdm845/Google/crosshatch" +AOSP_BUILD = "sp1a.210812.016.c1" +CHECKSUM_vendor = "0b9f3bc0" + +SRC_URI[vendor.sha256sum] = "5e48f4769d3cdba3c958f956d13df56b60e18e8fe03893d38f4125b421ab7ff9" + +RDEPENDS:${PN} += "linux-firmware-qcom-adreno-a630" + +require firmware-qcom-pixel.inc diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-pixel3a.bb b/recipes-bsp/firmware-nexus/firmware-qcom-pixel3a.bb new file mode 100644 index 0000000..4431055 --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-pixel3a.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "QCOM Firmware for Google Pixel 3a / 3a XL" + +FW_QCOM_NAME = "sargo" +FW_QCOM_SUBDIR = "sdm670/Google/${FW_QCOM_NAME}" +EXTRA_DEVICE_SUBDIR = "sdm670/Google/bonito" +AOSP_BUILD = "sp2a.220505.008" +CHECKSUM_vendor = "772e1993" + +SRC_URI[vendor.sha256sum] = "702c4563207f77eefa7822ffbfaf0cc8a33059140f417b2deda1844ae4bb097c" + +RDEPENDS:${PN} += "linux-firmware-qcom-adreno-a630" + +require firmware-qcom-pixel.inc diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-pixel4.bb b/recipes-bsp/firmware-nexus/firmware-qcom-pixel4.bb new file mode 100644 index 0000000..af88c70 --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-pixel4.bb @@ -0,0 +1,14 @@ +DESCRIPTION = "QCOM Firmware for Google Pixel 4 / 4 XL" + +FW_QCOM_NAME = "flame" +FW_QCOM_SUBDIR = "sm8150/Google/${FW_QCOM_NAME}" +EXTRA_DEVICE_SUBDIR = "sm8150/Google/coral" +AOSP_BUILD = "tp1a.221005.002" +CHECKSUM_vendor = "bed97aaa" + +SRC_URI[vendor.sha256sum] = "6644a17f9a5ac25b7f63fa3130b8ab0b8dbe768915fabadce3da9cab5dd39e35" + +RDEPENDS:${PN} += "linux-firmware-qcom-adreno-a630" + +VENDOR_IMG_SPARSE = "0" +require firmware-qcom-pixel.inc diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-pixel4a-5g.bb b/recipes-bsp/firmware-nexus/firmware-qcom-pixel4a-5g.bb new file mode 100644 index 0000000..989038b --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-pixel4a-5g.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "QCOM Firmware for Google Pixel 4a (5G)" + +FW_QCOM_NAME = "bramble" +FW_QCOM_SUBDIR = "sm7250/Google/${FW_QCOM_NAME}" +AOSP_BUILD = "tp1a.221105.002" +CHECKSUM_vendor = "793c7b07" + +SRC_URI[vendor.sha256sum] = "b643f4f01a87750094049e0854abc6f2b506560bdc556fcc449eb9c2ff19038e" + +RDEPENDS:${PN} += "linux-firmware-qcom-adreno-a650" + +VENDOR_IMG_SPARSE = "0" +require firmware-qcom-pixel.inc diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-pixel4a.bb b/recipes-bsp/firmware-nexus/firmware-qcom-pixel4a.bb new file mode 100644 index 0000000..07490c3 --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-pixel4a.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "QCOM Firmware for Google Pixel 4a" + +FW_QCOM_NAME = "sunfish" +FW_QCOM_SUBDIR = "sdm730/Google/${FW_QCOM_NAME}" +AOSP_BUILD = "tp1a.221105.002" +CHECKSUM_vendor = "6d6cfc6a" + +SRC_URI[vendor.sha256sum] = "5013b1aad7ae7a0724f08e26bf73954464d8a314b8c10f21f4e62e49237907c5" + +RDEPENDS:${PN} += "linux-firmware-qcom-adreno-a630" + +VENDOR_IMG_SPARSE = "0" +require firmware-qcom-pixel.inc diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-pixel5.bb b/recipes-bsp/firmware-nexus/firmware-qcom-pixel5.bb new file mode 100644 index 0000000..bf5e855 --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-pixel5.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "QCOM Firmware for Google Pixel 5" + +FW_QCOM_NAME = "redfin" +FW_QCOM_SUBDIR = "sm7250/Google/${FW_QCOM_NAME}" +AOSP_BUILD = "tp1a.221105.002" +CHECKSUM_vendor = "2b78e8a6" + +SRC_URI[vendor.sha256sum] = "e2ab6c9024c282ace3fca7d66522075c4fc5188bcb00b3fb9dd8230056aef93f" + +RDEPENDS:${PN} += "linux-firmware-qcom-adreno-a650" + +VENDOR_IMG_SPARSE = "0" +require firmware-qcom-pixel.inc diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-pixel5a-5g.bb b/recipes-bsp/firmware-nexus/firmware-qcom-pixel5a-5g.bb new file mode 100644 index 0000000..3ac989c --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-pixel5a-5g.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "QCOM Firmware for Google Pixel 5a 5G" + +FW_QCOM_NAME = "barbet" +FW_QCOM_SUBDIR = "sm7250/Google/${FW_QCOM_NAME}" +AOSP_BUILD = "tp1a.221105.002" +CHECKSUM_vendor = "425252ac" + +SRC_URI[vendor.sha256sum] = "72ccf1e403824214bfbfeccac55c865bb179b15ff50f9066f87bde4c925fbc27" + +RDEPENDS:${PN} += "linux-firmware-qcom-adreno-a650" + +VENDOR_IMG_SPARSE = "0" +require firmware-qcom-pixel.inc diff --git a/recipes-bsp/firmware-nexus/firmware-qcom-radio.inc b/recipes-bsp/firmware-nexus/firmware-qcom-radio.inc new file mode 100644 index 0000000..4310684 --- /dev/null +++ b/recipes-bsp/firmware-nexus/firmware-qcom-radio.inc @@ -0,0 +1,34 @@ +FACTORY_NAME ?= "${FW_QCOM_NAME}" +SRC_URI += "https://dl.google.com/dl/android/aosp/${FACTORY_NAME}-${AOSP_BUILD}-factory-${CHECKSUM_factory}.zip;name=factory" + +DEPENDS += "pil-squasher-native qc-image-unpacker-native" + +do_extract[depends] += "mtools-native:do_populate_sysroot" + +do_extract:append() { + mkdir -p ${B}/radio + radio="${WORKDIR}/${FACTORY_NAME}-${AOSP_BUILD}/radio-*img" + if [ "${RADIO_VFAT}" = "1" ] ; then + mcopy -i $radio ::/image/* ${B}/radio + else + rm -rf ${radio}_images + qc_image_unpacker -i $radio -f || exit 1 + if [ "${RADIO_ROOTDIR}" = "1" ] ; then + mcopy -i ${radio}_images/modem ::/* ${B}/radio + else + mcopy -i ${radio}_images/modem ::/image/* ${B}/radio + fi + fi +} + +do_compile:append() { + pil-squasher ${B}/radio/modem.mbn ${B}/radio/modem.mdt + if [ -r ${B}/radio/mba.mdt ] ; then + pil-squasher ${B}/radio/mba.mbn ${B}/radio/mba.mdt + fi +} + +do_install:append() { + install -d ${D}${FW_QCOM_PATH} + install -m 0644 ${B}/radio/*.mbn ${D}${FW_QCOM_PATH} +} diff --git a/recipes-bsp/firmware-woa/files/adspr.jsn b/recipes-bsp/firmware-woa/files/adspr.jsn new file mode 100644 index 0000000..29445b7 --- /dev/null +++ b/recipes-bsp/firmware-woa/files/adspr.jsn @@ -0,0 +1,22 @@ +{ + "sr_version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "sr_domain": { + "soc": "msm", + "domain": "adsp", + "subdomain": "root_pd", + "qmi_instance_id": 74 + }, + "sr_service": [ + { + "provider": "tms", + "service": "servreg", + "service_data_valid": 0, + "service_data": 0, + "dcomment": "data can be used to configure ACK timeout.Make data_valid 1 as well.Unit is second" + } + ] +} diff --git a/recipes-bsp/firmware-woa/files/adspua.jsn b/recipes-bsp/firmware-woa/files/adspua.jsn new file mode 100644 index 0000000..ab4254a --- /dev/null +++ b/recipes-bsp/firmware-woa/files/adspua.jsn @@ -0,0 +1,29 @@ +{ + "sr_version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "sr_domain": { + "soc": "msm", + "domain": "adsp", + "subdomain": "audio_pd", + "qmi_instance_id": 74 + }, + "sr_service": [ + { + "provider": "tms", + "service": "servreg", + "service_data_valid": 0, + "service_data": 0, + "dcomment": "data can be used to configure ACK timeout.Make data_valid 1 as well.Unit is second" + }, + { + "provider": "avs", + "service": "audio", + "service_data_valid": 0, + "service_data": 0, + "dcomment": "No comment" + } + ] +}
\ No newline at end of file diff --git a/recipes-bsp/firmware-woa/files/battmgr.jsn b/recipes-bsp/firmware-woa/files/battmgr.jsn new file mode 100644 index 0000000..504cd31 --- /dev/null +++ b/recipes-bsp/firmware-woa/files/battmgr.jsn @@ -0,0 +1,22 @@ +{ + "sr_version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "sr_domain": { + "soc": "msm", + "domain": "adsp", + "subdomain": "charger_pd", + "qmi_instance_id": 74 + }, + "sr_service": [ + { + "provider": "tms", + "service": "servreg", + "service_data_valid": 0, + "service_data": 0, + "dcomment": "data can be used to configure ACK timeout.Make data_valid 1 as well.Unit is second" + } + ] +}
\ No newline at end of file diff --git a/recipes-bsp/firmware-woa/files/cdspr.jsn b/recipes-bsp/firmware-woa/files/cdspr.jsn new file mode 100644 index 0000000..4491d95 --- /dev/null +++ b/recipes-bsp/firmware-woa/files/cdspr.jsn @@ -0,0 +1,22 @@ +{ + "sr_version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "sr_domain": { + "soc": "msm", + "domain": "cdsp", + "subdomain": "root_pd", + "qmi_instance_id": 76 + }, + "sr_service": [ + { + "provider": "tms", + "service": "servreg", + "service_data_valid": 0, + "service_data": 0, + "dcomment": "data can be used to configure ACK timeout.Make data_valid 1 as well.Unit is second" + } + ] +}
\ No newline at end of file diff --git a/recipes-bsp/firmware-woa/files/slpir.jsn b/recipes-bsp/firmware-woa/files/slpir.jsn new file mode 100644 index 0000000..1264d4c --- /dev/null +++ b/recipes-bsp/firmware-woa/files/slpir.jsn @@ -0,0 +1,21 @@ +{ + "sr_version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "sr_domain": { + "soc": "msm", + "domain": "slpi", + "subdomain": "root_pd", + "qmi_instance_id": 90 + }, + "sr_service": [ + { + "provider": "tms", + "service": "servreg", + "service_data_valid": 0, + "service_data": 0 + } + ] +}
\ No newline at end of file diff --git a/recipes-bsp/firmware-woa/files/slpius.jsn b/recipes-bsp/firmware-woa/files/slpius.jsn new file mode 100644 index 0000000..9da70bd --- /dev/null +++ b/recipes-bsp/firmware-woa/files/slpius.jsn @@ -0,0 +1,21 @@ +{ + "sr_version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "sr_domain": { + "soc": "msm", + "domain": "slpi", + "subdomain": "sensor_pd", + "qmi_instance_id": 90 + }, + "sr_service": [ + { + "provider": "tms", + "service": "servreg", + "service_data_valid": 0, + "service_data": 0 + } + ] +}
\ No newline at end of file diff --git a/recipes-bsp/firmware-woa/firmware-qcom-sc8180x_200.0.105.0.bb b/recipes-bsp/firmware-woa/firmware-qcom-sc8180x_200.0.105.0.bb new file mode 100644 index 0000000..3709bb4 --- /dev/null +++ b/recipes-bsp/firmware-woa/firmware-qcom-sc8180x_200.0.105.0.bb @@ -0,0 +1,40 @@ +DESCRIPTION = "Qualcomm Firmware for Compute SC8180X devices" + +LICENSE = "CLOSED" + +FW_QCOM_NAME = "sc8180x" +WOA_SUBDIR = "8180_CLS" + +SRC_URI = "\ + ${WOA_FW_URL}/qcdx8180.cab;name=dx \ + ${WOA_FW_URL}/qcipa8180.cab;name=ipa \ + ${WOA_FW_URL}/qcsubsys_ext_adsp8180.cab;name=adsp \ + ${WOA_FW_URL}/qcsubsys_ext_cdsp8180.cab;name=cdsp \ + ${WOA_FW_URL}/qcsubsys_ext_mpss8180.cab;name=mpss \ + ${WOA_FW_URL}/qcsubsys_ext_scss8180.cab;name=slpi \ + file://adspr.jsn \ + file://adspua.jsn \ + file://battmgr.jsn \ + file://cdspr.jsn \ + file://slpir.jsn \ + file://slpius.jsn \ +" + +SRC_URI[dx.sha256sum] = "c5295509720898758e9a61f1f5f64a013cb6c7706e82d1598232cdca5754d115" +SRC_URI[ipa.sha256sum] = "e083779b7ee99edfd0fc4a54fb562c355476cf359f29cc729052158f97c3769d" +SRC_URI[adsp.sha256sum] = "0679e45ae07b4b19db97ac06b12fce64cba4dfe65102d1f615564ca90387e8dd" +SRC_URI[cdsp.sha256sum] = "eb6b1ff4d02736cd2b2ecaaf4136c164d712fcec7d8ad232434be1c67b703ffc" +SRC_URI[mpss.sha256sum] = "7c7ed01e9c8cff1c7d1546a2b6f14c23d9224afd0de9a6f52c33ad04bfe053a8" +SRC_URI[slpi.sha256sum] = "4dc4be421f46ffa3ee8b9141faac4214e7d19e60dc7c63734ef2bdba08cca73d" + +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-${FW_QCOM_NAME}-modem \ + linux-firmware-qcom-${FW_QCOM_NAME}-sensors \ + linux-firmware-qcom-${FW_QCOM_NAME}-venus \ +" + +require firmware-woa.inc diff --git a/recipes-bsp/firmware-woa/firmware-woa.inc b/recipes-bsp/firmware-woa/firmware-woa.inc new file mode 100644 index 0000000..0624ecb --- /dev/null +++ b/recipes-bsp/firmware-woa/firmware-woa.inc @@ -0,0 +1,19 @@ +DEPENDS += "cabextract-native" +require recipes-bsp/firmware/firmware-qcom.inc + +WOA_FW_URL = "https://github.com/WOA-Project/Qualcomm-Reference-Drivers/raw/master/${WOA_SUBDIR}/${PV}" + +do_compile:append() { + for file in ${WORKDIR}/*cab ; do + cabextract $file || exit 1 + done +} + +do_install:append() { + install -d ${D}${FW_QCOM_PATH} + + install -m 0644 ${B}/*.mbn ${D}${FW_QCOM_PATH} + ls ${B}/*.elf && install -m 0644 ${B}/*.elf ${D}${FW_QCOM_PATH} + + install -m 0644 ${WORKDIR}/*.jsn ${D}${FW_QCOM_PATH} +} diff --git a/recipes-bsp/firmware/firmware-ath6kl_git.bb b/recipes-bsp/firmware/firmware-ath6kl_git.bb new file mode 100644 index 0000000..81d237a --- /dev/null +++ b/recipes-bsp/firmware/firmware-ath6kl_git.bb @@ -0,0 +1,49 @@ +# Extra firmware files, which are covered by the separate license. +# They are not a part of linux-firmware and will never be: +# https://lists.infradead.org/pipermail/ath6kl/2017-July/000296.html + +SUMMARY = "Additional firmware files for Qualcomm/Atheros Ath6k SoC" + +LICENSE = "Firmware-qualcommAthos_ath6kl" +LIC_FILES_CHKSUM = "file://LICENSE.qca_firmware;md5=2a397c0e988f4c52d3d526133b617c8d" +NO_GENERIC_LICENSE[Firmware-qualcommAthos_ath6kl] = "LICENSE.qca_firmware" + +SRC_URI = "git://github.com/qca/ath6kl-firmware;protocol=https;branch=master" +SRCREV = "2e02576c1dab6fd35118eea1004f50aaaed3794f" + +PV = "3.5.0.349-1+git${SRCPV}" + +S = "${WORKDIR}/git" + +inherit allarch + +CLEANBROKEN = "1" + +do_compile() { + : +} + +FWDIR = "${nonarch_base_libdir}/firmware" + +do_install() { + install -d ${D}${FWDIR}/ath6k/AR6004/hw1.3 + install -d ${D}${FWDIR}/ath6k/AR6004/hw3.0 + + install -m 0644 ath6k/AR6004/hw1.3/* ${D}${FWDIR}/ath6k/AR6004/hw1.3 + install -m 0644 ath6k/AR6004/hw3.0/* ${D}${FWDIR}/ath6k/AR6004/hw3.0 + + install -m 0644 LICENSE.qca_firmware ${D}${FWDIR} +} + +FILES:${PN} += "${FWDIR}" + +# There is a conflict between linux-firmware version and and the updated one + +inherit update-alternatives +ALTERNATIVE:${PN} = "ar6004-hw13-bdata" +ALTERNATIVE_LINK_NAME[ar6004-hw13-bdata] = "${nonarch_base_libdir}/firmware/ath6k/AR6004/hw1.3/bdata.bin" +ALTERNATIVE_PRIORITY = "100" + +# Firmware files are generally not ran on the CPU, so they can be +# allarch despite being architecture specific +INSANE_SKIP = "arch" diff --git a/recipes-bsp/firmware/firmware-qcom-adreno.inc b/recipes-bsp/firmware/firmware-qcom-adreno.inc new file mode 100644 index 0000000..2fad318 --- /dev/null +++ b/recipes-bsp/firmware/firmware-qcom-adreno.inc @@ -0,0 +1,40 @@ +# Handle Adreno firmware unpacking in a generic way +# Include the file to be able to dissect the archive. +# If ADRENO_URI is defined, the image will be dissected automatically +# Handle fwpath=... as a path to Adreno firmware inside the archive + +ADRENO_URI ??= "" + +# 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 += "${@['', '${ADRENO_URI};subdir=adreno;name=adreno'][d.getVar('ADRENO_URI') != ''] }" + +# the file is unpacked to this dir, clean it up +do_unpack[cleandirs] = "${WORKDIR}/adreno" + +DEPENDS += "pil-squasher-native" + +python () { + uri = d.getVar("ADRENO_URI") + if uri == "": + bb.warn("%s: not packaging ADRENO firmware. Please provide ADRENO_URI" % d.getVar("PN")) + else: + urldata = bb.fetch2.FetchData(d.getVar("ADRENO_URI"), d) + if "fwpath" in urldata.parm: + d.setVar("ADRENO_PATH", urldata.parm["fwpath"]) + else: + d.setVar("ADRENO_PATH", "") +} + +do_compile:append() { + if [ -n "${ADRENO_URI}" ] ; then + for fw in ${WORKDIR}/adreno/${ADRENO_PATH}/*_zap.mdt ; do + pil-squasher ${B}/`basename $fw mdt`mbn $fw || exit 1 + done + for fw in ${FW_QCOM_LIST} ; do + if [ -r ${WORKDIR}/adreno/${ADRENO_PATH}/$fw ] ; then + cp ${WORKDIR}/adreno/${ADRENO_PATH}/$fw ${B}/ + fi + done + fi +} diff --git a/recipes-bsp/firmware/firmware-qcom-dragonboard-apq8074.bb b/recipes-bsp/firmware/firmware-qcom-dragonboard-apq8074.bb new file mode 100644 index 0000000..595c41e --- /dev/null +++ b/recipes-bsp/firmware/firmware-qcom-dragonboard-apq8074.bb @@ -0,0 +1,21 @@ +# 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" + +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-dragonboard410c.inc b/recipes-bsp/firmware/firmware-qcom-dragonboard410c.inc index 1e4b454..1acb8d0 100644 --- a/recipes-bsp/firmware/firmware-qcom-dragonboard410c.inc +++ b/recipes-bsp/firmware/firmware-qcom-dragonboard410c.inc @@ -3,32 +3,15 @@ DESCRIPTION = "QCOM Firmware for DragonBoard 410c" LICENSE = "Proprietary" LIC_FILES_CHKSUM = "file://LICENSE;md5=4d087ee0965cb059f1b2f9429e166f64" -DEPENDS += "mtools-native pil-squasher-native" +FW_QCOM_NAME = "apq8016" require recipes-bsp/firmware/firmware-qcom.inc S = "${WORKDIR}/linux-board-support-package-r${PV}" do_install() { - install -d ${D}${nonarch_base_libdir}/firmware/ - - install -d ${D}/boot - cp ./efs-seed/fs_image_linux.tar.gz.mbn.img ${D}/boot/modem_fsg - - cp -r ./proprietary-linux/wlan ${D}${nonarch_base_libdir}/firmware/ - - install -d ${D}${nonarch_base_libdir}/firmware/qcom/msm8916 - MTOOLS_SKIP_CHECK=1 mcopy -i ./bootloaders-linux/NON-HLOS.bin \ - ::image/modem.* ::image/mba.mbn ::image/wcnss.* ${D}${nonarch_base_libdir}/firmware/qcom/msm8916 - - pil-squasher ${D}${nonarch_base_libdir}/firmware/qcom/msm8916/modem.mbn \ - ${D}${nonarch_base_libdir}/firmware/qcom/msm8916/modem.mdt - - pil-squasher ${D}${nonarch_base_libdir}/firmware/qcom/msm8916/wcnss.mbn \ - ${D}${nonarch_base_libdir}/firmware/qcom/msm8916/wcnss.mdt + install -d ${D}${FW_QCOM_PATH} install -d ${D}${sysconfdir}/ install -m 0644 LICENSE ${D}${sysconfdir}/QCOM-LINUX-BOARD-SUPPORT-LICENSE-${PN} } - -FILES:${PN} += "/boot/modem_fsg" diff --git a/recipes-bsp/firmware/firmware-qcom-dragonboard820c_01700.1.bb b/recipes-bsp/firmware/firmware-qcom-dragonboard820c_01700.1.bb index f3ca958..816a8ae 100644 --- a/recipes-bsp/firmware/firmware-qcom-dragonboard820c_01700.1.bb +++ b/recipes-bsp/firmware/firmware-qcom-dragonboard820c_01700.1.bb @@ -7,37 +7,22 @@ SRC_URI = "https://releases.linaro.org/96boards/dragonboard820c/qualcomm/firmwar SRC_URI[md5sum] = "587138c5e677342db9a88d5c8747ec6c" SRC_URI[sha256sum] = "6ee9c461b2b5dd2d3bd705bb5ea3f44b319ecb909b2772f305ce12439e089cd9" -require recipes-bsp/firmware/firmware-qcom.inc +FW_QCOM_NAME = "apq8096" -DEPENDS += "pil-squasher-native qca-swiss-army-knife-native" -inherit python3native +require recipes-bsp/firmware/firmware-qcom.inc S = "${WORKDIR}/linux-board-support-package-r${PV}" -do_compile() { - # Build board-2.bin needed by WiFi - ath10k-generate-pci-board-2_json.sh ./proprietary-linux/ board-2.json - python3 "${STAGING_BINDIR_NATIVE}/ath10k-bdencoder" -c board-2.json -o board-2.bin -} - do_install() { install -d ${D}${nonarch_base_libdir}/firmware/ - install -d ${D}${nonarch_base_libdir}/firmware/qcom/msm8996/ + install -d ${D}${FW_QCOM_PATH}/ - install -m 0444 ./proprietary-linux/adsp*.* ${D}${nonarch_base_libdir}/firmware/qcom/msm8996/ - pil-squasher ${D}${nonarch_base_libdir}/firmware/qcom/msm8996/adsp.mbn ./proprietary-linux/adsp.mdt - - install -m 0444 ./bootloaders-linux/adspso.bin ${D}${nonarch_base_libdir}/firmware/qcom/msm8996/ - - install -d ${D}${nonarch_base_libdir}/firmware/ath10k/QCA6174/hw3.0/ - install -m 0444 ${S}/board-2.bin ${D}${nonarch_base_libdir}/firmware/ath10k/QCA6174/hw3.0/board-2.bin + install -m 0444 ./bootloaders-linux/adspso.bin ${D}${FW_QCOM_PATH}/ install -d ${D}${sysconfdir}/ install -m 0644 LICENSE ${D}${sysconfdir}/QCOM-LINUX-BOARD-SUPPORT-LICENSE-${PN} } -inherit update-alternatives - -ALTERNATIVE:${PN} = "qca6174-board2" -ALTERNATIVE_LINK_NAME[qca6174-board2] = "/lib/firmware/ath10k/QCA6174/hw3.0/board-2.bin" -ALTERNATIVE_PRIORITY = "100" +SPLIT_FIRMWARE_PACKAGES = " \ + ${PN}-dspso \ +" diff --git a/recipes-bsp/firmware/firmware-qcom-dragonboard845c_20190529180356-v4.bb b/recipes-bsp/firmware/firmware-qcom-dragonboard845c_20190529180356-v4.bb index e23f465..b2760e8 100644 --- a/recipes-bsp/firmware/firmware-qcom-dragonboard845c_20190529180356-v4.bb +++ b/recipes-bsp/firmware/firmware-qcom-dragonboard845c_20190529180356-v4.bb @@ -7,31 +7,24 @@ SRC_URI = "https://releases.linaro.org/96boards/dragonboard845c/qualcomm/firmwar SRC_URI[md5sum] = "ad69855a1275547b16d94a1b5405ac62" SRC_URI[sha256sum] = "4289d2f2a7124b104d0274879e702aae9b1e50c42eec3747f8584c6744ef65e3" -require recipes-bsp/firmware/firmware-qcom.inc +FW_QCOM_NAME = "sdm845" -DEPENDS += "qca-swiss-army-knife-native" -inherit python3native +require recipes-bsp/firmware/firmware-qcom.inc -do_compile() { - # Build board-2.bin needed by WiFi - ath10k-generate-board-2_json.sh ./38-bdwlan_split board-2.json - python3 "${STAGING_BINDIR_NATIVE}/ath10k-bdencoder" -c board-2.json -o board-2.bin -} +DEPENDS += "pil-squasher-native" do_install() { install -d ${D}${nonarch_base_libdir}/firmware/ - install -d ${D}${nonarch_base_libdir}/firmware/qcom/sdm845 + install -d ${D}${FW_QCOM_PATH} - install -m 0444 ./08-dspso/dspso.bin ${D}${nonarch_base_libdir}/firmware/qcom/sdm845 + install -m 0444 ./08-dspso/dspso.bin ${D}${FW_QCOM_PATH} install -m 0444 ./17-USB3-201-202-FW/K2026090.mem ${D}${nonarch_base_libdir}/firmware/renesas_usb_fw.mem - install -m 0444 ./18-adreno-fw/a630_zap*.* ${D}${nonarch_base_libdir}/firmware/qcom/ - install -m 0444 ./20-adsp_split/firmware/adsp*.* ${D}${nonarch_base_libdir}/firmware/qcom/sdm845 - install -m 0444 ./21-cdsp_split/firmware/cdsp*.* ${D}${nonarch_base_libdir}/firmware/qcom/sdm845 - - install -d ${D}${nonarch_base_libdir}/firmware/ath10k/WCN3990/hw1.0/ - install -m 0444 ./board-2.bin ${D}${nonarch_base_libdir}/firmware/ath10k/WCN3990/hw1.0/ install -d ${D}${sysconfdir}/ install -m 0644 LICENSE.qcom.txt ${D}${sysconfdir}/QCOM-LINUX-BOARD-SUPPORT-LICENSE-${PN} } + +SPLIT_FIRMWARE_PACKAGES = " \ + ${PN}-dspso \ +" diff --git a/recipes-bsp/firmware/firmware-qcom-ifc6410.bb b/recipes-bsp/firmware/firmware-qcom-ifc6410.bb new file mode 100644 index 0000000..1fbeac2 --- /dev/null +++ b/recipes-bsp/firmware/firmware-qcom-ifc6410.bb @@ -0,0 +1,22 @@ +# Specify location of the corresponding NON-HLOS.bin file by adding +# NHLOS_URI:pn-firmware-qcom-ifc6410 = "..." to local.conf. Use "file://" +# if the file is provided locally. + +DESCRIPTION = "QCOM Firmware for Inforce IFC6410 board" + +LICENSE = "CLOSED" + +# ifc6410 firmware is unsigned, so install into generic location +FW_QCOM_NAME = "apq8064" + +FW_QCOM_LIST = "dsps.mbn gss.mbn q6.mbn wcnss.mbn" + +require recipes-bsp/firmware/firmware-qcom.inc +require recipes-bsp/firmware/firmware-qcom-nhlos.inc + +SPLIT_FIRMWARE_PACKAGES = " \ + linux-firmware-qcom-${FW_QCOM_NAME}-dsps \ + linux-firmware-qcom-${FW_QCOM_NAME}-gss \ + linux-firmware-qcom-${FW_QCOM_NAME}-q6 \ + linux-firmware-qcom-${FW_QCOM_NAME}-wifi \ +" diff --git a/recipes-bsp/firmware/firmware-qcom-ifc6560.bb b/recipes-bsp/firmware/firmware-qcom-ifc6560.bb new file mode 100644 index 0000000..03aca78 --- /dev/null +++ b/recipes-bsp/firmware/firmware-qcom-ifc6560.bb @@ -0,0 +1,30 @@ +# Specify location of the corresponding NON-HLOS.bin file by adding +# NHLOS_URI:pn-firmware-qcom-ifc6560 = "..." to local.conf. Use "file://" +# if the file is provided locally. + +DESCRIPTION = "QCOM Firmware for Inforce IFC6560 board" + +LICENSE = "CLOSED" + +# ifc6560 isn't locked, so install firmware into generic location +FW_QCOM_NAME = "sda660" + +FW_QCOM_LIST = "\ + a508_zap.mbn a512_zap.mbn \ + adsp.mbn \ + cdsp.mbn \ + mba.mbn modem.mbn modemuw.jsn \ + venus.mbn \ +" + +require recipes-bsp/firmware/firmware-qcom.inc +require recipes-bsp/firmware/firmware-qcom-nhlos.inc +require recipes-bsp/firmware/firmware-qcom-adreno.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}-modem \ + linux-firmware-qcom-${FW_QCOM_NAME}-venus \ +" diff --git a/recipes-bsp/firmware/firmware-qcom-nexus7-2013.bb b/recipes-bsp/firmware/firmware-qcom-nexus7-2013.bb deleted file mode 100644 index a17c5ac..0000000 --- a/recipes-bsp/firmware/firmware-qcom-nexus7-2013.bb +++ /dev/null @@ -1,40 +0,0 @@ -DESCRIPTION = "QCOM Firmware for Asus Google Nexus 7 (2013)" - -LICENSE = "Proprietary" -LIC_FILES_CHKSUM = "file://license.txt;md5=0d238870f50c84250a14191d17aaf1d5" - -SRC_URI = "https://dl.google.com/dl/android/aosp/qcom-flo-mob30x-43963492.tgz;name=google \ - git://android.googlesource.com/device/asus/flo;protocol=https;branch=master;name=aosp" -SRC_URI[google.md5sum] = "5c21950c751544cc92b5fe95c6f3be37" -SRC_URI[google.sha256sum] = "1ccc740a461be8ea84369b1c13fc89cb3f26f8bc1400fedec8b3dd1f630a7994" -SRCREV_aosp = "9d9fee956a9c4c7be4f69f7a472d3fc0e759c2dd" - -require recipes-bsp/firmware/firmware-qcom.inc - -DEPENDS += "pil-squasher-native" - -# extract the license file -do_extract() { - head -n 280 ${WORKDIR}/extract-qcom-flo.sh | tail -n +16 > ${S}/license.txt - tail -n +315 ${WORKDIR}/extract-qcom-flo.sh | tar xzfv - -C ${S} -} -addtask extract after do_unpack before do_patch - -do_compile() { - for fw in ${S}/vendor/qcom/flo/proprietary/*.mdt ; do - pil-squasher ${B}/`basename $fw mdt`mbn $fw - done -} - -do_install() { - install -d ${D}${nonarch_base_libdir}/firmware/qcom/flo - install -m 0644 ${B}/*.mbn ${D}${nonarch_base_libdir}/firmware/qcom/flo - install -m 0644 vendor/qcom/flo/proprietary/vidcfw.elf ${D}${nonarch_base_libdir}/firmware/qcom/flo - install -m 0644 vendor/qcom/flo/proprietary/vidc_1080p.fw ${D}${nonarch_base_libdir}/firmware/qcom/flo - - install -m 0644 license.txt ${D}${nonarch_base_libdir}/firmware/qcom/flo - - install -m 0644 ${WORKDIR}/git/WCNSS_cfg.dat ${D}${nonarch_base_libdir}/firmware/qcom/flo - install -m 0644 ${WORKDIR}/git/WCNSS_qcom_wlan_nv_deb.bin ${D}${nonarch_base_libdir}/firmware/qcom/flo - install -m 0644 ${WORKDIR}/git/WCNSS_qcom_wlan_nv_flo.bin ${D}${nonarch_base_libdir}/firmware/qcom/flo/WCNSS_qcom_wlan_nv.bin -} diff --git a/recipes-bsp/firmware/firmware-qcom-nhlos.inc b/recipes-bsp/firmware/firmware-qcom-nhlos.inc new file mode 100644 index 0000000..a4d5808 --- /dev/null +++ b/recipes-bsp/firmware/firmware-qcom-nhlos.inc @@ -0,0 +1,60 @@ +# 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 + +NHLOS_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}" + +handle_nonhlos_image() { + mkdir -p ${B}/firmware + mcopy -n -s -i "$1" ::/* ${B}/firmware/ + 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 WORKDIR. +# 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 [ -n "${NHLOS_URI}" ] ; then + handle_nonhlos_image ${WORKDIR}/${@get_nhlos_path(d.getVar("NHLOS_URI"))} + fi +} + +do_install:prepend() { + install -d ${D}${FW_QCOM_PATH} + + for fw in ${FW_QCOM_LIST} ; do + if [ -r ${B}/$fw ] ; then + install -m 0644 ${B}/$fw ${D}${FW_QCOM_PATH} + fi + + if [ -r ${B}/firmware/image/$fw ] ; then + install -m 0644 ${B}/firmware/image/$fw ${D}${FW_QCOM_PATH} + fi + done +} + +# If firmware files are not provided, do not download/package anything +python () { + uri = d.getVar("NHLOS_URI") + if uri == "": + bb.warn("%s: not packaging NHLOS firmware. Please provide HNLOS_URI" % d.getVar("PN")) +} diff --git a/recipes-bsp/firmware/firmware-qcom-rb1_20230823-v2.bb b/recipes-bsp/firmware/firmware-qcom-rb1_20230823-v2.bb new file mode 100644 index 0000000..3d8a802 --- /dev/null +++ b/recipes-bsp/firmware/firmware-qcom-rb1_20230823-v2.bb @@ -0,0 +1,25 @@ +DESCRIPTION = "QCOM Firmware for Qualcomm Robotics RB1 platform" + +LICENSE = "Proprietary" +LIC_FILES_CHKSUM = "file://LICENSE.qcom.txt;md5=cbbe399f2c983ad51768f4561587f000" + +SRC_URI = "http://releases.linaro.org/96boards/rb1/qualcomm/firmware/RB1_firmware_${PV}.zip;subdir=${BP}" +SRC_URI[md5sum] = "db892ca115845938c6672d756448d512" +SRC_URI[sha256sum] = "e7f95cc61d601f6267f87741c333ec5663a6fb538c79770dc094c2556fa757c0" + +FW_QCOM_NAME = "qcm2290" + +require recipes-bsp/firmware/firmware-qcom.inc + +do_install() { + install -d ${D}${sysconfdir}/ + install -m 0644 LICENSE.qcom.txt ${D}${sysconfdir}/QCOM-LINUX-BOARD-SUPPORT-LICENSE-${PN} + + install -d ${D}${FW_QCOM_PATH} + + install -m 0444 04-dspso/dspso.bin ${D}${FW_QCOM_PATH} +} + +SPLIT_FIRMWARE_PACKAGES = " \ + ${PN}-dspso \ +" diff --git a/recipes-bsp/firmware/firmware-qcom-rb2_20230823-v2.bb b/recipes-bsp/firmware/firmware-qcom-rb2_20230823-v2.bb new file mode 100644 index 0000000..480985a --- /dev/null +++ b/recipes-bsp/firmware/firmware-qcom-rb2_20230823-v2.bb @@ -0,0 +1,25 @@ +DESCRIPTION = "QCOM Firmware for Qualcomm Robotics RB2 platform" + +LICENSE = "Proprietary" +LIC_FILES_CHKSUM = "file://LICENSE.qcom.txt;md5=cbbe399f2c983ad51768f4561587f000" + +SRC_URI = "http://releases.linaro.org/96boards/rb2/qualcomm/firmware/RB2_firmware_${PV}.zip;subdir=${BP}" +SRC_URI[md5sum] = "53b6cda776cb534883e6c2a048ad97ec" +SRC_URI[sha256sum] = "5d96c6f224cd4667afd47770b6cd0ad2ad912fe67fec86f4478ad8dcffae8531" + +FW_QCOM_NAME = "qrb4210" + +require recipes-bsp/firmware/firmware-qcom.inc + +do_install() { + install -d ${D}${sysconfdir}/ + install -m 0644 LICENSE.qcom.txt ${D}${sysconfdir}/QCOM-LINUX-BOARD-SUPPORT-LICENSE-${PN} + + install -d ${D}${FW_QCOM_PATH} + + install -m 0444 04-dspso/dspso.bin ${D}${FW_QCOM_PATH} +} + +SPLIT_FIRMWARE_PACKAGES = " \ + ${PN}-dspso \ +" diff --git a/recipes-bsp/firmware/firmware-qcom-rb5_20210331-v4.bb b/recipes-bsp/firmware/firmware-qcom-rb5_20210331-v4.bb index 44dc7e7..201c646 100644 --- a/recipes-bsp/firmware/firmware-qcom-rb5_20210331-v4.bb +++ b/recipes-bsp/firmware/firmware-qcom-rb5_20210331-v4.bb @@ -14,33 +14,19 @@ SRC_URI[sha256sum] = "30e2c02be32de9f809b590f4fe76d9eb66d35f8c7d13b1f2850beb3d79 # 20210331-v4 PE = "1" -DEPENDS += "qca-swiss-army-knife-native" +FW_QCOM_NAME = "sm8250" require recipes-bsp/firmware/firmware-qcom.inc -do_compile() { - # Build board-2.bin needed by WiFi - ath11k-generate-board-2_json.sh ./38-bdwlan_split board-2.json - python3 "${STAGING_BINDIR_NATIVE}/ath10k-bdencoder" -m ath11k -c board-2.json -o board-2.bin -} - do_install() { - install -d ${D}${nonarch_base_libdir}/firmware/qcom/sm8250 - - install -m 0444 ./08-dspso/dspso.bin ${D}${nonarch_base_libdir}/firmware/qcom/sm8250 + install -d ${D}${FW_QCOM_PATH} - install -m 0444 ./30-slpi_split/slpi.mbn ${D}${nonarch_base_libdir}/firmware/qcom/sm8250/ - install -m 0444 ./39-jsn/slpi*.jsn ${D}${nonarch_base_libdir}/firmware/qcom/sm8250/ - - install -d ${D}${nonarch_base_libdir}/firmware/ath11k/QCA6390/hw2.0/ - install -m 0444 ${S}/board-2.bin ${D}${nonarch_base_libdir}/firmware/ath11k/QCA6390/hw2.0/board-2.bin + install -m 0444 ./08-dspso/dspso.bin ${D}${FW_QCOM_PATH} install -d ${D}${sysconfdir}/ install -m 0644 LICENSE.qcom.txt ${D}${sysconfdir}/QCOM-LINUX-BOARD-SUPPORT-LICENSE-${PN} } -inherit update-alternatives - -ALTERNATIVE:${PN} = "qca6390-board2" -ALTERNATIVE_LINK_NAME[qca6390-board2] = "/lib/firmware/ath11k/QCA6390/hw2.0/board-2.bin" -ALTERNATIVE_PRIORITY = "100" +SPLIT_FIRMWARE_PACKAGES = " \ + ${PN}-dspso \ +" diff --git a/recipes-bsp/firmware/firmware-qcom-sm8150-hdk.bb b/recipes-bsp/firmware/firmware-qcom-sm8150-hdk.bb new file mode 100644 index 0000000..8579aa7 --- /dev/null +++ b/recipes-bsp/firmware/firmware-qcom-sm8150-hdk.bb @@ -0,0 +1,42 @@ +# 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 = "\ + a640_zap.mbn \ + adsp.mbn adspr.jsn adspua.jsn \ + cdsp.mbn cdspr.jsn \ + ipa_fws.mbn \ + modem.mbn modemuw.jsn \ + slpi.mbn slpir.jsn \ +" + +require recipes-bsp/firmware/firmware-qcom.inc +require recipes-bsp/firmware/firmware-qcom-nhlos.inc +include recipes-bsp/firmware/firmware-qcom-adreno.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-${FW_QCOM_NAME}-modem \ + linux-firmware-qcom-${FW_QCOM_NAME}-sensors \ + linux-firmware-qcom-adreno-a640 \ +" + +do_install:append() { + if [ -n "${ADRENO_URI}" ] ; then + install -m 0644 ${WORKDIR}/adreno/${ADRENO_PATH}/a640_gmu.bin ${D}${FW_QCOM_BASE_PATH} + fi +} + +FILES:linux-firmware-qcom-adreno-a640 += "${FW_QCOM_BASE_PATH}/a640_gmu.bin" +RDEPENDS:linux-firmware-qcom-adreno-a640 += "linux-firmware-qcom-adreno-a630" +RDEPENDS:linux-firmware-qcom-adreno-a640:remove = "${PN}" diff --git a/recipes-bsp/firmware/firmware-qcom-sm8350-hdk.bb b/recipes-bsp/firmware/firmware-qcom-sm8350-hdk.bb new file mode 100644 index 0000000..f412673 --- /dev/null +++ b/recipes-bsp/firmware/firmware-qcom-sm8350-hdk.bb @@ -0,0 +1,31 @@ +# 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 = "\ + a660_zap.mbn a615_zap.mbn \ + adsp.mbn adspr.jsn adspua.jsn battmgr.jsn \ + cdsp.mbn cdspr.jsn \ + ipa_fws.mbn \ + modem.mbn modemr.jsn \ + slpi.mbn slpir.jsn \ +" + +require recipes-bsp/firmware/firmware-qcom.inc +require recipes-bsp/firmware/firmware-qcom-nhlos.inc +require recipes-bsp/firmware/firmware-qcom-adreno.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-${FW_QCOM_NAME}-modem \ + linux-firmware-qcom-${FW_QCOM_NAME}-sensors \ +" diff --git a/recipes-bsp/firmware/firmware-qcom-sm8450-hdk.bb b/recipes-bsp/firmware/firmware-qcom-sm8450-hdk.bb new file mode 100644 index 0000000..b928bd6 --- /dev/null +++ b/recipes-bsp/firmware/firmware-qcom-sm8450-hdk.bb @@ -0,0 +1,44 @@ +# 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 = "\ + a730_zap.mbn \ + 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 \ +" + +require recipes-bsp/firmware/firmware-qcom.inc +require recipes-bsp/firmware/firmware-qcom-nhlos.inc +require recipes-bsp/firmware/firmware-qcom-adreno.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-${FW_QCOM_NAME}-modem \ + linux-firmware-qcom-${FW_QCOM_NAME}-sensors \ + linux-firmware-qcom-adreno-a730 \ + linux-firmware-qcom-adreno-gmu-a700 \ +" + +do_install:append() { + if [ -n "${ADRENO_URI}" ] ; then + install -m 0644 ${WORKDIR}/adreno/${ADRENO_PATH}/a730_sqe.fw ${D}${FW_QCOM_BASE_PATH} + install -m 0644 ${WORKDIR}/adreno/${ADRENO_PATH}/gmu_gen70000.bin ${D}${FW_QCOM_BASE_PATH} + fi +} + +FILES:linux-firmware-qcom-adreno-a730 += "${FW_QCOM_BASE_PATH}/a730_sqe.fw" +FILES:linux-firmware-qcom-adreno-gmu-a700 += "${FW_QCOM_BASE_PATH}/gmu_gen70000.bin" +RDEPENDS:linux-firmware-qcom-adreno-a730 += "linux-firmware-qcom-adreno-gmu-a700" diff --git a/recipes-bsp/firmware/firmware-qcom.inc b/recipes-bsp/firmware/firmware-qcom.inc index c458878..55b1d7e 100644 --- a/recipes-bsp/firmware/firmware-qcom.inc +++ b/recipes-bsp/firmware/firmware-qcom.inc @@ -4,6 +4,54 @@ FILES:${PN} += "${nonarch_base_libdir}/firmware/" INSANE_SKIP:${PN} += "arch already-stripped" +# Default settings +# package name part in linux-firmware-qcom-...-audio +FW_QCOM_NAME ?= "unset" +# Subdir inside /lib/firmware/qcom. Typically it is equal to FW_QCOM_NAME but might differ in complex cases (like C630 Yoga). +FW_QCOM_SUBDIR ?= "${FW_QCOM_NAME}" +FW_QCOM_BASE_PATH = "${nonarch_base_libdir}/firmware/qcom" +FW_QCOM_PATH = "${FW_QCOM_BASE_PATH}/${FW_QCOM_SUBDIR}" + +SPLIT_FIRMWARE_PACKAGES ?= "" + +PACKAGE_BEFORE_PN += "${SPLIT_FIRMWARE_PACKAGES}" +# RRECOMMEND all non-split packages split from this recipe. Split firmware files re usually replaced with the squashed ones. +RRECOMMENDS:${PN} += "${@ ' '.join(filter(lambda p: not p.endswith('-split'), d.getVar('SPLIT_FIRMWARE_PACKAGES').split())) }" + +# Default settings for several split packages +FILES:${PN}-dspso += "${FW_QCOM_BASE_PATH}/*/*dspso.bin" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-adreno = "${FW_QCOM_PATH}/*_zap.mbn ${FW_QCOM_PATH}/qcdxkmsuc*.mbn" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-audio = "${FW_QCOM_PATH}/adsp.mbn ${FW_QCOM_PATH}/adsp*.jsn ${FW_QCOM_PATH}/battmgr*.jsn ${FW_QCOM_PATH}/qcadsp*.mbn" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-audio-split = "${FW_QCOM_PATH}/adsp.mdt ${FW_QCOM_PATH}/adsp.b*" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-compute = "${FW_QCOM_PATH}/cdsp.mbn ${FW_QCOM_PATH}/cdsp*.jsn ${FW_QCOM_PATH}/qccdsp*.mbn" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-compute-split = "${FW_QCOM_PATH}/cdsp.mdt ${FW_QCOM_PATH}/cdsp.b*" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-dsps = "${FW_QCOM_PATH}/dsps.mbn" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-gss = "${FW_QCOM_PATH}/gss.mbn" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-ipa = "${FW_QCOM_PATH}/ipa_fws.mbn ${FW_QCOM_PATH}/ipa_fws.elf" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-modem = "${FW_QCOM_PATH}/mba.mbn ${FW_QCOM_PATH}/modem.mbn ${FW_QCOM_PATH}/modem*.jsn ${FW_QCOM_PATH}/qcmpss*.mbn" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-modem-split = "${FW_QCOM_PATH}/modem.mdt ${FW_QCOM_PATH}/modem.b*" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-q6 = "${FW_QCOM_PATH}/q6.mbn" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-sensors = "${FW_QCOM_PATH}/slpi.mbn ${FW_QCOM_PATH}/slpi*.jsn ${FW_QCOM_PATH}/qcslpi*.mbn" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-sensors-split = "${FW_QCOM_PATH}/slpi.mdt ${FW_QCOM_PATH}/slpi.b*" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-venus = "${FW_QCOM_PATH}/venus.mbn ${FW_QCOM_PATH}/vidc* ${FW_QCOM_PATH}/qcvss*.mbn" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-wifi = "${FW_QCOM_PATH}/wcnss.mbn ${FW_QCOM_PATH}/wlanmdsp.mbn" +FILES:linux-firmware-qcom-${FW_QCOM_NAME}-wifi-split = "${FW_QCOM_PATH}/wcnss.mdt ${FW_QCOM_PATH}/wcnss.b*" + +python() { + pn = d.getVar("PN") + insanes = d.getVar("INSANE_SKIP:%s" % pn) + for pkg in d.getVar("SPLIT_FIRMWARE_PACKAGES").split(): + # Depend on the main package to get the license file + d.appendVar("RDEPENDS:" + pkg, " " + pn) + # and append the INSANE_SKIP of the main package to pass QA + d.appendVar("INSANE_SKIP:" + pkg, " " + insanes) + # If it's a package with the split frmware, depend on non-split files (for jsn files, etc) + if pkg.endswith("-split"): + d.appendVar("RDEPENDS:" + pkg, " " + pkg[:-6]) + if d.getVar("FW_QCOM_NAME") == "unset" and d.getVar("SPLIT_FIRMWARE_PACKAGES") != "": + bb.error("%s: split firmware-qcom packages engaged, but FW_QCOM_NAME is not defined" % pn) +} + INHIBIT_PACKAGE_DEBUG_SPLIT = "1" INHIBIT_PACKAGE_STRIP = "1" INHIBIT_DEFAULT_DEPS = "1" diff --git a/recipes-bsp/firmware/firmware-wcn6855_git.bb b/recipes-bsp/firmware/firmware-wcn6855_git.bb new file mode 100644 index 0000000..2283519 --- /dev/null +++ b/recipes-bsp/firmware/firmware-wcn6855_git.bb @@ -0,0 +1,52 @@ +SUMMARY = "Firmware files for Qualcomm/Atheros WCN6855 SoC" + +LICENSE = "Firmware-qualcommAthos_ath10k" +LIC_FILES_CHKSUM = "file://LICENSE.QualcommAtheros_ath10k;md5=cb42b686ee5f5cb890275e4321db60a8" +NO_GENERIC_LICENSE[Firmware-qualcommAthos_ath10k] = "LICENSE.QualcommAtheros_ath10k" + +SRC_URI = "git://chromium.googlesource.com/chromiumos/third_party/linux-firmware;protocol=https;branch=master" +SRCREV = "d233ddd89abe06448070471963a58c0a7da81d79" + +PV = "1.1-01720.1+git${SRCPV}" + +S = "${WORKDIR}/git" + +inherit allarch + +CLEANBROKEN = "1" + +do_compile() { + : +} + +FWDIR = "${nonarch_base_libdir}/firmware/ath11k/WCN6855/hw2.0" +FWDIR21 = "${nonarch_base_libdir}/firmware/ath11k/WCN6855/hw2.1" + +do_install() { + install -d ${D}${FWDIR} + + install -m 0644 ath11k/WCN6855/hw2.0/* ${D}${FWDIR} + + install -d ${D}${FWDIR21} + ln -sr ${D}${FWDIR}/board.bin ${D}${FWDIR21}/ +} + +inherit update-alternatives + +ALTERNATIVE:${PN} += "wcn6855-hw20-amss wcn6855-hw20-m3 wcn6855-hw20-regdb" +ALTERNATIVE_LINK_NAME[wcn6855-hw20-amss] = "${nonarch_base_libdir}/firmware/ath11k/WCN6855/hw2.0/amss.bin" +ALTERNATIVE_LINK_NAME[wcn6855-hw20-m3] = "${nonarch_base_libdir}/firmware/ath11k/WCN6855/hw2.0/m3.bin" +ALTERNATIVE_LINK_NAME[wcn6855-hw20-regdb] = "${nonarch_base_libdir}/firmware/ath11k/WCN6855/hw2.0/regdb.bin" +ALTERNATIVE_PRIORITY = "100" + +PACKAGE_BEFORE_PN = "${PN}-board" + +RDEPENDS:${PN}-board += "${PN}" +RDEPENDS:${PN} += "linux-firmware-ath10k-license" + +FILES:${PN} = "${FWDIR}" +FILES:${PN}-board = "${FWDIR}/board*.bin ${FWDIR21}/board*.bin" + +# Firmware files are generally not ran on the CPU, so they can be +# allarch despite being architecture specific +INSANE_SKIP = "arch" diff --git a/recipes-bsp/images/initramfs-firmware-db8074-image.bb b/recipes-bsp/images/initramfs-firmware-db8074-image.bb new file mode 100644 index 0000000..c531a23 --- /dev/null +++ b/recipes-bsp/images/initramfs-firmware-db8074-image.bb @@ -0,0 +1,7 @@ +DESCRIPTION = "Tiny ramdisk image with Dragonboard APQ8074 firmware files" + +PACKAGE_INSTALL += " \ + packagegroup-firmware-dragonboard-apq8074 \ +" + +require initramfs-firmware-image.inc diff --git a/recipes-bsp/images/initramfs-firmware-ifc6560-image.bb b/recipes-bsp/images/initramfs-firmware-ifc6560-image.bb new file mode 100644 index 0000000..c667b77 --- /dev/null +++ b/recipes-bsp/images/initramfs-firmware-ifc6560-image.bb @@ -0,0 +1,16 @@ +DESCRIPTION = "Tiny ramdisk image with all Nexus and Pixel devices firmware files" + +PACKAGE_INSTALL += " \ + packagegroup-firmware-ifc6560 \ +" + +BAD_RECOMMENDATIONS = "\ + linux-firmware-qcom-sda660-audio \ + linux-firmware-qcom-sda660-compute \ + linux-firmware-qcom-sda660-modem \ + linux-firmware-qcom-sda660-venus \ + linux-firmware-qca \ + linux-firmware-ath10k \ +" + +require initramfs-firmware-image.inc diff --git a/recipes-bsp/images/initramfs-firmware-image.bb b/recipes-bsp/images/initramfs-firmware-image.bb new file mode 100644 index 0000000..61b2e95 --- /dev/null +++ b/recipes-bsp/images/initramfs-firmware-image.bb @@ -0,0 +1,29 @@ +DESCRIPTION = "Tiny ramdisk image with firmware files" + +# Do not install anything by default +PACKAGE_INSTALL = "" + +PACKAGE_INSTALL:qcom-armv8a = " \ + packagegroup-firmware-dragonboard410c \ + packagegroup-firmware-dragonboard820c \ + packagegroup-firmware-dragonboard845c \ + packagegroup-firmware-rb1 \ + packagegroup-firmware-rb2 \ + packagegroup-firmware-rb5 \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'wireless-regdb-static', '', d)} \ +" + +BAD_RECOMMENDATIONS = " \ + firmware-qcom-dragonboard820c-dspso \ + firmware-qcom-dragonboard845c-dspso \ + firmware-qcom-rb1-dspso \ + firmware-qcom-rb2-dspso \ + firmware-qcom-rb5-dspso \ +" + +PACKAGE_INSTALL:qcom-armv7a = " \ + packagegroup-firmware-ifc6410 \ + firmware-qcom-nexus7-2013 \ +" + +require initramfs-firmware-image.inc diff --git a/recipes-bsp/images/initramfs-firmware-image.inc b/recipes-bsp/images/initramfs-firmware-image.inc new file mode 100644 index 0000000..2ce4f36 --- /dev/null +++ b/recipes-bsp/images/initramfs-firmware-image.inc @@ -0,0 +1,17 @@ +# We do not use kernel image or kernel modules in the image, so remove the +# dependency on the kernel +KERNELDEPMODDEPEND = "" +KERNEL_DEPLOY_DEPEND = "" + +IMAGE_LINGUAS = "" +LICENSE = "MIT" + +IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}" +IMAGE_NAME_SUFFIX ?= "" +inherit core-image + +IMAGE_ROOTFS_SIZE = "8192" +IMAGE_ROOTFS_EXTRA_SPACE = "0" + +# Inhibit installing /init +IMAGE_BUILDING_DEBUGFS = "true" diff --git a/recipes-bsp/images/initramfs-firmware-nexus-image.bb b/recipes-bsp/images/initramfs-firmware-nexus-image.bb new file mode 100644 index 0000000..668d993 --- /dev/null +++ b/recipes-bsp/images/initramfs-firmware-nexus-image.bb @@ -0,0 +1,24 @@ +DESCRIPTION = "Tiny ramdisk image with all Nexus and Pixel devices firmware files" + +# Firmware support for newer Nexus and Pixel devices depends on simg2img, which +# is provided by the meta-oe only. So they are split into the bbappend in +# dynamic-layers/openembedded-layer. +PACKAGE_INSTALL += " \ + firmware-qcom-nexus4 \ + firmware-qcom-nexus5 \ + firmware-qcom-nexus5x \ + firmware-qcom-nexus6 \ + firmware-qcom-nexus6p \ + firmware-qcom-nexus7-2013 \ + firmware-qcom-pixel \ + firmware-qcom-pixel2 \ + firmware-qcom-pixel3 \ + firmware-qcom-pixel3a \ + firmware-qcom-pixel4 \ + firmware-qcom-pixel4a \ + firmware-qcom-pixel4a-5g \ + firmware-qcom-pixel5 \ + firmware-qcom-pixel5a-5g \ +" + +require initramfs-firmware-image.inc diff --git a/recipes-bsp/images/initramfs-firmware-rb12-image.bb b/recipes-bsp/images/initramfs-firmware-rb12-image.bb new file mode 100644 index 0000000..30c793a --- /dev/null +++ b/recipes-bsp/images/initramfs-firmware-rb12-image.bb @@ -0,0 +1,14 @@ +DESCRIPTION = "Tiny ramdisk image with RB1/RB2 devices firmware files" + +PACKAGE_INSTALL += " \ + packagegroup-firmware-rb1 \ + packagegroup-firmware-rb2 \ +" + +BAD_RECOMMENDATIONS = " \ + firmware-qcom-rb1-dspso \ + firmware-qcom-rb2-dspso \ + linux-firmware-qcom-venus-6.0 \ +" + +require initramfs-firmware-image.inc diff --git a/recipes-bsp/images/initramfs-firmware-sc8180x-image.bb b/recipes-bsp/images/initramfs-firmware-sc8180x-image.bb new file mode 100644 index 0000000..8c8c1a9 --- /dev/null +++ b/recipes-bsp/images/initramfs-firmware-sc8180x-image.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "Tiny ramdisk image with SC8180X devices firmware files" + +PACKAGE_INSTALL += " \ + packagegroup-firmware-sc8180x \ +" + +BAD_RECOMMENDATIONS = " \ + linux-firmware-qca \ + linux-firmware-ath10k \ + linux-firmware-qcom-sc8180x-compute \ + linux-firmware-qcom-sc8180x-ipa \ + linux-firmware-qcom-sc8180x-modem \ + linux-firmware-qcom-sc8180x-sensors \ + linux-firmware-qcom-sc8180x-venus \ +" + +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 new file mode 100644 index 0000000..3ffcbe7 --- /dev/null +++ b/recipes-bsp/images/initramfs-firmware-sm8150-hdk-image.bb @@ -0,0 +1,11 @@ +DESCRIPTION = "Tiny ramdisk image with SM8150 HDK devices firmware files" + +PACKAGE_INSTALL += " \ + packagegroup-firmware-sm8150-hdk \ +" + +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 new file mode 100644 index 0000000..587012e --- /dev/null +++ b/recipes-bsp/images/initramfs-firmware-sm8350-hdk-image.bb @@ -0,0 +1,11 @@ +DESCRIPTION = "Tiny ramdisk image with SM8350 HDK devices firmware files" + +PACKAGE_INSTALL += " \ + packagegroup-firmware-sm8350-hdk \ +" + +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 new file mode 100644 index 0000000..4c2cf62 --- /dev/null +++ b/recipes-bsp/images/initramfs-firmware-sm8450-hdk-image.bb @@ -0,0 +1,11 @@ +DESCRIPTION = "Tiny ramdisk image with SM8450 HDK devices firmware files" + +PACKAGE_INSTALL += " \ + packagegroup-firmware-sm8450-hdk \ +" + +BAD_RECOMMENDATIONS = " \ + linux-firmware-qcom-sm8450-sensors \ +" + +require initramfs-firmware-image.inc diff --git a/recipes-bsp/packagegroups/packagegroup-firmware-dragonboard-apq8074.bb b/recipes-bsp/packagegroups/packagegroup-firmware-dragonboard-apq8074.bb new file mode 100644 index 0000000..7432a89 --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-dragonboard-apq8074.bb @@ -0,0 +1,10 @@ +SUMMARY = "Firmware packages for the Dragonboard APQ8074 board" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + ${@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-firmware-dragonboard410c.bb b/recipes-bsp/packagegroups/packagegroup-firmware-dragonboard410c.bb new file mode 100644 index 0000000..8b55a3b --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-dragonboard410c.bb @@ -0,0 +1,11 @@ +SUMMARY = "Firmware packages for the DragonBoard 410c board" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + firmware-qcom-dragonboard410c \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a3xx', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-qcom-apq8016-wifi', '', d)} \ + linux-firmware-qcom-apq8016-modem \ + linux-firmware-qcom-venus-1.8 \ +" diff --git a/recipes-bsp/packagegroups/packagegroup-firmware-dragonboard820c.bb b/recipes-bsp/packagegroups/packagegroup-firmware-dragonboard820c.bb new file mode 100644 index 0000000..d7339a4 --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-dragonboard820c.bb @@ -0,0 +1,13 @@ +SUMMARY = "Firmware packages for the DragonBoard 820c board" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + firmware-qcom-dragonboard820c \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a530 linux-firmware-qcom-apq8096-adreno', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath10k', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca', '', d)} \ + linux-firmware-qcom-apq8096-audio \ + linux-firmware-qcom-apq8096-modem \ + linux-firmware-qcom-venus-4.2 \ +" diff --git a/recipes-bsp/packagegroups/packagegroup-firmware-dragonboard845c.bb b/recipes-bsp/packagegroups/packagegroup-firmware-dragonboard845c.bb new file mode 100644 index 0000000..66b9005 --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-dragonboard845c.bb @@ -0,0 +1,13 @@ +SUMMARY = "Firmware packages for the DragonBoard 845c board" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + firmware-qcom-dragonboard845c \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a630 linux-firmware-qcom-sdm845-adreno', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath10k linux-firmware-qcom-sdm845-modem', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca linux-firmware-qcom-sdm845-modem', '', d)} \ + linux-firmware-qcom-sdm845-audio \ + linux-firmware-qcom-sdm845-compute \ + linux-firmware-qcom-venus-5.2 \ +" diff --git a/recipes-bsp/packagegroups/packagegroup-firmware-ifc6410.bb b/recipes-bsp/packagegroups/packagegroup-firmware-ifc6410.bb new file mode 100644 index 0000000..8b22ef8 --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-ifc6410.bb @@ -0,0 +1,14 @@ +SUMMARY = "Firmware packages for the IFC6410 board" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a3xx', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath6k firmware-ath6kl', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-ar3k', '', d)} \ + firmware-qcom-ifc6410 \ + linux-firmware-qcom-apq8064-dsps \ + linux-firmware-qcom-apq8064-gss \ + linux-firmware-qcom-apq8064-q6 \ + linux-firmware-qcom-apq8064-wifi \ +" diff --git a/recipes-bsp/packagegroups/packagegroup-firmware-ifc6560.bb b/recipes-bsp/packagegroups/packagegroup-firmware-ifc6560.bb new file mode 100644 index 0000000..8b3507b --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-ifc6560.bb @@ -0,0 +1,14 @@ +SUMMARY = "Firmware packages for the IFC6560 board" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a530 linux-firmware-qcom-sda660-adreno', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath10k', '', d)} \ + firmware-qcom-ifc6560 \ + linux-firmware-qcom-sda660-audio \ + linux-firmware-qcom-sda660-compute \ + linux-firmware-qcom-sda660-modem \ + linux-firmware-qcom-sda660-venus \ +" diff --git a/recipes-bsp/packagegroups/packagegroup-firmware-lenovo-x13s.bb b/recipes-bsp/packagegroups/packagegroup-firmware-lenovo-x13s.bb new file mode 100644 index 0000000..dc63332 --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-lenovo-x13s.bb @@ -0,0 +1,12 @@ +SUMMARY = "Firmware packages for the Lenovo X13s laptop" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-sc8280xp-lenovo-x13s-adreno', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath11k', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca', '', d)} \ + linux-firmware-qcom-sc8280xp-lenovo-x13s-audio \ + linux-firmware-qcom-sc8280xp-lenovo-x13s-compute \ + linux-firmware-qcom-sc8280xp-lenovo-x13s-sensors \ +" diff --git a/recipes-bsp/packagegroups/packagegroup-firmware-rb1.bb b/recipes-bsp/packagegroups/packagegroup-firmware-rb1.bb new file mode 100644 index 0000000..6ff96ab --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-rb1.bb @@ -0,0 +1,13 @@ +SUMMARY = "Firmware packages for the RB1 Robotics platform" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + firmware-qcom-rb1 \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a630 linux-firmware-qcom-qcm2290-adreno', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath10k linux-firmware-qcom-qcm2290-wifi ', '', d)} \ + linux-firmware-lt9611uxc \ + linux-firmware-qcom-qcm2290-audio \ + linux-firmware-qcom-qcm2290-modem \ + linux-firmware-qcom-venus-6.0 \ +" diff --git a/recipes-bsp/packagegroups/packagegroup-firmware-rb2.bb b/recipes-bsp/packagegroups/packagegroup-firmware-rb2.bb new file mode 100644 index 0000000..9f622df --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-rb2.bb @@ -0,0 +1,14 @@ +SUMMARY = "Firmware packages for the RB2 Robotics platform" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + firmware-qcom-rb2 \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a630 linux-firmware-qcom-qrb4210-adreno', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath10k linux-firmware-qcom-qrb4210-wifi', '', d)} \ + linux-firmware-lt9611uxc \ + linux-firmware-qcom-qrb4210-audio \ + linux-firmware-qcom-qrb4210-compute \ + linux-firmware-qcom-qrb4210-modem \ + linux-firmware-qcom-venus-6.0 \ +" diff --git a/recipes-bsp/packagegroups/packagegroup-firmware-rb5.bb b/recipes-bsp/packagegroups/packagegroup-firmware-rb5.bb new file mode 100644 index 0000000..b0f0702 --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-rb5.bb @@ -0,0 +1,14 @@ +SUMMARY = "Firmware packages for the RB5 Robotics platform" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + firmware-qcom-rb5 \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a650 linux-firmware-qcom-sm8250-adreno', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath11k', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca', '', d)} \ + linux-firmware-lt9611uxc \ + linux-firmware-qcom-sm8250-audio \ + linux-firmware-qcom-sm8250-compute \ + linux-firmware-qcom-vpu-1.0 \ +" diff --git a/recipes-bsp/packagegroups/packagegroup-firmware-sc8180x.bb b/recipes-bsp/packagegroups/packagegroup-firmware-sc8180x.bb new file mode 100644 index 0000000..0961961 --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-sc8180x.bb @@ -0,0 +1,16 @@ +SUMMARY = "Firmware packages for the SC8180X devices" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a640 linux-firmware-qcom-sc8180x-adreno', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath10k', '', d)} \ + firmware-qcom-sc8180x \ + linux-firmware-qcom-sc8180x-audio \ + linux-firmware-qcom-sc8180x-compute \ + linux-firmware-qcom-sc8180x-ipa \ + linux-firmware-qcom-sc8180x-modem \ + linux-firmware-qcom-sc8180x-sensors \ + linux-firmware-qcom-sc8180x-venus \ +" diff --git a/recipes-bsp/packagegroups/packagegroup-firmware-sm8150-hdk.bb b/recipes-bsp/packagegroups/packagegroup-firmware-sm8150-hdk.bb new file mode 100644 index 0000000..935b8b6 --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-sm8150-hdk.bb @@ -0,0 +1,15 @@ +SUMMARY = "Firmware packages for the SM8150-HDK (aka HDK855) board" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a640 linux-firmware-qcom-sm8150-adreno', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath11k', '', 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 \ +" diff --git a/recipes-bsp/packagegroups/packagegroup-firmware-sm8350-hdk.bb b/recipes-bsp/packagegroups/packagegroup-firmware-sm8350-hdk.bb new file mode 100644 index 0000000..0b1f548 --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-sm8350-hdk.bb @@ -0,0 +1,17 @@ +SUMMARY = "Firmware packages for the SM8350-HDK (aka HDK888) board" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a660', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath11k', '', d)} \ + firmware-qcom-sm8350-hdk \ + linux-firmware-qcom-sm8350-adreno \ + 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-2.0 \ +" diff --git a/recipes-bsp/packagegroups/packagegroup-firmware-sm8450-hdk.bb b/recipes-bsp/packagegroups/packagegroup-firmware-sm8450-hdk.bb new file mode 100644 index 0000000..e895ca4 --- /dev/null +++ b/recipes-bsp/packagegroups/packagegroup-firmware-sm8450-hdk.bb @@ -0,0 +1,14 @@ +SUMMARY = "Firmware packages for the SM8450-HDK board" + +inherit packagegroup + +RRECOMMENDS:${PN} += " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a730 linux-firmware-qcom-sm8450-adreno', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath11k', '', d)} \ + firmware-qcom-sm8450-hdk \ + linux-firmware-qcom-sm8450-audio \ + linux-firmware-qcom-sm8450-compute \ + linux-firmware-qcom-sm8450-modem \ + linux-firmware-qcom-sm8450-sensors \ +" |