summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-dpdk/COPYING.MIT17
-rw-r--r--meta-dpdk/LICENSE5
-rw-r--r--meta-dpdk/README56
-rw-r--r--meta-dpdk/conf/layer.conf24
-rw-r--r--meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0001-configure-skip-toolchain-checks.patch46
-rw-r--r--meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0002-Makefile-It-does-not-detect-libbpf-header-from-sysro.patch44
-rw-r--r--meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0003-Makefile-fix-KeyError-failure.patch31
-rw-r--r--meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0004-Makefile-fix-libxdp.pc-error.patch34
-rw-r--r--meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools_1.2.8.bb37
-rw-r--r--meta-dpdk/dynamic-layers/petalinux/recipes-core/images/petalinux-image-everything.bbappend2
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk.inc12
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk_22.11.0.bb71
-rw-r--r--meta-dpdk/recipes-extended/dpdk/libmcdi_0.1.0.bb33
-rw-r--r--meta-xilinx-bsp/conf/layer.conf2
-rw-r--r--meta-xilinx-bsp/conf/machine/vck5000-versal.conf45
-rw-r--r--meta-xilinx-bsp/conf/machine/vhk158-versal.conf52
-rw-r--r--meta-xilinx-bsp/conf/machine/zcu1275-zynqmp.conf50
-rw-r--r--meta-xilinx-bsp/conf/machine/zcu1285-zynqmp.conf (renamed from meta-xilinx-bsp/conf/machine/zcu670-zynqmp.conf)24
-rw-r--r--meta-xilinx-bsp/recipes-bsp/reference-design/kc705-bitstream_2022.2.bb48
-rw-r--r--meta-xilinx-contrib/recipes-bsp/bitstream/bitstream-extraction_%.bbappend2
-rw-r--r--meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch305
-rw-r--r--meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch607
-rw-r--r--meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch54
-rw-r--r--meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0004-minized-wifi-bluetooth.cfg33
-rw-r--r--meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch305
-rw-r--r--meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch607
-rw-r--r--meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch54
-rw-r--r--meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0004-minized-wifi-bluetooth.cfg33
-rw-r--r--meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx_2022.1.bbappend12
-rw-r--r--meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx_2022.2.bbappend12
-rw-r--r--meta-xilinx-core/conf/layer.conf6
-rw-r--r--meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.3.bb47
-rw-r--r--meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb2
-rw-r--r--meta-xilinx-core/recipes-bsp/ai-engine/aie-rt-2022.inc11
-rw-r--r--meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.4.bb33
-rw-r--r--meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb2
-rw-r--r--meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2022.1.bb8
-rw-r--r--meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2022.2.bb8
-rw-r--r--meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2023.1.bb2
-rw-r--r--meta-xilinx-core/recipes-bsp/bootgen/bootgen_1.0.bb31
-rw-r--r--meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_1.0.bb78
-rw-r--r--meta-xilinx-core/recipes-bsp/libdfx/libdfx_1.0.bb23
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2022.1.bb21
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2022.2.bb21
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2022.1.inc17
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2022.2.inc17
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2023.1.inc4
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2022.1.bb4
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2022.2.bb4
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2022.1.bb8
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2022.2.bb6
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2023.1.bb2
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2022.1.inc8
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2022.2.inc8
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-6.1.0/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch29
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-6.1.0/cross.patch40
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native.inc11
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2022.1.bb9
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2022.2.bb9
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2022.1.bb26
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2022.2.bb26
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx.inc47
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2022.1.bb24
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2022.2.bb24
-rw-r--r--meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_2022.2.bb24
-rw-r--r--meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_2022.2.bb24
-rw-r--r--meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2022.1.bb9
-rw-r--r--meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2022.2.bb9
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2022.1.bb39
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2022.2.bb39
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2022.1.bb51
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2022.2.bb50
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2022.1.bb46
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2022.2.bb46
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2022.1.bb40
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2022.2.bb40
-rw-r--r--[-rwxr-xr-x]meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb0
-rw-r--r--[-rwxr-xr-x]meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb0
-rw-r--r--[-rwxr-xr-x]meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb0
-rw-r--r--meta-xilinx-standalone-experimental/conf/dtb-embeddedsw.inc2
-rw-r--r--meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass12
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2022.1.bb11
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2022.2.bb11
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2022.1.bb16
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2022.2.bb16
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2022.1.bb16
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2022.2.bb16
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2022.1.bb16
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2022.2.bb16
89 files changed, 3114 insertions, 708 deletions
diff --git a/meta-dpdk/COPYING.MIT b/meta-dpdk/COPYING.MIT
deleted file mode 100644
index fb950dc6..00000000
--- a/meta-dpdk/COPYING.MIT
+++ /dev/null
@@ -1,17 +0,0 @@
1Permission is hereby granted, free of charge, to any person obtaining a copy
2of this software and associated documentation files (the "Software"), to deal
3in the Software without restriction, including without limitation the rights
4to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5copies of the Software, and to permit persons to whom the Software is
6furnished to do so, subject to the following conditions:
7
8The above copyright notice and this permission notice shall be included in
9all copies or substantial portions of the Software.
10
11THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
17THE SOFTWARE.
diff --git a/meta-dpdk/LICENSE b/meta-dpdk/LICENSE
deleted file mode 100644
index e57d3b90..00000000
--- a/meta-dpdk/LICENSE
+++ /dev/null
@@ -1,5 +0,0 @@
1All metadata files (including, but not limited to bb, bbappend,
2bbclass, inc and conf files) are MIT licensed unless otherwise stated.
3Source code included in tree for individual recipes is under the
4LICENSE stated in the associated recipe (.bb file) unless otherwise
5stated.
diff --git a/meta-dpdk/README b/meta-dpdk/README
deleted file mode 100644
index 1b256d02..00000000
--- a/meta-dpdk/README
+++ /dev/null
@@ -1,56 +0,0 @@
1meta-dpdk
2=========
3
4This README file contains information on building the DPDK package.
5
6This is a fork of meta-dpdk, git://git.yoctoproject.org/meta-dpdk
7langdale branch as of commit bd1b4f10262f12dd66a91383757ccba4eeda0b08.
8
9The software in this fork is specific to the AMD Embedded versal-net.
10
11Dependencies
12============
13
14This layer depends on:
15
16 URI: git://git.openembedded.org/bitbake
17 branch: master
18
19 URI: git://git.openembedded.org/openembedded-core
20 layers: meta
21 branch: master
22
23
24Guidelines for submitting patches
25====================================
26
27Please submit any patches against this fork of meta-dpdk to the meta-xilinx
28mailing list (meta-xilinx@lists.yoctoproject.org).
29
30Regardless of how you submit a patch or patchset, the patches should
31at minimum follow the suggestions outlined in the 'Submitting a Change
32to the Yocto Project' section in the Yocto Project Development Manual.
33Specifically, they should:
34
35 - Include a 'Signed-off-by:' line. A commit can't legally be pulled
36 in without this.
37
38 - Provide a single-line, short summary of the change. This short
39 description should be prefixed by the BSP or recipe name, as
40 appropriate, followed by a colon. Capitalize the first character
41 of the summary (following the colon).
42
43 - For the body of the commit message, provide detailed information
44 that describes what you changed, why you made the change, and the
45 approach you used.
46
47 - If the change addresses a specific bug or issue that is associated
48 with a bug-tracking ID, include a reference to that ID in your
49 detailed description in the following format: [YOCTO #<bug-id>].
50
51 - Pay attention to line length - please don't allow any particular
52 line in the commit message to stretch past 72 characters.
53
54 - For any non-trivial patch, provide information about how you
55 tested the patch, and for any non-trivial or non-obvious testing
56 setup, provide details of that setup.
diff --git a/meta-dpdk/conf/layer.conf b/meta-dpdk/conf/layer.conf
deleted file mode 100644
index 2b33f7a9..00000000
--- a/meta-dpdk/conf/layer.conf
+++ /dev/null
@@ -1,24 +0,0 @@
1# We have a conf and classes directory, add to BBPATH
2BBPATH .= ":${LAYERDIR}"
3
4# We have recipes-* directories, add to BBFILES
5BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
6 ${LAYERDIR}/recipes-*/*/*.bbappend"
7
8BBFILE_COLLECTIONS += "dpdk"
9BBFILE_PATTERN_dpdk := "^${LAYERDIR}/"
10BBFILE_PRIORITY_dpdk = "5"
11
12LAYERDEPENDS_dpdk = "core"
13
14# This should only be incremented on significant changes that will
15# cause compatibility issues with other layers
16LAYERVERSION_dpdk = "1"
17LAYERSERIES_COMPAT_dpdk = "kirkstone langdale"
18
19BBFILES_DYNAMIC += " \
20 clang-layer:${LAYERDIR}/dynamic-layers/clang-layer/*/*/*.bb \
21 clang-layer:${LAYERDIR}/dynamic-layers/clang-layer/*/*/*.bbappend \
22 petalinux:${LAYERDIR}/dynamic-layers/petalinux/recipes-*/*/*.bb \
23 petalinux:${LAYERDIR}/dynamic-layers/petalinux/recipes-*/*/*.bbappend \
24"
diff --git a/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0001-configure-skip-toolchain-checks.patch b/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0001-configure-skip-toolchain-checks.patch
deleted file mode 100644
index 32a88b20..00000000
--- a/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0001-configure-skip-toolchain-checks.patch
+++ /dev/null
@@ -1,46 +0,0 @@
1From 53f8a8dffa571de99b50f1a7b757cfd7d8c24d21 Mon Sep 17 00:00:00 2001
2From: Naveen Saini <naveen.kumar.saini@intel.com>
3Date: Mon, 17 Oct 2022 15:44:16 +0800
4Subject: [PATCH 1/4] configure: skip toolchain checks
5
6Current logic fetch full command line along with the tool. i.e
7gcc -m64 -march=skylake -mtune=generic ...
8
9Which throws ERROR: Cannot find tool -m64
10
11So need to re-write for loop, so it can work in cross-compilation
12environment too.
13
14Upstream-Status: Inappropriate
15
16Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
17---
18 configure | 12 ++++++------
19 1 file changed, 6 insertions(+), 6 deletions(-)
20
21diff --git a/configure b/configure
22index 70fdfdf..48d1ea5 100755
23--- a/configure
24+++ b/configure
25@@ -38,12 +38,12 @@ check_toolchain()
26 : ${EMACS=emacs}
27 : ${ARCH_INCLUDES=}
28
29- for TOOL in $PKG_CONFIG $CC $LD $OBJCOPY $CLANG $LLC $M4; do
30- if [ ! $(command -v ${TOOL} 2>/dev/null) ]; then
31- echo "*** ERROR: Cannot find tool ${TOOL}" ;
32- exit 1;
33- fi;
34- done
35+ #for TOOL in $PKG_CONFIG $CC $LD $OBJCOPY $CLANG $LLC $M4; do
36+ # if [ ! $(command -v ${TOOL} 2>/dev/null) ]; then
37+ # echo "*** ERROR: Cannot find tool ${TOOL}" ;
38+ # exit 1;
39+ # fi;
40+ #done
41
42 clang_version=$($CLANG --version | grep -Po '(?<=clang version )[[:digit:]]+')
43 echo "Found clang binary '$CLANG' with version $clang_version (from '$($CLANG --version | head -n 1)')"
44--
452.25.1
46
diff --git a/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0002-Makefile-It-does-not-detect-libbpf-header-from-sysro.patch b/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0002-Makefile-It-does-not-detect-libbpf-header-from-sysro.patch
deleted file mode 100644
index 2e667836..00000000
--- a/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0002-Makefile-It-does-not-detect-libbpf-header-from-sysro.patch
+++ /dev/null
@@ -1,44 +0,0 @@
1From 2840cf0b89497f545fae2eed7ece3f3c5fc558e3 Mon Sep 17 00:00:00 2001
2From: Naveen Saini <naveen.kumar.saini@intel.com>
3Date: Mon, 17 Oct 2022 15:50:34 +0800
4Subject: [PATCH 2/4] Makefile: It does not detect libbpf header from sysroot
5
6So adding sysroot headers path.
7
8Upstream-Status: OE-Specific
9
10Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
11---
12 lib/common.mk | 2 +-
13 lib/libxdp/Makefile | 2 +-
14 2 files changed, 2 insertions(+), 2 deletions(-)
15
16diff --git a/lib/common.mk b/lib/common.mk
17index 56c0406..ab0bad8 100644
18--- a/lib/common.mk
19+++ b/lib/common.mk
20@@ -55,7 +55,7 @@ LIBXDP_SOURCES := $(wildcard $(LIBXDP_DIR)/*.[ch] $(LIBXDP_DIR)/*.in)
21 KERN_USER_H ?= $(wildcard common_kern_user.h)
22
23 CFLAGS += -I$(HEADER_DIR) -I$(LIB_DIR)/util $(ARCH_INCLUDES)
24-BPF_CFLAGS += -I$(HEADER_DIR) $(ARCH_INCLUDES)
25+BPF_CFLAGS += -I$(HEADER_DIR) $(ARCH_INCLUDES) -I${STAGING_INCDIR}/
26
27 BPF_HEADERS := $(wildcard $(HEADER_DIR)/bpf/*.h) $(wildcard $(HEADER_DIR)/xdp/*.h)
28
29diff --git a/lib/libxdp/Makefile b/lib/libxdp/Makefile
30index 358b751..8f459d8 100644
31--- a/lib/libxdp/Makefile
32+++ b/lib/libxdp/Makefile
33@@ -30,7 +30,7 @@ PC_FILE := $(OBJDIR)/libxdp.pc
34 TEMPLATED_SOURCES := xdp-dispatcher.c
35
36 CFLAGS += -I$(HEADER_DIR)
37-BPF_CFLAGS += -I$(HEADER_DIR)
38+BPF_CFLAGS += -I$(HEADER_DIR) -I${STAGING_INCDIR}/
39
40
41 ifndef BUILD_STATIC_ONLY
42--
432.25.1
44
diff --git a/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0003-Makefile-fix-KeyError-failure.patch b/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0003-Makefile-fix-KeyError-failure.patch
deleted file mode 100644
index 41c57f6e..00000000
--- a/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0003-Makefile-fix-KeyError-failure.patch
+++ /dev/null
@@ -1,31 +0,0 @@
1From 157546fbc4f18751c52b3c8788879c05cf253331 Mon Sep 17 00:00:00 2001
2From: Naveen Saini <naveen.kumar.saini@intel.com>
3Date: Mon, 17 Oct 2022 16:02:46 +0800
4Subject: [PATCH 3/4] Makefile: fix KeyError failure
5
6Error:
7Exception: KeyError: 'getpwuid(): uid not found: 11857215'
8
9Upstream-Status: Inappropriate
10
11Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
12---
13 lib/libxdp/Makefile | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/lib/libxdp/Makefile b/lib/libxdp/Makefile
17index 8f459d8..9a340a3 100644
18--- a/lib/libxdp/Makefile
19+++ b/lib/libxdp/Makefile
20@@ -55,7 +55,7 @@ install: all
21 $(Q)install -d -m 0755 $(DESTDIR)$(BPF_OBJECT_DIR)
22 $(Q)install -m 0644 $(LIB_HEADERS) $(DESTDIR)$(HDRDIR)/
23 $(Q)install -m 0644 $(PC_FILE) $(DESTDIR)$(LIBDIR)/pkgconfig/
24- $(Q)cp -fpR $(SHARED_LIBS) $(STATIC_LIBS) $(DESTDIR)$(LIBDIR)
25+ $(Q)cp -fpR --no-preserve=ownership $(SHARED_LIBS) $(STATIC_LIBS) $(DESTDIR)$(LIBDIR)
26 $(Q)install -m 0755 $(XDP_OBJS) $(DESTDIR)$(BPF_OBJECT_DIR)
27 $(if $(MAN_FILES),$(Q)install -m 0755 -d $(DESTDIR)$(MANDIR)/man3)
28 $(if $(MAN_FILES),$(Q)install -m 0644 $(MAN_FILES) $(DESTDIR)$(MANDIR)/man3)
29--
302.25.1
31
diff --git a/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0004-Makefile-fix-libxdp.pc-error.patch b/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0004-Makefile-fix-libxdp.pc-error.patch
deleted file mode 100644
index b1e15e52..00000000
--- a/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools/0004-Makefile-fix-libxdp.pc-error.patch
+++ /dev/null
@@ -1,34 +0,0 @@
1From 46b3ff797135574aa0ee42f633a281d44f48da95 Mon Sep 17 00:00:00 2001
2From: Naveen Saini <naveen.kumar.saini@intel.com>
3Date: Mon, 17 Oct 2022 16:05:15 +0800
4Subject: [PATCH 4/4] Makefile: fix libxdp.pc error
5
6Error:
7do_populate_sysroot: QA Issue: libxdp.pc failed sanity test (tmpdir) in
8path ... xdp-tools/1.2.8-r0/sysroot-destdir/usr/lib/pkgconfig [pkgconfig]
9
10Upstream-Status: Inappropriate
11
12Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
13---
14 lib/libxdp/Makefile | 4 ++--
15 1 file changed, 2 insertions(+), 2 deletions(-)
16
17diff --git a/lib/libxdp/Makefile b/lib/libxdp/Makefile
18index 9a340a3..bc39177 100644
19--- a/lib/libxdp/Makefile
20+++ b/lib/libxdp/Makefile
21@@ -76,8 +76,8 @@ $(OBJDIR)/libxdp.so.$(LIBXDP_VERSION): $(SHARED_OBJS)
22 $^ $(LDFLAGS) $(LDLIBS) -o $@
23
24 $(OBJDIR)/libxdp.pc:
25- $(Q)sed -e "s|@PREFIX@|$(PREFIX)|" \
26- -e "s|@LIBDIR@|$(LIBDIR)|" \
27+ $(Q)sed -e "s|@PREFIX@|$(prefix)|" \
28+ -e "s|@LIBDIR@|$(libdir)|" \
29 -e "s|@VERSION@|$(TOOLS_VERSION)|" \
30 < libxdp.pc.template > $@
31
32--
332.25.1
34
diff --git a/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools_1.2.8.bb b/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools_1.2.8.bb
deleted file mode 100644
index 7cd49a0b..00000000
--- a/meta-dpdk/dynamic-layers/clang-layer/recipes-support/xdp-tools/xdp-tools_1.2.8.bb
+++ /dev/null
@@ -1,37 +0,0 @@
1SUMMARY = "Utilities and example programs for use with XDP"
2HOMEPAGE = "https://github.com/xdp-project/xdp-tools"
3LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & BSD-2-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=9ee53f8d06bbdb4c11b1557ecc4f8cd5 \
5 file://LICENSES/GPL-2.0;md5=994331978b428511800bfbd17eea3001 \
6 file://LICENSES/LGPL-2.1;md5=b370887980db5dd40659b50909238dbd \
7 file://LICENSES/BSD-2-Clause;md5=5d6306d1b08f8df623178dfd81880927"
8
9DEPENDS += " libbpf clang-native zlib elfutils libpcap"
10
11SRC_URI = "git://github.com/xdp-project/xdp-tools.git;branch=v1.2;protocol=https \
12 file://0001-configure-skip-toolchain-checks.patch \
13 file://0002-Makefile-It-does-not-detect-libbpf-header-from-sysro.patch \
14 file://0003-Makefile-fix-KeyError-failure.patch \
15 file://0004-Makefile-fix-libxdp.pc-error.patch \
16 "
17
18SRCREV = "d4ff1f9bcf8b03556b625ab6e16958598482e861"
19
20S = "${WORKDIR}/git"
21
22inherit pkgconfig
23
24EXTRA_OEMAKE += "PREFIX=${D}${prefix} LIBDIR=${D}${libdir} BUILD_STATIC_ONLY=1 PRODUCTION=1"
25
26CFLAGS += "-fPIC"
27
28export STAGING_INCDIR
29
30do_install () {
31 oe_runmake install
32
33 # Remove object files *.o
34 rm -rf ${D}/${libdir}/bpf
35}
36
37RDEPENDS:${PN} += "bash"
diff --git a/meta-dpdk/dynamic-layers/petalinux/recipes-core/images/petalinux-image-everything.bbappend b/meta-dpdk/dynamic-layers/petalinux/recipes-core/images/petalinux-image-everything.bbappend
deleted file mode 100644
index 732b1b45..00000000
--- a/meta-dpdk/dynamic-layers/petalinux/recipes-core/images/petalinux-image-everything.bbappend
+++ /dev/null
@@ -1,2 +0,0 @@
1COMMON_INSTALL:append:versal-net = " dpdk libmcdi"
2
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk.inc b/meta-dpdk/recipes-extended/dpdk/dpdk.inc
deleted file mode 100644
index 9ce9737e..00000000
--- a/meta-dpdk/recipes-extended/dpdk/dpdk.inc
+++ /dev/null
@@ -1,12 +0,0 @@
1DESCRIPTION = "Data Plane Development Kit"
2HOMEPAGE = "http://dpdk.org"
3
4LICENSE = "BSD-3-Clause & LGPL-2.1-only & GPL-2.0-only"
5LIC_FILES_CHKSUM = "file://license/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
6 file://license/lgpl-2.1.txt;md5=4b54a1fd55a448865a0b32d41598759d \
7 file://license/bsd-3-clause.txt;md5=0f00d99239d922ffd13cabef83b33444"
8
9SRC_URI = "git://dpdk.org/dpdk${STABLE};branch=${BRANCH} \
10"
11
12CVE_PRODUCT = "data_plane_development_kit"
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk_22.11.0.bb b/meta-dpdk/recipes-extended/dpdk/dpdk_22.11.0.bb
deleted file mode 100644
index abce8d16..00000000
--- a/meta-dpdk/recipes-extended/dpdk/dpdk_22.11.0.bb
+++ /dev/null
@@ -1,71 +0,0 @@
1include dpdk.inc
2
3SRC_URI = "git://github.com/Xilinx-CNS/cns-dpdk-next-sfc.git;branch=${BRANCH};protocol=https"
4
5BRANCH = "cdx_22.11"
6SRCREV = "92339d519b50996915e7dbb5b8246b34febcba93"
7S = "${WORKDIR}/git"
8
9# kernel module is provide by dpdk-module recipe, so disable here
10EXTRA_OEMESON = " \
11 -Denable_kmods=false \
12 -Dexamples=cdma_demo,cdx_test \
13"
14
15COMPATIBLE_MACHINE = "null"
16COMPATIBLE_MACHINE:versal-net = "${MACHINE}"
17COMPATIBLE_HOST:libc-musl:class-target = "null"
18COMPATIBLE_HOST:linux-gnux32 = "null"
19
20PACKAGECONFIG ??= " "
21PACKAGECONFIG[afxdp] = ",,libbpf xdp-tools"
22PACKAGECONFIG[libvirt] = ",,libvirt"
23
24RDEPENDS:${PN} += "pciutils python3-core"
25RDEPENDS:${PN}-examples += "bash"
26DEPENDS = "numactl python3-pyelftools-native"
27
28inherit meson pkgconfig
29
30INSTALL_PATH = "${prefix}/share/dpdk"
31
32do_write_config:append(){
33 sed -i "/\[properties\]/a platform = \'cdx\'" ${WORKDIR}/meson.cross
34}
35
36do_install:append(){
37 # remove source files
38 rm -rf ${D}/${INSTALL_PATH}/examples/*
39
40 # Install examples
41 install -m 0755 -d ${D}/${INSTALL_PATH}/examples/
42 for dirname in ${B}/examples/dpdk-*
43 do
44 if [ ! -d ${dirname} ] && [ -x ${dirname} ]; then
45 install -m 0755 ${dirname} ${D}/${INSTALL_PATH}/examples/
46 fi
47 done
48
49}
50
51PACKAGES =+ "${PN}-examples ${PN}-tools"
52
53FILES:${PN} += " ${bindir}/dpdk-testpmd \
54 ${bindir}/dpdk-proc-info \
55 ${libdir}/*.so* \
56 ${libdir}/dpdk/pmds-22.0/*.so* \
57 "
58FILES:${PN}-examples = " \
59 ${INSTALL_PATH}/examples/* \
60 "
61
62FILES:${PN}-tools = " \
63 ${bindir}/dpdk-pdump \
64 ${bindir}/dpdk-test \
65 ${bindir}/dpdk-test-* \
66 ${bindir}/dpdk-*.py \
67 "
68
69CVE_PRODUCT = "data_plane_development_kit"
70
71INSANE_SKIP:${PN} = "dev-so"
diff --git a/meta-dpdk/recipes-extended/dpdk/libmcdi_0.1.0.bb b/meta-dpdk/recipes-extended/dpdk/libmcdi_0.1.0.bb
deleted file mode 100644
index 0bc9a849..00000000
--- a/meta-dpdk/recipes-extended/dpdk/libmcdi_0.1.0.bb
+++ /dev/null
@@ -1,33 +0,0 @@
1DESCRIPTION = "Management Controller Driver Interface library"
2
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://COPYING.MIT;md5=838c366f69b72c5df05c96dff79b35f2"
5
6SRC_URI = "git://github.com/Xilinx-CNS/mcdi-lib.git;branch=${BRANCH};protocol=https"
7BRANCH = "master"
8SRCREV = "db448189e5fcb38b4750faf6afe243d7998863bc"
9
10S = "${WORKDIR}/git"
11
12COMPATIBLE_MACHINE = "^$"
13COMPATIBLE_MACHINE:versal-net = "${MACHINE}"
14
15MCDI_PATH_EXAMPLES = "${datadir}/${BPN}/examples"
16
17do_compile() {
18 oe_runmake all CC="${CC}" CROSS_COMPILE="${TARGET_PREFIX}"
19}
20
21do_install() {
22 oe_runmake install prefix="${prefix}" DESTDIR="${D}"
23
24 install -d ${D}/${MCDI_PATH_EXAMPLES}
25 install -m 0755 ${B}/example/mcdi_example_app ${D}/${MCDI_PATH_EXAMPLES}
26 install -m 0755 ${B}/init/init_app ${D}/${MCDI_PATH_EXAMPLES}
27}
28
29PACKAGES =+ "${PN}-examples"
30
31FILES:${PN}-examples = " \
32 ${MCDI_PATH_EXAMPLES}/* \
33 "
diff --git a/meta-xilinx-bsp/conf/layer.conf b/meta-xilinx-bsp/conf/layer.conf
index 56a5bc29..051ca361 100644
--- a/meta-xilinx-bsp/conf/layer.conf
+++ b/meta-xilinx-bsp/conf/layer.conf
@@ -17,5 +17,3 @@ BBFILE_PRIORITY_xilinx-bsp = "5"
17LAYERDEPENDS_xilinx-bsp = "xilinx" 17LAYERDEPENDS_xilinx-bsp = "xilinx"
18 18
19LAYERSERIES_COMPAT_xilinx-bsp = "langdale" 19LAYERSERIES_COMPAT_xilinx-bsp = "langdale"
20
21PREFERRED_VERSION_kc705-bitstream ?= "${XILINX_RELEASE_VERSION}"
diff --git a/meta-xilinx-bsp/conf/machine/vck5000-versal.conf b/meta-xilinx-bsp/conf/machine/vck5000-versal.conf
deleted file mode 100644
index 9396bd97..00000000
--- a/meta-xilinx-bsp/conf/machine/vck5000-versal.conf
+++ /dev/null
@@ -1,45 +0,0 @@
1#@TYPE: Machine
2#@NAME: vck500-versal
3#@DESCRIPTION: Machine configuration for the VCK5000 evaluation board.
4
5#### Preamble
6MACHINEOVERRIDES =. "${@['', 'vck5000-versal:']['vck5000-versal' !='${MACHINE}']}"
7#### Regular settings follow
8
9# Variables that changes based on hw design or board specific requirement must be
10# defined before calling the required inclusion file else pre-expansion value
11# defined in versal-generic.conf will be set.
12
13# Yocto device-tree variables
14YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "versal_cips_0_pspmc_0_psv_sbsauart_0"
15YAML_DT_BOARD_FLAGS ?= "{BOARD template}"
16
17# Yocto arm-trusted-firmware(TF-A) variables
18ATF_CONSOLE ?= "pl011"
19TFA_BL33_LOAD ?= "0x8000000"
20
21# Yocto PLM variables
22YAML_SERIAL_CONSOLE_STDIN:pn-plm-firmware ?= "versal_cips_0_pspmc_0_psv_sbsauart_0"
23YAML_SERIAL_CONSOLE_STDOUT:pn-plm-firmware ?= "versal_cips_0_pspmc_0_psv_sbsauart_0"
24
25# Yocto KERNEL Variables
26UBOOT_ENTRYPOINT ?= "0x200000"
27UBOOT_LOADADDRESS ?= "0x200000"
28
29# vck5000-versal Serial Console
30SERIAL_CONSOLES ?= "115200;ttyAMA0"
31YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200"
32
33# Required generic machine inclusion
34# VCK5000 board uses Versal AI Core device hence use soc variant based generic
35# machine inclusion
36require conf/machine/versal-ai-core-generic.conf
37
38# This machine conf file uses vck5000-versal xsa as reference input.
39# User can override with vck5000 custom xsa using HDF_BASE and HDF_PATH variables
40# from local.conf.
41HDF_MACHINE = "vck5000-versal"
42
43#### No additional settings should be after the Postamble
44#### Postamble
45PACKAGE_EXTRA_ARCHS:append = "${@['', ' vck5000_versal']['vck5000-versal' != '${MACHINE}']}"
diff --git a/meta-xilinx-bsp/conf/machine/vhk158-versal.conf b/meta-xilinx-bsp/conf/machine/vhk158-versal.conf
deleted file mode 100644
index b09bde28..00000000
--- a/meta-xilinx-bsp/conf/machine/vhk158-versal.conf
+++ /dev/null
@@ -1,52 +0,0 @@
1#@TYPE: Machine
2#@NAME: vhk158-versal
3#@DESCRIPTION: Machine configuration for the VHK158 evaluation board.
4
5#### Preamble
6MACHINEOVERRIDES =. "${@['', 'vhk158-versal:']['vhk158-versal' !='${MACHINE}']}"
7#### Regular settings follow
8
9# Variables that changes based on hw design or board specific requirement must be
10# defined before calling the required inclusion file else pre-expansion value
11# defined in versal-generic.conf will be set.
12
13# Yocto device-tree variables
14YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "versal_cips_0_pspmc_0_psv_sbsauart_0"
15YAML_DT_BOARD_FLAGS ?= "{BOARD versal-vhk158-reva}"
16
17# Yocto arm-trusted-firmware(TF-A) variables
18ATF_CONSOLE ?= "pl011"
19TFA_BL33_LOAD ?= "0x8000000"
20
21# Yocto PLM variables
22YAML_SERIAL_CONSOLE_STDIN:pn-plm-firmware ?= "versal_cips_0_pspmc_0_psv_sbsauart_0"
23YAML_SERIAL_CONSOLE_STDOUT:pn-plm-firmware ?= "versal_cips_0_pspmc_0_psv_sbsauart_0"
24
25# Yocto KERNEL Variables
26UBOOT_ENTRYPOINT ?= "0x200000"
27UBOOT_LOADADDRESS ?= "0x200000"
28
29# vhk158-versal Serial Console
30SERIAL_CONSOLES ?= "115200;ttyAMA0"
31YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200"
32
33# Required generic machine inclusion
34# VHK158 board uses Versal HBM device hence use soc variant based generic
35# machine inclusion
36require conf/machine/versal-hbm-generic.conf
37
38# This machine conf file uses vhk158-versal xsa as reference input.
39# User can override with vhk158 custom xsa using HDF_BASE and HDF_PATH variables
40# from local.conf.
41HDF_MACHINE = "vhk158-versal"
42
43# VHK158 has 32GB memory only but default versal-generic has QB_MEM set to 8G,
44# Since versal-vhk158-reva.dts has 32GB set, we need set same in QB_MEM
45QB_MEM = "-m 32G"
46
47QEMU_HW_DTB_PS = "${QEMU_HW_DTB_PATH}/board-versal-ps-vhk158.dtb"
48QEMU_HW_DTB_PMC = "${QEMU_HW_DTB_PATH}/board-versal-pmc-virt.dtb"
49
50#### No additional settings should be after the Postamble
51#### Postamble
52PACKAGE_EXTRA_ARCHS:append = "${@['', ' vhk158_versal']['vhk158-versal' != '${MACHINE}']}"
diff --git a/meta-xilinx-bsp/conf/machine/zcu1275-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu1275-zynqmp.conf
new file mode 100644
index 00000000..71c94038
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/zcu1275-zynqmp.conf
@@ -0,0 +1,50 @@
1#@TYPE: Machine
2#@NAME: zcu1275-zynqmp
3#@DESCRIPTION: Machine configuration for the ZCU1275 evaluation board.
4
5#### Preamble
6MACHINEOVERRIDES =. "${@['', 'zcu1275-zynqmp:']['zcu1275-zynqmp' !='${MACHINE}']}"
7#### Regular settings follow
8
9# Yocto device-tree variables
10YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "psu_uart_0"
11YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "PSU_DDR_0"
12YAML_DT_BOARD_FLAGS ?= "{BOARD zcu1275-revb}"
13
14# Yocto arm-trusted-firmware(TF-A) variables
15ATF_CONSOLE ?= "cadence"
16TFA_BL33_LOAD ?= "0x8000000"
17
18# Yocto PMUFW variables
19YAML_SERIAL_CONSOLE_STDIN:pn-pmu-firmware ?= "psu_uart_0"
20YAML_SERIAL_CONSOLE_STDOUT:pn-pmu-firmware ?= "psu_uart_0"
21
22# Yocto FSBL variables
23YAML_SERIAL_CONSOLE_STDIN:pn-fsbl-firmware ?= "psu_uart_0"
24YAML_SERIAL_CONSOLE_STDOUT:pn-fsbl-firmware ?= "psu_uart_0"
25
26# Yocto KERNEL Variables
27UBOOT_ENTRYPOINT ?= "0x200000"
28UBOOT_LOADADDRESS ?= "0x200000"
29
30# zcu1275-zynqmp Serial Console
31SERIAL_CONSOLES ?= "115200;ttyPS0"
32YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200"
33
34# Required generic machine inclusion
35# ZCU1275 board uses ZynqMP DR device hence use soc variant based generic machine
36# inclusion
37require conf/machine/zynqmp-dr-generic.conf
38
39# This eval board machine conf file uses zcu1275-zynqmp xsa as reference input.
40# User can override with zcu1275 custom xsa using HDF_BASE and HDF_PATH variables
41# from local.conf.
42HDF_MACHINE = "zcu1275-zynqmp"
43
44# KERNEL_DEVICETREE is disabled as we use board device tree from DTG to match
45# the xsa. User can enable explicitly if required from local.conf.
46# KERNEL_DEVICETREE = "xilinx/zynqmp-zcu1275-revB.dtb"
47
48#### No additional settings should be after the Postamble
49#### Postamble
50PACKAGE_EXTRA_ARCHS:append = "${@['', 'zcu1275_zynqmp']['zcu1275-zynqmp' != '${MACHINE}']}"
diff --git a/meta-xilinx-bsp/conf/machine/zcu670-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu1285-zynqmp.conf
index c726e9f5..812a283f 100644
--- a/meta-xilinx-bsp/conf/machine/zcu670-zynqmp.conf
+++ b/meta-xilinx-bsp/conf/machine/zcu1285-zynqmp.conf
@@ -1,9 +1,9 @@
1#@TYPE: Machine 1#@TYPE: Machine
2#@NAME: zcu670-zynqmp 2#@NAME: zcu1285-zynqmp
3#@DESCRIPTION: Machine configuration for the ZCU670 evaluation board. 3#@DESCRIPTION: Machine configuration for the ZCU1285 evaluation board.
4 4
5#### Preamble 5#### Preamble
6MACHINEOVERRIDES =. "${@['', 'zcu670-zynqmp:']['zcu670-zynqmp' !='${MACHINE}']}" 6MACHINEOVERRIDES =. "${@['', 'zcu1285-zynqmp:']['zcu1285-zynqmp' !='${MACHINE}']}"
7#### Regular settings follow 7#### Regular settings follow
8 8
9# Variables that changes based on hw design or board specific requirement must be 9# Variables that changes based on hw design or board specific requirement must be
@@ -13,7 +13,7 @@ MACHINEOVERRIDES =. "${@['', 'zcu670-zynqmp:']['zcu670-zynqmp' !='${MACHINE}']}"
13# Yocto device-tree variables 13# Yocto device-tree variables
14YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "psu_uart_0" 14YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "psu_uart_0"
15YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "PSU_DDR_0" 15YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "PSU_DDR_0"
16YAML_DT_BOARD_FLAGS ?= "{BOARD zcu670-revb}" 16YAML_DT_BOARD_FLAGS ?= "{BOARD zcu1285-reva}"
17 17
18# Yocto arm-trusted-firmware(TF-A) variables 18# Yocto arm-trusted-firmware(TF-A) variables
19ATF_CONSOLE ?= "cadence" 19ATF_CONSOLE ?= "cadence"
@@ -31,20 +31,24 @@ YAML_SERIAL_CONSOLE_STDOUT:pn-fsbl-firmware ?= "psu_uart_0"
31UBOOT_ENTRYPOINT ?= "0x200000" 31UBOOT_ENTRYPOINT ?= "0x200000"
32UBOOT_LOADADDRESS ?= "0x200000" 32UBOOT_LOADADDRESS ?= "0x200000"
33 33
34# zcu670-zynqmp Serial Console 34# zcu1285-zynqmp Serial Console
35SERIAL_CONSOLES ?= "115200;ttyPS0" 35SERIAL_CONSOLES ?= "115200;ttyPS0"
36YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" 36YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200"
37 37
38# Required generic machine inclusion 38# Required generic machine inclusion
39# ZCU670 board uses ZynqMP DR device hence use soc variant based generic machine 39# ZCU1285 board uses ZynqMP DR device hence use soc variant based generic machine
40# inclusion 40# inclusion
41require conf/machine/zynqmp-dr-generic.conf 41require conf/machine/zynqmp-dr-generic.conf
42 42
43# This eval board machine conf file uses zcu670-zynqmp xsa as reference input. 43# This eval board machine conf file uses zcu1285-zynqmp xsa as reference input.
44# User can override with zcu670 custom xsa using HDF_BASE and HDF_PATH variables 44# User can override with zcu1285 custom xsa using HDF_BASE and HDF_PATH variables
45# from local.conf. 45# from local.conf.
46HDF_MACHINE = "zcu670-zynqmp" 46HDF_MACHINE = "zcu1285-zynqmp"
47
48# KERNEL_DEVICETREE is disabled as we use board device tree from DTG to match
49# the xsa. User can enable explicitly if required from local.conf.
50# KERNEL_DEVICETREE = "xilinx/zynqmp-zcu1285-revA.dtb"
47 51
48#### No additional settings should be after the Postamble 52#### No additional settings should be after the Postamble
49#### Postamble 53#### Postamble
50PACKAGE_EXTRA_ARCHS:append = "${@['', ' zcu670_zynqmp']['zcu670-zynqmp' != '${MACHINE}']}" 54PACKAGE_EXTRA_ARCHS:append = "${@['', 'zcu1285_zynqmp']['zcu1285-zynqmp' != '${MACHINE}']}"
diff --git a/meta-xilinx-bsp/recipes-bsp/reference-design/kc705-bitstream_2022.2.bb b/meta-xilinx-bsp/recipes-bsp/reference-design/kc705-bitstream_2022.2.bb
deleted file mode 100644
index e512777c..00000000
--- a/meta-xilinx-bsp/recipes-bsp/reference-design/kc705-bitstream_2022.2.bb
+++ /dev/null
@@ -1,48 +0,0 @@
1SUMMARY = "KC705 Pre-built Bitstream"
2DESCRIPTION = "A Pre-built bitstream for the KC705, which is capable of booting a Linux system."
3HOMEPAGE = "http://www.xilinx.com"
4SECTION = "bsp"
5
6# The BSP package does not include any license information.
7LICENSE = "Proprietary"
8LICENSE_FLAGS = "xilinx"
9LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Proprietary;md5=0557f9d92cf58f2ccdd50f62f8ac0b28"
10
11COMPATIBLE_MACHINE = "kc705-microblazeel"
12
13inherit deploy
14inherit xilinx-fetch-restricted
15
16BSP_NAME = "xilinx-kc705"
17BSP_FILE = "${BSP_NAME}-v${PV}-final.bsp"
18SRC_URI = "https://www.xilinx.com/member/forms/download/xef.html?filename=${BSP_FILE};downloadfilename=${BSP_FILE}"
19SRC_URI[md5sum] = "5c0365a8a26cc27b4419aa1d7dd82351"
20SRC_URI[sha256sum] = "a909a91a37a9925ee2f972ccb10f986a26ff9785c1a71a483545a192783bf773"
21
22PROVIDES = "virtual/bitstream"
23
24FILES:${PN} += "/boot/download.bit"
25
26INHIBIT_DEFAULT_DEPS = "1"
27PACKAGE_ARCH = "${MACHINE_ARCH}"
28
29# deps needed to extract content from the .bsp file
30DEPENDS += "tar-native gzip-native"
31
32do_compile() {
33 # Extract the bitstream into workdir
34 tar -xf ${WORKDIR}/${BSP_FILE} ${BSP_NAME}-axi-full-${PV}/pre-built/linux/images/download.bit -C ${S}
35 # move the bit file to ${S}/ as it is in a subdir in the tar file
36 for i in $(find -type f -name download.bit); do mv $i ${S}; done
37}
38
39do_install() {
40 install -D ${S}/download.bit ${D}/boot/download.bit
41}
42
43do_deploy () {
44 install -D ${S}/download.bit ${DEPLOYDIR}/download.bit
45}
46
47addtask deploy before do_build after do_install
48
diff --git a/meta-xilinx-contrib/recipes-bsp/bitstream/bitstream-extraction_%.bbappend b/meta-xilinx-contrib/recipes-bsp/bitstream/bitstream-extraction_%.bbappend
new file mode 100644
index 00000000..4653c93a
--- /dev/null
+++ b/meta-xilinx-contrib/recipes-bsp/bitstream/bitstream-extraction_%.bbappend
@@ -0,0 +1,2 @@
1COMPATIBLE_MACHINE:zybo-linux-bd-zynq7 = "^$"
2
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch
new file mode 100644
index 00000000..660bc218
--- /dev/null
+++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch
@@ -0,0 +1,305 @@
1From 21cc8144efdaa3cd8dbd7279f87b14fa3432fae4 Mon Sep 17 00:00:00 2001
2From: Jason Wu <jason.wu.misc@gmail.com>
3Date: Sun, 10 Apr 2016 13:14:13 +1000
4Subject: [PATCH 1/3] drm: xilinx: Add encoder for Digilent boards
5
6Add the dglnt_encoder driver that enables DRM support for the VGA and
7HDMI output ports found on many Digilent boards.
8
9Upstream-Status: Pending
10
11Signed-off-by: Sam Bobrowicz <sbobrowicz@digilentinc.com>
12Signed-off-by: Jason Wu <jason.wu.misc@gmail.com>
13---
14 .../bindings/drm/xilinx/dglnt_encoder.txt | 23 +++
15 drivers/gpu/drm/xilinx/Kconfig | 6 +
16 drivers/gpu/drm/xilinx/Makefile | 1 +
17 drivers/gpu/drm/xilinx/dglnt_encoder.c | 217 +++++++++++++++++++++
18 4 files changed, 247 insertions(+)
19 create mode 100644 Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt
20 create mode 100644 drivers/gpu/drm/xilinx/dglnt_encoder.c
21
22diff --git a/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt b/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt
23new file mode 100644
24index 0000000..242b24e
25--- /dev/null
26+++ b/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt
27@@ -0,0 +1,23 @@
28+Device-Tree bindings for Digilent DRM Encoder Slave
29+
30+This driver provides support for VGA and HDMI outputs on Digilent FPGA boards.
31+The VGA or HDMI port must be connected to a Xilinx display pipeline via an
32+axi2vid IP core.
33+
34+Required properties:
35+ - compatible: Should be "digilent,drm-encoder".
36+
37+Optional properties:
38+ - dglnt,edid-i2c: The I2C device connected to the DDC bus on the video
39+ connector. This is used to obtain the supported resolutions
40+ of an attached monitor. If not defined, then a default
41+ set of resolutions is used and the display will initialize
42+ to 720p. Note most VGA connectors on Digilent boards do
43+ not have the DDC bus routed out.
44+
45+Example:
46+
47+ encoder_0: digilent_encoder {
48+ compatible = "digilent,drm-encoder";
49+ dglnt,edid-i2c = <&i2c1>;
50+ };
51diff --git a/drivers/gpu/drm/xilinx/Kconfig b/drivers/gpu/drm/xilinx/Kconfig
52index 57e18a9..d9ecff2 100644
53--- a/drivers/gpu/drm/xilinx/Kconfig
54+++ b/drivers/gpu/drm/xilinx/Kconfig
55@@ -33,6 +33,12 @@ config DRM_XILINX_DP_SUB
56 help
57 DRM driver for Xilinx Display Port Subsystem.
58
59+config DRM_DIGILENT_ENCODER
60+ tristate "Digilent VGA/HDMI DRM Encoder Driver"
61+ depends on DRM_XILINX
62+ help
63+ DRM slave encoder for Video-out on Digilent boards.
64+
65 config DRM_XILINX_DP_SUB_DEBUG_FS
66 bool "Xilinx DRM DPSUB debugfs"
67 depends on DEBUG_FS && DRM_XILINX_DP_SUB
68diff --git a/drivers/gpu/drm/xilinx/Makefile b/drivers/gpu/drm/xilinx/Makefile
69index 19bc154..c2717e40 100644
70--- a/drivers/gpu/drm/xilinx/Makefile
71+++ b/drivers/gpu/drm/xilinx/Makefile
72@@ -7,6 +7,7 @@ xilinx_drm-y := xilinx_drm_crtc.o xilinx_drm_connector.o xilinx_drm_drv.o \
73 xilinx_drm_plane.o
74 xilinx_drm-y += xilinx_cresample.o xilinx_osd.o xilinx_rgb2yuv.o xilinx_vtc.o
75
76+obj-$(CONFIG_DRM_DIGILENT_ENCODER) += dglnt_encoder.o
77 obj-$(CONFIG_DRM_XILINX) += xilinx_drm.o
78 obj-$(CONFIG_DRM_XILINX_DP) += xilinx_drm_dp.o
79 obj-$(CONFIG_DRM_XILINX_DP_SUB) += xilinx_drm_dp_sub.o
80diff --git a/drivers/gpu/drm/xilinx/dglnt_encoder.c b/drivers/gpu/drm/xilinx/dglnt_encoder.c
81new file mode 100644
82index 0000000..cb9fc7d
83--- /dev/null
84+++ b/drivers/gpu/drm/xilinx/dglnt_encoder.c
85@@ -0,0 +1,217 @@
86+/*
87+ * dglnt_encoder.c - DRM slave encoder for Video-out on Digilent boards
88+ *
89+ * Copyright (C) 2015 Digilent
90+ * Author: Sam Bobrowicz <sbobrowicz@digilentinc.com>
91+ *
92+ * Based on udl_encoder.c and udl_connector.c, Copyright (C) 2012 Red Hat.
93+ * Also based on xilinx_drm_dp.c, Copyright (C) 2014 Xilinx, Inc.
94+ *
95+ * This software is licensed under the terms of the GNU General Public
96+ * License version 2, as published by the Free Software Foundation, and
97+ * may be copied, distributed, and modified under those terms.
98+ *
99+ * This program is distributed in the hope that it will be useful,
100+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
101+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
102+ * GNU General Public License for more details.
103+ */
104+
105+#include <drm/drmP.h>
106+#include <drm/drm_edid.h>
107+#include <drm/drm_encoder_slave.h>
108+
109+#include <linux/device.h>
110+#include <linux/module.h>
111+#include <linux/err.h>
112+#include <linux/i2c.h>
113+#include <linux/of.h>
114+#include <linux/of_platform.h>
115+#include <linux/platform_device.h>
116+
117+#define DGLNT_ENC_MAX_FREQ 150000
118+#define DGLNT_ENC_MAX_H 1920
119+#define DGLNT_ENC_MAX_V 1080
120+#define DGLNT_ENC_PREF_H 1280
121+#define DGLNT_ENC_PREF_V 720
122+
123+struct dglnt_encoder {
124+ struct drm_encoder *encoder;
125+ struct i2c_adapter *i2c_bus;
126+ bool i2c_present;
127+};
128+
129+static inline struct dglnt_encoder *to_dglnt_encoder(
130+ struct drm_encoder *encoder)
131+{
132+ return to_encoder_slave(encoder)->slave_priv;
133+}
134+
135+static bool dglnt_mode_fixup(struct drm_encoder *encoder,
136+ const struct drm_display_mode *mode,
137+ struct drm_display_mode *adjusted_mode)
138+{
139+ return true;
140+}
141+
142+static void dglnt_encoder_mode_set(struct drm_encoder *encoder,
143+ struct drm_display_mode *mode,
144+ struct drm_display_mode *adjusted_mode)
145+{
146+}
147+
148+static void
149+dglnt_encoder_dpms(struct drm_encoder *encoder, int mode)
150+{
151+}
152+
153+static void dglnt_encoder_save(struct drm_encoder *encoder)
154+{
155+}
156+
157+static void dglnt_encoder_restore(struct drm_encoder *encoder)
158+{
159+}
160+
161+static int dglnt_encoder_mode_valid(struct drm_encoder *encoder,
162+ struct drm_display_mode *mode)
163+{
164+ if (mode &&
165+ !(mode->flags & ((DRM_MODE_FLAG_INTERLACE |
166+ DRM_MODE_FLAG_DBLCLK) | DRM_MODE_FLAG_3D_MASK)) &&
167+ (mode->clock <= DGLNT_ENC_MAX_FREQ) &&
168+ (mode->hdisplay <= DGLNT_ENC_MAX_H) &&
169+ (mode->vdisplay <= DGLNT_ENC_MAX_V))
170+ return MODE_OK;
171+ return MODE_BAD;
172+}
173+
174+static int dglnt_encoder_get_modes(struct drm_encoder *encoder,
175+ struct drm_connector *connector)
176+{
177+ struct dglnt_encoder *dglnt = to_dglnt_encoder(encoder);
178+ struct edid *edid;
179+ int num_modes = 0;
180+
181+ if (dglnt->i2c_present) {
182+ edid = drm_get_edid(connector, dglnt->i2c_bus);
183+ drm_connector_update_edid_property(connector, edid);
184+ if (edid) {
185+ num_modes = drm_add_edid_modes(connector, edid);
186+ kfree(edid);
187+ }
188+ } else {
189+ num_modes = drm_add_modes_noedid(connector, DGLNT_ENC_MAX_H,
190+ DGLNT_ENC_MAX_V);
191+ drm_set_preferred_mode(connector, DGLNT_ENC_PREF_H,
192+ DGLNT_ENC_PREF_V);
193+ }
194+ return num_modes;
195+}
196+
197+static enum drm_connector_status dglnt_encoder_detect(
198+ struct drm_encoder *encoder,
199+ struct drm_connector *connector)
200+{
201+ struct dglnt_encoder *dglnt = to_dglnt_encoder(encoder);
202+
203+ if (dglnt->i2c_present) {
204+ if (drm_probe_ddc(dglnt->i2c_bus))
205+ return connector_status_connected;
206+ return connector_status_disconnected;
207+ } else
208+ return connector_status_unknown;
209+}
210+
211+static struct drm_encoder_slave_funcs dglnt_encoder_slave_funcs = {
212+ .dpms = dglnt_encoder_dpms,
213+ .save = dglnt_encoder_save,
214+ .restore = dglnt_encoder_restore,
215+ .mode_fixup = dglnt_mode_fixup,
216+ .mode_valid = dglnt_encoder_mode_valid,
217+ .mode_set = dglnt_encoder_mode_set,
218+ .detect = dglnt_encoder_detect,
219+ .get_modes = dglnt_encoder_get_modes,
220+};
221+
222+static int dglnt_encoder_encoder_init(struct platform_device *pdev,
223+ struct drm_device *dev,
224+ struct drm_encoder_slave *encoder)
225+{
226+ struct dglnt_encoder *dglnt = platform_get_drvdata(pdev);
227+ struct device_node *sub_node;
228+
229+ encoder->slave_priv = dglnt;
230+ encoder->slave_funcs = &dglnt_encoder_slave_funcs;
231+
232+ dglnt->encoder = &encoder->base;
233+
234+ /* get i2c adapter for edid */
235+ dglnt->i2c_present = false;
236+ sub_node = of_parse_phandle(pdev->dev.of_node, "dglnt,edid-i2c", 0);
237+ if (sub_node) {
238+ dglnt->i2c_bus = of_find_i2c_adapter_by_node(sub_node);
239+ if (!dglnt->i2c_bus)
240+ DRM_INFO("failed to get the edid i2c adapter, using default modes\n");
241+ else
242+ dglnt->i2c_present = true;
243+ of_node_put(sub_node);
244+ }
245+
246+ return 0;
247+}
248+
249+static int dglnt_encoder_probe(struct platform_device *pdev)
250+{
251+ struct dglnt_encoder *dglnt;
252+
253+ dglnt = devm_kzalloc(&pdev->dev, sizeof(*dglnt), GFP_KERNEL);
254+ if (!dglnt)
255+ return -ENOMEM;
256+
257+ platform_set_drvdata(pdev, dglnt);
258+
259+ return 0;
260+}
261+
262+static int dglnt_encoder_remove(struct platform_device *pdev)
263+{
264+ return 0;
265+}
266+
267+static const struct of_device_id dglnt_encoder_of_match[] = {
268+ { .compatible = "digilent,drm-encoder", },
269+ { /* end of table */ },
270+};
271+MODULE_DEVICE_TABLE(of, dglnt_encoder_of_match);
272+
273+static struct drm_platform_encoder_driver dglnt_encoder_driver = {
274+ .platform_driver = {
275+ .probe = dglnt_encoder_probe,
276+ .remove = dglnt_encoder_remove,
277+ .driver = {
278+ .owner = THIS_MODULE,
279+ .name = "dglnt-drm-enc",
280+ .of_match_table = dglnt_encoder_of_match,
281+ },
282+ },
283+
284+ .encoder_init = dglnt_encoder_encoder_init,
285+};
286+
287+static int __init dglnt_encoder_init(void)
288+{
289+ return platform_driver_register(&dglnt_encoder_driver.platform_driver);
290+}
291+
292+static void __exit dglnt_encoder_exit(void)
293+{
294+ platform_driver_unregister(&dglnt_encoder_driver.platform_driver);
295+}
296+
297+module_init(dglnt_encoder_init);
298+module_exit(dglnt_encoder_exit);
299+
300+MODULE_AUTHOR("Digilent, Inc.");
301+MODULE_DESCRIPTION("DRM slave encoder for Video-out on Digilent boards");
302+MODULE_LICENSE("GPL v2");
303--
3042.7.4
305
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch
new file mode 100644
index 00000000..9b6229db
--- /dev/null
+++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch
@@ -0,0 +1,607 @@
1From 217e3b6f4393926b8dcad841381527ef3fc808c2 Mon Sep 17 00:00:00 2001
2From: Jason Wu <jason.wu.misc@gmail.com>
3Date: Sun, 10 Apr 2016 13:16:06 +1000
4Subject: [PATCH 2/3] clk: Add driver for axi_dynclk IP Core
5
6Add support for the axi_dynclk IP Core available from Digilent. This IP
7core dynamically configures the clock resources inside a Xilinx FPGA to
8generate a clock with a software programmable frequency.
9
10Upstream-Status: Pending
11
12Signed-off-by: Sam Bobrowicz <sbobrowicz@digilentinc.com>
13Signed-off-by: Jason Wu <jason.wu.misc@gmail.com>
14---
15 drivers/clk/Kconfig | 8 +
16 drivers/clk/Makefile | 1 +
17 drivers/clk/clk-dglnt-dynclk.c | 547 +++++++++++++++++++++++++++++++++++++++++
18 3 files changed, 556 insertions(+)
19 create mode 100644 drivers/clk/clk-dglnt-dynclk.c
20
21diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
22index dccb111100..7fe65a702b 100644
23--- a/drivers/clk/Kconfig
24+++ b/drivers/clk/Kconfig
25@@ -148,6 +148,14 @@ config CLK_QORIQ
26 This adds the clock driver support for Freescale QorIQ platforms
27 using common clock framework.
28
29+config COMMON_CLK_DGLNT_DYNCLK
30+ tristate "Digilent axi_dynclk Driver"
31+ depends on ARCH_ZYNQ || MICROBLAZE
32+ help
33+ ---help---
34+ Support for the Digilent AXI Dynamic Clock core for Xilinx
35+ FPGAs.
36+
37 config COMMON_CLK_XGENE
38 bool "Clock driver for APM XGene SoC"
39 default y
40diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
41index 0760449dde..45ce97d053 100644
42--- a/drivers/clk/Makefile
43+++ b/drivers/clk/Makefile
44@@ -24,6 +24,7 @@ obj-$(CONFIG_COMMON_CLK_CDCE706) += clk-cdce706.o
45 obj-$(CONFIG_COMMON_CLK_CDCE925) += clk-cdce925.o
46 obj-$(CONFIG_ARCH_CLPS711X) += clk-clps711x.o
47 obj-$(CONFIG_COMMON_CLK_CS2000_CP) += clk-cs2000-cp.o
48+obj-$(CONFIG_COMMON_CLK_DGLNT_DYNCLK) += clk-dglnt-dynclk.o
49 obj-$(CONFIG_ARCH_EFM32) += clk-efm32gg.o
50 obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o
51 obj-$(CONFIG_COMMON_CLK_MAX77686) += clk-max77686.o
52diff --git a/drivers/clk/clk-dglnt-dynclk.c b/drivers/clk/clk-dglnt-dynclk.c
53new file mode 100644
54index 0000000000..496ad5fc90
55--- /dev/null
56+++ b/drivers/clk/clk-dglnt-dynclk.c
57@@ -0,0 +1,547 @@
58+/*
59+ * clk-dglnt-dynclk.c - Digilent AXI Dynamic Clock (axi_dynclk) Driver
60+ *
61+ * Copyright (C) 2015 Digilent
62+ * Author: Sam Bobrowicz <sbobrowicz@digilentinc.com>
63+ *
64+ * Reused code from clk-axi-clkgen.c, Copyright (C) 2012-2013 Analog Devices Inc.
65+ *
66+ * This software is licensed under the terms of the GNU General Public
67+ * License version 2, as published by the Free Software Foundation, and
68+ * may be copied, distributed, and modified under those terms.
69+ *
70+ * This program is distributed in the hope that it will be useful,
71+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
72+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
73+ * GNU General Public License for more details.
74+ */
75+
76+#include <linux/platform_device.h>
77+#include <linux/clk-provider.h>
78+#include <linux/clk.h>
79+#include <linux/slab.h>
80+#include <linux/io.h>
81+#include <linux/of.h>
82+#include <linux/module.h>
83+#include <linux/err.h>
84+#include <linux/kernel.h>
85+
86+#define CLK_BIT_WEDGE 13
87+#define CLK_BIT_NOCOUNT 12
88+
89+/* This value is used to signal an error */
90+#define ERR_CLKCOUNTCALC 0xFFFFFFFF
91+#define ERR_CLKDIVIDER (1 << CLK_BIT_WEDGE | 1 << CLK_BIT_NOCOUNT)
92+
93+#define DYNCLK_DIV_1_REGMASK 0x1041
94+/* 25 MHz (125 KHz / 5) */
95+#define DYNCLK_DEFAULT_FREQ 125000
96+
97+#define MMCM_FREQ_VCOMIN 600000
98+#define MMCM_FREQ_VCOMAX 1200000
99+#define MMCM_FREQ_PFDMIN 10000
100+#define MMCM_FREQ_PFDMAX 450000
101+#define MMCM_FREQ_OUTMIN 4000
102+#define MMCM_FREQ_OUTMAX 800000
103+#define MMCM_DIV_MAX 106
104+#define MMCM_FB_MIN 2
105+#define MMCM_FB_MAX 64
106+#define MMCM_CLKDIV_MAX 128
107+#define MMCM_CLKDIV_MIN 1
108+
109+#define OFST_DISPLAY_CTRL 0x0
110+#define OFST_DISPLAY_STATUS 0x4
111+#define OFST_DISPLAY_CLK_L 0x8
112+#define OFST_DISPLAY_FB_L 0x0C
113+#define OFST_DISPLAY_FB_H_CLK_H 0x10
114+#define OFST_DISPLAY_DIV 0x14
115+#define OFST_DISPLAY_LOCK_L 0x18
116+#define OFST_DISPLAY_FLTR_LOCK_H 0x1C
117+
118+static const u64 lock_lookup[64] = {
119+ 0b0011000110111110100011111010010000000001,
120+ 0b0011000110111110100011111010010000000001,
121+ 0b0100001000111110100011111010010000000001,
122+ 0b0101101011111110100011111010010000000001,
123+ 0b0111001110111110100011111010010000000001,
124+ 0b1000110001111110100011111010010000000001,
125+ 0b1001110011111110100011111010010000000001,
126+ 0b1011010110111110100011111010010000000001,
127+ 0b1100111001111110100011111010010000000001,
128+ 0b1110011100111110100011111010010000000001,
129+ 0b1111111111111000010011111010010000000001,
130+ 0b1111111111110011100111111010010000000001,
131+ 0b1111111111101110111011111010010000000001,
132+ 0b1111111111101011110011111010010000000001,
133+ 0b1111111111101000101011111010010000000001,
134+ 0b1111111111100111000111111010010000000001,
135+ 0b1111111111100011111111111010010000000001,
136+ 0b1111111111100010011011111010010000000001,
137+ 0b1111111111100000110111111010010000000001,
138+ 0b1111111111011111010011111010010000000001,
139+ 0b1111111111011101101111111010010000000001,
140+ 0b1111111111011100001011111010010000000001,
141+ 0b1111111111011010100111111010010000000001,
142+ 0b1111111111011001000011111010010000000001,
143+ 0b1111111111011001000011111010010000000001,
144+ 0b1111111111010111011111111010010000000001,
145+ 0b1111111111010101111011111010010000000001,
146+ 0b1111111111010101111011111010010000000001,
147+ 0b1111111111010100010111111010010000000001,
148+ 0b1111111111010100010111111010010000000001,
149+ 0b1111111111010010110011111010010000000001,
150+ 0b1111111111010010110011111010010000000001,
151+ 0b1111111111010010110011111010010000000001,
152+ 0b1111111111010001001111111010010000000001,
153+ 0b1111111111010001001111111010010000000001,
154+ 0b1111111111010001001111111010010000000001,
155+ 0b1111111111001111101011111010010000000001,
156+ 0b1111111111001111101011111010010000000001,
157+ 0b1111111111001111101011111010010000000001,
158+ 0b1111111111001111101011111010010000000001,
159+ 0b1111111111001111101011111010010000000001,
160+ 0b1111111111001111101011111010010000000001,
161+ 0b1111111111001111101011111010010000000001,
162+ 0b1111111111001111101011111010010000000001,
163+ 0b1111111111001111101011111010010000000001,
164+ 0b1111111111001111101011111010010000000001,
165+ 0b1111111111001111101011111010010000000001,
166+ 0b1111111111001111101011111010010000000001,
167+ 0b1111111111001111101011111010010000000001,
168+ 0b1111111111001111101011111010010000000001,
169+ 0b1111111111001111101011111010010000000001,
170+ 0b1111111111001111101011111010010000000001,
171+ 0b1111111111001111101011111010010000000001,
172+ 0b1111111111001111101011111010010000000001,
173+ 0b1111111111001111101011111010010000000001,
174+ 0b1111111111001111101011111010010000000001,
175+ 0b1111111111001111101011111010010000000001,
176+ 0b1111111111001111101011111010010000000001,
177+ 0b1111111111001111101011111010010000000001,
178+ 0b1111111111001111101011111010010000000001,
179+ 0b1111111111001111101011111010010000000001,
180+ 0b1111111111001111101011111010010000000001,
181+ 0b1111111111001111101011111010010000000001,
182+ 0b1111111111001111101011111010010000000001
183+};
184+
185+static const u32 filter_lookup_low[64] = {
186+ 0b0001011111,
187+ 0b0001010111,
188+ 0b0001111011,
189+ 0b0001011011,
190+ 0b0001101011,
191+ 0b0001110011,
192+ 0b0001110011,
193+ 0b0001110011,
194+ 0b0001110011,
195+ 0b0001001011,
196+ 0b0001001011,
197+ 0b0001001011,
198+ 0b0010110011,
199+ 0b0001010011,
200+ 0b0001010011,
201+ 0b0001010011,
202+ 0b0001010011,
203+ 0b0001010011,
204+ 0b0001010011,
205+ 0b0001010011,
206+ 0b0001010011,
207+ 0b0001010011,
208+ 0b0001010011,
209+ 0b0001100011,
210+ 0b0001100011,
211+ 0b0001100011,
212+ 0b0001100011,
213+ 0b0001100011,
214+ 0b0001100011,
215+ 0b0001100011,
216+ 0b0001100011,
217+ 0b0001100011,
218+ 0b0001100011,
219+ 0b0001100011,
220+ 0b0001100011,
221+ 0b0001100011,
222+ 0b0001100011,
223+ 0b0010010011,
224+ 0b0010010011,
225+ 0b0010010011,
226+ 0b0010010011,
227+ 0b0010010011,
228+ 0b0010010011,
229+ 0b0010010011,
230+ 0b0010010011,
231+ 0b0010010011,
232+ 0b0010010011,
233+ 0b0010100011,
234+ 0b0010100011,
235+ 0b0010100011,
236+ 0b0010100011,
237+ 0b0010100011,
238+ 0b0010100011,
239+ 0b0010100011,
240+ 0b0010100011,
241+ 0b0010100011,
242+ 0b0010100011,
243+ 0b0010100011,
244+ 0b0010100011,
245+ 0b0010100011,
246+ 0b0010100011,
247+ 0b0010100011,
248+ 0b0010100011,
249+ 0b0010100011
250+};
251+
252+struct dglnt_dynclk_reg;
253+struct dglnt_dynclk_mode;
254+struct dglnt_dynclk;
255+
256+struct dglnt_dynclk_reg {
257+ u32 clk0L;
258+ u32 clkFBL;
259+ u32 clkFBH_clk0H;
260+ u32 divclk;
261+ u32 lockL;
262+ u32 fltr_lockH;
263+};
264+
265+struct dglnt_dynclk_mode {
266+ u32 freq;
267+ u32 fbmult;
268+ u32 clkdiv;
269+ u32 maindiv;
270+};
271+
272+struct dglnt_dynclk {
273+ void __iomem *base;
274+ struct clk_hw clk_hw;
275+ unsigned long freq;
276+};
277+
278+u32 dglnt_dynclk_divider(u32 divide)
279+{
280+ u32 output = 0;
281+ u32 highTime = 0;
282+ u32 lowTime = 0;
283+
284+ if ((divide < 1) || (divide > 128))
285+ return ERR_CLKDIVIDER;
286+
287+ if (divide == 1)
288+ return DYNCLK_DIV_1_REGMASK;
289+
290+ highTime = divide / 2;
291+ /* if divide is odd */
292+ if (divide & 0x1) {
293+ lowTime = highTime + 1;
294+ output = 1 << CLK_BIT_WEDGE;
295+ } else {
296+ lowTime = highTime;
297+ }
298+
299+ output |= 0x03F & lowTime;
300+ output |= 0xFC0 & (highTime << 6);
301+ return output;
302+}
303+
304+u32 dglnt_dynclk_count_calc(u32 divide)
305+{
306+ u32 output = 0;
307+ u32 divCalc = 0;
308+
309+ divCalc = dglnt_dynclk_divider(divide);
310+ if (divCalc == ERR_CLKDIVIDER)
311+ output = ERR_CLKCOUNTCALC;
312+ else
313+ output = (0xFFF & divCalc) | ((divCalc << 10) & 0x00C00000);
314+ return output;
315+}
316+
317+
318+int dglnt_dynclk_find_reg(struct dglnt_dynclk_reg *regValues,
319+ struct dglnt_dynclk_mode *clkParams)
320+{
321+ if ((clkParams->fbmult < 2) || clkParams->fbmult > 64)
322+ return -EINVAL;
323+
324+ regValues->clk0L = dglnt_dynclk_count_calc(clkParams->clkdiv);
325+ if (regValues->clk0L == ERR_CLKCOUNTCALC)
326+ return -EINVAL;
327+
328+ regValues->clkFBL = dglnt_dynclk_count_calc(clkParams->fbmult);
329+ if (regValues->clkFBL == ERR_CLKCOUNTCALC)
330+ return -EINVAL;
331+
332+ regValues->clkFBH_clk0H = 0;
333+
334+ regValues->divclk = dglnt_dynclk_divider(clkParams->maindiv);
335+ if (regValues->divclk == ERR_CLKDIVIDER)
336+ return -EINVAL;
337+
338+ regValues->lockL = (u32)(lock_lookup[clkParams->fbmult - 1] &
339+ 0xFFFFFFFF);
340+
341+ regValues->fltr_lockH = (u32)((lock_lookup[clkParams->fbmult - 1] >>
342+ 32) & 0x000000FF);
343+ regValues->fltr_lockH |= ((filter_lookup_low[clkParams->fbmult - 1] <<
344+ 16) & 0x03FF0000);
345+
346+ return 0;
347+}
348+
349+void dglnt_dynclk_write_reg(struct dglnt_dynclk_reg *regValues,
350+ void __iomem *baseaddr)
351+{
352+ writel(regValues->clk0L, baseaddr + OFST_DISPLAY_CLK_L);
353+ writel(regValues->clkFBL, baseaddr + OFST_DISPLAY_FB_L);
354+ writel(regValues->clkFBH_clk0H, baseaddr + OFST_DISPLAY_FB_H_CLK_H);
355+ writel(regValues->divclk, baseaddr + OFST_DISPLAY_DIV);
356+ writel(regValues->lockL, baseaddr + OFST_DISPLAY_LOCK_L);
357+ writel(regValues->fltr_lockH, baseaddr + OFST_DISPLAY_FLTR_LOCK_H);
358+}
359+
360+u32 dglnt_dynclk_find_mode(u32 freq, u32 parentFreq,
361+ struct dglnt_dynclk_mode *bestPick)
362+{
363+ u32 bestError = MMCM_FREQ_OUTMAX;
364+ u32 curError;
365+ u32 curClkMult;
366+ u32 curFreq;
367+ u32 divVal;
368+ u32 curFb, curClkDiv;
369+ u32 minFb = 0;
370+ u32 maxFb = 0;
371+ u32 curDiv = 1;
372+ u32 maxDiv;
373+ bool freq_found = false;
374+
375+ bestPick->freq = 0;
376+ if (parentFreq == 0)
377+ return 0;
378+
379+ /* minimum frequency is actually dictated by VCOmin */
380+ if (freq < MMCM_FREQ_OUTMIN)
381+ freq = MMCM_FREQ_OUTMIN;
382+ if (freq > MMCM_FREQ_OUTMAX)
383+ freq = MMCM_FREQ_OUTMAX;
384+
385+ if (parentFreq > MMCM_FREQ_PFDMAX)
386+ curDiv = 2;
387+ maxDiv = parentFreq / MMCM_FREQ_PFDMIN;
388+ if (maxDiv > MMCM_DIV_MAX)
389+ maxDiv = MMCM_DIV_MAX;
390+
391+ while (curDiv <= maxDiv && !freq_found) {
392+ minFb = curDiv * DIV_ROUND_UP(MMCM_FREQ_VCOMIN, parentFreq);
393+ maxFb = curDiv * (MMCM_FREQ_VCOMAX / parentFreq);
394+ if (maxFb > MMCM_FB_MAX)
395+ maxFb = MMCM_FB_MAX;
396+ if (minFb < MMCM_FB_MIN)
397+ minFb = MMCM_FB_MIN;
398+
399+ divVal = curDiv * freq;
400+ /*
401+ * This multiplier is used to find the best clkDiv value for
402+ * each FB value
403+ */
404+ curClkMult = ((parentFreq * 1000) + (divVal / 2)) / divVal;
405+
406+ curFb = minFb;
407+ while (curFb <= maxFb && !freq_found) {
408+ curClkDiv = ((curClkMult * curFb) + 500) / 1000;
409+ if (curClkDiv > MMCM_CLKDIV_MAX)
410+ curClkDiv = MMCM_CLKDIV_MAX;
411+ if (curClkDiv < MMCM_CLKDIV_MIN)
412+ curClkDiv = MMCM_CLKDIV_MIN;
413+ curFreq = (((parentFreq * curFb) / curDiv) / curClkDiv);
414+ if (curFreq >= freq)
415+ curError = curFreq - freq;
416+ else
417+ curError = freq - curFreq;
418+ if (curError < bestError) {
419+ bestError = curError;
420+ bestPick->clkdiv = curClkDiv;
421+ bestPick->fbmult = curFb;
422+ bestPick->maindiv = curDiv;
423+ bestPick->freq = curFreq;
424+ }
425+ if (!curError)
426+ freq_found = true;
427+ curFb++;
428+ }
429+ curDiv++;
430+ }
431+ return bestPick->freq;
432+}
433+
434+static struct dglnt_dynclk *clk_hw_to_dglnt_dynclk(struct clk_hw *clk_hw)
435+{
436+ return container_of(clk_hw, struct dglnt_dynclk, clk_hw);
437+}
438+
439+
440+static int dglnt_dynclk_enable(struct clk_hw *clk_hw)
441+{
442+ struct dglnt_dynclk *dglnt_dynclk = clk_hw_to_dglnt_dynclk(clk_hw);
443+ unsigned int clock_state;
444+
445+ if (dglnt_dynclk->freq) {
446+ writel(1, dglnt_dynclk->base + OFST_DISPLAY_CTRL);
447+ do {
448+ clock_state = readl(dglnt_dynclk->base +
449+ OFST_DISPLAY_STATUS);
450+ } while (!clock_state);
451+ }
452+ return 0;
453+}
454+
455+static void dglnt_dynclk_disable(struct clk_hw *clk_hw)
456+{
457+ struct dglnt_dynclk *dglnt_dynclk = clk_hw_to_dglnt_dynclk(clk_hw);
458+
459+ writel(0, dglnt_dynclk->base + OFST_DISPLAY_CTRL);
460+}
461+
462+static int dglnt_dynclk_set_rate(struct clk_hw *clk_hw,
463+ unsigned long rate, unsigned long parent_rate)
464+{
465+ struct dglnt_dynclk *dglnt_dynclk = clk_hw_to_dglnt_dynclk(clk_hw);
466+ struct dglnt_dynclk_reg clkReg;
467+ struct dglnt_dynclk_mode clkMode;
468+
469+ if (parent_rate == 0 || rate == 0)
470+ return -EINVAL;
471+ if (rate == dglnt_dynclk->freq)
472+ return 0;
473+
474+ /*
475+ * Convert from Hz to KHz, then multiply by five to account for
476+ * BUFR division
477+ */
478+ rate = (rate + 100) / 200;
479+ /* convert from Hz to KHz */
480+ parent_rate = (parent_rate + 500) / 1000;
481+ if (!dglnt_dynclk_find_mode(rate, parent_rate, &clkMode))
482+ return -EINVAL;
483+
484+ /*
485+ * Write to the PLL dynamic configuration registers to configure it
486+ * with the calculated parameters.
487+ */
488+ dglnt_dynclk_find_reg(&clkReg, &clkMode);
489+ dglnt_dynclk_write_reg(&clkReg, dglnt_dynclk->base);
490+ dglnt_dynclk->freq = clkMode.freq * 200;
491+ dglnt_dynclk_disable(clk_hw);
492+ dglnt_dynclk_enable(clk_hw);
493+
494+ return 0;
495+}
496+
497+static long dglnt_dynclk_round_rate(struct clk_hw *hw, unsigned long rate,
498+ unsigned long *parent_rate)
499+{
500+ struct dglnt_dynclk_mode clkMode;
501+
502+ dglnt_dynclk_find_mode(((rate + 100) / 200),
503+ ((*parent_rate) + 500) / 1000, &clkMode);
504+
505+ return (clkMode.freq * 200);
506+}
507+
508+static unsigned long dglnt_dynclk_recalc_rate(struct clk_hw *clk_hw,
509+ unsigned long parent_rate)
510+{
511+ struct dglnt_dynclk *dglnt_dynclk = clk_hw_to_dglnt_dynclk(clk_hw);
512+
513+ return dglnt_dynclk->freq;
514+}
515+
516+
517+static const struct clk_ops dglnt_dynclk_ops = {
518+ .recalc_rate = dglnt_dynclk_recalc_rate,
519+ .round_rate = dglnt_dynclk_round_rate,
520+ .set_rate = dglnt_dynclk_set_rate,
521+ .enable = dglnt_dynclk_enable,
522+ .disable = dglnt_dynclk_disable,
523+};
524+
525+static const struct of_device_id dglnt_dynclk_ids[] = {
526+ { .compatible = "digilent,axi-dynclk", },
527+ { },
528+};
529+MODULE_DEVICE_TABLE(of, dglnt_dynclk_ids);
530+
531+static int dglnt_dynclk_probe(struct platform_device *pdev)
532+{
533+ const struct of_device_id *id;
534+ struct dglnt_dynclk *dglnt_dynclk;
535+ struct clk_init_data init;
536+ const char *parent_name;
537+ const char *clk_name;
538+ struct resource *mem;
539+ struct clk *clk;
540+
541+ if (!pdev->dev.of_node)
542+ return -ENODEV;
543+
544+ id = of_match_node(dglnt_dynclk_ids, pdev->dev.of_node);
545+ if (!id)
546+ return -ENODEV;
547+
548+ dglnt_dynclk = devm_kzalloc(&pdev->dev, sizeof(*dglnt_dynclk),
549+ GFP_KERNEL);
550+ if (!dglnt_dynclk)
551+ return -ENOMEM;
552+
553+ mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
554+ dglnt_dynclk->base = devm_ioremap_resource(&pdev->dev, mem);
555+ if (IS_ERR(dglnt_dynclk->base))
556+ return PTR_ERR(dglnt_dynclk->base);
557+
558+ parent_name = of_clk_get_parent_name(pdev->dev.of_node, 0);
559+ if (!parent_name)
560+ return -EINVAL;
561+
562+ clk_name = pdev->dev.of_node->name;
563+ of_property_read_string(pdev->dev.of_node, "clock-output-names",
564+ &clk_name);
565+
566+ init.name = clk_name;
567+ init.ops = &dglnt_dynclk_ops;
568+ init.flags = 0;
569+ init.parent_names = &parent_name;
570+ init.num_parents = 1;
571+
572+ dglnt_dynclk->freq = 0;
573+ dglnt_dynclk_disable(&dglnt_dynclk->clk_hw);
574+
575+ dglnt_dynclk->clk_hw.init = &init;
576+ clk = devm_clk_register(&pdev->dev, &dglnt_dynclk->clk_hw);
577+ if (IS_ERR(clk))
578+ return PTR_ERR(clk);
579+
580+ return of_clk_add_provider(pdev->dev.of_node, of_clk_src_simple_get,
581+ clk);
582+}
583+
584+static int dglnt_dynclk_remove(struct platform_device *pdev)
585+{
586+ of_clk_del_provider(pdev->dev.of_node);
587+
588+ return 0;
589+}
590+
591+static struct platform_driver dglnt_dynclk_driver = {
592+ .driver = {
593+ .name = "dglnt-dynclk",
594+ .owner = THIS_MODULE,
595+ .of_match_table = dglnt_dynclk_ids,
596+ },
597+ .probe = dglnt_dynclk_probe,
598+ .remove = dglnt_dynclk_remove,
599+};
600+module_platform_driver(dglnt_dynclk_driver);
601+
602+MODULE_LICENSE("GPL v2");
603+MODULE_AUTHOR("Sam Bobrowicz <sbobrowicz@digilentinc.com>");
604+MODULE_DESCRIPTION("CCF Driver for Digilent axi_dynclk IP Core");
605--
6062.14.2
607
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch
new file mode 100644
index 00000000..a98d84c5
--- /dev/null
+++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch
@@ -0,0 +1,54 @@
1From 1a18e2b514ae9e75145597ac509a87f656c976ba Mon Sep 17 00:00:00 2001
2From: Nathan Rossi <nathan@nathanrossi.com>
3Date: Mon, 2 May 2016 23:46:42 +1000
4Subject: [PATCH 3/3] drm: xilinx: Fix DPMS transition to on
5
6Fix the issues where the VTC is reset (losing its timing config).
7
8Also fix the issue where the plane destroys its DMA descriptors and
9marks the DMA channels as inactive but never recreates the descriptors
10and never updates the active state when turning DPMS back on.
11
12Signed-off-by: Nathan Rossi <nathan@nathanrossi.com>
13Upstream-Status: Pending [This is a workaround]
14---
15 drivers/gpu/drm/xilinx/xilinx_drm_crtc.c | 1 -
16 drivers/gpu/drm/xilinx/xilinx_drm_plane.c | 3 ++-
17 2 files changed, 2 insertions(+), 2 deletions(-)
18
19diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
20index 631d35b921..93dbd4b58a 100644
21--- a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
22+++ b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
23@@ -88,7 +88,6 @@ static void xilinx_drm_crtc_dpms(struct drm_crtc *base_crtc, int dpms)
24 default:
25 if (crtc->vtc) {
26 xilinx_vtc_disable(crtc->vtc);
27- xilinx_vtc_reset(crtc->vtc);
28 }
29 if (crtc->cresample) {
30 xilinx_cresample_disable(crtc->cresample);
31diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
32index 6a248b72d4..d2518a4bdf 100644
33--- a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
34+++ b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
35@@ -140,7 +140,7 @@ void xilinx_drm_plane_commit(struct drm_plane *base_plane)
36 for (i = 0; i < MAX_NUM_SUB_PLANES; i++) {
37 struct xilinx_drm_plane_dma *dma = &plane->dma[i];
38
39- if (dma->chan && dma->is_active) {
40+ if (dma->chan) {
41 flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT;
42 desc = dmaengine_prep_interleaved_dma(dma->chan,
43 &dma->xt,
44@@ -153,6 +153,7 @@ void xilinx_drm_plane_commit(struct drm_plane *base_plane)
45 dmaengine_submit(desc);
46
47 dma_async_issue_pending(dma->chan);
48+ dma->is_active = true;
49 }
50 }
51 }
52--
532.14.2
54
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0004-minized-wifi-bluetooth.cfg b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0004-minized-wifi-bluetooth.cfg
new file mode 100644
index 00000000..f71e53ab
--- /dev/null
+++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.1/0004-minized-wifi-bluetooth.cfg
@@ -0,0 +1,33 @@
1#
2# Bluetooth config
3#
4CONFIG_BT=y
5CONFIG_BT_BREDR=y
6CONFIG_BT_HS=y
7CONFIG_BT_LE=y
8CONFIG_BT_BCM=y
9CONFIG_BT_HCIUART=y
10CONFIG_BT_HCIUART_H4=y
11CONFIG_BT_HCIUART_BCM=y
12CONFIG_BT_HIDP=y
13CONFIG_CFG80211=y
14CONFIG_CFG80211_DEFAULT_PS=y
15CONFIG_CFG80211_CRDA_SUPPORT=y
16CONFIG_BRCMUTIL=y
17CONFIG_BRCMFMAC=y
18CONFIG_BRCMFMAC_PROTO_BCDC=y
19CONFIG_BRCMFMAC_SDIO=y
20CONFIG_CRYPTO_BLKCIPHER=y
21CONFIG_CRYPTO_MANAGER=y
22CONFIG_CRYPTO_ECB=y
23CONFIG_CRYPTO_CMAC=y
24CONFIG_CRYPTO_SHA256=y
25
26#
27# Regulator config
28#
29CONFIG_REGMAP_IRQ=y
30CONFIG_I2C_XILINX=y
31CONFIG_MFD_DA9062=y
32CONFIG_REGULATOR_DA9062=y
33
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch
new file mode 100644
index 00000000..660bc218
--- /dev/null
+++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch
@@ -0,0 +1,305 @@
1From 21cc8144efdaa3cd8dbd7279f87b14fa3432fae4 Mon Sep 17 00:00:00 2001
2From: Jason Wu <jason.wu.misc@gmail.com>
3Date: Sun, 10 Apr 2016 13:14:13 +1000
4Subject: [PATCH 1/3] drm: xilinx: Add encoder for Digilent boards
5
6Add the dglnt_encoder driver that enables DRM support for the VGA and
7HDMI output ports found on many Digilent boards.
8
9Upstream-Status: Pending
10
11Signed-off-by: Sam Bobrowicz <sbobrowicz@digilentinc.com>
12Signed-off-by: Jason Wu <jason.wu.misc@gmail.com>
13---
14 .../bindings/drm/xilinx/dglnt_encoder.txt | 23 +++
15 drivers/gpu/drm/xilinx/Kconfig | 6 +
16 drivers/gpu/drm/xilinx/Makefile | 1 +
17 drivers/gpu/drm/xilinx/dglnt_encoder.c | 217 +++++++++++++++++++++
18 4 files changed, 247 insertions(+)
19 create mode 100644 Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt
20 create mode 100644 drivers/gpu/drm/xilinx/dglnt_encoder.c
21
22diff --git a/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt b/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt
23new file mode 100644
24index 0000000..242b24e
25--- /dev/null
26+++ b/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt
27@@ -0,0 +1,23 @@
28+Device-Tree bindings for Digilent DRM Encoder Slave
29+
30+This driver provides support for VGA and HDMI outputs on Digilent FPGA boards.
31+The VGA or HDMI port must be connected to a Xilinx display pipeline via an
32+axi2vid IP core.
33+
34+Required properties:
35+ - compatible: Should be "digilent,drm-encoder".
36+
37+Optional properties:
38+ - dglnt,edid-i2c: The I2C device connected to the DDC bus on the video
39+ connector. This is used to obtain the supported resolutions
40+ of an attached monitor. If not defined, then a default
41+ set of resolutions is used and the display will initialize
42+ to 720p. Note most VGA connectors on Digilent boards do
43+ not have the DDC bus routed out.
44+
45+Example:
46+
47+ encoder_0: digilent_encoder {
48+ compatible = "digilent,drm-encoder";
49+ dglnt,edid-i2c = <&i2c1>;
50+ };
51diff --git a/drivers/gpu/drm/xilinx/Kconfig b/drivers/gpu/drm/xilinx/Kconfig
52index 57e18a9..d9ecff2 100644
53--- a/drivers/gpu/drm/xilinx/Kconfig
54+++ b/drivers/gpu/drm/xilinx/Kconfig
55@@ -33,6 +33,12 @@ config DRM_XILINX_DP_SUB
56 help
57 DRM driver for Xilinx Display Port Subsystem.
58
59+config DRM_DIGILENT_ENCODER
60+ tristate "Digilent VGA/HDMI DRM Encoder Driver"
61+ depends on DRM_XILINX
62+ help
63+ DRM slave encoder for Video-out on Digilent boards.
64+
65 config DRM_XILINX_DP_SUB_DEBUG_FS
66 bool "Xilinx DRM DPSUB debugfs"
67 depends on DEBUG_FS && DRM_XILINX_DP_SUB
68diff --git a/drivers/gpu/drm/xilinx/Makefile b/drivers/gpu/drm/xilinx/Makefile
69index 19bc154..c2717e40 100644
70--- a/drivers/gpu/drm/xilinx/Makefile
71+++ b/drivers/gpu/drm/xilinx/Makefile
72@@ -7,6 +7,7 @@ xilinx_drm-y := xilinx_drm_crtc.o xilinx_drm_connector.o xilinx_drm_drv.o \
73 xilinx_drm_plane.o
74 xilinx_drm-y += xilinx_cresample.o xilinx_osd.o xilinx_rgb2yuv.o xilinx_vtc.o
75
76+obj-$(CONFIG_DRM_DIGILENT_ENCODER) += dglnt_encoder.o
77 obj-$(CONFIG_DRM_XILINX) += xilinx_drm.o
78 obj-$(CONFIG_DRM_XILINX_DP) += xilinx_drm_dp.o
79 obj-$(CONFIG_DRM_XILINX_DP_SUB) += xilinx_drm_dp_sub.o
80diff --git a/drivers/gpu/drm/xilinx/dglnt_encoder.c b/drivers/gpu/drm/xilinx/dglnt_encoder.c
81new file mode 100644
82index 0000000..cb9fc7d
83--- /dev/null
84+++ b/drivers/gpu/drm/xilinx/dglnt_encoder.c
85@@ -0,0 +1,217 @@
86+/*
87+ * dglnt_encoder.c - DRM slave encoder for Video-out on Digilent boards
88+ *
89+ * Copyright (C) 2015 Digilent
90+ * Author: Sam Bobrowicz <sbobrowicz@digilentinc.com>
91+ *
92+ * Based on udl_encoder.c and udl_connector.c, Copyright (C) 2012 Red Hat.
93+ * Also based on xilinx_drm_dp.c, Copyright (C) 2014 Xilinx, Inc.
94+ *
95+ * This software is licensed under the terms of the GNU General Public
96+ * License version 2, as published by the Free Software Foundation, and
97+ * may be copied, distributed, and modified under those terms.
98+ *
99+ * This program is distributed in the hope that it will be useful,
100+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
101+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
102+ * GNU General Public License for more details.
103+ */
104+
105+#include <drm/drmP.h>
106+#include <drm/drm_edid.h>
107+#include <drm/drm_encoder_slave.h>
108+
109+#include <linux/device.h>
110+#include <linux/module.h>
111+#include <linux/err.h>
112+#include <linux/i2c.h>
113+#include <linux/of.h>
114+#include <linux/of_platform.h>
115+#include <linux/platform_device.h>
116+
117+#define DGLNT_ENC_MAX_FREQ 150000
118+#define DGLNT_ENC_MAX_H 1920
119+#define DGLNT_ENC_MAX_V 1080
120+#define DGLNT_ENC_PREF_H 1280
121+#define DGLNT_ENC_PREF_V 720
122+
123+struct dglnt_encoder {
124+ struct drm_encoder *encoder;
125+ struct i2c_adapter *i2c_bus;
126+ bool i2c_present;
127+};
128+
129+static inline struct dglnt_encoder *to_dglnt_encoder(
130+ struct drm_encoder *encoder)
131+{
132+ return to_encoder_slave(encoder)->slave_priv;
133+}
134+
135+static bool dglnt_mode_fixup(struct drm_encoder *encoder,
136+ const struct drm_display_mode *mode,
137+ struct drm_display_mode *adjusted_mode)
138+{
139+ return true;
140+}
141+
142+static void dglnt_encoder_mode_set(struct drm_encoder *encoder,
143+ struct drm_display_mode *mode,
144+ struct drm_display_mode *adjusted_mode)
145+{
146+}
147+
148+static void
149+dglnt_encoder_dpms(struct drm_encoder *encoder, int mode)
150+{
151+}
152+
153+static void dglnt_encoder_save(struct drm_encoder *encoder)
154+{
155+}
156+
157+static void dglnt_encoder_restore(struct drm_encoder *encoder)
158+{
159+}
160+
161+static int dglnt_encoder_mode_valid(struct drm_encoder *encoder,
162+ struct drm_display_mode *mode)
163+{
164+ if (mode &&
165+ !(mode->flags & ((DRM_MODE_FLAG_INTERLACE |
166+ DRM_MODE_FLAG_DBLCLK) | DRM_MODE_FLAG_3D_MASK)) &&
167+ (mode->clock <= DGLNT_ENC_MAX_FREQ) &&
168+ (mode->hdisplay <= DGLNT_ENC_MAX_H) &&
169+ (mode->vdisplay <= DGLNT_ENC_MAX_V))
170+ return MODE_OK;
171+ return MODE_BAD;
172+}
173+
174+static int dglnt_encoder_get_modes(struct drm_encoder *encoder,
175+ struct drm_connector *connector)
176+{
177+ struct dglnt_encoder *dglnt = to_dglnt_encoder(encoder);
178+ struct edid *edid;
179+ int num_modes = 0;
180+
181+ if (dglnt->i2c_present) {
182+ edid = drm_get_edid(connector, dglnt->i2c_bus);
183+ drm_connector_update_edid_property(connector, edid);
184+ if (edid) {
185+ num_modes = drm_add_edid_modes(connector, edid);
186+ kfree(edid);
187+ }
188+ } else {
189+ num_modes = drm_add_modes_noedid(connector, DGLNT_ENC_MAX_H,
190+ DGLNT_ENC_MAX_V);
191+ drm_set_preferred_mode(connector, DGLNT_ENC_PREF_H,
192+ DGLNT_ENC_PREF_V);
193+ }
194+ return num_modes;
195+}
196+
197+static enum drm_connector_status dglnt_encoder_detect(
198+ struct drm_encoder *encoder,
199+ struct drm_connector *connector)
200+{
201+ struct dglnt_encoder *dglnt = to_dglnt_encoder(encoder);
202+
203+ if (dglnt->i2c_present) {
204+ if (drm_probe_ddc(dglnt->i2c_bus))
205+ return connector_status_connected;
206+ return connector_status_disconnected;
207+ } else
208+ return connector_status_unknown;
209+}
210+
211+static struct drm_encoder_slave_funcs dglnt_encoder_slave_funcs = {
212+ .dpms = dglnt_encoder_dpms,
213+ .save = dglnt_encoder_save,
214+ .restore = dglnt_encoder_restore,
215+ .mode_fixup = dglnt_mode_fixup,
216+ .mode_valid = dglnt_encoder_mode_valid,
217+ .mode_set = dglnt_encoder_mode_set,
218+ .detect = dglnt_encoder_detect,
219+ .get_modes = dglnt_encoder_get_modes,
220+};
221+
222+static int dglnt_encoder_encoder_init(struct platform_device *pdev,
223+ struct drm_device *dev,
224+ struct drm_encoder_slave *encoder)
225+{
226+ struct dglnt_encoder *dglnt = platform_get_drvdata(pdev);
227+ struct device_node *sub_node;
228+
229+ encoder->slave_priv = dglnt;
230+ encoder->slave_funcs = &dglnt_encoder_slave_funcs;
231+
232+ dglnt->encoder = &encoder->base;
233+
234+ /* get i2c adapter for edid */
235+ dglnt->i2c_present = false;
236+ sub_node = of_parse_phandle(pdev->dev.of_node, "dglnt,edid-i2c", 0);
237+ if (sub_node) {
238+ dglnt->i2c_bus = of_find_i2c_adapter_by_node(sub_node);
239+ if (!dglnt->i2c_bus)
240+ DRM_INFO("failed to get the edid i2c adapter, using default modes\n");
241+ else
242+ dglnt->i2c_present = true;
243+ of_node_put(sub_node);
244+ }
245+
246+ return 0;
247+}
248+
249+static int dglnt_encoder_probe(struct platform_device *pdev)
250+{
251+ struct dglnt_encoder *dglnt;
252+
253+ dglnt = devm_kzalloc(&pdev->dev, sizeof(*dglnt), GFP_KERNEL);
254+ if (!dglnt)
255+ return -ENOMEM;
256+
257+ platform_set_drvdata(pdev, dglnt);
258+
259+ return 0;
260+}
261+
262+static int dglnt_encoder_remove(struct platform_device *pdev)
263+{
264+ return 0;
265+}
266+
267+static const struct of_device_id dglnt_encoder_of_match[] = {
268+ { .compatible = "digilent,drm-encoder", },
269+ { /* end of table */ },
270+};
271+MODULE_DEVICE_TABLE(of, dglnt_encoder_of_match);
272+
273+static struct drm_platform_encoder_driver dglnt_encoder_driver = {
274+ .platform_driver = {
275+ .probe = dglnt_encoder_probe,
276+ .remove = dglnt_encoder_remove,
277+ .driver = {
278+ .owner = THIS_MODULE,
279+ .name = "dglnt-drm-enc",
280+ .of_match_table = dglnt_encoder_of_match,
281+ },
282+ },
283+
284+ .encoder_init = dglnt_encoder_encoder_init,
285+};
286+
287+static int __init dglnt_encoder_init(void)
288+{
289+ return platform_driver_register(&dglnt_encoder_driver.platform_driver);
290+}
291+
292+static void __exit dglnt_encoder_exit(void)
293+{
294+ platform_driver_unregister(&dglnt_encoder_driver.platform_driver);
295+}
296+
297+module_init(dglnt_encoder_init);
298+module_exit(dglnt_encoder_exit);
299+
300+MODULE_AUTHOR("Digilent, Inc.");
301+MODULE_DESCRIPTION("DRM slave encoder for Video-out on Digilent boards");
302+MODULE_LICENSE("GPL v2");
303--
3042.7.4
305
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch
new file mode 100644
index 00000000..9b6229db
--- /dev/null
+++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch
@@ -0,0 +1,607 @@
1From 217e3b6f4393926b8dcad841381527ef3fc808c2 Mon Sep 17 00:00:00 2001
2From: Jason Wu <jason.wu.misc@gmail.com>
3Date: Sun, 10 Apr 2016 13:16:06 +1000
4Subject: [PATCH 2/3] clk: Add driver for axi_dynclk IP Core
5
6Add support for the axi_dynclk IP Core available from Digilent. This IP
7core dynamically configures the clock resources inside a Xilinx FPGA to
8generate a clock with a software programmable frequency.
9
10Upstream-Status: Pending
11
12Signed-off-by: Sam Bobrowicz <sbobrowicz@digilentinc.com>
13Signed-off-by: Jason Wu <jason.wu.misc@gmail.com>
14---
15 drivers/clk/Kconfig | 8 +
16 drivers/clk/Makefile | 1 +
17 drivers/clk/clk-dglnt-dynclk.c | 547 +++++++++++++++++++++++++++++++++++++++++
18 3 files changed, 556 insertions(+)
19 create mode 100644 drivers/clk/clk-dglnt-dynclk.c
20
21diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
22index dccb111100..7fe65a702b 100644
23--- a/drivers/clk/Kconfig
24+++ b/drivers/clk/Kconfig
25@@ -148,6 +148,14 @@ config CLK_QORIQ
26 This adds the clock driver support for Freescale QorIQ platforms
27 using common clock framework.
28
29+config COMMON_CLK_DGLNT_DYNCLK
30+ tristate "Digilent axi_dynclk Driver"
31+ depends on ARCH_ZYNQ || MICROBLAZE
32+ help
33+ ---help---
34+ Support for the Digilent AXI Dynamic Clock core for Xilinx
35+ FPGAs.
36+
37 config COMMON_CLK_XGENE
38 bool "Clock driver for APM XGene SoC"
39 default y
40diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
41index 0760449dde..45ce97d053 100644
42--- a/drivers/clk/Makefile
43+++ b/drivers/clk/Makefile
44@@ -24,6 +24,7 @@ obj-$(CONFIG_COMMON_CLK_CDCE706) += clk-cdce706.o
45 obj-$(CONFIG_COMMON_CLK_CDCE925) += clk-cdce925.o
46 obj-$(CONFIG_ARCH_CLPS711X) += clk-clps711x.o
47 obj-$(CONFIG_COMMON_CLK_CS2000_CP) += clk-cs2000-cp.o
48+obj-$(CONFIG_COMMON_CLK_DGLNT_DYNCLK) += clk-dglnt-dynclk.o
49 obj-$(CONFIG_ARCH_EFM32) += clk-efm32gg.o
50 obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o
51 obj-$(CONFIG_COMMON_CLK_MAX77686) += clk-max77686.o
52diff --git a/drivers/clk/clk-dglnt-dynclk.c b/drivers/clk/clk-dglnt-dynclk.c
53new file mode 100644
54index 0000000000..496ad5fc90
55--- /dev/null
56+++ b/drivers/clk/clk-dglnt-dynclk.c
57@@ -0,0 +1,547 @@
58+/*
59+ * clk-dglnt-dynclk.c - Digilent AXI Dynamic Clock (axi_dynclk) Driver
60+ *
61+ * Copyright (C) 2015 Digilent
62+ * Author: Sam Bobrowicz <sbobrowicz@digilentinc.com>
63+ *
64+ * Reused code from clk-axi-clkgen.c, Copyright (C) 2012-2013 Analog Devices Inc.
65+ *
66+ * This software is licensed under the terms of the GNU General Public
67+ * License version 2, as published by the Free Software Foundation, and
68+ * may be copied, distributed, and modified under those terms.
69+ *
70+ * This program is distributed in the hope that it will be useful,
71+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
72+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
73+ * GNU General Public License for more details.
74+ */
75+
76+#include <linux/platform_device.h>
77+#include <linux/clk-provider.h>
78+#include <linux/clk.h>
79+#include <linux/slab.h>
80+#include <linux/io.h>
81+#include <linux/of.h>
82+#include <linux/module.h>
83+#include <linux/err.h>
84+#include <linux/kernel.h>
85+
86+#define CLK_BIT_WEDGE 13
87+#define CLK_BIT_NOCOUNT 12
88+
89+/* This value is used to signal an error */
90+#define ERR_CLKCOUNTCALC 0xFFFFFFFF
91+#define ERR_CLKDIVIDER (1 << CLK_BIT_WEDGE | 1 << CLK_BIT_NOCOUNT)
92+
93+#define DYNCLK_DIV_1_REGMASK 0x1041
94+/* 25 MHz (125 KHz / 5) */
95+#define DYNCLK_DEFAULT_FREQ 125000
96+
97+#define MMCM_FREQ_VCOMIN 600000
98+#define MMCM_FREQ_VCOMAX 1200000
99+#define MMCM_FREQ_PFDMIN 10000
100+#define MMCM_FREQ_PFDMAX 450000
101+#define MMCM_FREQ_OUTMIN 4000
102+#define MMCM_FREQ_OUTMAX 800000
103+#define MMCM_DIV_MAX 106
104+#define MMCM_FB_MIN 2
105+#define MMCM_FB_MAX 64
106+#define MMCM_CLKDIV_MAX 128
107+#define MMCM_CLKDIV_MIN 1
108+
109+#define OFST_DISPLAY_CTRL 0x0
110+#define OFST_DISPLAY_STATUS 0x4
111+#define OFST_DISPLAY_CLK_L 0x8
112+#define OFST_DISPLAY_FB_L 0x0C
113+#define OFST_DISPLAY_FB_H_CLK_H 0x10
114+#define OFST_DISPLAY_DIV 0x14
115+#define OFST_DISPLAY_LOCK_L 0x18
116+#define OFST_DISPLAY_FLTR_LOCK_H 0x1C
117+
118+static const u64 lock_lookup[64] = {
119+ 0b0011000110111110100011111010010000000001,
120+ 0b0011000110111110100011111010010000000001,
121+ 0b0100001000111110100011111010010000000001,
122+ 0b0101101011111110100011111010010000000001,
123+ 0b0111001110111110100011111010010000000001,
124+ 0b1000110001111110100011111010010000000001,
125+ 0b1001110011111110100011111010010000000001,
126+ 0b1011010110111110100011111010010000000001,
127+ 0b1100111001111110100011111010010000000001,
128+ 0b1110011100111110100011111010010000000001,
129+ 0b1111111111111000010011111010010000000001,
130+ 0b1111111111110011100111111010010000000001,
131+ 0b1111111111101110111011111010010000000001,
132+ 0b1111111111101011110011111010010000000001,
133+ 0b1111111111101000101011111010010000000001,
134+ 0b1111111111100111000111111010010000000001,
135+ 0b1111111111100011111111111010010000000001,
136+ 0b1111111111100010011011111010010000000001,
137+ 0b1111111111100000110111111010010000000001,
138+ 0b1111111111011111010011111010010000000001,
139+ 0b1111111111011101101111111010010000000001,
140+ 0b1111111111011100001011111010010000000001,
141+ 0b1111111111011010100111111010010000000001,
142+ 0b1111111111011001000011111010010000000001,
143+ 0b1111111111011001000011111010010000000001,
144+ 0b1111111111010111011111111010010000000001,
145+ 0b1111111111010101111011111010010000000001,
146+ 0b1111111111010101111011111010010000000001,
147+ 0b1111111111010100010111111010010000000001,
148+ 0b1111111111010100010111111010010000000001,
149+ 0b1111111111010010110011111010010000000001,
150+ 0b1111111111010010110011111010010000000001,
151+ 0b1111111111010010110011111010010000000001,
152+ 0b1111111111010001001111111010010000000001,
153+ 0b1111111111010001001111111010010000000001,
154+ 0b1111111111010001001111111010010000000001,
155+ 0b1111111111001111101011111010010000000001,
156+ 0b1111111111001111101011111010010000000001,
157+ 0b1111111111001111101011111010010000000001,
158+ 0b1111111111001111101011111010010000000001,
159+ 0b1111111111001111101011111010010000000001,
160+ 0b1111111111001111101011111010010000000001,
161+ 0b1111111111001111101011111010010000000001,
162+ 0b1111111111001111101011111010010000000001,
163+ 0b1111111111001111101011111010010000000001,
164+ 0b1111111111001111101011111010010000000001,
165+ 0b1111111111001111101011111010010000000001,
166+ 0b1111111111001111101011111010010000000001,
167+ 0b1111111111001111101011111010010000000001,
168+ 0b1111111111001111101011111010010000000001,
169+ 0b1111111111001111101011111010010000000001,
170+ 0b1111111111001111101011111010010000000001,
171+ 0b1111111111001111101011111010010000000001,
172+ 0b1111111111001111101011111010010000000001,
173+ 0b1111111111001111101011111010010000000001,
174+ 0b1111111111001111101011111010010000000001,
175+ 0b1111111111001111101011111010010000000001,
176+ 0b1111111111001111101011111010010000000001,
177+ 0b1111111111001111101011111010010000000001,
178+ 0b1111111111001111101011111010010000000001,
179+ 0b1111111111001111101011111010010000000001,
180+ 0b1111111111001111101011111010010000000001,
181+ 0b1111111111001111101011111010010000000001,
182+ 0b1111111111001111101011111010010000000001
183+};
184+
185+static const u32 filter_lookup_low[64] = {
186+ 0b0001011111,
187+ 0b0001010111,
188+ 0b0001111011,
189+ 0b0001011011,
190+ 0b0001101011,
191+ 0b0001110011,
192+ 0b0001110011,
193+ 0b0001110011,
194+ 0b0001110011,
195+ 0b0001001011,
196+ 0b0001001011,
197+ 0b0001001011,
198+ 0b0010110011,
199+ 0b0001010011,
200+ 0b0001010011,
201+ 0b0001010011,
202+ 0b0001010011,
203+ 0b0001010011,
204+ 0b0001010011,
205+ 0b0001010011,
206+ 0b0001010011,
207+ 0b0001010011,
208+ 0b0001010011,
209+ 0b0001100011,
210+ 0b0001100011,
211+ 0b0001100011,
212+ 0b0001100011,
213+ 0b0001100011,
214+ 0b0001100011,
215+ 0b0001100011,
216+ 0b0001100011,
217+ 0b0001100011,
218+ 0b0001100011,
219+ 0b0001100011,
220+ 0b0001100011,
221+ 0b0001100011,
222+ 0b0001100011,
223+ 0b0010010011,
224+ 0b0010010011,
225+ 0b0010010011,
226+ 0b0010010011,
227+ 0b0010010011,
228+ 0b0010010011,
229+ 0b0010010011,
230+ 0b0010010011,
231+ 0b0010010011,
232+ 0b0010010011,
233+ 0b0010100011,
234+ 0b0010100011,
235+ 0b0010100011,
236+ 0b0010100011,
237+ 0b0010100011,
238+ 0b0010100011,
239+ 0b0010100011,
240+ 0b0010100011,
241+ 0b0010100011,
242+ 0b0010100011,
243+ 0b0010100011,
244+ 0b0010100011,
245+ 0b0010100011,
246+ 0b0010100011,
247+ 0b0010100011,
248+ 0b0010100011,
249+ 0b0010100011
250+};
251+
252+struct dglnt_dynclk_reg;
253+struct dglnt_dynclk_mode;
254+struct dglnt_dynclk;
255+
256+struct dglnt_dynclk_reg {
257+ u32 clk0L;
258+ u32 clkFBL;
259+ u32 clkFBH_clk0H;
260+ u32 divclk;
261+ u32 lockL;
262+ u32 fltr_lockH;
263+};
264+
265+struct dglnt_dynclk_mode {
266+ u32 freq;
267+ u32 fbmult;
268+ u32 clkdiv;
269+ u32 maindiv;
270+};
271+
272+struct dglnt_dynclk {
273+ void __iomem *base;
274+ struct clk_hw clk_hw;
275+ unsigned long freq;
276+};
277+
278+u32 dglnt_dynclk_divider(u32 divide)
279+{
280+ u32 output = 0;
281+ u32 highTime = 0;
282+ u32 lowTime = 0;
283+
284+ if ((divide < 1) || (divide > 128))
285+ return ERR_CLKDIVIDER;
286+
287+ if (divide == 1)
288+ return DYNCLK_DIV_1_REGMASK;
289+
290+ highTime = divide / 2;
291+ /* if divide is odd */
292+ if (divide & 0x1) {
293+ lowTime = highTime + 1;
294+ output = 1 << CLK_BIT_WEDGE;
295+ } else {
296+ lowTime = highTime;
297+ }
298+
299+ output |= 0x03F & lowTime;
300+ output |= 0xFC0 & (highTime << 6);
301+ return output;
302+}
303+
304+u32 dglnt_dynclk_count_calc(u32 divide)
305+{
306+ u32 output = 0;
307+ u32 divCalc = 0;
308+
309+ divCalc = dglnt_dynclk_divider(divide);
310+ if (divCalc == ERR_CLKDIVIDER)
311+ output = ERR_CLKCOUNTCALC;
312+ else
313+ output = (0xFFF & divCalc) | ((divCalc << 10) & 0x00C00000);
314+ return output;
315+}
316+
317+
318+int dglnt_dynclk_find_reg(struct dglnt_dynclk_reg *regValues,
319+ struct dglnt_dynclk_mode *clkParams)
320+{
321+ if ((clkParams->fbmult < 2) || clkParams->fbmult > 64)
322+ return -EINVAL;
323+
324+ regValues->clk0L = dglnt_dynclk_count_calc(clkParams->clkdiv);
325+ if (regValues->clk0L == ERR_CLKCOUNTCALC)
326+ return -EINVAL;
327+
328+ regValues->clkFBL = dglnt_dynclk_count_calc(clkParams->fbmult);
329+ if (regValues->clkFBL == ERR_CLKCOUNTCALC)
330+ return -EINVAL;
331+
332+ regValues->clkFBH_clk0H = 0;
333+
334+ regValues->divclk = dglnt_dynclk_divider(clkParams->maindiv);
335+ if (regValues->divclk == ERR_CLKDIVIDER)
336+ return -EINVAL;
337+
338+ regValues->lockL = (u32)(lock_lookup[clkParams->fbmult - 1] &
339+ 0xFFFFFFFF);
340+
341+ regValues->fltr_lockH = (u32)((lock_lookup[clkParams->fbmult - 1] >>
342+ 32) & 0x000000FF);
343+ regValues->fltr_lockH |= ((filter_lookup_low[clkParams->fbmult - 1] <<
344+ 16) & 0x03FF0000);
345+
346+ return 0;
347+}
348+
349+void dglnt_dynclk_write_reg(struct dglnt_dynclk_reg *regValues,
350+ void __iomem *baseaddr)
351+{
352+ writel(regValues->clk0L, baseaddr + OFST_DISPLAY_CLK_L);
353+ writel(regValues->clkFBL, baseaddr + OFST_DISPLAY_FB_L);
354+ writel(regValues->clkFBH_clk0H, baseaddr + OFST_DISPLAY_FB_H_CLK_H);
355+ writel(regValues->divclk, baseaddr + OFST_DISPLAY_DIV);
356+ writel(regValues->lockL, baseaddr + OFST_DISPLAY_LOCK_L);
357+ writel(regValues->fltr_lockH, baseaddr + OFST_DISPLAY_FLTR_LOCK_H);
358+}
359+
360+u32 dglnt_dynclk_find_mode(u32 freq, u32 parentFreq,
361+ struct dglnt_dynclk_mode *bestPick)
362+{
363+ u32 bestError = MMCM_FREQ_OUTMAX;
364+ u32 curError;
365+ u32 curClkMult;
366+ u32 curFreq;
367+ u32 divVal;
368+ u32 curFb, curClkDiv;
369+ u32 minFb = 0;
370+ u32 maxFb = 0;
371+ u32 curDiv = 1;
372+ u32 maxDiv;
373+ bool freq_found = false;
374+
375+ bestPick->freq = 0;
376+ if (parentFreq == 0)
377+ return 0;
378+
379+ /* minimum frequency is actually dictated by VCOmin */
380+ if (freq < MMCM_FREQ_OUTMIN)
381+ freq = MMCM_FREQ_OUTMIN;
382+ if (freq > MMCM_FREQ_OUTMAX)
383+ freq = MMCM_FREQ_OUTMAX;
384+
385+ if (parentFreq > MMCM_FREQ_PFDMAX)
386+ curDiv = 2;
387+ maxDiv = parentFreq / MMCM_FREQ_PFDMIN;
388+ if (maxDiv > MMCM_DIV_MAX)
389+ maxDiv = MMCM_DIV_MAX;
390+
391+ while (curDiv <= maxDiv && !freq_found) {
392+ minFb = curDiv * DIV_ROUND_UP(MMCM_FREQ_VCOMIN, parentFreq);
393+ maxFb = curDiv * (MMCM_FREQ_VCOMAX / parentFreq);
394+ if (maxFb > MMCM_FB_MAX)
395+ maxFb = MMCM_FB_MAX;
396+ if (minFb < MMCM_FB_MIN)
397+ minFb = MMCM_FB_MIN;
398+
399+ divVal = curDiv * freq;
400+ /*
401+ * This multiplier is used to find the best clkDiv value for
402+ * each FB value
403+ */
404+ curClkMult = ((parentFreq * 1000) + (divVal / 2)) / divVal;
405+
406+ curFb = minFb;
407+ while (curFb <= maxFb && !freq_found) {
408+ curClkDiv = ((curClkMult * curFb) + 500) / 1000;
409+ if (curClkDiv > MMCM_CLKDIV_MAX)
410+ curClkDiv = MMCM_CLKDIV_MAX;
411+ if (curClkDiv < MMCM_CLKDIV_MIN)
412+ curClkDiv = MMCM_CLKDIV_MIN;
413+ curFreq = (((parentFreq * curFb) / curDiv) / curClkDiv);
414+ if (curFreq >= freq)
415+ curError = curFreq - freq;
416+ else
417+ curError = freq - curFreq;
418+ if (curError < bestError) {
419+ bestError = curError;
420+ bestPick->clkdiv = curClkDiv;
421+ bestPick->fbmult = curFb;
422+ bestPick->maindiv = curDiv;
423+ bestPick->freq = curFreq;
424+ }
425+ if (!curError)
426+ freq_found = true;
427+ curFb++;
428+ }
429+ curDiv++;
430+ }
431+ return bestPick->freq;
432+}
433+
434+static struct dglnt_dynclk *clk_hw_to_dglnt_dynclk(struct clk_hw *clk_hw)
435+{
436+ return container_of(clk_hw, struct dglnt_dynclk, clk_hw);
437+}
438+
439+
440+static int dglnt_dynclk_enable(struct clk_hw *clk_hw)
441+{
442+ struct dglnt_dynclk *dglnt_dynclk = clk_hw_to_dglnt_dynclk(clk_hw);
443+ unsigned int clock_state;
444+
445+ if (dglnt_dynclk->freq) {
446+ writel(1, dglnt_dynclk->base + OFST_DISPLAY_CTRL);
447+ do {
448+ clock_state = readl(dglnt_dynclk->base +
449+ OFST_DISPLAY_STATUS);
450+ } while (!clock_state);
451+ }
452+ return 0;
453+}
454+
455+static void dglnt_dynclk_disable(struct clk_hw *clk_hw)
456+{
457+ struct dglnt_dynclk *dglnt_dynclk = clk_hw_to_dglnt_dynclk(clk_hw);
458+
459+ writel(0, dglnt_dynclk->base + OFST_DISPLAY_CTRL);
460+}
461+
462+static int dglnt_dynclk_set_rate(struct clk_hw *clk_hw,
463+ unsigned long rate, unsigned long parent_rate)
464+{
465+ struct dglnt_dynclk *dglnt_dynclk = clk_hw_to_dglnt_dynclk(clk_hw);
466+ struct dglnt_dynclk_reg clkReg;
467+ struct dglnt_dynclk_mode clkMode;
468+
469+ if (parent_rate == 0 || rate == 0)
470+ return -EINVAL;
471+ if (rate == dglnt_dynclk->freq)
472+ return 0;
473+
474+ /*
475+ * Convert from Hz to KHz, then multiply by five to account for
476+ * BUFR division
477+ */
478+ rate = (rate + 100) / 200;
479+ /* convert from Hz to KHz */
480+ parent_rate = (parent_rate + 500) / 1000;
481+ if (!dglnt_dynclk_find_mode(rate, parent_rate, &clkMode))
482+ return -EINVAL;
483+
484+ /*
485+ * Write to the PLL dynamic configuration registers to configure it
486+ * with the calculated parameters.
487+ */
488+ dglnt_dynclk_find_reg(&clkReg, &clkMode);
489+ dglnt_dynclk_write_reg(&clkReg, dglnt_dynclk->base);
490+ dglnt_dynclk->freq = clkMode.freq * 200;
491+ dglnt_dynclk_disable(clk_hw);
492+ dglnt_dynclk_enable(clk_hw);
493+
494+ return 0;
495+}
496+
497+static long dglnt_dynclk_round_rate(struct clk_hw *hw, unsigned long rate,
498+ unsigned long *parent_rate)
499+{
500+ struct dglnt_dynclk_mode clkMode;
501+
502+ dglnt_dynclk_find_mode(((rate + 100) / 200),
503+ ((*parent_rate) + 500) / 1000, &clkMode);
504+
505+ return (clkMode.freq * 200);
506+}
507+
508+static unsigned long dglnt_dynclk_recalc_rate(struct clk_hw *clk_hw,
509+ unsigned long parent_rate)
510+{
511+ struct dglnt_dynclk *dglnt_dynclk = clk_hw_to_dglnt_dynclk(clk_hw);
512+
513+ return dglnt_dynclk->freq;
514+}
515+
516+
517+static const struct clk_ops dglnt_dynclk_ops = {
518+ .recalc_rate = dglnt_dynclk_recalc_rate,
519+ .round_rate = dglnt_dynclk_round_rate,
520+ .set_rate = dglnt_dynclk_set_rate,
521+ .enable = dglnt_dynclk_enable,
522+ .disable = dglnt_dynclk_disable,
523+};
524+
525+static const struct of_device_id dglnt_dynclk_ids[] = {
526+ { .compatible = "digilent,axi-dynclk", },
527+ { },
528+};
529+MODULE_DEVICE_TABLE(of, dglnt_dynclk_ids);
530+
531+static int dglnt_dynclk_probe(struct platform_device *pdev)
532+{
533+ const struct of_device_id *id;
534+ struct dglnt_dynclk *dglnt_dynclk;
535+ struct clk_init_data init;
536+ const char *parent_name;
537+ const char *clk_name;
538+ struct resource *mem;
539+ struct clk *clk;
540+
541+ if (!pdev->dev.of_node)
542+ return -ENODEV;
543+
544+ id = of_match_node(dglnt_dynclk_ids, pdev->dev.of_node);
545+ if (!id)
546+ return -ENODEV;
547+
548+ dglnt_dynclk = devm_kzalloc(&pdev->dev, sizeof(*dglnt_dynclk),
549+ GFP_KERNEL);
550+ if (!dglnt_dynclk)
551+ return -ENOMEM;
552+
553+ mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
554+ dglnt_dynclk->base = devm_ioremap_resource(&pdev->dev, mem);
555+ if (IS_ERR(dglnt_dynclk->base))
556+ return PTR_ERR(dglnt_dynclk->base);
557+
558+ parent_name = of_clk_get_parent_name(pdev->dev.of_node, 0);
559+ if (!parent_name)
560+ return -EINVAL;
561+
562+ clk_name = pdev->dev.of_node->name;
563+ of_property_read_string(pdev->dev.of_node, "clock-output-names",
564+ &clk_name);
565+
566+ init.name = clk_name;
567+ init.ops = &dglnt_dynclk_ops;
568+ init.flags = 0;
569+ init.parent_names = &parent_name;
570+ init.num_parents = 1;
571+
572+ dglnt_dynclk->freq = 0;
573+ dglnt_dynclk_disable(&dglnt_dynclk->clk_hw);
574+
575+ dglnt_dynclk->clk_hw.init = &init;
576+ clk = devm_clk_register(&pdev->dev, &dglnt_dynclk->clk_hw);
577+ if (IS_ERR(clk))
578+ return PTR_ERR(clk);
579+
580+ return of_clk_add_provider(pdev->dev.of_node, of_clk_src_simple_get,
581+ clk);
582+}
583+
584+static int dglnt_dynclk_remove(struct platform_device *pdev)
585+{
586+ of_clk_del_provider(pdev->dev.of_node);
587+
588+ return 0;
589+}
590+
591+static struct platform_driver dglnt_dynclk_driver = {
592+ .driver = {
593+ .name = "dglnt-dynclk",
594+ .owner = THIS_MODULE,
595+ .of_match_table = dglnt_dynclk_ids,
596+ },
597+ .probe = dglnt_dynclk_probe,
598+ .remove = dglnt_dynclk_remove,
599+};
600+module_platform_driver(dglnt_dynclk_driver);
601+
602+MODULE_LICENSE("GPL v2");
603+MODULE_AUTHOR("Sam Bobrowicz <sbobrowicz@digilentinc.com>");
604+MODULE_DESCRIPTION("CCF Driver for Digilent axi_dynclk IP Core");
605--
6062.14.2
607
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch
new file mode 100644
index 00000000..a98d84c5
--- /dev/null
+++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch
@@ -0,0 +1,54 @@
1From 1a18e2b514ae9e75145597ac509a87f656c976ba Mon Sep 17 00:00:00 2001
2From: Nathan Rossi <nathan@nathanrossi.com>
3Date: Mon, 2 May 2016 23:46:42 +1000
4Subject: [PATCH 3/3] drm: xilinx: Fix DPMS transition to on
5
6Fix the issues where the VTC is reset (losing its timing config).
7
8Also fix the issue where the plane destroys its DMA descriptors and
9marks the DMA channels as inactive but never recreates the descriptors
10and never updates the active state when turning DPMS back on.
11
12Signed-off-by: Nathan Rossi <nathan@nathanrossi.com>
13Upstream-Status: Pending [This is a workaround]
14---
15 drivers/gpu/drm/xilinx/xilinx_drm_crtc.c | 1 -
16 drivers/gpu/drm/xilinx/xilinx_drm_plane.c | 3 ++-
17 2 files changed, 2 insertions(+), 2 deletions(-)
18
19diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
20index 631d35b921..93dbd4b58a 100644
21--- a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
22+++ b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
23@@ -88,7 +88,6 @@ static void xilinx_drm_crtc_dpms(struct drm_crtc *base_crtc, int dpms)
24 default:
25 if (crtc->vtc) {
26 xilinx_vtc_disable(crtc->vtc);
27- xilinx_vtc_reset(crtc->vtc);
28 }
29 if (crtc->cresample) {
30 xilinx_cresample_disable(crtc->cresample);
31diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
32index 6a248b72d4..d2518a4bdf 100644
33--- a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
34+++ b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
35@@ -140,7 +140,7 @@ void xilinx_drm_plane_commit(struct drm_plane *base_plane)
36 for (i = 0; i < MAX_NUM_SUB_PLANES; i++) {
37 struct xilinx_drm_plane_dma *dma = &plane->dma[i];
38
39- if (dma->chan && dma->is_active) {
40+ if (dma->chan) {
41 flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT;
42 desc = dmaengine_prep_interleaved_dma(dma->chan,
43 &dma->xt,
44@@ -153,6 +153,7 @@ void xilinx_drm_plane_commit(struct drm_plane *base_plane)
45 dmaengine_submit(desc);
46
47 dma_async_issue_pending(dma->chan);
48+ dma->is_active = true;
49 }
50 }
51 }
52--
532.14.2
54
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0004-minized-wifi-bluetooth.cfg b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0004-minized-wifi-bluetooth.cfg
new file mode 100644
index 00000000..f71e53ab
--- /dev/null
+++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2022.2/0004-minized-wifi-bluetooth.cfg
@@ -0,0 +1,33 @@
1#
2# Bluetooth config
3#
4CONFIG_BT=y
5CONFIG_BT_BREDR=y
6CONFIG_BT_HS=y
7CONFIG_BT_LE=y
8CONFIG_BT_BCM=y
9CONFIG_BT_HCIUART=y
10CONFIG_BT_HCIUART_H4=y
11CONFIG_BT_HCIUART_BCM=y
12CONFIG_BT_HIDP=y
13CONFIG_CFG80211=y
14CONFIG_CFG80211_DEFAULT_PS=y
15CONFIG_CFG80211_CRDA_SUPPORT=y
16CONFIG_BRCMUTIL=y
17CONFIG_BRCMFMAC=y
18CONFIG_BRCMFMAC_PROTO_BCDC=y
19CONFIG_BRCMFMAC_SDIO=y
20CONFIG_CRYPTO_BLKCIPHER=y
21CONFIG_CRYPTO_MANAGER=y
22CONFIG_CRYPTO_ECB=y
23CONFIG_CRYPTO_CMAC=y
24CONFIG_CRYPTO_SHA256=y
25
26#
27# Regulator config
28#
29CONFIG_REGMAP_IRQ=y
30CONFIG_I2C_XILINX=y
31CONFIG_MFD_DA9062=y
32CONFIG_REGULATOR_DA9062=y
33
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx_2022.1.bbappend b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx_2022.1.bbappend
new file mode 100644
index 00000000..c789c7a9
--- /dev/null
+++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx_2022.1.bbappend
@@ -0,0 +1,12 @@
1FILESEXTRAPATHS:prepend := "${THISDIR}/linux-xlnx/v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}:"
2
3# Note: These patches are very old and doesn't apply on top of 5.x
4# kernel. For more details refer README.md file.
5
6#SRC_URI:append:zybo-linux-bd-zynq7 = " \
7# file://0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch \
8# file://0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch \
9# file://0003-drm-xilinx-Fix-DPMS-transition-to-on.patch \
10# "
11
12SRC_URI:append:minized-zynq7 = " file://0004-minized-wifi-bluetooth.cfg"
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx_2022.2.bbappend b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx_2022.2.bbappend
new file mode 100644
index 00000000..c789c7a9
--- /dev/null
+++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx_2022.2.bbappend
@@ -0,0 +1,12 @@
1FILESEXTRAPATHS:prepend := "${THISDIR}/linux-xlnx/v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}:"
2
3# Note: These patches are very old and doesn't apply on top of 5.x
4# kernel. For more details refer README.md file.
5
6#SRC_URI:append:zybo-linux-bd-zynq7 = " \
7# file://0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch \
8# file://0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch \
9# file://0003-drm-xilinx-Fix-DPMS-transition-to-on.patch \
10# "
11
12SRC_URI:append:minized-zynq7 = " file://0004-minized-wifi-bluetooth.cfg"
diff --git a/meta-xilinx-core/conf/layer.conf b/meta-xilinx-core/conf/layer.conf
index 5441fd96..d7eb9aa8 100644
--- a/meta-xilinx-core/conf/layer.conf
+++ b/meta-xilinx-core/conf/layer.conf
@@ -46,6 +46,8 @@ XILINX_RELEASE_VERSION ??= "v2023.2"
46 46
47BUILDCFG_VARS:append = " SOC_VARIANT XILINX_RELEASE_VERSION" 47BUILDCFG_VARS:append = " SOC_VARIANT XILINX_RELEASE_VERSION"
48 48
49XILINX_QEMU_VERSION[v2022.1] = "v7.1.0-xilinx-v2022.1%"
50XILINX_QEMU_VERSION[v2022.2] = "v7.1.0-xilinx-v2022.2%"
49XILINX_QEMU_VERSION[v2023.1] = "v7.1.0-xilinx-v2023.1%" 51XILINX_QEMU_VERSION[v2023.1] = "v7.1.0-xilinx-v2023.1%"
50XILINX_QEMU_VERSION[v2023.2] = "v7.1.0-xilinx-v2023.2%" 52XILINX_QEMU_VERSION[v2023.2] = "v7.1.0-xilinx-v2023.2%"
51PREFERRED_VERSION_qemu-xilinx ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" 53PREFERRED_VERSION_qemu-xilinx ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}"
@@ -63,7 +65,9 @@ XILINX_UBOOT_VERSION[v2023.2] = "v2023.01-xilinx-v2023.2%"
63PREFERRED_VERSION_u-boot-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" 65PREFERRED_VERSION_u-boot-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}"
64PREFERRED_VERSION_u-boot-tools-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" 66PREFERRED_VERSION_u-boot-tools-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}"
65 67
66XILINX_LINUX_VERSION[v2023.1] = "6.1.5-xilinx-v2023.1%" 68XILINX_LINUX_VERSION[v2022.1] = "5.15.19-xilinx-v2022.1%"
69XILINX_LINUX_VERSION[v2022.2] = "5.15.36-xilinx-v2022.2%"
70XILINX_LINUX_VERSION[v2023.1] = "6.1.30-xilinx-v2023.1%"
67XILINX_LINUX_VERSION[v2023.2] = "6.1.30-xilinx-v2023.2%" 71XILINX_LINUX_VERSION[v2023.2] = "6.1.30-xilinx-v2023.2%"
68PREFERRED_VERSION_linux-xlnx ?= "${@d.getVarFlag('XILINX_LINUX_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" 72PREFERRED_VERSION_linux-xlnx ?= "${@d.getVarFlag('XILINX_LINUX_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}"
69 73
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.3.bb b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.3.bb
new file mode 100644
index 00000000..6a4fd880
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.3.bb
@@ -0,0 +1,47 @@
1SUMMARY = "Xilinx AI Engine runtime"
2DESCRIPTION = "This library provides APIs for the runtime support of the Xilinx AI Engine IP"
3
4require aie-rt.inc
5
6SECTION = "libs"
7
8AIEDIR ?= "${S}/driver"
9S = "${WORKDIR}/git"
10I = "${AIEDIR}/include"
11
12COMPATIBLE_MACHINE = "^$"
13COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core"
14COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}"
15PV = "3.3"
16
17IOBACKENDS ?= "Linux"
18
19DEPENDS = "${@bb.utils.contains('IOBACKENDS', 'metal', 'libmetal', '', d)}"
20RDEPENDS:${PN} = "${@bb.utils.contains('IOBACKENDS', 'metal', 'libmetal', '', d)}"
21
22PROVIDES = "libxaiengine"
23RPROVIDES:${PN} = "libxaiengine"
24
25# The makefile isn't ready for parallel execution at the moment
26PARALLEL_MAKE = "-j 1"
27
28CFLAGS += "-Wall -Wextra -fno-thread-jumps -fno-tree-pre"
29CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'Linux', ' -D__AIELINUX__', '', d)}"
30CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'metal', ' -D__AIEMETAL__', '', d)}"
31EXTRA_OEMAKE = "-C ${AIEDIR}/src -f Makefile.Linux CFLAGS='${CFLAGS}'"
32
33
34do_compile(){
35 oe_runmake
36}
37
38do_install(){
39 install -d ${D}${includedir}
40 install ${I}/*.h ${D}${includedir}/
41 install -d ${D}${includedir}/xaiengine
42 install ${I}/xaiengine/*.h ${D}${includedir}/xaiengine/
43 install -d ${D}${libdir}
44 cp -dr ${AIEDIR}/src/*.so* ${D}${libdir}
45}
46
47PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}"
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb
index e364462b..f86c5985 100644
--- a/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb
@@ -1,7 +1,7 @@
1SUMMARY = "Xilinx AI Engine runtime" 1SUMMARY = "Xilinx AI Engine runtime"
2DESCRIPTION = "This library provides APIs for the runtime support of the Xilinx AI Engine IP" 2DESCRIPTION = "This library provides APIs for the runtime support of the Xilinx AI Engine IP"
3 3
4require aie-rt.inc 4require aie-rt-2022.inc
5 5
6SECTION = "libs" 6SECTION = "libs"
7 7
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/aie-rt-2022.inc b/meta-xilinx-core/recipes-bsp/ai-engine/aie-rt-2022.inc
new file mode 100644
index 00000000..85121654
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/aie-rt-2022.inc
@@ -0,0 +1,11 @@
1SECTION = "libs"
2
3REPO ?= "git://github.com/Xilinx/aie-rt.git;protocol=https"
4
5BRANCH ?= "xlnx_rel_v2022.2"
6SRCREV ?= "ae24c8ede049906323510693f37e6167a963fd0e"
7
8LICENSE = "BSD-3-Clause"
9LIC_FILES_CHKSUM ?= "file://license.txt;md5=b81abf1f508952331dd7d2ab36408f5b"
10
11SRC_URI = "${REPO};branch=${BRANCH}"
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.4.bb b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.4.bb
new file mode 100644
index 00000000..641c39a9
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.4.bb
@@ -0,0 +1,33 @@
1SUMMARY = "Xilinx AI Engine FAL(Functional Abstraction Layer)"
2DESCRIPTION = "AIE FAL provides functional abstraction APIs for runtime support of Xilinx AI Engine IP"
3
4require aie-rt.inc
5
6SECTION = "devel"
7
8XAIEFAL_DIR ?= "fal"
9S = "${WORKDIR}/git"
10
11COMPATIBLE_MACHINE = "^$"
12COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core"
13COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}"
14
15IOBACKENDS ?= "Linux"
16
17PROVIDES = "aiefal"
18ALLOW_EMPTY:${PN} = "1"
19
20inherit pkgconfig cmake
21
22DEPENDS = "libxaiengine"
23
24OECMAKE_SOURCEPATH = "${S}/${XAIEFAL_DIR}"
25
26EXTRA_OECMAKE = "-DWITH_TESTS=OFF "
27EXTRA_OECMAKE:append = "${@'-DWITH_EXAMPLES=ON' if d.getVar('WITH_EXAMPLES') == 'y' else '-DWITH_EXAMPLES=OFF'}"
28
29FILES:${PN}-demos = " \
30 ${bindir}/* \
31"
32
33PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}"
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb
index 6ac86a1b..2c6c9cd1 100644
--- a/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb
@@ -1,7 +1,7 @@
1SUMMARY = "Xilinx AI Engine FAL(Functional Abstraction Layer)" 1SUMMARY = "Xilinx AI Engine FAL(Functional Abstraction Layer)"
2DESCRIPTION = "AIE FAL provides functional abstraction APIs for runtime support of Xilinx AI Engine IP" 2DESCRIPTION = "AIE FAL provides functional abstraction APIs for runtime support of Xilinx AI Engine IP"
3 3
4require aie-rt.inc 4require aie-rt-2022.inc
5 5
6SECTION = "devel" 6SECTION = "devel"
7 7
diff --git a/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2022.1.bb b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2022.1.bb
new file mode 100644
index 00000000..f02bb879
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2022.1.bb
@@ -0,0 +1,8 @@
1ATF_VERSION = "2.6"
2SRCREV = "67ca59c67f542322554d78820bf9ddaa736d6a84"
3BRANCH = "xlnx_rebase_v2.6"
4LIC_FILES_CHKSUM = "file://license.rst;md5=1dd070c98a281d18d9eefd938729b031"
5
6
7include arm-trusted-firmware.inc
8
diff --git a/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2022.2.bb b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2022.2.bb
new file mode 100644
index 00000000..5ef2e6ac
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2022.2.bb
@@ -0,0 +1,8 @@
1ATF_VERSION = "2.6"
2SRCREV = "0897efd45ccad29a3dbab610578c70e3a52b2caa"
3BRANCH = "xlnx_rebase_v2.6"
4LIC_FILES_CHKSUM = "file://license.rst;md5=1dd070c98a281d18d9eefd938729b031"
5
6
7include arm-trusted-firmware.inc
8
diff --git a/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2023.1.bb b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2023.1.bb
index 454fbe86..2bcbe7d4 100644
--- a/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2023.1.bb
+++ b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2023.1.bb
@@ -1,5 +1,5 @@
1ATF_VERSION = "2.8" 1ATF_VERSION = "2.8"
2SRCREV = "6fcc6b179dc14de0f6ba19a1829e597b60f7aee5" 2SRCREV = "c9b71dc96f3f18ca94cad590612aae3224c8c84d"
3BRANCH = "xlnx_rebase_v2.8" 3BRANCH = "xlnx_rebase_v2.8"
4LIC_FILES_CHKSUM = "file://license.rst;md5=1dd070c98a281d18d9eefd938729b031" 4LIC_FILES_CHKSUM = "file://license.rst;md5=1dd070c98a281d18d9eefd938729b031"
5 5
diff --git a/meta-xilinx-core/recipes-bsp/bootgen/bootgen_1.0.bb b/meta-xilinx-core/recipes-bsp/bootgen/bootgen_1.0.bb
new file mode 100644
index 00000000..fdf28f41
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/bootgen/bootgen_1.0.bb
@@ -0,0 +1,31 @@
1SUMMARY = "Building and installing bootgen"
2DESCRIPTION = "Building and installing bootgen, a Xilinx tool that lets you stitch binary files together and generate device boot images"
3
4LICENSE = "Apache-2.0"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=d526b6d0807bf263b97da1da876f39b1"
6
7S = "${WORKDIR}/git"
8
9DEPENDS += "openssl"
10RDEPENDS:${PN} += "openssl"
11
12REPO ?= "git://github.com/Xilinx/bootgen.git;protocol=https"
13BRANCH ?= "xlnx_rel_v2022.2"
14SRCREV = "cf4ba93b99644dc4429ef633471a639e1382f0e7"
15
16BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
17SRC_URI = "${REPO};${BRANCHARG}"
18
19EXTRA_OEMAKE += 'CROSS_COMPILER="${CXX}" -C ${S}'
20CXXFLAGS:append = " -std=c++0x"
21
22TARGET_CC_ARCH += "${LDFLAGS}"
23
24do_install() {
25 install -d ${D}${bindir}
26 install -Dm 0755 ${S}/bootgen ${D}${bindir}
27}
28
29FILES:${PN} = "${bindir}/bootgen"
30
31BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_1.0.bb b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_1.0.bb
new file mode 100644
index 00000000..b4de4fe6
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_1.0.bb
@@ -0,0 +1,78 @@
1SUMMARY = "Xilinx dfx-mgr libraries"
2DESCRIPTION = "Xilinx Runtime User Space Libraries and Binaries"
3
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=d67bcef754e935bf77b6d7051bd62b5e"
6
7REPO ?= "git://github.com/Xilinx/dfx-mgr.git;protocol=https"
8BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
9SRC_URI = "${REPO};${BRANCHARG}"
10
11BRANCH = "xlnx_rel_v2022.2"
12SRCREV = "bc06691eb35d7f0acb7c2508b6d050d77b0264a0"
13SOMAJOR = "1"
14SOMINOR = "0"
15SOVERSION = "${SOMAJOR}.${SOMINOR}"
16
17COMPATIBLE_MACHINE = "^$"
18COMPATIBLE_MACHINE:zynqmp = "zynqmp"
19COMPATIBLE_MACHINE:versal = "versal"
20
21S = "${WORKDIR}/git"
22
23inherit cmake update-rc.d systemd
24
25DEPENDS += " libwebsockets inotify-tools libdfx zocl libdrm"
26RDEPENDS:${PN} += " fru-print"
27EXTRA_OECMAKE += " \
28 -DCMAKE_SYSROOT:PATH=${RECIPE_SYSROOT} \
29 "
30
31# Workaround for: the comparison will always evaluate as 'true' for the address of 'defaul_accel_name' will never be NULL [-Werror=address]
32CFLAGS += "-Wno-address"
33
34# Workaround for: '__builtin_strncpy' specified bound depends on the length of the source argument [-Werror=stringop-truncation]
35CFLAGS += "-Wno-stringop-truncation"
36
37INITSCRIPT_NAME = "dfx-mgr.sh"
38INITSCRIPT_PARAMS = "start 99 S ."
39
40SYSTEMD_PACKAGES="${PN}"
41SYSTEMD_SERVICE:${PN}="dfx-mgr.service"
42SYSTEMD_AUTO_ENABLE:${PN}="enable"
43
44
45do_install(){
46 install -d ${D}${bindir}
47 install -d ${D}${libdir}
48 install -d ${D}${includedir}
49 install -d ${D}${base_libdir}/firmware/xilinx
50 install -d ${D}${sysconfdir}/dfx-mgrd
51
52 cp ${B}/example/sys/linux/dfx-mgrd-static ${D}${bindir}/dfx-mgrd
53 cp ${B}/example/sys/linux/dfx-mgr-client-static ${D}${bindir}/dfx-mgr-client
54 chrpath -d ${D}${bindir}/dfx-mgrd
55 chrpath -d ${D}${bindir}/dfx-mgr-client
56 install -m 0644 ${S}/src/dfxmgr_client.h ${D}${includedir}
57
58 oe_soinstall ${B}/src/libdfx-mgr.so.${SOVERSION} ${D}${libdir}
59
60 install -m 0755 ${S}/src/daemon.conf ${D}${sysconfdir}/dfx-mgrd/
61
62 if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
63 install -d ${D}${sysconfdir}/init.d/
64 install -m 0755 ${S}/src/dfx-mgr.sh ${D}${sysconfdir}/init.d/
65 fi
66
67 install -m 0755 ${S}/src/dfx-mgr.sh ${D}${bindir}
68 install -m 0755 ${S}/src/scripts/xlnx-firmware-detect ${D}${bindir}
69
70 install -d ${D}${systemd_system_unitdir}
71 install -m 0644 ${S}/src/dfx-mgr.service ${D}${systemd_system_unitdir}
72}
73
74PACKAGES =+ "libdfx-mgr"
75
76FILES:${PN} += "${base_libdir}/firmware/xilinx"
77FILES:${PN} += "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','${sysconfdir}/init.d/dfx-mgr.sh', '', d)} ${systemd_system_unitdir}"
78FILES:libdfx-mgr = "${libdir}/libdfx-mgr.so.${SOVERSION} ${libdir}/libdfx-mgr.so.${SOMAJOR}"
diff --git a/meta-xilinx-core/recipes-bsp/libdfx/libdfx_1.0.bb b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_1.0.bb
new file mode 100644
index 00000000..2c180561
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_1.0.bb
@@ -0,0 +1,23 @@
1SUMMARY = "Xilinx libdfx library"
2DESCRIPTION = "Xilinx libdfx Library and headers"
3
4LICENSE = "MIT & GPL-2.0-or-later"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=94aba86aec117f003b958a52f019f1a7"
6
7BRANCH ?= "xlnx_rel_v2022.2"
8REPO ?= "git://github.com/Xilinx/libdfx.git;protocol=https"
9BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
10SRC_URI = "${REPO};${BRANCHARG}"
11SRCREV = "f2b7bbca9d6936141024becfb92266600eeefc2b"
12
13COMPATIBLE_MACHINE = "^$"
14COMPATIBLE_MACHINE:zynqmp = "zynqmp"
15COMPATIBLE_MACHINE:versal = "versal"
16
17S = "${WORKDIR}/git"
18
19inherit cmake
20
21# Due to an update where the soname/version was defined, we need to use an RREPLACES
22# so updates will work properly.
23RREPLACES:${PN} = "libdfx"
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2022.1.bb b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2022.1.bb
new file mode 100644
index 00000000..eaf8d4ce
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2022.1.bb
@@ -0,0 +1,21 @@
1require u-boot-tools-xlnx.inc
2require u-boot-xlnx-2022.1.inc
3
4# MUST clear CONFIG_VIDEO to avoid a compilation failure trying to construct
5# bmp_logo.h
6SED_CONFIG_EFI:append = ' -e "s/CONFIG_VIDEO=.*/# CONFIG_VIDEO is not set/"'
7
8# Default do_compile fails with:
9# | error: object directory ../downloads/git2/github.com.Xilinx.u-boot-xlnx.git/objects does not exist; check .git/objects/info/alternates.
10# The regular workaround of calling 'git diff' seems to be problematic.
11do_compile () {
12 oe_runmake -C ${S} tools-only_defconfig O=${B}
13
14 # Disable CONFIG_CMD_LICENSE, license.h is not used by tools and
15 # generating it requires bin2header tool, which for target build
16 # is built with target tools and thus cannot be executed on host.
17 sed -i -e "s/CONFIG_CMD_LICENSE=.*/# CONFIG_CMD_LICENSE is not set/" ${SED_CONFIG_EFI} ${B}/.config
18
19 oe_runmake -C ${S} cross_tools NO_SDL=1 O=${B}
20}
21
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2022.2.bb b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2022.2.bb
new file mode 100644
index 00000000..44636872
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2022.2.bb
@@ -0,0 +1,21 @@
1require u-boot-tools-xlnx.inc
2require u-boot-xlnx-2022.2.inc
3
4# MUST clear CONFIG_VIDEO to avoid a compilation failure trying to construct
5# bmp_logo.h
6SED_CONFIG_EFI:append = ' -e "s/CONFIG_VIDEO=.*/# CONFIG_VIDEO is not set/"'
7
8# Default do_compile fails with:
9# | error: object directory ../downloads/git2/github.com.Xilinx.u-boot-xlnx.git/objects does not exist; check .git/objects/info/alternates.
10# The regular workaround of calling 'git diff' seems to be problematic.
11do_compile () {
12 oe_runmake -C ${S} tools-only_defconfig O=${B}
13
14 # Disable CONFIG_CMD_LICENSE, license.h is not used by tools and
15 # generating it requires bin2header tool, which for target build
16 # is built with target tools and thus cannot be executed on host.
17 sed -i -e "s/CONFIG_CMD_LICENSE=.*/# CONFIG_CMD_LICENSE is not set/" ${SED_CONFIG_EFI} ${B}/.config
18
19 oe_runmake -C ${S} cross_tools NO_SDL=1 O=${B}
20}
21
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2022.1.inc b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2022.1.inc
new file mode 100644
index 00000000..a0c0b50d
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2022.1.inc
@@ -0,0 +1,17 @@
1UBOOT_VERSION = "v2021.01"
2
3UBRANCH ?= "xlnx_rebase_v2022.01_2022.1_update"
4
5SRCREV = "91ad7924e7f59584d597353e1bb86794341e0a7e"
6
7LICENSE = "GPL-2.0-or-later"
8LIC_FILES_CHKSUM = "file://README;beginline=1;endline=4;md5=744e7e3bb0c94b4b9f6b3db3bf893897"
9
10# u-boot-xlnx has support for these
11HAS_PLATFORM_INIT ?= " \
12 xilinx_zynqmp_virt_config \
13 xilinx_zynq_virt_defconfig \
14 xilinx_versal_vc_p_a2197_revA_x_prc_01_revA \
15 "
16
17DEPENDS += "bc-native dtc-native python3-setuptools-native gnutls-native"
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2022.2.inc b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2022.2.inc
new file mode 100644
index 00000000..6415861d
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2022.2.inc
@@ -0,0 +1,17 @@
1UBOOT_VERSION = "v2021.01"
2
3UBRANCH ?= "xlnx_rebase_v2022.01"
4
5SRCREV = "b31476685debf5512ed0d4e8000fa5167a22f530"
6
7LICENSE = "GPL-2.0-or-later"
8LIC_FILES_CHKSUM = "file://README;beginline=1;endline=4;md5=744e7e3bb0c94b4b9f6b3db3bf893897"
9
10# u-boot-xlnx has support for these
11HAS_PLATFORM_INIT ?= " \
12 xilinx_zynqmp_virt_config \
13 xilinx_zynq_virt_defconfig \
14 xilinx_versal_vc_p_a2197_revA_x_prc_01_revA \
15 "
16
17DEPENDS += "bc-native dtc-native python3-setuptools-native gnutls-native"
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2023.1.inc b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2023.1.inc
index fd51561a..72f43f71 100644
--- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2023.1.inc
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2023.1.inc
@@ -1,8 +1,8 @@
1UBOOT_VERSION = "v2023.01" 1UBOOT_VERSION = "v2023.01"
2 2
3UBRANCH = "xlnx_rebase_v2023.01" 3UBRANCH = "xlnx_rebase_v2023.01_update"
4 4
5SRCREV = "8624651f9ae49d326e29d9ec9a80a881a769640a" 5SRCREV = "1689570b68dd3827e527a520805aa0bb7f58ee09"
6 6
7LICENSE = "GPL-2.0-or-later" 7LICENSE = "GPL-2.0-or-later"
8LIC_FILES_CHKSUM = "file://README;beginline=1;endline=4;md5=744e7e3bb0c94b4b9f6b3db3bf893897" 8LIC_FILES_CHKSUM = "file://README;beginline=1;endline=4;md5=744e7e3bb0c94b4b9f6b3db3bf893897"
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2022.1.bb b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2022.1.bb
new file mode 100644
index 00000000..c1c45e56
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2022.1.bb
@@ -0,0 +1,4 @@
1
2require u-boot-xlnx.inc
3require u-boot-spl-zynq-init.inc
4require u-boot-xlnx-2022.1.inc
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2022.2.bb b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2022.2.bb
new file mode 100644
index 00000000..b10f321b
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2022.2.bb
@@ -0,0 +1,4 @@
1
2require u-boot-xlnx.inc
3require u-boot-spl-zynq-init.inc
4require u-boot-xlnx-2022.2.inc
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2022.1.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2022.1.bb
new file mode 100644
index 00000000..7c734cd6
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2022.1.bb
@@ -0,0 +1,8 @@
1
2require qemu-devicetrees.inc
3
4BRANCH ?= "xlnx_rel_v2022.1"
5SRCREV ?= "0499324af1178057c3730b0989c8fb5c5bbc4cf8"
6
7FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
8SRC_URI:append = " file://0001-Makefile-Use-python3-instead-of-python.patch"
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2022.2.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2022.2.bb
new file mode 100644
index 00000000..6675ba3e
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2022.2.bb
@@ -0,0 +1,6 @@
1
2require qemu-devicetrees.inc
3
4BRANCH ?= "xlnx_rel_v2022.2"
5SRCREV ?= "cf5d357e16c13ac447861f908e83951ffb7b4301"
6
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2023.1.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2023.1.bb
index 91e787bd..dc1feda4 100644
--- a/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2023.1.bb
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2023.1.bb
@@ -2,5 +2,5 @@
2require qemu-devicetrees.inc 2require qemu-devicetrees.inc
3 3
4BRANCH ?= "xlnx_rel_v2023.1" 4BRANCH ?= "xlnx_rel_v2023.1"
5SRCREV ?= "1c45adcde1fc06432c01be250bf668c6477d8459" 5SRCREV ?= "56538937584f527fb408347c3b430142e74723e8"
6 6
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2022.1.inc b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2022.1.inc
new file mode 100644
index 00000000..bb8fac70
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2022.1.inc
@@ -0,0 +1,8 @@
1# Note this isn't really the 2022.1 or 2022.2 version of qemu-xilinx
2# Instead it's the current master version, as qemu 6.1.0 doesn't
3# work reliabily anymore.
4
5XILINX_QEMU_VERSION = "v7.1.0"
6BRANCH = "master"
7SRCREV = "21adc9f99e813fb24fb65421259b5b0614938376"
8
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2022.2.inc b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2022.2.inc
new file mode 100644
index 00000000..bb8fac70
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2022.2.inc
@@ -0,0 +1,8 @@
1# Note this isn't really the 2022.1 or 2022.2 version of qemu-xilinx
2# Instead it's the current master version, as qemu 6.1.0 doesn't
3# work reliabily anymore.
4
5XILINX_QEMU_VERSION = "v7.1.0"
6BRANCH = "master"
7SRCREV = "21adc9f99e813fb24fb65421259b5b0614938376"
8
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-6.1.0/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-6.1.0/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch
deleted file mode 100644
index 4298964d..00000000
--- a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-6.1.0/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch
+++ /dev/null
@@ -1,29 +0,0 @@
1From b51e6dd833172954c718bd600d846540eeb07220 Mon Sep 17 00:00:00 2001
2From: He Zhe <zhe.he@windriver.com>
3Date: Wed, 28 Aug 2019 19:56:28 +0800
4Subject: [PATCH] configure: Add pkg-config handling for libgcrypt
5
6libgcrypt may also be controlled by pkg-config, this patch adds pkg-config
7handling for libgcrypt.
8
9Upstream-Status: Denied [https://lists.nongnu.org/archive/html/qemu-devel/2019-08/msg06333.html]
10
11Signed-off-by: He Zhe <zhe.he@windriver.com>
12
13---
14 meson.build | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/meson.build b/meson.build
18index b3e7ec0e9..4cbe715b7 100644
19--- a/meson.build
20+++ b/meson.build
21@@ -874,7 +874,7 @@ endif
22 if not gnutls_crypto.found()
23 if (not get_option('gcrypt').auto() or have_system) and not get_option('nettle').enabled()
24 gcrypt = dependency('libgcrypt', version: '>=1.8',
25- method: 'config-tool',
26+ method: 'pkg-config',
27 required: get_option('gcrypt'),
28 kwargs: static_kwargs)
29 # Debian has removed -lgpg-error from libgcrypt-config
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-6.1.0/cross.patch b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-6.1.0/cross.patch
deleted file mode 100644
index bdb77ec7..00000000
--- a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-6.1.0/cross.patch
+++ /dev/null
@@ -1,40 +0,0 @@
1From f51ece86f84c877f255746cba22a6745f37d2b7f Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Tue, 5 Jan 2021 23:00:14 +0000
4Subject: [PATCH] qemu: Upgrade 5.1.0->5.2.0
5
6We need to be able to trigger configure's cross code but we don't want
7to set cross_prefix as it does other things we don't want. Patch things
8so we can do what we need in the target config case.
9
10Upstream-Status: Inappropriate [may be rewritten in a way upstream may accept?]
11Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
12---
13 configure | 4 ----
14 1 file changed, 4 deletions(-)
15
16diff --git a/configure b/configure
17index 9a79a004d..563b7827f 100755
18--- a/configure
19+++ b/configure
20@@ -5128,7 +5128,6 @@ if test "$skip_meson" = no; then
21 fi
22 echo "strip = [$(meson_quote $strip)]" >> $cross
23 echo "windres = [$(meson_quote $windres)]" >> $cross
24- if test "$cross_compile" = "yes"; then
25 cross_arg="--cross-file config-meson.cross"
26 echo "[host_machine]" >> $cross
27 if test "$mingw32" = "yes" ; then
28@@ -5160,9 +5159,6 @@ if test "$skip_meson" = no; then
29 else
30 echo "endian = 'little'" >> $cross
31 fi
32- else
33- cross_arg="--native-file config-meson.cross"
34- fi
35 mv $cross config-meson.cross
36
37 rm -rf meson-private meson-info meson-logs
38--
392.17.1
40
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native.inc b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native.inc
deleted file mode 100644
index b22ab432..00000000
--- a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native.inc
+++ /dev/null
@@ -1,11 +0,0 @@
1require recipes-devtools/qemu/qemu-native.inc
2require qemu-xilinx.inc
3
4DEPENDS = "glib-2.0-native zlib-native ninja-native meson-native"
5
6SRC_URI:remove = "file://0012-fix-libcap-header-issue-on-some-distro.patch"
7SRC_URI:remove = "file://0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch"
8
9do_install:append(){
10 rm -rf ${D}${datadir}/icons
11}
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2022.1.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2022.1.bb
new file mode 100644
index 00000000..42794f55
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2022.1.bb
@@ -0,0 +1,9 @@
1require qemu-xilinx-2022.1.inc
2require qemu-xilinx-native-7.1.inc
3require qemu-native-alt.inc
4
5BPN = "qemu-xilinx"
6
7EXTRA_OECONF:append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent"
8
9PACKAGECONFIG ??= "pie"
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2022.2.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2022.2.bb
new file mode 100644
index 00000000..e6a69f3a
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2022.2.bb
@@ -0,0 +1,9 @@
1require qemu-xilinx-2022.2.inc
2require qemu-xilinx-native-7.1.inc
3require qemu-native-alt.inc
4
5BPN = "qemu-xilinx"
6
7EXTRA_OECONF:append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent"
8
9PACKAGECONFIG ??= "pie"
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2022.1.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2022.1.bb
new file mode 100644
index 00000000..6a2742bf
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2022.1.bb
@@ -0,0 +1,26 @@
1require qemu-system-native-alt.inc
2require qemu-xilinx-2022.1.inc
3require qemu-xilinx-native-7.1.inc
4
5PROVIDES = "qemu-system-native"
6
7EXTRA_OECONF:append = " --target-list=${@get_qemu_system_target_list(d)}"
8
9PACKAGECONFIG ??= "fdt alsa kvm gcrypt pie slirp"
10
11PACKAGECONFIG:remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
12
13DEPENDS += "pixman-native qemu-xilinx-native bison-native ninja-native meson-native"
14DEPENDS += "qemu-xilinx-multiarch-helper-native"
15
16do_install:append() {
17 # The following is also installed by qemu-native
18 rm -f ${D}${datadir}/qemu/trace-events-all
19 rm -rf ${D}${datadir}/qemu/keymaps
20 rm -rf ${D}${datadir}/icons
21 rm -rf ${D}${includedir}/qemu-plugin.h
22
23 # Install qmp.py to be used with testimage
24 install -d ${D}${libdir}/qemu-python/qmp/
25 install -D ${S}/python/qemu/qmp/* ${D}${libdir}/qemu-python/qmp/
26}
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2022.2.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2022.2.bb
new file mode 100644
index 00000000..1f02812d
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2022.2.bb
@@ -0,0 +1,26 @@
1require qemu-system-native-alt.inc
2require qemu-xilinx-2022.2.inc
3require qemu-xilinx-native-7.1.inc
4
5PROVIDES = "qemu-system-native"
6
7EXTRA_OECONF:append = " --target-list=${@get_qemu_system_target_list(d)}"
8
9PACKAGECONFIG ??= "fdt alsa kvm gcrypt pie slirp"
10
11PACKAGECONFIG:remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
12
13DEPENDS += "pixman-native qemu-xilinx-native bison-native ninja-native meson-native"
14DEPENDS += "qemu-xilinx-multiarch-helper-native"
15
16do_install:append() {
17 # The following is also installed by qemu-native
18 rm -f ${D}${datadir}/qemu/trace-events-all
19 rm -rf ${D}${datadir}/qemu/keymaps
20 rm -rf ${D}${datadir}/icons
21 rm -rf ${D}${includedir}/qemu-plugin.h
22
23 # Install qmp.py to be used with testimage
24 install -d ${D}${libdir}/qemu-python/qmp/
25 install -D ${S}/python/qemu/qmp/* ${D}${libdir}/qemu-python/qmp/
26}
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx.inc b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx.inc
deleted file mode 100644
index 788a3fe0..00000000
--- a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx.inc
+++ /dev/null
@@ -1,47 +0,0 @@
1SUMMARY = "Xilinx's fork of a fast open source processor emulator"
2HOMEPAGE = "https://github.com/xilinx/qemu/"
3
4# x86_64 is needed to build nativesdks
5QEMU_TARGETS = "aarch64 arm microblaze microblazeel x86_64"
6
7LIC_FILES_CHKSUM = " \
8 file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
9 file://COPYING.LIB;endline=24;md5=8c5efda6cf1e1b03dcfd0e6c0d271c7f \
10 "
11DEPENDS = "glib-2.0 zlib pixman bison-native ninja-native meson-native"
12
13FILESEXTRAPATHS:prepend := "${THISDIR}/qemu-xilinx-6.1.0:"
14
15PV = "${XILINX_QEMU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
16REPO ?= "gitsm://github.com/Xilinx/qemu.git;protocol=https"
17
18BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
19SRC_URI = "${REPO};${BRANCHARG}"
20
21SRC_URI:append = " file://0010-configure-Add-pkg-config-handling-for-libgcrypt.patch"
22
23S = "${WORKDIR}/git"
24
25# Disable KVM completely
26PACKAGECONFIG:remove = "kvm"
27PACKAGECONFIG:append = " fdt sdl gcrypt pie slirp"
28
29
30# Remove when version is in sync with core oe-core
31PACKAGECONFIG:remove:class-nativesdk= "pulsedio"
32PACKAGECONFIG:remove:class-native = "pulsedio"
33PACKAGECONFIG[alsa] = "--audio-drv-list=alsa,,alsa-lib"
34PACKAGECONFIG[pulsedio] = "--audio-drv-list=pa,,pulseaudio"
35PACKAGECONFIG[selinux] = ""
36PACKAGECONFIG[slirp] = "--enable-slirp=git,--disable-slirp,,"
37PACKAGECONFIG[jack] = ""
38
39DISABLE_STATIC:pn-${PN} = ""
40
41do_install:append() {
42 # Prevent QA warnings about installed ${localstatedir}/run
43 if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
44}
45
46FILES:${PN} += "${datadir}/qemu/"
47FILES:${PN}:append:class-nativesdk:mingw32 = " ${SDKPATHNATIVE}"
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2022.1.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2022.1.bb
new file mode 100644
index 00000000..04b0efe4
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2022.1.bb
@@ -0,0 +1,24 @@
1require qemu-xilinx-2022.1.inc
2require recipes-devtools/qemu/qemu.inc
3require qemu-xilinx-7.1.inc
4require qemu-alt.inc
5
6# Links to libmali-xlnx, so it becomes MACHINE_ARCH specific
7DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}"
8MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}"
9PACKAGE_ARCH:class-target = "${@bb.utils.contains_any('DEPENDS', 'libepoxy virglrenderer', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}"
10
11BBCLASSEXTEND = "nativesdk"
12
13RDEPENDS:${PN}:class-target += "bash"
14
15PROVIDES:class-nativesdk = "nativesdk-qemu"
16RPROVIDES:${PN}:class-nativesdk = "nativesdk-qemu"
17
18EXTRA_OECONF:append:class-target = " --target-list=${@get_qemu_target_list(d)}"
19EXTRA_OECONF:append:class-nativesdk = " --target-list=${@get_qemu_target_list(d)}"
20EXTRA_OECONF:append:class-target:mipsarcho32 = "${@bb.utils.contains('BBEXTENDCURR', 'multilib', ' --disable-capstone', '', d)}"
21
22do_install:append:class-nativesdk() {
23 ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
24}
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2022.2.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2022.2.bb
new file mode 100644
index 00000000..9d3ad975
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2022.2.bb
@@ -0,0 +1,24 @@
1require qemu-xilinx-2022.2.inc
2require recipes-devtools/qemu/qemu.inc
3require qemu-xilinx-7.1.inc
4require qemu-alt.inc
5
6# Links to libmali-xlnx, so it becomes MACHINE_ARCH specific
7DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}"
8MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}"
9PACKAGE_ARCH:class-target = "${@bb.utils.contains_any('DEPENDS', 'libepoxy virglrenderer', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}"
10
11BBCLASSEXTEND = "nativesdk"
12
13RDEPENDS:${PN}:class-target += "bash"
14
15PROVIDES:class-nativesdk = "nativesdk-qemu"
16RPROVIDES:${PN}:class-nativesdk = "nativesdk-qemu"
17
18EXTRA_OECONF:append:class-target = " --target-list=${@get_qemu_target_list(d)}"
19EXTRA_OECONF:append:class-nativesdk = " --target-list=${@get_qemu_target_list(d)}"
20EXTRA_OECONF:append:class-target:mipsarcho32 = "${@bb.utils.contains('BBEXTENDCURR', 'multilib', ' --disable-capstone', '', d)}"
21
22do_install:append:class-nativesdk() {
23 ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
24}
diff --git a/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_2022.2.bb b/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_2022.2.bb
new file mode 100644
index 00000000..dda6ec31
--- /dev/null
+++ b/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_2022.2.bb
@@ -0,0 +1,24 @@
1SUMMARY = "Xilinx DisplayPort Linux Kernel module"
2DESCRIPTION = "Out-of-tree DisplayPort(DP) kernel modules provider for aarch64 devices"
3SECTION = "kernel/modules"
4LICENSE = "GPL-2.0-only"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a"
6
7XLNX_DP_VERSION = "5.10.0"
8PV = "${XLNX_DP_VERSION}+xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
9
10S = "${WORKDIR}/git"
11
12BRANCH ?= "xlnx_rel_v2022.2"
13REPO ?= "git://github.com/xilinx/dp-modules.git;protocol=https"
14SRCREV ?= "c57b2ce95ee6c86f35caecbc7007644ff8f6d337"
15
16BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
17SRC_URI = "${REPO};${BRANCHARG}"
18
19inherit module
20
21EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}"
22COMPATIBLE_MACHINE = "^$"
23COMPATIBLE_MACHINE:zynqmp = "zynqmp"
24COMPATIBLE_MACHINE:versal = "versal"
diff --git a/meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_2022.2.bb b/meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_2022.2.bb
new file mode 100644
index 00000000..c1f66013
--- /dev/null
+++ b/meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_2022.2.bb
@@ -0,0 +1,24 @@
1SUMMARY = "Xilinx HDMI Linux Kernel module"
2DESCRIPTION = "Out-of-tree HDMI kernel modules provider for MPSoC EG/EV devices"
3SECTION = "kernel/modules"
4LICENSE = "GPL-2.0-only"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=b34277fe156508fd5a650609dc36d1fe"
6
7XLNX_HDMI_VERSION = "5.15.19"
8PV = "${XLNX_HDMI_VERSION}+xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
9
10S = "${WORKDIR}/git"
11
12BRANCH ?= "xlnx_rel_v2022.2"
13REPO ?= "git://github.com/Xilinx/hdmi-modules.git;protocol=https"
14SRCREV = "25b6fe7a26a975be15c002b48cfd4c291486491e"
15
16BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
17SRC_URI = "${REPO};${BRANCHARG}"
18
19inherit module
20
21EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}"
22COMPATIBLE_MACHINE = "^$"
23COMPATIBLE_MACHINE:zynqmp = "zynqmp"
24COMPATIBLE_MACHINE:versal = "versal"
diff --git a/meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2022.1.bb b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2022.1.bb
new file mode 100644
index 00000000..41c1ffe2
--- /dev/null
+++ b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2022.1.bb
@@ -0,0 +1,9 @@
1LINUX_VERSION = "5.15.19"
2KBRANCH="xlnx_rebase_v5.15_LTS_2022.1_update"
3SRCREV = "75872fda9ad270b611ee6ae2433492da1e22b688"
4
5KCONF_AUDIT_LEVEL="0"
6
7include linux-xlnx.inc
8
9FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
diff --git a/meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2022.2.bb b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2022.2.bb
new file mode 100644
index 00000000..260224b8
--- /dev/null
+++ b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2022.2.bb
@@ -0,0 +1,9 @@
1LINUX_VERSION = "5.15.36"
2KBRANCH="xlnx_rebase_v5.15_LTS"
3SRCREV = "19984dd147fa7fbb7cb14b17400263ad0925c189"
4
5KCONF_AUDIT_LEVEL="0"
6
7include linux-xlnx.inc
8
9FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2022.1.bb b/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2022.1.bb
new file mode 100644
index 00000000..7ef1d5fd
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2022.1.bb
@@ -0,0 +1,39 @@
1SUMMARY = "Linux kernel module for Video Code Unit"
2DESCRIPTION = "Out-of-tree VCU decoder, encoder and common kernel modules provider for MPSoC EV devices"
3SECTION = "kernel/modules"
4LICENSE = "GPL-2.0-only"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a"
6
7XILINX_VCU_VERSION = "1.0.0"
8PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
9
10S = "${WORKDIR}/git"
11
12FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
13
14BRANCH = "xlnx_rel_v2022.1"
15REPO = "git://github.com/Xilinx/vcu-modules.git;protocol=https"
16SRCREV = "9d2657550eccebccce08cacfcdd369367b9f6be4"
17
18BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
19SRC_URI = " \
20 ${REPO};${BRANCHARG} \
21 file://99-vcu-enc-dec.rules \
22 "
23
24inherit module features_check
25
26REQUIRED_MACHINE_FEATURES = "vcu"
27
28EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}"
29
30RDEPENDS:${PN} = "vcu-firmware"
31
32KERNEL_MODULE_AUTOLOAD += "dmaproxy"
33
34do_install:append() {
35 install -d ${D}${sysconfdir}/udev/rules.d
36 install -m 0644 ${WORKDIR}/99-vcu-enc-dec.rules ${D}${sysconfdir}/udev/rules.d/
37}
38
39FILES:${PN} = "${sysconfdir}/udev/rules.d/*"
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2022.2.bb b/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2022.2.bb
new file mode 100644
index 00000000..b1c96d3c
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2022.2.bb
@@ -0,0 +1,39 @@
1SUMMARY = "Linux kernel module for Video Code Unit"
2DESCRIPTION = "Out-of-tree VCU decoder, encoder and common kernel modules provider for MPSoC EV devices"
3SECTION = "kernel/modules"
4LICENSE = "GPL-2.0-only"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a"
6
7XILINX_VCU_VERSION = "1.0.0"
8PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
9
10S = "${WORKDIR}/git"
11
12FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
13
14BRANCH = "xlnx_rel_v2022.2"
15REPO = "git://github.com/Xilinx/vcu-modules.git;protocol=https"
16SRCREV = "b131e220285e06658b6ab27f9e19b1c592a55f3a"
17
18BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
19SRC_URI = " \
20 ${REPO};${BRANCHARG} \
21 file://99-vcu-enc-dec.rules \
22 "
23
24inherit module features_check
25
26REQUIRED_MACHINE_FEATURES = "vcu"
27
28EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}"
29
30RDEPENDS:${PN} = "vcu-firmware"
31
32KERNEL_MODULE_AUTOLOAD += "dmaproxy"
33
34do_install:append() {
35 install -d ${D}${sysconfdir}/udev/rules.d
36 install -m 0644 ${WORKDIR}/99-vcu-enc-dec.rules ${D}${sysconfdir}/udev/rules.d/
37}
38
39FILES:${PN} = "${sysconfdir}/udev/rules.d/*"
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2022.1.bb b/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2022.1.bb
new file mode 100644
index 00000000..47c521c4
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2022.1.bb
@@ -0,0 +1,51 @@
1SUMMARY = "OpenMAX Integration layer for VCU"
2DESCRIPTION = "OMX IL Libraries,test applications and headers for VCU"
3LICENSE = "Proprietary"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=03a7aef7e6f6a76a59fd9b8ba450b493"
5
6XILINX_VCU_VERSION = "1.0.0"
7PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
8
9BRANCH ?= "xlnx_rel_v2022.1"
10REPO ?= "git://github.com/Xilinx/vcu-omx-il.git;protocol=https"
11SRCREV = "b3308c608be7ed9250b9c6732f6e0a02b1a2e985"
12
13BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
14SRC_URI = "${REPO};${BRANCHARG}"
15
16S = "${WORKDIR}/git"
17
18inherit features_check
19
20REQUIRED_MACHINE_FEATURES = "vcu"
21
22PACKAGE_ARCH = "${MACHINE_ARCH}"
23
24DEPENDS = "libvcu-xlnx"
25RDEPENDS:${PN} = "kernel-module-vcu libvcu-xlnx"
26
27EXTERNAL_INCLUDE="${STAGING_INCDIR}/vcu-ctrl-sw/include"
28
29EXTRA_OEMAKE = " \
30 CC='${CC}' CXX='${CXX} ${CXXFLAGS}' \
31 EXTERNAL_INCLUDE='${EXTERNAL_INCLUDE}' \
32 "
33
34do_install() {
35 install -d ${D}${libdir}
36 install -d ${D}${includedir}/vcu-omx-il
37
38 install -m 0644 ${S}/omx_header/*.h ${D}${includedir}/vcu-omx-il
39
40 install -Dm 0755 ${S}/bin/omx_decoder ${D}/${bindir}/omx_decoder
41 install -Dm 0755 ${S}/bin/omx_encoder ${D}/${bindir}/omx_encoder
42
43 oe_libinstall -C ${S}/bin/ -so libOMX.allegro.core ${D}/${libdir}/
44 oe_libinstall -C ${S}/bin/ -so libOMX.allegro.video_decoder ${D}/${libdir}/
45 oe_libinstall -C ${S}/bin/ -so libOMX.allegro.video_encoder ${D}/${libdir}/
46}
47
48# These libraries shouldn't get installed in world builds unless something
49# explicitly depends upon them.
50
51EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2022.2.bb b/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2022.2.bb
new file mode 100644
index 00000000..c5b956bc
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2022.2.bb
@@ -0,0 +1,50 @@
1SUMMARY = "OpenMAX Integration layer for VCU"
2DESCRIPTION = "OMX IL Libraries,test applications and headers for VCU"
3LICENSE = "Proprietary"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=03a7aef7e6f6a76a59fd9b8ba450b493"
5
6XILINX_VCU_VERSION = "1.0.0"
7PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
8
9BRANCH ?= "xlnx_rel_v2022.2"
10REPO ?= "git://github.com/Xilinx/vcu-omx-il.git;protocol=https"
11SRCREV = "6752f5da88a8783f689ae762065295b89902d6d4"
12
13BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
14SRC_URI = "${REPO};${BRANCHARG}"
15
16S = "${WORKDIR}/git"
17
18COMPATIBLE_MACHINE = "^$"
19COMPATIBLE_MACHINE:zynqmp = "zynqmp"
20
21PACKAGE_ARCH = "${MACHINE_ARCH}"
22
23DEPENDS = "libvcu-xlnx"
24RDEPENDS:${PN} = "kernel-module-vcu libvcu-xlnx"
25
26EXTERNAL_INCLUDE="${STAGING_INCDIR}/vcu-ctrl-sw/include"
27
28EXTRA_OEMAKE = " \
29 CC='${CC}' CXX='${CXX} ${CXXFLAGS}' \
30 EXTERNAL_INCLUDE='${EXTERNAL_INCLUDE}' \
31 "
32
33do_install() {
34 install -d ${D}${libdir}
35 install -d ${D}${includedir}/vcu-omx-il
36
37 install -m 0644 ${S}/omx_header/*.h ${D}${includedir}/vcu-omx-il
38
39 install -Dm 0755 ${S}/bin/omx_decoder ${D}/${bindir}/omx_decoder
40 install -Dm 0755 ${S}/bin/omx_encoder ${D}/${bindir}/omx_encoder
41
42 oe_libinstall -C ${S}/bin/ -so libOMX.allegro.core ${D}/${libdir}/
43 oe_libinstall -C ${S}/bin/ -so libOMX.allegro.video_decoder ${D}/${libdir}/
44 oe_libinstall -C ${S}/bin/ -so libOMX.allegro.video_encoder ${D}/${libdir}/
45}
46
47# These libraries shouldn't get installed in world builds unless something
48# explicitly depends upon them.
49
50EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2022.1.bb b/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2022.1.bb
new file mode 100644
index 00000000..71e6e572
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2022.1.bb
@@ -0,0 +1,46 @@
1SUMMARY = "Control Software for VCU"
2DESCRIPTION = "Control software libraries, test applications and headers provider for VCU"
3LICENSE = "Proprietary"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=03a7aef7e6f6a76a59fd9b8ba450b493"
5
6XILINX_VCU_VERSION = "1.0.0"
7PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
8
9BRANCH ?= "xlnx_rel_v2022.1"
10REPO ?= "git://github.com/Xilinx/vcu-ctrl-sw.git;protocol=https"
11SRCREV = "5bf158af204b181f00ac009c8745557642ecfe5f"
12
13BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
14SRC_URI = "${REPO};${BRANCHARG}"
15
16S = "${WORKDIR}/git"
17
18inherit features_check
19
20REQUIRED_MACHINE_FEATURES = "vcu"
21
22PACKAGE_ARCH = "${MACHINE_ARCH}"
23
24RDEPENDS:${PN} = "kernel-module-vcu"
25
26EXTRA_OEMAKE = "CC='${CC}' CXX='${CXX} ${CXXFLAGS}'"
27
28do_install() {
29 install -d ${D}${libdir}
30 install -d ${D}${includedir}/vcu-ctrl-sw/include
31
32 install -Dm 0755 ${S}/bin/ctrlsw_encoder ${D}/${bindir}/ctrlsw_encoder
33 install -Dm 0755 ${S}/bin/ctrlsw_decoder ${D}/${bindir}/ctrlsw_decoder
34
35 oe_runmake install_headers INSTALL_HDR_PATH=${D}${includedir}/vcu-ctrl-sw/include
36 oe_libinstall -C ${S}/bin/ -so liballegro_decode ${D}/${libdir}/
37 oe_libinstall -C ${S}/bin/ -so liballegro_encode ${D}/${libdir}/
38}
39
40# These libraries shouldn't get installed in world builds unless something
41# explicitly depends upon them.
42
43EXCLUDE_FROM_WORLD = "1"
44
45# Disable buildpaths QA check warnings.
46INSANE_SKIP:${PN} += "buildpaths"
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2022.2.bb b/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2022.2.bb
new file mode 100644
index 00000000..130d79bc
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2022.2.bb
@@ -0,0 +1,46 @@
1SUMMARY = "Control Software for VCU"
2DESCRIPTION = "Control software libraries, test applications and headers provider for VCU"
3LICENSE = "Proprietary"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=03a7aef7e6f6a76a59fd9b8ba450b493"
5
6XILINX_VCU_VERSION = "1.0.0"
7PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
8
9BRANCH ?= "xlnx_rel_v2022.2"
10REPO ?= "git://github.com/Xilinx/vcu-ctrl-sw.git;protocol=https"
11SRCREV = "3c59dede1923a159a8db736ce0b4ab55633a2114"
12
13BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
14SRC_URI = "${REPO};${BRANCHARG}"
15
16S = "${WORKDIR}/git"
17
18inherit features_check
19
20REQUIRED_MACHINE_FEATURES = "vcu"
21
22PACKAGE_ARCH = "${MACHINE_ARCH}"
23
24RDEPENDS:${PN} = "kernel-module-vcu"
25
26EXTRA_OEMAKE = "CC='${CC}' CXX='${CXX} ${CXXFLAGS}'"
27
28do_install() {
29 install -d ${D}${libdir}
30 install -d ${D}${includedir}/vcu-ctrl-sw/include
31
32 install -Dm 0755 ${S}/bin/ctrlsw_encoder ${D}/${bindir}/ctrlsw_encoder
33 install -Dm 0755 ${S}/bin/ctrlsw_decoder ${D}/${bindir}/ctrlsw_decoder
34
35 oe_runmake install_headers INSTALL_HDR_PATH=${D}${includedir}/vcu-ctrl-sw/include
36 oe_libinstall -C ${S}/bin/ -so liballegro_decode ${D}/${libdir}/
37 oe_libinstall -C ${S}/bin/ -so liballegro_encode ${D}/${libdir}/
38}
39
40# These libraries shouldn't get installed in world builds unless something
41# explicitly depends upon them.
42
43EXCLUDE_FROM_WORLD = "1"
44
45# Disable buildpaths QA check warnings.
46INSANE_SKIP:${PN} += "buildpaths"
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2022.1.bb b/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2022.1.bb
new file mode 100644
index 00000000..c5c2b045
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2022.1.bb
@@ -0,0 +1,40 @@
1SUMMARY = "Firmware for VCU"
2DESCRIPTION = "Firmware binaries provider for VCU"
3LICENSE = "Proprietary"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=63b45903a9a50120df488435f03cf498"
5
6XILINX_VCU_VERSION = "1.0.0"
7PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
8
9S = "${WORKDIR}/git"
10
11BRANCH ?= "xlnx_rel_v2022.1"
12REPO ?= "git://github.com/Xilinx/vcu-firmware.git;protocol=https"
13SRCREV = "569f980527fd58f43baf16bd0b294bf8c7cdf963"
14
15BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
16SRC_URI = "${REPO};${BRANCHARG}"
17
18inherit features_check
19
20REQUIRED_MACHINE_FEATURES = "vcu"
21
22PACKAGE_ARCH = "${MACHINE_ARCH}"
23
24do_install() {
25 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5d_b.fw ${D}/lib/firmware/al5d_b.fw
26 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5d.fw ${D}/lib/firmware/al5d.fw
27 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5e_b.fw ${D}/lib/firmware/al5e_b.fw
28 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5e.fw ${D}/lib/firmware/al5e.fw
29}
30
31# Inhibit warnings about files being stripped
32INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
33INHIBIT_PACKAGE_STRIP = "1"
34FILES:${PN} = "/lib/firmware/*"
35
36# These libraries shouldn't get installed in world builds unless something
37# explicitly depends upon them.
38EXCLUDE_FROM_WORLD = "1"
39
40INSANE_SKIP:${PN} = "ldflags"
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2022.2.bb b/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2022.2.bb
new file mode 100644
index 00000000..594a94c3
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2022.2.bb
@@ -0,0 +1,40 @@
1SUMMARY = "Firmware for VCU"
2DESCRIPTION = "Firmware binaries provider for VCU"
3LICENSE = "Proprietary"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=63b45903a9a50120df488435f03cf498"
5
6XILINX_VCU_VERSION = "1.0.0"
7PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
8
9S = "${WORKDIR}/git"
10
11BRANCH ?= "xlnx_rel_v2022.2"
12REPO ?= "git://github.com/Xilinx/vcu-firmware.git;protocol=https"
13SRCREV = "3980c778d71fa51a15e89bf70fd8fb28d5cb12e0"
14
15BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
16SRC_URI = "${REPO};${BRANCHARG}"
17
18inherit features_check
19
20REQUIRED_MACHINE_FEATURES = "vcu"
21
22PACKAGE_ARCH = "${MACHINE_ARCH}"
23
24do_install() {
25 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5d_b.fw ${D}/lib/firmware/al5d_b.fw
26 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5d.fw ${D}/lib/firmware/al5d.fw
27 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5e_b.fw ${D}/lib/firmware/al5e_b.fw
28 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5e.fw ${D}/lib/firmware/al5e.fw
29}
30
31# Inhibit warnings about files being stripped
32INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
33INHIBIT_PACKAGE_STRIP = "1"
34FILES:${PN} = "/lib/firmware/*"
35
36# These libraries shouldn't get installed in world builds unless something
37# explicitly depends upon them.
38EXCLUDE_FROM_WORLD = "1"
39
40INSANE_SKIP:${PN} = "ldflags"
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb b/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb
index 9b835490..9b835490 100755..100644
--- a/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb
+++ b/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb
index 602dc2fc..602dc2fc 100755..100644
--- a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb
+++ b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb
index b4fc482e..b4fc482e 100755..100644
--- a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb
+++ b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb
diff --git a/meta-xilinx-standalone-experimental/conf/dtb-embeddedsw.inc b/meta-xilinx-standalone-experimental/conf/dtb-embeddedsw.inc
index 2ddb173d..b1de721e 100644
--- a/meta-xilinx-standalone-experimental/conf/dtb-embeddedsw.inc
+++ b/meta-xilinx-standalone-experimental/conf/dtb-embeddedsw.inc
@@ -9,6 +9,4 @@ REPO = "git://github.com/Xilinx/embeddedsw-experimental-dt-support.git;protocol=
9ESW_BRANCH[2023_sdt_experimental] = "xlnx_rel_v2023.2_sdt" 9ESW_BRANCH[2023_sdt_experimental] = "xlnx_rel_v2023.2_sdt"
10ESW_REV[2023_sdt_experimental] = "742a608800e7621fb7c376daf5124333b5826d6d" 10ESW_REV[2023_sdt_experimental] = "742a608800e7621fb7c376daf5124333b5826d6d"
11LIC_FILES_CHKSUM[master] = '7c92de7a21a6613265035c28f4a92f48' 11LIC_FILES_CHKSUM[master] = '7c92de7a21a6613265035c28f4a92f48'
12LIC_FILES_CHKSUM[xlnx_rel_v2022.1_sdt_experimental_beta] = 'e26f53a7d6f58f4b1a9687099417225c'
13LIC_FILES_CHKSUM[xlnx_rel_v2023.1_sdt_experimental] = 'ce611484168a6000bd35df68fc4f4290'
14LIC_FILES_CHKSUM[xlnx_rel_v2023.2_sdt] = 'ce611484168a6000bd35df68fc4f4290' 12LIC_FILES_CHKSUM[xlnx_rel_v2023.2_sdt] = 'ce611484168a6000bd35df68fc4f4290'
diff --git a/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass b/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass
index 12db0da2..13ae11b1 100644
--- a/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass
+++ b/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass
@@ -3,11 +3,15 @@ ESW_VER ?= "${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or 'master'
3 3
4REPO ??= "git://github.com/Xilinx/embeddedsw.git;protocol=https" 4REPO ??= "git://github.com/Xilinx/embeddedsw.git;protocol=https"
5 5
6ESW_BRANCH[2023.1] = "xlnx_rel_v2023.1" 6ESW_BRANCH[2022.1] = "xlnx_rel_v2022.1_update"
7ESW_BRANCH[2022.2] = "xlnx_rel_v2022.2"
8ESW_BRANCH[2023.1] = "xlnx_rel_v2023.1_update"
7ESW_BRANCH[2023.2] = "xlnx_rel_v2023.2" 9ESW_BRANCH[2023.2] = "xlnx_rel_v2023.2"
8BRANCH ??= "${@d.getVarFlag('ESW_BRANCH', d.getVar('ESW_VER')) or '${ESW_VER}'}" 10BRANCH ??= "${@d.getVarFlag('ESW_BRANCH', d.getVar('ESW_VER')) or '${ESW_VER}'}"
9 11
10ESW_REV[2023.1] = "e24fe92b5517ee447e560790e798cad792f53bab" 12ESW_REV[2022.1] = "56d94a506fd9f80949f4cff08e13015928603f01"
13ESW_REV[2022.2] = "5330a64c8efd14f0eef09befdbb8d3d738c33ec2"
14ESW_REV[2023.1] = "af784f742dad0ca6e69e05baf8de51152c396b9a"
11ESW_REV[2023.2] = "c9a0ee31b2a14cbcfcb56ca369037319b4ad4847" 15ESW_REV[2023.2] = "c9a0ee31b2a14cbcfcb56ca369037319b4ad4847"
12SRCREV ??= "${@d.getVarFlag('ESW_REV', d.getVar('ESW_VER')) or '${AUTOREV}'}" 16SRCREV ??= "${@d.getVarFlag('ESW_REV', d.getVar('ESW_VER')) or '${AUTOREV}'}"
13 17
@@ -15,7 +19,9 @@ EMBEDDEDSW_BRANCHARG ?= "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH'
15EMBEDDEDSW_SRCURI ?= "${REPO};${EMBEDDEDSW_BRANCHARG}" 19EMBEDDEDSW_SRCURI ?= "${REPO};${EMBEDDEDSW_BRANCHARG}"
16 20
17LICENSE = "MIT" 21LICENSE = "MIT"
18LIC_FILES_CHKSUM[xlnx_rel_v2023.1] = '3c310a3ee2197a4c92c6a0e2937c207c' 22LIC_FILES_CHKSUM[xlnx_rel_v2022.1_update] = 'e62cb7a722c4430999e0a55a7234035d'
23LIC_FILES_CHKSUM[xlnx_rel_v2022.2] = 'ce611484168a6000bd35df68fc4f4290'
24LIC_FILES_CHKSUM[xlnx_rel_v2023.1_update] = '3c310a3ee2197a4c92c6a0e2937c207c'
19LIC_FILES_CHKSUM[xlnx_rel_v2023.2] = '9fceecdbcad88698f265578f3d4cb26c' 25LIC_FILES_CHKSUM[xlnx_rel_v2023.2] = '9fceecdbcad88698f265578f3d4cb26c'
20LIC_FILES_CHKSUM ??= "file://license.txt;md5=${@d.getVarFlag('LIC_FILES_CHKSUM', d.getVar('BRANCH')) or '0'}" 26LIC_FILES_CHKSUM ??= "file://license.txt;md5=${@d.getVarFlag('LIC_FILES_CHKSUM', d.getVar('BRANCH')) or '0'}"
21 27
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2022.1.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2022.1.bb
new file mode 100644
index 00000000..3f9740a0
--- /dev/null
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2022.1.bb
@@ -0,0 +1,11 @@
1require fsbl-firmware.inc
2
3FILESPATH .= ":${FILE_DIRNAME}/embeddedsw"
4
5SRC_URI += " \
6 file://makefile-skip-copy_bsp.sh.patch \
7 file://fsbl-fixups.patch \
8 "
9
10# This version does not build for zynq
11COMPATIBLE_MACHINE:zynq = "none"
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2022.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2022.2.bb
new file mode 100644
index 00000000..3f9740a0
--- /dev/null
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2022.2.bb
@@ -0,0 +1,11 @@
1require fsbl-firmware.inc
2
3FILESPATH .= ":${FILE_DIRNAME}/embeddedsw"
4
5SRC_URI += " \
6 file://makefile-skip-copy_bsp.sh.patch \
7 file://fsbl-fixups.patch \
8 "
9
10# This version does not build for zynq
11COMPATIBLE_MACHINE:zynq = "none"
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2022.1.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2022.1.bb
new file mode 100644
index 00000000..cc810241
--- /dev/null
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2022.1.bb
@@ -0,0 +1,16 @@
1require plm-firmware.inc
2
3FILESPATH .= ":${FILE_DIRNAME}/embeddedsw"
4
5SRC_URI += " \
6 file://makefile-skip-copy_bsp.sh.patch \
7 file://0001-versal_fw-Fixup-core-makefiles.patch \
8 "
9
10EXTRA_COMPILER_FLAGS = "-g -ffunction-sections -fdata-sections -Wall -Wextra -Os -flto -ffat-lto-objects"
11
12do_compile() {
13 oe_runmake
14
15 ${MB_OBJCOPY} -O binary ${B}/${ESW_COMPONENT} ${B}/${ESW_COMPONENT}.bin
16}
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2022.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2022.2.bb
new file mode 100644
index 00000000..cc810241
--- /dev/null
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2022.2.bb
@@ -0,0 +1,16 @@
1require plm-firmware.inc
2
3FILESPATH .= ":${FILE_DIRNAME}/embeddedsw"
4
5SRC_URI += " \
6 file://makefile-skip-copy_bsp.sh.patch \
7 file://0001-versal_fw-Fixup-core-makefiles.patch \
8 "
9
10EXTRA_COMPILER_FLAGS = "-g -ffunction-sections -fdata-sections -Wall -Wextra -Os -flto -ffat-lto-objects"
11
12do_compile() {
13 oe_runmake
14
15 ${MB_OBJCOPY} -O binary ${B}/${ESW_COMPONENT} ${B}/${ESW_COMPONENT}.bin
16}
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2022.1.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2022.1.bb
new file mode 100644
index 00000000..2c554d6d
--- /dev/null
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2022.1.bb
@@ -0,0 +1,16 @@
1require pmu-firmware.inc
2
3FILESPATH .= ":${FILE_DIRNAME}/embeddedsw"
4
5SRC_URI += " \
6 file://makefile-skip-copy_bsp.sh.patch \
7 file://0001-zynqmp_pmufw-Fixup-core-makefiles.patch \
8 "
9
10EXTRA_COMPILER_FLAGS = "-ffunction-sections -fdata-sections -Wall -Wextra -Os -flto -ffat-lto-objects"
11
12do_compile() {
13 oe_runmake
14
15 ${MB_OBJCOPY} -O binary ${B}/${ESW_COMPONENT} ${B}/${ESW_COMPONENT}.bin
16}
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2022.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2022.2.bb
new file mode 100644
index 00000000..2c554d6d
--- /dev/null
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2022.2.bb
@@ -0,0 +1,16 @@
1require pmu-firmware.inc
2
3FILESPATH .= ":${FILE_DIRNAME}/embeddedsw"
4
5SRC_URI += " \
6 file://makefile-skip-copy_bsp.sh.patch \
7 file://0001-zynqmp_pmufw-Fixup-core-makefiles.patch \
8 "
9
10EXTRA_COMPILER_FLAGS = "-ffunction-sections -fdata-sections -Wall -Wextra -Os -flto -ffat-lto-objects"
11
12do_compile() {
13 oe_runmake
14
15 ${MB_OBJCOPY} -O binary ${B}/${ESW_COMPONENT} ${B}/${ESW_COMPONENT}.bin
16}
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2022.1.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2022.1.bb
new file mode 100644
index 00000000..d861fb1c
--- /dev/null
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2022.1.bb
@@ -0,0 +1,16 @@
1require psm-firmware.inc
2
3FILESPATH .= ":${FILE_DIRNAME}/embeddedsw"
4
5SRC_URI += " \
6 file://makefile-skip-copy_bsp.sh.patch \
7 file://0001-versal_fw-Fixup-core-makefiles.patch \
8 "
9
10EXTRA_COMPILER_FLAGS = "-g -ffunction-sections -fdata-sections -Wall -Wextra"
11
12do_compile() {
13 oe_runmake
14
15 ${MB_OBJCOPY} -O binary ${B}/${ESW_COMPONENT} ${B}/${ESW_COMPONENT}.bin
16}
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2022.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2022.2.bb
new file mode 100644
index 00000000..d861fb1c
--- /dev/null
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2022.2.bb
@@ -0,0 +1,16 @@
1require psm-firmware.inc
2
3FILESPATH .= ":${FILE_DIRNAME}/embeddedsw"
4
5SRC_URI += " \
6 file://makefile-skip-copy_bsp.sh.patch \
7 file://0001-versal_fw-Fixup-core-makefiles.patch \
8 "
9
10EXTRA_COMPILER_FLAGS = "-g -ffunction-sections -fdata-sections -Wall -Wextra"
11
12do_compile() {
13 oe_runmake
14
15 ${MB_OBJCOPY} -O binary ${B}/${ESW_COMPONENT} ${B}/${ESW_COMPONENT}.bin
16}