summaryrefslogtreecommitdiffstats
path: root/meta-xilinx-core
diff options
context:
space:
mode:
Diffstat (limited to 'meta-xilinx-core')
-rw-r--r--meta-xilinx-core/classes/dfx_user_dts.bbclass267
-rw-r--r--meta-xilinx-core/classes/fpgamanager_custom.bbclass197
-rw-r--r--meta-xilinx-core/conf/layer.conf10
-rw-r--r--meta-xilinx-core/conf/machine/README75
-rw-r--r--meta-xilinx-core/conf/machine/include/machine-xilinx-default.inc52
-rw-r--r--meta-xilinx-core/conf/machine/microblaze-generic.conf43
-rw-r--r--meta-xilinx-core/conf/machine/versal-generic.conf3
-rw-r--r--meta-xilinx-core/conf/machine/versal-net-generic.conf2
-rw-r--r--meta-xilinx-core/conf/machine/zynq-generic.conf3
-rw-r--r--meta-xilinx-core/conf/machine/zynqmp-generic.conf5
-rw-r--r--meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/device-tree.bbappend9
-rw-r--r--meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/open-amp-device-tree.bb3
-rw-r--r--meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/libmetal/libmetal-xlnx_v2023.2.bb15
-rw-r--r--meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/open-amp/open-amp-xlnx_v2023.2.bb16
-rw-r--r--meta-xilinx-core/dynamic-layers/virtualization-layer/recipes-kernel/lopper/lopper_git.bbappend2
m---------meta-xilinx-core/gen-machine-conf0
-rw-r--r--meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb (renamed from meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.2.bb)6
-rw-r--r--meta-xilinx-core/recipes-bsp/ai-engine/aie-rt.inc6
-rw-r--r--meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb (renamed from meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.0.bb)2
-rw-r--r--meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2023.2.bb8
-rw-r--r--meta-xilinx-core/recipes-bsp/bitstream/bitstream.bb59
-rw-r--r--meta-xilinx-core/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb21
-rw-r--r--meta-xilinx-core/recipes-bsp/bootgen/bootgen_2023.2.bb31
-rw-r--r--meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb99
-rw-r--r--meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.2.bb72
-rw-r--r--meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.2.bb23
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2023.2.bb21
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2023.2.inc17
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-blob.inc8
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr.bb34
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic12
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic.root12
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc8
-rw-r--r--meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2023.2.bb4
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2023.2.bb6
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2023.2.inc3
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2023.2.bb9
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2023.2.bb26
-rw-r--r--meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2023.2.bb26
-rw-r--r--meta-xilinx-core/recipes-graphics/libgles/libmali-xlnx.bb2
-rw-r--r--meta-xilinx-core/recipes-graphics/wayland/weston_%.bbappend17
-rwxr-xr-xmeta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg/monitor-hotplug.sh19
-rw-r--r--meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend2
-rw-r--r--meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_2023.2.bb24
-rw-r--r--meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_2023.2.bb24
-rw-r--r--meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2023.2.bb11
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2023.2.bb39
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2023.2.bb50
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2023.2.bb41
-rw-r--r--meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2023.2.bb38
-rw-r--r--meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb3
-rw-r--r--meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.2.bb42
-rw-r--r--meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb3
-rw-r--r--meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.2.bb45
-rw-r--r--meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb3
-rw-r--r--meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.2.bb54
-rwxr-xr-xmeta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.1.bb3
-rw-r--r--meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.2.bb43
-rw-r--r--meta-xilinx-core/recipes-xrt/xrt/xrt.inc14
-rw-r--r--meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb9
60 files changed, 1393 insertions, 308 deletions
diff --git a/meta-xilinx-core/classes/dfx_user_dts.bbclass b/meta-xilinx-core/classes/dfx_user_dts.bbclass
new file mode 100644
index 00000000..4404aa05
--- /dev/null
+++ b/meta-xilinx-core/classes/dfx_user_dts.bbclass
@@ -0,0 +1,267 @@
1# This bbclass is inherited by flat, DFx Static and DFx RP firmware recipes.
2# dfx_user_dts.bbclass expects user to generate pl dtsi for flat, DFx Static
3# and DFx RP xsa outside of yocto.
4
5inherit devicetree
6
7DEPENDS = "dtc-native bootgen-native"
8
9# recipes that inherit from this class need to use an appropriate machine
10# override for COMPATIBLE_MACHINE to build successfully; don't allow building
11# for microblaze MACHINE
12COMPATIBLE_MACHINE ?= "^$"
13COMPATIBLE_MACHINE:microblaze = "^$"
14
15PACKAGE_ARCH = "${MACHINE_ARCH}"
16
17PROVIDES = ""
18
19do_fetch[cleandirs] = "${B}"
20
21DT_PADDING_SIZE = "0x1000"
22BOOTGEN_FLAGS ?= " -arch ${SOC_FAMILY} -w ${@bb.utils.contains('SOC_FAMILY','zynqmp','','-process_bitstream bin',d)}"
23
24S ?= "${WORKDIR}"
25FW_DIR ?= ""
26DTSI_PATH ?= ""
27DTBO_PATH ?= ""
28DT_FILES_PATH = "${S}/${DTSI_PATH}"
29FIRMWARE_NAME_DT_FILE ?= ""
30USER_DTS_FILE ?= ""
31
32FIRMWARE_NAME_DT_FILE[doc] = "DT file which has firmware-name device-tree property"
33USER_DTS_FILE[doc] = "Final DTSI or DTS file which is used for packaging final DT overlay"
34
35python() {
36 import re
37 soc_family = d.getVar("SOC_FAMILY")
38 if "git://" in d.getVar("SRC_URI") or "https://" in d.getVar("SRC_URI"):
39 d.setVar("S",'${WORKDIR}/git/'+d.getVar("FW_DIR"))
40 else:
41 dtsi_found = False
42 dtbo_found = False
43 bit_found = False
44 bin_found = False
45 pdi_found = False
46
47 # Required Inputs
48 if '.dtsi' in d.getVar("SRC_URI") or '.dts' in d.getVar("SRC_URI"):
49 dtsi_found = True
50 d.setVar("DTSI_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.dtsi' in a or '.dts' in a][0].lstrip('file://')))
51
52 if '.dtbo' in d.getVar("SRC_URI"):
53 dtbo_found = True
54 d.setVar("DTBO_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.dtbo' in a][0].lstrip('file://')))
55
56 if '.bit' in d.getVar("SRC_URI") and soc_family != "versal":
57 bit_found = True
58 d.setVar("BIT_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.bit' in a][0].lstrip('file://')))
59
60 if '.bin' in d.getVar("SRC_URI") and soc_family != "versal":
61 bin_found = True
62 d.setVar("BIT_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.bin' in a][0].lstrip('file://')))
63
64 if '.pdi' in d.getVar("SRC_URI") and soc_family == "versal":
65 pdi_found = True
66 d.setVar("PDI_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.pdi' in a][0].lstrip('file://')))
67
68 # Check for valid combination of input files in SRC_URI
69 if dtsi_found or dtbo_found:
70 bb.debug(2, "dtsi or dtbo found in SRC_URI")
71 if bit_found or pdi_found or bin_found:
72 bb.debug(2, "bitstream or pdi found in SRC_URI")
73 elif bit_found and bin_found:
74 raise bb.parse.SkipRecipe("Both '.bit' and '.bin' file found in SRC_URI, either .bit or .bin file is supported but not both.")
75 else:
76 raise bb.parse.SkipRecipe("Need one '.bit' or one '.pdi' file added to SRC_URI ")
77 else:
78 raise bb.parse.SkipRecipe("Need one '.dtsi' or one '.dtbo' file added to SRC_URI ")
79
80 # Check for valid combination of dtsi and dts files in SRC_URI
81 # Following file combinations are not supported use case.
82 # 1. More than one '.dtsi' and zero '.dts' file.
83 # 2. More than one '.dts' and zero or more than one '.dtsi'file .
84 pattern_dts = re.compile(r'[.]+dts\b')
85 pattern_dtsi = re.compile(r'[.]+dtsi\b')
86 dts_count = len([*re.finditer(pattern_dts, d.getVar('SRC_URI'))])
87 dtsi_count = len([*re.finditer(pattern_dtsi, d.getVar("SRC_URI"))])
88
89 if dtsi_count > 1 and dts_count == 0:
90 raise bb.parse.SkipRecipe("Recipe has more than one '.dtsi' and zero '.dts' found, this is an unsupported use case")
91 elif dts_count > 1:
92 raise bb.parse.SkipRecipe("Recipe has more than one '.dts' and zero or more than one '.dtsi' found, this is an unsupported use case")
93
94 # Optional input
95 if '.json' in d.getVar("SRC_URI"):
96 d.setVar("JSON_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.json' in a][0].lstrip('file://')))
97
98 if '.xclbin' in d.getVar("SRC_URI"):
99 d.setVar("XCL_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.xclbin' in a][0].lstrip('file://')))
100}
101
102# Function to get dts or dtsi file count.
103def get_dt_count(d, dt_ext):
104 import glob
105 dt_count = sum(1 for f in glob.iglob((d.getVar('S') + (d.getVar('DTSI_PATH')) + '/*.' + dt_ext),recursive=True) if os.path.isfile(f))
106 return dt_count
107
108# Function to search for dt firmware-name property in dts or dtsi file.
109python find_firmware_file() {
110 import glob
111 pattern_fw = 'firmware-name'
112 search_count = 0
113 for dt_files in glob.iglob((d.getVar('S') + (d.getVar('DTSI_PATH')) + '/*.dts*'),recursive=True):
114 with open(dt_files, "r") as f:
115 current_fd = f.read()
116 if pattern_fw in current_fd:
117 search_count += 1
118 if search_count > 1:
119 bb.error("firmware-name dt property found in more than one dt files! Please fix the dts or dtsi file.")
120 break
121 else:
122 d.setVar('FIRMWARE_NAME_DT_FILE', os.path.basename(dt_files))
123}
124
125do_configure[prefuncs] += "find_firmware_file"
126
127python do_configure() {
128 import glob, re, shutil
129 soc_family = d.getVar("SOC_FAMILY")
130
131 if bb.utils.contains('MACHINE_FEATURES', 'fpga-overlay', False, True, d):
132 bb.warn("Using fpga-manager.bbclass requires fpga-overlay MACHINE_FEATURE to be enabled")
133
134 # Renaming firmware-name using $PN as bitstream/PDI will be renamed using
135 # $PN when generating the bin/pdi file.
136 if os.path.isfile(d.getVar('S') + (d.getVar('DTSI_PATH') or '') + '/' + d.getVar('FIRMWARE_NAME_DT_FILE')):
137 orig_dtsi = glob.glob(d.getVar('S')+ (d.getVar('DTSI_PATH') or '') + '/' + d.getVar('FIRMWARE_NAME_DT_FILE'))[0]
138 new_dtsi = d.getVar('S') + '/pl.dtsi_firmwarename'
139 with open(new_dtsi, 'w') as newdtsi:
140 with open(orig_dtsi) as olddtsi:
141 for line in olddtsi:
142 if soc_family == 'versal':
143 newdtsi.write(re.sub('firmware-name.*\".*\"','firmware-name = \"'+d.getVar('PN')+'.pdi\"',line))
144 else:
145 newdtsi.write(re.sub('firmware-name.*\".*\"','firmware-name = \"'+d.getVar('PN')+'.bit.bin\"',line))
146 shutil.move(new_dtsi,orig_dtsi)
147}
148
149do_compile[prefuncs] += "find_firmware_file"
150
151python devicetree_do_compile:append() {
152 import glob, subprocess, shutil
153 soc_family = d.getVar("SOC_FAMILY")
154
155 dtbo_count = sum(1 for f in glob.iglob((d.getVar('S') + '/*.dtbo'),recursive=True) if os.path.isfile(f))
156
157 # Skip devicetree do_compile task if input file is dtbo in SRC_URI
158 if not dtbo_count:
159 # Convert .bit to bit.bin format only if dtsi is input.
160 # In case of dtbo as input, bbclass doesn't know if firmware-name is .bit or
161 # .bit.bin format and corresponding file name. Hence we are not doing
162 # bit.bin conversion.
163 if soc_family != 'versal' and glob.glob(d.getVar('S') + '/' + d.getVar('FIRMWARE_NAME_DT_FILE')):
164 pn = d.getVar('PN')
165 biffile = pn + '.bif'
166
167 with open(biffile, 'w') as f:
168 f.write('all:\n{\n\t' + glob.glob(d.getVar('S')+(d.getVar('BIT_PATH') or '') + '/*.bit')[0] + '\n}')
169
170 bootgenargs = ["bootgen"] + (d.getVar("BOOTGEN_FLAGS") or "").split()
171 bootgenargs += ["-image", biffile, "-o", pn + ".bit.bin"]
172 subprocess.run(bootgenargs, check = True)
173
174 # In Zynq7k using both "-process_bitstream bin" and "-o" in bootgen flag,
175 # to convert bit file to bin format, "-o" option will not be effective
176 # and generated output file name is ${S}+${BIT_PATH}/<bit_file_name>.bit.bin
177 # file, Hence we need to rename this file from <bit_file_name>.bit.bin to
178 # ${PN}.bit.bin which matches the firmware name in dtbo and move
179 # ${PN}.bit.bin to ${B} directory.
180 if soc_family == 'zynq':
181 src_bitbin_file = glob.glob(d.getVar('S') + (d.getVar('BIT_PATH') or '') + '/*.bit.bin')[0]
182 dst_bitbin_file = d.getVar('B') + '/' + pn + '.bit.bin'
183 shutil.move(src_bitbin_file, dst_bitbin_file)
184
185 if not os.path.isfile(pn + ".bit.bin"):
186 bb.fatal("Couldn't find %s file, Enable '-log trace' in BOOTGEN_FLAGS" \
187 "and check bootgen_log.txt" % (d.getVar('B') + '/' + pn + '.bit.bin'))
188}
189
190# If user inputs both dtsi and dts files then device-tree will generate dtbo
191# files for each dt file, Hence to package the firmware pick the right user dt
192# overlay file.
193python find_user_dts_overlay_file() {
194 import glob
195 dtbo_count = sum(1 for f in glob.iglob((d.getVar('S') + '/*.dtbo'),recursive=True) if os.path.isfile(f))
196 # Skip if input file is dtbo in SRC_URI
197 if not dtbo_count:
198 dts_count = get_dt_count(d, 'dts')
199 dtsi_count = get_dt_count(d, 'dtsi')
200 if dtsi_count == 1 and dts_count == 0:
201 dts_file =glob.glob(d.getVar('S')+ (d.getVar('DTSI_PATH') or '') + '/*.dtsi')[0]
202 elif dtsi_count >=0 and dts_count == 1:
203 dts_file = glob.glob(d.getVar('S')+ (d.getVar('DTSI_PATH') or '') + '/*.dts')[0]
204
205 d.setVar('USER_DTS_FILE', os.path.splitext(os.path.basename(dts_file))[0])
206}
207
208do_install[prefuncs] += "find_user_dts_overlay_file"
209
210do_install() {
211 install -d ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/
212
213 # In case of dtbo as input, dtbo will be copied from directly from ${S}
214 # In case of dtsi as input, dtbo will be copied from directly from ${B}
215 if [ `ls ${S}/*.dtbo | wc -l` -eq 1 ]; then
216 install -Dm 0644 ${S}/*.dtbo ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/
217 elif [ `ls ${S}/*.dtbo | wc -l` -gt 1 ]; then
218 bbfatal "Multiple DTBO found, use the right DTBO in SRC_URI from the following:\n$(basename -a ${S}/*.dtbo)"
219 elif [ -f ${B}/${USER_DTS_FILE}.dtbo ]; then
220 install -Dm 0644 ${B}/${USER_DTS_FILE}.dtbo ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.dtbo
221 else
222 bbfatal "A dtbo ending '.dtbo' expected but not found"
223 fi
224
225 if [ "${SOC_FAMILY}" == "versal" ]; then
226 # In case of dtbo as input, pdi will be copied from directly from ${S}
227 # without renaming the pdi name to ${PN}.pdi
228 if [ `ls ${S}/*.pdi | wc -l` -eq 1 ] && [ `ls ${S}/*.dtbo | wc -l` -eq 1 ]; then
229 install -Dm 0644 ${S}/*.pdi ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/
230 elif [ `ls ${S}/*.pdi | wc -l` -gt 1 ]; then
231 bbfatal "Multiple PDI found, use the right PDI in SRC_URI from the following:\n$(basename -a ${S}/*.pdi)"
232 elif [ `ls ${S}/*.pdi | wc -l` -eq 1 ] && [ -f ${B}/${USER_DTS_FILE}.dtbo ]; then
233 install -Dm 0644 ${S}/*.pdi ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.pdi
234 else
235 bbfatal "A PDI file with '.pdi' expected but not found"
236 fi
237 else
238 # In case of dtbo as input, .bit or .bin will be copied from directly
239 # from ${S} without renaming the .bit/.bin name to ${PN}.bit/${PN}.bin
240 # if more than one .bit/.bin file is found then fail the task.
241 if [ `ls ${S}/*.bit | wc -l` -gt 1 ]; then
242 bbfatal "Multiple .bit found, use the right .bit in SRC_URI from the following:\n$(basename -a ${S}/*.bit)"
243 elif [ `ls ${S}/*.bin | wc -l` -gt 1 ]; then
244 bbfatal "Multiple .bin found, use the right .bin in SRC_URI from the following:\n$(basename -a ${S}/*.bin)"
245 elif [ `ls ${S}/*.bit | wc -l` -eq 1 ] && [ `ls ${S}/*.dtbo | wc -l` -eq 1 ]; then
246 install -Dm 0644 ${S}/*.bit ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/
247 elif [ `ls ${S}/*.bin | wc -l` -eq 1 ] && [ `ls ${S}/*.dtbo | wc -l` -eq 1 ]; then
248 install -Dm 0644 ${S}/*.bin ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/
249 elif [ -f ${B}/${PN}.bit.bin ] && [ -f ${B}/${USER_DTS_FILE}.dtbo ]; then
250 install -Dm 0644 ${B}/${PN}.bit.bin ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.bit.bin
251 else
252 bbfatal "A bitstream file with '.bit' or '.bin' expected but not found"
253 fi
254 fi
255
256 if ls ${S}/${XCL_PATH}/*.xclbin >/dev/null 2>&1; then
257 install -Dm 0644 ${S}/${XCL_PATH}/*.xclbin ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.xclbin
258 fi
259
260 if [ -f ${S}/${JSON_PATH}/shell.json ] || [ -f ${S}/${JSON_PATH}/accel.json ]; then
261 install -Dm 0644 ${S}/${JSON_PATH}/*.json ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/
262 fi
263}
264
265do_deploy[noexec] = "1"
266
267FILES:${PN} += "${nonarch_base_libdir}/firmware/xilinx/${PN}"
diff --git a/meta-xilinx-core/classes/fpgamanager_custom.bbclass b/meta-xilinx-core/classes/fpgamanager_custom.bbclass
index e5255783..8c8997a1 100644
--- a/meta-xilinx-core/classes/fpgamanager_custom.bbclass
+++ b/meta-xilinx-core/classes/fpgamanager_custom.bbclass
@@ -1,177 +1,24 @@
1# This bbclass is inherited by flat, DFx Static and DFx RP firmware recipes. 1# This class inherits dfx_user_dts.bbclass for below use cases.
2# fpgamanager_custom.bbclass expects user to generate pl dtsi for flat, DFx Static 2# Zynq-7000 and ZynqMP: Full bitstream loading.
3# and DFx RP xsa outside of yocto. 3# ZynqMP: DFx Static and Partial bitstream loading.
4 4# Versal: DFx Static and Parial pdi loading.
5inherit devicetree 5# Versal: Full PDI loading.
6 6
7DEPENDS = "dtc-native bootgen-native" 7inherit dfx_user_dts
8 8
9# recipes that inherit from this class need to use an appropriate machine 9python fpgamanager_warn_msg () {
10# override for COMPATIBLE_MACHINE to build successfully; don't allow building 10 if not d.getVar("FPGAMANAGER_NO_WARN"):
11# for microblaze MACHINE 11 arch = d.getVar('SOC_FAMILY')
12COMPATIBLE_MACHINE ?= "^$" 12 pn = d.getVar('PN')
13COMPATIBLE_MACHINE:microblaze = "^$" 13 warn_msg = 'Users should start using dfx_user_dts bbclass for '
14 14 if arch == 'zynq':
15PACKAGE_ARCH = "${MACHINE_ARCH}" 15 warn_msg += 'Zynq-7000 Full bitstream loading use case.'
16 16 elif arch == 'zynqmp':
17PROVIDES = "" 17 warn_msg += 'ZynqMP Full or DFx Static or DFx Partial bitstream loading use case.'
18 18 elif arch == 'versal':
19do_fetch[cleandirs] = "${B}" 19 warn_msg += 'Versal DFx Static or DFx Partial or Full PDI loading use case.'
20 20
21DT_PADDING_SIZE = "0x1000" 21 bb.warn("Recipe %s has inherited fpgamanager_custom bbclass which will be deprecated in 2024.1 release. \n%s" % (pn, warn_msg))
22BOOTGEN_FLAGS ?= " -arch ${SOC_FAMILY} -w ${@bb.utils.contains('SOC_FAMILY','zynqmp','','-process_bitstream bin',d)}"
23
24S ?= "${WORKDIR}"
25FW_DIR ?= ""
26DTSI_PATH ?= ""
27DTBO_PATH ?= ""
28DT_FILES_PATH = "${S}/${DTSI_PATH}"
29
30python() {
31 soc_family = d.getVar("SOC_FAMILY")
32 if "git://" in d.getVar("SRC_URI") or "https://" in d.getVar("SRC_URI"):
33 d.setVar("S",'${WORKDIR}/git/'+d.getVar("FW_DIR"))
34 else:
35 dtsi_found = False
36 dtbo_found = False
37 bit_found = False
38 pdi_found = False
39
40 # Required Inputs
41 if '.dtsi' in d.getVar("SRC_URI"):
42 dtsi_found = True
43 d.setVar("DTSI_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.dtsi' in a][0].lstrip('file://')))
44
45 if '.dtbo' in d.getVar("SRC_URI"):
46 dtbo_found = True
47 d.setVar("DTBO_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.dtbo' in a][0].lstrip('file://')))
48
49 if '.bit' in d.getVar("SRC_URI") and soc_family != "versal":
50 bit_found = True
51 d.setVar("BIT_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.bit' in a][0].lstrip('file://')))
52
53 if '.pdi' in d.getVar("SRC_URI") and soc_family == "versal":
54 pdi_found = True
55 d.setVar("PDI_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.pdi' in a][0].lstrip('file://')))
56
57 # Check for valid combination of input files in SRC_URI
58 if dtsi_found or dtbo_found:
59 bb.debug(2, "dtsi or dtbo found in SRC_URI")
60 if bit_found or pdi_found:
61 bb.debug(2, "bitstream or pdi found in SRC_URI")
62 else:
63 raise bb.parse.SkipRecipe("Need one '.bit' or one '.pdi' file added to SRC_URI ")
64 else:
65 raise bb.parse.SkipRecipe("Need one '.dtsi' or one '.dtbo' file added to SRC_URI ")
66
67 # Optional input
68 if '.json' in d.getVar("SRC_URI"):
69 d.setVar("JSON_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.json' in a][0].lstrip('file://')))
70
71 if '.xclbin' in d.getVar("SRC_URI"):
72 d.setVar("XCL_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.xclbin' in a][0].lstrip('file://')))
73} 22}
74python do_configure() {
75 import glob, re, shutil
76 soc_family = d.getVar("SOC_FAMILY")
77
78 if bb.utils.contains('MACHINE_FEATURES', 'fpga-overlay', False, True, d):
79 bb.warn("Using fpga-manager.bbclass requires fpga-overlay MACHINE_FEATURE to be enabled")
80
81 # Renaming firmware-name using $PN as bitstream/PDI will be renamed using
82 # $PN when generating the bin/pdi file.
83 if '.dtsi' in d.getVar("SRC_URI"):
84 orig_dtsi = glob.glob(d.getVar('S')+ (d.getVar('DTSI_PATH') or '') + '/*.dtsi')[0]
85 new_dtsi = d.getVar('S') + '/pl.dtsi_firmwarename'
86 with open(new_dtsi, 'w') as newdtsi:
87 with open(orig_dtsi) as olddtsi:
88 for line in olddtsi:
89 if soc_family == 'versal':
90 newdtsi.write(re.sub('firmware-name.*\".*\"','firmware-name = \"'+d.getVar('PN')+'.pdi\"',line))
91 else:
92 newdtsi.write(re.sub('firmware-name.*\".*\"','firmware-name = \"'+d.getVar('PN')+'.bit.bin\"',line))
93 shutil.move(new_dtsi,orig_dtsi)
94}
95
96python devicetree_do_compile:append() {
97 import glob, subprocess, shutil
98 soc_family = d.getVar("SOC_FAMILY")
99
100 # Convert .bit to bit.bin format only if dtsi is input.
101 # In case of dtbo as input, bbclass doesn't know if firmware-name is .bit or
102 # .bit.bin format and corresponding file name. Hence we are not doing
103 # bit.bin conversion.
104 if soc_family != 'versal' and glob.glob(d.getVar('S') + '/*.dtsi'):
105 pn = d.getVar('PN')
106 biffile = pn + '.bif'
107
108 with open(biffile, 'w') as f:
109 f.write('all:\n{\n\t' + glob.glob(d.getVar('S')+(d.getVar('BIT_PATH') or '') + '/*.bit')[0] + '\n}')
110
111 bootgenargs = ["bootgen"] + (d.getVar("BOOTGEN_FLAGS") or "").split()
112 bootgenargs += ["-image", biffile, "-o", pn + ".bit.bin"]
113 subprocess.run(bootgenargs, check = True)
114
115 # In Zynq7k using both "-process_bitstream bin" and "-o" in bootgen flag,
116 # to convert bit file to bin format, "-o" option will not be effective
117 # and generated output file name is ${S}+${BIT_PATH}/<bit_file_name>.bit.bin
118 # file, Hence we need to rename this file from <bit_file_name>.bit.bin to
119 # ${PN}.bit.bin which matches the firmware name in dtbo and move
120 # ${PN}.bit.bin to ${B} directory.
121 if soc_family == 'zynq':
122 src_bitbin_file = glob.glob(d.getVar('S') + (d.getVar('BIT_PATH') or '') + '/*.bit.bin')[0]
123 dst_bitbin_file = d.getVar('B') + '/' + pn + '.bit.bin'
124 shutil.move(src_bitbin_file, dst_bitbin_file)
125
126 if not os.path.isfile(pn + ".bit.bin"):
127 bb.fatal("Couldn't find %s file, Enable '-log trace' in BOOTGEN_FLAGS" \
128 "and check bootgen_log.txt" % (d.getVar('B') + '/' + pn + '.bit.bin'))
129}
130
131do_install() {
132 install -d ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/
133
134 # In case of dtbo as input, dtbo will be copied from directly from ${S}
135 # In case of dtsi as input, dtbo will be copied from directly from ${B}
136 if [ -f ${S}/*.dtbo ]; then
137 install -Dm 0644 ${S}/*.dtbo ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/
138 elif [ -f ${B}/*.dtbo ]; then
139 install -Dm 0644 ${B}/*.dtbo ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.dtbo
140 else
141 bbfatal "A dtbo ending '.dtbo' expected but not found"
142 fi
143
144 if [ "${SOC_FAMILY}" == "versal" ]; then
145 # In case of dtbo as input, pdi will be copied from directly from ${S}
146 # without renaming the pdi name to ${PN}.pdi
147 if [ -f ${S}/*.pdi ] && [ -f ${S}/*.dtbo ]; then
148 install -Dm 0644 ${S}/*.pdi ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/
149 elif [ -f ${S}/*.pdi ] && [ -f ${B}/*.dtbo ]; then
150 install -Dm 0644 ${S}/*.pdi ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.pdi
151 else
152 bbfatal "A PDI file with '.pdi' expected but not found"
153 fi
154 else
155 # In case of dtbo as input, .bit or .bit.in will be copied from directly
156 # from ${S} without renaming the .bit name to ${PN}.bit.bin
157 if [ -f ${S}/*.bit* ] && [ -f ${S}/*.dtbo ]; then
158 install -Dm 0644 ${S}/*.bit* ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/
159 elif [ -f ${B}/${PN}.bit.bin ] && [ -f ${B}/*.dtbo ]; then
160 install -Dm 0644 ${B}/${PN}.bit.bin ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.bit.bin
161 else
162 bbfatal "A bitstream file with '.bit' or '.bit.bin' expected but not found"
163 fi
164 fi
165
166 if ls ${S}/${XCL_PATH}/*.xclbin >/dev/null 2>&1; then
167 install -Dm 0644 ${S}/${XCL_PATH}/*.xclbin ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.xclbin
168 fi
169
170 if [ -f ${S}/${JSON_PATH}/shell.json ] || [ -f ${S}/${JSON_PATH}/accel.json ]; then
171 install -Dm 0644 ${S}/${JSON_PATH}/*.json ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/
172 fi
173}
174
175do_deploy[noexec] = "1"
176 23
177FILES:${PN} += "${nonarch_base_libdir}/firmware/xilinx/${PN}" 24do_install[postfuncs] += "fpgamanager_warn_msg" \ No newline at end of file
diff --git a/meta-xilinx-core/conf/layer.conf b/meta-xilinx-core/conf/layer.conf
index 9745bb4d..afbf71c3 100644
--- a/meta-xilinx-core/conf/layer.conf
+++ b/meta-xilinx-core/conf/layer.conf
@@ -42,27 +42,26 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
42 *->xserver-xorg \ 42 *->xserver-xorg \
43" 43"
44 44
45XILINX_RELEASE_VERSION ??= "v2023.1" 45XILINX_RELEASE_VERSION ??= "v2023.2"
46 46
47BUILDCFG_VARS:append = " SOC_VARIANT XILINX_RELEASE_VERSION" 47BUILDCFG_VARS:append = " SOC_VARIANT XILINX_RELEASE_VERSION"
48 48
49XILINX_QEMU_VERSION[v2022.1] = "v7.1.0-xilinx-v2022.1%" 49XILINX_QEMU_VERSION[v2022.1] = "v7.1.0-xilinx-v2022.1%"
50XILINX_QEMU_VERSION[v2022.2] = "v7.1.0-xilinx-v2022.2%" 50XILINX_QEMU_VERSION[v2022.2] = "v7.1.0-xilinx-v2022.2%"
51XILINX_QEMU_VERSION[v2023.1] = "v7.1.0-xilinx-v2023.1%" 51XILINX_QEMU_VERSION[v2023.1] = "v7.1.0-xilinx-v2023.1%"
52XILINX_QEMU_VERSION[v2023.2] = "v7.1.0-xilinx-v2023.2%"
52PREFERRED_VERSION_qemu-xilinx ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" 53PREFERRED_VERSION_qemu-xilinx ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}"
53PREFERRED_VERSION_qemu-xilinx-native ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" 54PREFERRED_VERSION_qemu-xilinx-native ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}"
54PREFERRED_VERSION_qemu-xilinx-system-native ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" 55PREFERRED_VERSION_qemu-xilinx-system-native ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}"
55PREFERRED_VERSION_qemu-devicetrees ?= "xilinx-${XILINX_RELEASE_VERSION}%" 56PREFERRED_VERSION_qemu-devicetrees ?= "xilinx-${XILINX_RELEASE_VERSION}%"
56PREFERRED_PROVIDER_qemu ?= "qemu-xilinx" 57PREFERRED_PROVIDER_qemu ?= "qemu-xilinx"
57 58
58XILINX_ATF_VERSION[v2022.1] = "2.6-xilinx-v2022.1%"
59XILINX_ATF_VERSION[v2022.2] = "2.6-xilinx-v2022.2%"
60XILINX_ATF_VERSION[v2023.1] = "2.8-xilinx-v2023.1%" 59XILINX_ATF_VERSION[v2023.1] = "2.8-xilinx-v2023.1%"
60XILINX_ATF_VERSION[v2023.2] = "2.8-xilinx-v2023.2%"
61PREFERRED_VERSION_arm-trusted-firmware ?= "${@d.getVarFlag('XILINX_ATF_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" 61PREFERRED_VERSION_arm-trusted-firmware ?= "${@d.getVarFlag('XILINX_ATF_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}"
62 62
63XILINX_UBOOT_VERSION[v2022.1] = "v2021.01-xilinx-v2022.1%"
64XILINX_UBOOT_VERSION[v2022.2] = "v2021.01-xilinx-v2022.2%"
65XILINX_UBOOT_VERSION[v2023.1] = "v2023.01-xilinx-v2023.1%" 63XILINX_UBOOT_VERSION[v2023.1] = "v2023.01-xilinx-v2023.1%"
64XILINX_UBOOT_VERSION[v2023.2] = "v2023.01-xilinx-v2023.2%"
66 65
67PREFERRED_VERSION_u-boot-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" 66PREFERRED_VERSION_u-boot-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}"
68PREFERRED_VERSION_u-boot-tools-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" 67PREFERRED_VERSION_u-boot-tools-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}"
@@ -70,6 +69,7 @@ PREFERRED_VERSION_u-boot-tools-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION',
70XILINX_LINUX_VERSION[v2022.1] = "5.15.19-xilinx-v2022.1%" 69XILINX_LINUX_VERSION[v2022.1] = "5.15.19-xilinx-v2022.1%"
71XILINX_LINUX_VERSION[v2022.2] = "5.15.36-xilinx-v2022.2%" 70XILINX_LINUX_VERSION[v2022.2] = "5.15.36-xilinx-v2022.2%"
72XILINX_LINUX_VERSION[v2023.1] = "6.1.30-xilinx-v2023.1%" 71XILINX_LINUX_VERSION[v2023.1] = "6.1.30-xilinx-v2023.1%"
72XILINX_LINUX_VERSION[v2023.2] = "6.1.30-xilinx-v2023.2%"
73PREFERRED_VERSION_linux-xlnx ?= "${@d.getVarFlag('XILINX_LINUX_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" 73PREFERRED_VERSION_linux-xlnx ?= "${@d.getVarFlag('XILINX_LINUX_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}"
74 74
75# Add support to eSDK for gen-machine-conf if it exists 75# Add support to eSDK for gen-machine-conf if it exists
diff --git a/meta-xilinx-core/conf/machine/README b/meta-xilinx-core/conf/machine/README
index 5361dc81..de8cf58d 100644
--- a/meta-xilinx-core/conf/machine/README
+++ b/meta-xilinx-core/conf/machine/README
@@ -142,20 +142,83 @@ you should not use :<machine> override values for the same reason. Note,
142not every machine file will have all of these variables, only the ones 142not every machine file will have all of these variables, only the ones
143you need to override should be set. 143you need to override should be set.
144 144
145Variables set before required inclusion file:
146Variables that changes based on hw design or board specific requirement must be
147set before required inclusion file else pre-expansion value defined in generic
148machine conf will be set. This way user can also override these variables from
149local.conf
150
145System wide setting: 151System wide setting:
146TUNE_FEATURES:tune-<tune> - Specific tune features 152TUNE_FEATURES:tune-<tune> - Specific tune features
147 153
148external-hdf recipe from meta-xilinx-tools: 154external-hdf recipe from meta-xilinx-tools:
149HDF_MACHINE - Used by the recipe to find the correct XSA 155HDF_MACHINE - Machine to load from reference defign xsa using hdf-examples recipe
150HDF_EXT - only xsa is supported, legacy variable 156HDF_EXT - Only ".xsa" externsion is supported, legacy variable.
151HDF_BASE - protocol if not using the default external-hdf repository 157HDF_BASE - Download protocol (file://, git://, http:// or https://) protocol if
152HDF_PATH - path to the repository or XSA file 158 not using the default external-hdf repository.
159HDF_PATH - Path to the repository or XSA file
160
161fs-boot recipe from meta-xilinx-tools:
162YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot - YAML based uart stdin configuration for
163MicroBlaze. Example: axi_uartlite_0 or axi_uart16550_0 etc,.
164YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot - YAML based uart stdout configuration for
165MicroBlaze. Example: axi_uartlite_0 or axi_uart16550_0 etc,.
166YAML_MAIN_MEMORY_CONFIG:pn-fs-boot - YAML based DDR4 or MIG configuration for
167MicroBlaze. Example: DDR4_0 or MIG_7SERIES_0 etc,.
168YAML_FLASH_MEMORY_CONFIG:pn-fs-boot - YAML based flash configuration for
169MicroBlaze. Example: axi_emc_0 or axi_quad_spi_0 etc,.
170XSCTH_PROC:pn-fs-boot - Processor IP used while configuring embeddedsw compoments.
171Example: microblaze_0 or microblaze_1 etc,.
172
173fsbl-firmware recipe from meta-xilinx-tools:
174YAML_SERIAL_CONSOLE_STDIN:pn-fsbl-firmware - YAML based FSBL uart stdin configuration
175for Zynq-7000 and ZynqMP devices.
176YAML_SERIAL_CONSOLE_STDOUT:pn-fsbl-firmware - YAML based FSBL uart stdout configuration
177for Zynq-7000 and ZynqMP devices.
178
179pmu-firmware recipe from meta-xilinx-tools:
180YAML_SERIAL_CONSOLE_STDIN:pn-pmu-firmware - YAML based PMUFW uart stdin configuration
181for ZynqMP devices.
182YAML_SERIAL_CONSOLE_STDOUT:pn-pmu-firmware - YAML based PMUFW uart stdout configuration
183for ZynqMP devices.
184
185plm-firmware recipe from meta-xilinx-tools:
186YAML_SERIAL_CONSOLE_STDIN:pn-plm-firmware - YAML based PLM uart stdin configuration
187for Versal devices.
188YAML_SERIAL_CONSOLE_STDOUT:pn-fplmsbl-firmware - YAML based PLM uart stdout
189configuration for Versal devices.
153 190
154device-tree recipe from meta-xilinx-tools: 191device-tree recipe from meta-xilinx-tools:
155YAML_DT_BOARD_FLAGS - flags used for dtgen 192YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree - YAML based uart console configuration
193for all device families. Example: axi_uartlite_0 or psu_uart_0 etc,.
194YAML_MAIN_MEMORY_CONFIG:pn-device-tree - YAML based memory configuration for all
195device families. Example: DDR4_0 or PS7_DDR_0 or PSU_DDR_0 etc,.
196XSCTH_PROC:pn-device-tree - Processor IP used while configuring device-tree
197compoments. Example: microblaze_0 or microblaze_1 etc,.
198YAML_DT_BOARD_FLAGS:pn-device-tree - YAML based configuration for setting eval
199board specific dtsi files available in DTG repo.
200
201arm-trusted-firmware recipe from meta-xilinx-core:
202ATF_CONSOLE - Uart console configuration for all aarch64 device families.
203Example: pl011 or cadence or cadence1 etc,.
204TFA_BL33_LOAD - BL33 preloadded base address to EXTRA_OEMAKE for aarch64.
156 205
157u-boot-xlnx recipe from meta-xilinx-core: 206u-boot-xlnx recipe from meta-xilinx-core:
158UBOOT_MACHINE - Name of the defconfig to use 207UBOOT_MACHINE - Name of the defconfig to use
159HAS_PLATFORM_INIT - List of defconfig files available for u-boot 208HAS_PLATFORM_INIT - List of defconfig files available for u-boot only for SPL boot.
209
210u-boot-xlnx-scr recipe from meta-xilinx-core:
211DDR_BASEADDR - Base address for DDR used for loading the images from u-boot env.
212SKIP_APPEND_BASEADDR - Skip appending ${DDR_BASEADDR} for image offsets.
213
214Varibable set after required inclusion file:
215Varibables that does not intend to change must be set before required inclusion
216file.
217
218external-hdf recipe from meta-xilinx-tools:
219HDF_MACHINE - Used by the recipe to find the correct XSA
220HDF_EXT - only xsa is supported, legacy variable
221HDF_BASE - protocol if not using the default external-hdf repository
222HDF_PATH - path to the repository or XSA file
160 223
161...and more... 224...and more...
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 4a4384a1..e99b1f0e 100644
--- a/meta-xilinx-core/conf/machine/include/machine-xilinx-default.inc
+++ b/meta-xilinx-core/conf/machine/include/machine-xilinx-default.inc
@@ -64,33 +64,38 @@ FIT_CONF_DEFAULT_DTB ?= "${@os.path.basename(d.getVar('CONFIG_DTFILE')).replace(
64# Define to avoid parsse errors below if undefind elsewhere 64# Define to avoid parsse errors below if undefind elsewhere
65INITRAMFS_IMAGE ??= "" 65INITRAMFS_IMAGE ??= ""
66 66
67# IMAGE_BOOT_FILES is a whitespace-separated list of entries specifying files to be installed into the boot partition
68# entries can change the installed filename by specifying the destination name after a semicolon (e.g. u-boot.img;uboot)
69# make sure to use the installed filename when scanning IMAGE_BOOT_FILES
70IMAGE_BOOT_FILES_INSTALLED = "${@' '.join([x.split(';')[-1] for x in d.getVar('IMAGE_BOOT_FILES').split()])}"
71
67# Automatically add WKS_FILE_DEPENDS based on the configuration 72# Automatically add WKS_FILE_DEPENDS based on the configuration
68# Initial value from oe-core/meta/classes-recipe/image_types_wic.bbclass 73# Initial value from oe-core/meta/classes-recipe/image_types_wic.bbclass
69WKS_FILE_DEPENDS ?= "${WKS_FILE_DEPENDS_DEFAULT} ${WKS_FILE_DEPENDS_BOOTLOADERS}" 74WKS_FILE_DEPENDS ?= "${WKS_FILE_DEPENDS_DEFAULT} ${WKS_FILE_DEPENDS_BOOTLOADERS}"
70WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.bin', ' virtual/boot-bin', '', d)}" 75WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.bin', ' virtual/boot-bin', '', d)}"
71WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'system.dtb', ' virtual/dtb', '', d)}" 76WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'system.dtb', ' virtual/dtb', '', d)}"
72WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.scr', ' u-boot-xlnx-scr', '', d)}" 77WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.scr', ' u-boot-xlnx-scr', '', d)}"
73WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}" 78WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}"
74WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'atf-uboot.ub', ' arm-trusted-firmware', '', d)}" 79WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'atf-uboot.ub', ' arm-trusted-firmware', '', d)}"
75WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'Image', ' virtual/kernel', '', d)}" 80WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'Image', ' virtual/kernel', '', d)}"
76WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'uImage', ' virtual/kernel', '', d)}" 81WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uImage', ' virtual/kernel', '', d)}"
77WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'zImage', ' virtual/kernel', '', d)}" 82WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'zImage', ' virtual/kernel', '', d)}"
78WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'u-boot.bin', ' virtual/bootloader', '', d)}" 83WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'u-boot.bin', ' virtual/bootloader', '', d)}"
79WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'u-boot.elf', ' virtual/bootloader', '', d)}" 84WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'u-boot.elf', ' virtual/bootloader', '', d)}"
80WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', '${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot', ' ${INITRAMFS_IMAGE}', '', d)}" 85WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', '${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot', ' ${INITRAMFS_IMAGE}', '', d)}"
81 86
82# Automatically add IMAGE_BOOT_FILES to /boot via packages 87# Automatically add IMAGE_BOOT_FILES to /boot via packages
83MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.bin', ' ${PREFERRED_PROVIDER_virtual/boot-bin}', '', d)}" 88MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.bin', ' ${PREFERRED_PROVIDER_virtual/boot-bin}', '', d)}"
84MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'system.dtb', ' ${PREFERRED_PROVIDER_virtual/dtb}', '', d)}" 89MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'system.dtb', ' ${PREFERRED_PROVIDER_virtual/dtb}', '', d)}"
85MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.scr', ' u-boot-xlnx-scr', '', d)}" 90MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.scr', ' u-boot-xlnx-scr', '', d)}"
86MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}" 91MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}"
87MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'atf-uboot.ub', ' arm-trusted-firmware', '', d)}" 92MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'atf-uboot.ub', ' arm-trusted-firmware', '', d)}"
88MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'u-boot.bin', ' ${PREFERRED_PROVIDER_virtual/bootloader}-bin', '', d)}" 93MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'u-boot.bin', ' ${PREFERRED_PROVIDER_virtual/bootloader}-bin', '', d)}"
89MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'u-boot.elf', ' ${PREFERRED_PROVIDER_virtual/bootloader}-elf', '', d)}" 94MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'u-boot.elf', ' ${PREFERRED_PROVIDER_virtual/bootloader}-elf', '', d)}"
90MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'Image', ' kernel-image-image', '', d)}" 95MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'Image', ' kernel-image-image', '', d)}"
91MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'uImage', ' kernel-image-uimage', '', d)}" 96MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uImage', ' kernel-image-uimage', '', d)}"
92MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'zImage', ' kernel-image-zimage', '', d)}" 97MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'zImage', ' kernel-image-zimage', '', d)}"
93MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', '${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot', ' initramdisk-${INITRAMFS_IMAGE}', '', d)}" 98MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', '${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot', ' initramdisk-${INITRAMFS_IMAGE}', '', d)}"
94 99
95# Default SD card wks file, split /boot and / 100# Default SD card wks file, split /boot and /
96WKS_FILES ?= "xilinx-default-sd.wks" 101WKS_FILES ?= "xilinx-default-sd.wks"
@@ -128,3 +133,6 @@ def get_default_image_boot_files(d):
128XSERVER_EXT ?= "" 133XSERVER_EXT ?= ""
129 134
130FPGA_MNGR_RECONFIG_ENABLE ?= "1" 135FPGA_MNGR_RECONFIG_ENABLE ?= "1"
136
137# This variable is supported only with SysVinit.
138SERIAL_CONSOLES_CHECK = "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '${SERIAL_CONSOLES}', '', d)}"
diff --git a/meta-xilinx-core/conf/machine/microblaze-generic.conf b/meta-xilinx-core/conf/machine/microblaze-generic.conf
index 9916a4ca..5bf87344 100644
--- a/meta-xilinx-core/conf/machine/microblaze-generic.conf
+++ b/meta-xilinx-core/conf/machine/microblaze-generic.conf
@@ -2,23 +2,36 @@
2#@NAME: microblaze-generic 2#@NAME: microblaze-generic
3#@DESCRIPTION: Machine configuration for the microblaze-generic devices 3#@DESCRIPTION: Machine configuration for the microblaze-generic devices
4 4
5# Deprecated board config
6USE_BOARD = "${@"conf/machine/include/xilinx-board-pre.inc" if d.getVar("BOARD") or d.getVar("BOARD_VARIANT") else ""}"
7require ${USE_BOARD}
8unset USE_BOARD
9
5#### Preamble 10#### Preamble
6MACHINEOVERRIDES =. "${@['', 'microblaze-generic:']['microblaze-generic' != '${MACHINE}']}" 11MACHINEOVERRIDES =. "${@['', 'microblaze-generic:']['microblaze-generic' != '${MACHINE}']}"
7#### Regular settings follow 12#### Regular settings follow
8 13
9# Set the default for a modern full feature microblaze... 14# Set the default for a modern full feature microblaze...
10TUNE_FEATURES:tune-microblaze ?= "microblaze v11.0 barrel-shift pattern-compare reorder divide-hard multiply-high" 15TUNE_FEATURES:tune-microblaze ?= "microblaze v11.0 pattern-compare barrel-shift divide-hard multiply-high fpu-hard reorder"
11DEFAULTTUNE ?= "microblaze" 16DEFAULTTUNE ?= "microblaze"
12 17
13# Variables that changes based on hw design or board specific requirement must be 18# Variables that changes based on hw design or board specific requirement must be
14# defined before calling the required inclusion file else pre-expansion value 19# defined before calling the required inclusion file else pre-expansion value
15# defined in local.conf without machine override will not be reflected. 20# defined in local.conf without machine override will not be reflected.
16 21
22# Yocto Microblaze device-tree variables
23YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "axi_uartlite_0"
24YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "DDR4_0"
25DT_PADDING_SIZE:pn-device-tree ?= "0x1000"
26DTC_FLAGS:pn-device-tree ?= ""
27XSCTH_PROC:pn-device-tree ?= "microblaze_0"
28YAML_DT_BOARD_FLAGS ?= "{BOARD kcu105}"
29
17# Yocto Microblaze FS-Boot variables 30# Yocto Microblaze FS-Boot variables
18YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot ?= "axi_uartlite_0" 31YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot ?= "axi_uartlite_0"
19YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot ?= "axi_uartlite_0" 32YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot ?= "axi_uartlite_0"
20YAML_MAIN_MEMORY_CONFIG:pn-fs-boot ?= "MIG_7SERIES_0" 33YAML_MAIN_MEMORY_CONFIG:pn-fs-boot ?= "DDR4_0"
21YAML_FLASH_MEMORY_CONFIG:pn-fs-boot ?= "axi_emc_0" 34YAML_FLASH_MEMORY_CONFIG:pn-fs-boot ?= "axi_quad_spi_0"
22XSCTH_PROC:pn-fs-boot ?= "microblaze_0" 35XSCTH_PROC:pn-fs-boot ?= "microblaze_0"
23 36
24# Yocto Microblaze u-boot-xlnx variables 37# Yocto Microblaze u-boot-xlnx variables
@@ -26,14 +39,6 @@ UBOOT_MACHINE ?= "microblaze-generic_defconfig"
26UBOOT_INITIAL_ENV = "" 39UBOOT_INITIAL_ENV = ""
27BOOTMODE ?= "generic.root" 40BOOTMODE ?= "generic.root"
28 41
29# Yocto device-tree variables
30YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "axi_uartlite_0"
31YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "MIG_7SERIES_0"
32DT_PADDING_SIZE:pn-device-tree ?= "0x1000"
33DTC_FLAGS:pn-device-tree ?= ""
34XSCTH_PROC:pn-device-tree ?= "microblaze_0"
35YAML_DT_BOARD_FLAGS ?= "{BOARD kc705-full}"
36
37# Yocto Microblaze KERNEL Variables 42# Yocto Microblaze KERNEL Variables
38UBOOT_ENTRYPOINT ?= "0x80000000" 43UBOOT_ENTRYPOINT ?= "0x80000000"
39UBOOT_LOADADDRESS ?= "0x80000000" 44UBOOT_LOADADDRESS ?= "0x80000000"
@@ -41,7 +46,6 @@ KERNEL_EXTRA_ARGS += "UIMAGE_LOADADDR=${UBOOT_ENTRYPOINT}"
41 46
42# Microblaze Serial Console settings 47# Microblaze Serial Console settings
43SERIAL_CONSOLES ?= "115200;ttyUL0" 48SERIAL_CONSOLES ?= "115200;ttyUL0"
44SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
45YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" 49YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200"
46 50
47require conf/machine/include/soc-tune-include.inc 51require conf/machine/include/soc-tune-include.inc
@@ -56,21 +60,21 @@ MB_MACHINE_ARCH = "${@[d.getVar('TUNE_PKGARCH'), d.getVar('TUNE_PKGARCH') + '-ge
56 60
57MACHINE_ARCH = "${@['${MB_MACHINE_ARCH}', '${DEF_MACHINE_ARCH}']['microblaze-generic' != "${MACHINE}"]}" 61MACHINE_ARCH = "${@['${MB_MACHINE_ARCH}', '${DEF_MACHINE_ARCH}']['microblaze-generic' != "${MACHINE}"]}"
58 62
59# microblaze-generic.conf uses kc705-microblazeel xsa as reference input. 63# microblaze-generic.conf uses kcu105-microblazeel xsa as reference input.
60# User can override with custom xsa using HDF_BASE and HDF_PATH variables from 64# User can override with custom xsa using HDF_BASE and HDF_PATH variables from
61# local.conf. 65# local.conf.
62HDF_MACHINE = "kc705-microblazeel" 66HDF_MACHINE = "kcu105-microblazeel"
63 67
64MACHINE_FEATURES = "" 68MACHINE_FEATURES = ""
65 69
66KERNEL_IMAGETYPE ?= "linux.bin.ub" 70KERNEL_IMAGETYPE ?= "linux.bin.ub"
67KERNEL_IMAGETYPES = "" 71KERNEL_IMAGETYPES = ""
68 72
69MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree" 73MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "${PREFERRED_PROVIDER_virtual/dtb}"
70 74
71IMAGE_BOOT_FILES += " \ 75IMAGE_BOOT_FILES += " \
72 ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/dtb', 'device-tree', 'system.dtb', '', d)} \ 76 ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/dtb', 'device-tree', 'system.dtb', '', d)} \
73 " 77 "
74 78
75EXTRA_IMAGEDEPENDS += " \ 79EXTRA_IMAGEDEPENDS += " \
76 libyaml-native \ 80 libyaml-native \
@@ -93,3 +97,8 @@ QB_NETWORK_DEVICE = "-net nic,netdev=net0,macaddr=@MAC@"
93#### No additional settings should be after the Postamble 97#### No additional settings should be after the Postamble
94#### Postamble 98#### Postamble
95PACKAGE_EXTRA_ARCHS:append = "${@['', ' ${MB_MACHINE_ARCH}']['microblaze-generic' != "${MACHINE}"]}" 99PACKAGE_EXTRA_ARCHS:append = "${@['', ' ${MB_MACHINE_ARCH}']['microblaze-generic' != "${MACHINE}"]}"
100
101# Deprecated board config
102USE_BOARD = "${@"conf/machine/include/xilinx-board-post.inc" if d.getVar("BOARD") or d.getVar("BOARD_VARIANT") else ""}"
103require ${USE_BOARD}
104unset USE_BOARD
diff --git a/meta-xilinx-core/conf/machine/versal-generic.conf b/meta-xilinx-core/conf/machine/versal-generic.conf
index e44e99f2..f87dc140 100644
--- a/meta-xilinx-core/conf/machine/versal-generic.conf
+++ b/meta-xilinx-core/conf/machine/versal-generic.conf
@@ -33,7 +33,6 @@ UBOOT_LOADADDRESS ?= "0x200000"
33 33
34# Versal Serial Console 34# Versal Serial Console
35SERIAL_CONSOLES ?= "115200;ttyAMA0" 35SERIAL_CONSOLES ?= "115200;ttyAMA0"
36SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
37YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" 36YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200"
38 37
39require conf/machine/include/soc-versal.inc 38require conf/machine/include/soc-versal.inc
@@ -47,7 +46,7 @@ HDF_MACHINE = "vck190-versal"
47 46
48MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost" 47MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost"
49 48
50MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree" 49MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "${PREFERRED_PROVIDER_virtual/dtb}"
51 50
52# Default SD image build onfiguration, use qemu-sd to pad 51# Default SD image build onfiguration, use qemu-sd to pad
53IMAGE_CLASSES += "image-types-xilinx-qemu" 52IMAGE_CLASSES += "image-types-xilinx-qemu"
diff --git a/meta-xilinx-core/conf/machine/versal-net-generic.conf b/meta-xilinx-core/conf/machine/versal-net-generic.conf
index 4b368e83..e1f222e2 100644
--- a/meta-xilinx-core/conf/machine/versal-net-generic.conf
+++ b/meta-xilinx-core/conf/machine/versal-net-generic.conf
@@ -1,3 +1,5 @@
1XILINX_DEPRECATED[versal-net] = "Versal-net is not supported in 2023.2"
2
1#@TYPE: Machine 3#@TYPE: Machine
2#@NAME: versal-net-generic 4#@NAME: versal-net-generic
3#@DESCRIPTION: Machine configuration for the versal-net-generic devices 5#@DESCRIPTION: Machine configuration for the versal-net-generic devices
diff --git a/meta-xilinx-core/conf/machine/zynq-generic.conf b/meta-xilinx-core/conf/machine/zynq-generic.conf
index df82a683..e97be2ff 100644
--- a/meta-xilinx-core/conf/machine/zynq-generic.conf
+++ b/meta-xilinx-core/conf/machine/zynq-generic.conf
@@ -32,7 +32,6 @@ KERNEL_EXTRA_ARGS += "UIMAGE_LOADADDR=${UBOOT_ENTRYPOINT}"
32 32
33# Zynq-7000 Serial Console settings 33# Zynq-7000 Serial Console settings
34SERIAL_CONSOLES ?= "115200;ttyPS0" 34SERIAL_CONSOLES ?= "115200;ttyPS0"
35SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
36YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" 35YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200"
37 36
38require conf/machine/include/soc-zynq.inc 37require conf/machine/include/soc-zynq.inc
@@ -46,7 +45,7 @@ HDF_MACHINE = "zc702-zynq7"
46 45
47MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost usbgadget" 46MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost usbgadget"
48 47
49MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree" 48MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "${PREFERRED_PROVIDER_virtual/dtb}"
50 49
51EXTRA_IMAGEDEPENDS += " \ 50EXTRA_IMAGEDEPENDS += " \
52 libyaml-native \ 51 libyaml-native \
diff --git a/meta-xilinx-core/conf/machine/zynqmp-generic.conf b/meta-xilinx-core/conf/machine/zynqmp-generic.conf
index d24da3b4..b60014df 100644
--- a/meta-xilinx-core/conf/machine/zynqmp-generic.conf
+++ b/meta-xilinx-core/conf/machine/zynqmp-generic.conf
@@ -44,7 +44,6 @@ UBOOT_LOADADDRESS ?= "0x200000"
44 44
45# ZynqMP Serial Console 45# ZynqMP Serial Console
46SERIAL_CONSOLES ?= "115200;ttyPS0" 46SERIAL_CONSOLES ?= "115200;ttyPS0"
47SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
48YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" 47YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200"
49 48
50require conf/machine/include/soc-zynqmp.inc 49require conf/machine/include/soc-zynqmp.inc
@@ -65,7 +64,7 @@ IMAGE_CLASSES += "image-types-xilinx-qemu"
65# Add wic.qemu-sd only if initramfs_image not set due to circular dependecies 64# Add wic.qemu-sd only if initramfs_image not set due to circular dependecies
66IMAGE_FSTYPES += "${@'wic.qemu-sd' if (d.getVar('INITRAMFS_IMAGE') or '') == '' else 'cpio.gz.u-boot'}" 65IMAGE_FSTYPES += "${@'wic.qemu-sd' if (d.getVar('INITRAMFS_IMAGE') or '') == '' else 'cpio.gz.u-boot'}"
67 66
68MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree" 67MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "${PREFERRED_PROVIDER_virtual/dtb}"
69 68
70EXTRA_IMAGEDEPENDS += " \ 69EXTRA_IMAGEDEPENDS += " \
71 libyaml-native \ 70 libyaml-native \
@@ -150,8 +149,6 @@ QB_PMU_OPT = " \
150 149
151QB_OPT_APPEND += " -pmu-args '${QB_PMU_OPT}'" 150QB_OPT_APPEND += " -pmu-args '${QB_PMU_OPT}'"
152 151
153do_write_qemuboot_conf[depends] += "u-boot-xlnx-uenv:do_deploy"
154
155#### No additional settings should be after the Postamble 152#### No additional settings should be after the Postamble
156#### Postamble 153#### Postamble
157PACKAGE_EXTRA_ARCHS:append = "${@['', ' zynqmp_generic']['zynqmp-generic' != "${MACHINE}"]}" 154PACKAGE_EXTRA_ARCHS:append = "${@['', ' zynqmp_generic']['zynqmp-generic' != "${MACHINE}"]}"
diff --git a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/device-tree.bbappend b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/device-tree.bbappend
index 4fd8b971..7dcee565 100644
--- a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/device-tree.bbappend
+++ b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/device-tree.bbappend
@@ -1,12 +1,5 @@
1FILESEXTRAPATHS:prepend := "${THISDIR}/files:" 1FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
2 2
3SRC_URI = " \
4 file://zynq-openamp.dtsi \
5 file://zynqmp-openamp.dtsi \
6 file://versal-openamp.dtsi \
7 file://versal-net-openamp.dtsi \
8"
9
10# openamp.dtsi is in the WORKDIR 3# openamp.dtsi is in the WORKDIR
11DT_INCLUDE:append = " ${WORKDIR}" 4DT_INCLUDE:append = " ${WORKDIR}"
12 5
@@ -21,7 +14,7 @@ def set_openamp_extra_overlays(d):
21 distro_features = d.getVar('DISTRO_FEATURES', True) 14 distro_features = d.getVar('DISTRO_FEATURES', True)
22 enable_openamp_dtsi = d.getVar('ENABLE_OPENAMP_DTSI') 15 enable_openamp_dtsi = d.getVar('ENABLE_OPENAMP_DTSI')
23 if 'openamp' in distro_features and enable_openamp_dtsi == '1': 16 if 'openamp' in distro_features and enable_openamp_dtsi == '1':
24 return d.getVar('OPENAMP_EXTRA_OVERLAYS', True) 17 return ' ${OPENAMP_EXTRA_OVERLAYS}'
25 else: 18 else:
26 return '' 19 return ''
27 20
diff --git a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/open-amp-device-tree.bb b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/open-amp-device-tree.bb
index 8f77bd54..9f481fec 100644
--- a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/open-amp-device-tree.bb
+++ b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/open-amp-device-tree.bb
@@ -11,6 +11,8 @@ SRC_URI = " \
11 file://zynqmp-openamp-overlay.dts \ 11 file://zynqmp-openamp-overlay.dts \
12 file://versal-openamp.dtsi \ 12 file://versal-openamp.dtsi \
13 file://versal-openamp-overlay.dts \ 13 file://versal-openamp-overlay.dts \
14 file://versal-net-openamp.dtsi \
15 file://versal-net-openamp-overlay.dts \
14" 16"
15 17
16# We don't have anything to include from the kernel 18# We don't have anything to include from the kernel
@@ -19,6 +21,7 @@ KERNEL_INCLUDE = ""
19COMPATIBLE_MACHINE:zynq = "${MACHINE}" 21COMPATIBLE_MACHINE:zynq = "${MACHINE}"
20COMPATIBLE_MACHINE:zynqmp = "${MACHINE}" 22COMPATIBLE_MACHINE:zynqmp = "${MACHINE}"
21COMPATIBLE_MACHINE:versal = "${MACHINE}" 23COMPATIBLE_MACHINE:versal = "${MACHINE}"
24COMPATIBLE_MACHINE:versal-net = "${MACHINE}"
22 25
23inherit devicetree image-artifact-names features_check 26inherit devicetree image-artifact-names features_check
24 27
diff --git a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/libmetal/libmetal-xlnx_v2023.2.bb b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/libmetal/libmetal-xlnx_v2023.2.bb
new file mode 100644
index 00000000..5618ae88
--- /dev/null
+++ b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/libmetal/libmetal-xlnx_v2023.2.bb
@@ -0,0 +1,15 @@
1SRCBRANCH ?= "2023.2"
2SRCREV = "00fd771adc7adaed664ed6c5bc3d48d25856fe5c"
3BRANCH = "xlnx_rel_v2023.2"
4LIC_FILES_CHKSUM ?= "file://LICENSE.md;md5=f4d5df0f12dcea1b1a0124219c0dbab4"
5PV = "${SRCBRANCH}+git${SRCPV}"
6
7REPO = "git://github.com/Xilinx/libmetal.git;protocol=https"
8
9include ${LAYER_PATH_openamp-layer}/recipes-openamp/libmetal/libmetal.inc
10
11RPROVIDES:${PN}-dbg += "libmetal-dbg"
12RPROVIDES:${PN}-dev += "libmetal-dev"
13RPROVIDES:${PN}-lic += "libmetal-lic"
14RPROVIDES:${PN}-src += "libmetal-src"
15RPROVIDES:${PN}-staticdev += "libmetal-staticdev"
diff --git a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/open-amp/open-amp-xlnx_v2023.2.bb b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/open-amp/open-amp-xlnx_v2023.2.bb
new file mode 100644
index 00000000..8c6b4431
--- /dev/null
+++ b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/open-amp/open-amp-xlnx_v2023.2.bb
@@ -0,0 +1,16 @@
1SRCBRANCH ?= "2023.2"
2SRCREV = "73a546f2b5faffe71680b1e5389f3328be60773f"
3BRANCH = "xlnx_rel_v2023.2"
4LIC_FILES_CHKSUM ?= "file://LICENSE.md;md5=ab88daf995c0bd0071c2e1e55f3d3505"
5PV = "${SRCBRANCH}+git${SRCPV}"
6REPO = "git://github.com/Xilinx/open-amp.git;protocol=https"
7
8include ${LAYER_PATH_openamp-layer}/recipes-openamp/open-amp/open-amp.inc
9require ${LAYER_PATH_openamp-layer}/vendor/xilinx/recipes-openamp/open-amp/open-amp-xlnx.inc
10
11RPROVIDES:${PN}-dbg += "open-amp-dbg"
12RPROVIDES:${PN}-dev += "open-amp-dev"
13RPROVIDES:${PN}-lic += "open-amp-lic"
14RPROVIDES:${PN}-src += "open-amp-src"
15RPROVIDES:${PN}-staticdev += "open-amp-staticdev"
16
diff --git a/meta-xilinx-core/dynamic-layers/virtualization-layer/recipes-kernel/lopper/lopper_git.bbappend b/meta-xilinx-core/dynamic-layers/virtualization-layer/recipes-kernel/lopper/lopper_git.bbappend
index 0440b1bc..56cb8a45 100644
--- a/meta-xilinx-core/dynamic-layers/virtualization-layer/recipes-kernel/lopper/lopper_git.bbappend
+++ b/meta-xilinx-core/dynamic-layers/virtualization-layer/recipes-kernel/lopper/lopper_git.bbappend
@@ -1,5 +1,5 @@
1SRC_URI = "git://github.com/devicetree-org/lopper.git;branch=master;protocol=https" 1SRC_URI = "git://github.com/devicetree-org/lopper.git;branch=master;protocol=https"
2SRCREV = "395f00d44ee259d5db6fd6165c6cd18c8fe40e2f" 2SRCREV = "807435ae6fa0a07e8c84b458d138f3f54614eb5c"
3 3
4FILESEXTRAPATHS:prepend := "${THISDIR}/lopper:" 4FILESEXTRAPATHS:prepend := "${THISDIR}/lopper:"
5 5
diff --git a/meta-xilinx-core/gen-machine-conf b/meta-xilinx-core/gen-machine-conf
Subproject a08b0e9e88b4c70336b12d57d4704343474d608 Subproject 911941fc094dc0073c2f01a2b94de3cc6e993fe
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.2.bb b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb
index 810b51fd..f86c5985 100644
--- a/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.2.bb
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb
@@ -12,7 +12,7 @@ I = "${AIEDIR}/include"
12COMPATIBLE_MACHINE = "^$" 12COMPATIBLE_MACHINE = "^$"
13COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core" 13COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core"
14COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}" 14COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}"
15PV = "3.2" 15PV = "3.3"
16 16
17IOBACKENDS ?= "Linux" 17IOBACKENDS ?= "Linux"
18 18
@@ -25,7 +25,7 @@ RPROVIDES:${PN} = "libxaiengine"
25# The makefile isn't ready for parallel execution at the moment 25# The makefile isn't ready for parallel execution at the moment
26PARALLEL_MAKE = "-j 1" 26PARALLEL_MAKE = "-j 1"
27 27
28CFLAGS += "-Wall -Wextra -fno-thread-jumps -fno-tree-pre" 28CFLAGS += "-Wall -Wextra"
29CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'Linux', ' -D__AIELINUX__', '', d)}" 29CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'Linux', ' -D__AIELINUX__', '', d)}"
30CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'metal', ' -D__AIEMETAL__', '', d)}" 30CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'metal', ' -D__AIEMETAL__', '', d)}"
31EXTRA_OEMAKE = "-C ${AIEDIR}/src -f Makefile.Linux CFLAGS='${CFLAGS}'" 31EXTRA_OEMAKE = "-C ${AIEDIR}/src -f Makefile.Linux CFLAGS='${CFLAGS}'"
@@ -45,3 +45,5 @@ do_install(){
45} 45}
46 46
47PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}" 47PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}"
48PACKAGE_ARCH:versal-ai-edge = "${SOC_VARIANT_ARCH}"
49
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/aie-rt.inc b/meta-xilinx-core/recipes-bsp/ai-engine/aie-rt.inc
index 5eeb69d4..11059465 100644
--- a/meta-xilinx-core/recipes-bsp/ai-engine/aie-rt.inc
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/aie-rt.inc
@@ -2,10 +2,10 @@ SECTION = "libs"
2 2
3REPO ?= "git://github.com/Xilinx/aie-rt.git;protocol=https" 3REPO ?= "git://github.com/Xilinx/aie-rt.git;protocol=https"
4 4
5BRANCH ?= "xlnx_rel_v2023.1" 5BRANCH ?= "xlnx_rel_v2023.2"
6SRCREV ?= "1ad203de0b7f282b1c0659fd2ae3f218652c7274" 6SRCREV ?= "84debe5d22c144fb09269b8410df4cb8a6aa3b2a"
7 7
8LICENSE = "BSD-3-Clause" 8LICENSE = "BSD-3-Clause"
9LIC_FILES_CHKSUM ?= "file://license.txt;md5=b81abf1f508952331dd7d2ab36408f5b" 9LIC_FILES_CHKSUM ?= "file://license.txt;md5=04a153cae61a8a606fc79dff49c2c897"
10 10
11SRC_URI = "${REPO};branch=${BRANCH}" 11SRC_URI = "${REPO};branch=${BRANCH}"
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.0.bb b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb
index 7bb4b849..2c6c9cd1 100644
--- a/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.0.bb
+++ b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb
@@ -31,3 +31,5 @@ FILES:${PN}-demos = " \
31" 31"
32 32
33PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}" 33PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}"
34PACKAGE_ARCH:versal-ai-edge = "${SOC_VARIANT_ARCH}"
35
diff --git a/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2023.2.bb b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2023.2.bb
new file mode 100644
index 00000000..6ebd6cb5
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2023.2.bb
@@ -0,0 +1,8 @@
1ATF_VERSION = "2.8"
2SRCREV = "6be857cb66300fb21e3f61308e4197911c8ac30d"
3BRANCH = "xlnx_rebase_v2.8"
4LIC_FILES_CHKSUM = "file://license.rst;md5=1dd070c98a281d18d9eefd938729b031"
5
6
7include arm-trusted-firmware.inc
8
diff --git a/meta-xilinx-core/recipes-bsp/bitstream/bitstream.bb b/meta-xilinx-core/recipes-bsp/bitstream/bitstream.bb
new file mode 100644
index 00000000..f61761f4
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/bitstream/bitstream.bb
@@ -0,0 +1,59 @@
1DESCRIPTION = "Recipe to provide a bitstream via virtual/bitstream"
2
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
5
6INHIBIT_DEFAULT_DEPS = "1"
7
8# We never want to prefer this over another provider
9DEFAULT_PREFERENCE = "-1"
10
11PROVIDES = "virtual/bitstream"
12
13COMPATIBLE_MACHINE = "$^"
14COMPATIBLE_MACHINE:zynq = ".*"
15COMPATIBLE_MACHINE:zynqmp = ".*"
16
17# Since we're just copying, we can run any config
18COMPATIBLE_HOST = ".*"
19
20PACKAGE_ARCH = "${MACHINE_ARCH}"
21
22# Path where the bitstream can be found
23BITSTREAM_PATH ?= ""
24
25inherit deploy
26
27do_install() {
28 if [ ! -e ${BITSTREAM_PATH} ]; then
29 echo "Unable to find BITSTREAM_PATH (${BITSTREAM_PATH})"
30 exit 1
31 fi
32
33 install -Dm 0644 ${BITSTREAM_PATH} ${D}/boot/.
34}
35
36# If the item is already in OUR deploy_image_dir, nothing to deploy!
37SHOULD_DEPLOY = "${@'false' if (d.getVar('BITSTREAM_PATH')).startswith(d.getVar('DEPLOY_DIR_IMAGE')) else 'true'}"
38do_deploy() {
39 # If the item is already in OUR deploy_image_dir, nothing to deploy!
40 if ${SHOULD_DEPLOY}; then
41 install -Dm 0644 ${BITSTREAM_PATH} ${DEPLOYDIR}/.
42 fi
43}
44
45def check_bitstream_vars(d):
46 # If BITSTREAM_PATH is not defined, we error and instruct the user
47 # Don't cache this, as the items on disk can change!
48 d.setVar('BB_DONT_CACHE', '1')
49 if d.getVar('BITSTREAM_PATH') and not os.path.exists(d.getVar('BITSTREAM_PATH')):
50 raise bb.parse.SkipRecipe("The expected bitstream file %s is not available.\nSee the meta-xilinx-core README.")
51
52 if not d.getVar('BITSTREAM_PATH'):
53 raise bb.parse.SkipRecipe("Something is depending on virtual/bitstream and you have not provided a bitstream using BITSTREAM_PATH variable.\n See the meta-xilinx-core README.")
54
55python() {
56 # Need to allow bbappends to change the check
57 check_bitstream_vars(d)
58}
59
diff --git a/meta-xilinx-core/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb b/meta-xilinx-core/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb
index 5133fbd8..4c8bfa0e 100644
--- a/meta-xilinx-core/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb
+++ b/meta-xilinx-core/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb
@@ -44,6 +44,10 @@ BOOTGEN_EXTRA_ARGS ?= ""
44do_patch[noexec] = "1" 44do_patch[noexec] = "1"
45 45
46def create_bif(config, attrflags, attrimage, ids, common_attr, biffd, d): 46def create_bif(config, attrflags, attrimage, ids, common_attr, biffd, d):
47 arch = d.getVar("SOC_FAMILY")
48 bb.error("create_bif function not defined for arch: %s" % (arch))
49
50def create_zynq_bif(config, attrflags, attrimage, ids, common_attr, biffd, d):
47 import re, os 51 import re, os
48 for cfg in config: 52 for cfg in config:
49 if cfg not in attrflags and common_attr: 53 if cfg not in attrflags and common_attr:
@@ -117,23 +121,32 @@ def create_versal_bif(config, attrflags, attrimage, ids, common_attr, biffd, d):
117python do_configure() { 121python do_configure() {
118 fp = d.getVar("BIF_FILE_PATH") 122 fp = d.getVar("BIF_FILE_PATH")
119 if fp == (d.getVar('B') + '/bootgen.bif'): 123 if fp == (d.getVar('B') + '/bootgen.bif'):
120 arch = d.getVar("SOC_FAMILY")
121 biffunc = {'versal':create_versal_bif, 'zynq':create_bif, 'zynqmp':create_bif}
122 biffd = open(fp, 'w') 124 biffd = open(fp, 'w')
123 biffd.write("the_ROM_image:\n") 125 biffd.write("the_ROM_image:\n")
124 biffd.write("{\n") 126 biffd.write("{\n")
125 127
128 arch = d.getVar("SOC_FAMILY")
126 bifattr = (d.getVar("BIF_COMMON_ATTR") or "").split() 129 bifattr = (d.getVar("BIF_COMMON_ATTR") or "").split()
127 if bifattr: 130 if bifattr:
128 attrflags = d.getVarFlags("BIF_COMMON_ATTR") or {} 131 attrflags = d.getVarFlags("BIF_COMMON_ATTR") or {}
129 biffunc[arch](bifattr, attrflags,'','', 1, biffd, d) 132 if arch in ['zynq', 'zynqmp']:
133 create_zynq_bif(bifattr, attrflags,'','', 1, biffd, d)
134 elif arch in ['versal']:
135 create_versal_bif(bifattr, attrflags,'','', 1, biffd, d)
136 else:
137 create_bif(bifattr, attrflags,'','', 1, biffd, d)
130 138
131 bifpartition = (d.getVar("BIF_PARTITION_ATTR") or "").split() 139 bifpartition = (d.getVar("BIF_PARTITION_ATTR") or "").split()
132 if bifpartition: 140 if bifpartition:
133 attrflags = d.getVarFlags("BIF_PARTITION_ATTR") or {} 141 attrflags = d.getVarFlags("BIF_PARTITION_ATTR") or {}
134 attrimage = d.getVarFlags("BIF_PARTITION_IMAGE") or {} 142 attrimage = d.getVarFlags("BIF_PARTITION_IMAGE") or {}
135 ids = d.getVarFlags("BIF_PARTITION_ID") or {} 143 ids = d.getVarFlags("BIF_PARTITION_ID") or {}
136 biffunc[arch](bifpartition, attrflags, attrimage, ids, 0, biffd, d) 144 if arch in ['zynq', 'zynqmp']:
145 create_zynq_bif(bifpartition, attrflags, attrimage, ids, 0, biffd, d)
146 elif arch in ['versal']:
147 create_versal_bif(bifpartition, attrflags, attrimage, ids, 0, biffd, d)
148 else:
149 create_bif(bifpartition, attrflags, attrimage, ids, 0, biffd, d)
137 150
138 biffd.write("}") 151 biffd.write("}")
139 biffd.close() 152 biffd.close()
diff --git a/meta-xilinx-core/recipes-bsp/bootgen/bootgen_2023.2.bb b/meta-xilinx-core/recipes-bsp/bootgen/bootgen_2023.2.bb
new file mode 100644
index 00000000..03f323e1
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/bootgen/bootgen_2023.2.bb
@@ -0,0 +1,31 @@
1SUMMARY = "Building and installing bootgen"
2DESCRIPTION = "Building and installing bootgen, a Xilinx tool that lets you stitch binary files together and generate device boot images"
3
4LICENSE = "Apache-2.0"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=d526b6d0807bf263b97da1da876f39b1"
6
7S = "${WORKDIR}/git"
8
9DEPENDS += "openssl"
10RDEPENDS:${PN} += "openssl"
11
12REPO ?= "git://github.com/Xilinx/bootgen.git;protocol=https"
13BRANCH = "xlnx_rel_v2023.2"
14SRCREV = "8e6702bb5064b806e45028486de7376962470a36"
15
16BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
17SRC_URI = "${REPO};${BRANCHARG}"
18
19EXTRA_OEMAKE += 'CROSS_COMPILER="${CXX}" -C ${S}'
20CXXFLAGS:append = " -std=c++0x"
21
22TARGET_CC_ARCH += "${LDFLAGS}"
23
24do_install() {
25 install -d ${D}${bindir}
26 install -Dm 0755 ${S}/bootgen ${D}${bindir}
27}
28
29FILES:${PN} = "${bindir}/bootgen"
30
31BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb b/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb
index 91a13fa1..8d7211f5 100644
--- a/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb
+++ b/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb
@@ -9,6 +9,11 @@ LIC_FILES_CHKSUM = " \
9 file://${COMMON_LICENSE_DIR}/GPL-2.0-or-later;md5=fed54355545ffd980b814dab4a3b312c \ 9 file://${COMMON_LICENSE_DIR}/GPL-2.0-or-later;md5=fed54355545ffd980b814dab4a3b312c \
10 " 10 "
11 11
12# Since we're not based on a kernel default to nothing.
13# This needs to be before the devicetree inherit, as it configured for use
14# with a linux kernel by default.
15KERNEL_INCLUDE ?= ""
16
12inherit devicetree image-artifact-names 17inherit devicetree image-artifact-names
13 18
14# Fall back to SYSTEM_DTFILE if specified... 19# Fall back to SYSTEM_DTFILE if specified...
@@ -17,7 +22,29 @@ inherit devicetree image-artifact-names
17# system. 22# system.
18SYSTEM_DTFILE ??= "" 23SYSTEM_DTFILE ??= ""
19CONFIG_DTFILE ??= "${SYSTEM_DTFILE}" 24CONFIG_DTFILE ??= "${SYSTEM_DTFILE}"
20DT_FILES_PATH = "${@os.path.dirname(d.getVar('CONFIG_DTFILE')) if d.getVar('CONFIG_DTFILE') else d.getVar('S')}" 25
26BASE_DTS ?= "${@os.path.basename(d.getVar('CONFIG_DTFILE') or '').rstrip('.dtb').rstrip('.dts') or 'system-top'}"
27
28EXTRA_DT_FILES ?= ""
29EXTRA_DTFILE_PREFIX ?= "system-top"
30EXTRA_DTFILES_BUNDLE ?= ""
31UBOOT_DT_FILES ?= ""
32UBOOT_DTFILE_PREFIX ?= "system-top"
33UBOOT_DTFILES_BUNDLE ?= ""
34EXTRA_OVERLAYS ?= ""
35
36SYSTEM_DTFILE[doc] = "System Device Tree which accepts at 0...1 dts file"
37CONFIG_DTFILE[doc] = "Domain Specific Device Tree which accepts 0...1 dts file"
38EXTRA_DT_FILES[doc] = "Add extra files to DT_FILES_PATH, it accepts 1...n dtsi files and adds to SRC_URI"
39EXTRA_OVERLAYS[doc] = "Add extra files to DT_FILES_PATH and adds a #include for each to the BASE_DTS, it access 1..n dtsi files and adds to SRC_URI"
40
41# There should only be ONE CONFIG_DTFILE listed
42# These need to be passed in from global, not from a bbappend
43FILESEXTRAPATHS:prepend := "${@'%s:' % os.path.dirname(d.getVar('CONFIG_DTFILE') or '') if (d.getVar('CONFIG_DTFILE')) else ''}"
44SRC_URI:append := " ${@'file://%s' % os.path.basename(d.getVar('CONFIG_DTFILE') or '') if (d.getVar('CONFIG_DTFILE')) else ''}"
45
46SRC_URI:append = " ${@" ".join(["file://%s" % f for f in (d.getVar('EXTRA_DT_FILES') or "").split()])}"
47SRC_URI:append = " ${@" ".join(["file://%s" % f for f in (d.getVar('EXTRA_OVERLAYS') or "").split()])}"
21 48
22COMPATIBLE_MACHINE:zynq = ".*" 49COMPATIBLE_MACHINE:zynq = ".*"
23COMPATIBLE_MACHINE:zynqmp = ".*" 50COMPATIBLE_MACHINE:zynqmp = ".*"
@@ -30,11 +57,71 @@ PROVIDES = "virtual/dtb"
30# common zynq include 57# common zynq include
31SRC_URI:append:zynq = " file://zynq-7000-qspi-dummy.dtsi" 58SRC_URI:append:zynq = " file://zynq-7000-qspi-dummy.dtsi"
32 59
33DTB_FILE_NAME = "${@os.path.basename(d.getVar('CONFIG_DTFILE')).replace('.dts', '.dtb') if d.getVar('CONFIG_DTFILE') else ''}" 60DTB_FILE_NAME ?= "${BASE_DTS}.dtb"
34 61
35DTB_BASE_NAME ?= "${MACHINE}-system${IMAGE_VERSION_SUFFIX}" 62DTB_BASE_NAME ?= "${MACHINE}-system${IMAGE_VERSION_SUFFIX}"
36 63
64# Copy the EXTRA_DT_FILES and EXTRA_OVERLAYS files in prepend operation so that
65# it can be preprocessed.
66do_configure:prepend () {
67 # Create DT_FILES_PATH directory if doesn't exist during prepend operation.
68 if [ ! -d ${DT_FILES_PATH} ]; then
69 mkdir -p ${DT_FILES_PATH}
70 fi
71
72 for f in ${EXTRA_DT_FILES} ${EXTRA_OVERLAYS}; do
73 if [ "$(realpath ${WORKDIR}/${f})" != "$(realpath ${DT_FILES_PATH}/`basename ${f}`)" ]; then
74 cp ${WORKDIR}/${f} ${DT_FILES_PATH}/
75 fi
76 done
77}
78
79do_configure:append () {
80 for f in ${EXTRA_OVERLAYS}; do
81 if [ ! -e ${DT_FILES_PATH}/${BASE_DTS}.dts ]; then
82 if [ -e ${DT_FILES_PATH}/${BASE_DTS}.dtb ]; then
83 bberror "Unable to find ${BASE_DTS}.dts, to use EXTRA_OVERLAYS you must use a 'dts' and not 'dtb' in CONFIG_DTFILE"
84 else
85 bberror "Unable to find ${BASE_DTS}.dts, to use EXTRA_OVERLAYS you must set a valid CONFIG_DTFILE or use system-top.dts"
86 fi
87 exit 1
88 fi
89 echo "/include/ \"$f\"" >> ${DT_FILES_PATH}/${BASE_DTS}.dts
90 done
91}
92
93devicetree_do_compile:append() {
94 import subprocess
95
96 dtb_file = d.getVar('DTB_FILE_NAME') or ''
97 if not dtb_file or not os.path.isfile(dtb_file):
98 bb.error("Expected file ${DTB_FILE_NAME} doesn't exist")
99
100 if d.getVar('EXTRA_DTFILES_BUNDLE'):
101 ccdtb_prefix = d.getVar('EXTRA_DTFILE_PREFIX')
102 extra_dt_files = d.getVar('EXTRA_DT_FILES').split() or []
103
104 for dtsfile in extra_dt_files:
105 dtname = os.path.splitext(os.path.basename(dtsfile))[0]
106 if os.path.isfile(f"{dtname}.dtbo"):
107 fdtargs = ["fdtoverlay", "-o", f"{ccdtb_prefix}-{dtname}.dtb", "-i", dtb_file, f"{dtname}.dtbo"]
108 bb.note("Running {0}".format(" ".join(fdtargs)))
109 subprocess.run(fdtargs, check = True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
110
111 if d.getVar('UBOOT_DTFILES_BUNDLE'):
112 uboot_ccdtb_prefix = d.getVar('UBOOT_DTFILE_PREFIX')
113 uboot_dt_files = d.getVar('UBOOT_DT_FILES').split() or []
114
115 for dtsfile in uboot_dt_files:
116 dtname = os.path.splitext(os.path.basename(dtsfile))[0]
117 if os.path.isfile(f"{dtname}.dtbo"):
118 fdtargs = ["fdtoverlay", "-o", f"{uboot_ccdtb_prefix}-{dtname}.dtb", "-i", dtb_file, f"{dtname}.dtbo"]
119 bb.note("Running {0}".format(" ".join(fdtargs)))
120 subprocess.run(fdtargs, check = True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
121}
122
37FILES:${PN} += "/boot/system.dtb" 123FILES:${PN} += "/boot/system.dtb"
124
38devicetree_do_install:append() { 125devicetree_do_install:append() {
39 if [ -n "${DTB_FILE_NAME}" ]; then 126 if [ -n "${DTB_FILE_NAME}" ]; then
40 # If it's already a dtb, we have to copy from the original location 127 # If it's already a dtb, we have to copy from the original location
@@ -73,14 +160,6 @@ def check_devicetree_variables(d):
73 160
74 if not d.getVar('CONFIG_DTFILE'): 161 if not d.getVar('CONFIG_DTFILE'):
75 raise bb.parse.SkipRecipe("CONFIG_DTFILE or SYSTEM_DTFILE is not defined.") 162 raise bb.parse.SkipRecipe("CONFIG_DTFILE or SYSTEM_DTFILE is not defined.")
76 else:
77 if not os.path.exists(d.getVar('CONFIG_DTFILE')):
78 if not d.getVar('WITHIN_EXT_SDK'):
79 raise bb.parse.SkipRecipe("The device tree %s is not available." % d.getVar('CONFIG_DTFILE'))
80 else:
81 d.appendVar('SRC_URI', ' file://${CONFIG_DTFILE}')
82 d.setVarFlag('do_install', 'file-checksums', '${CONFIG_DTFILE}:True')
83 d.setVarFlag('do_deploy', 'file-checksums', '${CONFIG_DTFILE}:True')
84 163
85python() { 164python() {
86 # Need to allow bbappends to change the check 165 # Need to allow bbappends to change the check
diff --git a/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.2.bb b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.2.bb
new file mode 100644
index 00000000..0d24c9fc
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.2.bb
@@ -0,0 +1,72 @@
1SUMMARY = "Xilinx dfx-mgr libraries"
2DESCRIPTION = "Xilinx Runtime User Space Libraries and Binaries"
3
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=d67bcef754e935bf77b6d7051bd62b5e"
6
7REPO ?= "git://github.com/Xilinx/dfx-mgr.git;protocol=https"
8BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
9SRC_URI = "${REPO};${BRANCHARG}"
10
11BRANCH = "xlnx_rel_v2023.2"
12SRCREV = "4dbd33accb043bd92ecbec2a3507f85a22045c51"
13SOMAJOR = "1"
14SOMINOR = "0"
15SOVERSION = "${SOMAJOR}.${SOMINOR}"
16
17COMPATIBLE_MACHINE = "^$"
18COMPATIBLE_MACHINE:zynqmp = "zynqmp"
19COMPATIBLE_MACHINE:versal = "versal"
20
21S = "${WORKDIR}/git"
22
23inherit cmake update-rc.d systemd
24
25DEPENDS += " libwebsockets inotify-tools libdfx zocl libdrm"
26RDEPENDS:${PN} += " freeipmi"
27EXTRA_OECMAKE += " \
28 -DCMAKE_SYSROOT:PATH=${RECIPE_SYSROOT} \
29 "
30
31INITSCRIPT_NAME = "dfx-mgr.sh"
32INITSCRIPT_PARAMS = "start 99 S ."
33
34SYSTEMD_PACKAGES="${PN}"
35SYSTEMD_SERVICE:${PN}="dfx-mgr.service"
36SYSTEMD_AUTO_ENABLE:${PN}="enable"
37
38
39do_install(){
40 install -d ${D}${bindir}
41 install -d ${D}${libdir}
42 install -d ${D}${includedir}
43 install -d ${D}${base_libdir}/firmware/xilinx
44 install -d ${D}${sysconfdir}/dfx-mgrd
45
46 cp ${B}/example/sys/linux/dfx-mgrd-static ${D}${bindir}/dfx-mgrd
47 cp ${B}/example/sys/linux/dfx-mgr-client-static ${D}${bindir}/dfx-mgr-client
48 chrpath -d ${D}${bindir}/dfx-mgrd
49 chrpath -d ${D}${bindir}/dfx-mgr-client
50 install -m 0644 ${S}/src/dfxmgr_client.h ${D}${includedir}
51
52 oe_soinstall ${B}/src/libdfx-mgr.so.${SOVERSION} ${D}${libdir}
53
54 install -m 0755 ${S}/src/daemon.conf ${D}${sysconfdir}/dfx-mgrd/
55
56 if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
57 install -d ${D}${sysconfdir}/init.d/
58 install -m 0755 ${S}/src/dfx-mgr.sh ${D}${sysconfdir}/init.d/
59 fi
60
61 install -m 0755 ${S}/src/dfx-mgr.sh ${D}${bindir}
62 install -m 0755 ${S}/src/scripts/xlnx-firmware-detect ${D}${bindir}
63
64 install -d ${D}${systemd_system_unitdir}
65 install -m 0644 ${S}/src/dfx-mgr.service ${D}${systemd_system_unitdir}
66}
67
68PACKAGES =+ "libdfx-mgr"
69
70FILES:${PN} += "${base_libdir}/firmware/xilinx"
71FILES:${PN} += "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','${sysconfdir}/init.d/dfx-mgr.sh', '', d)} ${systemd_system_unitdir}"
72FILES:libdfx-mgr = "${libdir}/libdfx-mgr.so.${SOVERSION} ${libdir}/libdfx-mgr.so.${SOMAJOR}"
diff --git a/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.2.bb b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.2.bb
new file mode 100644
index 00000000..b3ccb884
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.2.bb
@@ -0,0 +1,23 @@
1SUMMARY = "Xilinx libdfx library"
2DESCRIPTION = "Xilinx libdfx Library and headers"
3
4LICENSE = "MIT & GPL-2.0-or-later"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=94aba86aec117f003b958a52f019f1a7"
6
7BRANCH ?= "xlnx_rel_v2023.2"
8REPO ?= "git://github.com/Xilinx/libdfx.git;protocol=https"
9BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
10SRC_URI = "${REPO};${BRANCHARG}"
11SRCREV = "52c1d83c72a2b2e85d256411a199ed1baed12ae1"
12
13COMPATIBLE_MACHINE = "^$"
14COMPATIBLE_MACHINE:zynqmp = "zynqmp"
15COMPATIBLE_MACHINE:versal = "versal"
16
17S = "${WORKDIR}/git"
18
19inherit cmake
20
21# Due to an update where the soname/version was defined, we need to use an RREPLACES
22# so updates will work properly.
23RREPLACES:${PN} = "libdfx"
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2023.2.bb b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2023.2.bb
new file mode 100644
index 00000000..43fec635
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2023.2.bb
@@ -0,0 +1,21 @@
1require u-boot-tools-xlnx.inc
2require u-boot-xlnx-2023.2.inc
3
4# MUST clear CONFIG_VIDEO to avoid a compilation failure trying to construct
5# bmp_logo.h
6SED_CONFIG_EFI:append = ' -e "s/CONFIG_VIDEO=.*/# CONFIG_VIDEO is not set/"'
7
8# Default do_compile fails with:
9# | error: object directory ../downloads/git2/github.com.Xilinx.u-boot-xlnx.git/objects does not exist; check .git/objects/info/alternates.
10# The regular workaround of calling 'git diff' seems to be problematic.
11do_compile () {
12 oe_runmake -C ${S} tools-only_defconfig O=${B}
13
14 # Disable CONFIG_CMD_LICENSE, license.h is not used by tools and
15 # generating it requires bin2header tool, which for target build
16 # is built with target tools and thus cannot be executed on host.
17 sed -i -e "s/CONFIG_CMD_LICENSE=.*/# CONFIG_CMD_LICENSE is not set/" ${SED_CONFIG_EFI} ${B}/.config
18
19 oe_runmake -C ${S} cross_tools NO_SDL=1 O=${B}
20}
21
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2023.2.inc b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2023.2.inc
new file mode 100644
index 00000000..0cfbd846
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2023.2.inc
@@ -0,0 +1,17 @@
1UBOOT_VERSION = "v2023.01"
2
3UBRANCH = "xlnx_rebase_v2023.01"
4
5SRCREV = "0fc19cad5a07a09958443e7a5b6f11e420ef195c"
6
7LICENSE = "GPL-2.0-or-later"
8LIC_FILES_CHKSUM = "file://README;beginline=1;endline=4;md5=744e7e3bb0c94b4b9f6b3db3bf893897"
9
10# u-boot-xlnx has support for these
11HAS_PLATFORM_INIT ?= " \
12 xilinx_zynqmp_virt_config \
13 xilinx_zynq_virt_defconfig \
14 xilinx_versal_vc_p_a2197_revA_x_prc_01_revA \
15 "
16
17DEPENDS += "bc-native dtc-native python3-setuptools-native gnutls-native"
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-blob.inc b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-blob.inc
index 86ba4fc6..bbf4125f 100644
--- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-blob.inc
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-blob.inc
@@ -101,7 +101,7 @@ do_blob_generate () {
101 BASE_DTB=$(echo $CC_DTB | cut -d: -f2) 101 BASE_DTB=$(echo $CC_DTB | cut -d: -f2)
102 OUTPUT_DTB=$(echo $CC_DTB | cut -d: -f3) 102 OUTPUT_DTB=$(echo $CC_DTB | cut -d: -f3)
103 if [ "${SYSTEM_DTB_BLOB}" = "1" ]; then 103 if [ "${SYSTEM_DTB_BLOB}" = "1" ]; then
104 BASE_SYS_DTB="${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_NAME}" 104 BASE_SYS_DTB="${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_FILE_NAME}"
105 else 105 else
106 BASE_SYS_DTB="${B}/arch/arm/dts/${BASE_DTB}" 106 BASE_SYS_DTB="${B}/arch/arm/dts/${BASE_DTB}"
107 fi 107 fi
@@ -125,13 +125,13 @@ do_blob_generate () {
125 its_filename="dtblob.its" 125 its_filename="dtblob.its"
126 dtblob_emit_its_section "${its_filename}" "header" 126 dtblob_emit_its_section "${its_filename}" "header"
127 dtblob_emit_its_section "${its_filename}" "imagestart" 127 dtblob_emit_its_section "${its_filename}" "imagestart"
128 for dtb in ${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_NAME} $(find ${DT_BLOB_DIR} -name '*.dtb' | sort); do 128 for dtb in ${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_FILE_NAME} $(find ${DT_BLOB_DIR} -name '*.dtb' | sort); do
129 dtblob_emit_dtb "${its_filename}" "$(basename $dtb .dtb)" "$dtb" 129 dtblob_emit_dtb "${its_filename}" "$(basename $dtb .dtb)" "$dtb"
130 done 130 done
131 dtblob_emit_its_section "${its_filename}" "sectend" 131 dtblob_emit_its_section "${its_filename}" "sectend"
132 dtblob_emit_its_section "${its_filename}" "confstart" 132 dtblob_emit_its_section "${its_filename}" "confstart"
133 dtbcount=1 133 dtbcount=1
134 for dtb in ${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_NAME} $(find ${DT_BLOB_DIR} -name '*.dtb' | sort); do 134 for dtb in ${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_FILE_NAME} $(find ${DT_BLOB_DIR} -name '*.dtb' | sort); do
135 dtblob_emit_config "${its_filename}" "$(basename $dtb .dtb)" "$(basename $dtb .dtb)" "$dtbcount" 135 dtblob_emit_config "${its_filename}" "$(basename $dtb .dtb)" "$(basename $dtb .dtb)" "$dtbcount"
136 dtbcount=`expr $dtbcount + 1` 136 dtbcount=`expr $dtbcount + 1`
137 done 137 done
@@ -143,6 +143,8 @@ do_blob_generate () {
143 bbnote "Node ${DT_BLOB_DIR}/${DTB} with ${DT_BLOB_DIR}/${DUP_DTB}" 143 bbnote "Node ${DT_BLOB_DIR}/${DTB} with ${DT_BLOB_DIR}/${DUP_DTB}"
144 dtblob_emit_config "${its_filename}" "$DTB" "$DUP_DTB" "$dtbcount" 144 dtblob_emit_config "${its_filename}" "$DTB" "$DUP_DTB" "$dtbcount"
145 dtbcount=`expr $dtbcount + 1` 145 dtbcount=`expr $dtbcount + 1`
146 else
147 bberror "CC_DTBS_DUP file not found ${DT_BLOB_DIR}/${DTB}.dtb"
146 fi 148 fi
147 done 149 done
148 150
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr.bb b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr.bb
index afa4de23..6410fc25 100644
--- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr.bb
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr.bb
@@ -71,7 +71,14 @@ DEVICETREE_OFFSET:zynqmp ??= "0x100000"
71DEVICETREE_OFFSET:zynq ??= "0x100000" 71DEVICETREE_OFFSET:zynq ??= "0x100000"
72DEVICETREE_OFFSET:versal ??= "0x1000" 72DEVICETREE_OFFSET:versal ??= "0x1000"
73 73
74DEVICETREE_OVERLAY_ADDRESS ?= "${@hex(int(d.getVar("DEVICETREE_ADDRESS"),16) + 0xf00000)}" 74DEVICETREE_OVERLAY_OFFSET:microblaze ??= "0x1e00000"
75DEVICETREE_OVERLAY_OFFSET:zynqmp ??= "0x100000"
76DEVICETREE_OVERLAY_OFFSET:zynq ??= "0x100000"
77DEVICETREE_OVERLAY_OFFSET:versal ??= "0x1000"
78DEVICETREE_OVERLAY_PADSIZE ??= "0xf00000"
79
80DEVICETREE_OVERLAY_ADDRESS ?= "${@hex(int(append_baseaddr(d,d.getVar('DEVICETREE_OVERLAY_OFFSET')),16) \
81 + int(d.getVar('DEVICETREE_OVERLAY_PADSIZE'),16))}"
75 82
76KERNEL_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('KERNEL_OFFSET'))}" 83KERNEL_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('KERNEL_OFFSET'))}"
77 84
@@ -162,14 +169,8 @@ NAND_FIT_IMAGE_OFFSET ??= "0x4180000"
162NAND_FIT_IMAGE_OFFSET:zynq ??= "0x1080000" 169NAND_FIT_IMAGE_OFFSET:zynq ??= "0x1080000"
163NAND_FIT_IMAGE_SIZE ??= "0x6400000" 170NAND_FIT_IMAGE_SIZE ??= "0x6400000"
164 171
165# Xen boot script variables. Define here and set it from meta-virtualization 172# Add variables as addendum.
166XEN_OFFSET ??= "0xBA00000" 173SCRIPT_SED_ADDENDUM = ""
167XEN_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('XEN_OFFSET'))}"
168XEN_IMAGE_NAME ??= "xen"
169DOM0_MEM ??= "1500M"
170XEN_SERIAL_CONSOLES ??= "serial0"
171XEN_CMDLINE_APPEND ??= ""
172DOM0_MAX_VCPUS ??= "1"
173 174
174# Default to booting with the rootfs device being partition 2 for SD/eMMC 175# Default to booting with the rootfs device being partition 2 for SD/eMMC
175PARTNUM ?= "2" 176PARTNUM ?= "2"
@@ -181,6 +182,9 @@ KERNEL_ROOT_SD ?= "root=/dev/\${bootdev}${PARTNUM} ro rootwait"
181# Set Kernel root filesystem parameter for JTAG/QSPI/OSPI/NAND(using RAMDISK) boot 182# Set Kernel root filesystem parameter for JTAG/QSPI/OSPI/NAND(using RAMDISK) boot
182KERNEL_ROOT_RAMDISK ?= "root=/dev/ram0 rw" 183KERNEL_ROOT_RAMDISK ?= "root=/dev/ram0 rw"
183 184
185# Append the kernel command line
186KERNEL_COMMAND_APPEND ?= ""
187
184BITSTREAM_LOAD_ADDRESS ?= "0x100000" 188BITSTREAM_LOAD_ADDRESS ?= "0x100000"
185 189
186do_configure[noexec] = "1" 190do_configure[noexec] = "1"
@@ -189,6 +193,9 @@ def append_baseaddr(d,offset):
189 skip_append = d.getVar('SKIP_APPEND_BASEADDR') or "" 193 skip_append = d.getVar('SKIP_APPEND_BASEADDR') or ""
190 if skip_append == "1": 194 if skip_append == "1":
191 return offset 195 return offset
196 if offset.startswith('$'):
197 # If offset startswith '$' Assuming as uboot env variable.
198 return offset
192 import subprocess 199 import subprocess
193 baseaddr = d.getVar('DDR_BASEADDR') or "0x0" 200 baseaddr = d.getVar('DDR_BASEADDR') or "0x0"
194 subcmd = "$((%s+%s));" % (baseaddr,offset) 201 subcmd = "$((%s+%s));" % (baseaddr,offset)
@@ -240,13 +247,8 @@ do_compile() {
240 -e 's/@@PARTNUM@@/${PARTNUM}/' \ 247 -e 's/@@PARTNUM@@/${PARTNUM}/' \
241 -e 's:@@KERNEL_ROOT_SD@@:${KERNEL_ROOT_SD}:' \ 248 -e 's:@@KERNEL_ROOT_SD@@:${KERNEL_ROOT_SD}:' \
242 -e 's:@@KERNEL_ROOT_RAMDISK@@:${KERNEL_ROOT_RAMDISK}:' \ 249 -e 's:@@KERNEL_ROOT_RAMDISK@@:${KERNEL_ROOT_RAMDISK}:' \
243 -e 's/@@XEN_IMAGE_NAME@@/${XEN_IMAGE_NAME}/' \ 250 -e 's:@@KERNEL_COMMAND_APPEND@@:${KERNEL_COMMAND_APPEND}:' \
244 -e 's/@@XEN_OFFSET@@/${XEN_OFFSET}/' \ 251 ${SCRIPT_SED_ADDENDUM} \
245 -e 's/@@XEN_LOAD_ADDRESS@@/${XEN_LOAD_ADDRESS}/' \
246 -e 's/@@DOM0_MEM@@/${DOM0_MEM}/' \
247 -e 's/@@DOM0_MAX_VCPUS@@/${DOM0_MAX_VCPUS}/' \
248 -e 's:@@XEN_SERIAL_CONSOLES@@:${XEN_SERIAL_CONSOLES}:' \
249 -e 's:@@XEN_CMDLINE_APPEND@@:${XEN_CMDLINE_APPEND}:' \
250 "${WORKDIR}/boot.cmd.${BOOTMODE}${BOOTFILE_EXT}" > "${WORKDIR}/boot.cmd" 252 "${WORKDIR}/boot.cmd.${BOOTMODE}${BOOTFILE_EXT}" > "${WORKDIR}/boot.cmd"
251 253
252 mkimage -A arm -T script -C none -n "Boot script" -d "${WORKDIR}/boot.cmd" boot.scr 254 mkimage -A arm -T script -C none -n "Boot script" -d "${WORKDIR}/boot.cmd" boot.scr
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic
index ff2a5688..d99932ed 100644
--- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic
@@ -9,10 +9,16 @@ ramdisk_name=@@RAMDISK_IMAGE1@@
9rootfs_name=@@RAMDISK_IMAGE@@ 9rootfs_name=@@RAMDISK_IMAGE@@
10@@PRE_BOOTENV@@ 10@@PRE_BOOTENV@@
11 11
12
13setenv get_bootargs 'fdt addr $fdtcontroladdr;fdt get value bootargs /chosen bootargs;'
14setenv update_bootargs 'if test -n ${launch_ramdisk_init} && test ${bootargs} = "";then if run get_bootargs;then setenv bootargs "\$bootargs launch_ramdisk_init=${launch_ramdisk_init} $extrabootargs";fi;fi'
15
16
12for boot_target in ${boot_targets}; 17for boot_target in ${boot_targets};
13do 18do
14 echo "Trying to load boot images from ${boot_target}" 19 echo "Trying to load boot images from ${boot_target}"
15 if test "${boot_target}" = "jtag" ; then 20 if test "${boot_target}" = "jtag" ; then
21 run update_bootargs
16 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ 22 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@
17 fi 23 fi
18 if test "${boot_target}" = "mmc0" || test "${boot_target}" = "mmc1" || test "${boot_target}" = "usb0" || test "${boot_target}" = "usb1"; then 24 if test "${boot_target}" = "mmc0" || test "${boot_target}" = "mmc1" || test "${boot_target}" = "usb0" || test "${boot_target}" = "usb1"; then
@@ -34,6 +40,7 @@ do
34 fi 40 fi
35 if test -e ${devtype} ${devnum}:${distro_bootpart} /system.dtb; then 41 if test -e ${devtype} ${devnum}:${distro_bootpart} /system.dtb; then
36 fatload ${devtype} ${devnum}:${distro_bootpart} @@DEVICETREE_ADDRESS@@ system.dtb; 42 fatload ${devtype} ${devnum}:${distro_bootpart} @@DEVICETREE_ADDRESS@@ system.dtb;
43 setenv fdtcontroladdr @@DEVICETREE_ADDRESS@@
37 fi 44 fi
38 if test -e ${devtype} ${devnum}:${distro_bootpart} /devicetree/openamp.dtbo; then 45 if test -e ${devtype} ${devnum}:${distro_bootpart} /devicetree/openamp.dtbo; then
39 fatload ${devtype} ${devnum}:${distro_bootpart} @@DEVICETREE_OVERLAY_ADDRESS@@ devicetree/openamp.dtbo; 46 fatload ${devtype} ${devnum}:${distro_bootpart} @@DEVICETREE_OVERLAY_ADDRESS@@ devicetree/openamp.dtbo;
@@ -41,6 +48,7 @@ do
41 fdt resize 8192 48 fdt resize 8192
42 fdt apply @@DEVICETREE_OVERLAY_ADDRESS@@ 49 fdt apply @@DEVICETREE_OVERLAY_ADDRESS@@
43 fi 50 fi
51 run update_bootargs
44 if test -e ${devtype} ${devnum}:${distro_bootpart} /${ramdisk_name} && test "${skip_tinyramdisk}" != "yes"; then 52 if test -e ${devtype} ${devnum}:${distro_bootpart} /${ramdisk_name} && test "${skip_tinyramdisk}" != "yes"; then
45 fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${ramdisk_name}; 53 fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${ramdisk_name};
46 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ 54 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@
@@ -51,7 +59,7 @@ do
51 fi 59 fi
52 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ - @@DEVICETREE_ADDRESS@@ 60 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ - @@DEVICETREE_ADDRESS@@
53 fi 61 fi
54 if test "${boot_target}" = "xspi0" || test "${boot_target}" = "qspi" || test "${boot_target}" = "qspi0"; then 62 if test "${boot_target}" = "xspi0" || test "${boot_target}" = "xspi1" || test "${boot_target}" = "qspi" || test "${boot_target}" = "qspi0"; then
55 sf probe 0 0 0; 63 sf probe 0 0 0;
56 sf read @@FIT_IMAGE_LOAD_ADDRESS@@ @@QSPI_FIT_IMAGE_OFFSET@@ @@QSPI_FIT_IMAGE_SIZE@@ 64 sf read @@FIT_IMAGE_LOAD_ADDRESS@@ @@QSPI_FIT_IMAGE_OFFSET@@ @@QSPI_FIT_IMAGE_SIZE@@
57 bootm @@FIT_IMAGE_LOAD_ADDRESS@@; 65 bootm @@FIT_IMAGE_LOAD_ADDRESS@@;
@@ -59,6 +67,7 @@ do
59 67
60 sf read @@KERNEL_LOAD_ADDRESS@@ @@QSPI_KERNEL_OFFSET@@ @@QSPI_KERNEL_SIZE@@ 68 sf read @@KERNEL_LOAD_ADDRESS@@ @@QSPI_KERNEL_OFFSET@@ @@QSPI_KERNEL_SIZE@@
61 sf read @@RAMDISK_IMAGE_ADDRESS@@ @@QSPI_RAMDISK_OFFSET@@ @@QSPI_RAMDISK_SIZE@@ 69 sf read @@RAMDISK_IMAGE_ADDRESS@@ @@QSPI_RAMDISK_OFFSET@@ @@QSPI_RAMDISK_SIZE@@
70 run update_bootargs
62 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@; 71 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@;
63 echo "Booting using Separate images failed" 72 echo "Booting using Separate images failed"
64 fi 73 fi
@@ -70,6 +79,7 @@ do
70 79
71 nand read @@KERNEL_LOAD_ADDRESS@@ @@NAND_KERNEL_OFFSET@@ @@NAND_KERNEL_SIZE@@ 80 nand read @@KERNEL_LOAD_ADDRESS@@ @@NAND_KERNEL_OFFSET@@ @@NAND_KERNEL_SIZE@@
72 nand read @@RAMDISK_IMAGE_ADDRESS@@ @@NAND_RAMDISK_OFFSET@@ @@NAND_RAMDISK_SIZE@@ 81 nand read @@RAMDISK_IMAGE_ADDRESS@@ @@NAND_RAMDISK_OFFSET@@ @@NAND_RAMDISK_SIZE@@
82 run update_bootargs
73 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@; 83 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@;
74 echo "Booting using Separate images failed" 84 echo "Booting using Separate images failed"
75 fi 85 fi
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic.root b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic.root
index 816707cb..ed12f941 100644
--- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic.root
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic.root
@@ -15,7 +15,7 @@ do
15 if test "${boot_target}" = "jtag" ; then 15 if test "${boot_target}" = "jtag" ; then
16 fdt addr @@DEVICETREE_ADDRESS@@ 16 fdt addr @@DEVICETREE_ADDRESS@@
17 fdt get value bootargs /chosen bootargs 17 fdt get value bootargs /chosen bootargs
18 setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@ 18 setenv bootargs $bootargs @@KERNEL_COMMAND_APPEND@@ @@KERNEL_ROOT_RAMDISK@@
19 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ 19 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@
20 fi 20 fi
21 if test "${boot_target}" = "mmc0" || test "${boot_target}" = "mmc1" || test "${boot_target}" = "usb0" || test "${boot_target}" = "usb1"; then 21 if test "${boot_target}" = "mmc0" || test "${boot_target}" = "mmc1" || test "${boot_target}" = "usb0" || test "${boot_target}" = "usb1"; then
@@ -65,7 +65,7 @@ do
65 fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${ramdisk_name}; 65 fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${ramdisk_name};
66 fdt addr @@DEVICETREE_ADDRESS@@ 66 fdt addr @@DEVICETREE_ADDRESS@@
67 fdt get value bootargs /chosen bootargs 67 fdt get value bootargs /chosen bootargs
68 setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@ 68 setenv bootargs $bootargs @@KERNEL_COMMAND_APPEND@@ @@KERNEL_ROOT_RAMDISK@@
69 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ 69 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@
70 fi 70 fi
71 echo "Checking for /${rootfs_name}" 71 echo "Checking for /${rootfs_name}"
@@ -74,12 +74,12 @@ do
74 fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${rootfs_name}; 74 fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${rootfs_name};
75 fdt addr @@DEVICETREE_ADDRESS@@ 75 fdt addr @@DEVICETREE_ADDRESS@@
76 fdt get value bootargs /chosen bootargs 76 fdt get value bootargs /chosen bootargs
77 setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@ 77 setenv bootargs $bootargs @@KERNEL_COMMAND_APPEND@@ @@KERNEL_ROOT_RAMDISK@@
78 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ 78 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@
79 fi 79 fi
80 fdt addr @@DEVICETREE_ADDRESS@@ 80 fdt addr @@DEVICETREE_ADDRESS@@
81 fdt get value bootargs /chosen bootargs 81 fdt get value bootargs /chosen bootargs
82 setenv bootargs $bootargs @@KERNEL_ROOT_SD@@ 82 setenv bootargs $bootargs @@KERNEL_COMMAND_APPEND@@ @@KERNEL_ROOT_SD@@
83 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ - @@DEVICETREE_ADDRESS@@ 83 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ - @@DEVICETREE_ADDRESS@@
84 fi 84 fi
85 if test "${boot_target}" = "xspi0" || test "${boot_target}" = "qspi" || test "${boot_target}" = "qspi0"; then 85 if test "${boot_target}" = "xspi0" || test "${boot_target}" = "qspi" || test "${boot_target}" = "qspi0"; then
@@ -93,7 +93,7 @@ do
93 sf read @@RAMDISK_IMAGE_ADDRESS@@ @@QSPI_RAMDISK_OFFSET@@ @@QSPI_RAMDISK_SIZE@@ 93 sf read @@RAMDISK_IMAGE_ADDRESS@@ @@QSPI_RAMDISK_OFFSET@@ @@QSPI_RAMDISK_SIZE@@
94 fdt addr @@DEVICETREE_ADDRESS@@ 94 fdt addr @@DEVICETREE_ADDRESS@@
95 fdt get value bootargs /chosen bootargs 95 fdt get value bootargs /chosen bootargs
96 setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@ 96 setenv bootargs $bootargs @@KERNEL_COMMAND_APPEND@@ @@KERNEL_ROOT_RAMDISK@@
97 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@; 97 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@;
98 echo "Booting using Separate images failed" 98 echo "Booting using Separate images failed"
99 fi 99 fi
@@ -108,7 +108,7 @@ do
108 nand read @@RAMDISK_IMAGE_ADDRESS@@ @@NAND_RAMDISK_OFFSET@@ @@NAND_RAMDISK_SIZE@@ 108 nand read @@RAMDISK_IMAGE_ADDRESS@@ @@NAND_RAMDISK_OFFSET@@ @@NAND_RAMDISK_SIZE@@
109 fdt addr @@DEVICETREE_ADDRESS@@ 109 fdt addr @@DEVICETREE_ADDRESS@@
110 fdt get value bootargs /chosen bootargs 110 fdt get value bootargs /chosen bootargs
111 setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@ 111 setenv bootargs $bootargs @@KERNEL_COMMAND_APPEND@@ @@KERNEL_ROOT_RAMDISK@@
112 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@; 112 @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@;
113 echo "Booting using Separate images failed" 113 echo "Booting using Separate images failed"
114 fi 114 fi
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 10dfbb60..4c7ea934 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
@@ -9,7 +9,7 @@ SYSROOT_DIRS += "/boot"
9 9
10BASE_DTS ?= "${@os.path.basename(d.getVar('CONFIG_DTFILE') or '').rstrip('.dtb').rstrip('.dts') or 'system-top'}" 10BASE_DTS ?= "${@os.path.basename(d.getVar('CONFIG_DTFILE') or '').rstrip('.dtb').rstrip('.dts') or 'system-top'}"
11DTB_PATH ?= "boot/devicetree/" 11DTB_PATH ?= "boot/devicetree/"
12DTB_NAME ?= "" 12DTB_FILE_NAME ?= ""
13 13
14# This vairable is used for U-boot user specified dts from u-boot repo path 14# This vairable is used for U-boot user specified dts from u-boot repo path
15# u-boot-xlnx/arch/arm/dts/versal-vck190-revA-x-ebm-01-revA.dts. 15# u-boot-xlnx/arch/arm/dts/versal-vck190-revA-x-ebm-01-revA.dts.
@@ -17,7 +17,7 @@ DTB_NAME ?= ""
17# Example: UBOOT_USER_SPECIFIED_DTS = "versal-vck190-revA-x-ebm-01-revA" 17# Example: UBOOT_USER_SPECIFIED_DTS = "versal-vck190-revA-x-ebm-01-revA"
18UBOOT_USER_SPECIFIED_DTS ?= "" 18UBOOT_USER_SPECIFIED_DTS ?= ""
19 19
20EXTRA_OEMAKE += "${@'EXT_DTB=${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_NAME}' if (d.getVar('DTB_NAME') != '' and d.getVar('UBOOT_USER_SPECIFIED_DTS') == '') else '' }" 20EXTRA_OEMAKE += "${@'EXT_DTB=${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_FILE_NAME}' if (d.getVar('DTB_FILE_NAME') != '' and d.getVar('UBOOT_USER_SPECIFIED_DTS') == '') else '' }"
21EXTRA_OEMAKE += "${@'DEVICE_TREE=${UBOOT_USER_SPECIFIED_DTS}' if (d.getVar('UBOOT_USER_SPECIFIED_DTS') != '') else '' }" 21EXTRA_OEMAKE += "${@'DEVICE_TREE=${UBOOT_USER_SPECIFIED_DTS}' if (d.getVar('UBOOT_USER_SPECIFIED_DTS') != '') else '' }"
22 22
23python __anonymous () { 23python __anonymous () {
@@ -25,8 +25,8 @@ python __anonymous () {
25 providerdtb = d.getVar("PREFERRED_PROVIDER_virtual/dtb") 25 providerdtb = d.getVar("PREFERRED_PROVIDER_virtual/dtb")
26 if providerdtb: 26 if providerdtb:
27 d.appendVarFlag('do_configure', 'depends', ' virtual/dtb:do_populate_sysroot') 27 d.appendVarFlag('do_configure', 'depends', ' virtual/dtb:do_populate_sysroot')
28 if d.getVar("DTB_NAME") is not None: 28 if d.getVar("DTB_FILE_NAME") is not None:
29 d.setVar('DTB_NAME', d.getVar('BASE_DTS')+ '.dtb') 29 d.setVar('DTB_FILE_NAME', d.getVar('BASE_DTS')+ '.dtb')
30} 30}
31 31
32do_configure:prepend () { 32do_configure:prepend () {
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2023.2.bb b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2023.2.bb
new file mode 100644
index 00000000..22075424
--- /dev/null
+++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2023.2.bb
@@ -0,0 +1,4 @@
1
2require u-boot-xlnx.inc
3require u-boot-spl-zynq-init.inc
4require u-boot-xlnx-2023.2.inc
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2023.2.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2023.2.bb
new file mode 100644
index 00000000..d41743c1
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2023.2.bb
@@ -0,0 +1,6 @@
1
2require qemu-devicetrees.inc
3
4BRANCH ?= "xlnx_rel_v2023.2"
5SRCREV ?= "d1013382d9a5ef816cd020e7840813b7a2d65c51"
6
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2023.2.inc b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2023.2.inc
new file mode 100644
index 00000000..db6e1528
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2023.2.inc
@@ -0,0 +1,3 @@
1XILINX_QEMU_VERSION = "v7.1.0"
2BRANCH = "xlnx_rel_v2023.2"
3SRCREV = "23b643ba1683a47ef49447a45643fe2172d6f8ca"
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2023.2.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2023.2.bb
new file mode 100644
index 00000000..ccfa9956
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2023.2.bb
@@ -0,0 +1,9 @@
1require qemu-xilinx-2023.2.inc
2require qemu-xilinx-native-7.1.inc
3require qemu-native-alt.inc
4
5BPN = "qemu-xilinx"
6
7EXTRA_OECONF:append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent"
8
9PACKAGECONFIG ??= "pie"
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2023.2.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2023.2.bb
new file mode 100644
index 00000000..21208f72
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2023.2.bb
@@ -0,0 +1,26 @@
1require qemu-system-native-alt.inc
2require qemu-xilinx-2023.2.inc
3require qemu-xilinx-native-7.1.inc
4
5PROVIDES = "qemu-system-native"
6
7EXTRA_OECONF:append = " --target-list=${@get_qemu_system_target_list(d)}"
8
9PACKAGECONFIG ??= "fdt alsa kvm gcrypt pie slirp"
10
11PACKAGECONFIG:remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
12
13DEPENDS += "pixman-native qemu-xilinx-native bison-native ninja-native meson-native"
14DEPENDS += "qemu-xilinx-multiarch-helper-native"
15
16do_install:append() {
17 # The following is also installed by qemu-native
18 rm -f ${D}${datadir}/qemu/trace-events-all
19 rm -rf ${D}${datadir}/qemu/keymaps
20 rm -rf ${D}${datadir}/icons
21 rm -rf ${D}${includedir}/qemu-plugin.h
22
23 # Install qmp.py to be used with testimage
24 install -d ${D}${libdir}/qemu-python/qmp/
25 install -D ${S}/python/qemu/qmp/* ${D}${libdir}/qemu-python/qmp/
26}
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2023.2.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2023.2.bb
new file mode 100644
index 00000000..e79df9d7
--- /dev/null
+++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2023.2.bb
@@ -0,0 +1,26 @@
1require qemu-xilinx-2023.2.inc
2require recipes-devtools/qemu/qemu.inc
3require qemu-xilinx-7.1.inc
4require qemu-alt.inc
5
6# Links to libmali-xlnx, so it becomes MACHINE_ARCH specific
7DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}"
8MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH"
9MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}"
10PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH"
11PACKAGE_ARCH:class-target = "${@bb.utils.contains_any('DEPENDS', 'libepoxy virglrenderer', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}"
12
13BBCLASSEXTEND = "nativesdk"
14
15RDEPENDS:${PN}:class-target += "bash"
16
17PROVIDES:class-nativesdk = "nativesdk-qemu"
18RPROVIDES:${PN}:class-nativesdk = "nativesdk-qemu"
19
20EXTRA_OECONF:append:class-target = " --target-list=${@get_qemu_target_list(d)}"
21EXTRA_OECONF:append:class-nativesdk = " --target-list=${@get_qemu_target_list(d)}"
22EXTRA_OECONF:append:class-target:mipsarcho32 = "${@bb.utils.contains('BBEXTENDCURR', 'multilib', ' --disable-capstone', '', d)}"
23
24do_install:append:class-nativesdk() {
25 ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
26}
diff --git a/meta-xilinx-core/recipes-graphics/libgles/libmali-xlnx.bb b/meta-xilinx-core/recipes-graphics/libgles/libmali-xlnx.bb
index 07de26dc..db99c4d7 100644
--- a/meta-xilinx-core/recipes-graphics/libgles/libmali-xlnx.bb
+++ b/meta-xilinx-core/recipes-graphics/libgles/libmali-xlnx.bb
@@ -13,7 +13,7 @@ PROVIDES += "virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm"
13FILESEXTRAPATHS:prepend := "${THISDIR}/files:" 13FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
14 14
15REPO ?= "git://github.com/Xilinx/mali-userspace-binaries.git;protocol=https" 15REPO ?= "git://github.com/Xilinx/mali-userspace-binaries.git;protocol=https"
16BRANCH ?= "xlnx_rel_v2023.1" 16BRANCH ?= "xlnx_rel_v2023.2"
17SRCREV ?= "b3a772aad859cdadc8513b11c3e995546c20e75e" 17SRCREV ?= "b3a772aad859cdadc8513b11c3e995546c20e75e"
18BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" 18BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
19 19
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston_%.bbappend b/meta-xilinx-core/recipes-graphics/wayland/weston_%.bbappend
new file mode 100644
index 00000000..ca77f0d3
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/wayland/weston_%.bbappend
@@ -0,0 +1,17 @@
1FILESEXTRAPATHS:prepend:zynqmp := "${THISDIR}/files:"
2
3SRC_URI:append:zynqmp = " file://0001-libweston-Remove-substitute-format-for-ARGB8888.patch"
4
5# Due to the SRC_URI zynqmp specific change, this needs to be SOC_FAMILY_ARCH specific
6SOC_FAMILY_ARCH ??= "${TUNE_PKGARCH}"
7DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}"
8DEFAULT_PACKAGE_ARCH:zynqmp = "${SOC_FAMILY_ARCH}"
9PACKAGE_ARCH = "${DEFAULT_PACKAGE_ARCH}"
10
11
12# Links to libmali-xlnx, so it becomes MACHINE_ARCH specific
13DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}"
14MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH"
15MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}"
16PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH"
17PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}"
diff --git a/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg/monitor-hotplug.sh b/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg/monitor-hotplug.sh
index d603082d..bceb5607 100755
--- a/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg/monitor-hotplug.sh
+++ b/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg/monitor-hotplug.sh
@@ -27,12 +27,27 @@ DEVICES=$(find /sys/class/drm/*/status)
27 27
28# inspired by /etc/acpd/lid.sh and the function it sources. 28# inspired by /etc/acpd/lid.sh and the function it sources.
29 29
30displaynum=`ls /tmp/.X11-unix/* | sed s#/tmp/.X11-unix/X##` 30# Read first X display number from the list.
31displaynum=`ls /tmp/.X11-unix/* | sed s#/tmp/.X11-unix/X## | head -n 1`
32displaynum=${displaynum%% *}
33
31display=":$displaynum.0" 34display=":$displaynum.0"
32export DISPLAY=":$displaynum.0" 35export DISPLAY=":$displaynum.0"
33 36
34# from https://wiki.archlinux.org/index.php/Acpid#Laptop_Monitor_Power_Off 37# from https://wiki.archlinux.org/index.php/Acpid#Laptop_Monitor_Power_Off
35export XAUTHORITY=$(ps -C Xorg -f --no-header | sed -n 's/.*-auth //; s/ -[^ ].*//; p') 38
39# Clear XAUTHORITY by default in case X session is not using display manager.
40unset XAUTHORITY
41
42# Detect X session command line started for the display $displaynum and extract
43# -auth argument if any.
44ps -eo args | grep -e "Xorg\W*:$displaynum" | grep -e -auth | while read -r line
45do
46 if [[ "${line%% *}" == *Xorg ]]; then
47 export XAUTHORITY=`echo $line | sed -n 's/.*-auth //; s/ -[^ ].*//; p'`
48 break
49 fi
50done
36 51
37for i in /sys/class/drm/*/*/status ; 52for i in /sys/class/drm/*/*/status ;
38do 53do
diff --git a/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend b/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
index 460ff581..7486200d 100644
--- a/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
+++ b/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
@@ -17,7 +17,7 @@ do_install:append() {
17 install -m 0755 ${WORKDIR}/monitor-hotplug.sh ${D}${bindir} 17 install -m 0755 ${WORKDIR}/monitor-hotplug.sh ${D}${bindir}
18 18
19 install -d ${D}${sysconfdir}/udev/rules.d 19 install -d ${D}${sysconfdir}/udev/rules.d
20 install -m 0644 ${WORKDIR}/99-monitor-hotplug.rules ${D}${sysconfdir}/udev/rules.d/99-monitor-hotplug.rules 20 install -m 0644 ${WORKDIR}/99-monitor-hotplug.rules ${D}${sysconfdir}/udev/rules.d/local.rules
21} 21}
22 22
23FILES:${PN} += "${sysconfdir}/udev/rules.d/*" 23FILES:${PN} += "${sysconfdir}/udev/rules.d/*"
diff --git a/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_2023.2.bb b/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_2023.2.bb
new file mode 100644
index 00000000..d1c6bd3d
--- /dev/null
+++ b/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_2023.2.bb
@@ -0,0 +1,24 @@
1SUMMARY = "Xilinx DisplayPort Linux Kernel module"
2DESCRIPTION = "Out-of-tree DisplayPort(DP) kernel modules provider for aarch64 devices"
3SECTION = "kernel/modules"
4LICENSE = "GPL-2.0-only"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a"
6
7XLNX_DP_VERSION = "6.1.0"
8PV = "${XLNX_DP_VERSION}+xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
9
10S = "${WORKDIR}/git"
11
12BRANCH ?= "xlnx_rel_v2023.2"
13REPO ?= "git://github.com/xilinx/dp-modules.git;protocol=https"
14SRCREV ?= "5b0969ac09f301c33bccc140c8f60e832f5cf222"
15
16BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
17SRC_URI = "${REPO};${BRANCHARG}"
18
19inherit module
20
21EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}"
22COMPATIBLE_MACHINE = "^$"
23COMPATIBLE_MACHINE:zynqmp = "zynqmp"
24COMPATIBLE_MACHINE:versal = "versal"
diff --git a/meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_2023.2.bb b/meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_2023.2.bb
new file mode 100644
index 00000000..bc89f5f3
--- /dev/null
+++ b/meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_2023.2.bb
@@ -0,0 +1,24 @@
1SUMMARY = "Xilinx HDMI Linux Kernel module"
2DESCRIPTION = "Out-of-tree HDMI kernel modules provider for MPSoC EG/EV devices"
3SECTION = "kernel/modules"
4LICENSE = "GPL-2.0-only"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=b34277fe156508fd5a650609dc36d1fe"
6
7XLNX_HDMI_VERSION = "6.1"
8PV = "${XLNX_HDMI_VERSION}+xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
9
10S = "${WORKDIR}/git"
11
12BRANCH ?= "xlnx_rel_v2023.2"
13REPO ?= "git://github.com/Xilinx/hdmi-modules.git;protocol=https"
14SRCREV = "82209b0021a7b5d7ef71a859eed4bafeb541ed08"
15
16BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
17SRC_URI = "${REPO};${BRANCHARG}"
18
19inherit module
20
21EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}"
22COMPATIBLE_MACHINE = "^$"
23COMPATIBLE_MACHINE:zynqmp = "zynqmp"
24COMPATIBLE_MACHINE:versal = "versal"
diff --git a/meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2023.2.bb b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2023.2.bb
new file mode 100644
index 00000000..8842cb10
--- /dev/null
+++ b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2023.2.bb
@@ -0,0 +1,11 @@
1LINUX_VERSION = "6.1.30"
2YOCTO_META ?= "git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.1;destsuffix=yocto-kmeta"
3KBRANCH="xlnx_rebase_v6.1_LTS"
4SRCREV = "a19da02cf5b44420ec6afb1eef348c21d9e8cda2"
5SRCREV_meta = "185bcfcbe480c742247d9117011794c69682914f"
6
7KCONF_AUDIT_LEVEL="0"
8
9include linux-xlnx.inc
10
11FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2023.2.bb
new file mode 100644
index 00000000..e8bd3397
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2023.2.bb
@@ -0,0 +1,39 @@
1SUMMARY = "Linux kernel module for Video Code Unit"
2DESCRIPTION = "Out-of-tree VCU decoder, encoder and common kernel modules provider for MPSoC EV devices"
3SECTION = "kernel/modules"
4LICENSE = "GPL-2.0-only"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a"
6
7XILINX_VCU_VERSION = "1.0.0"
8PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}"
9
10S = "${WORKDIR}/git"
11
12FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
13
14BRANCH = "xlnx_rel_v2023.2"
15REPO = "git://github.com/Xilinx/vcu-modules.git;protocol=https"
16SRCREV = "689c8d823b383e2a8a5249be49de627f866cfaf2"
17
18BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
19SRC_URI = " \
20 ${REPO};${BRANCHARG} \
21 file://99-vcu-enc-dec.rules \
22 "
23
24inherit module features_check
25
26REQUIRED_MACHINE_FEATURES = "vcu"
27
28EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}"
29
30RDEPENDS:${PN} = "vcu-firmware"
31
32KERNEL_MODULE_AUTOLOAD += "dmaproxy"
33
34do_install:append() {
35 install -d ${D}${sysconfdir}/udev/rules.d
36 install -m 0644 ${WORKDIR}/99-vcu-enc-dec.rules ${D}${sysconfdir}/udev/rules.d/
37}
38
39FILES:${PN} = "${sysconfdir}/udev/rules.d/*"
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2023.2.bb
new file mode 100644
index 00000000..2c77e2b4
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2023.2.bb
@@ -0,0 +1,50 @@
1SUMMARY = "OpenMAX Integration layer for VCU"
2DESCRIPTION = "OMX IL Libraries,test applications and headers for VCU"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=ef69c2bb405668101824f0b644631e2e"
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_v2023.2"
10REPO ?= "git://github.com/Xilinx/vcu-omx-il.git;protocol=https"
11SRCREV = "3a04b5adc661a0eced626c1373dbbfe699ae6fe0"
12
13BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
14SRC_URI = "${REPO};${BRANCHARG}"
15
16S = "${WORKDIR}/git"
17
18inherit features_check
19
20REQUIRED_MACHINE_FEATURES = "vcu"
21
22PACKAGE_ARCH = "${MACHINE_ARCH}"
23
24DEPENDS = "libvcu-xlnx"
25RDEPENDS:${PN} = "kernel-module-vcu libvcu-xlnx"
26
27EXTERNAL_INCLUDE="${STAGING_INCDIR}/vcu-ctrl-sw/include"
28
29EXTRA_OEMAKE = " \
30 CC='${CC}' CXX='${CXX} ${CXXFLAGS}' \
31 EXTERNAL_INCLUDE='${EXTERNAL_INCLUDE}' \
32 "
33
34do_install() {
35 install -d ${D}${libdir}
36 install -d ${D}${includedir}/vcu-omx-il
37
38 install -m 0644 ${S}/omx_header/*.h ${D}${includedir}/vcu-omx-il
39
40 oe_runmake install INSTALL_PATH=${D}${bindir}
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_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2023.2.bb
new file mode 100644
index 00000000..e6d38a4a
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2023.2.bb
@@ -0,0 +1,41 @@
1SUMMARY = "Control Software for VCU"
2DESCRIPTION = "Control software libraries, test applications and headers provider for VCU"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=ef69c2bb405668101824f0b644631e2e"
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_v2023.2"
10REPO ?= "git://github.com/Xilinx/vcu-ctrl-sw.git;protocol=https"
11SRCREV = "84b0856cad7844d69f57ac4d9447c20930875475"
12
13BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
14SRC_URI = "${REPO};${BRANCHARG}"
15
16S = "${WORKDIR}/git"
17
18inherit features_check
19
20REQUIRED_MACHINE_FEATURES = "vcu"
21
22RDEPENDS:${PN} = "kernel-module-vcu"
23
24EXTRA_OEMAKE = "CC='${CC}' CXX='${CXX} ${CXXFLAGS}'"
25
26do_install() {
27 install -d ${D}${libdir}
28 install -d ${D}${includedir}/vcu-ctrl-sw/include
29
30 oe_runmake install_headers INSTALL_HDR_PATH=${D}${includedir}/vcu-ctrl-sw/include INSTALL_PATH=${D}/${bindir}
31 oe_libinstall -C ${S}/bin/ -so liballegro_decode ${D}/${libdir}/
32 oe_libinstall -C ${S}/bin/ -so liballegro_encode ${D}/${libdir}/
33}
34
35# These libraries shouldn't get installed in world builds unless something
36# explicitly depends upon them.
37
38EXCLUDE_FROM_WORLD = "1"
39
40# Disable buildpaths QA check warnings.
41INSANE_SKIP:${PN} += "buildpaths"
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2023.2.bb
new file mode 100644
index 00000000..b4cb66df
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2023.2.bb
@@ -0,0 +1,38 @@
1SUMMARY = "Firmware for VCU"
2DESCRIPTION = "Firmware binaries provider for VCU"
3LICENSE = "Proprietary"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=52eb1e8f27e0e189b175c7d75f028cc6"
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_v2023.2"
12REPO ?= "git://github.com/Xilinx/vcu-firmware.git;protocol=https"
13SRCREV = "f4ab98d26aa3e244a487f518f5a76071137c8402"
14
15BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
16SRC_URI = "${REPO};${BRANCHARG}"
17
18inherit features_check
19
20REQUIRED_MACHINE_FEATURES = "vcu"
21
22do_install() {
23 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5d_b.fw ${D}/lib/firmware/al5d_b.fw
24 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5d.fw ${D}/lib/firmware/al5d.fw
25 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5e_b.fw ${D}/lib/firmware/al5e_b.fw
26 install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5e.fw ${D}/lib/firmware/al5e.fw
27}
28
29# Inhibit warnings about files being stripped
30INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
31INHIBIT_PACKAGE_STRIP = "1"
32FILES:${PN} = "/lib/firmware/*"
33
34# These libraries shouldn't get installed in world builds unless something
35# explicitly depends upon them.
36EXCLUDE_FROM_WORLD = "1"
37
38INSANE_SKIP:${PN} = "ldflags"
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb b/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb
index a1396278..9b835490 100644
--- a/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb
+++ b/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb
@@ -5,7 +5,8 @@ LICENSE = "GPLv2"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a" 5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a"
6 6
7XILINX_VDU_VERSION = "1.0.0" 7XILINX_VDU_VERSION = "1.0.0"
8PV = "${XILINX_VDU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" 8PV =. "${XILINX_VDU_VERSION}-xilinx-v"
9PV .= "+git${SRCPV}"
9 10
10S = "${WORKDIR}/git" 11S = "${WORKDIR}/git"
11FILESEXTRAPATHS:prepend := "${THISDIR}/files:" 12FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.2.bb
new file mode 100644
index 00000000..1c9ba8ad
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.2.bb
@@ -0,0 +1,42 @@
1SUMMARY = "Linux kernel module for Video Decode Unit"
2DESCRIPTION = "Out-of-tree VDU decoder common kernel modules"
3SECTION = "kernel/modules"
4LICENSE = "GPLv2"
5LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a"
6
7XILINX_VDU_VERSION = "1.0.0"
8PV =. "${XILINX_VDU_VERSION}-xilinx-v"
9PV .= "+git${SRCPV}"
10
11S = "${WORKDIR}/git"
12FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
13
14BRANCH ?= "xlnx_rel_v2023.2"
15REPO ?= "git://github.com/Xilinx/vdu-modules.git;protocol=https"
16SRCREV ?= "4d5134f54006f904f0b28f00e05dd3febd5fcfd3"
17
18BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
19SRC_URI = "${REPO};${BRANCHARG} \
20 file://99-vdu-enc-dec.rules \
21"
22
23inherit module features_check
24
25REQUIRED_MACHINE_FEATURES = "vdu"
26
27EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}"
28
29RDEPENDS:${PN} = "vdu-firmware"
30
31COMPATIBLE_MACHINE = "^$"
32COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core"
33COMPATIBLE_MACHINE:versal-ai-edge = "versal-ai-edge"
34
35PACKAGE_ARCH = "${SOC_FAMILY_ARCH}"
36
37do_install:append() {
38 install -d ${D}${sysconfdir}/udev/rules.d
39 install -m 0644 ${WORKDIR}/99-vdu-enc-dec.rules ${D}${sysconfdir}/udev/rules.d/
40}
41
42FILES:${PN} = "${sysconfdir}/udev/rules.d/*"
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb
index 82f3c4f5..602dc2fc 100644
--- a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb
+++ b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb
@@ -4,7 +4,8 @@ LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" 4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f"
5 5
6XILINX_VDU_VERSION = "1.0.0" 6XILINX_VDU_VERSION = "1.0.0"
7PV = "${XILINX_VDU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" 7PV =. "${XILINX_VDU_VERSION}-xilinx-v"
8PV .= "+git${SRCPV}"
8 9
9inherit autotools features_check 10inherit autotools features_check
10 11
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.2.bb
new file mode 100644
index 00000000..2b9af94f
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.2.bb
@@ -0,0 +1,45 @@
1SUMMARY = "Control Software for VDU"
2DESCRIPTION = "Control software libraries, test applications and headers provider for VDU"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f"
5
6XILINX_VDU_VERSION = "1.0.0"
7PV =. "${XILINX_VDU_VERSION}-xilinx-v"
8PV .= "+git${SRCPV}"
9
10inherit autotools features_check
11
12REQUIRED_MACHINE_FEATURES = "vdu"
13
14BRANCH ?= "xlnx_rel_v2023.2"
15REPO ?= "git://github.com/Xilinx/vdu-ctrl-sw.git;protocol=https"
16SRCREV ?= "1beb8f247d01b1a728faea36ce8f7847c895482f"
17
18BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
19SRC_URI = "${REPO};${BRANCHARG}"
20
21S = "${WORKDIR}/git"
22
23COMPATIBLE_MACHINE = "^$"
24COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core"
25COMPATIBLE_MACHINE:versal-ai-edge = "versal-ai-edge"
26
27PACKAGE_ARCH = "${SOC_FAMILY_ARCH}"
28
29RDEPENDS:${PN} = "kernel-module-vdu"
30
31do_compile[dirs] = "${S}"
32do_install[dirs] = "${S}"
33
34EXTRA_OEMAKE = "CC='${CC}' CXX='${CXX} ${CXXFLAGS}'"
35EXTRA_OEMAKE +=" INSTALL_HDR_PATH=${D}${includedir}/vdu-ctrl-sw/include INSTALL_PATH=${D}${bindir}"
36
37do_install:append() {
38
39 oe_libinstall -C ${S}/bin/ -so liballegro_decode ${D}/${libdir}/
40}
41
42# These libraries shouldn't get installed in world builds unless something
43# explicitly depends upon them.
44
45EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb
index 88b50193..b4fc482e 100644
--- a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb
+++ b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb
@@ -4,7 +4,8 @@ LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" 4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f"
5 5
6XILINX_VDU_VERSION = "1.0.0" 6XILINX_VDU_VERSION = "1.0.0"
7PV = "${XILINX_VDU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" 7PV =. "${XILINX_VDU_VERSION}-xilinx-v"
8PV .= "+git${SRCPV}"
8 9
9BRANCH ?= "xlnx_rel_v2023.1" 10BRANCH ?= "xlnx_rel_v2023.1"
10REPO ?= "git://github.com/Xilinx/vdu-omx-il.git;protocol=https" 11REPO ?= "git://github.com/Xilinx/vdu-omx-il.git;protocol=https"
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.2.bb
new file mode 100644
index 00000000..f6f159d2
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.2.bb
@@ -0,0 +1,54 @@
1SUMMARY = "OpenMAX Integration layer for VDU"
2DESCRIPTION = "OMX IL Libraries,test application and headers for VDU"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f"
5
6XILINX_VDU_VERSION = "1.0.0"
7PV =. "${XILINX_VDU_VERSION}-xilinx-v"
8PV .= "+git${SRCPV}"
9
10BRANCH ?= "xlnx_rel_v2023.2"
11REPO ?= "git://github.com/Xilinx/vdu-omx-il.git;protocol=https"
12SRCREV ?= "811eefac953fd5e098c69cada97a0dd35f5e9015"
13
14BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
15SRC_URI = "${REPO};${BRANCHARG} \
16 "
17S = "${WORKDIR}/git"
18
19inherit autotools features_check
20
21REQUIRED_MACHINE_FEATURES = "vdu"
22
23COMPATIBLE_MACHINE = "^$"
24COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core"
25COMPATIBLE_MACHINE:versal-ai-edge = "versal-ai-edge"
26
27PACKAGE_ARCH = "${SOC_FAMILY_ARCH}"
28
29DEPENDS = "libvdu-ctrlsw"
30RDEPENDS:${PN} = "kernel-module-vdu libvdu-ctrlsw"
31
32EXTERNAL_INCLUDE="${STAGING_INCDIR}/vdu-ctrl-sw/include"
33
34do_compile[dirs] = "${S}"
35do_install[dirs] = "${S}"
36
37EXTRA_OEMAKE = " \
38 CC='${CC}' CXX='${CXX} ${CXXFLAGS}' \
39 EXTERNAL_INCLUDE='${EXTERNAL_INCLUDE}' \
40 INSTALL_PATH=${D}${bindir} \
41 INCLUDE_INST_PATH=${D}${includedir} \
42 "
43
44do_install:append() {
45 install -d ${D}${libdir}
46
47 oe_libinstall -C ${S}/bin/ -so libOMX.allegro.core ${D}/${libdir}/
48 oe_libinstall -C ${S}/bin/ -so libOMX.allegro.video_decoder ${D}/${libdir}/
49}
50
51# These libraries shouldn't get installed in world builds unless something
52# explicitly depends upon them.
53
54EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.1.bb b/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.1.bb
index e96e0d24..8cc2cce1 100755
--- a/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.1.bb
+++ b/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.1.bb
@@ -4,7 +4,8 @@ LICENSE = "Proprietary"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c5784f63397086d836580d8785d1deb9" 4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c5784f63397086d836580d8785d1deb9"
5 5
6XILINX_VDU_VERSION = "1.0.0" 6XILINX_VDU_VERSION = "1.0.0"
7PV = "${XILINX_VDU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" 7PV =. "${XILINX_VDU_VERSION}-xilinx-v"
8PV .= "+git${SRCPV}"
8 9
9S = "${WORKDIR}/git" 10S = "${WORKDIR}/git"
10 11
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.2.bb
new file mode 100644
index 00000000..e9ef222b
--- /dev/null
+++ b/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.2.bb
@@ -0,0 +1,43 @@
1SUMMARY = "Firmware for VDU"
2DESCRIPTION = "Firmware binaries provider for VDU"
3LICENSE = "Proprietary"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c5784f63397086d836580d8785d1deb9"
5
6XILINX_VDU_VERSION = "1.0.0"
7PV =. "${XILINX_VDU_VERSION}-xilinx-v"
8PV .= "+git${SRCPV}"
9
10S = "${WORKDIR}/git"
11
12inherit autotools features_check
13
14REQUIRED_MACHINE_FEATURES = "vdu"
15
16BRANCH ?= "xlnx_rel_v2023.2"
17REPO ?= "git://github.com/Xilinx/vdu-firmware.git;protocol=https"
18SRCREV ?= "731897772730178f6a4e77eedeb4fb53faa1ab4d"
19
20BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
21SRC_URI = "${REPO};${BRANCHARG}"
22
23COMPATIBLE_MACHINE = "^$"
24COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core"
25COMPATIBLE_MACHINE:versal-ai-edge = "versal-ai-edge"
26
27PACKAGE_ARCH = "${SOC_FAMILY_ARCH}"
28EXTRA_OEMAKE +="INSTALL_PATH=${D}/lib/firmware"
29
30do_compile[noexec] = "1"
31do_install[dirs] = "${S}"
32
33# Inhibit warnings about files being stripped
34INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
35INHIBIT_PACKAGE_STRIP = "1"
36FILES:${PN} = "/lib/firmware/*"
37
38
39# These libraries shouldn't get installed in world builds unless something
40# explicitly depends upon them.
41EXCLUDE_FROM_WORLD = "1"
42
43INSANE_SKIP:${PN} = "ldflags"
diff --git a/meta-xilinx-core/recipes-xrt/xrt/xrt.inc b/meta-xilinx-core/recipes-xrt/xrt/xrt.inc
index 3b150673..14b2b968 100644
--- a/meta-xilinx-core/recipes-xrt/xrt/xrt.inc
+++ b/meta-xilinx-core/recipes-xrt/xrt/xrt.inc
@@ -1,8 +1,14 @@
1REPO ?= "git://github.com/Xilinx/XRT.git;protocol=https" 1REPO ?= "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};name=xrt"
4 4
5BRANCH= "2023.1" 5BRANCH= "2023.2"
6SRCREV= "64c933573e7e50a8aba939a74209590c2b739e8b" 6SRCREV_xrt = "2865a62b6a417dea523d2d5646154aa94a2cbc28"
7PV = "202310.2.15.0" 7PV = "202320.2.16.0"
8 8
9SRC_URI += "git://github.com/Xilinx/dma_ip_drivers.git;branch=master;name=dma_ip_drivers;destsuffix=git/src/runtime_src/core/pcie/driver/linux/xocl/lib/libqdma;protocol=https"
10SRCREV_dma_ip_drivers = "9f02769a2eddde008158c96efa39d7edb6512578"
11
12SRC_URI += "git://github.com/serge1/ELFIO.git;branch=main;name=ELFIO;destsuffix=git/src/runtime_src/core/common/elf;protocol=https"
13SRCREV_ELFIO = "a04810f12625207cce72665d783babb80f0175a8"
14SRCREV_FORMAT = "xrt"
diff --git a/meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb b/meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb
index 1124948f..f4e7b5de 100644
--- a/meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb
+++ b/meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb
@@ -3,14 +3,13 @@ DESCRIPTION = "Xilinx Runtime User Space Libraries and headers"
3 3
4require xrt.inc 4require xrt.inc
5 5
6SRC_URI += "file://xrt-cstdint.patch;striplevel=2" 6LICENSE = "GPL-2.0-or-later & Apache-2.0 & MIT"
7 7LIC_FILES_CHKSUM = "file://../LICENSE;md5=de2c993ac479f02575bcbfb14ef9b485 \
8LICENSE = "GPL-2.0-or-later & Apache-2.0"
9LIC_FILES_CHKSUM = "file://../LICENSE;md5=da5408f748bce8a9851dac18e66f4bcf \
10 file://runtime_src/core/edge/drm/zocl/LICENSE;md5=7d040f51aae6ac6208de74e88a3795f8 \ 8 file://runtime_src/core/edge/drm/zocl/LICENSE;md5=7d040f51aae6ac6208de74e88a3795f8 \
11 file://runtime_src/core/pcie/driver/linux/xocl/LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ 9 file://runtime_src/core/pcie/driver/linux/xocl/LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
12 file://runtime_src/core/pcie/linux/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \ 10 file://runtime_src/core/pcie/linux/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
13 file://runtime_src/core/tools/xbutil2/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 " 11 file://runtime_src/core/tools/xbutil2/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
12 file://runtime_src/core/common/elf/LICENSE.txt;md5=b996e8b74af169e7e72e22d9e7d05b06 "
14 13
15COMPATIBLE_MACHINE ?= "^$" 14COMPATIBLE_MACHINE ?= "^$"
16COMPATIBLE_MACHINE:zynqmp = ".*" 15COMPATIBLE_MACHINE:zynqmp = ".*"