summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backports/recipes-bsp/firmware-imx/firmware-imx-8.10.1.inc (renamed from backports/recipes-bsp/firmware-imx/firmware-imx-8.10.inc)8
-rw-r--r--backports/recipes-bsp/firmware-imx/firmware-imx-8_8.10.1.bb (renamed from backports/recipes-bsp/firmware-imx/firmware-imx-8_8.10.bb)0
-rw-r--r--backports/recipes-bsp/firmware-imx/firmware-imx-8m_8.10.1.bb (renamed from backports/recipes-bsp/firmware-imx/firmware-imx-8m_8.10.bb)2
-rw-r--r--backports/recipes-bsp/firmware-imx/firmware-imx_8.10.1.bb (renamed from backports/recipes-bsp/firmware-imx/firmware-imx_8.10.bb)2
-rw-r--r--backports/recipes-bsp/imx-mkimage/files/0001-iMX8M-soc.mak-use-native-mkimage-from-sysroot.patch82
-rw-r--r--backports/recipes-bsp/imx-mkimage/files/0001-mkimage_fit_atf-fix-fit-generator-node-naming.patch166
-rw-r--r--backports/recipes-bsp/imx-mkimage/imx-mkimage_git.inc8
-rw-r--r--backports/recipes-bsp/imx-seco/imx-seco-libs/0002-Makefile-Fix-install-to-clear-host-user-contaminated.patch34
-rw-r--r--backports/recipes-bsp/imx-seco/imx-seco-libs_git.bb7
-rw-r--r--backports/recipes-bsp/imx-seco/imx-seco_3.8.6.bb (renamed from backports/recipes-bsp/imx-seco/imx-seco_3.7.4.bb)10
-rw-r--r--backports/recipes-bsp/imx-vpu-hantro-vc/imx-vpu-hantro-vc_1.3.0.bb19
-rw-r--r--backports/recipes-bsp/isp-imx/basler-camera_4.2.2.11.0.bb28
-rw-r--r--backports/recipes-bsp/isp-imx/isp-imx/0001-start_isp.sh-fix-test-to-be-generic.patch41
-rw-r--r--backports/recipes-bsp/isp-imx/isp-imx_4.2.2.11.0.bb86
-rw-r--r--backports/recipes-fsl/packagegroups/packagegroup-fsl-isp.bb13
-rw-r--r--backports/recipes-graphics/drm/libdrm_2.4.102.imx.bb7
-rw-r--r--backports/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.8.14.bb (renamed from backports/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.8.12.bb)6
-rw-r--r--backports/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.4.3.p1.4.bb (renamed from backports/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.4.3.p1.0.bb)10
-rw-r--r--backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc8
-rw-r--r--backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.0-aarch64.bb6
-rw-r--r--backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.4-aarch32.bb (renamed from backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.0-aarch32.bb)4
-rw-r--r--backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.4-aarch64.bb6
-rw-r--r--backports/recipes-graphics/wayland/wayland-protocols_1.20.imx.bb2
-rw-r--r--backports/recipes-graphics/wayland/weston_9.0.0.imx.bb4
-rw-r--r--backports/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.4.3.p1.4.bb (renamed from backports/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.4.3.p1.0.bb)4
-rw-r--r--backports/recipes-kernel/kernel-modules/kernel-module-isp-vvcam_4.2.2.11.0.bb19
-rw-r--r--backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.16.imx.bb2
-rw-r--r--backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.16.imx.bb2
-rw-r--r--backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.16.imx.bb2
-rw-r--r--backports/recipes-multimedia/gstreamer/gstreamer1.0_1.16.imx.bb2
-rw-r--r--backports/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.5.7.bb2
-rw-r--r--backports/recipes-support/opencv/opencv/0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch36
-rw-r--r--backports/recipes-support/opencv/opencv/0001-Add-smaller-version-of-download_models.py.patch179
-rw-r--r--backports/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch28
-rw-r--r--backports/recipes-support/opencv/opencv/0001-Make-ts-module-external.patch42
-rw-r--r--backports/recipes-support/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch31
-rw-r--r--backports/recipes-support/opencv/opencv/0001-Use-Os-to-compile-tinyxml2.cpp.patch31
-rw-r--r--backports/recipes-support/opencv/opencv/0001-sfm-link-with-Glog_LIBS.patch44
-rw-r--r--backports/recipes-support/opencv/opencv/0003-To-fix-errors-as-following.patch70
-rw-r--r--backports/recipes-support/opencv/opencv/OpenCV_DNN_examples.patch139
-rw-r--r--backports/recipes-support/opencv/opencv/download.patch41
-rw-r--r--backports/recipes-support/opencv/opencv_4.5.2.imx.bb301
-rw-r--r--conf/layer.conf32
-rw-r--r--conf/machine/apalis-imx8.conf22
-rw-r--r--conf/machine/apalis-imx8x-v11a.conf18
-rw-r--r--conf/machine/apalis-imx8x.conf79
-rw-r--r--conf/machine/colibri-imx6ull-emmc.conf49
-rw-r--r--conf/machine/colibri-imx8x-v10b.conf18
-rw-r--r--conf/machine/colibri-imx8x.conf10
-rw-r--r--conf/machine/include/apalis-imx6.inc10
-rw-r--r--conf/machine/include/colibri-imx6.inc4
-rw-r--r--conf/machine/include/colibri-imx6ull-emmc.inc26
-rw-r--r--conf/machine/include/colibri-imx6ull.inc4
-rw-r--r--conf/machine/include/colibri-imx7-emmc.inc5
-rw-r--r--conf/machine/include/colibri-imx7.inc8
-rw-r--r--conf/machine/verdin-imx8mm.conf14
-rw-r--r--conf/machine/verdin-imx8mp.conf23
-rw-r--r--qt5-layer/recipes-qt/qt5/qtwayland_%.bbappend2
-rw-r--r--recipes-bsp/alsa-state/alsa-state.bbappend40
-rw-r--r--recipes-bsp/alsa-state/alsa-state/colibri-imx7-emmc/asound.state259
-rw-r--r--recipes-bsp/alsa-state/alsa-state/colibri-imx7/asound.state259
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.conf250
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.state (renamed from recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound.state)0
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.conf250
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.state729
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.conf250
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.state519
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.conf250
-rw-r--r--recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.state729
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx-8_8.%.bbappend14
-rw-r--r--recipes-bsp/imx-atf/imx-atf_%.bbappend12
-rw-r--r--recipes-bsp/imx-mkimage/imx-boot_%.bbappend8
-rw-r--r--recipes-bsp/imx-sc-firmware/imx-sc-firmware-toradex_1.7.0.bb3
-rw-r--r--recipes-bsp/u-boot/files/0001-colibri_imx7-boot-linux-kernel-in-non-secure-mode.patch15
-rw-r--r--recipes-bsp/u-boot/files/0001-tools-image-host-fix-wrong-return-value.patch41
-rw-r--r--recipes-bsp/u-boot/u-boot-tools_%.bbappend5
-rw-r--r--recipes-bsp/u-boot/u-boot-toradex-common.inc2
-rw-r--r--recipes-bsp/u-boot/u-boot-toradex-common_2020.04.inc2
-rw-r--r--recipes-bsp/u-boot/u-boot-toradex_2020.07.bb20
-rw-r--r--recipes-graphics/drm/libdrm_2.4.102.imx.bbappend2
-rw-r--r--recipes-graphics/wayland/weston-init.bbappend40
-rw-r--r--recipes-kernel/linux-firmware/linux-firmware_%.bbappend29
-rw-r--r--recipes-kernel/linux/device-tree-overlays_git.bb2
-rw-r--r--recipes-kernel/linux/linux-imx-headers_5.4%.bbappend10
-rw-r--r--recipes-kernel/linux/linux-toradex_5.4-2.3.x.bb11
-rw-r--r--recipes-kernel/perf/perf.bbappend2
-rw-r--r--recipes-multimedia/gstreamer/gst-plugins-package.inc56
-rw-r--r--recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_%.bbappend1
-rw-r--r--recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc41
-rw-r--r--recipes-support/bmode-usb/bmode-usb_1.0.bb1
-rw-r--r--recipes-support/btuart/btuart.bb37
-rw-r--r--recipes-support/btuart/files/COPYING5
-rw-r--r--recipes-support/btuart/files/btuart.service13
-rwxr-xr-xrecipes-support/btuart/files/btuart.sh8
-rw-r--r--wic/verdin-imx8mp-imx-boot-bootpart.wks.in20
95 files changed, 5394 insertions, 399 deletions
diff --git a/backports/recipes-bsp/firmware-imx/firmware-imx-8.10.inc b/backports/recipes-bsp/firmware-imx/firmware-imx-8.10.1.inc
index 6f1222a..582beb1 100644
--- a/backports/recipes-bsp/firmware-imx/firmware-imx-8.10.inc
+++ b/backports/recipes-bsp/firmware-imx/firmware-imx-8.10.1.inc
@@ -1,16 +1,16 @@
# Copyright (C) 2012-2016 Freescale Semiconductor
-# Copyright (C) 2017-2020 NXP
+# Copyright (C) 2017-2021 NXP
# Copyright (C) 2018 O.S. Systems Software LTDA.
SECTION = "base"
LICENSE = "Proprietary"
-LIC_FILES_CHKSUM = "file://COPYING;md5=cf3f9b8d09bc3926b1004ea71f7a248a"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3c3fe2b904fd694f28d2f646ee16dddb"
SRC_URI = " \
${FSL_MIRROR}/firmware-imx-${PV}.bin;fsl-eula=true \
"
-SRC_URI[md5sum] = "3f8c4661ca0f64ca30fd239f66b6a471"
-SRC_URI[sha256sum] = "2b70f169d4065b2a7ac7a676afe24636128bd2dacc9f5230346758c3b146b2be"
+SRC_URI[md5sum] = "1a9414928c3f30e7a911700fe83cd62e"
+SRC_URI[sha256sum] = "da415c32063c08fce8f52734f198b19ab06bd7d4333a4df900f8831df562f8fc"
S = "${WORKDIR}/firmware-imx-${PV}"
diff --git a/backports/recipes-bsp/firmware-imx/firmware-imx-8_8.10.bb b/backports/recipes-bsp/firmware-imx/firmware-imx-8_8.10.1.bb
index 650c1cf..650c1cf 100644
--- a/backports/recipes-bsp/firmware-imx/firmware-imx-8_8.10.bb
+++ b/backports/recipes-bsp/firmware-imx/firmware-imx-8_8.10.1.bb
diff --git a/backports/recipes-bsp/firmware-imx/firmware-imx-8m_8.10.bb b/backports/recipes-bsp/firmware-imx/firmware-imx-8m_8.10.1.bb
index 44e9ff4..a48356e 100644
--- a/backports/recipes-bsp/firmware-imx/firmware-imx-8m_8.10.bb
+++ b/backports/recipes-bsp/firmware-imx/firmware-imx-8m_8.10.1.bb
@@ -21,4 +21,4 @@ addtask deploy after do_install before do_build
PACKAGE_ARCH = "${MACHINE_SOCARCH}"
-COMPATIBLE_MACHINE = "(mx8m)"
+COMPATIBLE_MACHINE = "(mx8m|imx-boot-container)"
diff --git a/backports/recipes-bsp/firmware-imx/firmware-imx_8.10.bb b/backports/recipes-bsp/firmware-imx/firmware-imx_8.10.1.bb
index 84534a6..8ff4a32 100644
--- a/backports/recipes-bsp/firmware-imx/firmware-imx_8.10.bb
+++ b/backports/recipes-bsp/firmware-imx/firmware-imx_8.10.1.bb
@@ -16,6 +16,8 @@ do_install() {
# SDMA Firmware section
install -d ${D}${nonarch_base_libdir}/firmware/imx/sdma
install -m 0644 ${S}/firmware/sdma/* ${D}${nonarch_base_libdir}/firmware/imx/sdma
+ rm -f ${D}${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx6q.bin
+ rm -f ${D}${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx7d.bin
# EASRC Firmware section
install -d ${D}${nonarch_base_libdir}/firmware/imx/easrc
diff --git a/backports/recipes-bsp/imx-mkimage/files/0001-iMX8M-soc.mak-use-native-mkimage-from-sysroot.patch b/backports/recipes-bsp/imx-mkimage/files/0001-iMX8M-soc.mak-use-native-mkimage-from-sysroot.patch
new file mode 100644
index 0000000..ea5c058
--- /dev/null
+++ b/backports/recipes-bsp/imx-mkimage/files/0001-iMX8M-soc.mak-use-native-mkimage-from-sysroot.patch
@@ -0,0 +1,82 @@
+From e630c5809ad039efaaea0342b06306512eada53a Mon Sep 17 00:00:00 2001
+From: Andrey Zhizhikin <andrey.z@gmail.com>
+Date: Tue, 22 Feb 2022 20:00:21 +0100
+Subject: [PATCH] iMX8M: soc.mak: use native mkimage from sysroot
+
+mkimage tool is provided as a part of sysroot from Yocto build. Current
+implementation on the imx-mkimge on the other hand copies it locally in
+order to invoke it from within the build folder.
+
+Since recent updates, mkimage requires openssl.so to be installed, which
+when local copy is used causes the tool not to operate and fails the
+build.
+
+Use it from the build sysroot, and do not pull the local version of it.
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Andrey Zhizhikin <andrey.z@gmail.com>
+---
+ iMX8M/soc.mak | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/iMX8M/soc.mak b/iMX8M/soc.mak
+index 30ecefd..5d568e7 100644
+--- a/iMX8M/soc.mak
++++ b/iMX8M/soc.mak
+@@ -146,7 +146,7 @@ u-boot.itb: $(dtbs)
+ ./$(PAD_IMAGE) bl31.bin
+ ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtbs)
+ DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ./mkimage_fit_atf.sh $(dtbs) > u-boot.its
+- ./mkimage_uboot -E -p 0x3000 -f u-boot.its u-boot.itb
++ mkimage -E -p 0x3000 -f u-boot.its u-boot.itb
+ @rm -f u-boot.its $(dtbs)
+
+ dtbs_ddr3l = valddr3l.dtb
+@@ -158,7 +158,7 @@ u-boot-ddr3l.itb: $(dtbs_ddr3l)
+ ./$(PAD_IMAGE) bl31.bin
+ ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtbs_ddr3l)
+ DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ./mkimage_fit_atf.sh $(dtbs_ddr3l) > u-boot-ddr3l.its
+- ./mkimage_uboot -E -p 0x3000 -f u-boot-ddr3l.its u-boot-ddr3l.itb
++ mkimage -E -p 0x3000 -f u-boot-ddr3l.its u-boot-ddr3l.itb
+ @rm -f u-boot.its $(dtbs_ddr3l)
+
+ dtbs_ddr3l_evk = evkddr3l.dtb
+@@ -170,7 +170,7 @@ u-boot-ddr3l-evk.itb: $(dtbs_ddr3l_evk)
+ ./$(PAD_IMAGE) bl31.bin
+ ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtbs_ddr3l_evk)
+ DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ./mkimage_fit_atf.sh $(dtbs_ddr3l_evk) > u-boot-ddr3l-evk.its
+- ./mkimage_uboot -E -p 0x3000 -f u-boot-ddr3l-evk.its u-boot-ddr3l-evk.itb
++ mkimage -E -p 0x3000 -f u-boot-ddr3l-evk.its u-boot-ddr3l-evk.itb
+ @rm -f u-boot.its $(dtbs_ddr3l_evk)
+
+ dtbs_ddr4 = valddr4.dtb
+@@ -182,7 +182,7 @@ u-boot-ddr4.itb: $(dtbs_ddr4)
+ ./$(PAD_IMAGE) bl31.bin
+ ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtbs_ddr4)
+ DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ./mkimage_fit_atf.sh $(dtbs_ddr4) > u-boot-ddr4.its
+- ./mkimage_uboot -E -p 0x3000 -f u-boot-ddr4.its u-boot-ddr4.itb
++ mkimage -E -p 0x3000 -f u-boot-ddr4.its u-boot-ddr4.itb
+ @rm -f u-boot.its $(dtbs_ddr4)
+
+ dtbs_ddr4_evk = evkddr4.dtb
+@@ -194,7 +194,7 @@ u-boot-ddr4-evk.itb: $(dtbs_ddr4_evk)
+ ./$(PAD_IMAGE) bl31.bin
+ ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtbs_ddr4_evk)
+ DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ./mkimage_fit_atf.sh $(dtbs_ddr4_evk) > u-boot-ddr4-evk.its
+- ./mkimage_uboot -E -p 0x3000 -f u-boot-ddr4-evk.its u-boot-ddr4-evk.itb
++ mkimage -E -p 0x3000 -f u-boot-ddr4-evk.its u-boot-ddr4-evk.itb
+ @rm -f u-boot.its $(dtbs_ddr4_evk)
+
+ ifeq ($(HDMI),yes)
+@@ -310,7 +310,6 @@ nightly :
+ @$(WGET) -q $(SERVER)/$(DIR)/$(FW_DIR)/fsl-$(PLAT)-evk.dtb -O fsl-$(PLAT)-evk.dtb
+ @$(WGET) -q $(SERVER)/$(DIR)/$(FW_DIR)/signed_hdmi_imx8m.bin -O signed_hdmi_imx8m.bin
+ @$(WGET) -q $(SERVER)/$(DIR)/$(FW_DIR)/signed_dp_imx8m.bin -O signed_dp_imx8m.bin
+- @$(WGET) -q $(SERVER)/$(DIR)/$(FW_DIR)/mkimage_uboot -O mkimage_uboot
+
+ archive :
+ git ls-files --others --exclude-standard -z | xargs -0 tar rvf $(ARCHIVE_PATH)/$(ARCHIVE_NAME)
+--
+2.25.1
+
diff --git a/backports/recipes-bsp/imx-mkimage/files/0001-mkimage_fit_atf-fix-fit-generator-node-naming.patch b/backports/recipes-bsp/imx-mkimage/files/0001-mkimage_fit_atf-fix-fit-generator-node-naming.patch
new file mode 100644
index 0000000..3c2842a
--- /dev/null
+++ b/backports/recipes-bsp/imx-mkimage/files/0001-mkimage_fit_atf-fix-fit-generator-node-naming.patch
@@ -0,0 +1,166 @@
+From 9cf936493388897379f33b511ec869c6fa5409ce Mon Sep 17 00:00:00 2001
+From: Andrey Zhizhikin <andrey.z@gmail.com>
+Date: Thu, 22 Apr 2021 12:20:28 +0000
+Subject: [PATCH] mkimage_fit_atf: fix fit generator node naming
+
+Since upstream commit 79af75f777 ("fit: Don't allow verification of images
+with @ nodes") [1], unit addresses on the nodes are prohibited and nodes
+that do contain those addresses are ignored during the ITS parsing. This
+is done in an effort to cover the CVE-2021-27138, where nodes with unit
+addresses can be mis-interpreted by libfdt.
+
+Correct FIT generator script and replace nodes with unit addresses to
+plain node names with "-" instead of "@" to create a unique naming.
+
+In addition, extend sections which contains "firmware" in their types
+with "os" parameter to conform to the latest FIT specification.
+
+Indicate that load and entry addresses are covered by one 32-bit value
+by adding "address-cells" in the root node of the generated ITS.
+
+Upstream-Status: Inappropriate [script is imx-boot specific]
+Link: [1] https://github.com/u-boot/u-boot/commit/79af75f7776fc20b0d7eb6afe1e27c00fdb4b9b4
+Signed-off-by: Andrey Zhizhikin <andrey.z@gmail.com>
+Cc: Tom Hochstein <tom.hochstein@nxp.com>
+---
+ iMX8M/mkimage_fit_atf.sh | 40 ++++++++++++++++++++++------------------
+ 1 file changed, 22 insertions(+), 18 deletions(-)
+
+diff --git a/iMX8M/mkimage_fit_atf.sh b/iMX8M/mkimage_fit_atf.sh
+index 95749b1..10903ea 100755
+--- a/iMX8M/mkimage_fit_atf.sh
++++ b/iMX8M/mkimage_fit_atf.sh
+@@ -23,7 +23,7 @@ else
+ fi
+
+ BL32="tee.bin"
+-LOADABLES="\"atf@1\""
++LOADABLES="\"atf-1\""
+
+ if [ ! -f $BL32 ]; then
+ BL32=/dev/null
+@@ -31,7 +31,7 @@ else
+ echo "Building with TEE support, make sure your bl31 is compiled with spd. If you do not want tee, please delete tee.bin" >&2
+ echo "tee.bin size: " >&2
+ ls -lct tee.bin | awk '{print $5}' >&2
+- LOADABLES="$LOADABLES, \"tee@1\""
++ LOADABLES="$LOADABLES, \"tee-1\""
+ fi
+
+ BL33="u-boot-nodtb.bin"
+@@ -41,7 +41,7 @@ if [ ! -f $DEK_BLOB ]; then
+ DEK_BLOB=/dev/null
+ else
+ echo "Building with encrypted boot support, make sure to replace DEK Blob in final image." >&2
+- LOADABLES="\"dek_blob@1\", $LOADABLES"
++ LOADABLES="\"dek_blob-1\", $LOADABLES"
+ fi
+
+ if [ ! -f $BL33 ]; then
+@@ -64,10 +64,12 @@ cat << __HEADER_EOF
+
+ / {
+ description = "Configuration to load ATF before U-Boot";
++ #address-cells = <1>;
+
+ images {
+- uboot@1 {
++ uboot-1 {
+ description = "U-Boot (64-bit)";
++ os = "u-boot";
+ data = /incbin/("$BL33");
+ type = "standalone";
+ arch = "arm64";
+@@ -80,7 +82,7 @@ cnt=1
+ for dtname in $*
+ do
+ cat << __FDT_IMAGE_EOF
+- fdt@$cnt {
++ fdt-$cnt {
+ description = "$(basename $dtname .dtb)";
+ data = /incbin/("$dtname");
+ type = "flat_dt";
+@@ -91,8 +93,9 @@ cnt=$((cnt+1))
+ done
+
+ cat << __HEADER_EOF
+- atf@1 {
++ atf-1 {
+ description = "ARM Trusted Firmware";
++ os = "arm-trusted-firmware";
+ data = /incbin/("$BL31");
+ type = "firmware";
+ arch = "arm64";
+@@ -104,8 +107,9 @@ __HEADER_EOF
+
+ if [ -f $BL32 ]; then
+ cat << __HEADER_EOF
+- tee@1 {
++ tee-1 {
+ description = "TEE firmware";
++ os = "op-tee-firmware";
+ data = /incbin/("$BL32");
+ type = "firmware";
+ arch = "arm64";
+@@ -118,7 +122,7 @@ fi
+
+ if [ -f $DEK_BLOB ]; then
+ cat << __HEADER_EOF
+- dek_blob@1 {
++ dek_blob-1 {
+ description = "dek_blob";
+ data = /incbin/("$DEK_BLOB");
+ type = "script";
+@@ -131,7 +135,7 @@ fi
+ cat << __CONF_HEADER_EOF
+ };
+ configurations {
+- default = "config@1";
++ default = "config-1";
+
+ __CONF_HEADER_EOF
+
+@@ -141,31 +145,31 @@ do
+ if [ -f $BL32 ]; then
+ if [ $ROLLBACK_INDEX_IN_FIT ]; then
+ cat << __CONF_SECTION_EOF
+- config@$cnt {
++ config-$cnt {
+ description = "$(basename $dtname .dtb)";
+- firmware = "uboot@1";
++ firmware = "uboot-1";
+ loadables = $LOADABLES;
+- fdt = "fdt@$cnt";
++ fdt = "fdt-$cnt";
+ rbindex = "$ROLLBACK_INDEX_IN_FIT";
+ };
+ __CONF_SECTION_EOF
+ else
+ cat << __CONF_SECTION_EOF
+- config@$cnt {
++ config-$cnt {
+ description = "$(basename $dtname .dtb)";
+- firmware = "uboot@1";
++ firmware = "uboot-1";
+ loadables = $LOADABLES;
+- fdt = "fdt@$cnt";
++ fdt = "fdt-$cnt";
+ };
+ __CONF_SECTION_EOF
+ fi
+ else
+ cat << __CONF_SECTION1_EOF
+- config@$cnt {
++ config-$cnt {
+ description = "$(basename $dtname .dtb)";
+- firmware = "uboot@1";
++ firmware = "uboot-1";
+ loadables = $LOADABLES;
+- fdt = "fdt@$cnt";
++ fdt = "fdt-$cnt";
+ };
+ __CONF_SECTION1_EOF
+ fi
+--
+2.17.1
+
diff --git a/backports/recipes-bsp/imx-mkimage/imx-mkimage_git.inc b/backports/recipes-bsp/imx-mkimage/imx-mkimage_git.inc
index 1eba510..99c61df 100644
--- a/backports/recipes-bsp/imx-mkimage/imx-mkimage_git.inc
+++ b/backports/recipes-bsp/imx-mkimage/imx-mkimage_git.inc
@@ -3,8 +3,12 @@
DEPENDS = "zlib-native openssl-native"
SRCBRANCH = "imx_5.4.70_2.3.0"
-SRC_URI = "git://source.codeaurora.org/external/imx/imx-mkimage.git;protocol=https;branch=${SRCBRANCH}"
-SRCREV = "8947fea369ab3932259630232cfb9f87b8f9dda1"
+SRC_URI = "git://github.com/nxp-imx/imx-mkimage.git;protocol=https;branch=${SRCBRANCH} \
+ file://0001-mkimage_fit_atf-fix-fit-generator-node-naming.patch \
+ file://0001-iMX8M-soc.mak-use-native-mkimage-from-sysroot.patch \
+"
+
+SRCREV = "6a315dbc608f90d630bf34024679f682054a5bea"
S = "${WORKDIR}/git"
BOOT_TOOLS = "imx-boot-tools"
diff --git a/backports/recipes-bsp/imx-seco/imx-seco-libs/0002-Makefile-Fix-install-to-clear-host-user-contaminated.patch b/backports/recipes-bsp/imx-seco/imx-seco-libs/0002-Makefile-Fix-install-to-clear-host-user-contaminated.patch
new file mode 100644
index 0000000..757b9a6
--- /dev/null
+++ b/backports/recipes-bsp/imx-seco/imx-seco-libs/0002-Makefile-Fix-install-to-clear-host-user-contaminated.patch
@@ -0,0 +1,34 @@
+From 59608dcb0f0a6f6d8154b1d331c2403d7c1143eb Mon Sep 17 00:00:00 2001
+From: Cristinel Panfir <cristinel.panfir@nxp.com>
+Date: Fri, 5 Feb 2021 19:27:00 +0200
+Subject: [PATCH] Makefile: Fix install to clear host-user-contaminated
+ warnings [HSM-483]
+
+WARNING: imx-seco-libs-git-r0 do_package_qa: QA Issue:
+imx-seco-libs: /usr/lib/hsm_lib.a is owned by uid 26292, which is the same as the user running bitbake. This may be due to host contamination
+imx-seco-libs: /usr/lib/she_lib.a is owned by uid 26292, which is the same as the user running bitbake. This may be due to host contamination
+imx-seco-libs: /usr/lib/seco_nvm_manager.a is owned by uid 26292, which is the same as the user running bitbake.
+This may be due to host contamination [host-user-contaminated]
+
+Upstream-Status: Pending
+
+Signed-off-by: Cristinel Panfir <cristinel.panfir@nxp.com>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 492d700..25ad333 100644
+--- a/Makefile
++++ b/Makefile
+@@ -63,7 +63,7 @@ hsm_doc: include/hsm/hsm_api.h
+
+ install: hsm_test she_test she_lib.a seco_nvm_manager.a hsm_lib.a
+ mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(INCLUDEDIR)
+- cp -a seco_nvm_manager.a hsm_lib.a she_lib.a $(DESTDIR)$(LIBDIR)
++ cp seco_nvm_manager.a hsm_lib.a she_lib.a $(DESTDIR)$(LIBDIR)
+ cp hsm_test she_test $(DESTDIR)$(BINDIR)
+ cp -a include/* $(DESTDIR)$(INCLUDEDIR)
+
+--
+2.25.1
diff --git a/backports/recipes-bsp/imx-seco/imx-seco-libs_git.bb b/backports/recipes-bsp/imx-seco/imx-seco-libs_git.bb
index 220b4cc..dc37cdf 100644
--- a/backports/recipes-bsp/imx-seco/imx-seco-libs_git.bb
+++ b/backports/recipes-bsp/imx-seco/imx-seco-libs_git.bb
@@ -8,9 +8,10 @@ LIC_FILES_CHKSUM = "file://EULA.txt;md5=228c72f2a91452b8a03c4cab30f30ef9"
DEPENDS = "zlib"
-SRCBRANCH = "imx_5.4.70_2.3.0"
-SRC_URI = "git://github.com/NXP/imx-seco-libs.git;protocol=https;branch=${SRCBRANCH}"
-SRCREV = "b730ba5975644094f224faee20942f63d0d24ccd"
+SRCBRANCH = "imx_5.4.70_2.3.1"
+SRC_URI = "git://github.com/NXP/imx-seco-libs.git;protocol=https;branch=${SRCBRANCH} \
+ file://0002-Makefile-Fix-install-to-clear-host-user-contaminated.patch"
+SRCREV = "79e5fb5d096c61b1c3163c9fa8e42719509d95a0"
S = "${WORKDIR}/git"
diff --git a/backports/recipes-bsp/imx-seco/imx-seco_3.7.4.bb b/backports/recipes-bsp/imx-seco/imx-seco_3.8.6.bb
index 142d115..2df50ae 100644
--- a/backports/recipes-bsp/imx-seco/imx-seco_3.7.4.bb
+++ b/backports/recipes-bsp/imx-seco/imx-seco_3.8.6.bb
@@ -4,18 +4,14 @@ SUMMARY = "NXP i.MX SECO firmware"
DESCRIPTION = "NXP IMX SECO firmware"
SECTION = "base"
LICENSE = "Proprietary"
-LIC_FILES_CHKSUM = "file://COPYING;md5=cf3f9b8d09bc3926b1004ea71f7a248a"
-FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V17 = "cf3f9b8d09bc3926b1004ea71f7a248a"
-FSL_EULA_FILE_MD5SUMS_append = " \
- ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V17} \
-"
+LIC_FILES_CHKSUM = "file://COPYING;md5=be5ff43682ed6c57dfcbeb97651c2829"
inherit fsl-eula-unpack use-imx-security-controller-firmware deploy
SRC_URI = "${FSL_MIRROR}/${BP}.bin;fsl-eula=true"
-SRC_URI[md5sum] = "f0e20216f27f2f44ac809634c5291be5"
-SRC_URI[sha256sum] = "2ed8177e48c8e33f742b3a642805be56a5ef56df78b1b29e10518552154da2bc"
+SRC_URI[md5sum] = "2427a45069a89bb9b9b470642ce17f18"
+SRC_URI[sha256sum] = "3bf3f4ae69f77fd8fe28a216f3927fb84e75461364ad332dd9b4605beadae59a"
do_compile[noexec] = "1"
diff --git a/backports/recipes-bsp/imx-vpu-hantro-vc/imx-vpu-hantro-vc_1.3.0.bb b/backports/recipes-bsp/imx-vpu-hantro-vc/imx-vpu-hantro-vc_1.3.0.bb
index 22f620f..bd08789 100644
--- a/backports/recipes-bsp/imx-vpu-hantro-vc/imx-vpu-hantro-vc_1.3.0.bb
+++ b/backports/recipes-bsp/imx-vpu-hantro-vc/imx-vpu-hantro-vc_1.3.0.bb
@@ -13,4 +13,23 @@ S = "${WORKDIR}/${BPN}-${PV}"
SRC_URI[md5sum] = "37c61718602ff08041b81319cfd6a8d9"
SRC_URI[sha256sum] = "8425796fc63d7107f2f57c51497281c4d54c883b2670817347fbe55f39dc2b8c"
+# SCR is the location and name of the Software Content Register file
+# relative to ${D}${D_SUBDIR}.
+SCR = "SCR.txt"
+
+do_install () {
+ install -d ${D}${D_SUBDIR}
+ cp -r ${S}/* ${D}${D_SUBDIR}
+ if [ -d "${D}/usr/lib" ] && [ "${D}/usr/lib" != "${D}${libdir}" ]; then
+ mv ${D}/usr/lib ${D}${libdir}
+ fi
+ rm ${D}${D_SUBDIR}/COPYING
+ if [ ! -f ${D}${D_SUBDIR}/${SCR} ]; then
+ bbfatal "Missing Software Content Register \"${D}${D_SUBDIR}/${SCR}\""
+ fi
+ rm ${D}${D_SUBDIR}/${SCR}
+}
+
+FILES_${PN} = "/"
+
COMPATIBLE_MACHINE = "(mx8mp)"
diff --git a/backports/recipes-bsp/isp-imx/basler-camera_4.2.2.11.0.bb b/backports/recipes-bsp/isp-imx/basler-camera_4.2.2.11.0.bb
new file mode 100644
index 0000000..afbbe17
--- /dev/null
+++ b/backports/recipes-bsp/isp-imx/basler-camera_4.2.2.11.0.bb
@@ -0,0 +1,28 @@
+# Copyright 2020-2021 NXP
+
+DESCRIPTION = "Basler camera binary drivers"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3c3fe2b904fd694f28d2f646ee16dddb"
+
+inherit fsl-eula-unpack
+
+SRC_URI = "${FSL_MIRROR}/${BPN}-${PV}.bin;fsl-eula=true"
+
+SRC_URI[md5sum] = "2e0bd011f8d72e1957c4d6da55364be5"
+SRC_URI[sha256sum] = "4be5c4f26dc0f3f5e031c2d8ac295ff5768489e7e978aaa901030fd77b5209c2"
+
+do_install() {
+ dest_dir=${D}/opt/imx8-isp/bin
+ install -d ${D}/${libdir}
+ install -d $dest_dir
+ cp -r ${S}/opt/imx8-isp/bin/* $dest_dir
+ cp -r ${S}/usr/lib/* ${D}/${libdir}
+}
+
+SYSTEMD_AUTO_ENABLE = "enable"
+
+FILES_${PN} = "${libdir} ${libdir}/.so /opt"
+FILES_${PN}-dev = ""
+INSANE_SKIP_${PN} = "file-rdeps already-stripped dev-so"
+
+COMPATIBLE_MACHINE = "(imx|use-nxp-bsp)"
diff --git a/backports/recipes-bsp/isp-imx/isp-imx/0001-start_isp.sh-fix-test-to-be-generic.patch b/backports/recipes-bsp/isp-imx/isp-imx/0001-start_isp.sh-fix-test-to-be-generic.patch
new file mode 100644
index 0000000..1b62afe
--- /dev/null
+++ b/backports/recipes-bsp/isp-imx/isp-imx/0001-start_isp.sh-fix-test-to-be-generic.patch
@@ -0,0 +1,41 @@
+From 708f25cfe522df162c3e2c7c56cbe2f7000cb5e4 Mon Sep 17 00:00:00 2001
+From: Gary Bisson <gary.bisson@boundarydevices.com>
+Date: Mon, 14 Dec 2020 14:26:01 +0100
+Subject: [PATCH] start_isp.sh: fix test to be generic
+
+So that it works on EVK and any other i.MX 8M Plus platform.
+
+Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
+---
+ imx/start_isp.sh | 13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
+
+Index: isp-imx-4.2.2.11.0/imx/start_isp.sh
+===================================================================
+--- isp-imx-4.2.2.11.0.orig/imx/start_isp.sh
++++ isp-imx-4.2.2.11.0/imx/start_isp.sh
+@@ -8,6 +8,7 @@
+
+ RUNTIME_DIR="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
+ NR_DEVICE_TREE_BASLER=$(grep basler-camera-vvcam /sys/firmware/devicetree/base/soc@0/*/i2c@*/*/compatible -l | wc -l 2> /dev/null)
++DMESG_BASLER=`dmesg | grep Basler`
+
+ # check if the basler device has been enabled in the device tree
+ if [ $NR_DEVICE_TREE_BASLER -eq 1 ]; then
+@@ -28,8 +29,15 @@ elif [ $NR_DEVICE_TREE_BASLER -eq 2 ]; t
+ # Available configurations: dual_basler_1080p60, dual_basler_1080p60hdr
+ exec ./run.sh -c dual_basler_1080p60 -lm
+
++elif [ ! -z "$DMESG_BASLER" ]; then
++
++ echo "Starting isp_media_server for generic Basler"
++
++ cd $RUNTIME_DIR
++ exec ./run.sh -c basler_1080p60
++
+ else
+ # no device tree found exit with code no device or address
+- echo "No device tree found for Basler, check dtb file!" >&2
++ echo "Basler camera not found!" >&2
+ exit 6
+ fi
diff --git a/backports/recipes-bsp/isp-imx/isp-imx_4.2.2.11.0.bb b/backports/recipes-bsp/isp-imx/isp-imx_4.2.2.11.0.bb
new file mode 100644
index 0000000..d82fa07
--- /dev/null
+++ b/backports/recipes-bsp/isp-imx/isp-imx_4.2.2.11.0.bb
@@ -0,0 +1,86 @@
+# Copyright 2020-2021 NXP
+
+DESCRIPTION = "i.MX Verisilicon Software ISP"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3c3fe2b904fd694f28d2f646ee16dddb"
+DEPENDS = "python3 libdrm virtual/libg2d"
+
+SRC_URI = "${FSL_MIRROR}/${BP}.bin;fsl-eula=true \
+ file://0001-start_isp.sh-fix-test-to-be-generic.patch \
+"
+
+SRC_URI[md5sum] = "75f79ba556c47172b9a0cbc3a877e604"
+SRC_URI[sha256sum] = "28e2ee909f29a256c4eac87ef8336932d90a88a2a183389ac0868212954af42c"
+
+inherit fsl-eula-unpack cmake systemd use-imx-headers
+
+# Build the sub-folder appshell
+OECMAKE_SOURCEPATH = "${S}/appshell"
+
+# Use make instead of ninja
+OECMAKE_GENERATOR = "Unix Makefiles"
+
+SYSTEMD_SERVICE_${PN} = "imx8-isp.service"
+
+EXTRA_OECMAKE += " \
+ -DCMAKE_BUILD_TYPE=release \
+ -DISP_VERSION=ISP8000NANO_V1802 \
+ -DPLATFORM=ARM64 \
+ -DAPPMODE=V4L2 \
+ -DQTLESS=1 \
+ -DFULL_SRC_COMPILE=1 \
+ -DWITH_DRM=1 \
+ -DWITH_DWE=1 \
+ -DSERVER_LESS=1 \
+ -DSUBDEV_V4L2=1 \
+ -DENABLE_IRQ=1 \
+ -DPARTITION_BUILD=0 \
+ -D3A_SRC_BUILD=0 \
+ -DIMX_G2D=ON \
+ -Wno-dev \
+"
+
+do_configure_prepend() {
+ export SDKTARGETSYSROOT=${STAGING_DIR_HOST}
+}
+
+do_install() {
+ install -d ${D}/${libdir}
+ install -d ${D}/${includedir}
+ install -d ${D}/opt/imx8-isp/bin
+
+ cp -r ${WORKDIR}/build/generated/release/bin/*_test ${D}/opt/imx8-isp/bin
+ cp -r ${WORKDIR}/build/generated/release/bin/*2775* ${D}/opt/imx8-isp/bin
+ cp -r ${WORKDIR}/build/generated/release/bin/isp_media_server ${D}/opt/imx8-isp/bin
+ cp -r ${WORKDIR}/build/generated/release/bin/vvext ${D}/opt/imx8-isp/bin
+ cp -r ${WORKDIR}/${BP}/dewarp/dewarp_config/ ${D}/opt/imx8-isp/bin
+ cp -r ${WORKDIR}/build/generated/release/lib/*.so* ${D}/${libdir}
+ cp -r ${WORKDIR}/build/generated/release/include/* ${D}/${includedir}
+
+ cp ${WORKDIR}/${BP}/imx/run.sh ${D}/opt/imx8-isp/bin
+ cp ${WORKDIR}/${BP}/imx/start_isp.sh ${D}/opt/imx8-isp/bin
+
+ chmod +x ${D}/opt/imx8-isp/bin/run.sh
+ chmod +x ${D}/opt/imx8-isp/bin/start_isp.sh
+
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/${BP}/imx/imx8-isp.service ${D}${systemd_system_unitdir}
+ fi
+}
+
+# The build contains a mix of versioned and unversioned libraries, so
+# the default packaging configuration needs some modifications
+FILES_SOLIBSDEV = ""
+FILES_${PN} += "/opt ${libdir}/lib*${SOLIBSDEV}"
+FILES_${PN}-dev += " \
+ ${libdir}/libjsoncpp.so \
+ ${libdir}/libos08a20.so \
+ ${libdir}/libov2775.so \
+"
+
+INSANE_SKIP_${PN} = "rpaths"
+
+RDEPENDS_${PN} = "libdrm libpython3"
+
+COMPATIBLE_MACHINE = "(imx|use-nxp-bsp)"
diff --git a/backports/recipes-fsl/packagegroups/packagegroup-fsl-isp.bb b/backports/recipes-fsl/packagegroups/packagegroup-fsl-isp.bb
new file mode 100644
index 0000000..838017a
--- /dev/null
+++ b/backports/recipes-fsl/packagegroups/packagegroup-fsl-isp.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Add packages for ISP build"
+
+inherit packagegroup
+
+ISP_PKGS ?= ""
+ISP_PKGS_mx8mp = " \
+ isp-imx \
+ basler-camera \
+ kernel-module-isp-vvcam \
+"
+RDEPENDS_${PN} = " \
+ ${ISP_PKGS} \
+"
diff --git a/backports/recipes-graphics/drm/libdrm_2.4.102.imx.bb b/backports/recipes-graphics/drm/libdrm_2.4.102.imx.bb
index d246757..ab3b8b6 100644
--- a/backports/recipes-graphics/drm/libdrm_2.4.102.imx.bb
+++ b/backports/recipes-graphics/drm/libdrm_2.4.102.imx.bb
@@ -10,14 +10,15 @@ LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c5
PROVIDES = "drm"
DEPENDS = "libpthread-stubs"
-IMX_LIBDRM_SRC ?= "git://source.codeaurora.org/external/imx/libdrm-imx.git;protocol=https;nobranch=1"
+IMX_LIBDRM_SRC ?= "git://github.com/nxp-imx/libdrm-imx.git;protocol=https;nobranch=1"
IMX_LIBDRM_BRANCH ?= "libdrm-imx-2.4.102"
SRC_URI = "${IMX_LIBDRM_SRC};branch=${IMX_LIBDRM_BRANCH} \
file://0001-meson-add-libdrm-vivante-to-the-meson-meta-data.patch "
-SRCREV = "f525ae649cd6e81e5d4e459799b0f7a120c4e174"
+SRCREV = "40ea53973b99b7df07f472318918a8c2b310e4a7"
S = "${WORKDIR}/git"
DEFAULT_PREFERENCE = "-1"
+COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
inherit meson pkgconfig manpages
@@ -68,3 +69,5 @@ RRECOMMENDS_${PN}-drivers_append_imxgpu = " ${PN}-vivante"
FILES_${PN}-vivante = "${libdir}/libdrm_vivante.so.*"
PACKAGECONFIG_append_imxgpu = " vivante"
PACKAGECONFIG[vivante] = "-Dvivante=true,-Dvivante=false"
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
diff --git a/backports/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.8.12.bb b/backports/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.8.14.bb
index c407fb4..1176fa1 100644
--- a/backports/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.8.12.bb
+++ b/backports/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.8.14.bb
@@ -4,12 +4,12 @@
DESCRIPTION = "GPU G2D library and apps for i.MX with 2D GPU and DPU"
LICENSE = "Proprietary"
-LIC_FILES_CHKSUM = "file://COPYING;md5=cf3f9b8d09bc3926b1004ea71f7a248a"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a632fefd1c359980434f9389833cab3a"
PROVIDES += "virtual/libg2d"
SRC_URI = "${FSL_MIRROR}/${BPN}-${PV}.bin;fsl-eula=true"
-SRC_URI[md5sum] = "18a4119f1f7b83a09f60381e5403bbab"
-SRC_URI[sha256sum] = "ba7e219b3cee32e0ac305685de21c67f30e0e5a1a89b5ec441ae6b8484b3f964"
+SRC_URI[md5sum] = "51b1a54f303bea31325549e9fb1f0d04"
+SRC_URI[sha256sum] = "360012a32353bde233a548f25a8f99b18660059ea2655ab15335a967843ce3b9"
inherit fsl-eula-unpack
diff --git a/backports/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.4.3.p1.0.bb b/backports/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.4.3.p1.4.bb
index ed11a54..257ecf1 100644
--- a/backports/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.4.3.p1.0.bb
+++ b/backports/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.4.3.p1.4.bb
@@ -5,7 +5,7 @@
DESCRIPTION = "GPU G2D library and apps for i.MX with 2D GPU and no DPU"
LICENSE = "Proprietary"
-LIC_FILES_CHKSUM = "file://COPYING;md5=cf3f9b8d09bc3926b1004ea71f7a248a"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a632fefd1c359980434f9389833cab3a"
DEPENDS += "libgal-imx"
PROVIDES += "virtual/libg2d"
@@ -13,10 +13,10 @@ PROVIDES += "virtual/libg2d"
FSLBIN_NAME = "${PN}-${PV}-${TARGET_ARCH}"
SRC_URI = "${FSL_MIRROR}/${FSLBIN_NAME}.bin;name=${TARGET_ARCH};fsl-eula=true"
-SRC_URI[aarch64.md5sum] = "2c17220ff2c28701b5feca45b341961f"
-SRC_URI[aarch64.sha256sum] = "47a39b171d83bced378b1b4f408be6304850fe2f25bf4577dd1ea78e22473f3d"
-SRC_URI[arm.md5sum] = "968a7d324016376930579a0f904d6e69"
-SRC_URI[arm.sha256sum] = "8d3b024151d4bdcc4f68cdbba9c4e5d126d55c9258de5821c43b393ae3f840b4"
+SRC_URI[aarch64.md5sum] = "575eac63da712019bfe3ac4c616b2774"
+SRC_URI[aarch64.sha256sum] = "017e8c40a51311bb384a427467ec6950f91879b9e36c48074dd29c6ca7db8c4f"
+SRC_URI[arm.md5sum] = "9eab89a12949534a5a45050c24ba4cba"
+SRC_URI[arm.sha256sum] = "a5ee498e47e52cbc56292d5ea8d71b5194775c750fa0415a43ea05ddb1acb08a"
S = "${WORKDIR}/${FSLBIN_NAME}"
diff --git a/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc b/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc
index 5acf635..0417d15 100644
--- a/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc
+++ b/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc
@@ -6,7 +6,7 @@
DESCRIPTION = "GPU driver and apps for i.MX"
SECTION = "libs"
LICENSE = "Proprietary"
-LIC_FILES_CHKSUM = "file://COPYING;md5=cf3f9b8d09bc3926b1004ea71f7a248a"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a632fefd1c359980434f9389833cab3a"
DEPENDS += " \
${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', \
@@ -275,7 +275,7 @@ do_install () {
ALLOW_EMPTY_${PN} = "1"
FILES_libclc-imx = "${libdir}/libCLC${SOLIBS}"
-FILES_libclc-imx-dev = "${includedir}/CL ${libdir}/libCLC${SOLIBSDEV}"
+FILES_libclc-imx-dev = "${libdir}/libCLC${SOLIBSDEV}"
# libEGL.so is used by some demo apps from Freescale
INSANE_SKIP_libegl-imx += "dev-so"
@@ -284,9 +284,9 @@ FILES_libegl-imx-dev = "${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/
FILES_libgal-imx = "${libdir}/libGAL${SOLIBS} ${libdir}/libGAL_egl${SOLIBS}"
FILES_libgal-imx-dev = "${libdir}/libGAL${SOLIBSDEV} ${includedir}/HAL"
-RDEPENDS_libgal-imx += "kernel-module-imx-gpu-viv"
RDEPENDS_libgal-imx += "${@bb.utils.contains('PACKAGECONFIG', 'valgrind', 'valgrind', '', d)}"
RPROVIDES_libgal-imx += "libgal-imx"
+RRECOMMENDS_libgal-imx += "kernel-module-imx-gpu-viv"
INSANE_SKIP_libgal-imx += "build-deps"
FILES_libvsc-imx = "${libdir}/libVSC${SOLIBS}"
@@ -331,7 +331,7 @@ FILES_libgles3-imx-dev = "${includedir}/GLES3"
RDEPENDS_libgles2-imx-dev += "libgles3-imx-dev"
FILES_libglslc-imx = "${libdir}/libGLSLC${SOLIBS}"
-FILES_libglslc-imx-dev = "${includedir}/CL ${libdir}/libGLSLC${SOLIBSDEV}"
+FILES_libglslc-imx-dev = "${libdir}/libGLSLC${SOLIBSDEV}"
FILES_libopencl-imx = "${libdir}/libOpenCL${REALSOLIBS} \
${libdir}/libVivanteOpenCL${SOLIBS} \
diff --git a/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.0-aarch64.bb b/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.0-aarch64.bb
deleted file mode 100644
index 4db5479..0000000
--- a/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.0-aarch64.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require imx-gpu-viv-6.inc
-
-SRC_URI[md5sum] = "72a212a1bd8102718f8b03d935f1dcbc"
-SRC_URI[sha256sum] = "0505620c3851a980d2e08fee4b4fcd06eff92efac02d1646924bea86e4384ad4"
-
-COMPATIBLE_MACHINE = "(mx8)"
diff --git a/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.0-aarch32.bb b/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.4-aarch32.bb
index 39eb1a1..e6c1f8a 100644
--- a/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.0-aarch32.bb
+++ b/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.4-aarch32.bb
@@ -4,7 +4,7 @@
require imx-gpu-viv-6.inc
-SRC_URI[md5sum] = "3ab06c5aa485c79c14e6c856ccfd8d82"
-SRC_URI[sha256sum] = "9960fadbc1ea919f8b1b5c1e2e38a52b7293b70c906518d7fff2ada4140c59ea"
+SRC_URI[md5sum] = "1270a84dcd0d0e985a8bfa9027988fb2"
+SRC_URI[sha256sum] = "ecdd5355f6aa0d154c3ddf575fde28d0212767d852d2843f3a75aba10c65cd46"
COMPATIBLE_MACHINE = "(mx6q|mx6dl|mx6sx|mx6sl|mx7ulp)"
diff --git a/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.4-aarch64.bb b/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.4-aarch64.bb
new file mode 100644
index 0000000..b1b4bac
--- /dev/null
+++ b/backports/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.4.3.p1.4-aarch64.bb
@@ -0,0 +1,6 @@
+require imx-gpu-viv-6.inc
+
+SRC_URI[md5sum] = "2493f1264458ac13572cf328ae78f280"
+SRC_URI[sha256sum] = "5f1579ac846dad3464e2e7c7569ea59c89bd12bc61b79344c1210d80e1ea91e1"
+
+COMPATIBLE_MACHINE = "(mx8)"
diff --git a/backports/recipes-graphics/wayland/wayland-protocols_1.20.imx.bb b/backports/recipes-graphics/wayland/wayland-protocols_1.20.imx.bb
index 852b316..c8af730 100644
--- a/backports/recipes-graphics/wayland/wayland-protocols_1.20.imx.bb
+++ b/backports/recipes-graphics/wayland/wayland-protocols_1.20.imx.bb
@@ -9,7 +9,7 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \
file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53"
-SRC_URI = "git://source.codeaurora.org/external/imx/wayland-protocols-imx.git;protocol=https;branch=wayland-protocols-imx-1.20"
+SRC_URI = "git://github.com/nxp-imx/wayland-protocols-imx.git;protocol=https;branch=wayland-protocols-imx-1.20"
SRCREV = "9cacf108d0ee5863c7a656da5d2271bc2396e43d"
S = "${WORKDIR}/git"
diff --git a/backports/recipes-graphics/wayland/weston_9.0.0.imx.bb b/backports/recipes-graphics/wayland/weston_9.0.0.imx.bb
index 93ad31c..c29023f 100644
--- a/backports/recipes-graphics/wayland/weston_9.0.0.imx.bb
+++ b/backports/recipes-graphics/wayland/weston_9.0.0.imx.bb
@@ -149,7 +149,7 @@ SUMMARY = "Weston, a Wayland compositor, i.MX fork"
DEFAULT_PREFERENCE = "-1"
SRCBRANCH = "weston-imx-9.0"
-SRC_URI = "git://source.codeaurora.org/external/imx/weston-imx.git;protocol=https;branch=${SRCBRANCH} \
+SRC_URI = "git://github.com/nxp-imx/weston-imx.git;protocol=https;branch=${SRCBRANCH} \
file://weston.png \
file://weston.desktop \
file://xwayland.weston-start \
@@ -157,7 +157,7 @@ SRC_URI = "git://source.codeaurora.org/external/imx/weston-imx.git;protocol=http
file://0001-libweston-backend-fbdev-fbdev.c-don-t-destroy-output.patch \
file://0002-libweston-pixman-renderer.c-zero-freed-pointer.patch \
"
-SRCREV = "a1823f20a1d6e24d2f56e98c5576eda34a94f567"
+SRCREV = "230e9bc3d647e511e0601e3d45034f22495ed3c7"
S = "${WORKDIR}/git"
# Disable OpenGL for parts with GPU support for 2D but not 3D
diff --git a/backports/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.4.3.p1.0.bb b/backports/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.4.3.p1.4.bb
index 98cfb2b..e31aad3 100644
--- a/backports/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.4.3.p1.0.bb
+++ b/backports/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.4.3.p1.4.bb
@@ -8,8 +8,8 @@ LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
SRCBRANCH = "imx_5.4.70_2.3.0"
-LOCALVERSION = "-${SRCBRANCH}"
-KERNEL_SRC ?= "git://source.codeaurora.org/external/imx/linux-imx.git;protocol=https"
+LOCALVERSION = "-imx_5.4.70_2.3.2"
+KERNEL_SRC ?= "git://github.com/nxp-imx/linux-imx.git;protocol=https"
SRC_URI = " \
${KERNEL_SRC};branch=${SRCBRANCH};subpath=drivers/mxc/gpu-viv;destsuffix=git/src \
file://Add-makefile.patch \
diff --git a/backports/recipes-kernel/kernel-modules/kernel-module-isp-vvcam_4.2.2.11.0.bb b/backports/recipes-kernel/kernel-modules/kernel-module-isp-vvcam_4.2.2.11.0.bb
new file mode 100644
index 0000000..364d675
--- /dev/null
+++ b/backports/recipes-kernel/kernel-modules/kernel-module-isp-vvcam_4.2.2.11.0.bb
@@ -0,0 +1,19 @@
+# Copyright 2020-2021 NXP
+
+DESCRIPTION = "Kernel loadable module for ISP"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/git/vvcam/LICENSE;md5=64381a6ea83b48c39fe524c85f65fb44"
+
+SRCBRANCH = "imx_5.4.70_2.3.2"
+ISP_KERNEL_SRC ?= "git://github.com/nxp-imx/isp-vvcam.git;protocol=https"
+
+SRC_URI = " \
+ ${ISP_KERNEL_SRC};branch=${SRCBRANCH} \
+"
+SRCREV = "6cbf264313b4859c985c8d66bae19b522996de6c"
+
+S = "${WORKDIR}/git/vvcam/v4l2"
+
+inherit module
+
+COMPATIBLE_MACHINE = "(imx|use-nxp-bsp)"
diff --git a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.16.imx.bb b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.16.imx.bb
index 8064d43..259e1ca 100644
--- a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.16.imx.bb
+++ b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.16.imx.bb
@@ -10,7 +10,7 @@ DEFAULT_PREFERENCE = "-1"
PACKAGE_ARCH_imxpxp = "${MACHINE_SOCARCH}"
PACKAGE_ARCH_mx8 = "${MACHINE_SOCARCH}"
-GST1.0-PLUGINS-BAD_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-bad.git;protocol=https"
+GST1.0-PLUGINS-BAD_SRC ?= "gitsm://github.com/nxp-imx/gst-plugins-bad.git;protocol=https"
SRCBRANCH = "MM_04.05.07_2011_L5.4.70"
SRC_URI = " \
diff --git a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.16.imx.bb b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.16.imx.bb
index c965be9..2e29ee1 100644
--- a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.16.imx.bb
+++ b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.16.imx.bb
@@ -4,7 +4,7 @@ LICENSE = "GPLv2+ & LGPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607"
-GST1.0-PLUGINS-BASE_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-base.git;protocol=https"
+GST1.0-PLUGINS-BASE_SRC ?= "gitsm://github.com/nxp-imx/gst-plugins-base.git;protocol=https"
SRCBRANCH = "MM_04.05.06_2008_L5.4.47"
SRCREV = "3c4aa2a58576d68f6e684efa58609665679c9969"
SRC_URI = "${GST1.0-PLUGINS-BASE_SRC};branch=${SRCBRANCH} \
diff --git a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.16.imx.bb b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.16.imx.bb
index 8413bf1..314b134 100644
--- a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.16.imx.bb
+++ b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.16.imx.bb
@@ -1,7 +1,7 @@
require recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc
-GST1.0-PLUGINS-GOOD_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-good.git;protocol=https"
+GST1.0-PLUGINS-GOOD_SRC ?= "gitsm://github.com/nxp-imx/gst-plugins-good.git;protocol=https"
SRCBRANCH = "MM_04.05.07_2011_L5.4.70"
SRC_URI = " \
diff --git a/backports/recipes-multimedia/gstreamer/gstreamer1.0_1.16.imx.bb b/backports/recipes-multimedia/gstreamer/gstreamer1.0_1.16.imx.bb
index 8bbc16c..3d558c6 100644
--- a/backports/recipes-multimedia/gstreamer/gstreamer1.0_1.16.imx.bb
+++ b/backports/recipes-multimedia/gstreamer/gstreamer1.0_1.16.imx.bb
@@ -14,7 +14,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d"
# Use i.MX fork of GST for customizations
-GST1.0_SRC ?= "gitsm://source.codeaurora.org/external/imx/gstreamer.git;protocol=https"
+GST1.0_SRC ?= "gitsm://github.com/nxp-imx/gstreamer.git;protocol=https"
SRCBRANCH = "MM_04.05.06_2008_L5.4.47"
SRC_URI = " \
diff --git a/backports/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.5.7.bb b/backports/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.5.7.bb
index 5f434f1..d76eeb3 100644
--- a/backports/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.5.7.bb
+++ b/backports/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.5.7.bb
@@ -23,7 +23,7 @@ LIC_FILES_CHKSUM = "file://COPYING-LGPL-2;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
SRCBRANCH = "MM_04.05.07_2011_L5.4.70"
SRC_URI = " \
- git://source.codeaurora.org/external/imx/imx-gst1.0-plugin.git;protocol=https;branch=${SRCBRANCH} \
+ git://github.com/nxp-imx/imx-gst1.0-plugin.git;protocol=https;branch=${SRCBRANCH} \
"
SRCREV = "659ec4947d6b1903d26e4ec9e40ae251a659935d"
diff --git a/backports/recipes-support/opencv/opencv/0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch b/backports/recipes-support/opencv/opencv/0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch
new file mode 100644
index 0000000..9e6a613
--- /dev/null
+++ b/backports/recipes-support/opencv/opencv/0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch
@@ -0,0 +1,36 @@
+From 9b4959b97d2e95d4b49cf6ca2a3fce3cdb484f2d Mon Sep 17 00:00:00 2001
+From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
+Date: Thu, 31 Mar 2016 00:20:15 +0200
+Subject: [PATCH] 3rdparty/ippicv: Use pre-downloaded ipp
+
+Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
+Signed-off-by: Ismo Puustinen <ismo.puustinen@intel.com>
+
+---
+ 3rdparty/ippicv/ippicv.cmake | 15 +--------------
+ 1 file changed, 1 insertion(+), 14 deletions(-)
+
+diff --git a/3rdparty/ippicv/ippicv.cmake b/3rdparty/ippicv/ippicv.cmake
+index 257af6fcc6..f88460450f 100644
+--- a/3rdparty/ippicv/ippicv.cmake
++++ b/3rdparty/ippicv/ippicv.cmake
+@@ -34,18 +34,5 @@ function(download_ippicv root_var)
+ endif()
+
+ set(THE_ROOT "${OpenCV_BINARY_DIR}/3rdparty/ippicv")
+- ocv_download(FILENAME ${OPENCV_ICV_NAME}
+- HASH ${OPENCV_ICV_HASH}
+- URL
+- "${OPENCV_IPPICV_URL}"
+- "$ENV{OPENCV_IPPICV_URL}"
+- "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
+- DESTINATION_DIR "${THE_ROOT}"
+- ID IPPICV
+- STATUS res
+- UNPACK RELATIVE_URL)
+-
+- if(res)
+- set(${root_var} "${THE_ROOT}/${OPENCV_ICV_PACKAGE_SUBDIR}" PARENT_SCOPE)
+- endif()
++ set(${root_var} "${THE_ROOT}/${OPENCV_ICV_PACKAGE_SUBDIR}" PARENT_SCOPE)
+ endfunction()
diff --git a/backports/recipes-support/opencv/opencv/0001-Add-smaller-version-of-download_models.py.patch b/backports/recipes-support/opencv/opencv/0001-Add-smaller-version-of-download_models.py.patch
new file mode 100644
index 0000000..0aabee2
--- /dev/null
+++ b/backports/recipes-support/opencv/opencv/0001-Add-smaller-version-of-download_models.py.patch
@@ -0,0 +1,179 @@
+From fca4d9eec289f22c081daa2c61a1110e3f268f92 Mon Sep 17 00:00:00 2001
+From: Tom Hochstein <tom.hochstein@nxp.com>
+Date: Tue, 1 Sep 2020 14:57:07 -0500
+Subject: [PATCH] Add smaller version of download_models.py
+
+Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
+---
+ testdata/dnn/download_models_basic.py | 159 ++++++++++++++++++++++++++
+ 1 file changed, 159 insertions(+)
+ create mode 100644 testdata/dnn/download_models_basic.py
+
+diff --git a/testdata/dnn/download_models_basic.py b/testdata/dnn/download_models_basic.py
+new file mode 100644
+index 0000000..5c8a616
+--- /dev/null
++++ b/testdata/dnn/download_models_basic.py
+@@ -0,0 +1,159 @@
++#!/usr/bin/env python
++
++from __future__ import print_function
++import hashlib
++import sys
++import tarfile
++if sys.version_info[0] < 3:
++ from urllib2 import urlopen
++else:
++ from urllib.request import urlopen
++
++
++class Model:
++ MB = 1024*1024
++ BUFSIZE = 10*MB
++
++ def __init__(self, **kwargs):
++ self.name = kwargs.pop('name')
++ self.url = kwargs.pop('url', None)
++ self.filename = kwargs.pop('filename')
++ self.sha = kwargs.pop('sha', None)
++ self.archive = kwargs.pop('archive', None)
++ self.member = kwargs.pop('member', None)
++
++ def __str__(self):
++ return 'Model <{}>'.format(self.name)
++
++ def printRequest(self, r):
++ def getMB(r):
++ d = dict(r.info())
++ for c in ['content-length', 'Content-Length']:
++ if c in d:
++ return int(d[c]) / self.MB
++ return '<unknown>'
++ print(' {} {} [{} Mb]'.format(r.getcode(), r.msg, getMB(r)))
++
++ def verify(self):
++ if not self.sha:
++ return False
++ print(' expect {}'.format(self.sha))
++ sha = hashlib.sha1()
++ try:
++ with open(self.filename, 'rb') as f:
++ while True:
++ buf = f.read(self.BUFSIZE)
++ if not buf:
++ break
++ sha.update(buf)
++ print(' actual {}'.format(sha.hexdigest()))
++ return self.sha == sha.hexdigest()
++ except Exception as e:
++ print(' catch {}'.format(e))
++
++ def get(self):
++ if self.verify():
++ print(' hash match - skipping')
++ return True
++
++ if self.archive or self.member:
++ assert(self.archive and self.member)
++ print(' hash check failed - extracting')
++ print(' get {}'.format(self.member))
++ self.extract()
++ else:
++ assert(self.url)
++ print(' hash check failed - downloading')
++ print(' get {}'.format(self.url))
++ self.download()
++
++ print(' done')
++ print(' file {}'.format(self.filename))
++ return self.verify()
++
++ def download(self):
++ try:
++ r = urlopen(self.url, timeout=60)
++ self.printRequest(r)
++ self.save(r)
++ except Exception as e:
++ print(' catch {}'.format(e))
++
++ def extract(self):
++ try:
++ with tarfile.open(self.archive) as f:
++ assert self.member in f.getnames()
++ self.save(f.extractfile(self.member))
++ except Exception as e:
++ print(' catch {}'.format(e))
++
++ def save(self, r):
++ with open(self.filename, 'wb') as f:
++ print(' progress ', end='')
++ sys.stdout.flush()
++ while True:
++ buf = r.read(self.BUFSIZE)
++ if not buf:
++ break
++ f.write(buf)
++ print('>', end='')
++ sys.stdout.flush()
++
++models = [
++ Model(
++ name='Fcn',
++ url='http://dl.caffe.berkeleyvision.org/fcn8s-heavy-pascal.caffemodel',
++ sha='c449ea74dd7d83751d1357d6a8c323fcf4038962',
++ filename='fcn8s-heavy-pascal.caffemodel'),
++ Model(
++ name='SqueezeNet_v1.1',
++ url='https://raw.githubusercontent.com/DeepScale/SqueezeNet/b5c3f1a23713c8b3fd7b801d229f6b04c64374a5/SqueezeNet_v1.1/squeezenet_v1.1.caffemodel',
++ sha='3397f026368a45ae236403ccc81cfcbe8ebe1bd0',
++ filename='squeezenet_v1.1.caffemodel'),
++ Model(
++ name='Colorization',
++ url='https://raw.githubusercontent.com/richzhang/colorization/master/models/colorization_deploy_v2.prototxt',
++ sha='f528334e386a69cbaaf237a7611d833bef8e5219',
++ filename='colorization_deploy_v2.prototxt'),
++ Model(
++ name='Colorization',
++ url='http://eecs.berkeley.edu/~rich.zhang/projects/2016_colorization/files/demo_v2/colorization_release_v2.caffemodel',
++ sha='21e61293a3fa6747308171c11b6dd18a68a26e7f',
++ filename='colorization_release_v2.caffemodel'),
++ Model(
++ name='OpenPose/pose/coco', # https://github.com/CMU-Perceptual-Computing-Lab/openpose
++ url='http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/coco/pose_iter_440000.caffemodel',
++ sha='ac7e97da66f3ab8169af2e601384c144e23a95c1',
++ filename='openpose_pose_coco.caffemodel'),
++ Model(
++ name='YOLOv3', # https://pjreddie.com/darknet/yolo/
++ url='https://pjreddie.com/media/files/yolov3.weights',
++ sha='520878f12e97cf820529daea502acca380f1cb8e',
++ filename='yolov3.weights'),
++ Model(
++ name='EAST', # https://github.com/argman/EAST (a TensorFlow model), https://arxiv.org/abs/1704.03155v2 (a paper)
++ url='https://www.dropbox.com/s/r2ingd0l3zt8hxs/frozen_east_text_detection.tar.gz?dl=1',
++ sha='3ca8233d6edd748f7ed23246c8ca24cbf696bb94',
++ filename='frozen_east_text_detection.tar.gz'),
++ Model(
++ name='EAST',
++ archive='frozen_east_text_detection.tar.gz',
++ member='frozen_east_text_detection.pb',
++ sha='fffabf5ac36f37bddf68e34e84b45f5c4247ed06',
++ filename='frozen_east_text_detection.pb'),
++]
++
++# Note: models will be downloaded to current working directory
++# expected working directory is opencv_extra/testdata/dnn
++if __name__ == '__main__':
++ failedModels = []
++ for m in models:
++ print(m)
++ if not m.get():
++ failedModels.append(m.filename)
++
++ if failedModels:
++ print("Following models have not been downloaded:")
++ for f in failedModels:
++ print("* {}".format(f))
++ exit(15)
+--
+2.17.1
+
diff --git a/backports/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch b/backports/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch
new file mode 100644
index 0000000..948a80f
--- /dev/null
+++ b/backports/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch
@@ -0,0 +1,28 @@
+From 66e50ee69fa9ee2469d349100e70d8b296c4b4dc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 11 Sep 2018 00:21:18 -0700
+Subject: [PATCH] Dont use isystem
+
+clang really does not like it
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ cmake/OpenCVPCHSupport.cmake | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/cmake/OpenCVPCHSupport.cmake b/cmake/OpenCVPCHSupport.cmake
+index 08cd06def4..46c9c02da3 100644
+--- a/cmake/OpenCVPCHSupport.cmake
++++ b/cmake/OpenCVPCHSupport.cmake
+@@ -18,6 +18,8 @@ IF(CV_GCC)
+ SET(PCHSupport_FOUND TRUE)
+ ENDIF()
+
++ SET(CMAKE_INCLUDE_SYSTEM_FLAG_C "-I")
++ SET(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-I")
+ SET(_PCH_include_prefix "-I")
+ SET(_PCH_isystem_prefix "-isystem")
+ SET(_PCH_define_prefix "-D")
diff --git a/backports/recipes-support/opencv/opencv/0001-Make-ts-module-external.patch b/backports/recipes-support/opencv/opencv/0001-Make-ts-module-external.patch
new file mode 100644
index 0000000..d56b8ae
--- /dev/null
+++ b/backports/recipes-support/opencv/opencv/0001-Make-ts-module-external.patch
@@ -0,0 +1,42 @@
+From 11bbf909e08594628bd757d989ae34cf1bfe200b Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Thu, 18 Jun 2020 05:51:38 +0000
+Subject: [PATCH] Make ts module external
+
+Make ts module external
+
+Reference: https://github.com/qbonnard/opencv/commit/6b229c5834cb9a0930425e762a6c7b03244d7abb
+
+Upstream-Status: Submitted [https://github.com/opencv/opencv/issues/8408]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ modules/ts/CMakeLists.txt | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/modules/ts/CMakeLists.txt b/modules/ts/CMakeLists.txt
+index f95bed0793..66f315bcca 100644
+--- a/modules/ts/CMakeLists.txt
++++ b/modules/ts/CMakeLists.txt
+@@ -4,9 +4,6 @@ if(NOT BUILD_opencv_ts AND NOT BUILD_TESTS AND NOT BUILD_PERF_TESTS)
+ ocv_module_disable(ts)
+ endif()
+
+-set(OPENCV_MODULE_TYPE STATIC)
+-set(OPENCV_MODULE_IS_PART_OF_WORLD FALSE)
+-
+ if(WINRT)
+ # WINRT doesn't have access to environment variables
+ # so adding corresponding macros during CMake run
+@@ -16,7 +13,7 @@ endif()
+
+ ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef)
+
+-ocv_add_module(ts INTERNAL opencv_core opencv_imgproc opencv_imgcodecs opencv_videoio opencv_highgui)
++ocv_add_module(ts opencv_core opencv_imgproc opencv_imgcodecs opencv_videoio opencv_highgui)
+
+ ocv_glob_module_sources()
+ ocv_module_include_directories()
+--
+2.24.1
+
diff --git a/backports/recipes-support/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch b/backports/recipes-support/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch
new file mode 100644
index 0000000..1e47f8b
--- /dev/null
+++ b/backports/recipes-support/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch
@@ -0,0 +1,31 @@
+From e4ec6cea72da9e9ae5ba57140fa2f5c63f1f8295 Mon Sep 17 00:00:00 2001
+From: Jason Wessel <jason.wessel@windriver.com>
+Date: Wed, 9 May 2018 13:33:59 -0700
+Subject: [PATCH] Temporarliy work around deprecated ffmpeg RAW function
+ compile failure until next uprev
+
+Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
+
+---
+ modules/videoio/src/cap_ffmpeg_impl.hpp | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/modules/videoio/src/cap_ffmpeg_impl.hpp b/modules/videoio/src/cap_ffmpeg_impl.hpp
+index 6dca724a89..ae55dd4555 100644
+--- a/modules/videoio/src/cap_ffmpeg_impl.hpp
++++ b/modules/videoio/src/cap_ffmpeg_impl.hpp
+@@ -774,6 +774,14 @@ struct ImplMutex::Impl
+
+ #endif
+
++/* NOTE This is deprecated in ffmpeg and the code should be removed */
++#ifndef AVFMT_RAWPICTURE
++#define AVFMT_RAWPICTURE 0x0020
++#endif /* AVFMT_RAWPICTURE */
++#ifndef CODEC_FLAG_GLOBAL_HEADER
++#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
++#endif
++
+ void ImplMutex::init()
+ {
+ impl = new Impl();
diff --git a/backports/recipes-support/opencv/opencv/0001-Use-Os-to-compile-tinyxml2.cpp.patch b/backports/recipes-support/opencv/opencv/0001-Use-Os-to-compile-tinyxml2.cpp.patch
new file mode 100644
index 0000000..c5a6438
--- /dev/null
+++ b/backports/recipes-support/opencv/opencv/0001-Use-Os-to-compile-tinyxml2.cpp.patch
@@ -0,0 +1,31 @@
+From 59fafe6e39759e193b5764b36b4c5a93da352123 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 18 Aug 2020 00:36:49 -0700
+Subject: [PATCH] Use -Os to compile tinyxml2.cpp
+
+This workarounds issue [1] seen on riscv with gcc
+
+[1] https://github.com/riscv/riscv-gnu-toolchain/issues/624
+
+Upstream-Status: Inappropriate [ OE-Specific ]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ modules/datasets/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/datasets/CMakeLists.txt b/modules/datasets/CMakeLists.txt
+index 56ca9e310..99b7a33f6 100644
+--- a/modules/datasets/CMakeLists.txt
++++ b/modules/datasets/CMakeLists.txt
+@@ -2,7 +2,7 @@ set(the_description "datasets framework")
+
+ set(filter_srcs "${CMAKE_CURRENT_LIST_DIR}/src/tinyxml2/tinyxml2.cpp")
+ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+- ocv_append_source_files_cxx_compiler_options(filter_srcs "-Wno-suggest-override") # GCC
++ ocv_append_source_files_cxx_compiler_options(filter_srcs "-Wno-suggest-override -Os") # GCC
+ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ ocv_append_source_files_cxx_compiler_options(filter_srcs "-Wno-inconsistent-missing-override") # Clang
+ endif()
+--
+2.28.0
+
diff --git a/backports/recipes-support/opencv/opencv/0001-sfm-link-with-Glog_LIBS.patch b/backports/recipes-support/opencv/opencv/0001-sfm-link-with-Glog_LIBS.patch
new file mode 100644
index 0000000..7b2c410
--- /dev/null
+++ b/backports/recipes-support/opencv/opencv/0001-sfm-link-with-Glog_LIBS.patch
@@ -0,0 +1,44 @@
+From ffe20fc4ec46c6b491eff29a38f90686d4d035f6 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Mon, 12 Apr 2021 20:37:40 +0000
+Subject: [PATCH] sfm: link with Glog_LIBS
+
+* in 4.5.0 there was explicit linkage with GLOG_LIBRARY, but since 4.5.1 with:
+ https://github.com/opencv/opencv_contrib/commit/23ee62a19b7a3e50d6dbf295359d8b1aff2e03fd
+
+ it's gone, probably because Glog_FOUND is already set from Ceres,
+ but then GLOG_LIBRARIES is empty in LIBMV_LIGHT_LIBS and build with gold fails:
+
+FAILED: bin/example_tutorial_perspective_correction
+: && TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/x86_64-oe-linux-g++ -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -ITOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/git/include -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/recipe-sysroot -O2 -pipe -g -feliminate-unused-debug-types -fmacro-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0=/usr/src/debug/opencv/4.5.2-r0 -fdebug-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0=/usr/src/debug/opencv/4.5.2-r0 -fdebug-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/recipe-sysroot= -fdebug-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/recipe-sysroot-native= -fvisibility-inlines-hidden -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -ITOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/git/include -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/recipe-sysroot -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -mssse3 -DNDEBUG -DNDEBUG -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -ITOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/git/include -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/recipe-sysroot -O2 -pipe -g -feliminate-unused-debug-types -fmacro-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0=/usr/src/debug/opencv/4.5.2-r0 -fdebug-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0=/usr/src/debug/opencv/4.5.2-r0 -fdebug-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/recipe-sysroot= -fdebug-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/recipe-sysroot-native= -fvisibility-inlines-hidden -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -ITOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/git/include -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now -Wl,--gc-sections -Wl,--as-needed samples/cpp/CMakeFiles/example_tutorial_perspective_correction.dir/tutorial_code/features2D/Homography/perspective_correction.cpp.o -o bin/example_tutorial_perspective_correction -ldl -lm -lpthread -lrt lib/libopencv_gapi.so.4.5.2 lib/libopencv_stitching.so.4.5.2 lib/libopencv_ts.so.4.5.2 lib/libopencv_alphamat.so.4.5.2 lib/libopencv_aruco.so.4.5.2 lib/libopencv_bgsegm.so.4.5.2 lib/libopencv_bioinspired.so.4.5.2 lib/libopencv_ccalib.so.4.5.2 lib/libopencv_dnn_objdetect.so.4.5.2 lib/libopencv_dnn_superres.so.4.5.2 lib/libopencv_dpm.so.4.5.2 lib/libopencv_face.so.4.5.2 lib/libopencv_fuzzy.so.4.5.2 lib/libopencv_hfs.so.4.5.2 lib/libopencv_img_hash.so.4.5.2 lib/libopencv_intensity_transform.so.4.5.2 lib/libopencv_line_descriptor.so.4.5.2 lib/libopencv_mcc.so.4.5.2 lib/libopencv_quality.so.4.5.2 lib/libopencv_rapid.so.4.5.2 lib/libopencv_reg.so.4.5.2 lib/libopencv_rgbd.so.4.5.2 lib/libopencv_saliency.so.4.5.2 lib/libopencv_sfm.so.4.5.2 lib/libopencv_stereo.so.4.5.2 lib/libopencv_structured_light.so.4.5.2 lib/libopencv_superres.so.4.5.2 lib/libopencv_surface_matching.so.4.5.2 lib/libopencv_tracking.so.4.5.2 lib/libopencv_videostab.so.4.5.2 lib/libopencv_wechat_qrcode.so.4.5.2 lib/libopencv_xfeatures2d.so.4.5.2 lib/libopencv_xobjdetect.so.4.5.2 lib/libopencv_xphoto.so.4.5.2 lib/libopencv_shape.so.4.5.2 lib/libopencv_highgui.so.4.5.2 lib/libopencv_datasets.so.4.5.2 lib/libopencv_ml.so.4.5.2 lib/libopencv_plot.so.4.5.2 lib/libopencv_phase_unwrapping.so.4.5.2 lib/libopencv_optflow.so.4.5.2 lib/libopencv_ximgproc.so.4.5.2 lib/libopencv_videoio.so.4.5.2 lib/libopencv_video.so.4.5.2 lib/libopencv_dnn.so.4.5.2 lib/libopencv_imgcodecs.so.4.5.2 lib/libopencv_objdetect.so.4.5.2 lib/libopencv_calib3d.so.4.5.2 lib/libopencv_features2d.so.4.5.2 lib/libopencv_flann.so.4.5.2 lib/libopencv_photo.so.4.5.2 lib/libopencv_imgproc.so.4.5.2 lib/libopencv_core.so.4.5.2 -Wl,-rpath-link,TOPDIR/tmp-glibc/work/core2-64-oe-linux/opencv/4.5.2-r0/build/lib && :
+lib/libopencv_sfm.so.4.5.2: error: undefined reference to 'google::LogMessage::LogMessage(char const*, int)'
+lib/libopencv_sfm.so.4.5.2: error: undefined reference to 'google::LogMessage::stream()'
+lib/libopencv_sfm.so.4.5.2: error: undefined reference to 'google::LogMessage::~LogMessage()'
+lib/libopencv_sfm.so.4.5.2: error: undefined reference to 'google::kLogSiteUninitialized'
+lib/libopencv_sfm.so.4.5.2: error: undefined reference to 'fLI::FLAGS_v'
+lib/libopencv_sfm.so.4.5.2: error: undefined reference to 'google::InitVLOG3__(int**, int*, char const*, int)'
+lib/libopencv_sfm.so.4.5.2: error: undefined reference to 'google::LogMessageFatal::LogMessageFatal(char const*, int)'
+lib/libopencv_sfm.so.4.5.2: error: undefined reference to 'google::LogMessageFatal::~LogMessageFatal()'
+collect2: error: ld returned 1 exit status
+
+ Add Glog_LIBS which is set to the same value as GLOG_LIBRARIES used to be.
+
+Upstream-Status: Submitted [https://github.com/opencv/opencv_contrib/pull/2923]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ modules/sfm/CMakeLists.txt | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/modules/sfm/CMakeLists.txt b/modules/sfm/CMakeLists.txt
+index 045a1fe6e..ee7cecdac 100644
+--- a/modules/sfm/CMakeLists.txt
++++ b/modules/sfm/CMakeLists.txt
+@@ -84,6 +84,7 @@ set(LIBMV_LIGHT_LIBS
+ multiview
+ numeric
+ ${GLOG_LIBRARIES}
++ ${Glog_LIBS}
+ ${GFLAGS_LIBRARIES}
+ )
+
diff --git a/backports/recipes-support/opencv/opencv/0003-To-fix-errors-as-following.patch b/backports/recipes-support/opencv/opencv/0003-To-fix-errors-as-following.patch
new file mode 100644
index 0000000..bb47ef2
--- /dev/null
+++ b/backports/recipes-support/opencv/opencv/0003-To-fix-errors-as-following.patch
@@ -0,0 +1,70 @@
+From f42c9b8c7bafcadc7e95fb25a391707f970eb426 Mon Sep 17 00:00:00 2001
+From: Huang Qiyu <huangqy.fnst@cn.fujitsu.com>
+Date: Fri, 19 May 2017 04:27:50 +0900
+Subject: [PATCH] To fix errors as following:
+
+"test_main.cpp:45: undefined reference to `parseCustomOptions(int, char**)'"
+"perf_abs.cpp:13: undefined reference to `cvtest::param_seed'"
+"test_superres.cpp:270: undefined reference to `checkIppStatus()'"
+
+Signed-off-by: Huang Qiyu <huangqy.fnst@cn.fujitsu.com>
+
+Also add the visibility changes for certain OpenCL-related functions in
+ts module.
+
+Signed-off-by: Ismo Puustinen <ismo.puustinen@intel.com>
+
+---
+ modules/ts/include/opencv2/ts.hpp | 4 ++--
+ modules/ts/include/opencv2/ts/ocl_test.hpp | 2 +-
+ modules/ts/include/opencv2/ts/ts_ext.hpp | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/modules/ts/include/opencv2/ts.hpp b/modules/ts/include/opencv2/ts.hpp
+index ed7491a89a..80919d13ee 100644
+--- a/modules/ts/include/opencv2/ts.hpp
++++ b/modules/ts/include/opencv2/ts.hpp
+@@ -728,7 +728,7 @@ protected:
+ }
+ };
+
+-extern uint64 param_seed;
++CV_EXPORTS extern uint64 param_seed;
+
+ struct DefaultRngAuto
+ {
+@@ -791,7 +791,7 @@ private:
+ #endif
+ #endif
+
+-void parseCustomOptions(int argc, char **argv);
++CV_EXPORTS void parseCustomOptions(int argc, char **argv);
+
+ #define CV_TEST_INIT0_NOOP (void)0
+
+diff --git a/modules/ts/include/opencv2/ts/ocl_test.hpp b/modules/ts/include/opencv2/ts/ocl_test.hpp
+index 11572e9f48..438112e2aa 100644
+--- a/modules/ts/include/opencv2/ts/ocl_test.hpp
++++ b/modules/ts/include/opencv2/ts/ocl_test.hpp
+@@ -82,7 +82,7 @@ inline UMat ToUMat(InputArray src)
+ return dst;
+ }
+
+-extern int test_loop_times;
++CV_EXPORTS extern int test_loop_times;
+
+ #define MAX_VALUE 357
+
+diff --git a/modules/ts/include/opencv2/ts/ts_ext.hpp b/modules/ts/include/opencv2/ts/ts_ext.hpp
+index b2a4cac241..b94c681c0c 100644
+--- a/modules/ts/include/opencv2/ts/ts_ext.hpp
++++ b/modules/ts/include/opencv2/ts/ts_ext.hpp
+@@ -9,7 +9,7 @@
+ #define OPENCV_TS_EXT_HPP
+
+ namespace cvtest {
+-void checkIppStatus();
++CV_EXPORTS void checkIppStatus();
+ extern bool skipUnstableTests;
+ extern bool runBigDataTests;
+ extern int testThreads;
diff --git a/backports/recipes-support/opencv/opencv/OpenCV_DNN_examples.patch b/backports/recipes-support/opencv/opencv/OpenCV_DNN_examples.patch
new file mode 100644
index 0000000..0e83e99
--- /dev/null
+++ b/backports/recipes-support/opencv/opencv/OpenCV_DNN_examples.patch
@@ -0,0 +1,139 @@
+From 3c4daafb54f961e376104a461ca7ec114ff0331a Mon Sep 17 00:00:00 2001
+From: Ludek Slosarcik <ludek.slosarcik@nxp.com>
+Date: Fri, 14 Feb 2020 15:46:50 +0100
+Subject: [PATCH] opencv_dnn: added video device for 2 examples, and change text labels
+
+Signed-off-by: Ludek Slosarcik <ludek.slosarcik@nxp.com>
+
+Upstream-Status: Pending
+---
+ samples/cpp/logistic_regression.cpp | 2 +-
+ samples/dnn/classification.cpp | 7 ++++---
+ samples/dnn/object_detection.cpp | 10 +++++-----
+ samples/dnn/segmentation.cpp | 2 +-
+ samples/dnn/text_detection.cpp | 5 +++--
+ 5 files changed, 14 insertions(+), 12 deletions(-)
+
+Index: git/samples/cpp/logistic_regression.cpp
+===================================================================
+--- git.orig/samples/cpp/logistic_regression.cpp
++++ git/samples/cpp/logistic_regression.cpp
+@@ -28,7 +28,7 @@ static float calculateAccuracyPercent(co
+
+ int main()
+ {
+- const String filename = samples::findFile("data01.xml");
++ const String filename = samples::findFile("../data/data01.xml");
+ cout << "**********************************************************************" << endl;
+ cout << filename
+ << " contains digits 0 and 1 of 20 samples each, collected on an Android device" << endl;
+Index: git/samples/dnn/classification.cpp
+===================================================================
+--- git.orig/samples/dnn/classification.cpp
++++ git/samples/dnn/classification.cpp
+@@ -11,6 +11,7 @@ std::string keys =
+ "{ help h | | Print help message. }"
+ "{ @alias | | An alias name of model to extract preprocessing parameters from models.yml file. }"
+ "{ zoo | models.yml | An optional path to file with preprocessing parameters }"
++ "{ device | 0 | camera device number. }"
+ "{ input i | | Path to input image or video file. Skip this argument to capture frames from a camera.}"
+ "{ initial_width | 0 | Preprocess input image by initial resizing to a specific width.}"
+ "{ initial_height | 0 | Preprocess input image by initial resizing to a specific height.}"
+@@ -102,7 +103,7 @@ int main(int argc, char** argv)
+ if (parser.has("input"))
+ cap.open(parser.get<String>("input"));
+ else
+- cap.open(0);
++ cap.open(parser.get<int>("device"));
+ //! [Open a video file or an image file or a camera stream]
+
+ // Process frames.
+@@ -151,13 +152,13 @@ int main(int argc, char** argv)
+ double freq = getTickFrequency() / 1000;
+ double t = net.getPerfProfile(layersTimes) / freq;
+ std::string label = format("Inference time: %.2f ms", t);
+- putText(frame, label, Point(0, 15), FONT_HERSHEY_SIMPLEX, 0.5, Scalar(0, 255, 0));
++ putText(frame, label, Point(0, 20), FONT_HERSHEY_SIMPLEX, 0.8, Scalar(0, 0, 255), 2, 8, false);
+
+ // Print predicted class.
+ label = format("%s: %.4f", (classes.empty() ? format("Class #%d", classId).c_str() :
+ classes[classId].c_str()),
+ confidence);
+- putText(frame, label, Point(0, 40), FONT_HERSHEY_SIMPLEX, 0.5, Scalar(0, 255, 0));
++ putText(frame, label, Point(0, 45), FONT_HERSHEY_SIMPLEX, 0.8, Scalar(0, 0, 255), 2, 8, false);
+
+ imshow(kWinName, frame);
+ }
+Index: git/samples/dnn/object_detection.cpp
+===================================================================
+--- git.orig/samples/dnn/object_detection.cpp
++++ git/samples/dnn/object_detection.cpp
+@@ -251,13 +251,13 @@ int main(int argc, char** argv)
+ if (predictionsQueue.counter > 1)
+ {
+ std::string label = format("Camera: %.2f FPS", framesQueue.getFPS());
+- putText(frame, label, Point(0, 15), FONT_HERSHEY_SIMPLEX, 0.5, Scalar(0, 255, 0));
++ putText(frame, label, Point(0, 20), FONT_HERSHEY_SIMPLEX, 0.8, Scalar(0, 0, 255), 2, 8, false);
+
+ label = format("Network: %.2f FPS", predictionsQueue.getFPS());
+- putText(frame, label, Point(0, 30), FONT_HERSHEY_SIMPLEX, 0.5, Scalar(0, 255, 0));
++ putText(frame, label, Point(0, 45), FONT_HERSHEY_SIMPLEX, 0.8, Scalar(0, 0, 255), 2, 8, false);
+
+ label = format("Skipped frames: %d", framesQueue.counter - predictionsQueue.counter);
+- putText(frame, label, Point(0, 45), FONT_HERSHEY_SIMPLEX, 0.5, Scalar(0, 255, 0));
++ putText(frame, label, Point(0, 70), FONT_HERSHEY_SIMPLEX, 0.8, Scalar(0, 0, 255), 2, 8, false);
+ }
+ imshow(kWinName, frame);
+ }
+@@ -293,7 +293,7 @@ int main(int argc, char** argv)
+ double freq = getTickFrequency() / 1000;
+ double t = net.getPerfProfile(layersTimes) / freq;
+ std::string label = format("Inference time: %.2f ms", t);
+- putText(frame, label, Point(0, 15), FONT_HERSHEY_SIMPLEX, 0.5, Scalar(0, 255, 0));
++ putText(frame, label, Point(0, 20), FONT_HERSHEY_SIMPLEX, 0.8, Scalar(0, 0, 255), 2, 8, false);
+
+ imshow(kWinName, frame);
+ }
+@@ -462,7 +462,7 @@ void drawPred(int classId, float conf, i
+ top = max(top, labelSize.height);
+ rectangle(frame, Point(left, top - labelSize.height),
+ Point(left + labelSize.width, top + baseLine), Scalar::all(255), FILLED);
+- putText(frame, label, Point(left, top), FONT_HERSHEY_SIMPLEX, 0.5, Scalar());
++ putText(frame, label, Point(left, top), FONT_HERSHEY_SIMPLEX, 0.8, Scalar());
+ }
+
+ void callback(int pos, void*)
+Index: git/samples/dnn/segmentation.cpp
+===================================================================
+--- git.orig/samples/dnn/segmentation.cpp
++++ git/samples/dnn/segmentation.cpp
+@@ -157,7 +157,7 @@ int main(int argc, char** argv)
+ double freq = getTickFrequency() / 1000;
+ double t = net.getPerfProfile(layersTimes) / freq;
+ std::string label = format("Inference time: %.2f ms", t);
+- putText(frame, label, Point(0, 15), FONT_HERSHEY_SIMPLEX, 0.5, Scalar(0, 255, 0));
++ putText(frame, label, Point(0, 20), FONT_HERSHEY_SIMPLEX, 0.8, Scalar(0, 0, 255), 2, 8, false);
+
+ imshow(kWinName, frame);
+ if (!classes.empty())
+Index: git/samples/dnn/text_detection.cpp
+===================================================================
+--- git.orig/samples/dnn/text_detection.cpp
++++ git/samples/dnn/text_detection.cpp
+@@ -30,6 +30,7 @@ using namespace cv::dnn;
+ const char* keys =
+ "{ help h | | Print help message. }"
+ "{ input i | | Path to input image or video file. Skip this argument to capture frames from a camera.}"
++ "{ device | 0 | camera device number. }"
+ "{ detModel dmp | | Path to a binary .pb file contains trained detector network.}"
+ "{ width | 320 | Preprocess input image by resizing to a specific width. It should be multiple by 32. }"
+ "{ height | 320 | Preprocess input image by resizing to a specific height. It should be multiple by 32. }"
+@@ -106,7 +107,7 @@ int main(int argc, char** argv)
+
+ // Open a video file or an image file or a camera stream.
+ VideoCapture cap;
+- bool openSuccess = parser.has("input") ? cap.open(parser.get<String>("input")) : cap.open(0);
++ bool openSuccess = parser.has("input") ? cap.open(parser.get<String>("input")) : cap.open(parser.get<int>("device"));
+ CV_Assert(openSuccess);
+
+ static const std::string kWinName = "EAST: An Efficient and Accurate Scene Text Detector";
diff --git a/backports/recipes-support/opencv/opencv/download.patch b/backports/recipes-support/opencv/opencv/download.patch
new file mode 100644
index 0000000..33ac483
--- /dev/null
+++ b/backports/recipes-support/opencv/opencv/download.patch
@@ -0,0 +1,41 @@
+From b18a280fab06a680d9f831bf8b462647f3cb6214 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Thu, 9 Jan 2020 16:24:24 +0000
+Subject: [PATCH] opencv: abort configure if we need to download
+
+This CMake module will download files during do_configure. This is bad as it
+means we can't do offline builds.
+
+Add an option to disallow downloads by emitting a fatal error.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+---
+ cmake/OpenCVDownload.cmake | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/cmake/OpenCVDownload.cmake b/cmake/OpenCVDownload.cmake
+index 63cf6d3238..4acf477f70 100644
+--- a/cmake/OpenCVDownload.cmake
++++ b/cmake/OpenCVDownload.cmake
+@@ -14,6 +14,7 @@
+ # RELATIVE_URL - if set, then URL is treated as a base, and FILENAME will be appended to it
+ # Note: uses OPENCV_DOWNLOAD_PATH folder as cache, default is <opencv>/.cache
+
++set(OPENCV_ALLOW_DOWNLOADS ON CACHE BOOL "Allow downloads")
+ set(HELP_OPENCV_DOWNLOAD_PATH "Cache directory for downloaded files")
+ if(DEFINED ENV{OPENCV_DOWNLOAD_PATH})
+ set(OPENCV_DOWNLOAD_PATH "$ENV{OPENCV_DOWNLOAD_PATH}" CACHE PATH "${HELP_OPENCV_DOWNLOAD_PATH}")
+@@ -156,6 +157,11 @@ function(ocv_download)
+
+ # Download
+ if(NOT EXISTS "${CACHE_CANDIDATE}")
++ if(NOT OPENCV_ALLOW_DOWNLOADS)
++ message(FATAL_ERROR "Not going to download ${DL_FILENAME}")
++ return()
++ endif()
++
+ ocv_download_log("#cmake_download \"${CACHE_CANDIDATE}\" \"${DL_URL}\"")
+ foreach(try ${OPENCV_DOWNLOAD_TRIES_LIST})
+ ocv_download_log("#try ${try}")
diff --git a/backports/recipes-support/opencv/opencv_4.5.2.imx.bb b/backports/recipes-support/opencv/opencv_4.5.2.imx.bb
new file mode 100644
index 0000000..0169aef
--- /dev/null
+++ b/backports/recipes-support/opencv/opencv_4.5.2.imx.bb
@@ -0,0 +1,301 @@
+# This recipe is for the i.MX fork of opencv. For ease of
+# maintenance, the top section is a verbatim copy of an OE-core
+# recipe. The second section customizes the recipe for i.MX.
+
+########## meta-openembedded copy ###########
+
+SUMMARY = "Opencv : The Open Computer Vision Library"
+HOMEPAGE = "http://opencv.org/"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+
+DEPENDS = "libtool swig-native bzip2 zlib glib-2.0 libwebp"
+
+SRCREV_opencv = "69357b1e88680658a07cffde7678a4d697469f03"
+SRCREV_contrib = "f5d7f6712d4ff229ba4f45cf79dfd11c557d56fd"
+SRCREV_ipp = "a56b6ac6f030c312b2dce17430eef13aed9af274"
+SRCREV_boostdesc = "34e4206aef44d50e6bbcd0ab06354b52e7466d26"
+SRCREV_vgg = "fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d"
+SRCREV_face = "8afa57abc8229d611c4937165d20e2a2d9fc5a12"
+SRCREV_wechat-qrcode = "a8b69ccc738421293254aec5ddb38bd523503252"
+
+def ipp_filename(d):
+ import re
+ arch = d.getVar('TARGET_ARCH')
+ if re.match("i.86$", arch):
+ return "ippicv_2020_lnx_ia32_20191018_general.tgz"
+ else:
+ return "ippicv_2020_lnx_intel64_20191018_general.tgz"
+
+def ipp_md5sum(d):
+ import re
+ arch = d.getVar('TARGET_ARCH')
+ if re.match("i.86$", arch):
+ return "ad189a940fb60eb71f291321322fe3e8"
+ else:
+ return "7421de0095c7a39162ae13a6098782f9"
+
+IPP_FILENAME = "${@ipp_filename(d)}"
+IPP_MD5 = "${@ipp_md5sum(d)}"
+
+SRCREV_FORMAT = "opencv_contrib_ipp_boostdesc_vgg"
+SRC_URI = "git://github.com/opencv/opencv.git;name=opencv;branch=master;protocol=https \
+ git://github.com/opencv/opencv_contrib.git;destsuffix=contrib;name=contrib;branch=master;protocol=https \
+ git://github.com/opencv/opencv_3rdparty.git;branch=ippicv/master_20191018;destsuffix=ipp;name=ipp;protocol=https \
+ git://github.com/opencv/opencv_3rdparty.git;branch=contrib_xfeatures2d_boostdesc_20161012;destsuffix=boostdesc;name=boostdesc;protocol=https \
+ git://github.com/opencv/opencv_3rdparty.git;branch=contrib_xfeatures2d_vgg_20160317;destsuffix=vgg;name=vgg;protocol=https \
+ git://github.com/opencv/opencv_3rdparty.git;branch=contrib_face_alignment_20170818;destsuffix=face;name=face;protocol=https \
+ git://github.com/WeChatCV/opencv_3rdparty.git;branch=wechat_qrcode;destsuffix=wechat_qrcode;name=wechat-qrcode;protocol=https \
+ file://0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch \
+ file://0003-To-fix-errors-as-following.patch \
+ file://0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch \
+ file://0001-Dont-use-isystem.patch \
+ file://download.patch \
+ file://0001-Make-ts-module-external.patch \
+ file://0001-sfm-link-with-Glog_LIBS.patch;patchdir=../contrib \
+ "
+SRC_URI_append_riscv64 = " file://0001-Use-Os-to-compile-tinyxml2.cpp.patch;patchdir=../contrib"
+
+S = "${WORKDIR}/git"
+
+# OpenCV wants to download more files during configure. We download these in
+# do_fetch and construct a source cache in the format it expects
+OPENCV_DLDIR = "${WORKDIR}/downloads"
+
+do_unpack_extra() {
+ tar xzf ${WORKDIR}/ipp/ippicv/${IPP_FILENAME} -C ${WORKDIR}
+
+ md5() {
+ # Return the MD5 of $1
+ echo $(md5sum $1 | cut -d' ' -f1)
+ }
+ cache() {
+ TAG=$1
+ shift
+ mkdir --parents ${OPENCV_DLDIR}/$TAG
+ for F in $*; do
+ DEST=${OPENCV_DLDIR}/$TAG/$(md5 $F)-$(basename $F)
+ test -e $DEST || ln -s $F $DEST
+ done
+ }
+ cache xfeatures2d/boostdesc ${WORKDIR}/boostdesc/*.i
+ cache xfeatures2d/vgg ${WORKDIR}/vgg/*.i
+ cache data ${WORKDIR}/face/*.dat
+ cache wechat_qrcode ${WORKDIR}/wechat_qrcode/*.caffemodel
+ cache wechat_qrcode ${WORKDIR}/wechat_qrcode/*.prototxt
+}
+addtask unpack_extra after do_unpack before do_patch
+
+CMAKE_VERBOSE = "VERBOSE=1"
+
+EXTRA_OECMAKE = "-DOPENCV_EXTRA_MODULES_PATH=${WORKDIR}/contrib/modules \
+ -DWITH_1394=OFF \
+ -DENABLE_PRECOMPILED_HEADERS=OFF \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DOPENCV_ICV_HASH=${IPP_MD5} \
+ -DIPPROOT=${WORKDIR}/ippicv_lnx \
+ -DOPENCV_GENERATE_PKGCONFIG=ON \
+ -DOPENCV_DOWNLOAD_PATH=${OPENCV_DLDIR} \
+ -DOPENCV_ALLOW_DOWNLOADS=OFF \
+ ${@bb.utils.contains("TARGET_CC_ARCH", "-msse3", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1", "", d)} \
+ ${@bb.utils.contains("TARGET_CC_ARCH", "-msse4.1", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1 -DENABLE_SSE41=1", "", d)} \
+ ${@bb.utils.contains("TARGET_CC_ARCH", "-msse4.2", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1 -DENABLE_SSE41=1 -DENABLE_SSE42=1", "", d)} \
+"
+EXTRA_OECMAKE_append_x86 = " -DX86=ON"
+
+PACKAGECONFIG ??= "gapi python3 eigen jpeg png tiff v4l libv4l gstreamer samples tbb gphoto2 \
+ ${@bb.utils.contains("DISTRO_FEATURES", "x11", "gtk", "", d)} \
+ ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "libav", "", d)}"
+
+PACKAGECONFIG[gapi] = "-DWITH_ADE=ON -Dade_DIR=${STAGING_LIBDIR},-DWITH_ADE=OFF,ade"
+PACKAGECONFIG[amdblas] = "-DWITH_OPENCLAMDBLAS=ON,-DWITH_OPENCLAMDBLAS=OFF,libclamdblas,"
+PACKAGECONFIG[amdfft] = "-DWITH_OPENCLAMDFFT=ON,-DWITH_OPENCLAMDFFT=OFF,libclamdfft,"
+PACKAGECONFIG[dnn] = "-DBUILD_opencv_dnn=ON -DPROTOBUF_UPDATE_FILES=ON -DBUILD_PROTOBUF=OFF,-DBUILD_opencv_dnn=OFF,protobuf protobuf-native,"
+PACKAGECONFIG[eigen] = "-DWITH_EIGEN=ON,-DWITH_EIGEN=OFF,libeigen gflags glog,"
+PACKAGECONFIG[freetype] = "-DBUILD_opencv_freetype=ON,-DBUILD_opencv_freetype=OFF,freetype,"
+PACKAGECONFIG[gphoto2] = "-DWITH_GPHOTO2=ON,-DWITH_GPHOTO2=OFF,libgphoto2,"
+PACKAGECONFIG[gstreamer] = "-DWITH_GSTREAMER=ON,-DWITH_GSTREAMER=OFF,gstreamer1.0 gstreamer1.0-plugins-base,"
+PACKAGECONFIG[gtk] = "-DWITH_GTK=ON,-DWITH_GTK=OFF,gtk+3,"
+PACKAGECONFIG[jasper] = "-DWITH_JASPER=ON,-DWITH_JASPER=OFF,jasper,"
+PACKAGECONFIG[java] = "-DJAVA_INCLUDE_PATH=${JAVA_HOME}/include -DJAVA_INCLUDE_PATH2=${JAVA_HOME}/include/linux -DJAVA_AWT_INCLUDE_PATH=${JAVA_HOME}/include -DJAVA_AWT_LIBRARY=${JAVA_HOME}/lib/amd64/libjawt.so -DJAVA_JVM_LIBRARY=${JAVA_HOME}/lib/amd64/server/libjvm.so,,ant-native fastjar-native openjdk-8-native,"
+PACKAGECONFIG[jpeg] = "-DWITH_JPEG=ON,-DWITH_JPEG=OFF,jpeg,"
+PACKAGECONFIG[libav] = "-DWITH_FFMPEG=ON,-DWITH_FFMPEG=OFF,libav,"
+PACKAGECONFIG[libv4l] = "-DWITH_LIBV4L=ON,-DWITH_LIBV4L=OFF,v4l-utils,"
+PACKAGECONFIG[opencl] = "-DWITH_OPENCL=ON,-DWITH_OPENCL=OFF,opencl-headers virtual/opencl-icd,"
+PACKAGECONFIG[oracle-java] = "-DJAVA_INCLUDE_PATH=${ORACLE_JAVA_HOME}/include -DJAVA_INCLUDE_PATH2=${ORACLE_JAVA_HOME}/include/linux -DJAVA_AWT_INCLUDE_PATH=${ORACLE_JAVA_HOME}/include -DJAVA_AWT_LIBRARY=${ORACLE_JAVA_HOME}/lib/amd64/libjawt.so -DJAVA_JVM_LIBRARY=${ORACLE_JAVA_HOME}/lib/amd64/server/libjvm.so,,ant-native oracle-jse-jdk oracle-jse-jdk-native,"
+PACKAGECONFIG[png] = "-DWITH_PNG=ON,-DWITH_PNG=OFF,libpng,"
+PACKAGECONFIG[python2] = "-DPYTHON2_NUMPY_INCLUDE_DIRS:PATH=${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/numpy/core/include,,python-numpy,"
+PACKAGECONFIG[python3] = "-DPYTHON3_NUMPY_INCLUDE_DIRS:PATH=${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/numpy/core/include,,python3-numpy,"
+PACKAGECONFIG[samples] = "-DBUILD_EXAMPLES=ON -DINSTALL_PYTHON_EXAMPLES=ON,-DBUILD_EXAMPLES=OFF,,"
+PACKAGECONFIG[tbb] = "-DWITH_TBB=ON,-DWITH_TBB=OFF,tbb,"
+PACKAGECONFIG[tests] = "-DBUILD_TESTS=ON,-DBUILD_TESTS=OFF,,"
+PACKAGECONFIG[text] = "-DBUILD_opencv_text=ON,-DBUILD_opencv_text=OFF,tesseract,"
+PACKAGECONFIG[tiff] = "-DWITH_TIFF=ON,-DWITH_TIFF=OFF,tiff,"
+PACKAGECONFIG[v4l] = "-DWITH_V4L=ON,-DWITH_V4L=OFF,v4l-utils,"
+
+inherit pkgconfig cmake
+
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'distutils3-base', '', d)}
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'python2', 'distutils-base', '', d)}
+
+export PYTHON_CSPEC="-I${STAGING_INCDIR}/${PYTHON_DIR}"
+export PYTHON="${STAGING_BINDIR_NATIVE}/${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3', 'python', d)}"
+export ORACLE_JAVA_HOME="${STAGING_DIR_NATIVE}/usr/bin/java"
+export JAVA_HOME="${STAGING_DIR_NATIVE}/usr/lib/jvm/openjdk-8-native"
+export ANT_DIR="${STAGING_DIR_NATIVE}/usr/share/ant/"
+
+TARGET_CC_ARCH += "-I${S}/include "
+
+PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'samples', '${PN}-samples', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'oracle-java', '${PN}-java', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'java', '${PN}-java', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'python2', 'python-${BPN}', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3-${BPN}', '', d)} \
+ ${PN}-apps"
+
+python populate_packages_prepend () {
+ cv_libdir = d.expand('${libdir}')
+ do_split_packages(d, cv_libdir, '^lib(.*)\.so$', 'lib%s-dev', 'OpenCV %s development package', extra_depends='${PN}-dev', allow_links=True)
+ do_split_packages(d, cv_libdir, '^lib(.*)\.la$', 'lib%s-dev', 'OpenCV %s development package', extra_depends='${PN}-dev')
+ do_split_packages(d, cv_libdir, '^lib(.*)\.a$', 'lib%s-dev', 'OpenCV %s development package', extra_depends='${PN}-dev')
+ do_split_packages(d, cv_libdir, '^lib(.*)\.so\.*', 'lib%s', 'OpenCV %s library', extra_depends='', allow_links=True)
+
+ pn = d.getVar('PN')
+ metapkg = pn + '-dev'
+ d.setVar('ALLOW_EMPTY_' + metapkg, "1")
+ blacklist = [ metapkg ]
+ metapkg_rdepends = [ ]
+ packages = d.getVar('PACKAGES').split()
+ for pkg in packages[1:]:
+ if not pkg in blacklist and not pkg in metapkg_rdepends and pkg.endswith('-dev'):
+ metapkg_rdepends.append(pkg)
+ d.setVar('RRECOMMENDS_' + metapkg, ' '.join(metapkg_rdepends))
+
+ metapkg = pn
+ d.setVar('ALLOW_EMPTY_' + metapkg, "1")
+ blacklist = [ metapkg, "libopencv-ts" ]
+ metapkg_rdepends = [ ]
+ for pkg in packages[1:]:
+ if not pkg in blacklist and not pkg in metapkg_rdepends and not pkg.endswith('-dev') and not pkg.endswith('-dbg') and not pkg.endswith('-doc') and not pkg.endswith('-locale') and not pkg.endswith('-staticdev'):
+ metapkg_rdepends.append(pkg)
+ d.setVar('RDEPENDS_' + metapkg, ' '.join(metapkg_rdepends))
+}
+
+PACKAGES_DYNAMIC += "^libopencv-.*"
+
+FILES_${PN} = ""
+FILES_${PN}-dbg += "${datadir}/OpenCV/java/.debug/* ${datadir}/OpenCV/samples/bin/.debug/*"
+FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig ${libdir}/cmake/opencv4/*.cmake"
+FILES_${PN}-staticdev += "${libdir}/opencv4/3rdparty/*.a"
+FILES_${PN}-apps = "${bindir}/* ${datadir}/opencv4 ${datadir}/licenses"
+FILES_${PN}-java = "${datadir}/OpenCV/java"
+FILES_${PN}-samples = "${datadir}/opencv4/samples/"
+
+INSANE_SKIP_${PN}-java = "libdir"
+INSANE_SKIP_${PN}-dbg = "libdir"
+
+ALLOW_EMPTY_${PN} = "1"
+
+SUMMARY_python-opencv = "Python bindings to opencv"
+FILES_python-opencv = "${PYTHON_SITEPACKAGES_DIR}/*"
+RDEPENDS_python-opencv = "python-core python-numpy"
+
+SUMMARY_python3-opencv = "Python bindings to opencv"
+FILES_python3-opencv = "${PYTHON_SITEPACKAGES_DIR}/*"
+RDEPENDS_python3-opencv = "python3-core python3-numpy"
+
+RDEPENDS_${PN}-apps = "bash"
+
+do_compile_prepend() {
+ # remove the build host info to improve reproducibility
+ if [ -f ${WORKDIR}/build/modules/core/version_string.inc ]; then
+ sed -i "s#${WORKDIR}#/workdir#g" ${WORKDIR}/build/modules/core/version_string.inc
+ fi
+}
+
+do_install_append() {
+ # Move Python files into correct library folder (for multilib build)
+ if [ "$libdir" != "/usr/lib" -a -d ${D}/usr/lib ]; then
+ mv ${D}/usr/lib/* ${D}/${libdir}/
+ rm -rf ${D}/usr/lib
+ fi
+ # remove build host path to improve reproducibility
+ if [ -f ${D}${libdir}/cmake/opencv4/OpenCVModules.cmake ]; then
+ sed -e 's@${STAGING_DIR_HOST}@@g' \
+ -i ${D}${libdir}/cmake/opencv4/OpenCVModules.cmake
+ fi
+}
+
+TOOLCHAIN = "gcc"
+
+########## End of meta-openembedded copy ##########
+
+########## i.MX overrides ##########
+
+SUMMARY = "Opencv : The Open Computer Vision Library, i.MX Fork"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+# Replace the opencv URL with the fork
+SRCREV_opencv = "5423d53ae0d116ee5bbe52f8b5503f0cd8586998"
+OPENCV_SRC ?= "git://github.com/nxp-imx/opencv-imx.git;protocol=https;branch=master"
+SRCBRANCH = "4.5.2_imx"
+SRC_URI_remove = "git://github.com/opencv/opencv.git;name=opencv;branch=master;protocol=https"
+SRC_URI =+ "${OPENCV_SRC};branch=${SRCBRANCH};name=opencv"
+
+# Add opencv_extra
+SRCREV_extra = "855c4528402e563283f86f28c6393f57eb5dcf62"
+SRC_URI += " \
+ git://github.com/opencv/opencv_extra.git;destsuffix=extra;name=extra;branch=master;protocol=https \
+ file://0001-Add-smaller-version-of-download_models.py.patch;patchdir=../extra \
+"
+SRCREV_FORMAT_append = "_extra"
+
+# Add tiny-dnn
+SRC_URI[tinydnn.md5sum] = "adb1c512e09ca2c7a6faef36f9c53e59"
+SRC_URI[tinydnn.sha256sum] = "e2c61ce8c5debaa644121179e9dbdcf83f497f39de853f8dd5175846505aa18b"
+SRC_URI += " \
+ https://github.com/tiny-dnn/tiny-dnn/archive/v1.0.0a3.tar.gz;destsuffix=git/3rdparty/tinydnn/tiny-dnn-1.0.0a3;name=tinydnn;unpack=false \
+ file://OpenCV_DNN_examples.patch \
+"
+
+PACKAGECONFIG_remove = "eigen"
+PACKAGECONFIG_append_mx8 = " dnn text"
+PACKAGECONFIG_OPENCL = ""
+PACKAGECONFIG_OPENCL_mx8 = "opencl"
+PACKAGECONFIG_OPENCL_mx8dxl = ""
+PACKAGECONFIG_OPENCL_mx8phantomdxl = ""
+PACKAGECONFIG_OPENCL_mx8mm = ""
+PACKAGECONFIG_OPENCL_mx8mnlite = ""
+PACKAGECONFIG_append = " ${PACKAGECONFIG_OPENCL}"
+
+PACKAGECONFIG[openvx] = "-DWITH_OPENVX=ON -DOPENVX_ROOT=${STAGING_LIBDIR} -DOPENVX_LIB_CANDIDATES='OpenVX;OpenVXU',-DWITH_OPENVX=OFF,virtual/libopenvx,"
+PACKAGECONFIG[qt5] = "-DWITH_QT=ON -DOE_QMAKE_PATH_EXTERNAL_HOST_BINS=${STAGING_BINDIR_NATIVE} -DCMAKE_PREFIX_PATH=${STAGING_BINDIR_NATIVE}/cmake,-DWITH_QT=OFF,qtbase qtbase-native,"
+PACKAGECONFIG[tests-imx] = "-DINSTALL_TESTS=ON -DOPENCV_TEST_DATA_PATH=${S}/../extra/testdata, -DINSTALL_TESTS=OFF,"
+
+do_unpack_extra_append() {
+ mkdir -p ${S}/3rdparty/tinydnn/
+ tar xzf ${WORKDIR}/v1.0.0a3.tar.gz -C ${S}/3rdparty/tinydnn/
+}
+
+do_install_append() {
+ ln -sf opencv4/opencv2 ${D}${includedir}/opencv2
+ install -d ${D}${datadir}/OpenCV/samples/data
+ cp -r ${S}/samples/data/* ${D}${datadir}/OpenCV/samples/data
+ install -d ${D}${datadir}/OpenCV/samples/bin/
+ cp -f bin/example_* ${D}${datadir}/OpenCV/samples/bin/
+ if ${@bb.utils.contains('PACKAGECONFIG', 'tests-imx', 'true', 'false', d)}; then
+ cp -r share/opencv4/testdata/cv/face/* ${D}${datadir}/opencv4/testdata/cv/face/
+ fi
+}
+
+FILES_${PN}-samples += "${datadir}/OpenCV/samples"
+
+COMPATIBLE_MACHINE = "(mx8)"
+
+########## End of i.MX overrides ##########
diff --git a/conf/layer.conf b/conf/layer.conf
index a9b910f..9d42e23 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -3,8 +3,10 @@ BBPATH .= ":${LAYERDIR}"
# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend"
-# Recipes which backport later versions of other layers are placed here
-BBFILES += "${LAYERDIR}/backports/recipes-*/*/*.bb ${LAYERDIR}/backports/recipes-*/*/*.bbappend"
+# Recipes which backport later versions of other layers are placed here.
+# Only valid for Toradex distributions.
+BACKPORT_BBFILES = "${LAYERDIR}/backports/recipes-*/*/*.bb ${LAYERDIR}/backports/recipes-*/*/*.bbappend"
+BBFILES += "${@ d.getVar('BACKPORT_BBFILES') if 'tdx' in d.getVar('DISTROOVERRIDES').split(':') else ''}"
BBFILE_COLLECTIONS += "toradex-nxp-layer"
BBFILE_PATTERN_toradex-nxp-layer = "^${LAYERDIR}/"
@@ -30,9 +32,35 @@ FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V13 = "1b4db4b25c3a1e422c0c0ed6
FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V15 = "983e4c77621568488dd902b27e0c2143"
FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V16 = "e9e880185bda059c90c541d40ceca922"
FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V17 = "cf3f9b8d09bc3926b1004ea71f7a248a"
+FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V18 = "231e11849a4331fcbb19d7f4aab4a659"
+FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V19 = "a632fefd1c359980434f9389833cab3a"
+FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V22 = "3c3fe2b904fd694f28d2f646ee16dddb"
+FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V23 = "85d06b38f17b935ca11784d67075b846"
+FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V24 = "417b82f17fc02b88125331ed312f6f1b"
+FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V24.1 = "b3b0bab6ff55420d043cf1652c52d788"
+FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V25 = "f35df765ff17e69043ea21f350e3229c"
+FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V27 = "e565271ec9a80ce47abbddc4bffe56fa"
+FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V30 = "03bcadc8dc0a788f66ca9e2b89f56c6f"
+FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V31 = "dedee5689786754f61ea3a76035c8a81"
+FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V32 = "17d2319de7baa686e8a755ba58a9ebf5"
+FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V33 = "e4098ac4459cb81b07d3f0c22b3e8370"
+FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V34 = "be5ff43682ed6c57dfcbeb97651c2829"
FSL_EULA_FILE_MD5SUMS_append = " \
${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V13} \
${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V15} \
${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V16} \
${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V17} \
+ ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V18} \
+ ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V19} \
+ ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V22} \
+ ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V23} \
+ ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V24} \
+ ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V24.1} \
+ ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V25} \
+ ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V27} \
+ ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V30} \
+ ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V31} \
+ ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V32} \
+ ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V33} \
+ ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V34} \
"
diff --git a/conf/machine/apalis-imx8.conf b/conf/machine/apalis-imx8.conf
index 55d981e..ce87c14 100644
--- a/conf/machine/apalis-imx8.conf
+++ b/conf/machine/apalis-imx8.conf
@@ -27,9 +27,16 @@ USE_VT = "0"
KERNEL_DEVICETREE = " \
freescale/imx8qm-apalis-eval.dtb \
+ freescale/imx8qm-apalis-eval-v1.2.dtb \
freescale/imx8qm-apalis-ixora-v1.1.dtb \
freescale/imx8qm-apalis-v1.1-eval.dtb \
+ freescale/imx8qm-apalis-v1.1-eval-v1.2.dtb \
freescale/imx8qm-apalis-v1.1-ixora-v1.1.dtb \
+ freescale/imx8qm-apalis-v1.1-ixora-v1.2.dtb \
+ freescale/imx8qp-apalis-v1.1-eval.dtb \
+ freescale/imx8qp-apalis-v1.1-eval-v1.2.dtb \
+ freescale/imx8qp-apalis-v1.1-ixora-v1.1.dtb \
+ freescale/imx8qp-apalis-v1.1-ixora-v1.2.dtb \
"
KERNEL_IMAGETYPE_aarch64 = "Image.gz"
@@ -38,7 +45,7 @@ UBOOT_SUFFIX = "bin"
UBOOT_CONFIG ??= "sd"
UBOOT_CONFIG[sd] = "apalis-imx8_defconfig,sdcard"
-UBOOT_ENTRYPOINT = "0x80280000"
+UBOOT_ENTRYPOINT = "0x96000000"
UBOOT_DTB_LOADADDRESS = "0x83000000"
UBOOT_DTBO_LOADADDRESS = "0x83100000"
UBOOT_RD_LOADADDRESS = "0xA0000000"
@@ -53,13 +60,12 @@ PREFERRED_PROVIDER_u-boot-default-script = "u-boot-distro-boot"
PREFERRED_PROVIDER_virtual/kernel = "linux-toradex"
PREFERRED_PROVIDER_virtual/kernel_preempt-rt = "linux-toradex"
PREFERRED_PROVIDER_virtual/bootloader = "u-boot-toradex"
+PREFERRED_PROVIDER_u-boot = "u-boot-toradex"
# Currently we use the nxp 2020.04 downstream for mx8 as some features are
# not yet available in 2020.07.
PREFERRED_VERSION_u-boot-toradex = "2020.04%"
-MACHINE_FIRMWARE_append = " linux-firmware-pcie8997"
-MACHINE_FIRMWARE_append = " firmware-imx-vpu-imx8"
-MACHINE_FIRMWARE_append = " firmware-imx-8"
+MACHINE_FIRMWARE_append = " linux-firmware-pcie8997 firmware-imx-hdmi firmware-imx-vpu-imx8"
IMXBOOT_TARGETS = "flash_b0"
@@ -76,8 +82,10 @@ OFFSET_BOOTROM_PAYLOAD = "0"
TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT = "apalis-imx8_hdmi_overlay.dtbo"
-TORADEX_PRODUCT_IDS = "0037 0047 0048 0049"
+TORADEX_PRODUCT_IDS = "0037 0047 0048 0049 0067"
TORADEX_PRODUCT_IDS[0037] = "imx8qm-apalis-v1.1-eval.dtb"
TORADEX_PRODUCT_IDS[0047] = "imx8qm-apalis-v1.1-eval.dtb"
-TORADEX_PRODUCT_IDS[0048] = "imx8qm-apalis-v1.1-eval.dtb"
-TORADEX_PRODUCT_IDS[0049] = "imx8qm-apalis-v1.1-eval.dtb"
+TORADEX_PRODUCT_IDS[0048] = "imx8qp-apalis-v1.1-eval.dtb"
+TORADEX_PRODUCT_IDS[0049] = "imx8qp-apalis-v1.1-eval.dtb"
+TORADEX_PRODUCT_IDS[0067] = "imx8qm-apalis-v1.1-eval.dtb"
+
diff --git a/conf/machine/apalis-imx8x-v11a.conf b/conf/machine/apalis-imx8x-v11a.conf
deleted file mode 100644
index 28aed93..0000000
--- a/conf/machine/apalis-imx8x-v11a.conf
+++ /dev/null
@@ -1,18 +0,0 @@
-#@TYPE: Machine
-#@NAME: Toradex Apalis iMX8X with B0 silicon
-#@DESCRIPTION: Toradex Apalis iMX8X powered by a i.MX 8X SoC (B0 silicon) as found on all V1.0 and V1.1A versions
-#@MAINTAINER: Philippe Schenker <philippe.schenker@toradex.com>
-
-# for C0 silicon add mx8qxpc0:,
-# for B0 silicon use empty string
-SILICON-OVERRIDES = ""
-
-# keep the original machine as an override with high prio
-MACHINEOVERRIDES =. "apalis-imx8x:"
-
-require conf/machine/apalis-imx8x.conf
-
-# reuse DISTRO_FLAVOUR to display special version exception in the
-# Toradex Easy Installer application
-DISTRO_FLAVOUR_append = " for V1.1A HW"
-MACHINE_NAME = "Apalis-iMX8X-V11A"
diff --git a/conf/machine/apalis-imx8x.conf b/conf/machine/apalis-imx8x.conf
deleted file mode 100644
index 2d354c8..0000000
--- a/conf/machine/apalis-imx8x.conf
+++ /dev/null
@@ -1,79 +0,0 @@
-#@TYPE: Machine
-#@NAME: Toradex Apalis iMX8X
-#@DESCRIPTION: Toradex Apalis iMX8X powered by a i.MX 8X SoC
-#@MAINTAINER: Philippe Schenker <philippe.schenker@toradex.com>
-
-MACHINE_NAME = "Apalis-iMX8X"
-
-# for C0 silicon add mx8qxpc0 to the right of mx8qxp
-SILICON-OVERRIDES ?= "mx8qxpc0:"
-MACHINEOVERRIDES =. "mx8:mx8x:mx8qxp:${SILICON-OVERRIDES}"
-
-IMX_DEFAULT_BSP = "nxp"
-
-require conf/machine/include/imx-base.inc
-# if one wants cortexa35-crypto, set DEFAULTTUNE accordingly
-DEFAULTTUNE_mx8qxp = "aarch64"
-require conf/machine/include/tune-cortexa35.inc
-
-# Don't include kernels in standard images
-RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""
-
-LOADADDR = ""
-
-# we do not want to have getty running on tty1 as we run
-# auto-serial-console there
-USE_VT = "0"
-
-KERNEL_DEVICETREE = " \
- freescale/imx8qxp-apalis-eval.dtb \
-"
-
-KERNEL_IMAGETYPE_aarch64 = "Image.gz"
-
-UBOOT_SUFFIX = "bin"
-UBOOT_CONFIG ??= "sd"
-UBOOT_CONFIG[sd] = "apalis-imx8x_defconfig,sdcard"
-
-UBOOT_ENTRYPOINT = "0x80280000"
-UBOOT_DTB_LOADADDRESS = "0x83100000"
-UBOOT_DTBO_LOADADDRESS = "0x83200000"
-UBOOT_RD_LOADADDRESS = "0xA0000000"
-
-BOOT_SPACE = "65536"
-IMX_BOOT_SEEK = "32"
-
-IMAGE_BOOT_FILES_append = " boot.scr-${MACHINE};boot.scr"
-WKS_FILE_DEPENDS_append = " u-boot-default-script"
-PREFERRED_PROVIDER_u-boot-default-script = "u-boot-distro-boot"
-
-PREFERRED_PROVIDER_virtual/kernel = "linux-toradex"
-PREFERRED_PROVIDER_virtual/kernel_preempt-rt = "linux-toradex"
-PREFERRED_PROVIDER_virtual/bootloader = "u-boot-toradex"
-# Currently we use the nxp 2020.04 downstream for mx8 as some features are
-# not yet available in 2020.07.
-PREFERRED_VERSION_u-boot-toradex = "2020.04%"
-
-MACHINE_FIRMWARE_append = " linux-firmware-usb8997"
-MACHINE_FIRMWARE_append = " firmware-imx-vpu-imx8"
-
-IMXBOOT_TARGETS = "flash"
-
-PREFERRED_PROVIDER_imx-sc-firmware = "imx-sc-firmware-toradex"
-BOARD_TYPE = "apalis"
-
-IMAGE_CLASSES_append = " image_type_tezi"
-IMAGE_FSTYPES += "teziimg"
-
-# The imx-boot container takes care for the i.MX 8 offset, so the container
-# has to be flashed at offset 0 directly
-UBOOT_BINARY_TEZI_EMMC = "imx-boot"
-OFFSET_BOOTROM_PAYLOAD = "0"
-
-TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT = "apalis-imx8x_dsihdmi_overlay.dtbo apalis-imx8x_parallel-rgb_overlay.dtbo display-lt161010_overlay.dtbo apalis-imx8x_ad7879_overlay.dtbo"
-
-TORADEX_PRODUCT_IDS = "0046 0053 0054 2600"
-TORADEX_PRODUCT_IDS[0046] = "imx8qxp-apalis-eval.dtb"
-TORADEX_PRODUCT_IDS[0053] = "imx8qxp-apalis-eval.dtb"
-TORADEX_PRODUCT_IDS[0054] = "imx8qxp-apalis-eval.dtb"
-TORADEX_PRODUCT_IDS[2600] = "imx8qxp-apalis-eval.dtb"
diff --git a/conf/machine/colibri-imx6ull-emmc.conf b/conf/machine/colibri-imx6ull-emmc.conf
new file mode 100644
index 0000000..46a9b13
--- /dev/null
+++ b/conf/machine/colibri-imx6ull-emmc.conf
@@ -0,0 +1,49 @@
+#@TYPE: Machine
+#@NAME: Toradex Colibri iMX6ULL 1GB (eMMC)
+#@SOC: i.MX6ULL
+#@DESCRIPTION: Machine configuration for Toradex Colibri iMX6 ULL 1GB (eMMC) SOM
+#@MAINTAINER: Max Krummenacher <max.krummenacher@toradex.com>
+
+MACHINEOVERRIDES =. "mx6:mx6ul:mx6ull:"
+
+include conf/machine/include/imx-base.inc
+include conf/machine/include/tune-cortexa7.inc
+
+PREFERRED_PROVIDER_virtual/kernel_use-nxp-bsp ?= "linux-toradex"
+PREFERRED_PROVIDER_virtual/kernel_preempt-rt = "linux-toradex"
+
+PREFERRED_PROVIDER_virtual/kernel_use-mainline-bsp = "linux-toradex-mainline"
+PREFERRED_PROVIDER_virtual/kernel_use-mainline-bsp_preempt-rt = "linux-toradex-mainline"
+PREFERRED_PROVIDER_virtual/dtb_use-mainline-bsp = "device-tree-overlays-mainline"
+
+KERNEL_DEVICETREE_use-mainline-bsp = " \
+ imx6ull-colibri-emmc-eval-v3.dtb \
+"
+KERNEL_DEVICETREE_use-nxp-bsp = " \
+ imx6ull-colibri-emmc-aster.dtb \
+ imx6ull-colibri-emmc-eval-v3.dtb \
+ imx6ull-colibri-emmc-iris.dtb \
+ imx6ull-colibri-emmc-iris-v2.dtb \
+"
+
+KERNEL_IMAGETYPE = "zImage"
+# The kernel lives in its own ubi volume.
+RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""
+
+PREFERRED_PROVIDER_u-boot ?= "u-boot-toradex"
+PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-toradex"
+PREFERRED_PROVIDER_u-boot-fw-utils ?= "u-boot-toradex-fw-utils"
+PREFERRED_RPROVIDER_u-boot-fw-utils ?= "u-boot-toradex-fw-utils"
+PREFERRED_PROVIDER_u-boot-default-script ?= "u-boot-script-toradex"
+
+UBOOT_MAKE_TARGET = "u-boot.imx"
+UBOOT_MACHINE ?= "colibri-imx6ull-emmc_defconfig"
+
+IMAGE_FSTYPES += "tar.xz"
+# wic support
+IMAGE_BOOT_FILES_append = " boot.scr-${MACHINE};boot.scr"
+WKS_FILE_DEPENDS_append = " u-boot-default-script"
+WKS_FILE = "sdimage-bootpart.wks"
+
+MACHINE_FEATURES += "screen usbgadget usbhost vfat ext2 alsa touchscreen wifi bluetooth 3g"
+MACHINE_FIRMWARE_remove = "firmware-imx-epdc"
diff --git a/conf/machine/colibri-imx8x-v10b.conf b/conf/machine/colibri-imx8x-v10b.conf
deleted file mode 100644
index 2049335..0000000
--- a/conf/machine/colibri-imx8x-v10b.conf
+++ /dev/null
@@ -1,18 +0,0 @@
-#@TYPE: Machine
-#@NAME: Toradex Colibri iMX8X with B0 silicon
-#@DESCRIPTION: Toradex Colibri iMX8X powered by a i.MX 8X SoC (B0 silicon) as found on older SoM Versions V1.0B
-#@MAINTAINER: Max Krummenacher <max.krummenacherr@toradex.com>
-
-# for C0 silicon add mx8qxpc0:,
-# for B0 silicon use empty string
-SILICON-OVERRIDES = ""
-
-# keep the original machine as an override with high prio
-MACHINEOVERRIDES =. "colibri-imx8x:"
-
-require conf/machine/colibri-imx8x.conf
-
-# reuse DISTRO_FLAVOUR to display special version exception in the
-# Toradex Easy Installer application
-DISTRO_FLAVOUR_append = " for V1.0B HW"
-MACHINE_NAME = "Colibri-iMX8X-V10B"
diff --git a/conf/machine/colibri-imx8x.conf b/conf/machine/colibri-imx8x.conf
index e6a287d..8535431 100644
--- a/conf/machine/colibri-imx8x.conf
+++ b/conf/machine/colibri-imx8x.conf
@@ -26,9 +26,14 @@ LOADADDR = ""
USE_VT = "0"
KERNEL_DEVICETREE = " \
+ freescale/imx8dx-colibri-aster.dtb \
+ freescale/imx8dx-colibri-eval-v3.dtb \
+ freescale/imx8dx-colibri-iris.dtb \
+ freescale/imx8dx-colibri-iris-v2.dtb \
freescale/imx8qxp-colibri-aster.dtb \
- freescale/imx8qxp-colibri-dsihdmi-eval-v3.dtb \
freescale/imx8qxp-colibri-eval-v3.dtb \
+ freescale/imx8qxp-colibri-iris.dtb \
+ freescale/imx8qxp-colibri-iris-v2.dtb \
"
KERNEL_DEVICETREE_use-mainline-bsp = "freescale/imx8qxp-colibri-eval-v3.dtb"
@@ -38,7 +43,7 @@ UBOOT_SUFFIX = "bin"
UBOOT_CONFIG ??= "sd"
UBOOT_CONFIG[sd] = "colibri-imx8x_defconfig,sdcard"
-UBOOT_ENTRYPOINT = "0x80280000"
+UBOOT_ENTRYPOINT = "0x96000000"
UBOOT_DTB_LOADADDRESS = "0x83100000"
UBOOT_DTBO_LOADADDRESS = "0x83200000"
UBOOT_RD_LOADADDRESS = "0xA0000000"
@@ -57,6 +62,7 @@ PREFERRED_PROVIDER_virtual/kernel_use-mainline-bsp_preempt-rt = "linux-toradex-m
PREFERRED_PROVIDER_virtual/dtb_use-mainline-bsp = "device-tree-overlays-mainline"
PREFERRED_PROVIDER_virtual/bootloader = "u-boot-toradex"
+PREFERRED_PROVIDER_u-boot = "u-boot-toradex"
# Currently we use the nxp 2020.04 downstream for mx8 as some features are
# not yet available in 2020.07.
PREFERRED_VERSION_u-boot-toradex = "2020.04%"
diff --git a/conf/machine/include/apalis-imx6.inc b/conf/machine/include/apalis-imx6.inc
index c2ae376..a009260 100644
--- a/conf/machine/include/apalis-imx6.inc
+++ b/conf/machine/include/apalis-imx6.inc
@@ -1,15 +1,19 @@
IMAGE_CLASSES_append = " image_type_tezi"
IMAGE_FSTYPES_append = " teziimg"
-TORADEX_PRODUCT_IDS = "0027 0028 0029 0035"
+TORADEX_PRODUCT_IDS = "0027 0028 0029 0035 0082 0083 0084 0085"
# The payload offsets are given in number of 512 byte blocks.
OFFSET_BOOTROM_PAYLOAD = "2"
OFFSET_SPL_PAYLOAD = "138"
MACHINE_NAME = "Apalis-iMX6"
-KERNEL_DEVICETREE += "imx6q-apalis-ixora-v1.2.dtb"
+KERNEL_DEVICETREE += " \
+ imx6q-apalis-ixora-v1.2.dtb \
+ imx6q-apalis-eval-v1.2.dtb \
+"
KERNEL_DEVICETREE_use-mainline-bsp += " \
imx6q-apalis-eval.dtb \
+ imx6q-apalis-eval-v1.2.dtb \
imx6q-apalis-ixora-v1.1.dtb \
"
@@ -29,4 +33,4 @@ UBOOT_DTBO_LOADADDRESS_apalis-imx6 = "0x17000000"
MACHINE_FIRMWARE_remove = "firmware-imx-epdc"
TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT = "apalis-imx6_hdmi_overlay.dtbo"
-TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT_use-mainline-bsp = "apalis-imx6_parallel-rgb_overlay.dtbo display-edt7_overlay.dtbo apalis-imx6_stmpe-ts_overlay.dtbo apalis-imx6_hdmi_overlay.dtbo"
+TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT_use-mainline-bsp = "apalis-imx6_parallel-rgb_overlay.dtbo display-edt7_overlay.dtbo apalis-imx6_stmpe-ts_overlay.dtbo apalis-imx6_hdmi_overlay.dtbo apalis-imx6_vga_overlay.dtbo"
diff --git a/conf/machine/include/colibri-imx6.inc b/conf/machine/include/colibri-imx6.inc
index dac8b07..a06abbc 100644
--- a/conf/machine/include/colibri-imx6.inc
+++ b/conf/machine/include/colibri-imx6.inc
@@ -1,6 +1,6 @@
IMAGE_CLASSES_append = " image_type_tezi"
IMAGE_FSTYPES_append = " teziimg"
-TORADEX_PRODUCT_IDS = "0014 0015 0016 0017"
+TORADEX_PRODUCT_IDS = "0014 0015 0016 0017 0077 0078 0079 0080"
# The payload offsets are given in number of 512 byte blocks.
OFFSET_BOOTROM_PAYLOAD = "2"
OFFSET_SPL_PAYLOAD = "138"
@@ -28,4 +28,4 @@ MACHINE_FIRMWARE_remove = "firmware-imx-epdc"
UBOOT_ENTRYPOINT_colibri-imx6 = "0x11000000"
UBOOT_DTB_LOADADDRESS_colibri-imx6 = "0x12100000"
-UBOOT_DTBO_LOADADDRESS_colibri-imx6 = "0x12110000"
+UBOOT_DTBO_LOADADDRESS_colibri-imx6 = "0x17000000"
diff --git a/conf/machine/include/colibri-imx6ull-emmc.inc b/conf/machine/include/colibri-imx6ull-emmc.inc
new file mode 100644
index 0000000..2f4c1e4
--- /dev/null
+++ b/conf/machine/include/colibri-imx6ull-emmc.inc
@@ -0,0 +1,26 @@
+IMAGE_CLASSES_append = " image_type_tezi"
+IMAGE_FSTYPES_append = " teziimg"
+# The payload offsets are given in number of 512 byte blocks.
+OFFSET_BOOTROM_PAYLOAD = "2"
+TORADEX_PRODUCT_IDS = "0062"
+TORADEX_FLASH_TYPE = "emmc"
+
+WIC_CREATE_EXTRA_ARGS_append = " --no-fstab-update"
+
+MACHINE_NAME = "Colibri-iMX6ULL-eMMC"
+
+PREFERRED_PROVIDER_u-boot-default-script = "u-boot-distro-boot"
+
+UBOOT_MAKE_TARGET_colibri-imx6ull-emmc = "u-boot.imx"
+UBOOT_ENTRYPOINT_colibri-imx6ull-emmc = "0x81000000"
+UBOOT_DTB_LOADADDRESS_colibri-imx6ull-emmc = "0x82100000"
+UBOOT_DTBO_LOADADDRESS_colibri-imx6ull-emmc = "0x87000000"
+
+TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT = "colibri-imx6ull_parallel-rgb_vga_overlay.dtbo colibri-imx6ull_ad7879_overlay.dtbo"
+TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT_use-mainline-bsp = "colibri-imx6ull_parallel-rgb_overlay.dtbo colibri-imx6ull_ad7879_overlay.dtbo display-vga_overlay.dtbo"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-toradex"
+PREFERRED_PROVIDER_virtual/kernel_preempt-rt = "linux-toradex"
+PREFERRED_PROVIDER_virtual/kernel_use-mainline-bsp = "linux-toradex-mainline"
+PREFERRED_PROVIDER_virtual/kernel_use-mainline-bsp_preempt-rt = "linux-toradex-mainline"
+PREFERRED_PROVIDER_virtual/dtb_use-mainline-bsp = "device-tree-overlays-mainline"
diff --git a/conf/machine/include/colibri-imx6ull.inc b/conf/machine/include/colibri-imx6ull.inc
index 106fc88..b83da92 100644
--- a/conf/machine/include/colibri-imx6ull.inc
+++ b/conf/machine/include/colibri-imx6ull.inc
@@ -14,14 +14,14 @@ MACHINE_NAME = "Colibri-iMX6ULL"
PREFERRED_PROVIDER_u-boot-default-script = "u-boot-distro-boot"
UBOOT_ENTRYPOINT_colibri-imx6ull = "0x81000000"
-MACHINEOVERRIDES_append_upstream = ":use-mainline-bsp"
+MACHINE_FIRMWARE_remove_use-mainline-bsp = "firmware-imx-vpu-imx6q firmware-imx-vpu-imx6d"
UBOOT_MAKE_TARGET_colibri-imx6ull = "u-boot.imx"
UBOOT_ENTRYPOINT_colibri-imx6ull = "0x81000000"
UBOOT_DTB_LOADADDRESS_colibri-imx6ull = "0x82100000"
UBOOT_DTBO_LOADADDRESS_colibri-imx6ull = "0x87000000"
-KERNEL_DEVICETREE_append_use_nxp_bsp = " \
+KERNEL_DEVICETREE_append_use-nxp-bsp = " \
imx6ull-colibri-aster.dtb \
imx6ull-colibri-iris.dtb \
imx6ull-colibri-iris-v2.dtb \
diff --git a/conf/machine/include/colibri-imx7-emmc.inc b/conf/machine/include/colibri-imx7-emmc.inc
index 7a66037..a9577b2 100644
--- a/conf/machine/include/colibri-imx7-emmc.inc
+++ b/conf/machine/include/colibri-imx7-emmc.inc
@@ -7,9 +7,8 @@ TORADEX_FLASH_TYPE = "emmc"
MACHINE_NAME = "Colibri-iMX7-eMMC"
-MACHINEOVERRIDES_append_upstream = ":use-mainline-bsp"
-
MACHINE_FIRMWARE_remove = "firmware-imx-epdc"
+MACHINE_FIRMWARE_remove_use-mainline-bsp = "firmware-imx-vpu-imx6q firmware-imx-vpu-imx6d"
PREFERRED_PROVIDER_virtual/kernel = "linux-toradex"
PREFERRED_PROVIDER_virtual/kernel_preempt-rt = "linux-toradex"
@@ -32,4 +31,4 @@ TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT_use-mainline-bsp = "colibri-imx7_parallel-r
UBOOT_ENTRYPOINT_colibri-imx7-emmc = "0x81000000"
UBOOT_DTB_LOADADDRESS_colibri-imx7-emmc = "0x82000000"
-UBOOT_DTBO_LOADADDRESS_colibri-imx7-emmc = "0x82010000"
+UBOOT_DTBO_LOADADDRESS_colibri-imx7-emmc = "0x87000000"
diff --git a/conf/machine/include/colibri-imx7.inc b/conf/machine/include/colibri-imx7.inc
index 66bce6e..481511f 100644
--- a/conf/machine/include/colibri-imx7.inc
+++ b/conf/machine/include/colibri-imx7.inc
@@ -1,16 +1,16 @@
IMAGE_CLASSES_append = " image_type_tezi"
IMAGE_FSTYPES_append = " teziimg"
-TORADEX_PRODUCT_IDS = "0032 0033 0041"
+TORADEX_PRODUCT_IDS = "0032 0033 0041 0081"
TORADEX_PRODUCT_IDS[0032] = "imx7s-colibri-eval-v3.dtb"
TORADEX_PRODUCT_IDS[0033] = "imx7d-colibri-eval-v3.dtb"
TORADEX_PRODUCT_IDS[0041] = "imx7d-colibri-eval-v3.dtb"
+TORADEX_PRODUCT_IDS[0081] = "imx7d-colibri-eval-v3.dtb"
TORADEX_FLASH_TYPE = "rawnand"
MACHINE_NAME = "Colibri-iMX7"
-MACHINEOVERRIDES_append_upstream = ":use-mainline-bsp"
-
MACHINE_FIRMWARE_remove = "firmware-imx-epdc"
+MACHINE_FIRMWARE_remove_use-mainline-bsp = "firmware-imx-vpu-imx6q firmware-imx-vpu-imx6d"
KERNEL_DEVICETREE_append_use-nxp-bsp += " \
imx7d-colibri-iris.dtb \
@@ -34,4 +34,4 @@ PREFERRED_PROVIDER_u-boot-default-script = "u-boot-distro-boot"
UBOOT_MAKE_TARGET_colibri-imx7 = "u-boot.imx"
UBOOT_ENTRYPOINT_colibri-imx7 = "0x81000000"
UBOOT_DTB_LOADADDRESS_colibri-imx7 = "0x82000000"
-UBOOT_DTBO_LOADADDRESS_colibri-imx7 = "0x82010000"
+UBOOT_DTBO_LOADADDRESS_colibri-imx7 = "0x87000000"
diff --git a/conf/machine/verdin-imx8mm.conf b/conf/machine/verdin-imx8mm.conf
index 350a457..b52681a 100644
--- a/conf/machine/verdin-imx8mm.conf
+++ b/conf/machine/verdin-imx8mm.conf
@@ -21,8 +21,10 @@ RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""
KERNEL_DEVICETREE = " \
freescale/imx8mm-verdin-nonwifi-dahlia.dtb \
freescale/imx8mm-verdin-nonwifi-dev.dtb \
+ freescale/imx8mm-verdin-nonwifi-yavia.dtb \
freescale/imx8mm-verdin-wifi-dahlia.dtb \
freescale/imx8mm-verdin-wifi-dev.dtb \
+ freescale/imx8mm-verdin-wifi-yavia.dtb \
"
KERNEL_IMAGETYPE_aarch64 = "Image.gz"
@@ -30,9 +32,9 @@ UBOOT_CONFIG ??= "sd"
UBOOT_CONFIG[sd] = "verdin-imx8mm_defconfig,sdcard"
SPL_BINARY = "spl/u-boot-spl.bin"
-UBOOT_ENTRYPOINT = "0x40280000"
-UBOOT_DTB_LOADADDRESS = "0x43000000"
-UBOOT_DTBO_LOADADDRESS = "0x46000000"
+UBOOT_ENTRYPOINT_mx8mm = "0x40000000"
+UBOOT_DTB_LOADADDRESS_mx8mm = "0x44000000"
+UBOOT_DTBO_LOADADDRESS_mx8mm = "0x46000000"
UBOOT_RD_LOADADDRESS = "0x60000000"
# Set DDR FIRMWARE
@@ -66,6 +68,7 @@ MACHINE_FIRMWARE_append = " linux-firmware-ath10k linux-firmware-imx-sdma-imx7d"
PREFERRED_PROVIDER_virtual/kernel = "linux-toradex"
PREFERRED_PROVIDER_virtual/kernel_preempt-rt = "linux-toradex"
PREFERRED_PROVIDER_virtual/bootloader = "u-boot-toradex"
+PREFERRED_PROVIDER_u-boot = "u-boot-toradex"
# Currently we use the nxp 2020.04 downstream for mx8 as some features are
# not yet available in 2020.07.
PREFERRED_VERSION_u-boot-toradex = "2020.04%"
@@ -83,8 +86,11 @@ OFFSET_BOOTROM_PAYLOAD = "2"
TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT = "verdin-imx8mm_lt8912_overlay.dtbo"
-TORADEX_PRODUCT_IDS = "0055 0057 0059 0060"
+TORADEX_PRODUCT_IDS = "0055 0057 0059 0060 0068 0086 0087"
TORADEX_PRODUCT_IDS[0055] = "imx8mm-verdin-wifi-v1.1-dev.dtb"
TORADEX_PRODUCT_IDS[0057] = "imx8mm-verdin-nonwifi-v1.1-dev.dtb"
TORADEX_PRODUCT_IDS[0059] = "imx8mm-verdin-nonwifi-v1.1-dev.dtb"
TORADEX_PRODUCT_IDS[0060] = "imx8mm-verdin-wifi-v1.1-dev.dtb"
+TORADEX_PRODUCT_IDS[0068] = "imx8mm-verdin-wifi-v1.1-dev.dtb"
+TORADEX_PRODUCT_IDS[0086] = "imx8mm-verdin-nonwifi-v1.1-dev.dtb"
+TORADEX_PRODUCT_IDS[0087] = "imx8mm-verdin-nonwifi-v1.1-dev.dtb"
diff --git a/conf/machine/verdin-imx8mp.conf b/conf/machine/verdin-imx8mp.conf
index 09b62bb..21997b4 100644
--- a/conf/machine/verdin-imx8mp.conf
+++ b/conf/machine/verdin-imx8mp.conf
@@ -21,8 +21,10 @@ RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""
KERNEL_DEVICETREE = " \
freescale/imx8mp-verdin-nonwifi-dahlia.dtb \
freescale/imx8mp-verdin-nonwifi-dev.dtb \
+ freescale/imx8mp-verdin-nonwifi-yavia.dtb \
freescale/imx8mp-verdin-wifi-dahlia.dtb \
freescale/imx8mp-verdin-wifi-dev.dtb \
+ freescale/imx8mp-verdin-wifi-yavia.dtb \
"
KERNEL_IMAGETYPE_aarch64 = "Image.gz"
@@ -30,9 +32,9 @@ UBOOT_CONFIG ??= "sd"
UBOOT_CONFIG[sd] = "verdin-imx8mp_defconfig,sdcard"
SPL_BINARY = "spl/u-boot-spl.bin"
-UBOOT_ENTRYPOINT = "0x40280000"
-UBOOT_DTB_LOADADDRESS = "0x43000000"
-UBOOT_DTBO_LOADADDRESS = "0x46000000"
+UBOOT_ENTRYPOINT_mx8mp = "0x40000000"
+UBOOT_DTB_LOADADDRESS_mx8mp = "0x44000000"
+UBOOT_DTBO_LOADADDRESS_mx8mp = "0x46000000"
UBOOT_RD_LOADADDRESS = "0x60000000"
# Set u-boot DTB
@@ -53,11 +55,6 @@ IMAGE_BOOTLOADER = "imx-boot"
# Set imx-mkimage boot target
IMXBOOT_TARGETS = "flash_evk_emmc_fastboot"
-# Temporary until we have TEZI for installation on the eMMC
-SOC_DEFAULT_WKS_FILE_verdin-imx8mp ?= "verdin-imx8mp-imx-boot-bootpart.wks.in"
-# Add 1GB free space to the wic rootfs partition
-IMAGE_ROOTFS_EXTRA_SPACE = "1048576"
-
IMAGE_BOOT_FILES_append = " boot.scr-${MACHINE};boot.scr"
WKS_FILE_DEPENDS_append = " u-boot-default-script"
PREFERRED_PROVIDER_u-boot-default-script = "u-boot-distro-boot"
@@ -74,6 +71,7 @@ MACHINE_FEATURES += "3g bluetooth alsa ext2 pci screen touchscreen usbgadget usb
PREFERRED_PROVIDER_virtual/kernel = "linux-toradex"
PREFERRED_PROVIDER_virtual/kernel_preempt-rt = "linux-toradex"
PREFERRED_PROVIDER_virtual/bootloader = "u-boot-toradex"
+PREFERRED_PROVIDER_u-boot = "u-boot-toradex"
# Currently we use the nxp 2020.04 downstream for mx8 as some features are
# not yet available in 2020.07.
PREFERRED_VERSION_u-boot-toradex = "2020.04%"
@@ -88,8 +86,13 @@ IMAGE_FSTYPES += "teziimg"
UBOOT_BINARY_TEZI_EMMC = "imx-boot"
OFFSET_BOOTROM_PAYLOAD = "0"
-TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT = "verdin-imx8mp_lt8912_overlay.dtbo"
+TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT = "verdin-imx8mp_native-hdmi_overlay.dtbo verdin-imx8mp_lt8912_overlay.dtbo"
-TORADEX_PRODUCT_IDS = "0058 0061"
+TORADEX_PRODUCT_IDS = "0058 0061 0063 0064 0065 0066 0070"
TORADEX_PRODUCT_IDS[0058] = "imx8mp-verdin-wifi-dev.dtb"
TORADEX_PRODUCT_IDS[0061] = "imx8mp-verdin-nonwifi-dev.dtb"
+TORADEX_PRODUCT_IDS[0063] = "imx8mp-verdin-nonwifi-dev.dtb"
+TORADEX_PRODUCT_IDS[0064] = "imx8mp-verdin-wifi-dev.dtb"
+TORADEX_PRODUCT_IDS[0065] = "imx8mp-verdin-nonwifi-dev.dtb"
+TORADEX_PRODUCT_IDS[0066] = "imx8mp-verdin-wifi-dev.dtb"
+TORADEX_PRODUCT_IDS[0070] = "imx8mp-verdin-wifi-dev.dtb"
diff --git a/qt5-layer/recipes-qt/qt5/qtwayland_%.bbappend b/qt5-layer/recipes-qt/qt5/qtwayland_%.bbappend
index 61956c0..1bbe9c5 100644
--- a/qt5-layer/recipes-qt/qt5/qtwayland_%.bbappend
+++ b/qt5-layer/recipes-qt/qt5/qtwayland_%.bbappend
@@ -1 +1 @@
-PACKAGECONFIG_remove = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland x11', 'xcomposite-egl xcomposite-glx', '', d)}" \ No newline at end of file
+PACKAGECONFIG_remove_tdx = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland x11', 'xcomposite-egl xcomposite-glx', '', d)}"
diff --git a/recipes-bsp/alsa-state/alsa-state.bbappend b/recipes-bsp/alsa-state/alsa-state.bbappend
index 05bfa70..5a1cef7 100644
--- a/recipes-bsp/alsa-state/alsa-state.bbappend
+++ b/recipes-bsp/alsa-state/alsa-state.bbappend
@@ -1,4 +1,40 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/alsa-state/:"
-#make this machine specific, as we have different codecs with different settings
-PACKAGE_ARCH = "${MACHINE_ARCH}"
+# make this machine specific, as we have different codecs with different settings
+PACKAGE_ARCH_tdx = "${MACHINE_ARCH}"
+
+SRC_URI_append_mx8m_tdx = " \
+ file://asound-dev.conf \
+ file://asound-dahlia.conf \
+ file://asound-dev.state \
+ file://asound-dahlia.state \
+"
+
+FILES_${PN} += "${sysconfdir}/asound-*.conf"
+
+do_install_append_mx8m_tdx () {
+ # Remove the default asound.conf, we need set up asound.conf dynamically
+ # at runtime to support both dev/dahlia boards.
+ rm -f ${D}${sysconfdir}/asound.conf
+ rm -f ${D}${localstatedir}/lib/alsa/asound.state
+ install -m 0644 ${WORKDIR}/asound-*.conf ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/asound-*.state ${D}${localstatedir}/lib/alsa
+}
+
+# Invalidate the default pkg_postinst in oe-core, this ensures our ontarget
+# postinst to be the only one to run during package installation.
+pkg_postinst_${PN}_mx8m_tdx () {
+}
+
+pkg_postinst_ontarget_${PN}_mx8m_tdx () {
+ if grep -q "Development" /proc/device-tree/model; then
+ board="dev"
+ else
+ board="dahlia"
+ fi
+
+ mv /etc/asound-$board.conf /etc/asound.conf
+ mv /var/lib/alsa/asound-$board.state /var/lib/alsa/asound.state
+ rm -f /etc/asound-*.conf
+ rm -f /var/lib/alsa/asound-*.state
+}
diff --git a/recipes-bsp/alsa-state/alsa-state/colibri-imx7-emmc/asound.state b/recipes-bsp/alsa-state/alsa-state/colibri-imx7-emmc/asound.state
index a578e3d..8497618 100644
--- a/recipes-bsp/alsa-state/alsa-state/colibri-imx7-emmc/asound.state
+++ b/recipes-bsp/alsa-state/alsa-state/colibri-imx7-emmc/asound.state
@@ -1,4 +1,4 @@
-state.imx7colibrisgtl {
+state.imx7sgtl5000 {
control.1 {
iface MIXER
name 'PCM Playback Volume'
@@ -45,6 +45,16 @@ state.imx7colibrisgtl {
}
control.5 {
iface MIXER
+ name 'Capture Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.6 {
+ iface MIXER
name 'Headphone Playback Volume'
value.0 103
value.1 103
@@ -59,7 +69,17 @@ state.imx7colibrisgtl {
dbvalue.1 0
}
}
- control.6 {
+ control.7 {
+ iface MIXER
+ name 'Headphone Playback Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.8 {
iface MIXER
name 'Headphone Playback ZC Switch'
value true
@@ -69,7 +89,7 @@ state.imx7colibrisgtl {
count 1
}
}
- control.7 {
+ control.9 {
iface MIXER
name 'Mic Volume'
value 0
@@ -83,7 +103,202 @@ state.imx7colibrisgtl {
dbvalue.0 0
}
}
- control.8 {
+ control.10 {
+ iface MIXER
+ name 'Lineout Playback Volume'
+ value.0 18
+ value.1 18
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 31'
+ dbmin -1550
+ dbmax 0
+ dbvalue.0 -650
+ dbvalue.1 -650
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'Lineout Playback Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'DAP Main channel'
+ value 32768
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 65535'
+ dbmin 0
+ dbmax 65535
+ dbvalue.0 32768
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'DAP Mix channel'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 65535'
+ dbmin 0
+ dbmax 65535
+ dbvalue.0 0
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'AVC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'AVC Hard Limiter Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'AVC Max Gain Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 2'
+ dbmin 0
+ dbmax 1200
+ dbvalue.0 600
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'AVC Integrator Response'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 3'
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'AVC Threshold Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 96'
+ dbmin 0
+ dbmax 9600
+ dbvalue.0 1200
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'BASS 0'
+ value 47
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 95'
+ dbmin -1175
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'BASS 1'
+ value 47
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 95'
+ dbmin -1175
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'BASS 2'
+ value 47
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 95'
+ dbmin -1175
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'BASS 3'
+ value 47
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 95'
+ dbmin -1175
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.23 {
+ iface MIXER
+ name 'BASS 4'
+ value 47
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 95'
+ dbmin -1175
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.24 {
+ iface MIXER
+ name 'Capture Mux'
+ value MIC_IN
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 MIC_IN
+ item.1 LINE_IN
+ }
+ }
+ control.25 {
iface MIXER
name 'Headphone Mux'
value DAC
@@ -95,16 +310,42 @@ state.imx7colibrisgtl {
item.1 LINE_IN
}
}
- control.9 {
+ control.26 {
iface MIXER
- name 'Capture Mux'
- value MIC_IN
+ name 'Digital Input Mux'
+ value I2S
comment {
access 'read write'
type ENUMERATED
count 1
- item.0 MIC_IN
- item.1 LINE_IN
+ item.0 ADC
+ item.1 I2S
+ item.2 Rsvrd
+ item.3 DAP
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'DAP Mux'
+ value ADC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC
+ item.1 I2S
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'DAP MIX Mux'
+ value ADC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC
+ item.1 I2S
}
}
}
diff --git a/recipes-bsp/alsa-state/alsa-state/colibri-imx7/asound.state b/recipes-bsp/alsa-state/alsa-state/colibri-imx7/asound.state
index a578e3d..8497618 100644
--- a/recipes-bsp/alsa-state/alsa-state/colibri-imx7/asound.state
+++ b/recipes-bsp/alsa-state/alsa-state/colibri-imx7/asound.state
@@ -1,4 +1,4 @@
-state.imx7colibrisgtl {
+state.imx7sgtl5000 {
control.1 {
iface MIXER
name 'PCM Playback Volume'
@@ -45,6 +45,16 @@ state.imx7colibrisgtl {
}
control.5 {
iface MIXER
+ name 'Capture Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.6 {
+ iface MIXER
name 'Headphone Playback Volume'
value.0 103
value.1 103
@@ -59,7 +69,17 @@ state.imx7colibrisgtl {
dbvalue.1 0
}
}
- control.6 {
+ control.7 {
+ iface MIXER
+ name 'Headphone Playback Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.8 {
iface MIXER
name 'Headphone Playback ZC Switch'
value true
@@ -69,7 +89,7 @@ state.imx7colibrisgtl {
count 1
}
}
- control.7 {
+ control.9 {
iface MIXER
name 'Mic Volume'
value 0
@@ -83,7 +103,202 @@ state.imx7colibrisgtl {
dbvalue.0 0
}
}
- control.8 {
+ control.10 {
+ iface MIXER
+ name 'Lineout Playback Volume'
+ value.0 18
+ value.1 18
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 31'
+ dbmin -1550
+ dbmax 0
+ dbvalue.0 -650
+ dbvalue.1 -650
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'Lineout Playback Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'DAP Main channel'
+ value 32768
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 65535'
+ dbmin 0
+ dbmax 65535
+ dbvalue.0 32768
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'DAP Mix channel'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 65535'
+ dbmin 0
+ dbmax 65535
+ dbvalue.0 0
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'AVC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'AVC Hard Limiter Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'AVC Max Gain Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 2'
+ dbmin 0
+ dbmax 1200
+ dbvalue.0 600
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'AVC Integrator Response'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 3'
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'AVC Threshold Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 96'
+ dbmin 0
+ dbmax 9600
+ dbvalue.0 1200
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'BASS 0'
+ value 47
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 95'
+ dbmin -1175
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'BASS 1'
+ value 47
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 95'
+ dbmin -1175
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'BASS 2'
+ value 47
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 95'
+ dbmin -1175
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'BASS 3'
+ value 47
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 95'
+ dbmin -1175
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.23 {
+ iface MIXER
+ name 'BASS 4'
+ value 47
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 95'
+ dbmin -1175
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.24 {
+ iface MIXER
+ name 'Capture Mux'
+ value MIC_IN
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 MIC_IN
+ item.1 LINE_IN
+ }
+ }
+ control.25 {
iface MIXER
name 'Headphone Mux'
value DAC
@@ -95,16 +310,42 @@ state.imx7colibrisgtl {
item.1 LINE_IN
}
}
- control.9 {
+ control.26 {
iface MIXER
- name 'Capture Mux'
- value MIC_IN
+ name 'Digital Input Mux'
+ value I2S
comment {
access 'read write'
type ENUMERATED
count 1
- item.0 MIC_IN
- item.1 LINE_IN
+ item.0 ADC
+ item.1 I2S
+ item.2 Rsvrd
+ item.3 DAP
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'DAP Mux'
+ value ADC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC
+ item.1 I2S
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'DAP MIX Mux'
+ value ADC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC
+ item.1 I2S
}
}
}
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.conf b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.conf
new file mode 100644
index 0000000..122f912
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.conf
@@ -0,0 +1,250 @@
+defaults.pcm.rate_converter "linear"
+
+pcm.default_card{
+type hw
+card "imx8mmwm8904"
+}
+
+pcm.dmix_48000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.dmix_44100{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.dmix_32000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.dmix_24000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.dmix_22050{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.dmix_16000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.dmix_12000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.dmix_11025{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.dmix_8000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.!dsnoop_48000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.!dsnoop_44100{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.!dsnoop_32000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.!dsnoop_24000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.!dsnoop_22050{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.!dsnoop_16000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.!dsnoop_12000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.!dsnoop_11025{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.!dsnoop_8000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.asymed{
+type asym
+playback.pcm "dmix_44100"
+capture.pcm "dsnoop_44100"
+}
+
+pcm.dsp0{
+type plug
+slave.pcm "asymed"
+}
+
+pcm.!default{
+type plug
+route_policy "average"
+slave.pcm "asymed"
+}
+
+ctl.!default{
+type hw
+card "imx8mmwm8904"
+}
+
+ctl.mixer0{
+type hw
+card "imx8mmwm8904"
+}
+
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound.state b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.state
index 1d3e09a..1d3e09a 100644
--- a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound.state
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dahlia.state
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.conf b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.conf
new file mode 100644
index 0000000..c0789f6
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.conf
@@ -0,0 +1,250 @@
+defaults.pcm.rate_converter "linear"
+
+pcm.default_card{
+type hw
+card "imx8mmnau8822"
+}
+
+pcm.dmix_48000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.dmix_44100{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.dmix_32000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.dmix_24000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.dmix_22050{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.dmix_16000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.dmix_12000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.dmix_11025{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.dmix_8000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.!dsnoop_48000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.!dsnoop_44100{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.!dsnoop_32000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.!dsnoop_24000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.!dsnoop_22050{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.!dsnoop_16000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.!dsnoop_12000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.!dsnoop_11025{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.!dsnoop_8000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.asymed{
+type asym
+playback.pcm "dmix_44100"
+capture.pcm "dsnoop_44100"
+}
+
+pcm.dsp0{
+type plug
+slave.pcm "asymed"
+}
+
+pcm.!default{
+type plug
+route_policy "average"
+slave.pcm "asymed"
+}
+
+ctl.!default{
+type hw
+card "imx8mmnau8822"
+}
+
+ctl.mixer0{
+type hw
+card "imx8mmnau8822"
+}
+
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.state b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.state
new file mode 100644
index 0000000..878f82e
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mm/asound-dev.state
@@ -0,0 +1,729 @@
+state.imx8mmnau8822 {
+ control.1 {
+ iface MIXER
+ name 'ADC Companding'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 NC
+ item.2 u-law
+ item.3 A-law
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'DAC Companding'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 NC
+ item.2 u-law
+ item.3 A-law
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'EQ Function'
+ value Playback
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Capture
+ item.1 Playback
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'EQ Parameters'
+ value '012c002c002c002c002c'
+ comment {
+ access 'read write'
+ type BYTES
+ count 10
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'DAC Inversion Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'PCM Volume'
+ value.0 215
+ value.1 215
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 -2000
+ dbvalue.1 -2000
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'High Pass Filter Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'High Pass Cut Off'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'ADC Inversion Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'ADC Volume'
+ value.0 255
+ value.1 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'DAC Limiter Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'DAC Limiter Decay'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'DAC Limiter Attack'
+ value 2
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'DAC Limiter Threshold'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'DAC Limiter Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 12'
+ dbmin 0
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'ALC Mode'
+ value Normal
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Normal
+ item.1 Limiter
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'ALC Enable Switch'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 Right
+ item.2 Left
+ item.3 Both
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'ALC Min Gain'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'ALC Max Gain'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'ALC Hold'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 10'
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'ALC Target'
+ value 11
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'ALC Decay'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 10'
+ }
+ }
+ control.23 {
+ iface MIXER
+ name 'ALC Attack'
+ value 2
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 10'
+ }
+ }
+ control.24 {
+ iface MIXER
+ name 'ALC Noise Gate Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.25 {
+ iface MIXER
+ name 'ALC Noise Gate Threshold'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.26 {
+ iface MIXER
+ name 'PGA ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'PGA Volume'
+ value.0 16
+ value.1 16
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -1200
+ dbmax 3525
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'Headphone ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.29 {
+ iface MIXER
+ name 'Headphone Playback Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.30 {
+ iface MIXER
+ name 'Headphone Volume'
+ value.0 57
+ value.1 57
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.31 {
+ iface MIXER
+ name 'Speaker RInversion Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.32 {
+ iface MIXER
+ name 'Speaker ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.33 {
+ iface MIXER
+ name 'Speaker Playback Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.34 {
+ iface MIXER
+ name 'Speaker Volume'
+ value.0 57
+ value.1 57
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.35 {
+ iface MIXER
+ name 'AUXOUT Playback Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.36 {
+ iface MIXER
+ name 'PGA Boost Volume'
+ value.0 1
+ value.1 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 1'
+ dbmin 0
+ dbmax 2000
+ dbvalue.0 2000
+ dbvalue.1 2000
+ }
+ }
+ control.37 {
+ iface MIXER
+ name 'L2/R2 Boost Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ dbvalue.1 -9999999
+ }
+ }
+ control.38 {
+ iface MIXER
+ name 'Aux Boost Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ dbvalue.1 -9999999
+ }
+ }
+ control.39 {
+ iface MIXER
+ name 'DAC 128x Oversampling Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.40 {
+ iface MIXER
+ name 'ADC 128x Oversampling Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.41 {
+ iface MIXER
+ name 'Left Output Mixer LINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.42 {
+ iface MIXER
+ name 'Left Output Mixer LAUX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.43 {
+ iface MIXER
+ name 'Left Output Mixer LDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.44 {
+ iface MIXER
+ name 'Left Output Mixer RDAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.45 {
+ iface MIXER
+ name 'Right Output Mixer RINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.46 {
+ iface MIXER
+ name 'Right Output Mixer RAUX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.47 {
+ iface MIXER
+ name 'Right Output Mixer RDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.48 {
+ iface MIXER
+ name 'Right Output Mixer LDAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.49 {
+ iface MIXER
+ name 'AUX1 Output Mixer RDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.50 {
+ iface MIXER
+ name 'AUX1 Output Mixer RMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.51 {
+ iface MIXER
+ name 'AUX1 Output Mixer RINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.52 {
+ iface MIXER
+ name 'AUX1 Output Mixer LDAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.53 {
+ iface MIXER
+ name 'AUX1 Output Mixer LMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.54 {
+ iface MIXER
+ name 'AUX2 Output Mixer LDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.55 {
+ iface MIXER
+ name 'AUX2 Output Mixer LMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.56 {
+ iface MIXER
+ name 'AUX2 Output Mixer LINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.57 {
+ iface MIXER
+ name 'AUX2 Output Mixer AUX1MIX Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.58 {
+ iface MIXER
+ name 'Left Input Mixer L2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.59 {
+ iface MIXER
+ name 'Left Input Mixer MicN Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.60 {
+ iface MIXER
+ name 'Left Input Mixer MicP Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.61 {
+ iface MIXER
+ name 'Right Input Mixer R2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.62 {
+ iface MIXER
+ name 'Right Input Mixer MicN Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.63 {
+ iface MIXER
+ name 'Right Input Mixer MicP Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.64 {
+ iface MIXER
+ name 'Digital Loopback Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+}
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.conf b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.conf
new file mode 100644
index 0000000..2289bd0
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.conf
@@ -0,0 +1,250 @@
+defaults.pcm.rate_converter "linear"
+
+pcm.default_card{
+type hw
+card "imx8mpwm8904"
+}
+
+pcm.dmix_48000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.dmix_44100{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.dmix_32000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.dmix_24000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.dmix_22050{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.dmix_16000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.dmix_12000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.dmix_11025{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.dmix_8000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.!dsnoop_48000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.!dsnoop_44100{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.!dsnoop_32000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.!dsnoop_24000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.!dsnoop_22050{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.!dsnoop_16000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.!dsnoop_12000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.!dsnoop_11025{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.!dsnoop_8000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.asymed{
+type asym
+playback.pcm "dmix_44100"
+capture.pcm "dsnoop_44100"
+}
+
+pcm.dsp0{
+type plug
+slave.pcm "asymed"
+}
+
+pcm.!default{
+type plug
+route_policy "average"
+slave.pcm "asymed"
+}
+
+ctl.!default{
+type hw
+card "imx8mpwm8904"
+}
+
+ctl.mixer0{
+type hw
+card "imx8mpwm8904"
+}
+
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.state b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.state
new file mode 100644
index 0000000..194c7bf
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dahlia.state
@@ -0,0 +1,519 @@
+state.imx8mpwm8904 {
+ control.1 {
+ iface MIXER
+ name 'EQ1 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 24'
+ dbmin -1200
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'EQ2 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 24'
+ dbmin -1200
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'EQ3 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 24'
+ dbmin -1200
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'EQ4 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 24'
+ dbmin -1200
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'EQ5 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 24'
+ dbmin -1200
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'Digital Capture Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 119'
+ dbmin -9999999
+ dbmax 1725
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'Left Caputure Mode'
+ value Single-Ended
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Single-Ended
+ item.1 'Differential Line'
+ item.2 'Differential Mic'
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'Right Capture Mode'
+ value Single-Ended
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Single-Ended
+ item.1 'Differential Line'
+ item.2 'Differential Mic'
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'Capture Volume'
+ value.0 24
+ value.1 24
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 31'
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'Capture Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'High Pass Filter Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'High Pass Filter Mode'
+ value Hi-fi
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Hi-fi
+ item.1 'Voice 1'
+ item.2 'Voice 2'
+ item.3 'Voice 3'
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'ADC 128x OSR Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'Digital Playback Boost Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 3'
+ dbmin 0
+ dbmax 1800
+ dbvalue.0 0
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'Digital Playback Volume'
+ value.0 88
+ value.1 88
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 96'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 -600
+ dbvalue.1 -600
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'Headphone Volume'
+ value.0 43
+ value.1 43
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 -1400
+ dbvalue.1 -1400
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'Headphone Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'Headphone ZC Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'Line Output Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 -5700
+ dbvalue.1 -5700
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'Line Output Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'Line Output ZC Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.23 {
+ iface MIXER
+ name 'DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.24 {
+ iface MIXER
+ name 'DRC Path'
+ value ADC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC
+ item.1 DAC
+ }
+ }
+ control.25 {
+ iface MIXER
+ name 'DAC OSRx2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.26 {
+ iface MIXER
+ name 'DAC Deemphasis Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'Digital Sidetone Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 15'
+ dbmin -3600
+ dbmax 900
+ dbvalue.0 -3600
+ dbvalue.1 -3600
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'Left Capture Mux'
+ value IN1L
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 IN1L
+ item.1 IN2L
+ item.2 IN3L
+ }
+ }
+ control.29 {
+ iface MIXER
+ name 'Left Capture Inverting Mux'
+ value IN1L
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 IN1L
+ item.1 IN2L
+ item.2 IN3L
+ }
+ }
+ control.30 {
+ iface MIXER
+ name 'Right Capture Mux'
+ value IN1R
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 IN1R
+ item.1 IN2R
+ item.2 IN3R
+ }
+ }
+ control.31 {
+ iface MIXER
+ name 'Right Capture Inverting Mux'
+ value IN1R
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 IN1R
+ item.1 IN2R
+ item.2 IN3R
+ }
+ }
+ control.32 {
+ iface MIXER
+ name 'AIFOUTL Mux'
+ value Left
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.33 {
+ iface MIXER
+ name 'AIFOUTR Mux'
+ value Right
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.34 {
+ iface MIXER
+ name 'DACL Mux'
+ value Left
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.35 {
+ iface MIXER
+ name 'DACR Mux'
+ value Right
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.36 {
+ iface MIXER
+ name 'Left Sidetone'
+ value None
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 None
+ item.1 Left
+ item.2 Right
+ }
+ }
+ control.37 {
+ iface MIXER
+ name 'Right Sidetone'
+ value None
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 None
+ item.1 Left
+ item.2 Right
+ }
+ }
+ control.38 {
+ iface MIXER
+ name 'HPL Mux'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 DAC
+ item.1 Bypass
+ }
+ }
+ control.39 {
+ iface MIXER
+ name 'HPR Mux'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 DAC
+ item.1 Bypass
+ }
+ }
+ control.40 {
+ iface MIXER
+ name 'LINEL Mux'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 DAC
+ item.1 Bypass
+ }
+ }
+ control.41 {
+ iface MIXER
+ name 'LINER Mux'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 DAC
+ item.1 Bypass
+ }
+ }
+}
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.conf b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.conf
new file mode 100644
index 0000000..54941e3
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.conf
@@ -0,0 +1,250 @@
+defaults.pcm.rate_converter "linear"
+
+pcm.default_card{
+type hw
+card "imx8mpnau8822"
+}
+
+pcm.dmix_48000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.dmix_44100{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.dmix_32000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.dmix_24000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.dmix_22050{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.dmix_16000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.dmix_12000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.dmix_11025{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.dmix_8000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.!dsnoop_48000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.!dsnoop_44100{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.!dsnoop_32000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.!dsnoop_24000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.!dsnoop_22050{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.!dsnoop_16000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.!dsnoop_12000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.!dsnoop_11025{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.!dsnoop_8000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "default_card"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.asymed{
+type asym
+playback.pcm "dmix_44100"
+capture.pcm "dsnoop_44100"
+}
+
+pcm.dsp0{
+type plug
+slave.pcm "asymed"
+}
+
+pcm.!default{
+type plug
+route_policy "average"
+slave.pcm "asymed"
+}
+
+ctl.!default{
+type hw
+card "imx8mpnau8822"
+}
+
+ctl.mixer0{
+type hw
+card "imx8mpnau8822"
+}
+
diff --git a/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.state b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.state
new file mode 100644
index 0000000..125ddf7
--- /dev/null
+++ b/recipes-bsp/alsa-state/alsa-state/verdin-imx8mp/asound-dev.state
@@ -0,0 +1,729 @@
+state.imx8mpnau8822 {
+ control.1 {
+ iface MIXER
+ name 'ADC Companding'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 NC
+ item.2 u-law
+ item.3 A-law
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'DAC Companding'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 NC
+ item.2 u-law
+ item.3 A-law
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'EQ Function'
+ value Playback
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Capture
+ item.1 Playback
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'EQ Parameters'
+ value '012c002c002c002c002c'
+ comment {
+ access 'read write'
+ type BYTES
+ count 10
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'DAC Inversion Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'PCM Volume'
+ value.0 215
+ value.1 215
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 -2000
+ dbvalue.1 -2000
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'High Pass Filter Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'High Pass Cut Off'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'ADC Inversion Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'ADC Volume'
+ value.0 255
+ value.1 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'DAC Limiter Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'DAC Limiter Decay'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'DAC Limiter Attack'
+ value 2
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'DAC Limiter Threshold'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'DAC Limiter Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 12'
+ dbmin 0
+ dbmax 1200
+ dbvalue.0 0
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'ALC Mode'
+ value Normal
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Normal
+ item.1 Limiter
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'ALC Enable Switch'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 Right
+ item.2 Left
+ item.3 Both
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'ALC Min Gain'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'ALC Max Gain'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'ALC Hold'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 10'
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'ALC Target'
+ value 11
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'ALC Decay'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 10'
+ }
+ }
+ control.23 {
+ iface MIXER
+ name 'ALC Attack'
+ value 2
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 10'
+ }
+ }
+ control.24 {
+ iface MIXER
+ name 'ALC Noise Gate Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.25 {
+ iface MIXER
+ name 'ALC Noise Gate Threshold'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.26 {
+ iface MIXER
+ name 'PGA ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'PGA Volume'
+ value.0 16
+ value.1 16
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -1200
+ dbmax 3525
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'Headphone ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.29 {
+ iface MIXER
+ name 'Headphone Playback Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.30 {
+ iface MIXER
+ name 'Headphone Volume'
+ value.0 51
+ value.1 51
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 -600
+ dbvalue.1 -600
+ }
+ }
+ control.31 {
+ iface MIXER
+ name 'Speaker RInversion Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.32 {
+ iface MIXER
+ name 'Speaker ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.33 {
+ iface MIXER
+ name 'Speaker Playback Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.34 {
+ iface MIXER
+ name 'Speaker Volume'
+ value.0 57
+ value.1 57
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.35 {
+ iface MIXER
+ name 'AUXOUT Playback Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.36 {
+ iface MIXER
+ name 'PGA Boost Volume'
+ value.0 1
+ value.1 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 1'
+ dbmin 0
+ dbmax 2000
+ dbvalue.0 2000
+ dbvalue.1 2000
+ }
+ }
+ control.37 {
+ iface MIXER
+ name 'L2/R2 Boost Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ dbvalue.1 -9999999
+ }
+ }
+ control.38 {
+ iface MIXER
+ name 'Aux Boost Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ dbvalue.1 -9999999
+ }
+ }
+ control.39 {
+ iface MIXER
+ name 'DAC 128x Oversampling Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.40 {
+ iface MIXER
+ name 'ADC 128x Oversampling Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.41 {
+ iface MIXER
+ name 'Left Output Mixer LINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.42 {
+ iface MIXER
+ name 'Left Output Mixer LAUX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.43 {
+ iface MIXER
+ name 'Left Output Mixer LDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.44 {
+ iface MIXER
+ name 'Left Output Mixer RDAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.45 {
+ iface MIXER
+ name 'Right Output Mixer RINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.46 {
+ iface MIXER
+ name 'Right Output Mixer RAUX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.47 {
+ iface MIXER
+ name 'Right Output Mixer RDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.48 {
+ iface MIXER
+ name 'Right Output Mixer LDAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.49 {
+ iface MIXER
+ name 'AUX1 Output Mixer RDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.50 {
+ iface MIXER
+ name 'AUX1 Output Mixer RMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.51 {
+ iface MIXER
+ name 'AUX1 Output Mixer RINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.52 {
+ iface MIXER
+ name 'AUX1 Output Mixer LDAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.53 {
+ iface MIXER
+ name 'AUX1 Output Mixer LMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.54 {
+ iface MIXER
+ name 'AUX2 Output Mixer LDAC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.55 {
+ iface MIXER
+ name 'AUX2 Output Mixer LMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.56 {
+ iface MIXER
+ name 'AUX2 Output Mixer LINMIX Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.57 {
+ iface MIXER
+ name 'AUX2 Output Mixer AUX1MIX Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.58 {
+ iface MIXER
+ name 'Left Input Mixer L2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.59 {
+ iface MIXER
+ name 'Left Input Mixer MicN Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.60 {
+ iface MIXER
+ name 'Left Input Mixer MicP Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.61 {
+ iface MIXER
+ name 'Right Input Mixer R2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.62 {
+ iface MIXER
+ name 'Right Input Mixer MicN Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.63 {
+ iface MIXER
+ name 'Right Input Mixer MicP Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.64 {
+ iface MIXER
+ name 'Digital Loopback Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+}
diff --git a/recipes-bsp/firmware-imx/firmware-imx-8_8.%.bbappend b/recipes-bsp/firmware-imx/firmware-imx-8_8.%.bbappend
deleted file mode 100644
index 1766a7a..0000000
--- a/recipes-bsp/firmware-imx/firmware-imx-8_8.%.bbappend
+++ /dev/null
@@ -1,14 +0,0 @@
-FILES_${PN} += " \
- ${nonarch_base_libdir}/firmware/imx/hdmi/hdmitxfw.bin \
- ${nonarch_base_libdir}/firmware/imx/hdmi/hdmirxfw.bin \
- ${nonarch_base_libdir}/firmware/imx/hdmi/dpfw.bin \
-"
-
-unset do_install[noexec]
-
-do_install_append () {
- install -d ${D}${nonarch_base_libdir}/firmware/imx/hdmi
- install -m 0644 ${S}/firmware/hdmi/cadence/hdmitxfw.bin ${D}${nonarch_base_libdir}/firmware/imx/hdmi/
- install -m 0644 ${S}/firmware/hdmi/cadence/hdmirxfw.bin ${D}${nonarch_base_libdir}/firmware/imx/hdmi/
- install -m 0644 ${S}/firmware/hdmi/cadence/dpfw.bin ${D}${nonarch_base_libdir}/firmware/imx/hdmi/
-}
diff --git a/recipes-bsp/imx-atf/imx-atf_%.bbappend b/recipes-bsp/imx-atf/imx-atf_%.bbappend
index d4947ff..f39e541 100644
--- a/recipes-bsp/imx-atf/imx-atf_%.bbappend
+++ b/recipes-bsp/imx-atf/imx-atf_%.bbappend
@@ -1,10 +1,10 @@
-PV = "2.2+git${SRCPV}"
-SRCBRANCH = "toradex_imx_5.4.70_2.3.0"
-SRCREV = "7f1187ba31cc1624f7dadd98998e010cb229926a"
-SRCREV_use-head-next = "${AUTOREV}"
-SRC_URI = "git://git.toradex.com/imx-atf.git;protocol=https;branch=${SRCBRANCH}"
+PV_tdx = "2.2+git${SRCPV}"
+SRCBRANCH_tdx = "toradex_imx_5.4.70_2.3.0"
+SRCREV_tdx = "2fa8c6349e9a1d965757d44f05a6c72687850b77"
+SRCREV_use-head-next_tdx = "${AUTOREV}"
+SRC_URI_tdx = "git://git.toradex.com/imx-atf.git;protocol=https;branch=${SRCBRANCH}"
-EXTRA_OEMAKE_append = " \
+EXTRA_OEMAKE_append_tdx = " \
BUILD_STRING="${SRCBRANCH}-g${@'${SRCPV}'.replace('AUTOINC+', '')}" \
"
EXTRA_OEMAKE_append_verdin-imx8mm = " \
diff --git a/recipes-bsp/imx-mkimage/imx-boot_%.bbappend b/recipes-bsp/imx-mkimage/imx-boot_%.bbappend
deleted file mode 100644
index bd97840..0000000
--- a/recipes-bsp/imx-mkimage/imx-boot_%.bbappend
+++ /dev/null
@@ -1,8 +0,0 @@
-# Create symbolic link rather than copying mkimage_uboot
-compile_mx8m_prepend() {
- rm -rf ${BOOT_STAGING}/mkimage_uboot
-}
-compile_mx8m_append() {
- rm -rf ${BOOT_STAGING}/mkimage_uboot
- lnr ${STAGING_DIR_NATIVE}/${bindir}/mkimage ${BOOT_STAGING}/mkimage_uboot
-}
diff --git a/recipes-bsp/imx-sc-firmware/imx-sc-firmware-toradex_1.7.0.bb b/recipes-bsp/imx-sc-firmware/imx-sc-firmware-toradex_1.7.0.bb
index 16495b3..da7e101 100644
--- a/recipes-bsp/imx-sc-firmware/imx-sc-firmware-toradex_1.7.0.bb
+++ b/recipes-bsp/imx-sc-firmware/imx-sc-firmware-toradex_1.7.0.bb
@@ -11,8 +11,7 @@ inherit deploy
SRC_URI = "git://github.com/toradex/i.MX-System-Controller-Firmware.git;branch=master;protocol=https;fsl-eula=true"
-SRCREV = "bad4eef87700c1834f8510bdf72bd18826b87cd7"
-SRCREV_use-head-next = "${AUTOREV}"
+SRCREV = "4b69cbb6cba9a097334233086a314b9e0718381c"
S = "${WORKDIR}/git"
diff --git a/recipes-bsp/u-boot/files/0001-colibri_imx7-boot-linux-kernel-in-non-secure-mode.patch b/recipes-bsp/u-boot/files/0001-colibri_imx7-boot-linux-kernel-in-non-secure-mode.patch
index 20e7e98..8573807 100644
--- a/recipes-bsp/u-boot/files/0001-colibri_imx7-boot-linux-kernel-in-non-secure-mode.patch
+++ b/recipes-bsp/u-boot/files/0001-colibri_imx7-boot-linux-kernel-in-non-secure-mode.patch
@@ -1,5 +1,4 @@
-From 9bdb801953e4a81c59fc358cc5bf91811b0d514f Mon Sep 17 00:00:00 2001
-Message-Id: <9bdb801953e4a81c59fc358cc5bf91811b0d514f.1601476897.git.marcel.ziswiler@toradex.com>
+From 3192378a0bd7cfbadf752a770545e7c879f3e603 Mon Sep 17 00:00:00 2001
From: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Date: Wed, 30 Sep 2020 16:37:54 +0200
Subject: [PATCH] colibri_imx7: boot linux kernel in non-secure mode
@@ -9,23 +8,21 @@ mode mainline/upstream requires non-secure mode instead, as it properly
uses PSCI to control further cores.
Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
+
---
include/configs/colibri_imx7.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/configs/colibri_imx7.h b/include/configs/colibri_imx7.h
-index 1b50dac83c..be33f1bdf9 100644
+index b48172ab19..b796fba3e2 100644
--- a/include/configs/colibri_imx7.h
+++ b/include/configs/colibri_imx7.h
-@@ -140,7 +140,7 @@
- UBOOT_UPDATE \
- "boot_script_dhcp=boot.scr\0" \
+@@ -161,7 +161,7 @@
+ "boot_scripts=" BOOT_SCRIPT "\0" \
+ "boot_script_dhcp=" BOOT_SCRIPT "\0" \
"boot_file=zImage\0" \
- "bootm_boot_mode=sec\0" \
+ "bootm_boot_mode=nonsec\0" \
"bootubipart=ubi\0" \
"console=ttymxc0\0" \
"defargs=\0" \
---
-2.29.0
-
diff --git a/recipes-bsp/u-boot/files/0001-tools-image-host-fix-wrong-return-value.patch b/recipes-bsp/u-boot/files/0001-tools-image-host-fix-wrong-return-value.patch
new file mode 100644
index 0000000..5e58173
--- /dev/null
+++ b/recipes-bsp/u-boot/files/0001-tools-image-host-fix-wrong-return-value.patch
@@ -0,0 +1,41 @@
+From 77fe3ad2ab2953ccdf6e9417cbecc060b45d3e55 Mon Sep 17 00:00:00 2001
+From: Ming Liu <liu.ming50@gmail.com>
+Date: Sun, 30 May 2021 10:32:08 +0200
+Subject: [PATCH] tools: image-host: fix wrong return value
+
+Upstream-Status: Submitted [ Sent to u-boot@lists.denx.de on 2021-05-31 ]
+
+The return value '-ENOSPC' of fit_set_timestamp function does not match
+the caller fit_image_write_sig's expection which is '-FDT_ERR_NOSPACE'.
+
+Fix it by not calling fit_set_timestamp, but call fdt_setprop instead.
+
+This fixes a following mkimage error:
+| Can't write signature for 'signature@1' signature node in
+| 'conf@imx6ull-colibri-wifi-eval-v3.dtb' conf node: <unknown error>
+| mkimage Can't add hashes to FIT blob: -1
+
+Signed-off-by: Ming Liu <liu.ming50@gmail.com>
+---
+ tools/image-host.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/tools/image-host.c b/tools/image-host.c
+index 270d36fe45..73095461a7 100644
+--- a/tools/image-host.c
++++ b/tools/image-host.c
+@@ -132,8 +132,10 @@ static int fit_image_write_sig(void *fit, int noffset, uint8_t *value,
+ if (!ret) {
+ time_t timestamp = imagetool_get_source_date(cmdname,
+ time(NULL));
++ uint32_t t = cpu_to_uimage(timestamp);
+
+- ret = fit_set_timestamp(fit, noffset, timestamp);
++ ret = fdt_setprop(fit, noffset, FIT_TIMESTAMP_PROP, &t,
++ sizeof(uint32_t));
+ }
+ if (region_prop && !ret) {
+ uint32_t strdata[2];
+--
+2.29.0
+
diff --git a/recipes-bsp/u-boot/u-boot-tools_%.bbappend b/recipes-bsp/u-boot/u-boot-tools_%.bbappend
new file mode 100644
index 0000000..a2f2625
--- /dev/null
+++ b/recipes-bsp/u-boot/u-boot-tools_%.bbappend
@@ -0,0 +1,5 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+SRC_URI_append = " \
+ file://0001-tools-image-host-fix-wrong-return-value.patch \
+"
diff --git a/recipes-bsp/u-boot/u-boot-toradex-common.inc b/recipes-bsp/u-boot/u-boot-toradex-common.inc
index f00a856..32c4083 100644
--- a/recipes-bsp/u-boot/u-boot-toradex-common.inc
+++ b/recipes-bsp/u-boot/u-boot-toradex-common.inc
@@ -12,7 +12,7 @@ inherit toradex-u-boot-localversion
# We use the revision in order to avoid having to fetch it from the
# repo during parse
-SRCREV = "2a68bb1926d61ee0f15877ce76d615fd1bc88fe3"
+SRCREV = "4baed786463e78727265420bf36df440b0a9ac92"
SRCBRANCH = "toradex_2020.07"
SRCREV_use-head-next = "${AUTOREV}"
diff --git a/recipes-bsp/u-boot/u-boot-toradex-common_2020.04.inc b/recipes-bsp/u-boot/u-boot-toradex-common_2020.04.inc
index 30fd029..9da1c42 100644
--- a/recipes-bsp/u-boot/u-boot-toradex-common_2020.04.inc
+++ b/recipes-bsp/u-boot/u-boot-toradex-common_2020.04.inc
@@ -10,7 +10,7 @@ SRC_URI = " \
file://fw_env.config \
"
-SRCREV = "76fd4496a40b9dd7271ceb9ff330982c954fe8e9"
+SRCREV = "e72d2f7c00a195a6db25c1d1d9249999bcf51fc9"
SRCREV_use-head-next = "${AUTOREV}"
SRCBRANCH = "toradex_imx_v2020.04_5.4.70_2.3.0"
diff --git a/recipes-bsp/u-boot/u-boot-toradex_2020.07.bb b/recipes-bsp/u-boot/u-boot-toradex_2020.07.bb
index 4add74e..bc6405a 100644
--- a/recipes-bsp/u-boot/u-boot-toradex_2020.07.bb
+++ b/recipes-bsp/u-boot/u-boot-toradex_2020.07.bb
@@ -31,6 +31,14 @@ nand_padding () {
dd bs=1024 count=1 if=/dev/zero | cat - ${PADDING_DIR}/u-boot.imx.zero-padded > ${PADDING_DIR}/u-boot-nand.imx
}
+deploy_uboot_with_spl () {
+ for config in ${UBOOT_MACHINE}; do
+ if [ -f "${B}/${config}/u-boot-with-spl.imx" ]; then
+ install -D -m 644 ${B}/${config}/u-boot-with-spl.imx ${DEPLOYDIR}/u-boot-with-spl.imx
+ fi
+ done
+}
+
do_compile_append_colibri-imx6ull () {
nand_padding
}
@@ -38,3 +46,15 @@ do_compile_append_colibri-imx6ull () {
do_compile_append_colibri-imx7 () {
nand_padding
}
+
+do_compile_append_colibri-vf () {
+ nand_padding
+}
+
+do_deploy_append_colibri-imx6 () {
+ deploy_uboot_with_spl
+}
+
+do_deploy_append_apalis-imx6 () {
+ deploy_uboot_with_spl
+}
diff --git a/recipes-graphics/drm/libdrm_2.4.102.imx.bbappend b/recipes-graphics/drm/libdrm_2.4.102.imx.bbappend
index 0589710..688a02f 100644
--- a/recipes-graphics/drm/libdrm_2.4.102.imx.bbappend
+++ b/recipes-graphics/drm/libdrm_2.4.102.imx.bbappend
@@ -1 +1 @@
-RDEPENDS_${PN}_append_imxgpu = " ${PN}-etnaviv ${PN}-vivante"
+RDEPENDS_${PN}_append_imxgpu_tdx = " ${PN}-etnaviv ${PN}-vivante"
diff --git a/recipes-graphics/wayland/weston-init.bbappend b/recipes-graphics/wayland/weston-init.bbappend
index c92a3c6..0fdba76 100644
--- a/recipes-graphics/wayland/weston-init.bbappend
+++ b/recipes-graphics/wayland/weston-init.bbappend
@@ -1,8 +1,3 @@
-INI_UNCOMMENT_ASSIGNMENTS_append_mx8 = " \
- use-g2d=1 \
-"
-
-
uncomment() {
# already uncommented, do nothing
if ! (grep "^$1" $2); then
@@ -12,3 +7,38 @@ uncomment() {
sed -i -e 's,^#'"$1"','"$1"',g' $2
fi
}
+
+
+configure_noidle() {
+ sed -i '/idle-time=0/d' ${D}${sysconfdir}/xdg/weston/weston.ini
+ sed -i '/^\[core\]/a idle-time=0' ${D}${sysconfdir}/xdg/weston/weston.ini
+}
+
+# Prevent weston from going to sleep
+do_install_append_upstream() {
+ configure_noidle
+}
+
+configure_pixman() {
+ sed -i '/use-pixman=true/d' ${D}${sysconfdir}/xdg/weston/weston.ini
+ sed -i '/^\[core\]/a use-pixman=true' ${D}${sysconfdir}/xdg/weston/weston.ini
+}
+
+# With upstream weston and modules without GPU weston uses a lot of
+# cpu time and becomes very unresponsive. Setting use-pixman=true works
+# around it.
+do_install_append_upstream_colibri-imx6ull() {
+ configure_pixman
+}
+
+do_install_append_upstream_colibri-imx6ull-emmc() {
+ configure_pixman
+}
+
+do_install_append_upstream_colibri-imx7() {
+ configure_pixman
+}
+
+do_install_append_upstream_colibri-imx7-emmc() {
+ configure_pixman
+}
diff --git a/recipes-kernel/linux-firmware/linux-firmware_%.bbappend b/recipes-kernel/linux-firmware/linux-firmware_%.bbappend
new file mode 100644
index 0000000..0e02d99
--- /dev/null
+++ b/recipes-kernel/linux-firmware/linux-firmware_%.bbappend
@@ -0,0 +1,29 @@
+IMX_FIRMWARE_SRC ?= "git://github.com/NXP/imx-firmware.git;protocol=https"
+SRCBRANCH_imx-firmware = "lf-5.10.72_2.2.0"
+SRC_URI += " \
+ ${IMX_FIRMWARE_SRC};branch=${SRCBRANCH_imx-firmware};destsuffix=imx-firmware;name=imx-firmware \
+"
+
+SRCREV_imx-firmware = "a312213179f671cecba5f32aa839cc752a3e817f"
+
+SRCREV_FORMAT = "default_imx-firmware"
+
+do_install_append () {
+ # Install NXP Connectivity SDIO8997 firmware
+ install -d ${D}${nonarch_base_libdir}/firmware/nxp
+ install -m 0644 ${WORKDIR}/imx-firmware/nxp/wifi_mod_para.conf ${D}${nonarch_base_libdir}/firmware/nxp
+ install -m 0644 ${WORKDIR}/imx-firmware/nxp/FwImage_8997_SD/ed_mac_ctrl_V3_8997.conf ${D}${nonarch_base_libdir}/firmware/nxp
+ install -m 0644 ${WORKDIR}/imx-firmware/nxp/FwImage_8997_SD/sdiouart8997_combo_v4.bin ${D}${nonarch_base_libdir}/firmware/nxp
+ install -m 0644 ${WORKDIR}/imx-firmware/nxp/FwImage_8997_SD/txpwrlimit_cfg_8997.conf ${D}${nonarch_base_libdir}/firmware/nxp
+
+ # Upstream SDIO8997 driver firmware is located elsewhere
+ install -d ${D}${nonarch_base_libdir}/firmware/mrvl
+ lnr ${D}${nonarch_base_libdir}/firmware/nxp/sdiouart8997_combo_v4.bin ${D}${nonarch_base_libdir}/firmware/mrvl/sdiouart8997_combo_v4.bin
+}
+
+PACKAGES =+ " ${PN}-nxp89xx"
+
+FILES_${PN}-nxp89xx = " \
+ ${nonarch_base_libdir}/firmware/nxp/* \
+ ${nonarch_base_libdir}/firmware/mrvl/sdiouart8997_combo_v4.bin \
+"
diff --git a/recipes-kernel/linux/device-tree-overlays_git.bb b/recipes-kernel/linux/device-tree-overlays_git.bb
index 68df30f..9ce7664 100644
--- a/recipes-kernel/linux/device-tree-overlays_git.bb
+++ b/recipes-kernel/linux/device-tree-overlays_git.bb
@@ -1,7 +1,7 @@
inherit toradex-devicetree
SRCBRANCH = "toradex_5.4-2.3.x-imx"
-SRCREV = "ffc4fcbf04b03c328a786b0bb6812f565109f8fd"
+SRCREV = "d5905ae8af38f9b715f6605f239e53cc04f3e087"
SRCREV_use-head-next = "${AUTOREV}"
# we have dtbo's in arm and arm64 architecture, set the include paths
diff --git a/recipes-kernel/linux/linux-imx-headers_5.4%.bbappend b/recipes-kernel/linux/linux-imx-headers_5.4%.bbappend
index eae6592..6f85f34 100644
--- a/recipes-kernel/linux/linux-imx-headers_5.4%.bbappend
+++ b/recipes-kernel/linux/linux-imx-headers_5.4%.bbappend
@@ -1,6 +1,6 @@
-LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
-SRCBRANCH = "toradex_5.4-2.1.x-imx"
-LOCALVERSION = "-${SRCBRANCH}"
-SRC_URI = "git://git.toradex.com/linux-toradex.git;protocol=https;branch=${SRCBRANCH}"
+LIC_FILES_CHKSUM_tdx = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
+SRCBRANCH_tdx = "toradex_5.4-2.1.x-imx"
+LOCALVERSION_tdx = "-2.3.2"
+SRC_URI_tdx = "git://git.toradex.com/linux-toradex.git;protocol=https;branch=${SRCBRANCH}"
# Keep that one stable, i.e. use the exact git hash from the NXP BSP.
-SRCREV = "dea2fede7e024ee7029b13e8d82a00ec14427777"
+SRCREV_tdx = "dea2fede7e024ee7029b13e8d82a00ec14427777"
diff --git a/recipes-kernel/linux/linux-toradex_5.4-2.3.x.bb b/recipes-kernel/linux/linux-toradex_5.4-2.3.x.bb
index b46b227..677f87e 100644
--- a/recipes-kernel/linux/linux-toradex_5.4-2.3.x.bb
+++ b/recipes-kernel/linux/linux-toradex_5.4-2.3.x.bb
@@ -14,7 +14,7 @@ SRC_URI = " \
KERNEL_MODULE_AUTOLOAD += "${@bb.utils.contains('COMBINED_FEATURES', 'usbgadget', ' libcomposite', '',d)}"
inherit toradex-kernel-localversion
-LINUX_VERSION = "5.4.91"
+LINUX_VERSION = "5.4.193"
# skip, as with use-head-next LINUX_VERSION might be set wrongly
KERNEL_VERSION_SANITY_SKIP_use-head-next = "1"
@@ -22,7 +22,7 @@ KERNEL_VERSION_SANITY_SKIP_use-head-next = "1"
LOCALVERSION = "-${TDX_VERSION}"
SRCBRANCH = "toradex_5.4-2.3.x-imx"
-SRCREV_machine = "6afb048a71e32dec0105cb9b1b23810438796730"
+SRCREV_machine = "cf754d7aaa943974fa97b26d641da26f13a02bd6"
SRCREV_machine_use-head-next = "${AUTOREV}"
DEPENDS += "lzop-native bc-native"
@@ -31,9 +31,12 @@ COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
KBUILD_DEFCONFIG_apalis-imx6 ?= "apalis_imx6_defconfig"
KBUILD_DEFCONFIG_colibri-imx6 ?= "colibri_imx6_defconfig"
KBUILD_DEFCONFIG_colibri-imx6ull ?= "colibri-imx6ull_defconfig"
+KBUILD_DEFCONFIG_colibri-imx6ull-emmc ?= "colibri-imx6ull_defconfig"
KBUILD_DEFCONFIG_mx7 ?= "colibri_imx7_defconfig"
KBUILD_DEFCONFIG_mx8 ?= "toradex_defconfig"
+export DTC_FLAGS = "-@"
+
###############################################################################
# Apply the RT patch and change the configuration to use PREMPT_RT when the
# preempt-rt override is set.
@@ -43,7 +46,7 @@ KBUILD_DEFCONFIG_mx8 ?= "toradex_defconfig"
# both possible storage locations.
MIRRORS_append_preempt-rt = "${KERNELORG_MIRROR}/linux/kernel/projects/rt/5.4/older/ ${KERNELORG_MIRROR}/linux/kernel/projects/rt/5.4/"
SRC_URI_append_preempt-rt = " \
- ${KERNELORG_MIRROR}/linux/kernel/projects/rt/5.4/older/patch-5.4.91-rt50.patch.xz;name=rt-patch \
+ ${KERNELORG_MIRROR}/linux/kernel/projects/rt/5.4/older/patch-5.4.193-rt74.patch.xz;name=rt-patch \
file://preempt-rt.scc \
file://preempt-rt-less-latency.scc \
"
@@ -53,4 +56,4 @@ SRC_URI_append_preempt-rt = " \
# file://0002-ddr-perf-prevent-BUG-with-rt-patch.patch \
#
-SRC_URI[rt-patch.sha256sum] = "3152fac82ee4357f89035736de707545b36b1816536d17cc76bd830b488a2923"
+SRC_URI[rt-patch.sha256sum] = "821d7bf3015d90e86eace5869d5596eacc9e4b5bd80644d40207817c4b8cc4be"
diff --git a/recipes-kernel/perf/perf.bbappend b/recipes-kernel/perf/perf.bbappend
new file mode 100644
index 0000000..87a8b28
--- /dev/null
+++ b/recipes-kernel/perf/perf.bbappend
@@ -0,0 +1,2 @@
+# perf with a 4.4 kernel no longer compiles
+COMPATIBLE_MACHINE_use-nxp-bsp_colibri-vf = "(^$)"
diff --git a/recipes-multimedia/gstreamer/gst-plugins-package.inc b/recipes-multimedia/gstreamer/gst-plugins-package.inc
deleted file mode 100644
index 6781e98..0000000
--- a/recipes-multimedia/gstreamer/gst-plugins-package.inc
+++ /dev/null
@@ -1,56 +0,0 @@
-PACKAGESPLITFUNCS_prepend = " split_gstreamer10_packages "
-PACKAGESPLITFUNCS_append = " set_metapkg_rdepends "
-
-python split_gstreamer10_packages () {
- gst_libdir = d.expand('${libdir}/gstreamer-${LIBV}')
- postinst = d.getVar('plugin_postinst')
- glibdir = d.getVar('libdir')
-
- do_split_packages(d, glibdir, r'^lib(.*)\.so\.*', 'lib%s', 'gstreamer %s library', extra_depends='', allow_links=True)
- do_split_packages(d, gst_libdir, r'libgst(.*)\.so$', d.expand('${PN}-%s'), 'GStreamer plugin for %s', postinst=postinst, extra_depends='')
- do_split_packages(d, glibdir+'/girepository-1.0', r'Gst(.*)-1.0\.typelib$', d.expand('${PN}-%s-typelib'), 'GStreamer typelib file for %s', postinst=postinst, extra_depends='')
- do_split_packages(d, gst_libdir, r'libgst(.*)\.la$', d.expand('${PN}-%s-dev'), 'GStreamer plugin for %s (development files)', extra_depends='${PN}-dev')
- do_split_packages(d, gst_libdir, r'libgst(.*)\.a$', d.expand('${PN}-%s-staticdev'), 'GStreamer plugin for %s (static development files)', extra_depends='${PN}-staticdev')
-}
-
-python set_metapkg_rdepends () {
- import os
- import oe.utils
-
- pn = d.getVar('PN')
- metapkg = pn + '-meta'
- d.setVar('ALLOW_EMPTY_' + metapkg, "1")
- d.setVar('FILES_' + metapkg, "")
- blacklist = [ pn, pn + '-meta' ]
- metapkg_rdepends = []
- pkgdest = d.getVar('PKGDEST')
- for pkg in oe.utils.packages_filter_out_system(d):
- if pkg not in blacklist and pkg not in metapkg_rdepends:
- # See if the package is empty by looking at the contents of its PKGDEST subdirectory.
- # If this subdirectory is empty, then the package is.
- # Empty packages do not get added to the meta package's RDEPENDS
- pkgdir = os.path.join(pkgdest, pkg)
- if os.path.exists(pkgdir):
- dir_contents = os.listdir(pkgdir) or []
- else:
- dir_contents = []
- is_empty = len(dir_contents) == 0
- if not is_empty:
- metapkg_rdepends.append(pkg)
- d.setVar('RDEPENDS_' + metapkg, ' '.join(metapkg_rdepends))
- d.setVar('DESCRIPTION_' + metapkg, pn + ' meta package')
-}
-
-# each plugin-dev depends on PN-dev, plugin-staticdev on PN-staticdev
-# so we need them even when empty (like in gst-plugins-good case)
-ALLOW_EMPTY_${PN} = "1"
-ALLOW_EMPTY_${PN}-dev = "1"
-ALLOW_EMPTY_${PN}-staticdev = "1"
-
-PACKAGES += "${PN}-apps ${PN}-meta ${PN}-glib"
-
-FILES_${PN} = ""
-FILES_${PN}-apps = "${bindir}"
-FILES_${PN}-glib = "${datadir}/glib-2.0"
-
-RRECOMMENDS_${PN} += "${PN}-meta"
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_%.bbappend
deleted file mode 100644
index c73790e..0000000
--- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_%.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_OECONF += "--libdir=${libdir}"
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc b/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc
deleted file mode 100644
index bc24b05..0000000
--- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "Plugins for the GStreamer multimedia framework 1.x"
-HOMEPAGE = "http://gstreamer.freedesktop.org/"
-BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
-SECTION = "multimedia"
-
-DEPENDS = "gstreamer1.0 glib-2.0-native"
-
-SRC_URI_append = " file://gtk-doc-tweaks.patch"
-
-inherit autotools pkgconfig upstream-version-is-even gtk-doc
-
-acpaths = "-I ${S}/common/m4 -I ${S}/m4"
-
-LIBV = "1.0"
-require gst-plugins-package.inc
-
-# Orc enables runtime JIT compilation of data processing routines from Orc
-# bytecode to SIMD instructions for various architectures (currently SSE, MMX,
-# MIPS, Altivec and NEON are supported).
-
-GSTREAMER_ORC ?= "orc"
-
-PACKAGECONFIG[debug] = "--enable-debug,--disable-debug"
-PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc orc-native"
-PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind"
-
-export ORCC = "${STAGING_DIR_NATIVE}${bindir}/orcc"
-
-EXTRA_OECONF = " \
- --disable-examples \
-"
-
-delete_pkg_m4_file() {
- # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection
- rm "${S}/common/m4/pkg.m4" || true
- rm -f "${S}/common/m4/gtk-doc.m4"
-}
-
-do_configure[prefuncs] += " delete_pkg_m4_file"
-
-PACKAGES_DYNAMIC = "^${PN}-.*"
diff --git a/recipes-support/bmode-usb/bmode-usb_1.0.bb b/recipes-support/bmode-usb/bmode-usb_1.0.bb
index 752c09b..62d48b4 100644
--- a/recipes-support/bmode-usb/bmode-usb_1.0.bb
+++ b/recipes-support/bmode-usb/bmode-usb_1.0.bb
@@ -8,6 +8,7 @@ DEFINE = "NO_MACHINE"
DEFINE_apalis-imx6 = "MX6"
DEFINE_colibri-imx6 = "MX6"
DEFINE_colibri-imx6ull = "MX6ULL"
+DEFINE_colibri-imx6ull-emmc = "MX6ULL"
do_compile() {
${CC} -o bmode_usb bmode_usb.c ${CFLAGS} ${LDFLAGS} -D ${DEFINE}
diff --git a/recipes-support/btuart/btuart.bb b/recipes-support/btuart/btuart.bb
new file mode 100644
index 0000000..5cc4066
--- /dev/null
+++ b/recipes-support/btuart/btuart.bb
@@ -0,0 +1,37 @@
+SUMMARY = "Initialize Bluetooth UART"
+DESCRIPTION = "At runtime on target make sure appropriate firmware is used and initialize Bluetooth UART"
+LICENSE = "PD"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+RRECOMMENDS_${PN} = "bluez5"
+
+SRC_URI = " \
+ file://btuart.sh \
+ file://btuart.service \
+ file://COPYING \
+"
+
+LIC_FILES_CHKSUM = "file://${WORKDIR}/COPYING;md5=1c3a7fb45253c11c74434676d84fe7dd"
+
+do_install () {
+ install -d ${D}/${sbindir}
+ install -m 0755 ${WORKDIR}/*.sh ${D}/${sbindir}
+
+ install -d ${D}${systemd_unitdir}/system/
+ install -m 0644 ${WORKDIR}/btuart.service ${D}${systemd_unitdir}/system
+}
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "btuart.service"
+
+inherit allarch systemd
+
+pkg_postinst_ontarget_${PN}_verdin-imx8mp () {
+ # only BT UART modules need our service
+ if fgrep -q V1.0 /proc/device-tree/toradex,board-rev || ! fgrep -q toradex,verdin-imx8mp-wifi /proc/device-tree/compatible; then
+ /bin/systemctl disable btuart.service
+ /bin/systemctl stop btuart.service
+ exit 0
+ fi
+}
diff --git a/recipes-support/btuart/files/COPYING b/recipes-support/btuart/files/COPYING
new file mode 100644
index 0000000..040e990
--- /dev/null
+++ b/recipes-support/btuart/files/COPYING
@@ -0,0 +1,5 @@
+This piece is software is provided by Toradex AG as sample code.
+There is no warranty for the program.
+Toradex AG put this program in public domain, uncopyrighted.
+
+Renens, Swizterland, 2008-10-23
diff --git a/recipes-support/btuart/files/btuart.service b/recipes-support/btuart/files/btuart.service
new file mode 100644
index 0000000..547f6be
--- /dev/null
+++ b/recipes-support/btuart/files/btuart.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Initialize Bluetooth UART
+Wants=bluetooth.service
+Before=bluetooth.service
+After=sys-subsystem-net-devices-mlan0.device
+After=dev-ttymxc3.device
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/btuart.sh
+
+[Install]
+WantedBy=multi-user.target
diff --git a/recipes-support/btuart/files/btuart.sh b/recipes-support/btuart/files/btuart.sh
new file mode 100755
index 0000000..c4f53c1
--- /dev/null
+++ b/recipes-support/btuart/files/btuart.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+sleep 5
+/usr/bin/hciattach /dev/ttymxc3 any 115200 flow
+/usr/sbin/rfkill unblock bluetooth
+/usr/bin/hciconfig hci0 up
+# Change BT UART baudrate to a higher speed, for example 921600
+/usr/bin/hcitool -i hci0 cmd 0x3F 0x09 0x00 0x10 0x0e 0x00
+/bin/stty -F /dev/ttymxc3 921600
diff --git a/wic/verdin-imx8mp-imx-boot-bootpart.wks.in b/wic/verdin-imx8mp-imx-boot-bootpart.wks.in
deleted file mode 100644
index b498a1a..0000000
--- a/wic/verdin-imx8mp-imx-boot-bootpart.wks.in
+++ /dev/null
@@ -1,20 +0,0 @@
-# short-description: Create SD card image with a boot partition
-# long-description:
-# Create an image that can be written onto a SD card using dd for use
-# with i.MX SoC family
-# It uses u-boot + other binaries gathered together on imx-boot file
-#
-# The disk layout used is:
-# - ---------- -------------- --------------
-# | | imx-boot | boot | rootfs |
-# - ---------- -------------- --------------
-# ^ ^ ^ ^ ^
-# | | | | |
-# 0 | 8MiB 72MiB 72MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
-# ${IMX_BOOT_SEEK} 32 or 33kiB, see reference manual
-#
-part u-boot --source rawcopy --sourceparams="file=imx-boot" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK}
-part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label BOOT --active --align 8192 --size 64
-part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 8192
-
-bootloader --ptable msdos