summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS.md6
-rw-r--r--meta-xilinx-bsp/conf/layer.conf2
-rw-r--r--meta-xilinx-bsp/dynamic-layers/meta-xilinx-tools/recipes-bsp/device-tree/device-tree.bbappend4
-rw-r--r--meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bbappend6
-rw-r--r--meta-xilinx-bsp/recipes-bsp/device-tree/files/kc705-microblazeel/kc705-microblazeel.dts56
-rw-r--r--meta-xilinx-bsp/recipes-bsp/device-tree/files/kc705-microblazeel/pl.dtsi445
-rw-r--r--meta-xilinx-bsp/recipes-bsp/device-tree/files/kc705-microblazeel/system-conf.dtsi43
-rw-r--r--meta-xilinx-bsp/recipes-bsp/reference-design/kc705-bitstream_2022.2.bb48
-rw-r--r--meta-xilinx-contrib/conf/layer.conf2
-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.2.bbappend12
-rw-r--r--meta-xilinx-core/README.qemu.md2
-rw-r--r--meta-xilinx-core/classes/fpgamanager_custom.bbclass3
-rw-r--r--meta-xilinx-core/conf/layer.conf15
-rw-r--r--meta-xilinx-core/conf/local.conf.sample4
-rw-r--r--meta-xilinx-core/conf/machine/include/machine-xilinx-default.inc7
-rw-r--r--meta-xilinx-core/conf/machine/include/soc-versal.inc1
-rw-r--r--meta-xilinx-core/conf/machine/microblaze-generic.conf3
-rw-r--r--meta-xilinx-core/conf/machine/versal-generic.conf1
-rw-r--r--meta-xilinx-core/conf/machine/versal-net-generic.conf30
-rw-r--r--meta-xilinx-core/conf/machine/zynq-generic.conf1
-rw-r--r--meta-xilinx-core/conf/machine/zynqmp-generic.conf1
-rw-r--r--meta-xilinx-core/dynamic-layers/meta-xilinx-tools/recipes-bsp/device-tree/device-tree.bbappend18
-rw-r--r--meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc8
-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/bootgen/bootgen_1.0.bb4
-rw-r--r--meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr/dfx-mgr.service15
-rw-r--r--meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_1.0.bb16
-rw-r--r--meta-xilinx-core/recipes-bsp/fpga-manager-script/files/fpgautil.c9
-rw-r--r--meta-xilinx-core/recipes-bsp/fpga-manager-script/fpga-manager-script_1.0.bb2
-rw-r--r--meta-xilinx-core/recipes-bsp/libdfx/libdfx_1.0.bb4
-rw-r--r--meta-xilinx-core/recipes-bsp/pmu-firmware/pmu-rom-native_2022.2.bb27
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc4
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2022.2.bb19
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-zynq-scr.bb16
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-zynq-scr/boot.cmd.generic.root98
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees.inc5
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2022.1.bb3
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2022.2.bb6
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2022.2.bb7
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2022.2.bb20
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx.inc6
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2022.2.bb17
-rw-r--r--meta-xilinx-core/recipes-graphics/wayland/files/weston.service4
-rwxr-xr-xmeta-xilinx-core/recipes-kernel/dp/kernel-module-dp_git.bb6
-rw-r--r--meta-xilinx-core/recipes-kernel/linux/linux-microblaze.inc5
-rw-r--r--meta-xilinx-core/recipes-kernel/linux/linux-xlnx.inc6
-rw-r--r--meta-xilinx-core/recipes-kernel/linux/linux-xlnx/microblaze_generic.cfg18
-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.bb (renamed from meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu.bb)2
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2022.2.bb40
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2022.1.bb (renamed from meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx.bb)2
-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.bb (renamed from meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx.bb)2
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2022.2.bb42
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2022.1.bb (renamed from meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware.bb)2
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2022.2.bb39
-rw-r--r--meta-xilinx-core/recipes-xrt/xrt/xrt.inc7
-rw-r--r--meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb8
-rw-r--r--meta-xilinx-standalone-experimental/classes/esw.bbclass2
-rw-r--r--meta-xilinx-standalone-experimental/recipes-libraries/xilpuf-example_git.bb2
-rw-r--r--meta-xilinx-standalone-experimental/recipes-libraries/xilpuf_git.bb2
-rw-r--r--meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass25
-rw-r--r--meta-xilinx-standalone/conf/layer.conf6
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2022.2.bb (renamed from meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2021.2.bb)0
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2020.1.bb1
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2022.2.bb (renamed from meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2021.2.bb)0
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2020.1.bb9
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2022.2.bb (renamed from meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2021.2.bb)0
-rw-r--r--meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2022.2.bb (renamed from meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2021.2.bb)0
73 files changed, 1629 insertions, 663 deletions
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
index d14b73e5..6a61ba3b 100644
--- a/MAINTAINERS.md
+++ b/MAINTAINERS.md
@@ -17,9 +17,9 @@ https://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded
17 17
18**Maintainers:** 18**Maintainers:**
19 19
20 Mark Hatle <mark.hatle@xilinx.com> 20 Mark Hatle <mark.hatle@amd.com>
21 Sandeep Gundlupet Raju <sandeep.gundlupet-raju@xilinx.com> 21 Sandeep Gundlupet Raju <sandeep.gundlupet-raju@amd.com>
22 John Toomey <john.toomey@xilinx.com> 22 John Toomey <john.toomey@amd.com>
23 23
24> **Note:** 24> **Note:**
25 25
diff --git a/meta-xilinx-bsp/conf/layer.conf b/meta-xilinx-bsp/conf/layer.conf
index a46909bf..38d13529 100644
--- a/meta-xilinx-bsp/conf/layer.conf
+++ b/meta-xilinx-bsp/conf/layer.conf
@@ -17,3 +17,5 @@ BBFILE_PRIORITY_xilinx-bsp = "5"
17LAYERDEPENDS_xilinx-bsp = "xilinx" 17LAYERDEPENDS_xilinx-bsp = "xilinx"
18 18
19LAYERSERIES_COMPAT_xilinx-bsp = "kirkstone" 19LAYERSERIES_COMPAT_xilinx-bsp = "kirkstone"
20
21PREFERRED_VERSION_kc705-bitstream ?= "${XILINX_RELEASE_VERSION}"
diff --git a/meta-xilinx-bsp/dynamic-layers/meta-xilinx-tools/recipes-bsp/device-tree/device-tree.bbappend b/meta-xilinx-bsp/dynamic-layers/meta-xilinx-tools/recipes-bsp/device-tree/device-tree.bbappend
index 2640c2c2..0b41fb1f 100644
--- a/meta-xilinx-bsp/dynamic-layers/meta-xilinx-tools/recipes-bsp/device-tree/device-tree.bbappend
+++ b/meta-xilinx-bsp/dynamic-layers/meta-xilinx-tools/recipes-bsp/device-tree/device-tree.bbappend
@@ -32,4 +32,6 @@ YAML_DT_BOARD_FLAGS:k26 ?= "{BOARD zynqmp-sm-k26-reva}"
32YAML_DT_BOARD_FLAGS:zcu670 ?= "{BOARD zcu670-revb}" 32YAML_DT_BOARD_FLAGS:zcu670 ?= "{BOARD zcu670-revb}"
33YAML_DT_BOARD_FLAGS:vpk120 ?= "{BOARD versal-vpk120-reva}" 33YAML_DT_BOARD_FLAGS:vpk120 ?= "{BOARD versal-vpk120-reva}"
34YAML_DT_BOARD_FLAGS:vpk-sc ?= "{BOARD zynqmp-vpk120-reva}" 34YAML_DT_BOARD_FLAGS:vpk-sc ?= "{BOARD zynqmp-vpk120-reva}"
35 35YAML_DT_BOARD_FLAGS:vpk180 ?= "{BOARD versal-vpk180-reva}"
36YAML_DT_BOARD_FLAGS:vhk158 ?= "{BOARD versal-vhk158-reva}"
37YAML_DT_BOARD_FLAGS:vek280 ?= "{BOARD versal-vek280-reva}"
diff --git a/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bbappend b/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bbappend
index 83f8c57b..9ab3f24e 100644
--- a/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bbappend
+++ b/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bbappend
@@ -4,12 +4,6 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
4COMPATIBLE_MACHINE:qemu-zynq7 = ".*" 4COMPATIBLE_MACHINE:qemu-zynq7 = ".*"
5SRC_URI:append:qemu-zynq7 = " file://qemu-zynq7.dts" 5SRC_URI:append:qemu-zynq7 = " file://qemu-zynq7.dts"
6 6
7COMPATIBLE_MACHINE:kc705-microblazeel = ".*"
8SRC_URI:append:kc705-microblazeel = " \
9 file://kc705-microblazeel.dts \
10 file://pl.dtsi \
11 file://system-conf.dtsi \
12 "
13SRC_URI:append = "${@bb.utils.contains('MACHINE_FEATURES', 'provencore', ' file://pnc.dtsi', '', d)}" 7SRC_URI:append = "${@bb.utils.contains('MACHINE_FEATURES', 'provencore', ' file://pnc.dtsi', '', d)}"
14 8
15do_configure:append() { 9do_configure:append() {
diff --git a/meta-xilinx-bsp/recipes-bsp/device-tree/files/kc705-microblazeel/kc705-microblazeel.dts b/meta-xilinx-bsp/recipes-bsp/device-tree/files/kc705-microblazeel/kc705-microblazeel.dts
deleted file mode 100644
index 45e488c1..00000000
--- a/meta-xilinx-bsp/recipes-bsp/device-tree/files/kc705-microblazeel/kc705-microblazeel.dts
+++ /dev/null
@@ -1,56 +0,0 @@
1/dts-v1/;
2/include/ "pl.dtsi"
3/include/ "system-conf.dtsi"
4/ {
5 hard-reset-gpios = <&reset_gpio 0 1>;
6 aliases {
7 ethernet0 = &axi_ethernet;
8 i2c0 = &iic_main;
9 serial0 = &rs232_uart;
10 };
11 memory {
12 device_type = "memory";
13 reg = <0x80000000 0x40000000>;
14 };
15};
16
17&iic_main {
18 i2cswitch@74 {
19 compatible = "nxp,pca9548";
20 #address-cells = <1>;
21 #size-cells = <0>;
22 reg = <0x74>;
23 i2c@0 {
24 #address-cells = <1>;
25 #size-cells = <0>;
26 reg = <0>;
27 si570: clock-generator@5d {
28 #clock-cells = <0>;
29 compatible = "silabs,si570";
30 temperature-stability = <50>;
31 reg = <0x5d>;
32 factory-fout = <156250000>;
33 clock-frequency = <148500000>;
34 };
35 };
36 i2c@3 {
37 #address-cells = <1>;
38 #size-cells = <0>;
39 reg = <3>;
40 eeprom@54 {
41 compatible = "at,24c08";
42 reg = <0x54>;
43 };
44 };
45 };
46};
47
48&axi_ethernet {
49 phy-handle = <&phy0>;
50 axi_ethernet_mdio: mdio {
51 phy0: phy@7 {
52 device_type = "ethernet-phy";
53 reg = <7>;
54 };
55 };
56};
diff --git a/meta-xilinx-bsp/recipes-bsp/device-tree/files/kc705-microblazeel/pl.dtsi b/meta-xilinx-bsp/recipes-bsp/device-tree/files/kc705-microblazeel/pl.dtsi
deleted file mode 100644
index 43bc2ab7..00000000
--- a/meta-xilinx-bsp/recipes-bsp/device-tree/files/kc705-microblazeel/pl.dtsi
+++ /dev/null
@@ -1,445 +0,0 @@
1/ {
2 #address-cells = <1>;
3 #size-cells = <1>;
4 compatible = "xlnx,microblaze";
5 model = "Xilinx MicroBlaze";
6 cpus {
7 #address-cells = <1>;
8 #cpus = <1>;
9 #size-cells = <0>;
10 microblaze_0: cpu@0 {
11 bus-handle = <&amba_pl>;
12 clock-frequency = <200000000>;
13 clocks = <&clk_cpu>;
14 compatible = "xlnx,microblaze-10.0";
15 d-cache-baseaddr = <0x0000000080000000>;
16 d-cache-highaddr = <0x00000000bfffffff>;
17 d-cache-line-size = <0x20>;
18 d-cache-size = <0x4000>;
19 device_type = "cpu";
20 i-cache-baseaddr = <0x0000000080000000>;
21 i-cache-highaddr = <0x00000000bfffffff>;
22 i-cache-line-size = <0x10>;
23 i-cache-size = <0x4000>;
24 interrupt-handle = <&microblaze_0_axi_intc>;
25 model = "microblaze,10.0";
26 timebase-frequency = <200000000>;
27 xlnx,addr-size = <0x20>;
28 xlnx,addr-tag-bits = <0x10>;
29 xlnx,allow-dcache-wr = <0x1>;
30 xlnx,allow-icache-wr = <0x1>;
31 xlnx,area-optimized = <0x0>;
32 xlnx,async-interrupt = <0x1>;
33 xlnx,async-wakeup = <0x3>;
34 xlnx,avoid-primitives = <0x0>;
35 xlnx,base-vectors = <0x0000000000000000>;
36 xlnx,branch-target-cache-size = <0x0>;
37 xlnx,cache-byte-size = <0x4000>;
38 xlnx,d-axi = <0x1>;
39 xlnx,d-lmb = <0x1>;
40 xlnx,d-lmb-mon = <0x0>;
41 xlnx,daddr-size = <0x20>;
42 xlnx,data-size = <0x20>;
43 xlnx,dc-axi-mon = <0x0>;
44 xlnx,dcache-addr-tag = <0x10>;
45 xlnx,dcache-always-used = <0x1>;
46 xlnx,dcache-byte-size = <0x4000>;
47 xlnx,dcache-data-width = <0x0>;
48 xlnx,dcache-force-tag-lutram = <0x0>;
49 xlnx,dcache-line-len = <0x8>;
50 xlnx,dcache-use-writeback = <0x0>;
51 xlnx,dcache-victims = <0x0>;
52 xlnx,debug-counter-width = <0x20>;
53 xlnx,debug-enabled = <0x1>;
54 xlnx,debug-event-counters = <0x5>;
55 xlnx,debug-external-trace = <0x0>;
56 xlnx,debug-interface = <0x0>;
57 xlnx,debug-latency-counters = <0x1>;
58 xlnx,debug-profile-size = <0x0>;
59 xlnx,debug-trace-async-reset = <0x0>;
60 xlnx,debug-trace-size = <0x2000>;
61 xlnx,div-zero-exception = <0x1>;
62 xlnx,dp-axi-mon = <0x0>;
63 xlnx,dynamic-bus-sizing = <0x0>;
64 xlnx,ecc-use-ce-exception = <0x0>;
65 xlnx,edge-is-positive = <0x1>;
66 xlnx,enable-discrete-ports = <0x0>;
67 xlnx,endianness = <0x1>;
68 xlnx,fault-tolerant = <0x0>;
69 xlnx,fpu-exception = <0x0>;
70 xlnx,freq = <0xbebc200>;
71 xlnx,fsl-exception = <0x0>;
72 xlnx,fsl-links = <0x0>;
73 xlnx,i-axi = <0x0>;
74 xlnx,i-lmb = <0x1>;
75 xlnx,i-lmb-mon = <0x0>;
76 xlnx,iaddr-size = <0x20>;
77 xlnx,ic-axi-mon = <0x0>;
78 xlnx,icache-always-used = <0x1>;
79 xlnx,icache-data-width = <0x0>;
80 xlnx,icache-force-tag-lutram = <0x0>;
81 xlnx,icache-line-len = <0x4>;
82 xlnx,icache-streams = <0x1>;
83 xlnx,icache-victims = <0x8>;
84 xlnx,ill-opcode-exception = <0x1>;
85 xlnx,imprecise-exceptions = <0x0>;
86 xlnx,instr-size = <0x20>;
87 xlnx,interconnect = <0x2>;
88 xlnx,interrupt-is-edge = <0x0>;
89 xlnx,interrupt-mon = <0x0>;
90 xlnx,ip-axi-mon = <0x0>;
91 xlnx,lockstep-master = <0x0>;
92 xlnx,lockstep-select = <0x0>;
93 xlnx,lockstep-slave = <0x0>;
94 xlnx,mmu-dtlb-size = <0x4>;
95 xlnx,mmu-itlb-size = <0x2>;
96 xlnx,mmu-privileged-instr = <0x0>;
97 xlnx,mmu-tlb-access = <0x3>;
98 xlnx,mmu-zones = <0x2>;
99 xlnx,num-sync-ff-clk = <0x2>;
100 xlnx,num-sync-ff-clk-debug = <0x2>;
101 xlnx,num-sync-ff-clk-irq = <0x1>;
102 xlnx,num-sync-ff-dbg-clk = <0x1>;
103 xlnx,num-sync-ff-dbg-trace-clk = <0x2>;
104 xlnx,number-of-pc-brk = <0x1>;
105 xlnx,number-of-rd-addr-brk = <0x0>;
106 xlnx,number-of-wr-addr-brk = <0x0>;
107 xlnx,opcode-0x0-illegal = <0x1>;
108 xlnx,optimization = <0x0>;
109 xlnx,pc-width = <0x20>;
110 xlnx,piaddr-size = <0x20>;
111 xlnx,pvr = <0x2>;
112 xlnx,pvr-user1 = <0x00>;
113 xlnx,pvr-user2 = <0x00000000>;
114 xlnx,reset-msr = <0x00000000>;
115 xlnx,reset-msr-bip = <0x0>;
116 xlnx,reset-msr-dce = <0x0>;
117 xlnx,reset-msr-ee = <0x0>;
118 xlnx,reset-msr-eip = <0x0>;
119 xlnx,reset-msr-ice = <0x0>;
120 xlnx,reset-msr-ie = <0x0>;
121 xlnx,sco = <0x0>;
122 xlnx,trace = <0x0>;
123 xlnx,unaligned-exceptions = <0x1>;
124 xlnx,use-barrel = <0x1>;
125 xlnx,use-branch-target-cache = <0x0>;
126 xlnx,use-config-reset = <0x0>;
127 xlnx,use-dcache = <0x1>;
128 xlnx,use-div = <0x1>;
129 xlnx,use-ext-brk = <0x0>;
130 xlnx,use-ext-nm-brk = <0x0>;
131 xlnx,use-extended-fsl-instr = <0x0>;
132 xlnx,use-fpu = <0x0>;
133 xlnx,use-hw-mul = <0x2>;
134 xlnx,use-icache = <0x1>;
135 xlnx,use-interrupt = <0x2>;
136 xlnx,use-mmu = <0x3>;
137 xlnx,use-msr-instr = <0x1>;
138 xlnx,use-non-secure = <0x0>;
139 xlnx,use-pcmp-instr = <0x1>;
140 xlnx,use-reorder-instr = <0x1>;
141 xlnx,use-stack-protection = <0x0>;
142 };
143 };
144 clocks {
145 #address-cells = <1>;
146 #size-cells = <0>;
147 clk_cpu: clk_cpu@0 {
148 #clock-cells = <0>;
149 clock-frequency = <200000000>;
150 clock-output-names = "clk_cpu";
151 compatible = "fixed-clock";
152 reg = <0>;
153 };
154 clk_bus_0: clk_bus_0@1 {
155 #clock-cells = <0>;
156 clock-frequency = <200000000>;
157 clock-output-names = "clk_bus_0";
158 compatible = "fixed-clock";
159 reg = <1>;
160 };
161 };
162 amba_pl: amba_pl {
163 #address-cells = <1>;
164 #size-cells = <1>;
165 compatible = "simple-bus";
166 ranges ;
167 axi_ethernet: ethernet@40c00000 {
168 axistream-connected = <&axi_ethernet_dma>;
169 axistream-control-connected = <&axi_ethernet_dma>;
170 clock-frequency = <100000000>;
171 compatible = "xlnx,axi-ethernet-1.00.a";
172 device_type = "network";
173 interrupt-parent = <&microblaze_0_axi_intc>;
174 interrupts = <4 2>;
175 phy-mode = "gmii";
176 reg = <0x40c00000 0x40000>;
177 xlnx = <0x0>;
178 xlnx,axiliteclkrate = <0x0>;
179 xlnx,axisclkrate = <0x0>;
180 xlnx,clockselection = <0x0>;
181 xlnx,enableasyncsgmii = <0x0>;
182 xlnx,gt-type = <0x0>;
183 xlnx,gtinex = <0x0>;
184 xlnx,gtlocation = <0x0>;
185 xlnx,gtrefclksrc = <0x0>;
186 xlnx,include-dre ;
187 xlnx,instantiatebitslice0 = <0x0>;
188 xlnx,phy-type = <0x1>;
189 xlnx,phyaddr = <0x1>;
190 xlnx,rable = <0x0>;
191 xlnx,rxcsum = <0x0>;
192 xlnx,rxlane0-placement = <0x0>;
193 xlnx,rxlane1-placement = <0x0>;
194 xlnx,rxmem = <0x1000>;
195 xlnx,rxnibblebitslice0used = <0x0>;
196 xlnx,tx-in-upper-nibble = <0x1>;
197 xlnx,txcsum = <0x0>;
198 xlnx,txlane0-placement = <0x0>;
199 xlnx,txlane1-placement = <0x0>;
200 axi_ethernet_mdio: mdio {
201 #address-cells = <1>;
202 #size-cells = <0>;
203 };
204 };
205 axi_ethernet_dma: dma@41e00000 {
206 #dma-cells = <1>;
207 axistream-connected = <&axi_ethernet>;
208 axistream-control-connected = <&axi_ethernet>;
209 clock-frequency = <200000000>;
210 clock-names = "s_axi_lite_aclk";
211 clocks = <&clk_bus_0>;
212 compatible = "xlnx,eth-dma";
213 interrupt-parent = <&microblaze_0_axi_intc>;
214 interrupts = <3 2 2 2>;
215 reg = <0x41e00000 0x10000>;
216 xlnx,include-dre ;
217 };
218 axi_timer_0: timer@41c00000 {
219 clock-frequency = <200000000>;
220 clocks = <&clk_bus_0>;
221 compatible = "xlnx,xps-timer-1.00.a";
222 interrupt-parent = <&microblaze_0_axi_intc>;
223 interrupts = <5 2>;
224 reg = <0x41c00000 0x10000>;
225 xlnx,count-width = <0x20>;
226 xlnx,gen0-assert = <0x1>;
227 xlnx,gen1-assert = <0x1>;
228 xlnx,one-timer-only = <0x0>;
229 xlnx,trig0-assert = <0x1>;
230 xlnx,trig1-assert = <0x1>;
231 };
232 calib_complete_gpio: gpio@40010000 {
233 #gpio-cells = <2>;
234 compatible = "xlnx,xps-gpio-1.00.a";
235 gpio-controller ;
236 reg = <0x40010000 0x10000>;
237 xlnx,all-inputs = <0x1>;
238 xlnx,all-inputs-2 = <0x0>;
239 xlnx,all-outputs = <0x0>;
240 xlnx,all-outputs-2 = <0x0>;
241 xlnx,dout-default = <0x00000000>;
242 xlnx,dout-default-2 = <0x00000000>;
243 xlnx,gpio-width = <0x1>;
244 xlnx,gpio2-width = <0x20>;
245 xlnx,interrupt-present = <0x0>;
246 xlnx,is-dual = <0x0>;
247 xlnx,tri-default = <0xFFFFFFFF>;
248 xlnx,tri-default-2 = <0xFFFFFFFF>;
249 };
250 dip_switches_4bits: gpio@40020000 {
251 #gpio-cells = <2>;
252 compatible = "xlnx,xps-gpio-1.00.a";
253 gpio-controller ;
254 reg = <0x40020000 0x10000>;
255 xlnx,all-inputs = <0x1>;
256 xlnx,all-inputs-2 = <0x0>;
257 xlnx,all-outputs = <0x0>;
258 xlnx,all-outputs-2 = <0x0>;
259 xlnx,dout-default = <0x00000000>;
260 xlnx,dout-default-2 = <0x00000000>;
261 xlnx,gpio-width = <0x4>;
262 xlnx,gpio2-width = <0x20>;
263 xlnx,interrupt-present = <0x0>;
264 xlnx,is-dual = <0x0>;
265 xlnx,tri-default = <0xFFFFFFFF>;
266 xlnx,tri-default-2 = <0xFFFFFFFF>;
267 };
268 iic_main: i2c@40800000 {
269 #address-cells = <1>;
270 #size-cells = <0>;
271 clock-frequency = <200000000>;
272 clocks = <&clk_bus_0>;
273 compatible = "xlnx,xps-iic-2.00.a";
274 interrupt-parent = <&microblaze_0_axi_intc>;
275 interrupts = <1 2>;
276 reg = <0x40800000 0x10000>;
277 };
278 led_8bits: gpio@40030000 {
279 #gpio-cells = <2>;
280 compatible = "xlnx,xps-gpio-1.00.a";
281 gpio-controller ;
282 reg = <0x40030000 0x10000>;
283 xlnx,all-inputs = <0x0>;
284 xlnx,all-inputs-2 = <0x0>;
285 xlnx,all-outputs = <0x1>;
286 xlnx,all-outputs-2 = <0x0>;
287 xlnx,dout-default = <0x00000000>;
288 xlnx,dout-default-2 = <0x00000000>;
289 xlnx,gpio-width = <0x8>;
290 xlnx,gpio2-width = <0x20>;
291 xlnx,interrupt-present = <0x0>;
292 xlnx,is-dual = <0x0>;
293 xlnx,tri-default = <0xFFFFFFFF>;
294 xlnx,tri-default-2 = <0xFFFFFFFF>;
295 };
296 linear_flash: flash@60000000 {
297 bank-width = <2>;
298 compatible = "cfi-flash";
299 reg = <0x60000000 0x8000000>;
300 xlnx,axi-clk-period-ps = <0x1388>;
301 xlnx,include-datawidth-matching-0 = <0x1>;
302 xlnx,include-datawidth-matching-1 = <0x1>;
303 xlnx,include-datawidth-matching-2 = <0x1>;
304 xlnx,include-datawidth-matching-3 = <0x1>;
305 xlnx,include-negedge-ioregs = <0x0>;
306 xlnx,lflash-period-ps = <0x1388>;
307 xlnx,linear-flash-sync-burst = <0x0>;
308 xlnx,max-mem-width = <0x10>;
309 xlnx,mem-a-lsb = <0x0>;
310 xlnx,mem-a-msb = <0x1f>;
311 xlnx,mem0-type = <0x2>;
312 xlnx,mem0-width = <0x10>;
313 xlnx,mem1-type = <0x0>;
314 xlnx,mem1-width = <0x10>;
315 xlnx,mem2-type = <0x0>;
316 xlnx,mem2-width = <0x10>;
317 xlnx,mem3-type = <0x0>;
318 xlnx,mem3-width = <0x10>;
319 xlnx,num-banks-mem = <0x1>;
320 xlnx,page-size = <0x10>;
321 xlnx,parity-type-mem-0 = <0x0>;
322 xlnx,parity-type-mem-1 = <0x0>;
323 xlnx,parity-type-mem-2 = <0x0>;
324 xlnx,parity-type-mem-3 = <0x0>;
325 xlnx,port-diff = <0x0>;
326 xlnx,s-axi-en-reg = <0x0>;
327 xlnx,s-axi-mem-addr-width = <0x20>;
328 xlnx,s-axi-mem-data-width = <0x20>;
329 xlnx,s-axi-mem-id-width = <0x1>;
330 xlnx,s-axi-reg-addr-width = <0x5>;
331 xlnx,s-axi-reg-data-width = <0x20>;
332 xlnx,synch-pipedelay-0 = <0x1>;
333 xlnx,synch-pipedelay-1 = <0x1>;
334 xlnx,synch-pipedelay-2 = <0x1>;
335 xlnx,synch-pipedelay-3 = <0x1>;
336 xlnx,tavdv-ps-mem-0 = <0x1fbd0>;
337 xlnx,tavdv-ps-mem-1 = <0x3a98>;
338 xlnx,tavdv-ps-mem-2 = <0x3a98>;
339 xlnx,tavdv-ps-mem-3 = <0x3a98>;
340 xlnx,tcedv-ps-mem-0 = <0x1fbd0>;
341 xlnx,tcedv-ps-mem-1 = <0x3a98>;
342 xlnx,tcedv-ps-mem-2 = <0x3a98>;
343 xlnx,tcedv-ps-mem-3 = <0x3a98>;
344 xlnx,thzce-ps-mem-0 = <0x88b8>;
345 xlnx,thzce-ps-mem-1 = <0x1b58>;
346 xlnx,thzce-ps-mem-2 = <0x1b58>;
347 xlnx,thzce-ps-mem-3 = <0x1b58>;
348 xlnx,thzoe-ps-mem-0 = <0x1b58>;
349 xlnx,thzoe-ps-mem-1 = <0x1b58>;
350 xlnx,thzoe-ps-mem-2 = <0x1b58>;
351 xlnx,thzoe-ps-mem-3 = <0x1b58>;
352 xlnx,tlzwe-ps-mem-0 = <0xc350>;
353 xlnx,tlzwe-ps-mem-1 = <0x0>;
354 xlnx,tlzwe-ps-mem-2 = <0x0>;
355 xlnx,tlzwe-ps-mem-3 = <0x0>;
356 xlnx,tpacc-ps-flash-0 = <0x61a8>;
357 xlnx,tpacc-ps-flash-1 = <0x61a8>;
358 xlnx,tpacc-ps-flash-2 = <0x61a8>;
359 xlnx,tpacc-ps-flash-3 = <0x61a8>;
360 xlnx,twc-ps-mem-0 = <0x11170>;
361 xlnx,twc-ps-mem-1 = <0x3a98>;
362 xlnx,twc-ps-mem-2 = <0x3a98>;
363 xlnx,twc-ps-mem-3 = <0x3a98>;
364 xlnx,twp-ps-mem-0 = <0x13880>;
365 xlnx,twp-ps-mem-1 = <0x2ee0>;
366 xlnx,twp-ps-mem-2 = <0x2ee0>;
367 xlnx,twp-ps-mem-3 = <0x2ee0>;
368 xlnx,twph-ps-mem-0 = <0x13880>;
369 xlnx,twph-ps-mem-1 = <0x2ee0>;
370 xlnx,twph-ps-mem-2 = <0x2ee0>;
371 xlnx,twph-ps-mem-3 = <0x2ee0>;
372 xlnx,use-startup = <0x0>;
373 xlnx,use-startup-int = <0x0>;
374 xlnx,wr-rec-time-mem-0 = <0x186a0>;
375 xlnx,wr-rec-time-mem-1 = <0x6978>;
376 xlnx,wr-rec-time-mem-2 = <0x6978>;
377 xlnx,wr-rec-time-mem-3 = <0x6978>;
378 };
379 microblaze_0_axi_intc: interrupt-controller@41200000 {
380 #interrupt-cells = <2>;
381 compatible = "xlnx,xps-intc-1.00.a";
382 interrupt-controller ;
383 reg = <0x41200000 0x10000>;
384 xlnx,kind-of-intr = <0x0>;
385 xlnx,num-intr-inputs = <0x6>;
386 };
387 push_buttons_5bits: gpio@40040000 {
388 #gpio-cells = <2>;
389 compatible = "xlnx,xps-gpio-1.00.a";
390 gpio-controller ;
391 reg = <0x40040000 0x10000>;
392 xlnx,all-inputs = <0x1>;
393 xlnx,all-inputs-2 = <0x0>;
394 xlnx,all-outputs = <0x0>;
395 xlnx,all-outputs-2 = <0x0>;
396 xlnx,dout-default = <0x00000000>;
397 xlnx,dout-default-2 = <0x00000000>;
398 xlnx,gpio-width = <0x5>;
399 xlnx,gpio2-width = <0x20>;
400 xlnx,interrupt-present = <0x0>;
401 xlnx,is-dual = <0x0>;
402 xlnx,tri-default = <0xFFFFFFFF>;
403 xlnx,tri-default-2 = <0xFFFFFFFF>;
404 };
405 reset_gpio: gpio@40000000 {
406 #gpio-cells = <2>;
407 compatible = "xlnx,xps-gpio-1.00.a";
408 gpio-controller ;
409 reg = <0x40000000 0x10000>;
410 xlnx,all-inputs = <0x0>;
411 xlnx,all-inputs-2 = <0x0>;
412 xlnx,all-outputs = <0x1>;
413 xlnx,all-outputs-2 = <0x0>;
414 xlnx,dout-default = <0x00000000>;
415 xlnx,dout-default-2 = <0x00000000>;
416 xlnx,gpio-width = <0x1>;
417 xlnx,gpio2-width = <0x20>;
418 xlnx,interrupt-present = <0x0>;
419 xlnx,is-dual = <0x0>;
420 xlnx,tri-default = <0xFFFFFFFF>;
421 xlnx,tri-default-2 = <0xFFFFFFFF>;
422 };
423 rs232_uart: serial@44a00000 {
424 clock-frequency = <200000000>;
425 clocks = <&clk_bus_0>;
426 compatible = "xlnx,xps-uart16550-2.00.a", "ns16550a";
427 current-speed = <115200>;
428 device_type = "serial";
429 interrupt-parent = <&microblaze_0_axi_intc>;
430 interrupts = <0 2>;
431 port-number = <0>;
432 reg = <0x44a00000 0x10000>;
433 reg-offset = <0x1000>;
434 reg-shift = <2>;
435 xlnx,external-xin-clk-hz = <0x17d7840>;
436 xlnx,external-xin-clk-hz-d = <0x19>;
437 xlnx,has-external-rclk = <0x0>;
438 xlnx,has-external-xin = <0x0>;
439 xlnx,is-a-16550 = <0x1>;
440 xlnx,s-axi-aclk-freq-hz-d = "200.0";
441 xlnx,use-modem-ports = <0x1>;
442 xlnx,use-user-ports = <0x1>;
443 };
444 };
445};
diff --git a/meta-xilinx-bsp/recipes-bsp/device-tree/files/kc705-microblazeel/system-conf.dtsi b/meta-xilinx-bsp/recipes-bsp/device-tree/files/kc705-microblazeel/system-conf.dtsi
deleted file mode 100644
index 09b26c6a..00000000
--- a/meta-xilinx-bsp/recipes-bsp/device-tree/files/kc705-microblazeel/system-conf.dtsi
+++ /dev/null
@@ -1,43 +0,0 @@
1/*
2 * CAUTION: This file is automatically generated by PetaLinux SDK.
3 * DO NOT modify this file
4 */
5
6
7/ {
8 chosen {
9 bootargs = "console=ttyS0,115200 earlyprintk";
10 stdout-path = "serial0:115200n8";
11 };
12};
13
14&axi_ethernet {
15 local-mac-address = [00 0a 35 00 22 01];
16};
17
18&linear_flash {
19 reg = <0x60000000 0x08000000>;
20 #address-cells = <1>;
21 #size-cells = <1>;
22 partition@0x00000000 {
23 label = "fpga";
24 reg = <0x00000000 0x00b00000>;
25 };
26 partition@0x00b00000 {
27 label = "boot";
28 reg = <0x00b00000 0x00080000>;
29 };
30 partition@0x00b80000 {
31 label = "bootenv";
32 reg = <0x00b80000 0x00020000>;
33 };
34 partition@0x00ba0000 {
35 label = "kernel";
36 reg = <0x00ba0000 0x00c00000>;
37 };
38 partition@0x017a0000 {
39 label = "spare";
40 reg = <0x017a0000 0x00000000>;
41 };
42};
43
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
new file mode 100644
index 00000000..e512777c
--- /dev/null
+++ b/meta-xilinx-bsp/recipes-bsp/reference-design/kc705-bitstream_2022.2.bb
@@ -0,0 +1,48 @@
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/conf/layer.conf b/meta-xilinx-contrib/conf/layer.conf
index c6e9ac4c..4855de45 100644
--- a/meta-xilinx-contrib/conf/layer.conf
+++ b/meta-xilinx-contrib/conf/layer.conf
@@ -13,5 +13,3 @@ LAYERDEPENDS_xilinx-contrib = "core"
13LAYERDEPENDS_xilinx-contrib = "xilinx" 13LAYERDEPENDS_xilinx-contrib = "xilinx"
14 14
15LAYERSERIES_COMPAT_xilinx-contrib = "kirkstone" 15LAYERSERIES_COMPAT_xilinx-contrib = "kirkstone"
16
17XILINX_RELEASE_VERSION = "v2022.1"
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.2.bbappend b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx_2022.2.bbappend
new file mode 100644
index 00000000..8ba7a490
--- /dev/null
+++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx_2022.2.bbappend
@@ -0,0 +1,12 @@
1FILESEXTRAPATHS:prepend := "${THISDIR}/linux-xlnx:"
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/README.qemu.md b/meta-xilinx-core/README.qemu.md
index d0040b09..d3a02a90 100644
--- a/meta-xilinx-core/README.qemu.md
+++ b/meta-xilinx-core/README.qemu.md
@@ -12,7 +12,7 @@ to make this available: pmu-rom-native.
12The license on the software is Xilinx proprietary, so you may be required to 12The license on the software is Xilinx proprietary, so you may be required to
13enable the approprate LICENSE_FLAGS_WHITELIST to trigger the download. 13enable the approprate LICENSE_FLAGS_WHITELIST to trigger the download.
14The license itself is available within the download at the URL referred to in 14The license itself is available within the download at the URL referred to in
15meta-xilinx-core/recipes-bsp/pmu-firmware/pmu-rom-native_2022.1.bb. 15meta-xilinx-core/recipes-bsp/pmu-firmware/pmu-rom-native_2022.2.bb.
16 16
17Add the following to your local.conf to acknowledge you accept the proprietary 17Add the following to your local.conf to acknowledge you accept the proprietary
18xilinx license. 18xilinx license.
diff --git a/meta-xilinx-core/classes/fpgamanager_custom.bbclass b/meta-xilinx-core/classes/fpgamanager_custom.bbclass
index 848727fb..555e2a66 100644
--- a/meta-xilinx-core/classes/fpgamanager_custom.bbclass
+++ b/meta-xilinx-core/classes/fpgamanager_custom.bbclass
@@ -1,6 +1,3 @@
1LICENSE = "MIT"
2LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
3
4inherit devicetree 1inherit devicetree
5 2
6DEPENDS = "dtc-native bootgen-native" 3DEPENDS = "dtc-native bootgen-native"
diff --git a/meta-xilinx-core/conf/layer.conf b/meta-xilinx-core/conf/layer.conf
index f5320ee9..112f287a 100644
--- a/meta-xilinx-core/conf/layer.conf
+++ b/meta-xilinx-core/conf/layer.conf
@@ -18,6 +18,8 @@ meta-python:${LAYERDIR}/dynamic-layers/meta-python/recipes-*/*/*.bb \
18meta-python:${LAYERDIR}/dynamic-layers/meta-python/recipes-*/*/*.bbappend \ 18meta-python:${LAYERDIR}/dynamic-layers/meta-python/recipes-*/*/*.bbappend \
19virtualization-layer:${LAYERDIR}/dynamic-layers/virtualization-layer/recipes-*/*/*.bb \ 19virtualization-layer:${LAYERDIR}/dynamic-layers/virtualization-layer/recipes-*/*/*.bb \
20virtualization-layer:${LAYERDIR}/dynamic-layers/virtualization-layer/recipes-*/*/*.bbappend \ 20virtualization-layer:${LAYERDIR}/dynamic-layers/virtualization-layer/recipes-*/*/*.bbappend \
21xilinx-tools:${LAYERDIR}/dynamic-layers/meta-xilinx-tools/recipes-*/*/*.bb \
22xilinx-tools:${LAYERDIR}/dynamic-layers/meta-xilinx-tools/recipes-*/*/*.bbappend \
21" 23"
22 24
23LAYERDEPENDS_xilinx = "core" 25LAYERDEPENDS_xilinx = "core"
@@ -42,6 +44,17 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
42 *->xserver-xorg \ 44 *->xserver-xorg \
43" 45"
44 46
45XILINX_RELEASE_VERSION = "v2022.1" 47XILINX_RELEASE_VERSION ??= "v2022.2"
46 48
47XILINX_DEPRECATED[meta-xilinx] = "Kirkstone is not officially supported. See the meta-xilinx/README.kirkstone file for more information." 49XILINX_DEPRECATED[meta-xilinx] = "Kirkstone is not officially supported. See the meta-xilinx/README.kirkstone file for more information."
50
51BUILDCFG_VARS:append = " XILINX_RELEASE_VERSION"
52
53PREFERRED_VERSION_qemu-xilinx ?= "v6.1.0-xilinx-${XILINX_RELEASE_VERSION}%"
54PREFERRED_VERSION_qemu-xilinx-native ?= "v6.1.0-xilinx-${XILINX_RELEASE_VERSION}%"
55PREFERRED_VERSION_qemu-xilinx-system-native ?= "v6.1.0-xilinx-${XILINX_RELEASE_VERSION}%"
56PREFERRED_VERSION_qemu-devicetrees ?= "xilinx-${XILINX_RELEASE_VERSION}%"
57PREFERRED_VERSION_arm-trusted-firmware ?= "2.6-xilinx-${XILINX_RELEASE_VERSION}%"
58PREFERRED_VERSION_u-boot-xlnx ?= "v2021.01-xilinx-${XILINX_RELEASE_VERSION}%"
59PREFERRED_VERSION_pmu-rom-native ?= "${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}"
60PREFERRED_VERSION_linux-xlnx ?= "${@'5.15.19' if d.getVar("XILINX_RELEASE_VERSION") == 'v2022.1' else '5.15.36'}%"
diff --git a/meta-xilinx-core/conf/local.conf.sample b/meta-xilinx-core/conf/local.conf.sample
index a7173fb8..10134d53 100644
--- a/meta-xilinx-core/conf/local.conf.sample
+++ b/meta-xilinx-core/conf/local.conf.sample
@@ -206,11 +206,11 @@ BB_DISKMON_DIRS ??= "\
206#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \ 206#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
207#file://.* file:///some/local/dir/sstate/PATH" 207#file://.* file:///some/local/dir/sstate/PATH"
208 208
209XILINX_VER_MAIN = "2022.1" 209XILINX_RELEASE_VERSION = "v2022.2"
210 210
211# Uncomment below lines to provide path for custom xsct trim 211# Uncomment below lines to provide path for custom xsct trim
212# 212#
213#EXTERNAL_XSCT_TARBALL = "/proj/yocto/xsct-trim/2022.1_xsct_daily_latest" 213#EXTERNAL_XSCT_TARBALL = "/proj/yocto/xsct-trim/2022.2_xsct_daily_latest"
214#VALIDATE_XSCT_CHECKSUM = '0' 214#VALIDATE_XSCT_CHECKSUM = '0'
215 215
216# 216#
diff --git a/meta-xilinx-core/conf/machine/include/machine-xilinx-default.inc b/meta-xilinx-core/conf/machine/include/machine-xilinx-default.inc
index a4b0c59a..aa91f771 100644
--- a/meta-xilinx-core/conf/machine/include/machine-xilinx-default.inc
+++ b/meta-xilinx-core/conf/machine/include/machine-xilinx-default.inc
@@ -38,6 +38,13 @@ XSERVER ?= " \
38 ${XSERVER_EXT} \ 38 ${XSERVER_EXT} \
39 " 39 "
40 40
41# Automatically add WKS_FILE_DEPENDS based on the configuration
42WKS_FILE_DEPENDS:append = "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.bin', ' xilinx-bootbin', '', d)}"
43WKS_FILE_DEPENDS:append = "${@bb.utils.contains('IMAGE_BOOT_FILES', 'system.dtb', ' virtual/dtb', '', d)}"
44WKS_FILE_DEPENDS:append = "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.scr', ' u-boot-zynq-scr', '', d)}"
45WKS_FILE_DEPENDS:append = "${@bb.utils.contains('IMAGE_BOOT_FILES', 'uEnv.txt', ' u-boot-zynq-uenv', '', d)}"
46WKS_FILE_DEPENDS:append = "${@bb.utils.contains('IMAGE_BOOT_FILES', 'atf-uboot.ub', ' arm-trusted-firmware', '', d)}"
47
41IMAGE_BOOT_FILES ?= "${@get_default_image_boot_files(d)}" 48IMAGE_BOOT_FILES ?= "${@get_default_image_boot_files(d)}"
42 49
43def get_default_image_boot_files(d): 50def get_default_image_boot_files(d):
diff --git a/meta-xilinx-core/conf/machine/include/soc-versal.inc b/meta-xilinx-core/conf/machine/include/soc-versal.inc
index 40145963..dcf3796e 100644
--- a/meta-xilinx-core/conf/machine/include/soc-versal.inc
+++ b/meta-xilinx-core/conf/machine/include/soc-versal.inc
@@ -7,6 +7,7 @@ SOC_FAMILY ?= "versal"
7# "hbm" - Versal HMB Devices 7# "hbm" - Versal HMB Devices
8# "ai-core" - Versal AI-core Devices 8# "ai-core" - Versal AI-core Devices
9# "ai-edge" - Versal AI-Edge Devices 9# "ai-edge" - Versal AI-Edge Devices
10# "net" - Versal Net Devices
10 11
11SOC_VARIANT ?= "prime" 12SOC_VARIANT ?= "prime"
12 13
diff --git a/meta-xilinx-core/conf/machine/microblaze-generic.conf b/meta-xilinx-core/conf/machine/microblaze-generic.conf
index c0e41948..92412681 100644
--- a/meta-xilinx-core/conf/machine/microblaze-generic.conf
+++ b/meta-xilinx-core/conf/machine/microblaze-generic.conf
@@ -32,7 +32,7 @@ MACHINE_FEATURES = ""
32KERNEL_IMAGETYPE ?= "linux.bin.ub" 32KERNEL_IMAGETYPE ?= "linux.bin.ub"
33KERNEL_IMAGETYPES = "" 33KERNEL_IMAGETYPES = ""
34 34
35SERIAL_CONSOLES ?= "115200;ttyS0" 35SERIAL_CONSOLES ?= "115200;ttyUL0"
36 36
37MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree" 37MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
38 38
@@ -44,6 +44,7 @@ EXTRA_IMAGEDEPENDS += "libyaml-native python3-cython-native python3-pyyaml-nativ
44 44
45UBOOT_MACHINE ?= "microblaze-generic_defconfig" 45UBOOT_MACHINE ?= "microblaze-generic_defconfig"
46UBOOT_INITIAL_ENV = "" 46UBOOT_INITIAL_ENV = ""
47BOOTMODE ?= "generic.root"
47 48
48HDF_MACHINE = "kc705-microblazeel" 49HDF_MACHINE = "kc705-microblazeel"
49IMAGE_FSTYPES += "cpio.gz" 50IMAGE_FSTYPES += "cpio.gz"
diff --git a/meta-xilinx-core/conf/machine/versal-generic.conf b/meta-xilinx-core/conf/machine/versal-generic.conf
index b737f1d1..9b9ebf31 100644
--- a/meta-xilinx-core/conf/machine/versal-generic.conf
+++ b/meta-xilinx-core/conf/machine/versal-generic.conf
@@ -20,6 +20,7 @@ MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost"
20EXTRA_IMAGEDEPENDS += "libyaml-native python3-cython-native python3-pyyaml-native" 20EXTRA_IMAGEDEPENDS += "libyaml-native python3-cython-native python3-pyyaml-native"
21 21
22UBOOT_MACHINE ?= "xilinx_versal_virt_defconfig" 22UBOOT_MACHINE ?= "xilinx_versal_virt_defconfig"
23BOOTMODE ?= "generic.root"
23 24
24SERIAL_CONSOLES ?= "115200;ttyAMA0" 25SERIAL_CONSOLES ?= "115200;ttyAMA0"
25 26
diff --git a/meta-xilinx-core/conf/machine/versal-net-generic.conf b/meta-xilinx-core/conf/machine/versal-net-generic.conf
new file mode 100644
index 00000000..1941235a
--- /dev/null
+++ b/meta-xilinx-core/conf/machine/versal-net-generic.conf
@@ -0,0 +1,30 @@
1#@TYPE: Machine
2#@NAME: Versal Net Generic
3##@DESCRIPTION: Versal Net
4
5#### Preamble
6MACHINEOVERRIDES =. "${@['', 'versal-net-generic:']['versal-net-generic' != '${MACHINE}']}"
7#### Regular settings follow
8
9SOC_VARIANT = "net"
10
11# Must be set first, or versal-generic will set it
12UBOOT_MACHINE ?= "xilinx_versal_net_virt_defconfig"
13
14require conf/machine/versal-generic.conf
15
16#### REMOVE THE FOLLOWING WHEN BOOTGEN IS SYNCED
17# required for bootgen native/nativesdk
18MACHINEOVERRIDES:class-native = "versal-net"
19MACHINEOVERRIDES:class-nativesdk = "versal-net"
20#### REMOVE THE ABOVE
21
22HDF_MACHINE = "versal-net-generic"
23
24QEMU_HW_DTB_PS = "${QEMU_HW_DTB_PATH}/board-versal-net-psx-spp-1.4.dtb"
25QEMU_HW_DTB_PMC = "${QEMU_HW_DTB_PATH}/board-versal-pmx-virt.dtb"
26
27#### No additional settings should be after the Postamble
28#### Postamble
29PACKAGE_EXTRA_ARCHS:append = "${@['', ' versal_net_generic']['versal-net-generic' != "${MACHINE}"]}"
30
diff --git a/meta-xilinx-core/conf/machine/zynq-generic.conf b/meta-xilinx-core/conf/machine/zynq-generic.conf
index 3c30c362..6ad00d72 100644
--- a/meta-xilinx-core/conf/machine/zynq-generic.conf
+++ b/meta-xilinx-core/conf/machine/zynq-generic.conf
@@ -20,6 +20,7 @@ MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost usbgadget"
20EXTRA_IMAGEDEPENDS += "libyaml-native python3-cython-native python3-pyyaml-native" 20EXTRA_IMAGEDEPENDS += "libyaml-native python3-cython-native python3-pyyaml-native"
21 21
22UBOOT_MACHINE ?= "xilinx_zynq_virt_defconfig" 22UBOOT_MACHINE ?= "xilinx_zynq_virt_defconfig"
23BOOTMODE ?= "generic.root"
23 24
24SERIAL_CONSOLES ?= "115200;ttyPS0" 25SERIAL_CONSOLES ?= "115200;ttyPS0"
25 26
diff --git a/meta-xilinx-core/conf/machine/zynqmp-generic.conf b/meta-xilinx-core/conf/machine/zynqmp-generic.conf
index 15fe9d11..32de4d50 100644
--- a/meta-xilinx-core/conf/machine/zynqmp-generic.conf
+++ b/meta-xilinx-core/conf/machine/zynqmp-generic.conf
@@ -31,6 +31,7 @@ EXTRA_IMAGEDEPENDS += "libyaml-native python3-cython-native python3-pyyaml-nativ
31 31
32UBOOT_MACHINE ?= "xilinx_zynqmp_virt_defconfig" 32UBOOT_MACHINE ?= "xilinx_zynqmp_virt_defconfig"
33SPL_BINARY ?= "spl/boot.bin" 33SPL_BINARY ?= "spl/boot.bin"
34BOOTMODE ?= "generic.root"
34 35
35# Default SD image build onfiguration, use qemu-sd to pad 36# Default SD image build onfiguration, use qemu-sd to pad
36IMAGE_CLASSES += "image-types-xilinx-qemu" 37IMAGE_CLASSES += "image-types-xilinx-qemu"
diff --git a/meta-xilinx-core/dynamic-layers/meta-xilinx-tools/recipes-bsp/device-tree/device-tree.bbappend b/meta-xilinx-core/dynamic-layers/meta-xilinx-tools/recipes-bsp/device-tree/device-tree.bbappend
new file mode 100644
index 00000000..151bd0e0
--- /dev/null
+++ b/meta-xilinx-core/dynamic-layers/meta-xilinx-tools/recipes-bsp/device-tree/device-tree.bbappend
@@ -0,0 +1,18 @@
1# Set Board DTSI files for generic manchine configuration files based on HDF_MACHINE.
2
3# microblaze-generic.conf uses HDF_MACHINE = "kc705-microblazeel", Hence set kc705-full dtsi file.
4YAML_MAIN_MEMORY_CONFIG:microblaze-generic ?= "mig_7series_0"
5YAML_CONSOLE_DEVICE_CONFIG:microblaze-generic ?= "axi_uartlite_0"
6YAML_DT_BOARD_FLAGS:microblaze-generic ?= "{BOARD kc705-full}"
7
8# zynq-generic.conf uses HDF_MACHINE = "zc702-zynq7", Hence set zc702 dtsi file.
9YAML_DT_BOARD_FLAGS:zynq-generic ?= "{BOARD zc702}"
10
11# zynqmp-generic.conf uses HDF_MACHINE = "zcu102-zynqmp", Hence set zcu102-rev1.0 dtsi file.
12YAML_DT_BOARD_FLAGS:zynqmp-generic ?= "{BOARD zcu102-rev1.0}"
13
14# versal-generic.conf file uses HDF_MACHINE = "vck190-versal", Hence set versal-vck190-reva-x-ebm-01-reva dtsi file.
15YAML_DT_BOARD_FLAGS:versal-generic ?= "{BOARD versal-vck190-reva-x-ebm-01-reva}"
16
17# versal-net-generic.conf uses HDF_MACHINE = "versal-net-generic", Hence set versal-net-ipp-rev1.9 dtsi file.
18YAML_DT_BOARD_FLAGS:versal-net-generic ?= "{BOARD versal-net-ipp-rev1.9}"
diff --git a/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc
index ed391160..5efd99ea 100644
--- a/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc
+++ b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware.inc
@@ -14,9 +14,8 @@ B = "${WORKDIR}/build"
14 14
15SYSROOT_DIRS += "/boot" 15SYSROOT_DIRS += "/boot"
16 16
17XILINX_RELEASE_VERSION ?= ""
18ATF_VERSION ?= "2.2" 17ATF_VERSION ?= "2.2"
19ATF_VERSION_EXTENSION ?= "-xilinx-${XILINX_RELEASE_VERSION}" 18ATF_VERSION_EXTENSION ?= "-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}"
20PV = "${ATF_VERSION}${ATF_VERSION_EXTENSION}+git${SRCPV}" 19PV = "${ATF_VERSION}${ATF_VERSION_EXTENSION}+git${SRCPV}"
21 20
22BRANCH ?= "" 21BRANCH ?= ""
@@ -36,6 +35,7 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
36 35
37PLATFORM:zynqmp = "zynqmp" 36PLATFORM:zynqmp = "zynqmp"
38PLATFORM:versal = "versal" 37PLATFORM:versal = "versal"
38PLATFORM:versal-net = "versal_net"
39 39
40# requires CROSS_COMPILE set by hand as there is no configure script 40# requires CROSS_COMPILE set by hand as there is no configure script
41export CROSS_COMPILE="${TARGET_PREFIX}" 41export CROSS_COMPILE="${TARGET_PREFIX}"
@@ -55,6 +55,7 @@ DEBUG_ATF:versal ?= "1"
55 55
56EXTRA_OEMAKE:append:zynqmp = "${@' ZYNQMP_CONSOLE=${ATF_CONSOLE}' if d.getVar('ATF_CONSOLE', True) != '' else ''}" 56EXTRA_OEMAKE:append:zynqmp = "${@' ZYNQMP_CONSOLE=${ATF_CONSOLE}' if d.getVar('ATF_CONSOLE', True) != '' else ''}"
57EXTRA_OEMAKE:append:versal = "${@' VERSAL_CONSOLE=${ATF_CONSOLE}' if d.getVar('ATF_CONSOLE', True) != '' else ''}" 57EXTRA_OEMAKE:append:versal = "${@' VERSAL_CONSOLE=${ATF_CONSOLE}' if d.getVar('ATF_CONSOLE', True) != '' else ''}"
58EXTRA_OEMAKE:append:versal-net = "${@' VERSAL_NET_CONSOLE=${ATF_CONSOLE}' if d.getVar('ATF_CONSOLE', True) != '' else ''}"
58EXTRA_OEMAKE:append = " ${@bb.utils.contains('DEBUG_ATF', '1', ' DEBUG=${DEBUG_ATF}', '', d)}" 59EXTRA_OEMAKE:append = " ${@bb.utils.contains('DEBUG_ATF', '1', ' DEBUG=${DEBUG_ATF}', '', d)}"
59 60
60OUTPUT_DIR = "${@bb.utils.contains('DEBUG_ATF', '1', '${B}/${PLATFORM}/debug', '${B}/${PLATFORM}/release', d)}" 61OUTPUT_DIR = "${@bb.utils.contains('DEBUG_ATF', '1', '${B}/${PLATFORM}/debug', '${B}/${PLATFORM}/release', d)}"
@@ -68,6 +69,9 @@ EXTRA_OEMAKE:append:zynqmp = "${@' ZYNQMP_ATF_MEM_SIZE=${ATF_MEM_SIZE}' if d.get
68EXTRA_OEMAKE:append:versal = "${@' VERSAL_ATF_MEM_BASE=${ATF_MEM_BASE}' if d.getVar('ATF_MEM_BASE', True) != '' else ''}" 69EXTRA_OEMAKE:append:versal = "${@' VERSAL_ATF_MEM_BASE=${ATF_MEM_BASE}' if d.getVar('ATF_MEM_BASE', True) != '' else ''}"
69EXTRA_OEMAKE:append:versal = "${@' VERSAL_ATF_MEM_SIZE=${ATF_MEM_SIZE}' if d.getVar('ATF_MEM_SIZE', True) != '' else ''}" 70EXTRA_OEMAKE:append:versal = "${@' VERSAL_ATF_MEM_SIZE=${ATF_MEM_SIZE}' if d.getVar('ATF_MEM_SIZE', True) != '' else ''}"
70 71
72EXTRA_OEMAKE:append:versal-net = "${@' VERSAL_NET_ATF_MEM_BASE=${ATF_MEM_BASE}' if d.getVar('ATF_MEM_BASE', True) != '' else ''}"
73EXTRA_OEMAKE:append:versal-net = "${@' VERSAL_NET_ATF_MEM_SIZE=${ATF_MEM_SIZE}' if d.getVar('ATF_MEM_SIZE', True) != '' else ''}"
74
71ATF_PROVENCORE = "SPD=pncd SPD_PNCD_NS_IRQ=51 ZYNQMP_BL32_MEM_BASE=0x70000000 ZYNQMP_BL32_MEM_SIZE=0x0FF00000" 75ATF_PROVENCORE = "SPD=pncd SPD_PNCD_NS_IRQ=51 ZYNQMP_BL32_MEM_BASE=0x70000000 ZYNQMP_BL32_MEM_SIZE=0x0FF00000"
72EXTRA_OEMAKE:append = "${@bb.utils.contains('MACHINE_FEATURES', 'provencore', ' ${ATF_PROVENCORE}', '', d)}" 76EXTRA_OEMAKE:append = "${@bb.utils.contains('MACHINE_FEATURES', 'provencore', ' ${ATF_PROVENCORE}', '', d)}"
73 77
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..7e423b9c
--- /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 = "85544c0159e216935e40174dadfed1296b6042bd"
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/bootgen/bootgen_1.0.bb b/meta-xilinx-core/recipes-bsp/bootgen/bootgen_1.0.bb
index 101d4ca2..f80e1feb 100644
--- a/meta-xilinx-core/recipes-bsp/bootgen/bootgen_1.0.bb
+++ b/meta-xilinx-core/recipes-bsp/bootgen/bootgen_1.0.bb
@@ -10,8 +10,8 @@ DEPENDS += "openssl"
10RDEPENDS:${PN} += "openssl" 10RDEPENDS:${PN} += "openssl"
11 11
12REPO ?= "git://github.com/Xilinx/bootgen.git;protocol=https" 12REPO ?= "git://github.com/Xilinx/bootgen.git;protocol=https"
13BRANCH ?= "xlnx_rel_v2022.1" 13BRANCH ?= "master"
14SRCREV = "4eac958eb6c831ffa5768a0e2cd4be23c5efe2e0" 14SRCREV = "d890ba298685b73307a01a9dbcc8702f9afcdbcc"
15 15
16BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" 16BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
17SRC_URI = "${REPO};${BRANCHARG}" 17SRC_URI = "${REPO};${BRANCHARG}"
diff --git a/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr/dfx-mgr.service b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr/dfx-mgr.service
deleted file mode 100644
index 12239266..00000000
--- a/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr/dfx-mgr.service
+++ /dev/null
@@ -1,15 +0,0 @@
1# SPDX-License-Identifier: MIT
2#
3# DFX manager daemon is used to demonstrate Dynamic Function eXchange (DFX)
4# or partial reconfiguration feature on Xilinx Zynq UltraScale+ and newer.
5# See: UG909 "Vivado Design Suite User Guide Dynamic Function eXchange"
6
7[Unit]
8Description=dfx-mgrd Dynamic Function eXchange
9Documentation=https://github.com/Xilinx/dfx-mgr
10
11[Service]
12ExecStart=/usr/bin/dfx-mgrd
13
14[Install]
15WantedBy=multi-user.target
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
index 4bd234ba..6bd24fdf 100644
--- 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
@@ -8,8 +8,8 @@ REPO ?= "git://github.com/Xilinx/dfx-mgr.git;protocol=https"
8BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" 8BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
9SRC_URI = "${REPO};${BRANCHARG}" 9SRC_URI = "${REPO};${BRANCHARG}"
10 10
11BRANCH = "xlnx_rel_v2022.1" 11BRANCH = "master"
12SRCREV = "b1a4a2bd4fa72b3fb8e9e8f9c97ef5444bd9fb2a" 12SRCREV = "b7fe333513edda99cd84f3a2d26e01aaf4bd5e02"
13SOMAJOR = "1" 13SOMAJOR = "1"
14SOMINOR = "0" 14SOMINOR = "0"
15SOVERSION = "${SOMAJOR}.${SOMINOR}" 15SOVERSION = "${SOMAJOR}.${SOMINOR}"
@@ -23,13 +23,13 @@ S = "${WORKDIR}/git"
23inherit cmake update-rc.d systemd 23inherit cmake update-rc.d systemd
24 24
25DEPENDS += " libwebsockets inotify-tools libdfx zocl libdrm" 25DEPENDS += " libwebsockets inotify-tools libdfx zocl libdrm"
26RDEPENDS:${PN} += " fru-print"
26EXTRA_OECMAKE += " \ 27EXTRA_OECMAKE += " \
27 -DCMAKE_SYSROOT:PATH=${RECIPE_SYSROOT} \ 28 -DCMAKE_SYSROOT:PATH=${RECIPE_SYSROOT} \
28 " 29 "
29INITSCRIPT_NAME = "dfx-mgr.sh" 30INITSCRIPT_NAME = "dfx-mgr.sh"
30INITSCRIPT_PARAMS = "start 99 S ." 31INITSCRIPT_PARAMS = "start 99 S ."
31 32
32SRC_URI:append = " file://dfx-mgr.service"
33SYSTEMD_PACKAGES="${PN}" 33SYSTEMD_PACKAGES="${PN}"
34SYSTEMD_SERVICE:${PN}="dfx-mgr.service" 34SYSTEMD_SERVICE:${PN}="dfx-mgr.service"
35SYSTEMD_AUTO_ENABLE:${PN}="enable" 35SYSTEMD_AUTO_ENABLE:${PN}="enable"
@@ -47,7 +47,7 @@ do_install(){
47 chrpath -d ${D}${bindir}/dfx-mgrd 47 chrpath -d ${D}${bindir}/dfx-mgrd
48 chrpath -d ${D}${bindir}/dfx-mgr-client 48 chrpath -d ${D}${bindir}/dfx-mgr-client
49 install -m 0644 ${S}/src/dfxmgr_client.h ${D}${includedir} 49 install -m 0644 ${S}/src/dfxmgr_client.h ${D}${includedir}
50 50
51 oe_soinstall ${B}/src/libdfx-mgr.so.${SOVERSION} ${D}${libdir} 51 oe_soinstall ${B}/src/libdfx-mgr.so.${SOVERSION} ${D}${libdir}
52 52
53 install -m 0755 ${S}/src/daemon.conf ${D}${sysconfdir}/dfx-mgrd/ 53 install -m 0755 ${S}/src/daemon.conf ${D}${sysconfdir}/dfx-mgrd/
@@ -57,9 +57,11 @@ do_install(){
57 install -m 0755 ${S}/src/dfx-mgr.sh ${D}${sysconfdir}/init.d/ 57 install -m 0755 ${S}/src/dfx-mgr.sh ${D}${sysconfdir}/init.d/
58 fi 58 fi
59 59
60 install -m 0755 ${S}/src/dfx-mgr.sh ${D}${bindir}/ 60 install -m 0755 ${S}/src/dfx-mgr.sh ${D}${bindir}
61 install -d ${D}${systemd_system_unitdir} 61 install -m 0755 ${S}/src/scripts/xlnx-firmware-detect ${D}${bindir}
62 install -m 0644 ${WORKDIR}/dfx-mgr.service ${D}${systemd_system_unitdir} 62
63 install -d ${D}${systemd_system_unitdir}
64 install -m 0644 ${S}/src/dfx-mgr.service ${D}${systemd_system_unitdir}
63} 65}
64 66
65PACKAGES =+ "libdfx-mgr" 67PACKAGES =+ "libdfx-mgr"
diff --git a/meta-xilinx-core/recipes-bsp/fpga-manager-script/files/fpgautil.c b/meta-xilinx-core/recipes-bsp/fpga-manager-script/files/fpgautil.c
index e4fb1d2f..04777a91 100644
--- a/meta-xilinx-core/recipes-bsp/fpga-manager-script/files/fpgautil.c
+++ b/meta-xilinx-core/recipes-bsp/fpga-manager-script/files/fpgautil.c
@@ -1,6 +1,7 @@
1/****************************************************************************** 1/******************************************************************************
2 * 2 *
3 * Copyright (C) 2019-2020 Xilinx, Inc. All rights reserved. 3 * Copyright (C) 2019-2022 Xilinx, Inc. All rights reserved.
4 * Copyright (C) 2022 Advanced Micro Devices, Inc. All rights reserved.
4 * 5 *
5 * Permission is hereby granted, free of charge, to any person obtaining a copy of 6 * Permission is hereby granted, free of charge, to any person obtaining a copy of
6 * this software and associated documentation files (the "Software"), to deal in 7 * this software and associated documentation files (the "Software"), to deal in
@@ -91,7 +92,7 @@ void print_usage(char *prg)
91 fprintf(stderr, " Device Tree\n"); 92 fprintf(stderr, " Device Tree\n");
92 if (iszynqmp) 93 if (iszynqmp)
93 { 94 {
94 fprintf(stderr, " Default: <Full>\n"); 95 fprintf(stderr, " Default: <full>\n");
95 fprintf(stderr, " -s <secure flags> Optional: <Secure flags>\n"); 96 fprintf(stderr, " -s <secure flags> Optional: <Secure flags>\n");
96 fprintf(stderr, " s := <AuthDDR | AuthOCM | EnUsrKey | EnDevKey | AuthEnUsrKeyDDR | AuthEnUsrKeyOCM | AuthEnDevKeyDDR | AuthEnDevKeyOCM>\n"); 97 fprintf(stderr, " s := <AuthDDR | AuthOCM | EnUsrKey | EnDevKey | AuthEnUsrKeyDDR | AuthEnUsrKeyOCM | AuthEnDevKeyDDR | AuthEnDevKeyOCM>\n");
97 fprintf(stderr, " -k <AesKey> Optional: <AES User Key>\n"); 98 fprintf(stderr, " -k <AesKey> Optional: <AES User Key>\n");
@@ -107,7 +108,7 @@ void print_usage(char *prg)
107 fprintf(stderr, " \n"); 108 fprintf(stderr, " \n");
108 fprintf(stderr, "Examples:\n"); 109 fprintf(stderr, "Examples:\n");
109 fprintf(stderr, "(Load Full bitstream using Overlay)\n"); 110 fprintf(stderr, "(Load Full bitstream using Overlay)\n");
110 fprintf(stderr, "%s -b top.bit.bin -o can.dtbo -f Full -n Full \n", prg); 111 fprintf(stderr, "%s -b top.bit.bin -o can.dtbo -f Full -n full \n", prg);
111 fprintf(stderr, "(Load Partial bitstream using Overlay)\n"); 112 fprintf(stderr, "(Load Partial bitstream using Overlay)\n");
112 fprintf(stderr, "%s -b rm0.bit.bin -o rm0.dtbo -f Partial -n PR0\n", prg); 113 fprintf(stderr, "%s -b rm0.bit.bin -o rm0.dtbo -f Partial -n PR0\n", prg);
113 fprintf(stderr, "(Load Full bitstream using sysfs interface)\n"); 114 fprintf(stderr, "(Load Full bitstream using sysfs interface)\n");
@@ -127,7 +128,7 @@ void print_usage(char *prg)
127 fprintf(stderr, "(Remove Partial Overlay)\n"); 128 fprintf(stderr, "(Remove Partial Overlay)\n");
128 fprintf(stderr, "%s -R -n PR0\n", prg); 129 fprintf(stderr, "%s -R -n PR0\n", prg);
129 fprintf(stderr, "(Remove Full Overlay)\n"); 130 fprintf(stderr, "(Remove Full Overlay)\n");
130 fprintf(stderr, "%s -R -n Full\n", prg); 131 fprintf(stderr, "%s -R -n full\n", prg);
131 fprintf(stderr, "Note: %s -R is responsible for only removing the dtbo file from the livetree. it will not remove the PL logic from the FPGA region.\n", prg); 132 fprintf(stderr, "Note: %s -R is responsible for only removing the dtbo file from the livetree. it will not remove the PL logic from the FPGA region.\n", prg);
132 fprintf(stderr, " \n"); 133 fprintf(stderr, " \n");
133} 134}
diff --git a/meta-xilinx-core/recipes-bsp/fpga-manager-script/fpga-manager-script_1.0.bb b/meta-xilinx-core/recipes-bsp/fpga-manager-script/fpga-manager-script_1.0.bb
index 416edf17..d22c995c 100644
--- a/meta-xilinx-core/recipes-bsp/fpga-manager-script/fpga-manager-script_1.0.bb
+++ b/meta-xilinx-core/recipes-bsp/fpga-manager-script/fpga-manager-script_1.0.bb
@@ -1,7 +1,7 @@
1SUMMARY = "Install user script to support fpga-manager" 1SUMMARY = "Install user script to support fpga-manager"
2DESCRIPTION = "Install user script that loads and unloads overlays using kernel fpga-manager" 2DESCRIPTION = "Install user script that loads and unloads overlays using kernel fpga-manager"
3LICENSE = "Proprietary" 3LICENSE = "Proprietary"
4LIC_FILES_CHKSUM = "file://${WORKDIR}/fpgautil.c;beginline=1;endline=24;md5=8010e59a286b1e3a73a9fdd93bd18778" 4LIC_FILES_CHKSUM = "file://${WORKDIR}/fpgautil.c;beginline=1;endline=24;md5=0c02eabf57dba52842c5df9b96bccfae"
5 5
6SRC_URI = "\ 6SRC_URI = "\
7 file://fpgautil.c \ 7 file://fpgautil.c \
diff --git a/meta-xilinx-core/recipes-bsp/libdfx/libdfx_1.0.bb b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_1.0.bb
index 36cfcd28..54f04d82 100644
--- a/meta-xilinx-core/recipes-bsp/libdfx/libdfx_1.0.bb
+++ b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_1.0.bb
@@ -4,11 +4,11 @@ DESCRIPTION = "Xilinx libdfx Library and headers"
4LICENSE = "MIT & GPL-2.0-or-later" 4LICENSE = "MIT & GPL-2.0-or-later"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=94aba86aec117f003b958a52f019f1a7" 5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=94aba86aec117f003b958a52f019f1a7"
6 6
7BRANCH ?= "xlnx_rel_v2022.1" 7BRANCH ?= "master"
8REPO ?= "git://github.com/Xilinx/libdfx.git;protocol=https" 8REPO ?= "git://github.com/Xilinx/libdfx.git;protocol=https"
9BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" 9BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
10SRC_URI = "${REPO};${BRANCHARG}" 10SRC_URI = "${REPO};${BRANCHARG}"
11SRCREV = "96d8462a72b9b64e1057f8864795b5f60a2fc884" 11SRCREV = "cb36032844b3845ad28007404d0566184504c03f"
12 12
13COMPATIBLE_MACHINE = "^$" 13COMPATIBLE_MACHINE = "^$"
14COMPATIBLE_MACHINE:zynqmp = "zynqmp" 14COMPATIBLE_MACHINE:zynqmp = "zynqmp"
diff --git a/meta-xilinx-core/recipes-bsp/pmu-firmware/pmu-rom-native_2022.2.bb b/meta-xilinx-core/recipes-bsp/pmu-firmware/pmu-rom-native_2022.2.bb
new file mode 100644
index 00000000..44ad9368
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/pmu-firmware/pmu-rom-native_2022.2.bb
@@ -0,0 +1,27 @@
1SUMMARY = "PMU ROM for QEMU"
2DESCRIPTION = "The ZynqMP PMU ROM for QEMU emulation"
3HOMEPAGE = "http://www.xilinx.com"
4SECTION = "bsp"
5
6LICENSE = "Proprietary"
7LICENSE_FLAGS = "xilinx"
8LIC_FILES_CHKSUM = "file://PMU_ROM-LICENSE.txt;md5=d43d49bc1eb1c907fc6f4ea75abafdfc"
9
10SRC_URI = "https://www.xilinx.com/bin/public/openDownload?filename=PMU_ROM.tar.gz"
11SRC_URI[sha256sum] = "f9a450ef960979463ea0a87a35fafb4a5b62d3a741de30cbcef04c8edc22a7cf"
12
13S = "${WORKDIR}/PMU_ROM"
14
15inherit deploy native
16
17INHIBIT_DEFAULT_DEPS = "1"
18
19do_configure[noexec] = "1"
20do_compile[noexec] = "1"
21do_install[noexec] = "1"
22
23do_deploy () {
24 install -D ${S}/pmu-rom.elf ${DEPLOYDIR}/pmu-rom.elf
25}
26
27addtask deploy before do_build after do_install
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc
index 5a9a0868..8971d58f 100644
--- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc
@@ -2,8 +2,8 @@ require recipes-bsp/u-boot/u-boot.inc
2 2
3DEPENDS += "bc-native dtc-native bison-native xxd-native" 3DEPENDS += "bc-native dtc-native bison-native xxd-native"
4 4
5XILINX_RELEASE_VERSION ?= "" 5# Use the name of the .bb for the extension
6UBOOT_VERSION_EXTENSION ?= "-xilinx-${XILINX_RELEASE_VERSION}" 6UBOOT_VERSION_EXTENSION ?= "-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}"
7PV = "${UBOOT_VERSION}${UBOOT_VERSION_EXTENSION}+git${SRCPV}" 7PV = "${UBOOT_VERSION}${UBOOT_VERSION_EXTENSION}+git${SRCPV}"
8 8
9UBOOTURI ?= "git://github.com/Xilinx/u-boot-xlnx.git;protocol=https" 9UBOOTURI ?= "git://github.com/Xilinx/u-boot-xlnx.git;protocol=https"
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..46bfd5b9
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2022.2.bb
@@ -0,0 +1,19 @@
1UBOOT_VERSION = "v2021.01"
2
3UBRANCH ?= "master"
4
5SRCREV = "f2402773e2d82aafc08ac39c03f3bc430c014703"
6
7include u-boot-xlnx.inc
8include u-boot-spl-zynq-init.inc
9
10LICENSE = "GPLv2+"
11LIC_FILES_CHKSUM = "file://README;beginline=1;endline=4;md5=744e7e3bb0c94b4b9f6b3db3bf893897"
12
13# u-boot-xlnx has support for these
14HAS_PLATFORM_INIT ?= " \
15 xilinx_zynqmp_virt_config \
16 xilinx_zynq_virt_defconfig \
17 xilinx_versal_vc_p_a2197_revA_x_prc_01_revA \
18 "
19
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-zynq-scr.bb b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-zynq-scr.bb
index cf1ba209..8a3a5db6 100644
--- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-zynq-scr.bb
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-zynq-scr.bb
@@ -27,7 +27,7 @@ KERNEL_BOOTCMD:zynq ?= "bootm"
27KERNEL_BOOTCMD:versal ?= "booti" 27KERNEL_BOOTCMD:versal ?= "booti"
28KERNEL_BOOTCMD:microblaze ?= "bootm" 28KERNEL_BOOTCMD:microblaze ?= "bootm"
29 29
30BOOTMODE ?= "generic" 30BOOTMODE ??= "generic"
31BOOTFILE_EXT ?= "" 31BOOTFILE_EXT ?= ""
32 32
33#Make this value to "1" to skip appending base address to ddr offsets. 33#Make this value to "1" to skip appending base address to ddr offsets.
@@ -43,6 +43,7 @@ SRC_URI = " \
43 file://boot.cmd.sd.versal \ 43 file://boot.cmd.sd.versal \
44 file://boot.cmd.qspi.versal \ 44 file://boot.cmd.qspi.versal \
45 file://boot.cmd.generic \ 45 file://boot.cmd.generic \
46 file://boot.cmd.generic.root \
46 file://boot.cmd.ubifs \ 47 file://boot.cmd.ubifs \
47 file://pxeboot.pxe \ 48 file://pxeboot.pxe \
48 " 49 "
@@ -159,7 +160,15 @@ NAND_FIT_IMAGE_OFFSET ?= "0x4180000"
159NAND_FIT_IMAGE_OFFSET:zynq ?= "0x1080000" 160NAND_FIT_IMAGE_OFFSET:zynq ?= "0x1080000"
160NAND_FIT_IMAGE_SIZE ?= "0x6400000" 161NAND_FIT_IMAGE_SIZE ?= "0x6400000"
161 162
162SDBOOTDEV ?= "0" 163# Default to booting with the rootfs device being partition 2 for SD/eMMC
164PARTNUM ?= "2"
165
166# Set Kernel root filesystem parameter for SD/eMMC boot
167# Bootdev will automatically be set to 'sda' or 'mmcblkXp'
168KERNEL_ROOT_SD ?= "root=/dev/\${bootdev}${PARTNUM} ro rootwait"
169
170# Set Kernel root filesystem parameter for JTAG/QSPI/OSPI/NAND(using RAMDISK) boot
171KERNEL_ROOT_RAMDISK ?= "root=/dev/ram0 rw"
163 172
164BITSTREAM_LOAD_ADDRESS ?= "0x100000" 173BITSTREAM_LOAD_ADDRESS ?= "0x100000"
165 174
@@ -217,6 +226,9 @@ do_compile() {
217 -e 's/@@UENV_MMC_LOAD_ADDRESS@@/${UENV_MMC_LOAD_ADDRESS}/' \ 226 -e 's/@@UENV_MMC_LOAD_ADDRESS@@/${UENV_MMC_LOAD_ADDRESS}/' \
218 -e 's/@@UENV_TEXTFILE@@/${UENV_TEXTFILE}/' \ 227 -e 's/@@UENV_TEXTFILE@@/${UENV_TEXTFILE}/' \
219 -e 's/@@RAMDISK_IMAGE1@@/${RAMDISK_IMAGE1}/' \ 228 -e 's/@@RAMDISK_IMAGE1@@/${RAMDISK_IMAGE1}/' \
229 -e 's/@@PARTNUM@@/${PARTNUM}/' \
230 -e 's:@@KERNEL_ROOT_SD@@:${KERNEL_ROOT_SD}:' \
231 -e 's:@@KERNEL_ROOT_RAMDISK@@:${KERNEL_ROOT_RAMDISK}:' \
220 "${WORKDIR}/boot.cmd.${BOOTMODE}${BOOTFILE_EXT}" > "${WORKDIR}/boot.cmd" 232 "${WORKDIR}/boot.cmd.${BOOTMODE}${BOOTFILE_EXT}" > "${WORKDIR}/boot.cmd"
221 mkimage -A arm -T script -C none -n "Boot script" -d "${WORKDIR}/boot.cmd" boot.scr 233 mkimage -A arm -T script -C none -n "Boot script" -d "${WORKDIR}/boot.cmd" boot.scr
222 sed -e 's/@@KERNEL_IMAGETYPE@@/${KERNEL_IMAGETYPE}/' \ 234 sed -e 's/@@KERNEL_IMAGETYPE@@/${KERNEL_IMAGETYPE}/' \
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-zynq-scr/boot.cmd.generic.root b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-zynq-scr/boot.cmd.generic.root
new file mode 100644
index 00000000..ca90cbe1
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-zynq-scr/boot.cmd.generic.root
@@ -0,0 +1,98 @@
1# This is a boot script for U-Boot with generic root parameters used by yocto machine configuration file.
2# Generate boot.scr:
3# mkimage -c none -A arm -T script -d boot.cmd.default boot.scr
4#
5################
6fitimage_name=@@FIT_IMAGE@@
7kernel_name=@@KERNEL_IMAGE@@
8ramdisk_name=@@RAMDISK_IMAGE1@@
9rootfs_name=@@RAMDISK_IMAGE@@
10@@PRE_BOOTENV@@
11
12for boot_target in ${boot_targets};
13do
14 echo "Trying to load boot images from ${boot_target}"
15 if test "${boot_target}" = "jtag" ; then
16 fdt addr @@DEVICETREE_ADDRESS@@
17 fdt get value bootargs /chosen bootargs
18 setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@
19 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@
20 fi
21 if test "${boot_target}" = "mmc0" || test "${boot_target}" = "mmc1" || test "${boot_target}" = "usb0" || test "${boot_target}" = "usb1"; then
22 if test "${boot_target}" = "mmc0" || test "${boot_target}" = "mmc1"; then
23 setenv bootdev mmcblk${devnum}p
24 fi
25 if test "${boot_target}" = "usb0" || test "${boot_target}" = "usb1"; then
26 setenv bootdev sda
27 fi
28
29 if test -e ${devtype} ${devnum}:${distro_bootpart} /@@UENV_TEXTFILE@@; then
30 fatload ${devtype} ${devnum}:${distro_bootpart} @@UENV_MMC_LOAD_ADDRESS@@ @@UENV_TEXTFILE@@;
31 echo "Importing environment(@@UENV_TEXTFILE@@) from ${boot_target}..."
32 env import -t @@UENV_MMC_LOAD_ADDRESS@@ $filesize
33 if test -n $uenvcmd; then
34 echo "Running uenvcmd ...";
35 run uenvcmd;
36 fi
37 fi
38 if test -e ${devtype} ${devnum}:${distro_bootpart} /${fitimage_name}; then
39 fatload ${devtype} ${devnum}:${distro_bootpart} @@FIT_IMAGE_LOAD_ADDRESS@@ ${fitimage_name};
40 echo "Kernel root filesystem parameter needs to be set for FITIMAGE boot if not defined in DTB"
41 bootm @@FIT_IMAGE_LOAD_ADDRESS@@;
42 fi
43 if test -e ${devtype} ${devnum}:${distro_bootpart} /${kernel_name}; then
44 fatload ${devtype} ${devnum}:${distro_bootpart} @@KERNEL_LOAD_ADDRESS@@ ${kernel_name};
45 fi
46 if test -e ${devtype} ${devnum}:${distro_bootpart} /system.dtb; then
47 fatload ${devtype} ${devnum}:${distro_bootpart} @@DEVICETREE_ADDRESS@@ system.dtb;
48 fi
49 if test -e ${devtype} ${devnum}:${distro_bootpart} /${ramdisk_name} && test "${skip_tinyramdisk}" != "yes"; then
50 fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${ramdisk_name};
51 fdt addr @@DEVICETREE_ADDRESS@@
52 fdt get value bootargs /chosen bootargs
53 setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@
54 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@
55 fi
56 if test -e ${devtype} ${devnum}:${distro_bootpart} /${rootfs_name} && test "${skip_ramdisk}" != "yes"; then
57 fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${rootfs_name};
58 fdt addr @@DEVICETREE_ADDRESS@@
59 fdt get value bootargs /chosen bootargs
60 setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@
61 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@
62 fi
63 fdt addr @@DEVICETREE_ADDRESS@@
64 fdt get value bootargs /chosen bootargs
65 setenv bootargs $bootargs @@KERNEL_ROOT_SD@@
66 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ - @@DEVICETREE_ADDRESS@@
67 fi
68 if test "${boot_target}" = "xspi0" || test "${boot_target}" = "qspi" || test "${boot_target}" = "qspi0"; then
69 sf probe 0 0 0;
70 sf read @@FIT_IMAGE_LOAD_ADDRESS@@ @@QSPI_FIT_IMAGE_OFFSET@@ @@QSPI_FIT_IMAGE_SIZE@@
71 echo "Kernel root filesystem parameter needs to be set for FITIMAGE boot if not defined in DTB"
72 bootm @@FIT_IMAGE_LOAD_ADDRESS@@;
73 echo "Booting using Fit image failed"
74
75 sf read @@KERNEL_LOAD_ADDRESS@@ @@QSPI_KERNEL_OFFSET@@ @@QSPI_KERNEL_SIZE@@
76 sf read @@RAMDISK_IMAGE_ADDRESS@@ @@QSPI_RAMDISK_OFFSET@@ @@QSPI_RAMDISK_SIZE@@
77 fdt addr @@DEVICETREE_ADDRESS@@
78 fdt get value bootargs /chosen bootargs
79 setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@
80 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@;
81 echo "Booting using Separate images failed"
82 fi
83 if test "${boot_target}" = "nand" || test "${boot_target}" = "nand0"; then
84 nand info;
85 nand read @@FIT_IMAGE_LOAD_ADDRESS@@ @@NAND_FIT_IMAGE_OFFSET@@ @@NAND_FIT_IMAGE_SIZE@@
86 echo "Kernel root filesystem parameter needs to be set for FITIMAGE boot if not defined in DTB"
87 bootm @@FIT_IMAGE_LOAD_ADDRESS@@;
88 echo "Booting using Fit image failed"
89
90 nand read @@KERNEL_LOAD_ADDRESS@@ @@NAND_KERNEL_OFFSET@@ @@NAND_KERNEL_SIZE@@
91 nand read @@RAMDISK_IMAGE_ADDRESS@@ @@NAND_RAMDISK_OFFSET@@ @@NAND_RAMDISK_SIZE@@
92 fdt addr @@DEVICETREE_ADDRESS@@
93 fdt get value bootargs /chosen bootargs
94 setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@
95 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@;
96 echo "Booting using Separate images failed"
97 fi
98done
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees.inc b/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees.inc
index 87d90a50..b08b414f 100644
--- a/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees.inc
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees.inc
@@ -7,10 +7,7 @@ inherit deploy
7 7
8LIC_FILES_CHKSUM = "file://Makefile;beginline=1;endline=27;md5=7348b6cbcae69912cb1dee68d6c68d99" 8LIC_FILES_CHKSUM = "file://Makefile;beginline=1;endline=27;md5=7348b6cbcae69912cb1dee68d6c68d99"
9 9
10PV = "xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" 10PV = "xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
11
12FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
13SRC_URI:append = " file://0001-Makefile-Use-python3-instead-of-python.patch"
14 11
15REPO ?= "git://github.com/Xilinx/qemu-devicetrees.git;protocol=https" 12REPO ?= "git://github.com/Xilinx/qemu-devicetrees.git;protocol=https"
16 13
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
index e2f134fe..7c734cd6 100644
--- a/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2022.1.bb
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2022.1.bb
@@ -3,3 +3,6 @@ require qemu-devicetrees.inc
3 3
4BRANCH ?= "xlnx_rel_v2022.1" 4BRANCH ?= "xlnx_rel_v2022.1"
5SRCREV ?= "0499324af1178057c3730b0989c8fb5c5bbc4cf8" 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..c7719866
--- /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 ?= "master"
5SRCREV ?= "42d0b7e24fbd1adc72fb2d0e70e06ff332278468"
6
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..5e6c2d28
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2022.2.bb
@@ -0,0 +1,7 @@
1require qemu-xilinx-native.inc
2BPN = "qemu-xilinx"
3
4EXTRA_OECONF:append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent"
5
6PROVIDES = "qemu-native"
7PACKAGECONFIG ??= "pie"
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..f177872a
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2022.2.bb
@@ -0,0 +1,20 @@
1require qemu-xilinx-native.inc
2
3PROVIDES = "qemu-system-native"
4
5EXTRA_OECONF:append = " --target-list=${@get_qemu_system_target_list(d)}"
6
7PACKAGECONFIG ??= "fdt alsa kvm pie"
8
9PACKAGECONFIG:remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
10
11DEPENDS += "pixman-native qemu-xilinx-native bison-native ninja-native meson-native"
12
13do_install:append() {
14 # The following is also installed by qemu-native
15 rm -f ${D}${datadir}/qemu/trace-events-all
16 rm -rf ${D}${datadir}/qemu/keymaps
17 rm -rf ${D}${datadir}/icons
18 rm -rf ${D}${includedir}/qemu-plugin.h
19}
20
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx.inc b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx.inc
index d42aa484..0dde8023 100644
--- a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx.inc
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx.inc
@@ -11,12 +11,12 @@ LIC_FILES_CHKSUM = " \
11DEPENDS = "glib-2.0 zlib pixman bison-native ninja-native meson-native" 11DEPENDS = "glib-2.0 zlib pixman bison-native ninja-native meson-native"
12 12
13XILINX_QEMU_VERSION ?= "v6.1.0" 13XILINX_QEMU_VERSION ?= "v6.1.0"
14BRANCH ?= "xlnx_rel_v2022.1" 14BRANCH ?= "master"
15SRCREV = "52a9b22faeb149a6b17646b1f912f06ea6c269ca" 15SRCREV = "fbcb55665e9f5f91110ba2a44f62be9bc72752ee"
16 16
17FILESEXTRAPATHS:prepend := "${THISDIR}/files:" 17FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
18 18
19PV = "${XILINX_QEMU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" 19PV = "${XILINX_QEMU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
20REPO ?= "gitsm://github.com/Xilinx/qemu.git;protocol=https" 20REPO ?= "gitsm://github.com/Xilinx/qemu.git;protocol=https"
21 21
22BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" 22BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
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..4983b4df
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2022.2.bb
@@ -0,0 +1,17 @@
1require recipes-devtools/qemu/qemu.inc
2require qemu-xilinx.inc
3
4BBCLASSEXTEND = "nativesdk"
5
6RDEPENDS:${PN}:class-target += "bash"
7
8PROVIDES:class-nativesdk = "nativesdk-qemu"
9RPROVIDES:${PN}:class-nativesdk = "nativesdk-qemu"
10
11EXTRA_OECONF:append:class-target = " --target-list=${@get_qemu_target_list(d)}"
12EXTRA_OECONF:append:class-nativesdk = " --target-list=${@get_qemu_target_list(d)}"
13EXTRA_OECONF:append:class-target:mipsarcho32 = "${@bb.utils.contains('BBEXTENDCURR', 'multilib', ' --disable-capstone', '', d)}"
14
15do_install:append:class-nativesdk() {
16 ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
17}
diff --git a/meta-xilinx-core/recipes-graphics/wayland/files/weston.service b/meta-xilinx-core/recipes-graphics/wayland/files/weston.service
index c58e0668..c7583e92 100644
--- a/meta-xilinx-core/recipes-graphics/wayland/files/weston.service
+++ b/meta-xilinx-core/recipes-graphics/wayland/files/weston.service
@@ -41,8 +41,8 @@ TimeoutStartSec=60
41WatchdogSec=20 41WatchdogSec=20
42 42
43# The user to run Weston as. 43# The user to run Weston as.
44User=root 44User=weston
45Group=root 45Group=weston
46 46
47# Make sure the working directory is the users home directory 47# Make sure the working directory is the users home directory
48WorkingDirectory=/home/weston 48WorkingDirectory=/home/weston
diff --git a/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_git.bb b/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_git.bb
index ae5f98d9..ce898075 100755
--- a/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_git.bb
+++ b/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_git.bb
@@ -4,14 +4,14 @@ SECTION = "kernel/modules"
4LICENSE = "GPL-2.0-only" 4LICENSE = "GPL-2.0-only"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a" 5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a"
6 6
7XLNX_DP_VERSION = "5.15.19" 7XLNX_DP_VERSION = "5.10.0"
8PV = "${XLNX_DP_VERSION}" 8PV = "${XLNX_DP_VERSION}"
9 9
10S = "${WORKDIR}/git" 10S = "${WORKDIR}/git"
11 11
12BRANCH ?= "xlnx_rel_v2022.1" 12BRANCH ?= "master"
13REPO ?= "git://github.com/xilinx/dp-modules.git;protocol=https" 13REPO ?= "git://github.com/xilinx/dp-modules.git;protocol=https"
14SRCREV ?= "9a025fdb7134a8af12de8d69f5a428c8284ae9b3" 14SRCREV ?= "c57b2ce95ee6c86f35caecbc7007644ff8f6d337"
15 15
16BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" 16BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
17SRC_URI = "${REPO};${BRANCHARG}" 17SRC_URI = "${REPO};${BRANCHARG}"
diff --git a/meta-xilinx-core/recipes-kernel/linux/linux-microblaze.inc b/meta-xilinx-core/recipes-kernel/linux/linux-microblaze.inc
index 4555bc28..efd21a18 100644
--- a/meta-xilinx-core/recipes-kernel/linux/linux-microblaze.inc
+++ b/meta-xilinx-core/recipes-kernel/linux/linux-microblaze.inc
@@ -1,4 +1,7 @@
1SRC_URI += "file://mb-no-tree-loop-distribute-patterns.patch" 1SRC_URI += " \
2 file://mb-no-tree-loop-distribute-patterns.patch \
3 file://microblaze_generic.cfg \
4 "
2 5
3# MicroBlaze is a uImage target, but its not called 'uImage' instead it is called 'linux.bin.ub' 6# MicroBlaze is a uImage target, but its not called 'uImage' instead it is called 'linux.bin.ub'
4python () { 7python () {
diff --git a/meta-xilinx-core/recipes-kernel/linux/linux-xlnx.inc b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx.inc
index adefabea..2edebe8e 100644
--- a/meta-xilinx-core/recipes-kernel/linux/linux-xlnx.inc
+++ b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx.inc
@@ -1,13 +1,12 @@
1# This version extension should match CONFIG_LOCALVERSION in defconfig 1# This version extension should match CONFIG_LOCALVERSION in defconfig
2XILINX_RELEASE_VERSION ?= "" 2LINUX_VERSION_EXTENSION ?= "-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}"
3LINUX_VERSION_EXTENSION ?= "-xilinx-${XILINX_RELEASE_VERSION}"
4PV = "${LINUX_VERSION}+git${SRCPV}" 3PV = "${LINUX_VERSION}+git${SRCPV}"
5 4
6# Sources, by default allow for the use of SRCREV pointing to orphaned tags/commits 5# Sources, by default allow for the use of SRCREV pointing to orphaned tags/commits
7KBRANCH ?= "xlnx_rebase_v5.15_LTS" 6KBRANCH ?= "xlnx_rebase_v5.15_LTS"
8SRCBRANCHARG = "${@['nobranch=1', 'branch=${KBRANCH}'][d.getVar('KBRANCH', True) != '']}" 7SRCBRANCHARG = "${@['nobranch=1', 'branch=${KBRANCH}'][d.getVar('KBRANCH', True) != '']}"
9 8
10FILESOVERRIDES:append = ":${XILINX_RELEASE_VERSION}" 9FILESOVERRIDES:append := ":${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}"
11KERNELURI ?= "git://github.com/Xilinx/linux-xlnx.git;protocol=https;name=machine" 10KERNELURI ?= "git://github.com/Xilinx/linux-xlnx.git;protocol=https;name=machine"
12YOCTO_META ?= "git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=yocto-kmeta" 11YOCTO_META ?= "git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=yocto-kmeta"
13SRC_URI = "${KERNELURI};${SRCBRANCHARG} ${YOCTO_META}" 12SRC_URI = "${KERNELURI};${SRCBRANCHARG} ${YOCTO_META}"
@@ -53,6 +52,7 @@ KBUILD_DEFCONFIG:zynqmp ?= "xilinx_defconfig"
53KBUILD_DEFCONFIG:zynq ?= "xilinx_zynq_defconfig" 52KBUILD_DEFCONFIG:zynq ?= "xilinx_zynq_defconfig"
54KBUILD_DEFCONFIG:microblaze ?= "mmu_defconfig" 53KBUILD_DEFCONFIG:microblaze ?= "mmu_defconfig"
55KBUILD_DEFCONFIG:versal ?= "xilinx_defconfig" 54KBUILD_DEFCONFIG:versal ?= "xilinx_defconfig"
55KBUILD_DEFCONFIG:versal-net ?= "xilinx_versal_net_defconfig"
56 56
57KERNEL_FEATURES:append:zynqmp = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' features/xen/xen.scc', '', d)}" 57KERNEL_FEATURES:append:zynqmp = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' features/xen/xen.scc', '', d)}"
58 58
diff --git a/meta-xilinx-core/recipes-kernel/linux/linux-xlnx/microblaze_generic.cfg b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx/microblaze_generic.cfg
new file mode 100644
index 00000000..6ec6a997
--- /dev/null
+++ b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx/microblaze_generic.cfg
@@ -0,0 +1,18 @@
1CONFIG_SERIAL_OF_PLATFORM=y
2CONFIG_DP83867_PHY=y
3CONFIG_EARLY_PRINTK=y
4CONFIG_MTD_PHYSMAP=y
5CONFIG_MTD_PHYSMAP_OF=y
6CONFIG_NET_CORE=y
7CONFIG_XILINX_PHY=y
8CONFIG_XILINX_MICROBLAZE0_FAMILY="kintex7"
9CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1
10CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1
11CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1
12CONFIG_XILINX_MICROBLAZE0_USE_DIV=1
13CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=2
14CONFIG_XILINX_MICROBLAZE0_USE_FPU=1
15CONFIG_XILINX_MICROBLAZE0_HW_VER="11.0"
16CONFIG_KERNEL_BASE_ADDR=0x80000000
17CONFIG_CMDLINE="console=ttyUL0,115200 earlycon root=/dev/ram0 rw"
18CONFIG_BLK_DEV_INITRD=y \ No newline at end of file
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..3551fb8b
--- /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 = "2ddbacde6539be25b5717af5705a0d0009d6b2d3"
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.bb b/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2022.1.bb
index 3b683eda..0cb0c0ef 100644
--- a/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu.bb
+++ b/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2022.1.bb
@@ -5,7 +5,7 @@ LICENSE = "GPL-2.0-only"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a" 5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a"
6 6
7XILINX_VCU_VERSION = "1.0.0" 7XILINX_VCU_VERSION = "1.0.0"
8PV = "${XILINX_VCU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" 8PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
9 9
10S = "${WORKDIR}/git" 10S = "${WORKDIR}/git"
11 11
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..77f00534
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2022.2.bb
@@ -0,0 +1,40 @@
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 = "GPLv2"
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
25
26EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}"
27
28RDEPENDS:${PN} = "vcu-firmware"
29
30COMPATIBLE_MACHINE = "^$"
31COMPATIBLE_MACHINE:zynqmp = "zynqmp"
32
33KERNEL_MODULE_AUTOLOAD += "dmaproxy"
34
35do_install:append() {
36 install -d ${D}${sysconfdir}/udev/rules.d
37 install -m 0644 ${WORKDIR}/99-vcu-enc-dec.rules ${D}${sysconfdir}/udev/rules.d/
38}
39
40FILES:${PN} = "${sysconfdir}/udev/rules.d/*"
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx.bb b/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2022.1.bb
index 958183a0..b4460a38 100644
--- a/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx.bb
+++ b/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2022.1.bb
@@ -4,7 +4,7 @@ LICENSE = "Proprietary"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=03a7aef7e6f6a76a59fd9b8ba450b493" 4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=03a7aef7e6f6a76a59fd9b8ba450b493"
5 5
6XILINX_VCU_VERSION = "1.0.0" 6XILINX_VCU_VERSION = "1.0.0"
7PV = "${XILINX_VCU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" 7PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
8 8
9BRANCH ?= "xlnx_rel_v2022.1" 9BRANCH ?= "xlnx_rel_v2022.1"
10REPO ?= "git://github.com/Xilinx/vcu-omx-il.git;protocol=https" 10REPO ?= "git://github.com/Xilinx/vcu-omx-il.git;protocol=https"
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..b4460a38
--- /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.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
18COMPATIBLE_MACHINE = "^$"
19COMPATIBLE_MACHINE:zynqmp = "zynqmp"
20
21PACKAGE_ARCH = "${SOC_FAMILY_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.bb b/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2022.1.bb
index 5608e5a8..91f15cc2 100644
--- a/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx.bb
+++ b/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2022.1.bb
@@ -4,7 +4,7 @@ LICENSE = "Proprietary"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=03a7aef7e6f6a76a59fd9b8ba450b493" 4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=03a7aef7e6f6a76a59fd9b8ba450b493"
5 5
6XILINX_VCU_VERSION = "1.0.0" 6XILINX_VCU_VERSION = "1.0.0"
7PV = "${XILINX_VCU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" 7PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
8 8
9BRANCH ?= "xlnx_rel_v2022.1" 9BRANCH ?= "xlnx_rel_v2022.1"
10REPO ?= "git://github.com/Xilinx/vcu-ctrl-sw.git;protocol=https" 10REPO ?= "git://github.com/Xilinx/vcu-ctrl-sw.git;protocol=https"
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..91f15cc2
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2022.2.bb
@@ -0,0 +1,42 @@
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
18COMPATIBLE_MACHINE = "^$"
19COMPATIBLE_MACHINE:zynqmp = "zynqmp"
20
21PACKAGE_ARCH = "${SOC_FAMILY_ARCH}"
22
23RDEPENDS:${PN} = "kernel-module-vcu"
24
25EXTRA_OEMAKE = "CC='${CC}' CXX='${CXX} ${CXXFLAGS}'"
26
27do_install() {
28 install -d ${D}${libdir}
29 install -d ${D}${includedir}/vcu-ctrl-sw/include
30
31 install -Dm 0755 ${S}/bin/ctrlsw_encoder ${D}/${bindir}/ctrlsw_encoder
32 install -Dm 0755 ${S}/bin/ctrlsw_decoder ${D}/${bindir}/ctrlsw_decoder
33
34 oe_runmake install_headers INSTALL_HDR_PATH=${D}${includedir}/vcu-ctrl-sw/include
35 oe_libinstall -C ${S}/bin/ -so liballegro_decode ${D}/${libdir}/
36 oe_libinstall -C ${S}/bin/ -so liballegro_encode ${D}/${libdir}/
37}
38
39# These libraries shouldn't get installed in world builds unless something
40# explicitly depends upon them.
41
42EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware.bb b/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2022.1.bb
index 0013134d..fc9f34ca 100644
--- a/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware.bb
+++ b/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2022.1.bb
@@ -4,7 +4,7 @@ LICENSE = "Proprietary"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=63b45903a9a50120df488435f03cf498" 4LIC_FILES_CHKSUM = "file://LICENSE;md5=63b45903a9a50120df488435f03cf498"
5 5
6XILINX_VCU_VERSION = "1.0.0" 6XILINX_VCU_VERSION = "1.0.0"
7PV = "${XILINX_VCU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" 7PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
8 8
9S = "${WORKDIR}/git" 9S = "${WORKDIR}/git"
10 10
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..fc9f34ca
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2022.2.bb
@@ -0,0 +1,39 @@
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
18COMPATIBLE_MACHINE = "^$"
19COMPATIBLE_MACHINE:zynqmp = "zynqmp"
20
21PACKAGE_ARCH = "${SOC_FAMILY_ARCH}"
22
23do_install() {
24 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5d_b.fw ${D}/lib/firmware/al5d_b.fw
25 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5d.fw ${D}/lib/firmware/al5d.fw
26 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5e_b.fw ${D}/lib/firmware/al5e_b.fw
27 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5e.fw ${D}/lib/firmware/al5e.fw
28}
29
30# Inhibit warnings about files being stripped
31INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
32INHIBIT_PACKAGE_STRIP = "1"
33FILES:${PN} = "/lib/firmware/*"
34
35# These libraries shouldn't get installed in world builds unless something
36# explicitly depends upon them.
37EXCLUDE_FROM_WORLD = "1"
38
39INSANE_SKIP:${PN} = "ldflags"
diff --git a/meta-xilinx-core/recipes-xrt/xrt/xrt.inc b/meta-xilinx-core/recipes-xrt/xrt/xrt.inc
index da09ec0f..ba42fd5f 100644
--- a/meta-xilinx-core/recipes-xrt/xrt/xrt.inc
+++ b/meta-xilinx-core/recipes-xrt/xrt/xrt.inc
@@ -2,6 +2,7 @@ REPO ?= "git://github.com/Xilinx/XRT.git;protocol=https"
2BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" 2BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
3SRC_URI = "${REPO};${BRANCHARG}" 3SRC_URI = "${REPO};${BRANCHARG}"
4 4
5BRANCH= "2022.1" 5BRANCH= "master"
6SRCREV= "2a6dc026480914ea1c9f02977a6ab4b57e8a3c8d" 6SRCREV= "910828b3abdbf66b10cb6efc952e75df64962340"
7PV = "202210.2.13.0" 7PV = "202220.2.14.0"
8
diff --git a/meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb b/meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb
index f55b83ae..b8071a65 100644
--- a/meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb
+++ b/meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb
@@ -8,12 +8,11 @@ LIC_FILES_CHKSUM = "file://../LICENSE;md5=da5408f748bce8a9851dac18e66f4bcf \
8 file://runtime_src/core/edge/drm/zocl/LICENSE;md5=7d040f51aae6ac6208de74e88a3795f8 \ 8 file://runtime_src/core/edge/drm/zocl/LICENSE;md5=7d040f51aae6ac6208de74e88a3795f8 \
9 file://runtime_src/core/pcie/driver/linux/xocl/LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ 9 file://runtime_src/core/pcie/driver/linux/xocl/LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
10 file://runtime_src/core/pcie/linux/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \ 10 file://runtime_src/core/pcie/linux/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
11 file://runtime_src/core/pcie/tools/xbutil/LICENSE;md5=d273d63619c9aeaf15cdaf76422c4f87 \ 11 file://runtime_src/core/tools/xbutil2/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 "
12 file://runtime_src/core/edge/tools/xbutil/LICENSE;md5=d273d63619c9aeaf15cdaf76422c4f87 "
13 12
14S = "${WORKDIR}/git/src" 13S = "${WORKDIR}/git/src"
15 14
16inherit cmake pkgconfig 15inherit cmake
17 16
18BBCLASSEXTEND = "native nativesdk" 17BBCLASSEXTEND = "native nativesdk"
19 18
@@ -41,7 +40,8 @@ FILES:${PN} += "\
41 ${libdir}/lib*.so \ 40 ${libdir}/lib*.so \
42 ${libdir}/lib*.so.* \ 41 ${libdir}/lib*.so.* \
43 ${libdir}/ps_kernels_lib \ 42 ${libdir}/ps_kernels_lib \
44 /lib/*.so* " 43 /lib/*.so* \
44 ${datadir}"
45INSANE_SKIP:${PN} += "dev-so" 45INSANE_SKIP:${PN} += "dev-so"
46 46
47pkg_postinst_ontarget:${PN}() { 47pkg_postinst_ontarget:${PN}() {
diff --git a/meta-xilinx-standalone-experimental/classes/esw.bbclass b/meta-xilinx-standalone-experimental/classes/esw.bbclass
index 78cb289c..0b179a61 100644
--- a/meta-xilinx-standalone-experimental/classes/esw.bbclass
+++ b/meta-xilinx-standalone-experimental/classes/esw.bbclass
@@ -64,6 +64,7 @@ def get_xlnx_cmake_processor(tune, machine, d):
64XLNX_CMAKE_MACHINE = "${@get_xlnx_cmake_machine(d.getVar('SOC_FAMILY'), d)}" 64XLNX_CMAKE_MACHINE = "${@get_xlnx_cmake_machine(d.getVar('SOC_FAMILY'), d)}"
65XLNX_CMAKE_PROCESSOR = "${@get_xlnx_cmake_processor(d.getVar('DEFAULTTUNE'), d.getVar('ESW_MACHINE'), d)}" 65XLNX_CMAKE_PROCESSOR = "${@get_xlnx_cmake_processor(d.getVar('DEFAULTTUNE'), d.getVar('ESW_MACHINE'), d)}"
66XLNX_CMAKE_SYSTEM_NAME ?= "Generic" 66XLNX_CMAKE_SYSTEM_NAME ?= "Generic"
67XLNX_CMAKE_BSP_VARS ?= ""
67 68
68cmake_do_generate_toolchain_file:append() { 69cmake_do_generate_toolchain_file:append() {
69 cat >> ${WORKDIR}/toolchain.cmake <<EOF 70 cat >> ${WORKDIR}/toolchain.cmake <<EOF
@@ -75,6 +76,7 @@ cmake_do_generate_toolchain_file:append() {
75 # Will need this in the future to make cmake understand esw variables 76 # Will need this in the future to make cmake understand esw variables
76 # set( CMAKE_SYSTEM_NAME `echo elf | sed -e 's/^./\u&/' -e 's/^\(Linux\).*/\1/'` ) 77 # set( CMAKE_SYSTEM_NAME `echo elf | sed -e 's/^./\u&/' -e 's/^\(Linux\).*/\1/'` )
77 set( CMAKE_SYSTEM_NAME "${XLNX_CMAKE_SYSTEM_NAME}" ) 78 set( CMAKE_SYSTEM_NAME "${XLNX_CMAKE_SYSTEM_NAME}" )
79 add_definitions( "${XLNX_CMAKE_BSP_VARS}" )
78EOF 80EOF
79} 81}
80 82
diff --git a/meta-xilinx-standalone-experimental/recipes-libraries/xilpuf-example_git.bb b/meta-xilinx-standalone-experimental/recipes-libraries/xilpuf-example_git.bb
index 9f1e8baa..ad2d5c47 100644
--- a/meta-xilinx-standalone-experimental/recipes-libraries/xilpuf-example_git.bb
+++ b/meta-xilinx-standalone-experimental/recipes-libraries/xilpuf-example_git.bb
@@ -2,7 +2,7 @@ inherit esw deploy
2 2
3ESW_COMPONENT_SRC = "/lib/sw_services/xilpuf/examples/" 3ESW_COMPONENT_SRC = "/lib/sw_services/xilpuf/examples/"
4 4
5DEPENDS += "xilpuf" 5DEPENDS += "xilpuf xilsecure"
6 6
7do_configure:prepend() { 7do_configure:prepend() {
8 ( 8 (
diff --git a/meta-xilinx-standalone-experimental/recipes-libraries/xilpuf_git.bb b/meta-xilinx-standalone-experimental/recipes-libraries/xilpuf_git.bb
index 4f9332c7..266503d1 100644
--- a/meta-xilinx-standalone-experimental/recipes-libraries/xilpuf_git.bb
+++ b/meta-xilinx-standalone-experimental/recipes-libraries/xilpuf_git.bb
@@ -3,4 +3,4 @@ inherit esw
3ESW_COMPONENT_SRC = "/lib/sw_services/xilpuf/src/" 3ESW_COMPONENT_SRC = "/lib/sw_services/xilpuf/src/"
4ESW_COMPONENT_NAME = "libxilpuf.a" 4ESW_COMPONENT_NAME = "libxilpuf.a"
5 5
6DEPENDS += "libxil xiltimer xilplmi" 6DEPENDS += "libxil xiltimer ${@'xilplmi' if d.getVar('ESW_MACHINE') == 'microblaze-plm' else 'xilmailbox'}"
diff --git a/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass b/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass
index b3fde2d4..403369b1 100644
--- a/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass
+++ b/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass
@@ -3,40 +3,21 @@ 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[2019.1] = "release-2019.1"
7ESW_BRANCH[2019.2] = "release-2019.2"
8ESW_BRANCH[2020.1] = "release-2020.1"
9ESW_BRANCH[2020.2] = "master-rel-2020.2"
10ESW_BRANCH[2021.1] = "xlnx_rel_v2021.1"
11ESW_BRANCH[2021.2] = "xlnx_rel_v2021.2"
12ESW_BRANCH[2022.1] = "xlnx_rel_v2022.1_update" 6ESW_BRANCH[2022.1] = "xlnx_rel_v2022.1_update"
13ESW_BRANCH[git] = "master-next" 7ESW_BRANCH[2022.2] = "xlnx_rel_v2022.2-next"
14BRANCH ??= "${@d.getVarFlag('ESW_BRANCH', d.getVar('ESW_VER')) or '${ESW_VER}'}" 8BRANCH ??= "${@d.getVarFlag('ESW_BRANCH', d.getVar('ESW_VER')) or '${ESW_VER}'}"
15 9
16ESW_REV[2019.1] = "26c14d9861010a0e3a55c73fb79efdb816eb42ca"
17ESW_REV[2019.2] = "e8db5fb118229fdc621e0ec7848641a23bf60998"
18ESW_REV[2020.1] = "338150ab3628a1ea6b06e964b16e712b131882dd"
19ESW_REV[2020.2] = "2516d5ed8161e16c2813b0e8e4ceac693f23de5c"
20ESW_REV[2021.1] = "d37a0e8824182597abf31ac3f1087a5321b33ad7"
21ESW_REV[2021.2] = "49c6694fc3cab6b87dd564da58a83bb8656a7c03"
22ESW_REV[2022.1] = "0cfb554e841f0837cabbb40a2481f5f7e5f2ddc0" 10ESW_REV[2022.1] = "0cfb554e841f0837cabbb40a2481f5f7e5f2ddc0"
23ESW_REV[git] = "7ec60e1c0e25bfa9c5e8c77d6d063876f6670770" 11ESW_REV[2022.2] = "72f6e3d45fb4dd9d6cd4a7581b935b39cf8ce96d"
24SRCREV ??= "${@d.getVarFlag('ESW_REV', d.getVar('ESW_VER')) or '${AUTOREV}'}" 12SRCREV ??= "${@d.getVarFlag('ESW_REV', d.getVar('ESW_VER')) or '${AUTOREV}'}"
25 13
26EMBEDDEDSW_BRANCHARG ?= "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH') != '']}" 14EMBEDDEDSW_BRANCHARG ?= "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH') != '']}"
27EMBEDDEDSW_SRCURI ?= "${REPO};${EMBEDDEDSW_BRANCHARG}" 15EMBEDDEDSW_SRCURI ?= "${REPO};${EMBEDDEDSW_BRANCHARG}"
28 16
29LICENSE = "MIT" 17LICENSE = "MIT"
30LIC_FILES_CHKSUM[release-2019.1] = 'e9b6d01d45faccfbf05d8caea53f0a35'
31LIC_FILES_CHKSUM[release-2019.2] = '39ab6ab638f4d1836ba994ec6852de94'
32LIC_FILES_CHKSUM[release-2020.1] = '8b565227e1264d677db8f841c2948cba'
33LIC_FILES_CHKSUM[master-rel-2020.2] = '3a6e22aebf6516f0f74a82e1183f74f8'
34LIC_FILES_CHKSUM[xlnx_rel_v2021.1] = "73e8997d53c2137fdeea4331a73f40fa"
35LIC_FILES_CHKSUM[xlnx_rel_v2021.2] = 'ba23909a4bcaf754a2e1ba996f1ca1b0'
36LIC_FILES_CHKSUM[xlnx_rel_v2022.1] = 'e62cb7a722c4430999e0a55a7234035d' 18LIC_FILES_CHKSUM[xlnx_rel_v2022.1] = 'e62cb7a722c4430999e0a55a7234035d'
37LIC_FILES_CHKSUM[xlnx_rel_v2022.1_update] = 'e62cb7a722c4430999e0a55a7234035d' 19LIC_FILES_CHKSUM[xlnx_rel_v2022.1_update] = 'e62cb7a722c4430999e0a55a7234035d'
38LIC_FILES_CHKSUM[master-next] = '87cee16dbcd2c2f7ceef30163838056e' 20LIC_FILES_CHKSUM[xlnx_rel_v2022.2-next] = '7b5fc0b2a22e2882e1506436b3293e5d'
39LIC_FILES_CHKSUM[master] = '593ba3fb8be51271097ddaa4b9c65cde'
40LIC_FILES_CHKSUM ??= "file://license.txt;md5=${@d.getVarFlag('LIC_FILES_CHKSUM', d.getVar('BRANCH')) or '0'}" 21LIC_FILES_CHKSUM ??= "file://license.txt;md5=${@d.getVarFlag('LIC_FILES_CHKSUM', d.getVar('BRANCH')) or '0'}"
41 22
42SRC_URI = "${EMBEDDEDSW_SRCURI}" 23SRC_URI = "${EMBEDDEDSW_SRCURI}"
diff --git a/meta-xilinx-standalone/conf/layer.conf b/meta-xilinx-standalone/conf/layer.conf
index e35bd268..8732eb15 100644
--- a/meta-xilinx-standalone/conf/layer.conf
+++ b/meta-xilinx-standalone/conf/layer.conf
@@ -16,4 +16,8 @@ LAYERDEPENDS_xilinx-standalone = "core xilinx"
16LAYERRECOMMENDS_xilinx-standalone = "xilinx-microblaze" 16LAYERRECOMMENDS_xilinx-standalone = "xilinx-microblaze"
17 17
18LAYERSERIES_COMPAT_xilinx-standalone = "kirkstone" 18LAYERSERIES_COMPAT_xilinx-standalone = "kirkstone"
19XILINX_RELEASE_VERSION = "v2022.1" 19
20PREFERRED_VERSION_plm-firmware ?= "${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}%"
21PREFERRED_VERSION_psm-firmware ?= "${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}%"
22PREFERRED_VERSION_pmu-firmware ?= "${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}%"
23PREFERRED_VERSION_fsbl-firmware ?= "${@d.getVar("XILINX_RELEASE_VERSION").replace('v','')}%"
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2021.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2022.2.bb
index 3f9740a0..3f9740a0 100644
--- a/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2021.2.bb
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2022.2.bb
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2020.1.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2020.1.bb
deleted file mode 100644
index 782c9dc4..00000000
--- a/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2020.1.bb
+++ /dev/null
@@ -1 +0,0 @@
1require plm-firmware.inc
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2021.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2022.2.bb
index cc810241..cc810241 100644
--- a/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2021.2.bb
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2022.2.bb
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2020.1.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2020.1.bb
deleted file mode 100644
index 6b90f496..00000000
--- a/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2020.1.bb
+++ /dev/null
@@ -1,9 +0,0 @@
1require pmu-firmware.inc
2
3FILESPATH .= ":${FILE_DIRNAME}/embeddedsw"
4
5SRC_URI += " \
6 file://0001-zynqmp_pmufw-Fix-reset-ops-for-assert.patch \
7 file://0001-zynqmp_pmufw-Correct-structure-header-of-PmResetOps.patch \
8 "
9
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2021.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2022.2.bb
index 2c554d6d..2c554d6d 100644
--- a/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2021.2.bb
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2022.2.bb
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2021.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2022.2.bb
index d861fb1c..d861fb1c 100644
--- a/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2021.2.bb
+++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2022.2.bb