aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Dechesne <ndechesne@users.noreply.github.com>2020-05-20 16:54:59 +0200
committerGitHub <noreply@github.com>2020-05-20 16:54:59 +0200
commit67bfbf1b928d59236d0182ccf39d6c90701c7ca6 (patch)
tree779e751aa850496837d279c31bb3c1f8ff7d601b
parent23a4efb05b1c17720ebfbac6807337d08c7bf51e (diff)
parent9fce842e9c2007322e367fecc1fb4b9a4de02505 (diff)
downloadmeta-qcom-67bfbf1b928d59236d0182ccf39d6c90701c7ca6.tar.gz
meta-qcom-67bfbf1b928d59236d0182ccf39d6c90701c7ca6.tar.bz2
meta-qcom-67bfbf1b928d59236d0182ccf39d6c90701c7ca6.zip
Merge pull request #151 from alimon/master_firmware
Kernel upgrade, Firmware for 410c/820c/845c to use linux-firmware and 845c generate ath10k board-2.bin
-rw-r--r--conf/machine/dragonboard-410c.conf3
-rw-r--r--conf/machine/dragonboard-820c.conf3
-rw-r--r--conf/machine/dragonboard-845c.conf7
-rw-r--r--recipes-bsp/firmware/firmware-qcom-dragonboard410c_1034.2.1.bb24
-rw-r--r--recipes-bsp/firmware/firmware-qcom-dragonboard820c_01700.1.bb13
-rw-r--r--recipes-bsp/firmware/firmware-qcom-dragonboard845c/generate_board-2_json.sh23
-rw-r--r--recipes-bsp/firmware/firmware-qcom-dragonboard845c_20190529180356-v4.bb24
-rw-r--r--recipes-kernel/linux/linux-linaro-qcomlt_5.4.bb2
8 files changed, 55 insertions, 44 deletions
diff --git a/conf/machine/dragonboard-410c.conf b/conf/machine/dragonboard-410c.conf
index ffb5a21..6ecfc60 100644
--- a/conf/machine/dragonboard-410c.conf
+++ b/conf/machine/dragonboard-410c.conf
@@ -14,9 +14,10 @@ SERIAL_CONSOLE ?= "115200 ttyMSM0"
MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += " \
kernel-modules \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-msm', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a3xx mesa-driver-msm', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', 'bluez5-noinst-tools', '', d)} \
firmware-qcom-dragonboard410c \
+ linux-firmware-qcom-venus-1.8 \
"
QCOM_BOOTIMG_ROOTFS ?= "mmcblk0p14"
diff --git a/conf/machine/dragonboard-820c.conf b/conf/machine/dragonboard-820c.conf
index 8e3670e..347d2e1 100644
--- a/conf/machine/dragonboard-820c.conf
+++ b/conf/machine/dragonboard-820c.conf
@@ -14,8 +14,9 @@ SERIAL_CONSOLE ?= "115200 ttyMSM0"
MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += " \
firmware-qcom-dragonboard820c \
kernel-modules \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-msm', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a530 mesa-driver-msm', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'linux-firmware-ath10k', '', d)} \
+ linux-firmware-qcom-venus-4.2 \
"
QCOM_BOOTIMG_ROOTFS ?= "sda1"
diff --git a/conf/machine/dragonboard-845c.conf b/conf/machine/dragonboard-845c.conf
index 9effb74..b9dde33 100644
--- a/conf/machine/dragonboard-845c.conf
+++ b/conf/machine/dragonboard-845c.conf
@@ -14,8 +14,11 @@ SERIAL_CONSOLE ?= "115200 ttyMSM0"
MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += " \
firmware-qcom-dragonboard845c \
kernel-modules \
- ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'linux-firmware-qca', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-msm', '', 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 \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'linux-firmware-qcom-adreno-a630 mesa-driver-msm', '', d)} \
"
# /dev/sda1 is 'rootfs' partition after installing the latest bootloader package from linaro
diff --git a/recipes-bsp/firmware/firmware-qcom-dragonboard410c_1034.2.1.bb b/recipes-bsp/firmware/firmware-qcom-dragonboard410c_1034.2.1.bb
index 62e5bf4..ecdbed9 100644
--- a/recipes-bsp/firmware/firmware-qcom-dragonboard410c_1034.2.1.bb
+++ b/recipes-bsp/firmware/firmware-qcom-dragonboard410c_1034.2.1.bb
@@ -20,37 +20,25 @@ do_compile() {
do_install() {
install -d ${D}${nonarch_base_libdir}/firmware/
+
install -d ${D}/boot
- cp -r ./proprietary-linux/* ${D}${nonarch_base_libdir}/firmware/
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
- # Venus firmware have been merged in linux-firmware in a different location than
- # what we've been using for now. Let's add symlinks for now, until we switch to linux-firmware
- install -d ${D}${nonarch_base_libdir}/firmware/qcom/venus-1.8/
- for f in ${D}${nonarch_base_libdir}/firmware/venus.*; do
- f=$(basename $f)
- ln -s ${nonarch_base_libdir}/firmware/$f ${D}${nonarch_base_libdir}/firmware/qcom/venus-1.8/$f
- done
-
install -d ${D}${sysconfdir}/
install -m 0644 LICENSE ${D}${sysconfdir}/QCOM-LINUX-BOARD-SUPPORT-LICENSE
}
-FILES_${PN} += "${nonarch_base_libdir}/firmware/*"
FILES_${PN} += "/boot/modem_fsg"
-INSANE_SKIP_${PN} += "arch"
-
-RPROVIDES_${PN} += "linux-firmware-qcom-adreno-a3xx"
-RREPLACES_${PN} += "linux-firmware-qcom-adreno-a3xx"
-RCONFLICTS_${PN} += "linux-firmware-qcom-adreno-a3xx"
+FILES_${PN} += "${nonarch_base_libdir}/firmware/wlan/*"
+FILES_${PN} += "${nonarch_base_libdir}/firmware/qcom/msm8916/*"
-RPROVIDES_${PN} += "linux-firmware-qcom-venus-1.8"
-RREPLACES_${PN} += "linux-firmware-qcom-venus-1.8"
-RCONFLICTS_${PN} += "linux-firmware-qcom-venus-1.8"
+INSANE_SKIP_${PN} += "arch"
RPROVIDES_${PN} += "linux-firmware-qcom-license"
RREPLACES_${PN} += "linux-firmware-qcom-license"
diff --git a/recipes-bsp/firmware/firmware-qcom-dragonboard820c_01700.1.bb b/recipes-bsp/firmware/firmware-qcom-dragonboard820c_01700.1.bb
index c33cecb..952f574 100644
--- a/recipes-bsp/firmware/firmware-qcom-dragonboard820c_01700.1.bb
+++ b/recipes-bsp/firmware/firmware-qcom-dragonboard820c_01700.1.bb
@@ -18,12 +18,9 @@ do_compile() {
do_install() {
install -d ${D}${nonarch_base_libdir}/firmware/
- install -d ${D}${nonarch_base_libdir}/firmware/qcom/venus-4.2/
install -d ${D}${nonarch_base_libdir}/firmware/qcom/msm8996/
- install -m 0444 ./proprietary-linux/a530*.* ${D}${nonarch_base_libdir}/firmware/
- install -m 0444 ./proprietary-linux/venus.* ${D}${nonarch_base_libdir}/firmware/qcom/venus-4.2/
- install -m 0444 ./proprietary-linux/adsp.* ${D}${nonarch_base_libdir}/firmware/qcom/msm8996/
+ install -m 0444 ./proprietary-linux/adsp*.* ${D}${nonarch_base_libdir}/firmware/qcom/msm8996/
install -d ${D}${sysconfdir}/
install -m 0644 LICENSE ${D}${sysconfdir}/QCOM-LINUX-BOARD-SUPPORT-LICENSE
@@ -32,14 +29,6 @@ do_install() {
FILES_${PN} += "${nonarch_base_libdir}/firmware/*"
INSANE_SKIP_${PN} += "arch"
-RPROVIDES_${PN} += "linux-firmware-qcom-adreno-a530"
-RREPLACES_${PN} += "linux-firmware-qcom-adreno-a530"
-RCONFLICTS_${PN} += "linux-firmware-qcom-adreno-a530"
-
-RPROVIDES_${PN} += "linux-firmware-qcom-venus-4.2"
-RREPLACES_${PN} += "linux-firmware-qcom-venus-4.2"
-RCONFLICTS_${PN} += "linux-firmware-qcom-venus-4.2"
-
RPROVIDES_${PN} += "linux-firmware-qcom-license"
RREPLACES_${PN} += "linux-firmware-qcom-license"
RCONFLICTS_${PN} += "linux-firmware-qcom-license"
diff --git a/recipes-bsp/firmware/firmware-qcom-dragonboard845c/generate_board-2_json.sh b/recipes-bsp/firmware/firmware-qcom-dragonboard845c/generate_board-2_json.sh
new file mode 100644
index 0000000..3a1d532
--- /dev/null
+++ b/recipes-bsp/firmware/firmware-qcom-dragonboard845c/generate_board-2_json.sh
@@ -0,0 +1,23 @@
+JSON="$2"
+
+iter=0
+echo "[" > "${JSON}"
+for file in $1/bdwlan.*; do
+ [[ $file == *.txt ]] && continue
+
+ iter=$((iter+1))
+ [ $iter -ne 1 ] && echo " }," >> "${JSON}"
+
+ echo " {" >> "${JSON}"
+ echo " \"data\": \"$file\"," >> "${JSON}"
+ if [[ $file == */bdwlan.bin ]]; then
+ file_ext="ff"
+ else
+ file_ext="$(printf '%x\n' "$(basename "${file}" | sed -E 's:^.*\.b?([0-9a-f]*)$:0x\1:')")"
+ fi
+ echo " \"names\": [\"bus=snoc,qmi-board-id=${file_ext}\"]" >> "${JSON}"
+done
+
+echo " }" >> "${JSON}"
+echo "]" >> "${JSON}"
+
diff --git a/recipes-bsp/firmware/firmware-qcom-dragonboard845c_20190529180356-v4.bb b/recipes-bsp/firmware/firmware-qcom-dragonboard845c_20190529180356-v4.bb
index c27bbbc..88a1a6c 100644
--- a/recipes-bsp/firmware/firmware-qcom-dragonboard845c_20190529180356-v4.bb
+++ b/recipes-bsp/firmware/firmware-qcom-dragonboard845c_20190529180356-v4.bb
@@ -3,17 +3,26 @@ DESCRIPTION = "QCOM Firmware for DragonBoard 845c"
LICENSE = "Proprietary"
LIC_FILES_CHKSUM = "file://LICENSE.qcom.txt;md5=cbbe399f2c983ad51768f4561587f000"
-SRC_URI = "https://releases.linaro.org/96boards/dragonboard845c/qualcomm/firmware/RB3_firmware_${PV}.zip"
+SRC_URI = "https://releases.linaro.org/96boards/dragonboard845c/qualcomm/firmware/RB3_firmware_${PV}.zip \
+ git://github.com/alimon/qca-swiss-army-knife \
+ file://generate_board-2_json.sh"
SRC_URI[md5sum] = "ad69855a1275547b16d94a1b5405ac62"
SRC_URI[sha256sum] = "4289d2f2a7124b104d0274879e702aae9b1e50c42eec3747f8584c6744ef65e3"
+SRCREV = "0c01a2abc3e9855b71f0fbea2c335011104d9ec0"
COMPATIBLE_MACHINE = "(dragonboard-845c)"
PACKAGE_ARCH = "${MACHINE_ARCH}"
+DEPENDS += "bash-native"
+inherit python3native
S = "${WORKDIR}"
do_compile() {
- :
+ # Build board-2.bin needed by WiFi
+ mkdir -p bdf
+ cp ./38-bdwlan_split/bdwlan*.* bdf
+ bash generate_board-2_json.sh bdf board-2.json
+ python3 git/tools/scripts/ath10k/ath10k-bdencoder -c board-2.json -o board-2.bin
}
do_install() {
@@ -22,12 +31,13 @@ do_install() {
install -d ${D}${nonarch_base_libdir}/firmware/qcom/sdm845
install -m 0444 ./17-USB3-201-202-FW/K2026090.mem ${D}${nonarch_base_libdir}/firmware/
- install -m 0444 ./18-adreno-fw/a630*.* ${D}${nonarch_base_libdir}/firmware/
+ 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 -m 0444 ./33-venus_split/venus.* ${D}${nonarch_base_libdir}/firmware/qcom/venus-5.2/
- install -m 0444 ./37-wlan_FW/wlanmdsp.mbn ${D}${nonarch_base_libdir}/firmware/
- install -m 0444 ./38-bdwlan_split/bdwlan*.* ${D}${nonarch_base_libdir}/firmware/
+
+ 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
@@ -36,10 +46,6 @@ do_install() {
FILES_${PN} += "${nonarch_base_libdir}/firmware/*"
INSANE_SKIP_${PN} += "arch"
-RPROVIDES_${PN} += "linux-firmware-qcom-adreno-a630"
-RREPLACES_${PN} += "linux-firmware-qcom-adreno-a630"
-RCONFLICTS_${PN} += "linux-firmware-qcom-adreno-a630"
-
RPROVIDES_${PN} += "linux-firmware-qcom-venus-5.2"
RREPLACES_${PN} += "linux-firmware-qcom-venus-5.2"
RCONFLICTS_${PN} += "linux-firmware-qcom-venus-5.2"
diff --git a/recipes-kernel/linux/linux-linaro-qcomlt_5.4.bb b/recipes-kernel/linux/linux-linaro-qcomlt_5.4.bb
index 130cfb3..83074c1 100644
--- a/recipes-kernel/linux/linux-linaro-qcomlt_5.4.bb
+++ b/recipes-kernel/linux/linux-linaro-qcomlt_5.4.bb
@@ -9,7 +9,7 @@ require recipes-kernel/linux/linux-qcom-bootimg.inc
LOCALVERSION ?= "-linaro-lt-qcom"
SRCBRANCH ?= "release/qcomlt-5.4"
-SRCREV ?= "8c79b3d123550fde184d9ef6b3d5e2e530abe0bd"
+SRCREV ?= "e2db8e82634bd73bce5ce1e447720756777ca432"
COMPATIBLE_MACHINE = "(apq8016|apq8096|sdm845)"