diff options
author | Mark Hatle <mark.hatle@amd.com> | 2023-10-23 08:51:20 -0600 |
---|---|---|
committer | Mark Hatle <mark.hatle@amd.com> | 2023-10-23 08:56:37 -0600 |
commit | eb42c7caeac33f42096673522e650441f05ca8da (patch) | |
tree | 33f97fe41ec8855cf591c2692c7c7038b6bc1ae3 /meta-xilinx-core | |
parent | 387b31acf85b84bd34f339c87c0b51a9af4e16e4 (diff) | |
parent | 05911e19d85fd98c42054238392afe95a5125265 (diff) | |
download | meta-xilinx-eb42c7caeac33f42096673522e650441f05ca8da.tar.gz |
Merge remote-tracking branch 'origin/rel-v2023.2' into nanbield
Signed-off-by: Mark Hatle <mark.hatle@amd.com>
Diffstat (limited to 'meta-xilinx-core')
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 | |||
5 | inherit devicetree | ||
6 | |||
7 | DEPENDS = "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 | ||
12 | COMPATIBLE_MACHINE ?= "^$" | ||
13 | COMPATIBLE_MACHINE:microblaze = "^$" | ||
14 | |||
15 | PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
16 | |||
17 | PROVIDES = "" | ||
18 | |||
19 | do_fetch[cleandirs] = "${B}" | ||
20 | |||
21 | DT_PADDING_SIZE = "0x1000" | ||
22 | BOOTGEN_FLAGS ?= " -arch ${SOC_FAMILY} -w ${@bb.utils.contains('SOC_FAMILY','zynqmp','','-process_bitstream bin',d)}" | ||
23 | |||
24 | S ?= "${WORKDIR}" | ||
25 | FW_DIR ?= "" | ||
26 | DTSI_PATH ?= "" | ||
27 | DTBO_PATH ?= "" | ||
28 | DT_FILES_PATH = "${S}/${DTSI_PATH}" | ||
29 | FIRMWARE_NAME_DT_FILE ?= "" | ||
30 | USER_DTS_FILE ?= "" | ||
31 | |||
32 | FIRMWARE_NAME_DT_FILE[doc] = "DT file which has firmware-name device-tree property" | ||
33 | USER_DTS_FILE[doc] = "Final DTSI or DTS file which is used for packaging final DT overlay" | ||
34 | |||
35 | python() { | ||
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. | ||
103 | def 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. | ||
109 | python 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 | |||
125 | do_configure[prefuncs] += "find_firmware_file" | ||
126 | |||
127 | python 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 | |||
149 | do_compile[prefuncs] += "find_firmware_file" | ||
150 | |||
151 | python 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. | ||
193 | python 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 | |||
208 | do_install[prefuncs] += "find_user_dts_overlay_file" | ||
209 | |||
210 | do_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 | |||
265 | do_deploy[noexec] = "1" | ||
266 | |||
267 | FILES:${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. | |
5 | inherit devicetree | 5 | # Versal: Full PDI loading. |
6 | 6 | ||
7 | DEPENDS = "dtc-native bootgen-native" | 7 | inherit dfx_user_dts |
8 | 8 | ||
9 | # recipes that inherit from this class need to use an appropriate machine | 9 | python 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') |
12 | COMPATIBLE_MACHINE ?= "^$" | 12 | pn = d.getVar('PN') |
13 | COMPATIBLE_MACHINE:microblaze = "^$" | 13 | warn_msg = 'Users should start using dfx_user_dts bbclass for ' |
14 | 14 | if arch == 'zynq': | |
15 | PACKAGE_ARCH = "${MACHINE_ARCH}" | 15 | warn_msg += 'Zynq-7000 Full bitstream loading use case.' |
16 | 16 | elif arch == 'zynqmp': | |
17 | PROVIDES = "" | 17 | warn_msg += 'ZynqMP Full or DFx Static or DFx Partial bitstream loading use case.' |
18 | 18 | elif arch == 'versal': | |
19 | do_fetch[cleandirs] = "${B}" | 19 | warn_msg += 'Versal DFx Static or DFx Partial or Full PDI loading use case.' |
20 | 20 | ||
21 | DT_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)) |
22 | BOOTGEN_FLAGS ?= " -arch ${SOC_FAMILY} -w ${@bb.utils.contains('SOC_FAMILY','zynqmp','','-process_bitstream bin',d)}" | ||
23 | |||
24 | S ?= "${WORKDIR}" | ||
25 | FW_DIR ?= "" | ||
26 | DTSI_PATH ?= "" | ||
27 | DTBO_PATH ?= "" | ||
28 | DT_FILES_PATH = "${S}/${DTSI_PATH}" | ||
29 | |||
30 | python() { | ||
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 | } |
74 | python 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 | |||
96 | python 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 | |||
131 | do_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 | |||
175 | do_deploy[noexec] = "1" | ||
176 | 23 | ||
177 | FILES:${PN} += "${nonarch_base_libdir}/firmware/xilinx/${PN}" | 24 | do_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 | ||
45 | XILINX_RELEASE_VERSION ??= "v2023.1" | 45 | XILINX_RELEASE_VERSION ??= "v2023.2" |
46 | 46 | ||
47 | BUILDCFG_VARS:append = " SOC_VARIANT XILINX_RELEASE_VERSION" | 47 | BUILDCFG_VARS:append = " SOC_VARIANT XILINX_RELEASE_VERSION" |
48 | 48 | ||
49 | XILINX_QEMU_VERSION[v2022.1] = "v7.1.0-xilinx-v2022.1%" | 49 | XILINX_QEMU_VERSION[v2022.1] = "v7.1.0-xilinx-v2022.1%" |
50 | XILINX_QEMU_VERSION[v2022.2] = "v7.1.0-xilinx-v2022.2%" | 50 | XILINX_QEMU_VERSION[v2022.2] = "v7.1.0-xilinx-v2022.2%" |
51 | XILINX_QEMU_VERSION[v2023.1] = "v7.1.0-xilinx-v2023.1%" | 51 | XILINX_QEMU_VERSION[v2023.1] = "v7.1.0-xilinx-v2023.1%" |
52 | XILINX_QEMU_VERSION[v2023.2] = "v7.1.0-xilinx-v2023.2%" | ||
52 | PREFERRED_VERSION_qemu-xilinx ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 53 | PREFERRED_VERSION_qemu-xilinx ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" |
53 | PREFERRED_VERSION_qemu-xilinx-native ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 54 | PREFERRED_VERSION_qemu-xilinx-native ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" |
54 | PREFERRED_VERSION_qemu-xilinx-system-native ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 55 | PREFERRED_VERSION_qemu-xilinx-system-native ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" |
55 | PREFERRED_VERSION_qemu-devicetrees ?= "xilinx-${XILINX_RELEASE_VERSION}%" | 56 | PREFERRED_VERSION_qemu-devicetrees ?= "xilinx-${XILINX_RELEASE_VERSION}%" |
56 | PREFERRED_PROVIDER_qemu ?= "qemu-xilinx" | 57 | PREFERRED_PROVIDER_qemu ?= "qemu-xilinx" |
57 | 58 | ||
58 | XILINX_ATF_VERSION[v2022.1] = "2.6-xilinx-v2022.1%" | ||
59 | XILINX_ATF_VERSION[v2022.2] = "2.6-xilinx-v2022.2%" | ||
60 | XILINX_ATF_VERSION[v2023.1] = "2.8-xilinx-v2023.1%" | 59 | XILINX_ATF_VERSION[v2023.1] = "2.8-xilinx-v2023.1%" |
60 | XILINX_ATF_VERSION[v2023.2] = "2.8-xilinx-v2023.2%" | ||
61 | PREFERRED_VERSION_arm-trusted-firmware ?= "${@d.getVarFlag('XILINX_ATF_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 61 | PREFERRED_VERSION_arm-trusted-firmware ?= "${@d.getVarFlag('XILINX_ATF_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" |
62 | 62 | ||
63 | XILINX_UBOOT_VERSION[v2022.1] = "v2021.01-xilinx-v2022.1%" | ||
64 | XILINX_UBOOT_VERSION[v2022.2] = "v2021.01-xilinx-v2022.2%" | ||
65 | XILINX_UBOOT_VERSION[v2023.1] = "v2023.01-xilinx-v2023.1%" | 63 | XILINX_UBOOT_VERSION[v2023.1] = "v2023.01-xilinx-v2023.1%" |
64 | XILINX_UBOOT_VERSION[v2023.2] = "v2023.01-xilinx-v2023.2%" | ||
66 | 65 | ||
67 | PREFERRED_VERSION_u-boot-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 66 | PREFERRED_VERSION_u-boot-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" |
68 | PREFERRED_VERSION_u-boot-tools-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 67 | PREFERRED_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', | |||
70 | XILINX_LINUX_VERSION[v2022.1] = "5.15.19-xilinx-v2022.1%" | 69 | XILINX_LINUX_VERSION[v2022.1] = "5.15.19-xilinx-v2022.1%" |
71 | XILINX_LINUX_VERSION[v2022.2] = "5.15.36-xilinx-v2022.2%" | 70 | XILINX_LINUX_VERSION[v2022.2] = "5.15.36-xilinx-v2022.2%" |
72 | XILINX_LINUX_VERSION[v2023.1] = "6.1.30-xilinx-v2023.1%" | 71 | XILINX_LINUX_VERSION[v2023.1] = "6.1.30-xilinx-v2023.1%" |
72 | XILINX_LINUX_VERSION[v2023.2] = "6.1.30-xilinx-v2023.2%" | ||
73 | PREFERRED_VERSION_linux-xlnx ?= "${@d.getVarFlag('XILINX_LINUX_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 73 | PREFERRED_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, | |||
142 | not every machine file will have all of these variables, only the ones | 142 | not every machine file will have all of these variables, only the ones |
143 | you need to override should be set. | 143 | you need to override should be set. |
144 | 144 | ||
145 | Variables set before required inclusion file: | ||
146 | Variables that changes based on hw design or board specific requirement must be | ||
147 | set before required inclusion file else pre-expansion value defined in generic | ||
148 | machine conf will be set. This way user can also override these variables from | ||
149 | local.conf | ||
150 | |||
145 | System wide setting: | 151 | System wide setting: |
146 | TUNE_FEATURES:tune-<tune> - Specific tune features | 152 | TUNE_FEATURES:tune-<tune> - Specific tune features |
147 | 153 | ||
148 | external-hdf recipe from meta-xilinx-tools: | 154 | external-hdf recipe from meta-xilinx-tools: |
149 | HDF_MACHINE - Used by the recipe to find the correct XSA | 155 | HDF_MACHINE - Machine to load from reference defign xsa using hdf-examples recipe |
150 | HDF_EXT - only xsa is supported, legacy variable | 156 | HDF_EXT - Only ".xsa" externsion is supported, legacy variable. |
151 | HDF_BASE - protocol if not using the default external-hdf repository | 157 | HDF_BASE - Download protocol (file://, git://, http:// or https://) protocol if |
152 | HDF_PATH - path to the repository or XSA file | 158 | not using the default external-hdf repository. |
159 | HDF_PATH - Path to the repository or XSA file | ||
160 | |||
161 | fs-boot recipe from meta-xilinx-tools: | ||
162 | YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot - YAML based uart stdin configuration for | ||
163 | MicroBlaze. Example: axi_uartlite_0 or axi_uart16550_0 etc,. | ||
164 | YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot - YAML based uart stdout configuration for | ||
165 | MicroBlaze. Example: axi_uartlite_0 or axi_uart16550_0 etc,. | ||
166 | YAML_MAIN_MEMORY_CONFIG:pn-fs-boot - YAML based DDR4 or MIG configuration for | ||
167 | MicroBlaze. Example: DDR4_0 or MIG_7SERIES_0 etc,. | ||
168 | YAML_FLASH_MEMORY_CONFIG:pn-fs-boot - YAML based flash configuration for | ||
169 | MicroBlaze. Example: axi_emc_0 or axi_quad_spi_0 etc,. | ||
170 | XSCTH_PROC:pn-fs-boot - Processor IP used while configuring embeddedsw compoments. | ||
171 | Example: microblaze_0 or microblaze_1 etc,. | ||
172 | |||
173 | fsbl-firmware recipe from meta-xilinx-tools: | ||
174 | YAML_SERIAL_CONSOLE_STDIN:pn-fsbl-firmware - YAML based FSBL uart stdin configuration | ||
175 | for Zynq-7000 and ZynqMP devices. | ||
176 | YAML_SERIAL_CONSOLE_STDOUT:pn-fsbl-firmware - YAML based FSBL uart stdout configuration | ||
177 | for Zynq-7000 and ZynqMP devices. | ||
178 | |||
179 | pmu-firmware recipe from meta-xilinx-tools: | ||
180 | YAML_SERIAL_CONSOLE_STDIN:pn-pmu-firmware - YAML based PMUFW uart stdin configuration | ||
181 | for ZynqMP devices. | ||
182 | YAML_SERIAL_CONSOLE_STDOUT:pn-pmu-firmware - YAML based PMUFW uart stdout configuration | ||
183 | for ZynqMP devices. | ||
184 | |||
185 | plm-firmware recipe from meta-xilinx-tools: | ||
186 | YAML_SERIAL_CONSOLE_STDIN:pn-plm-firmware - YAML based PLM uart stdin configuration | ||
187 | for Versal devices. | ||
188 | YAML_SERIAL_CONSOLE_STDOUT:pn-fplmsbl-firmware - YAML based PLM uart stdout | ||
189 | configuration for Versal devices. | ||
153 | 190 | ||
154 | device-tree recipe from meta-xilinx-tools: | 191 | device-tree recipe from meta-xilinx-tools: |
155 | YAML_DT_BOARD_FLAGS - flags used for dtgen | 192 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree - YAML based uart console configuration |
193 | for all device families. Example: axi_uartlite_0 or psu_uart_0 etc,. | ||
194 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree - YAML based memory configuration for all | ||
195 | device families. Example: DDR4_0 or PS7_DDR_0 or PSU_DDR_0 etc,. | ||
196 | XSCTH_PROC:pn-device-tree - Processor IP used while configuring device-tree | ||
197 | compoments. Example: microblaze_0 or microblaze_1 etc,. | ||
198 | YAML_DT_BOARD_FLAGS:pn-device-tree - YAML based configuration for setting eval | ||
199 | board specific dtsi files available in DTG repo. | ||
200 | |||
201 | arm-trusted-firmware recipe from meta-xilinx-core: | ||
202 | ATF_CONSOLE - Uart console configuration for all aarch64 device families. | ||
203 | Example: pl011 or cadence or cadence1 etc,. | ||
204 | TFA_BL33_LOAD - BL33 preloadded base address to EXTRA_OEMAKE for aarch64. | ||
156 | 205 | ||
157 | u-boot-xlnx recipe from meta-xilinx-core: | 206 | u-boot-xlnx recipe from meta-xilinx-core: |
158 | UBOOT_MACHINE - Name of the defconfig to use | 207 | UBOOT_MACHINE - Name of the defconfig to use |
159 | HAS_PLATFORM_INIT - List of defconfig files available for u-boot | 208 | HAS_PLATFORM_INIT - List of defconfig files available for u-boot only for SPL boot. |
209 | |||
210 | u-boot-xlnx-scr recipe from meta-xilinx-core: | ||
211 | DDR_BASEADDR - Base address for DDR used for loading the images from u-boot env. | ||
212 | SKIP_APPEND_BASEADDR - Skip appending ${DDR_BASEADDR} for image offsets. | ||
213 | |||
214 | Varibable set after required inclusion file: | ||
215 | Varibables that does not intend to change must be set before required inclusion | ||
216 | file. | ||
217 | |||
218 | external-hdf recipe from meta-xilinx-tools: | ||
219 | HDF_MACHINE - Used by the recipe to find the correct XSA | ||
220 | HDF_EXT - only xsa is supported, legacy variable | ||
221 | HDF_BASE - protocol if not using the default external-hdf repository | ||
222 | HDF_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 |
65 | INITRAMFS_IMAGE ??= "" | 65 | INITRAMFS_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 | ||
70 | IMAGE_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 |
69 | WKS_FILE_DEPENDS ?= "${WKS_FILE_DEPENDS_DEFAULT} ${WKS_FILE_DEPENDS_BOOTLOADERS}" | 74 | WKS_FILE_DEPENDS ?= "${WKS_FILE_DEPENDS_DEFAULT} ${WKS_FILE_DEPENDS_BOOTLOADERS}" |
70 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.bin', ' virtual/boot-bin', '', d)}" | 75 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.bin', ' virtual/boot-bin', '', d)}" |
71 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'system.dtb', ' virtual/dtb', '', d)}" | 76 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'system.dtb', ' virtual/dtb', '', d)}" |
72 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.scr', ' u-boot-xlnx-scr', '', d)}" | 77 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.scr', ' u-boot-xlnx-scr', '', d)}" |
73 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}" | 78 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}" |
74 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'atf-uboot.ub', ' arm-trusted-firmware', '', d)}" | 79 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'atf-uboot.ub', ' arm-trusted-firmware', '', d)}" |
75 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'Image', ' virtual/kernel', '', d)}" | 80 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'Image', ' virtual/kernel', '', d)}" |
76 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'uImage', ' virtual/kernel', '', d)}" | 81 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uImage', ' virtual/kernel', '', d)}" |
77 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'zImage', ' virtual/kernel', '', d)}" | 82 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'zImage', ' virtual/kernel', '', d)}" |
78 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'u-boot.bin', ' virtual/bootloader', '', d)}" | 83 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'u-boot.bin', ' virtual/bootloader', '', d)}" |
79 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'u-boot.elf', ' virtual/bootloader', '', d)}" | 84 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'u-boot.elf', ' virtual/bootloader', '', d)}" |
80 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', '${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot', ' ${INITRAMFS_IMAGE}', '', d)}" | 85 | WKS_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 |
83 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.bin', ' ${PREFERRED_PROVIDER_virtual/boot-bin}', '', d)}" | 88 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.bin', ' ${PREFERRED_PROVIDER_virtual/boot-bin}', '', d)}" |
84 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'system.dtb', ' ${PREFERRED_PROVIDER_virtual/dtb}', '', d)}" | 89 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'system.dtb', ' ${PREFERRED_PROVIDER_virtual/dtb}', '', d)}" |
85 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.scr', ' u-boot-xlnx-scr', '', d)}" | 90 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.scr', ' u-boot-xlnx-scr', '', d)}" |
86 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}" | 91 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}" |
87 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'atf-uboot.ub', ' arm-trusted-firmware', '', d)}" | 92 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'atf-uboot.ub', ' arm-trusted-firmware', '', d)}" |
88 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'u-boot.bin', ' ${PREFERRED_PROVIDER_virtual/bootloader}-bin', '', d)}" | 93 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'u-boot.bin', ' ${PREFERRED_PROVIDER_virtual/bootloader}-bin', '', d)}" |
89 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'u-boot.elf', ' ${PREFERRED_PROVIDER_virtual/bootloader}-elf', '', d)}" | 94 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'u-boot.elf', ' ${PREFERRED_PROVIDER_virtual/bootloader}-elf', '', d)}" |
90 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'Image', ' kernel-image-image', '', d)}" | 95 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'Image', ' kernel-image-image', '', d)}" |
91 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'uImage', ' kernel-image-uimage', '', d)}" | 96 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uImage', ' kernel-image-uimage', '', d)}" |
92 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'zImage', ' kernel-image-zimage', '', d)}" | 97 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'zImage', ' kernel-image-zimage', '', d)}" |
93 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', '${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot', ' initramdisk-${INITRAMFS_IMAGE}', '', d)}" | 98 | MACHINE_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 / |
96 | WKS_FILES ?= "xilinx-default-sd.wks" | 101 | WKS_FILES ?= "xilinx-default-sd.wks" |
@@ -128,3 +133,6 @@ def get_default_image_boot_files(d): | |||
128 | XSERVER_EXT ?= "" | 133 | XSERVER_EXT ?= "" |
129 | 134 | ||
130 | FPGA_MNGR_RECONFIG_ENABLE ?= "1" | 135 | FPGA_MNGR_RECONFIG_ENABLE ?= "1" |
136 | |||
137 | # This variable is supported only with SysVinit. | ||
138 | SERIAL_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 | ||
6 | USE_BOARD = "${@"conf/machine/include/xilinx-board-pre.inc" if d.getVar("BOARD") or d.getVar("BOARD_VARIANT") else ""}" | ||
7 | require ${USE_BOARD} | ||
8 | unset USE_BOARD | ||
9 | |||
5 | #### Preamble | 10 | #### Preamble |
6 | MACHINEOVERRIDES =. "${@['', 'microblaze-generic:']['microblaze-generic' != '${MACHINE}']}" | 11 | MACHINEOVERRIDES =. "${@['', '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... |
10 | TUNE_FEATURES:tune-microblaze ?= "microblaze v11.0 barrel-shift pattern-compare reorder divide-hard multiply-high" | 15 | TUNE_FEATURES:tune-microblaze ?= "microblaze v11.0 pattern-compare barrel-shift divide-hard multiply-high fpu-hard reorder" |
11 | DEFAULTTUNE ?= "microblaze" | 16 | DEFAULTTUNE ?= "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 | ||
23 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "axi_uartlite_0" | ||
24 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "DDR4_0" | ||
25 | DT_PADDING_SIZE:pn-device-tree ?= "0x1000" | ||
26 | DTC_FLAGS:pn-device-tree ?= "" | ||
27 | XSCTH_PROC:pn-device-tree ?= "microblaze_0" | ||
28 | YAML_DT_BOARD_FLAGS ?= "{BOARD kcu105}" | ||
29 | |||
17 | # Yocto Microblaze FS-Boot variables | 30 | # Yocto Microblaze FS-Boot variables |
18 | YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot ?= "axi_uartlite_0" | 31 | YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot ?= "axi_uartlite_0" |
19 | YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot ?= "axi_uartlite_0" | 32 | YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot ?= "axi_uartlite_0" |
20 | YAML_MAIN_MEMORY_CONFIG:pn-fs-boot ?= "MIG_7SERIES_0" | 33 | YAML_MAIN_MEMORY_CONFIG:pn-fs-boot ?= "DDR4_0" |
21 | YAML_FLASH_MEMORY_CONFIG:pn-fs-boot ?= "axi_emc_0" | 34 | YAML_FLASH_MEMORY_CONFIG:pn-fs-boot ?= "axi_quad_spi_0" |
22 | XSCTH_PROC:pn-fs-boot ?= "microblaze_0" | 35 | XSCTH_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" | |||
26 | UBOOT_INITIAL_ENV = "" | 39 | UBOOT_INITIAL_ENV = "" |
27 | BOOTMODE ?= "generic.root" | 40 | BOOTMODE ?= "generic.root" |
28 | 41 | ||
29 | # Yocto device-tree variables | ||
30 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "axi_uartlite_0" | ||
31 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "MIG_7SERIES_0" | ||
32 | DT_PADDING_SIZE:pn-device-tree ?= "0x1000" | ||
33 | DTC_FLAGS:pn-device-tree ?= "" | ||
34 | XSCTH_PROC:pn-device-tree ?= "microblaze_0" | ||
35 | YAML_DT_BOARD_FLAGS ?= "{BOARD kc705-full}" | ||
36 | |||
37 | # Yocto Microblaze KERNEL Variables | 42 | # Yocto Microblaze KERNEL Variables |
38 | UBOOT_ENTRYPOINT ?= "0x80000000" | 43 | UBOOT_ENTRYPOINT ?= "0x80000000" |
39 | UBOOT_LOADADDRESS ?= "0x80000000" | 44 | UBOOT_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 |
43 | SERIAL_CONSOLES ?= "115200;ttyUL0" | 48 | SERIAL_CONSOLES ?= "115200;ttyUL0" |
44 | SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}" | ||
45 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | 49 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" |
46 | 50 | ||
47 | require conf/machine/include/soc-tune-include.inc | 51 | require 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 | ||
57 | MACHINE_ARCH = "${@['${MB_MACHINE_ARCH}', '${DEF_MACHINE_ARCH}']['microblaze-generic' != "${MACHINE}"]}" | 61 | MACHINE_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. |
62 | HDF_MACHINE = "kc705-microblazeel" | 66 | HDF_MACHINE = "kcu105-microblazeel" |
63 | 67 | ||
64 | MACHINE_FEATURES = "" | 68 | MACHINE_FEATURES = "" |
65 | 69 | ||
66 | KERNEL_IMAGETYPE ?= "linux.bin.ub" | 70 | KERNEL_IMAGETYPE ?= "linux.bin.ub" |
67 | KERNEL_IMAGETYPES = "" | 71 | KERNEL_IMAGETYPES = "" |
68 | 72 | ||
69 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree" | 73 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "${PREFERRED_PROVIDER_virtual/dtb}" |
70 | 74 | ||
71 | IMAGE_BOOT_FILES += " \ | 75 | IMAGE_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 | ||
75 | EXTRA_IMAGEDEPENDS += " \ | 79 | EXTRA_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 |
95 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' ${MB_MACHINE_ARCH}']['microblaze-generic' != "${MACHINE}"]}" | 99 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' ${MB_MACHINE_ARCH}']['microblaze-generic' != "${MACHINE}"]}" |
100 | |||
101 | # Deprecated board config | ||
102 | USE_BOARD = "${@"conf/machine/include/xilinx-board-post.inc" if d.getVar("BOARD") or d.getVar("BOARD_VARIANT") else ""}" | ||
103 | require ${USE_BOARD} | ||
104 | unset 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 |
35 | SERIAL_CONSOLES ?= "115200;ttyAMA0" | 35 | SERIAL_CONSOLES ?= "115200;ttyAMA0" |
36 | SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}" | ||
37 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | 36 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" |
38 | 37 | ||
39 | require conf/machine/include/soc-versal.inc | 38 | require conf/machine/include/soc-versal.inc |
@@ -47,7 +46,7 @@ HDF_MACHINE = "vck190-versal" | |||
47 | 46 | ||
48 | MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost" | 47 | MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost" |
49 | 48 | ||
50 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree" | 49 | MACHINE_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 |
53 | IMAGE_CLASSES += "image-types-xilinx-qemu" | 52 | IMAGE_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 @@ | |||
1 | XILINX_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 |
34 | SERIAL_CONSOLES ?= "115200;ttyPS0" | 34 | SERIAL_CONSOLES ?= "115200;ttyPS0" |
35 | SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}" | ||
36 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | 35 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" |
37 | 36 | ||
38 | require conf/machine/include/soc-zynq.inc | 37 | require conf/machine/include/soc-zynq.inc |
@@ -46,7 +45,7 @@ HDF_MACHINE = "zc702-zynq7" | |||
46 | 45 | ||
47 | MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost usbgadget" | 46 | MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost usbgadget" |
48 | 47 | ||
49 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree" | 48 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "${PREFERRED_PROVIDER_virtual/dtb}" |
50 | 49 | ||
51 | EXTRA_IMAGEDEPENDS += " \ | 50 | EXTRA_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 |
46 | SERIAL_CONSOLES ?= "115200;ttyPS0" | 46 | SERIAL_CONSOLES ?= "115200;ttyPS0" |
47 | SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}" | ||
48 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | 47 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" |
49 | 48 | ||
50 | require conf/machine/include/soc-zynqmp.inc | 49 | require 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 |
66 | IMAGE_FSTYPES += "${@'wic.qemu-sd' if (d.getVar('INITRAMFS_IMAGE') or '') == '' else 'cpio.gz.u-boot'}" | 65 | IMAGE_FSTYPES += "${@'wic.qemu-sd' if (d.getVar('INITRAMFS_IMAGE') or '') == '' else 'cpio.gz.u-boot'}" |
67 | 66 | ||
68 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree" | 67 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "${PREFERRED_PROVIDER_virtual/dtb}" |
69 | 68 | ||
70 | EXTRA_IMAGEDEPENDS += " \ | 69 | EXTRA_IMAGEDEPENDS += " \ |
71 | libyaml-native \ | 70 | libyaml-native \ |
@@ -150,8 +149,6 @@ QB_PMU_OPT = " \ | |||
150 | 149 | ||
151 | QB_OPT_APPEND += " -pmu-args '${QB_PMU_OPT}'" | 150 | QB_OPT_APPEND += " -pmu-args '${QB_PMU_OPT}'" |
152 | 151 | ||
153 | do_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 |
157 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' zynqmp_generic']['zynqmp-generic' != "${MACHINE}"]}" | 154 | PACKAGE_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 @@ | |||
1 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" | 1 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" |
2 | 2 | ||
3 | SRC_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 |
11 | DT_INCLUDE:append = " ${WORKDIR}" | 4 | DT_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 = "" | |||
19 | COMPATIBLE_MACHINE:zynq = "${MACHINE}" | 21 | COMPATIBLE_MACHINE:zynq = "${MACHINE}" |
20 | COMPATIBLE_MACHINE:zynqmp = "${MACHINE}" | 22 | COMPATIBLE_MACHINE:zynqmp = "${MACHINE}" |
21 | COMPATIBLE_MACHINE:versal = "${MACHINE}" | 23 | COMPATIBLE_MACHINE:versal = "${MACHINE}" |
24 | COMPATIBLE_MACHINE:versal-net = "${MACHINE}" | ||
22 | 25 | ||
23 | inherit devicetree image-artifact-names features_check | 26 | inherit 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 @@ | |||
1 | SRCBRANCH ?= "2023.2" | ||
2 | SRCREV = "00fd771adc7adaed664ed6c5bc3d48d25856fe5c" | ||
3 | BRANCH = "xlnx_rel_v2023.2" | ||
4 | LIC_FILES_CHKSUM ?= "file://LICENSE.md;md5=f4d5df0f12dcea1b1a0124219c0dbab4" | ||
5 | PV = "${SRCBRANCH}+git${SRCPV}" | ||
6 | |||
7 | REPO = "git://github.com/Xilinx/libmetal.git;protocol=https" | ||
8 | |||
9 | include ${LAYER_PATH_openamp-layer}/recipes-openamp/libmetal/libmetal.inc | ||
10 | |||
11 | RPROVIDES:${PN}-dbg += "libmetal-dbg" | ||
12 | RPROVIDES:${PN}-dev += "libmetal-dev" | ||
13 | RPROVIDES:${PN}-lic += "libmetal-lic" | ||
14 | RPROVIDES:${PN}-src += "libmetal-src" | ||
15 | RPROVIDES:${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 @@ | |||
1 | SRCBRANCH ?= "2023.2" | ||
2 | SRCREV = "73a546f2b5faffe71680b1e5389f3328be60773f" | ||
3 | BRANCH = "xlnx_rel_v2023.2" | ||
4 | LIC_FILES_CHKSUM ?= "file://LICENSE.md;md5=ab88daf995c0bd0071c2e1e55f3d3505" | ||
5 | PV = "${SRCBRANCH}+git${SRCPV}" | ||
6 | REPO = "git://github.com/Xilinx/open-amp.git;protocol=https" | ||
7 | |||
8 | include ${LAYER_PATH_openamp-layer}/recipes-openamp/open-amp/open-amp.inc | ||
9 | require ${LAYER_PATH_openamp-layer}/vendor/xilinx/recipes-openamp/open-amp/open-amp-xlnx.inc | ||
10 | |||
11 | RPROVIDES:${PN}-dbg += "open-amp-dbg" | ||
12 | RPROVIDES:${PN}-dev += "open-amp-dev" | ||
13 | RPROVIDES:${PN}-lic += "open-amp-lic" | ||
14 | RPROVIDES:${PN}-src += "open-amp-src" | ||
15 | RPROVIDES:${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 @@ | |||
1 | SRC_URI = "git://github.com/devicetree-org/lopper.git;branch=master;protocol=https" | 1 | SRC_URI = "git://github.com/devicetree-org/lopper.git;branch=master;protocol=https" |
2 | SRCREV = "395f00d44ee259d5db6fd6165c6cd18c8fe40e2f" | 2 | SRCREV = "807435ae6fa0a07e8c84b458d138f3f54614eb5c" |
3 | 3 | ||
4 | FILESEXTRAPATHS:prepend := "${THISDIR}/lopper:" | 4 | FILESEXTRAPATHS: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" | |||
12 | COMPATIBLE_MACHINE = "^$" | 12 | COMPATIBLE_MACHINE = "^$" |
13 | COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core" | 13 | COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core" |
14 | COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}" | 14 | COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}" |
15 | PV = "3.2" | 15 | PV = "3.3" |
16 | 16 | ||
17 | IOBACKENDS ?= "Linux" | 17 | IOBACKENDS ?= "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 |
26 | PARALLEL_MAKE = "-j 1" | 26 | PARALLEL_MAKE = "-j 1" |
27 | 27 | ||
28 | CFLAGS += "-Wall -Wextra -fno-thread-jumps -fno-tree-pre" | 28 | CFLAGS += "-Wall -Wextra" |
29 | CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'Linux', ' -D__AIELINUX__', '', d)}" | 29 | CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'Linux', ' -D__AIELINUX__', '', d)}" |
30 | CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'metal', ' -D__AIEMETAL__', '', d)}" | 30 | CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'metal', ' -D__AIEMETAL__', '', d)}" |
31 | EXTRA_OEMAKE = "-C ${AIEDIR}/src -f Makefile.Linux CFLAGS='${CFLAGS}'" | 31 | EXTRA_OEMAKE = "-C ${AIEDIR}/src -f Makefile.Linux CFLAGS='${CFLAGS}'" |
@@ -45,3 +45,5 @@ do_install(){ | |||
45 | } | 45 | } |
46 | 46 | ||
47 | PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}" | 47 | PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}" |
48 | PACKAGE_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 | ||
3 | REPO ?= "git://github.com/Xilinx/aie-rt.git;protocol=https" | 3 | REPO ?= "git://github.com/Xilinx/aie-rt.git;protocol=https" |
4 | 4 | ||
5 | BRANCH ?= "xlnx_rel_v2023.1" | 5 | BRANCH ?= "xlnx_rel_v2023.2" |
6 | SRCREV ?= "1ad203de0b7f282b1c0659fd2ae3f218652c7274" | 6 | SRCREV ?= "84debe5d22c144fb09269b8410df4cb8a6aa3b2a" |
7 | 7 | ||
8 | LICENSE = "BSD-3-Clause" | 8 | LICENSE = "BSD-3-Clause" |
9 | LIC_FILES_CHKSUM ?= "file://license.txt;md5=b81abf1f508952331dd7d2ab36408f5b" | 9 | LIC_FILES_CHKSUM ?= "file://license.txt;md5=04a153cae61a8a606fc79dff49c2c897" |
10 | 10 | ||
11 | SRC_URI = "${REPO};branch=${BRANCH}" | 11 | SRC_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 | ||
33 | PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}" | 33 | PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}" |
34 | PACKAGE_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 @@ | |||
1 | ATF_VERSION = "2.8" | ||
2 | SRCREV = "6be857cb66300fb21e3f61308e4197911c8ac30d" | ||
3 | BRANCH = "xlnx_rebase_v2.8" | ||
4 | LIC_FILES_CHKSUM = "file://license.rst;md5=1dd070c98a281d18d9eefd938729b031" | ||
5 | |||
6 | |||
7 | include 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 @@ | |||
1 | DESCRIPTION = "Recipe to provide a bitstream via virtual/bitstream" | ||
2 | |||
3 | LICENSE = "MIT" | ||
4 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" | ||
5 | |||
6 | INHIBIT_DEFAULT_DEPS = "1" | ||
7 | |||
8 | # We never want to prefer this over another provider | ||
9 | DEFAULT_PREFERENCE = "-1" | ||
10 | |||
11 | PROVIDES = "virtual/bitstream" | ||
12 | |||
13 | COMPATIBLE_MACHINE = "$^" | ||
14 | COMPATIBLE_MACHINE:zynq = ".*" | ||
15 | COMPATIBLE_MACHINE:zynqmp = ".*" | ||
16 | |||
17 | # Since we're just copying, we can run any config | ||
18 | COMPATIBLE_HOST = ".*" | ||
19 | |||
20 | PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
21 | |||
22 | # Path where the bitstream can be found | ||
23 | BITSTREAM_PATH ?= "" | ||
24 | |||
25 | inherit deploy | ||
26 | |||
27 | do_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! | ||
37 | SHOULD_DEPLOY = "${@'false' if (d.getVar('BITSTREAM_PATH')).startswith(d.getVar('DEPLOY_DIR_IMAGE')) else 'true'}" | ||
38 | do_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 | |||
45 | def 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 | |||
55 | python() { | ||
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 ?= "" | |||
44 | do_patch[noexec] = "1" | 44 | do_patch[noexec] = "1" |
45 | 45 | ||
46 | def create_bif(config, attrflags, attrimage, ids, common_attr, biffd, d): | 46 | def 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 | |||
50 | def 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): | |||
117 | python do_configure() { | 121 | python 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 @@ | |||
1 | SUMMARY = "Building and installing bootgen" | ||
2 | DESCRIPTION = "Building and installing bootgen, a Xilinx tool that lets you stitch binary files together and generate device boot images" | ||
3 | |||
4 | LICENSE = "Apache-2.0" | ||
5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=d526b6d0807bf263b97da1da876f39b1" | ||
6 | |||
7 | S = "${WORKDIR}/git" | ||
8 | |||
9 | DEPENDS += "openssl" | ||
10 | RDEPENDS:${PN} += "openssl" | ||
11 | |||
12 | REPO ?= "git://github.com/Xilinx/bootgen.git;protocol=https" | ||
13 | BRANCH = "xlnx_rel_v2023.2" | ||
14 | SRCREV = "8e6702bb5064b806e45028486de7376962470a36" | ||
15 | |||
16 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
17 | SRC_URI = "${REPO};${BRANCHARG}" | ||
18 | |||
19 | EXTRA_OEMAKE += 'CROSS_COMPILER="${CXX}" -C ${S}' | ||
20 | CXXFLAGS:append = " -std=c++0x" | ||
21 | |||
22 | TARGET_CC_ARCH += "${LDFLAGS}" | ||
23 | |||
24 | do_install() { | ||
25 | install -d ${D}${bindir} | ||
26 | install -Dm 0755 ${S}/bootgen ${D}${bindir} | ||
27 | } | ||
28 | |||
29 | FILES:${PN} = "${bindir}/bootgen" | ||
30 | |||
31 | BBCLASSEXTEND = "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. | ||
15 | KERNEL_INCLUDE ?= "" | ||
16 | |||
12 | inherit devicetree image-artifact-names | 17 | inherit 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. |
18 | SYSTEM_DTFILE ??= "" | 23 | SYSTEM_DTFILE ??= "" |
19 | CONFIG_DTFILE ??= "${SYSTEM_DTFILE}" | 24 | CONFIG_DTFILE ??= "${SYSTEM_DTFILE}" |
20 | DT_FILES_PATH = "${@os.path.dirname(d.getVar('CONFIG_DTFILE')) if d.getVar('CONFIG_DTFILE') else d.getVar('S')}" | 25 | |
26 | BASE_DTS ?= "${@os.path.basename(d.getVar('CONFIG_DTFILE') or '').rstrip('.dtb').rstrip('.dts') or 'system-top'}" | ||
27 | |||
28 | EXTRA_DT_FILES ?= "" | ||
29 | EXTRA_DTFILE_PREFIX ?= "system-top" | ||
30 | EXTRA_DTFILES_BUNDLE ?= "" | ||
31 | UBOOT_DT_FILES ?= "" | ||
32 | UBOOT_DTFILE_PREFIX ?= "system-top" | ||
33 | UBOOT_DTFILES_BUNDLE ?= "" | ||
34 | EXTRA_OVERLAYS ?= "" | ||
35 | |||
36 | SYSTEM_DTFILE[doc] = "System Device Tree which accepts at 0...1 dts file" | ||
37 | CONFIG_DTFILE[doc] = "Domain Specific Device Tree which accepts 0...1 dts file" | ||
38 | EXTRA_DT_FILES[doc] = "Add extra files to DT_FILES_PATH, it accepts 1...n dtsi files and adds to SRC_URI" | ||
39 | EXTRA_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 | ||
43 | FILESEXTRAPATHS:prepend := "${@'%s:' % os.path.dirname(d.getVar('CONFIG_DTFILE') or '') if (d.getVar('CONFIG_DTFILE')) else ''}" | ||
44 | SRC_URI:append := " ${@'file://%s' % os.path.basename(d.getVar('CONFIG_DTFILE') or '') if (d.getVar('CONFIG_DTFILE')) else ''}" | ||
45 | |||
46 | SRC_URI:append = " ${@" ".join(["file://%s" % f for f in (d.getVar('EXTRA_DT_FILES') or "").split()])}" | ||
47 | SRC_URI:append = " ${@" ".join(["file://%s" % f for f in (d.getVar('EXTRA_OVERLAYS') or "").split()])}" | ||
21 | 48 | ||
22 | COMPATIBLE_MACHINE:zynq = ".*" | 49 | COMPATIBLE_MACHINE:zynq = ".*" |
23 | COMPATIBLE_MACHINE:zynqmp = ".*" | 50 | COMPATIBLE_MACHINE:zynqmp = ".*" |
@@ -30,11 +57,71 @@ PROVIDES = "virtual/dtb" | |||
30 | # common zynq include | 57 | # common zynq include |
31 | SRC_URI:append:zynq = " file://zynq-7000-qspi-dummy.dtsi" | 58 | SRC_URI:append:zynq = " file://zynq-7000-qspi-dummy.dtsi" |
32 | 59 | ||
33 | DTB_FILE_NAME = "${@os.path.basename(d.getVar('CONFIG_DTFILE')).replace('.dts', '.dtb') if d.getVar('CONFIG_DTFILE') else ''}" | 60 | DTB_FILE_NAME ?= "${BASE_DTS}.dtb" |
34 | 61 | ||
35 | DTB_BASE_NAME ?= "${MACHINE}-system${IMAGE_VERSION_SUFFIX}" | 62 | DTB_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. | ||
66 | do_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 | |||
79 | do_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 | |||
93 | devicetree_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 | |||
37 | FILES:${PN} += "/boot/system.dtb" | 123 | FILES:${PN} += "/boot/system.dtb" |
124 | |||
38 | devicetree_do_install:append() { | 125 | devicetree_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 | ||
85 | python() { | 164 | python() { |
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 @@ | |||
1 | SUMMARY = "Xilinx dfx-mgr libraries" | ||
2 | DESCRIPTION = "Xilinx Runtime User Space Libraries and Binaries" | ||
3 | |||
4 | LICENSE = "MIT" | ||
5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=d67bcef754e935bf77b6d7051bd62b5e" | ||
6 | |||
7 | REPO ?= "git://github.com/Xilinx/dfx-mgr.git;protocol=https" | ||
8 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
9 | SRC_URI = "${REPO};${BRANCHARG}" | ||
10 | |||
11 | BRANCH = "xlnx_rel_v2023.2" | ||
12 | SRCREV = "4dbd33accb043bd92ecbec2a3507f85a22045c51" | ||
13 | SOMAJOR = "1" | ||
14 | SOMINOR = "0" | ||
15 | SOVERSION = "${SOMAJOR}.${SOMINOR}" | ||
16 | |||
17 | COMPATIBLE_MACHINE = "^$" | ||
18 | COMPATIBLE_MACHINE:zynqmp = "zynqmp" | ||
19 | COMPATIBLE_MACHINE:versal = "versal" | ||
20 | |||
21 | S = "${WORKDIR}/git" | ||
22 | |||
23 | inherit cmake update-rc.d systemd | ||
24 | |||
25 | DEPENDS += " libwebsockets inotify-tools libdfx zocl libdrm" | ||
26 | RDEPENDS:${PN} += " freeipmi" | ||
27 | EXTRA_OECMAKE += " \ | ||
28 | -DCMAKE_SYSROOT:PATH=${RECIPE_SYSROOT} \ | ||
29 | " | ||
30 | |||
31 | INITSCRIPT_NAME = "dfx-mgr.sh" | ||
32 | INITSCRIPT_PARAMS = "start 99 S ." | ||
33 | |||
34 | SYSTEMD_PACKAGES="${PN}" | ||
35 | SYSTEMD_SERVICE:${PN}="dfx-mgr.service" | ||
36 | SYSTEMD_AUTO_ENABLE:${PN}="enable" | ||
37 | |||
38 | |||
39 | do_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 | |||
68 | PACKAGES =+ "libdfx-mgr" | ||
69 | |||
70 | FILES:${PN} += "${base_libdir}/firmware/xilinx" | ||
71 | FILES:${PN} += "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','${sysconfdir}/init.d/dfx-mgr.sh', '', d)} ${systemd_system_unitdir}" | ||
72 | FILES: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 @@ | |||
1 | SUMMARY = "Xilinx libdfx library" | ||
2 | DESCRIPTION = "Xilinx libdfx Library and headers" | ||
3 | |||
4 | LICENSE = "MIT & GPL-2.0-or-later" | ||
5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=94aba86aec117f003b958a52f019f1a7" | ||
6 | |||
7 | BRANCH ?= "xlnx_rel_v2023.2" | ||
8 | REPO ?= "git://github.com/Xilinx/libdfx.git;protocol=https" | ||
9 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
10 | SRC_URI = "${REPO};${BRANCHARG}" | ||
11 | SRCREV = "52c1d83c72a2b2e85d256411a199ed1baed12ae1" | ||
12 | |||
13 | COMPATIBLE_MACHINE = "^$" | ||
14 | COMPATIBLE_MACHINE:zynqmp = "zynqmp" | ||
15 | COMPATIBLE_MACHINE:versal = "versal" | ||
16 | |||
17 | S = "${WORKDIR}/git" | ||
18 | |||
19 | inherit 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. | ||
23 | RREPLACES:${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 @@ | |||
1 | require u-boot-tools-xlnx.inc | ||
2 | require u-boot-xlnx-2023.2.inc | ||
3 | |||
4 | # MUST clear CONFIG_VIDEO to avoid a compilation failure trying to construct | ||
5 | # bmp_logo.h | ||
6 | SED_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. | ||
11 | do_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 @@ | |||
1 | UBOOT_VERSION = "v2023.01" | ||
2 | |||
3 | UBRANCH = "xlnx_rebase_v2023.01" | ||
4 | |||
5 | SRCREV = "0fc19cad5a07a09958443e7a5b6f11e420ef195c" | ||
6 | |||
7 | LICENSE = "GPL-2.0-or-later" | ||
8 | LIC_FILES_CHKSUM = "file://README;beginline=1;endline=4;md5=744e7e3bb0c94b4b9f6b3db3bf893897" | ||
9 | |||
10 | # u-boot-xlnx has support for these | ||
11 | HAS_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 | |||
17 | DEPENDS += "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" | |||
71 | DEVICETREE_OFFSET:zynq ??= "0x100000" | 71 | DEVICETREE_OFFSET:zynq ??= "0x100000" |
72 | DEVICETREE_OFFSET:versal ??= "0x1000" | 72 | DEVICETREE_OFFSET:versal ??= "0x1000" |
73 | 73 | ||
74 | DEVICETREE_OVERLAY_ADDRESS ?= "${@hex(int(d.getVar("DEVICETREE_ADDRESS"),16) + 0xf00000)}" | 74 | DEVICETREE_OVERLAY_OFFSET:microblaze ??= "0x1e00000" |
75 | DEVICETREE_OVERLAY_OFFSET:zynqmp ??= "0x100000" | ||
76 | DEVICETREE_OVERLAY_OFFSET:zynq ??= "0x100000" | ||
77 | DEVICETREE_OVERLAY_OFFSET:versal ??= "0x1000" | ||
78 | DEVICETREE_OVERLAY_PADSIZE ??= "0xf00000" | ||
79 | |||
80 | DEVICETREE_OVERLAY_ADDRESS ?= "${@hex(int(append_baseaddr(d,d.getVar('DEVICETREE_OVERLAY_OFFSET')),16) \ | ||
81 | + int(d.getVar('DEVICETREE_OVERLAY_PADSIZE'),16))}" | ||
75 | 82 | ||
76 | KERNEL_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('KERNEL_OFFSET'))}" | 83 | KERNEL_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('KERNEL_OFFSET'))}" |
77 | 84 | ||
@@ -162,14 +169,8 @@ NAND_FIT_IMAGE_OFFSET ??= "0x4180000" | |||
162 | NAND_FIT_IMAGE_OFFSET:zynq ??= "0x1080000" | 169 | NAND_FIT_IMAGE_OFFSET:zynq ??= "0x1080000" |
163 | NAND_FIT_IMAGE_SIZE ??= "0x6400000" | 170 | NAND_FIT_IMAGE_SIZE ??= "0x6400000" |
164 | 171 | ||
165 | # Xen boot script variables. Define here and set it from meta-virtualization | 172 | # Add variables as addendum. |
166 | XEN_OFFSET ??= "0xBA00000" | 173 | SCRIPT_SED_ADDENDUM = "" |
167 | XEN_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('XEN_OFFSET'))}" | ||
168 | XEN_IMAGE_NAME ??= "xen" | ||
169 | DOM0_MEM ??= "1500M" | ||
170 | XEN_SERIAL_CONSOLES ??= "serial0" | ||
171 | XEN_CMDLINE_APPEND ??= "" | ||
172 | DOM0_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 |
175 | PARTNUM ?= "2" | 176 | PARTNUM ?= "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 |
182 | KERNEL_ROOT_RAMDISK ?= "root=/dev/ram0 rw" | 183 | KERNEL_ROOT_RAMDISK ?= "root=/dev/ram0 rw" |
183 | 184 | ||
185 | # Append the kernel command line | ||
186 | KERNEL_COMMAND_APPEND ?= "" | ||
187 | |||
184 | BITSTREAM_LOAD_ADDRESS ?= "0x100000" | 188 | BITSTREAM_LOAD_ADDRESS ?= "0x100000" |
185 | 189 | ||
186 | do_configure[noexec] = "1" | 190 | do_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@@ | |||
9 | rootfs_name=@@RAMDISK_IMAGE@@ | 9 | rootfs_name=@@RAMDISK_IMAGE@@ |
10 | @@PRE_BOOTENV@@ | 10 | @@PRE_BOOTENV@@ |
11 | 11 | ||
12 | |||
13 | setenv get_bootargs 'fdt addr $fdtcontroladdr;fdt get value bootargs /chosen bootargs;' | ||
14 | setenv 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 | |||
12 | for boot_target in ${boot_targets}; | 17 | for boot_target in ${boot_targets}; |
13 | do | 18 | do |
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 | ||
10 | BASE_DTS ?= "${@os.path.basename(d.getVar('CONFIG_DTFILE') or '').rstrip('.dtb').rstrip('.dts') or 'system-top'}" | 10 | BASE_DTS ?= "${@os.path.basename(d.getVar('CONFIG_DTFILE') or '').rstrip('.dtb').rstrip('.dts') or 'system-top'}" |
11 | DTB_PATH ?= "boot/devicetree/" | 11 | DTB_PATH ?= "boot/devicetree/" |
12 | DTB_NAME ?= "" | 12 | DTB_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" |
18 | UBOOT_USER_SPECIFIED_DTS ?= "" | 18 | UBOOT_USER_SPECIFIED_DTS ?= "" |
19 | 19 | ||
20 | EXTRA_OEMAKE += "${@'EXT_DTB=${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_NAME}' if (d.getVar('DTB_NAME') != '' and d.getVar('UBOOT_USER_SPECIFIED_DTS') == '') else '' }" | 20 | EXTRA_OEMAKE += "${@'EXT_DTB=${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_FILE_NAME}' if (d.getVar('DTB_FILE_NAME') != '' and d.getVar('UBOOT_USER_SPECIFIED_DTS') == '') else '' }" |
21 | EXTRA_OEMAKE += "${@'DEVICE_TREE=${UBOOT_USER_SPECIFIED_DTS}' if (d.getVar('UBOOT_USER_SPECIFIED_DTS') != '') else '' }" | 21 | EXTRA_OEMAKE += "${@'DEVICE_TREE=${UBOOT_USER_SPECIFIED_DTS}' if (d.getVar('UBOOT_USER_SPECIFIED_DTS') != '') else '' }" |
22 | 22 | ||
23 | python __anonymous () { | 23 | python __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 | ||
32 | do_configure:prepend () { | 32 | do_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 | |||
2 | require u-boot-xlnx.inc | ||
3 | require u-boot-spl-zynq-init.inc | ||
4 | require 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 | |||
2 | require qemu-devicetrees.inc | ||
3 | |||
4 | BRANCH ?= "xlnx_rel_v2023.2" | ||
5 | SRCREV ?= "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 @@ | |||
1 | XILINX_QEMU_VERSION = "v7.1.0" | ||
2 | BRANCH = "xlnx_rel_v2023.2" | ||
3 | SRCREV = "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 @@ | |||
1 | require qemu-xilinx-2023.2.inc | ||
2 | require qemu-xilinx-native-7.1.inc | ||
3 | require qemu-native-alt.inc | ||
4 | |||
5 | BPN = "qemu-xilinx" | ||
6 | |||
7 | EXTRA_OECONF:append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent" | ||
8 | |||
9 | PACKAGECONFIG ??= "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 @@ | |||
1 | require qemu-system-native-alt.inc | ||
2 | require qemu-xilinx-2023.2.inc | ||
3 | require qemu-xilinx-native-7.1.inc | ||
4 | |||
5 | PROVIDES = "qemu-system-native" | ||
6 | |||
7 | EXTRA_OECONF:append = " --target-list=${@get_qemu_system_target_list(d)}" | ||
8 | |||
9 | PACKAGECONFIG ??= "fdt alsa kvm gcrypt pie slirp" | ||
10 | |||
11 | PACKAGECONFIG:remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}" | ||
12 | |||
13 | DEPENDS += "pixman-native qemu-xilinx-native bison-native ninja-native meson-native" | ||
14 | DEPENDS += "qemu-xilinx-multiarch-helper-native" | ||
15 | |||
16 | do_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 @@ | |||
1 | require qemu-xilinx-2023.2.inc | ||
2 | require recipes-devtools/qemu/qemu.inc | ||
3 | require qemu-xilinx-7.1.inc | ||
4 | require qemu-alt.inc | ||
5 | |||
6 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | ||
7 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | ||
8 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
9 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | ||
10 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
11 | PACKAGE_ARCH:class-target = "${@bb.utils.contains_any('DEPENDS', 'libepoxy virglrenderer', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | ||
12 | |||
13 | BBCLASSEXTEND = "nativesdk" | ||
14 | |||
15 | RDEPENDS:${PN}:class-target += "bash" | ||
16 | |||
17 | PROVIDES:class-nativesdk = "nativesdk-qemu" | ||
18 | RPROVIDES:${PN}:class-nativesdk = "nativesdk-qemu" | ||
19 | |||
20 | EXTRA_OECONF:append:class-target = " --target-list=${@get_qemu_target_list(d)}" | ||
21 | EXTRA_OECONF:append:class-nativesdk = " --target-list=${@get_qemu_target_list(d)}" | ||
22 | EXTRA_OECONF:append:class-target:mipsarcho32 = "${@bb.utils.contains('BBEXTENDCURR', 'multilib', ' --disable-capstone', '', d)}" | ||
23 | |||
24 | do_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" | |||
13 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" | 13 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" |
14 | 14 | ||
15 | REPO ?= "git://github.com/Xilinx/mali-userspace-binaries.git;protocol=https" | 15 | REPO ?= "git://github.com/Xilinx/mali-userspace-binaries.git;protocol=https" |
16 | BRANCH ?= "xlnx_rel_v2023.1" | 16 | BRANCH ?= "xlnx_rel_v2023.2" |
17 | SRCREV ?= "b3a772aad859cdadc8513b11c3e995546c20e75e" | 17 | SRCREV ?= "b3a772aad859cdadc8513b11c3e995546c20e75e" |
18 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | 18 | BRANCHARG = "${@['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 @@ | |||
1 | FILESEXTRAPATHS:prepend:zynqmp := "${THISDIR}/files:" | ||
2 | |||
3 | SRC_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 | ||
6 | SOC_FAMILY_ARCH ??= "${TUNE_PKGARCH}" | ||
7 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | ||
8 | DEFAULT_PACKAGE_ARCH:zynqmp = "${SOC_FAMILY_ARCH}" | ||
9 | PACKAGE_ARCH = "${DEFAULT_PACKAGE_ARCH}" | ||
10 | |||
11 | |||
12 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | ||
13 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | ||
14 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
15 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | ||
16 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
17 | PACKAGE_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 | ||
30 | displaynum=`ls /tmp/.X11-unix/* | sed s#/tmp/.X11-unix/X##` | 30 | # Read first X display number from the list. |
31 | displaynum=`ls /tmp/.X11-unix/* | sed s#/tmp/.X11-unix/X## | head -n 1` | ||
32 | displaynum=${displaynum%% *} | ||
33 | |||
31 | display=":$displaynum.0" | 34 | display=":$displaynum.0" |
32 | export DISPLAY=":$displaynum.0" | 35 | export 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 |
35 | export 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. | ||
40 | unset XAUTHORITY | ||
41 | |||
42 | # Detect X session command line started for the display $displaynum and extract | ||
43 | # -auth argument if any. | ||
44 | ps -eo args | grep -e "Xorg\W*:$displaynum" | grep -e -auth | while read -r line | ||
45 | do | ||
46 | if [[ "${line%% *}" == *Xorg ]]; then | ||
47 | export XAUTHORITY=`echo $line | sed -n 's/.*-auth //; s/ -[^ ].*//; p'` | ||
48 | break | ||
49 | fi | ||
50 | done | ||
36 | 51 | ||
37 | for i in /sys/class/drm/*/*/status ; | 52 | for i in /sys/class/drm/*/*/status ; |
38 | do | 53 | do |
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 | ||
23 | FILES:${PN} += "${sysconfdir}/udev/rules.d/*" | 23 | FILES:${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 @@ | |||
1 | SUMMARY = "Xilinx DisplayPort Linux Kernel module" | ||
2 | DESCRIPTION = "Out-of-tree DisplayPort(DP) kernel modules provider for aarch64 devices" | ||
3 | SECTION = "kernel/modules" | ||
4 | LICENSE = "GPL-2.0-only" | ||
5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a" | ||
6 | |||
7 | XLNX_DP_VERSION = "6.1.0" | ||
8 | PV = "${XLNX_DP_VERSION}+xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}" | ||
9 | |||
10 | S = "${WORKDIR}/git" | ||
11 | |||
12 | BRANCH ?= "xlnx_rel_v2023.2" | ||
13 | REPO ?= "git://github.com/xilinx/dp-modules.git;protocol=https" | ||
14 | SRCREV ?= "5b0969ac09f301c33bccc140c8f60e832f5cf222" | ||
15 | |||
16 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
17 | SRC_URI = "${REPO};${BRANCHARG}" | ||
18 | |||
19 | inherit module | ||
20 | |||
21 | EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}" | ||
22 | COMPATIBLE_MACHINE = "^$" | ||
23 | COMPATIBLE_MACHINE:zynqmp = "zynqmp" | ||
24 | COMPATIBLE_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 @@ | |||
1 | SUMMARY = "Xilinx HDMI Linux Kernel module" | ||
2 | DESCRIPTION = "Out-of-tree HDMI kernel modules provider for MPSoC EG/EV devices" | ||
3 | SECTION = "kernel/modules" | ||
4 | LICENSE = "GPL-2.0-only" | ||
5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=b34277fe156508fd5a650609dc36d1fe" | ||
6 | |||
7 | XLNX_HDMI_VERSION = "6.1" | ||
8 | PV = "${XLNX_HDMI_VERSION}+xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}" | ||
9 | |||
10 | S = "${WORKDIR}/git" | ||
11 | |||
12 | BRANCH ?= "xlnx_rel_v2023.2" | ||
13 | REPO ?= "git://github.com/Xilinx/hdmi-modules.git;protocol=https" | ||
14 | SRCREV = "82209b0021a7b5d7ef71a859eed4bafeb541ed08" | ||
15 | |||
16 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
17 | SRC_URI = "${REPO};${BRANCHARG}" | ||
18 | |||
19 | inherit module | ||
20 | |||
21 | EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}" | ||
22 | COMPATIBLE_MACHINE = "^$" | ||
23 | COMPATIBLE_MACHINE:zynqmp = "zynqmp" | ||
24 | COMPATIBLE_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 @@ | |||
1 | LINUX_VERSION = "6.1.30" | ||
2 | YOCTO_META ?= "git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.1;destsuffix=yocto-kmeta" | ||
3 | KBRANCH="xlnx_rebase_v6.1_LTS" | ||
4 | SRCREV = "a19da02cf5b44420ec6afb1eef348c21d9e8cda2" | ||
5 | SRCREV_meta = "185bcfcbe480c742247d9117011794c69682914f" | ||
6 | |||
7 | KCONF_AUDIT_LEVEL="0" | ||
8 | |||
9 | include linux-xlnx.inc | ||
10 | |||
11 | FILESEXTRAPATHS: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 @@ | |||
1 | SUMMARY = "Linux kernel module for Video Code Unit" | ||
2 | DESCRIPTION = "Out-of-tree VCU decoder, encoder and common kernel modules provider for MPSoC EV devices" | ||
3 | SECTION = "kernel/modules" | ||
4 | LICENSE = "GPL-2.0-only" | ||
5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a" | ||
6 | |||
7 | XILINX_VCU_VERSION = "1.0.0" | ||
8 | PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}" | ||
9 | |||
10 | S = "${WORKDIR}/git" | ||
11 | |||
12 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" | ||
13 | |||
14 | BRANCH = "xlnx_rel_v2023.2" | ||
15 | REPO = "git://github.com/Xilinx/vcu-modules.git;protocol=https" | ||
16 | SRCREV = "689c8d823b383e2a8a5249be49de627f866cfaf2" | ||
17 | |||
18 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
19 | SRC_URI = " \ | ||
20 | ${REPO};${BRANCHARG} \ | ||
21 | file://99-vcu-enc-dec.rules \ | ||
22 | " | ||
23 | |||
24 | inherit module features_check | ||
25 | |||
26 | REQUIRED_MACHINE_FEATURES = "vcu" | ||
27 | |||
28 | EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}" | ||
29 | |||
30 | RDEPENDS:${PN} = "vcu-firmware" | ||
31 | |||
32 | KERNEL_MODULE_AUTOLOAD += "dmaproxy" | ||
33 | |||
34 | do_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 | |||
39 | FILES:${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 @@ | |||
1 | SUMMARY = "OpenMAX Integration layer for VCU" | ||
2 | DESCRIPTION = "OMX IL Libraries,test applications and headers for VCU" | ||
3 | LICENSE = "MIT" | ||
4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=ef69c2bb405668101824f0b644631e2e" | ||
5 | |||
6 | XILINX_VCU_VERSION = "1.0.0" | ||
7 | PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}" | ||
8 | |||
9 | BRANCH ?= "xlnx_rel_v2023.2" | ||
10 | REPO ?= "git://github.com/Xilinx/vcu-omx-il.git;protocol=https" | ||
11 | SRCREV = "3a04b5adc661a0eced626c1373dbbfe699ae6fe0" | ||
12 | |||
13 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
14 | SRC_URI = "${REPO};${BRANCHARG}" | ||
15 | |||
16 | S = "${WORKDIR}/git" | ||
17 | |||
18 | inherit features_check | ||
19 | |||
20 | REQUIRED_MACHINE_FEATURES = "vcu" | ||
21 | |||
22 | PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
23 | |||
24 | DEPENDS = "libvcu-xlnx" | ||
25 | RDEPENDS:${PN} = "kernel-module-vcu libvcu-xlnx" | ||
26 | |||
27 | EXTERNAL_INCLUDE="${STAGING_INCDIR}/vcu-ctrl-sw/include" | ||
28 | |||
29 | EXTRA_OEMAKE = " \ | ||
30 | CC='${CC}' CXX='${CXX} ${CXXFLAGS}' \ | ||
31 | EXTERNAL_INCLUDE='${EXTERNAL_INCLUDE}' \ | ||
32 | " | ||
33 | |||
34 | do_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 | |||
50 | EXCLUDE_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 @@ | |||
1 | SUMMARY = "Control Software for VCU" | ||
2 | DESCRIPTION = "Control software libraries, test applications and headers provider for VCU" | ||
3 | LICENSE = "MIT" | ||
4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=ef69c2bb405668101824f0b644631e2e" | ||
5 | |||
6 | XILINX_VCU_VERSION = "1.0.0" | ||
7 | PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}" | ||
8 | |||
9 | BRANCH ?= "xlnx_rel_v2023.2" | ||
10 | REPO ?= "git://github.com/Xilinx/vcu-ctrl-sw.git;protocol=https" | ||
11 | SRCREV = "84b0856cad7844d69f57ac4d9447c20930875475" | ||
12 | |||
13 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
14 | SRC_URI = "${REPO};${BRANCHARG}" | ||
15 | |||
16 | S = "${WORKDIR}/git" | ||
17 | |||
18 | inherit features_check | ||
19 | |||
20 | REQUIRED_MACHINE_FEATURES = "vcu" | ||
21 | |||
22 | RDEPENDS:${PN} = "kernel-module-vcu" | ||
23 | |||
24 | EXTRA_OEMAKE = "CC='${CC}' CXX='${CXX} ${CXXFLAGS}'" | ||
25 | |||
26 | do_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 | |||
38 | EXCLUDE_FROM_WORLD = "1" | ||
39 | |||
40 | # Disable buildpaths QA check warnings. | ||
41 | INSANE_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 @@ | |||
1 | SUMMARY = "Firmware for VCU" | ||
2 | DESCRIPTION = "Firmware binaries provider for VCU" | ||
3 | LICENSE = "Proprietary" | ||
4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=52eb1e8f27e0e189b175c7d75f028cc6" | ||
5 | |||
6 | XILINX_VCU_VERSION = "1.0.0" | ||
7 | PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}" | ||
8 | |||
9 | S = "${WORKDIR}/git" | ||
10 | |||
11 | BRANCH ?= "xlnx_rel_v2023.2" | ||
12 | REPO ?= "git://github.com/Xilinx/vcu-firmware.git;protocol=https" | ||
13 | SRCREV = "f4ab98d26aa3e244a487f518f5a76071137c8402" | ||
14 | |||
15 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
16 | SRC_URI = "${REPO};${BRANCHARG}" | ||
17 | |||
18 | inherit features_check | ||
19 | |||
20 | REQUIRED_MACHINE_FEATURES = "vcu" | ||
21 | |||
22 | do_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 | ||
30 | INHIBIT_PACKAGE_DEBUG_SPLIT = "1" | ||
31 | INHIBIT_PACKAGE_STRIP = "1" | ||
32 | FILES:${PN} = "/lib/firmware/*" | ||
33 | |||
34 | # These libraries shouldn't get installed in world builds unless something | ||
35 | # explicitly depends upon them. | ||
36 | EXCLUDE_FROM_WORLD = "1" | ||
37 | |||
38 | INSANE_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" | |||
5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a" | 5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a" |
6 | 6 | ||
7 | XILINX_VDU_VERSION = "1.0.0" | 7 | XILINX_VDU_VERSION = "1.0.0" |
8 | PV = "${XILINX_VDU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" | 8 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" |
9 | PV .= "+git${SRCPV}" | ||
9 | 10 | ||
10 | S = "${WORKDIR}/git" | 11 | S = "${WORKDIR}/git" |
11 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" | 12 | FILESEXTRAPATHS: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 @@ | |||
1 | SUMMARY = "Linux kernel module for Video Decode Unit" | ||
2 | DESCRIPTION = "Out-of-tree VDU decoder common kernel modules" | ||
3 | SECTION = "kernel/modules" | ||
4 | LICENSE = "GPLv2" | ||
5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a" | ||
6 | |||
7 | XILINX_VDU_VERSION = "1.0.0" | ||
8 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" | ||
9 | PV .= "+git${SRCPV}" | ||
10 | |||
11 | S = "${WORKDIR}/git" | ||
12 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" | ||
13 | |||
14 | BRANCH ?= "xlnx_rel_v2023.2" | ||
15 | REPO ?= "git://github.com/Xilinx/vdu-modules.git;protocol=https" | ||
16 | SRCREV ?= "4d5134f54006f904f0b28f00e05dd3febd5fcfd3" | ||
17 | |||
18 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
19 | SRC_URI = "${REPO};${BRANCHARG} \ | ||
20 | file://99-vdu-enc-dec.rules \ | ||
21 | " | ||
22 | |||
23 | inherit module features_check | ||
24 | |||
25 | REQUIRED_MACHINE_FEATURES = "vdu" | ||
26 | |||
27 | EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}" | ||
28 | |||
29 | RDEPENDS:${PN} = "vdu-firmware" | ||
30 | |||
31 | COMPATIBLE_MACHINE = "^$" | ||
32 | COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core" | ||
33 | COMPATIBLE_MACHINE:versal-ai-edge = "versal-ai-edge" | ||
34 | |||
35 | PACKAGE_ARCH = "${SOC_FAMILY_ARCH}" | ||
36 | |||
37 | do_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 | |||
42 | FILES:${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" | |||
4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" | 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" |
5 | 5 | ||
6 | XILINX_VDU_VERSION = "1.0.0" | 6 | XILINX_VDU_VERSION = "1.0.0" |
7 | PV = "${XILINX_VDU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" | 7 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" |
8 | PV .= "+git${SRCPV}" | ||
8 | 9 | ||
9 | inherit autotools features_check | 10 | inherit 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 @@ | |||
1 | SUMMARY = "Control Software for VDU" | ||
2 | DESCRIPTION = "Control software libraries, test applications and headers provider for VDU" | ||
3 | LICENSE = "MIT" | ||
4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" | ||
5 | |||
6 | XILINX_VDU_VERSION = "1.0.0" | ||
7 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" | ||
8 | PV .= "+git${SRCPV}" | ||
9 | |||
10 | inherit autotools features_check | ||
11 | |||
12 | REQUIRED_MACHINE_FEATURES = "vdu" | ||
13 | |||
14 | BRANCH ?= "xlnx_rel_v2023.2" | ||
15 | REPO ?= "git://github.com/Xilinx/vdu-ctrl-sw.git;protocol=https" | ||
16 | SRCREV ?= "1beb8f247d01b1a728faea36ce8f7847c895482f" | ||
17 | |||
18 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
19 | SRC_URI = "${REPO};${BRANCHARG}" | ||
20 | |||
21 | S = "${WORKDIR}/git" | ||
22 | |||
23 | COMPATIBLE_MACHINE = "^$" | ||
24 | COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core" | ||
25 | COMPATIBLE_MACHINE:versal-ai-edge = "versal-ai-edge" | ||
26 | |||
27 | PACKAGE_ARCH = "${SOC_FAMILY_ARCH}" | ||
28 | |||
29 | RDEPENDS:${PN} = "kernel-module-vdu" | ||
30 | |||
31 | do_compile[dirs] = "${S}" | ||
32 | do_install[dirs] = "${S}" | ||
33 | |||
34 | EXTRA_OEMAKE = "CC='${CC}' CXX='${CXX} ${CXXFLAGS}'" | ||
35 | EXTRA_OEMAKE +=" INSTALL_HDR_PATH=${D}${includedir}/vdu-ctrl-sw/include INSTALL_PATH=${D}${bindir}" | ||
36 | |||
37 | do_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 | |||
45 | EXCLUDE_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" | |||
4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" | 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" |
5 | 5 | ||
6 | XILINX_VDU_VERSION = "1.0.0" | 6 | XILINX_VDU_VERSION = "1.0.0" |
7 | PV = "${XILINX_VDU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" | 7 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" |
8 | PV .= "+git${SRCPV}" | ||
8 | 9 | ||
9 | BRANCH ?= "xlnx_rel_v2023.1" | 10 | BRANCH ?= "xlnx_rel_v2023.1" |
10 | REPO ?= "git://github.com/Xilinx/vdu-omx-il.git;protocol=https" | 11 | REPO ?= "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 @@ | |||
1 | SUMMARY = "OpenMAX Integration layer for VDU" | ||
2 | DESCRIPTION = "OMX IL Libraries,test application and headers for VDU" | ||
3 | LICENSE = "MIT" | ||
4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" | ||
5 | |||
6 | XILINX_VDU_VERSION = "1.0.0" | ||
7 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" | ||
8 | PV .= "+git${SRCPV}" | ||
9 | |||
10 | BRANCH ?= "xlnx_rel_v2023.2" | ||
11 | REPO ?= "git://github.com/Xilinx/vdu-omx-il.git;protocol=https" | ||
12 | SRCREV ?= "811eefac953fd5e098c69cada97a0dd35f5e9015" | ||
13 | |||
14 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
15 | SRC_URI = "${REPO};${BRANCHARG} \ | ||
16 | " | ||
17 | S = "${WORKDIR}/git" | ||
18 | |||
19 | inherit autotools features_check | ||
20 | |||
21 | REQUIRED_MACHINE_FEATURES = "vdu" | ||
22 | |||
23 | COMPATIBLE_MACHINE = "^$" | ||
24 | COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core" | ||
25 | COMPATIBLE_MACHINE:versal-ai-edge = "versal-ai-edge" | ||
26 | |||
27 | PACKAGE_ARCH = "${SOC_FAMILY_ARCH}" | ||
28 | |||
29 | DEPENDS = "libvdu-ctrlsw" | ||
30 | RDEPENDS:${PN} = "kernel-module-vdu libvdu-ctrlsw" | ||
31 | |||
32 | EXTERNAL_INCLUDE="${STAGING_INCDIR}/vdu-ctrl-sw/include" | ||
33 | |||
34 | do_compile[dirs] = "${S}" | ||
35 | do_install[dirs] = "${S}" | ||
36 | |||
37 | EXTRA_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 | |||
44 | do_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 | |||
54 | EXCLUDE_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" | |||
4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c5784f63397086d836580d8785d1deb9" | 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c5784f63397086d836580d8785d1deb9" |
5 | 5 | ||
6 | XILINX_VDU_VERSION = "1.0.0" | 6 | XILINX_VDU_VERSION = "1.0.0" |
7 | PV = "${XILINX_VDU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" | 7 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" |
8 | PV .= "+git${SRCPV}" | ||
8 | 9 | ||
9 | S = "${WORKDIR}/git" | 10 | S = "${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 @@ | |||
1 | SUMMARY = "Firmware for VDU" | ||
2 | DESCRIPTION = "Firmware binaries provider for VDU" | ||
3 | LICENSE = "Proprietary" | ||
4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c5784f63397086d836580d8785d1deb9" | ||
5 | |||
6 | XILINX_VDU_VERSION = "1.0.0" | ||
7 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" | ||
8 | PV .= "+git${SRCPV}" | ||
9 | |||
10 | S = "${WORKDIR}/git" | ||
11 | |||
12 | inherit autotools features_check | ||
13 | |||
14 | REQUIRED_MACHINE_FEATURES = "vdu" | ||
15 | |||
16 | BRANCH ?= "xlnx_rel_v2023.2" | ||
17 | REPO ?= "git://github.com/Xilinx/vdu-firmware.git;protocol=https" | ||
18 | SRCREV ?= "731897772730178f6a4e77eedeb4fb53faa1ab4d" | ||
19 | |||
20 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
21 | SRC_URI = "${REPO};${BRANCHARG}" | ||
22 | |||
23 | COMPATIBLE_MACHINE = "^$" | ||
24 | COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core" | ||
25 | COMPATIBLE_MACHINE:versal-ai-edge = "versal-ai-edge" | ||
26 | |||
27 | PACKAGE_ARCH = "${SOC_FAMILY_ARCH}" | ||
28 | EXTRA_OEMAKE +="INSTALL_PATH=${D}/lib/firmware" | ||
29 | |||
30 | do_compile[noexec] = "1" | ||
31 | do_install[dirs] = "${S}" | ||
32 | |||
33 | # Inhibit warnings about files being stripped | ||
34 | INHIBIT_PACKAGE_DEBUG_SPLIT = "1" | ||
35 | INHIBIT_PACKAGE_STRIP = "1" | ||
36 | FILES:${PN} = "/lib/firmware/*" | ||
37 | |||
38 | |||
39 | # These libraries shouldn't get installed in world builds unless something | ||
40 | # explicitly depends upon them. | ||
41 | EXCLUDE_FROM_WORLD = "1" | ||
42 | |||
43 | INSANE_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 @@ | |||
1 | REPO ?= "git://github.com/Xilinx/XRT.git;protocol=https" | 1 | REPO ?= "git://github.com/Xilinx/XRT.git;protocol=https" |
2 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | 2 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" |
3 | SRC_URI = "${REPO};${BRANCHARG}" | 3 | SRC_URI = "${REPO};${BRANCHARG};name=xrt" |
4 | 4 | ||
5 | BRANCH= "2023.1" | 5 | BRANCH= "2023.2" |
6 | SRCREV= "64c933573e7e50a8aba939a74209590c2b739e8b" | 6 | SRCREV_xrt = "2865a62b6a417dea523d2d5646154aa94a2cbc28" |
7 | PV = "202310.2.15.0" | 7 | PV = "202320.2.16.0" |
8 | 8 | ||
9 | SRC_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" | ||
10 | SRCREV_dma_ip_drivers = "9f02769a2eddde008158c96efa39d7edb6512578" | ||
11 | |||
12 | SRC_URI += "git://github.com/serge1/ELFIO.git;branch=main;name=ELFIO;destsuffix=git/src/runtime_src/core/common/elf;protocol=https" | ||
13 | SRCREV_ELFIO = "a04810f12625207cce72665d783babb80f0175a8" | ||
14 | SRCREV_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 | ||
4 | require xrt.inc | 4 | require xrt.inc |
5 | 5 | ||
6 | SRC_URI += "file://xrt-cstdint.patch;striplevel=2" | 6 | LICENSE = "GPL-2.0-or-later & Apache-2.0 & MIT" |
7 | 7 | LIC_FILES_CHKSUM = "file://../LICENSE;md5=de2c993ac479f02575bcbfb14ef9b485 \ | |
8 | LICENSE = "GPL-2.0-or-later & Apache-2.0" | ||
9 | LIC_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 | ||
15 | COMPATIBLE_MACHINE ?= "^$" | 14 | COMPATIBLE_MACHINE ?= "^$" |
16 | COMPATIBLE_MACHINE:zynqmp = ".*" | 15 | COMPATIBLE_MACHINE:zynqmp = ".*" |