firmware-nexus: provide Nexus and Pixel firmware packages

Package firmware for all Nexus and Pixel phones and tablets based on
Qualcomm platforms.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
This commit is contained in:
Dmitry Baryshkov
2022-04-11 21:42:42 +03:00
parent 41943bb04e
commit d5584619d6
18 changed files with 280 additions and 42 deletions

View File

@@ -0,0 +1,35 @@
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 ${B}/*.mbn ${D}${FW_QCOM_PATH}
install -m 0644 ${S}/vendor/qcom/${FW_QCOM_NAME}/proprietary/*.fw ${D}${FW_QCOM_PATH}
# Remove duplicates
rm -f ${D}${FW_QCOM_PATH}/a300_pfp.fw
rm -f ${D}${FW_QCOM_PATH}/a300_pm4.fw
install -m 0644 license.txt ${D}${FW_QCOM_PATH}
}

View File

@@ -0,0 +1,24 @@
DESCRIPTION = "QCOM Firmware for LGE Google Nexus 4"
LICENSE = "Proprietary"
LIC_FILES_CHKSUM = "file://license.txt;md5=0d238870f50c84250a14191d17aaf1d5"
FW_QCOM_NAME = "mako"
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 ${WORKDIR}/git/WCNSS_cfg.dat ${D}${FW_QCOM_PATH}
install -m 0644 ${WORKDIR}/git/WCNSS_qcom_wlan_nv.bin ${D}${FW_QCOM_PATH}
}

View File

@@ -0,0 +1,9 @@
DESCRIPTION = "QCOM Firmware for LGE Google Nexus 5"
FW_QCOM_NAME = "hammerhead"
AOSP_BUILD = "m4b30z"
CHECKSUM_qcom = "d6c0fe26"
SRC_URI[qcom.sha256sum] = "f8c29461e279b311958f9476ef78b9ab654aeb9903f5c2912f11d5d4bcfd021d"
require recipes-bsp/firmware-nexus/firmware-qcom-nexus.inc

View File

@@ -0,0 +1,12 @@
DESCRIPTION = "QCOM Firmware for LGE Google Nexus 5X"
LIC_FILES_CHKSUM = "file://license.txt;md5=76ab107d8eb5f8a7927011ac29447b4a"
FW_QCOM_NAME = "bullhead"
VENDOR = "lge"
AOSP_BUILD = "opm7.181205.001"
CHECKSUM_vendor = "bb4176a6"
SRC_URI[vendor.sha256sum] = "eaba58f7219eb477697869454138d151b38a1589db1ab40cec1b4525774fe869"
require recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc

View File

@@ -0,0 +1,9 @@
DESCRIPTION = "QCOM Firmware for Motorola Google Nexus 6"
FW_QCOM_NAME = "shamu"
AOSP_BUILD = "ngi77b"
CHECKSUM_qcom = "b5a5aacc"
SRC_URI[qcom.sha256sum] = "811ccc3c8bd4b832a26fc36aac5a46af7000d849c7217032e1d0819bfb2000dc"
require recipes-bsp/firmware-nexus/firmware-qcom-nexus.inc

View File

@@ -0,0 +1,12 @@
DESCRIPTION = "QCOM Firmware for LGE Google Nexus 6P"
LIC_FILES_CHKSUM = "file://license.txt;md5=ab57c77a2230b7254cd6be1f1c0d6806"
FW_QCOM_NAME = "angler"
VENDOR = "huawei"
AOSP_BUILD = "opm7.181205.001"
CHECKSUM_vendor = "52ed73ce"
SRC_URI[vendor.sha256sum] = "2eb9a77de059739d33c7fad07e34034f03a93d70eea39460bb0d9278e5763053"
require recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc

View File

@@ -0,0 +1,24 @@
DESCRIPTION = "QCOM Firmware for Asus Google Nexus 7 (2013)"
FW_QCOM_NAME = "flo"
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 vendor/qcom/flo/proprietary/vidcfw.elf ${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
}

View File

@@ -0,0 +1,10 @@
DESCRIPTION = "QCOM Firmware for Google Pixel / Pixel XL"
FW_QCOM_NAME = "sailfish"
EXTRA_DEVICE_NAME = "marlin"
AOSP_BUILD = "qp1a.191005.007.a3"
CHECKSUM_vendor = "a1615a0f"
SRC_URI[vendor.sha256sum] = "1cfffa986c4640a8bb3466f69a6f9bf511b4b6a8cb06fb0e1474a331e53876d6"
require recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc

View File

@@ -0,0 +1,69 @@
LICENSE = "Proprietary"
LIC_FILES_CHKSUM ?= "file://license.txt;md5=63a79fa5adc049f2e411b1f700cf0f19"
VENDOR ?= "google_devices"
EXTRA_DEVICE_NAME ??= ""
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 android-tools-native e2fsprogs-native qc-image-unpacker-native mtools-native"
# 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}
simg2img ${S}/vendor/${VENDOR}/${FW_QCOM_NAME}/proprietary/vendor.img ${B}/vendor.img
# 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
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[deptask] = "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 cpe ipa_fws modem slpi venus ; do
ls ${B}/$fw*.mbn && install -m 0644 ${B}/$fw*.mbn ${D}${FW_QCOM_PATH}
done
ls ${B}/firmware/cpp*.fw && install -m 0644 ${B}/firmware/cpp*.fw ${D}${FW_QCOM_PATH}
ls ${B}/firmware/leia*.fw && install -m 0644 ${B}/firmware/leia*.fw ${D}${FW_QCOM_PATH}
ls ${B}/firmware/*.jsn && install -m 0644 ${B}/firmware/*.jsn ${D}${FW_QCOM_PATH}
install -m 0644 ${B}/firmware/a[0-9]*.fw* ${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}
[ -z "${EXTRA_DEVICE_NAME}" ] || ln -sr ${D}${FW_QCOM_PATH} ${D}${FW_QCOM_BASE_PATH}/${EXTRA_DEVICE_NAME}
}

View File

@@ -0,0 +1,10 @@
DESCRIPTION = "QCOM Firmware for Google Pixel 2 / 2XL"
FW_QCOM_NAME = "walleye"
EXTRA_DEVICE_NAME = "taimen"
AOSP_BUILD = "rp1a.201005.004.a1"
CHECKSUM_vendor = "2fdea26a"
SRC_URI[vendor.sha256sum] = "4ec6cf5dfd6616ae39cf61f95657662e4b17dd193b6ab30547ef016359cfc118"
require recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc

View File

@@ -0,0 +1,10 @@
DESCRIPTION = "QCOM Firmware for Google Pixel 3 / 3 XL"
FW_QCOM_NAME = "blueline"
EXTRA_DEVICE_NAME = "crosshatch"
AOSP_BUILD = "sp1a.210812.016.c1"
CHECKSUM_vendor = "0b9f3bc0"
SRC_URI[vendor.sha256sum] = "5e48f4769d3cdba3c958f956d13df56b60e18e8fe03893d38f4125b421ab7ff9"
require recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc

View File

@@ -0,0 +1,10 @@
DESCRIPTION = "QCOM Firmware for Google Pixel 3a / 3a XL"
FW_QCOM_NAME = "sargo"
EXTRA_DEVICE_NAME = "bonito"
AOSP_BUILD = "sp2a.220405.003"
CHECKSUM_vendor = "85defed7"
SRC_URI[vendor.sha256sum] = "427d9a6f1d0196c0301d37353230359237df43bbee8920f987477867c6163d56"
require recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc

View File

@@ -0,0 +1,10 @@
DESCRIPTION = "QCOM Firmware for Google Pixel 4 / 4 XL"
FW_QCOM_NAME = "flame"
EXTRA_DEVICE_NAME = "coral"
AOSP_BUILD = "sp2a.220405.003"
CHECKSUM_vendor = "ead1b1a8"
SRC_URI[vendor.sha256sum] = "8e919f063cd753948c12e0aee386cb8a86d905039ea45668e7fe6bc62bd08aca"
require recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc

View File

@@ -0,0 +1,9 @@
DESCRIPTION = "QCOM Firmware for Google Pixel 4a (5G)"
FW_QCOM_NAME = "bramble"
AOSP_BUILD = "sp2a.220405.003"
CHECKSUM_vendor = "395ecce2"
SRC_URI[vendor.sha256sum] = "fb89a8a4bb9baeb88512443f54454c473cb4524c049d50389eee49a93e3d6c67"
require recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc

View File

@@ -0,0 +1,9 @@
DESCRIPTION = "QCOM Firmware for Google Pixel 4a"
FW_QCOM_NAME = "sunfish"
AOSP_BUILD = "sp2a.220405.003"
CHECKSUM_vendor = "5acbf701"
SRC_URI[vendor.sha256sum] = "ed16536e4de2714ef237f350343d38226199417f286d31de7ebfa0a95784ee2b"
require recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc

View File

@@ -0,0 +1,9 @@
DESCRIPTION = "QCOM Firmware for Google Pixel 5"
FW_QCOM_NAME = "redfin"
AOSP_BUILD = "sp2a.220405.003"
CHECKSUM_vendor = "2ab4bdce"
SRC_URI[vendor.sha256sum] = "8c2bc955e6ca0e32f7460b669a972e8dfac85fe3b649e0bed47c5ef9790ebb53"
require recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc

View File

@@ -0,0 +1,9 @@
DESCRIPTION = "QCOM Firmware for Google Pixel 5a 5G"
FW_QCOM_NAME = "barbet"
AOSP_BUILD = "sp2a.220405.003"
CHECKSUM_vendor = "c3cdaef9"
SRC_URI[vendor.sha256sum] = "93b12611038f8c54d3a57f95906839ed1c3315a6b47e0883cf1890dfca6eb728"
require recipes-bsp/firmware-nexus/firmware-qcom-pixel.inc

View File

@@ -1,42 +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"
FW_QCOM_NAME = "flo"
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}${FW_QCOM_PATH}
install -m 0644 ${B}/*.mbn ${D}${FW_QCOM_PATH}
install -m 0644 vendor/qcom/flo/proprietary/vidcfw.elf ${D}${FW_QCOM_PATH}
install -m 0644 vendor/qcom/flo/proprietary/vidc_1080p.fw ${D}${FW_QCOM_PATH}
install -m 0644 license.txt ${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
}