aboutsummaryrefslogtreecommitdiffstats
path: root/meta-xilinx-bsp/conf
diff options
context:
space:
mode:
Diffstat (limited to 'meta-xilinx-bsp/conf')
-rw-r--r--meta-xilinx-bsp/conf/layer.conf12
-rw-r--r--meta-xilinx-bsp/conf/machine/include/machine-xilinx-board.inc6
-rw-r--r--meta-xilinx-bsp/conf/machine/include/machine-xilinx-default.inc41
-rw-r--r--meta-xilinx-bsp/conf/machine/include/machine-xilinx-qemu.inc49
-rw-r--r--meta-xilinx-bsp/conf/machine/include/microblaze/arch-microblaze.inc53
-rw-r--r--meta-xilinx-bsp/conf/machine/include/microblaze/feature-microblaze-math.inc33
-rw-r--r--meta-xilinx-bsp/conf/machine/include/microblaze/feature-microblaze-versions.inc67
-rw-r--r--meta-xilinx-bsp/conf/machine/include/tune-microblaze.inc19
-rw-r--r--meta-xilinx-bsp/conf/machine/include/tune-zynq.inc12
-rw-r--r--meta-xilinx-bsp/conf/machine/include/tune-zynqmp.inc11
-rw-r--r--meta-xilinx-bsp/conf/machine/include/zynqmp-pmu-config.inc20
-rw-r--r--meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf20
-rw-r--r--meta-xilinx-bsp/conf/machine/microzed-zynq7.conf30
-rw-r--r--meta-xilinx-bsp/conf/machine/ml605-qemu-microblazeel.conf25
-rw-r--r--meta-xilinx-bsp/conf/machine/picozed-zynq7.conf34
-rw-r--r--meta-xilinx-bsp/conf/machine/qemu-zynq7.conf25
-rw-r--r--meta-xilinx-bsp/conf/machine/s3adsp1800-qemu-microblazeeb.conf24
-rw-r--r--meta-xilinx-bsp/conf/machine/zc702-zynq7.conf45
-rw-r--r--meta-xilinx-bsp/conf/machine/zc706-zynq7.conf49
-rw-r--r--meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf77
-rw-r--r--meta-xilinx-bsp/conf/machine/zedboard-zynq7.conf29
-rw-r--r--meta-xilinx-bsp/conf/machine/zybo-linux-bd-zynq7.conf40
-rw-r--r--meta-xilinx-bsp/conf/machine/zybo-zynq7.conf34
23 files changed, 755 insertions, 0 deletions
diff --git a/meta-xilinx-bsp/conf/layer.conf b/meta-xilinx-bsp/conf/layer.conf
new file mode 100644
index 00000000..dac3e246
--- /dev/null
+++ b/meta-xilinx-bsp/conf/layer.conf
@@ -0,0 +1,12 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have a packages directory, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb"
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "xilinx"
+BBFILE_PATTERN_xilinx = "^${LAYERDIR}/"
+BBFILE_PRIORITY_xilinx = "5"
+
+LAYERDEPENDS_xilinx = "core"
diff --git a/meta-xilinx-bsp/conf/machine/include/machine-xilinx-board.inc b/meta-xilinx-bsp/conf/machine/include/machine-xilinx-board.inc
new file mode 100644
index 00000000..ba9a36be
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/include/machine-xilinx-board.inc
@@ -0,0 +1,6 @@
+# Default Xilinx Board settings
+
+EXTRA_IMAGEDEPENDS += "virtual/bootloader"
+
+IMAGE_BOOT_FILES ?= "${KERNEL_IMAGETYPE} ${UBOOT_BINARY}"
+
diff --git a/meta-xilinx-bsp/conf/machine/include/machine-xilinx-default.inc b/meta-xilinx-bsp/conf/machine/include/machine-xilinx-default.inc
new file mode 100644
index 00000000..522e0081
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/include/machine-xilinx-default.inc
@@ -0,0 +1,41 @@
+# Default Xilinx BSP Machine settings
+
+MACHINE_FEATURES_BACKFILL_CONSIDERED += "rtc"
+
+# MicroBlaze cannot handle the execution of qemu-linux-user for gobject-introspection-data
+MACHINE_FEATURES_BACKFILL_CONSIDERED_append_microblaze = " qemu-usermode"
+
+# File System Configuration
+IMAGE_FSTYPES ?= "tar.gz cpio cpio.gz.u-boot"
+
+# Kernel Configuration
+XILINX_DEFAULT_KERNEL := "linux-xlnx"
+XILINX_DEFAULT_KERNEL_microblaze := "linux-yocto"
+XILINX_DEFAULT_KERNEL_zynqmp := "linux-yocto"
+PREFERRED_PROVIDER_virtual/kernel ??= "${XILINX_DEFAULT_KERNEL}"
+
+# U-Boot Configuration
+XILINX_DEFAULT_UBOOT := "u-boot-xlnx"
+XILINX_DEFAULT_UBOOT_zynqmp := "u-boot"
+PREFERRED_PROVIDER_virtual/bootloader ??= "${XILINX_DEFAULT_UBOOT}"
+PREFERRED_PROVIDER_virtual/boot-bin ??= "${PREFERRED_PROVIDER_virtual/bootloader}"
+
+UBOOT_SUFFIX ?= "img"
+UBOOT_SUFFIX_zynqmp ?= "bin"
+UBOOT_SUFFIX_microblaze ?= "bin"
+
+UBOOT_BINARY ?= "u-boot.${UBOOT_SUFFIX}"
+UBOOT_ELF ?= "u-boot"
+UBOOT_ELF_aarch64 ?= "u-boot.elf"
+
+XSERVER ?= " \
+ xserver-xorg \
+ xf86-input-evdev \
+ xf86-input-mouse \
+ xf86-input-keyboard \
+ xf86-video-fbdev \
+ ${XSERVER_EXT} \
+ "
+
+XSERVER_EXT ?= ""
+XSERVER_EXT_zynqmp ?= "xf86-video-armsoc"
diff --git a/meta-xilinx-bsp/conf/machine/include/machine-xilinx-qemu.inc b/meta-xilinx-bsp/conf/machine/include/machine-xilinx-qemu.inc
new file mode 100644
index 00000000..dd275f3b
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/include/machine-xilinx-qemu.inc
@@ -0,0 +1,49 @@
+# This include is used to setup default QEMU and qemuboot config for meta-xilinx
+# machines.
+
+# depend on qemu-helper-native, which will depend on QEMU
+EXTRA_IMAGEDEPENDS += "qemu-helper-native"
+
+def qemu_default_dtb(d):
+ if d.getVar("IMAGE_BOOT_FILES", True):
+ dtbs = d.getVar("IMAGE_BOOT_FILES", True).split(" ")
+ # IMAGE_BOOT_FILES has extra renaming info in the format '<source>;<target>'
+ dtbs = [f.split(";")[0] for f in dtbs]
+ dtbs = [f for f in dtbs if f.endswith(".dtb")]
+ if len(dtbs) != 0:
+ return dtbs[0]
+ if d.getVar("KERNEL_DEVICETREE", True):
+ dtbs = d.getVar("KERNEL_DEVICETREE", True).split(" ")
+ dtbs = [os.path.basename(d) for d in dtbs]
+ if len(dtbs) != 0:
+ return d.getVar("KERNEL_IMAGETYPE", True) + "-" + dtbs[0]
+ return ""
+
+def qemu_default_serial(d):
+ if d.getVar("SERIAL_CONSOLE", True):
+ speed, console = d.getVar("SERIAL_CONSOLE", True).split(" ", 1)
+ # zynqmp uses earlycon and stdout (in dtb)
+ if "zynqmp" in d.getVar("MACHINEOVERRIDES", True).split(":"):
+ return ""
+ return "console=%s,%s earlyprintk" % (console, speed)
+ return ""
+
+def qemu_target_binary(d):
+ ta = d.getVar("TARGET_ARCH", True)
+ if ta == "microblazeeb":
+ ta = "microblaze"
+ elif ta == "arm":
+ ta = "aarch64"
+ return "qemu-system-%s" % ta
+
+def qemu_zynqmp_unhalt(d, multiarch):
+ if multiarch:
+ return "-global xlnx,zynqmp-boot.cpu-num=0 -global xlnx,zynqmp-boot.use-pmufw=true"
+ return "-device loader,addr=0xfd1a0104,data=0x8000000e,data-len=4 -device loader,addr=0xfd1a0104,data=0x8000000e,data-len=4"
+
+# For qemuboot, default setup across all machines in meta-xilinx
+QB_SYSTEM_NAME ?= "${@qemu_target_binary(d)}"
+QB_DEFAULT_FSTYPE ?= "cpio"
+QB_DTB ?= "${@qemu_default_dtb(d)}"
+QB_KERNEL_CMDLINE_APPEND ?= "${@qemu_default_serial(d)}"
+
diff --git a/meta-xilinx-bsp/conf/machine/include/microblaze/arch-microblaze.inc b/meta-xilinx-bsp/conf/machine/include/microblaze/arch-microblaze.inc
new file mode 100644
index 00000000..d79269cc
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/include/microblaze/arch-microblaze.inc
@@ -0,0 +1,53 @@
+# MicroBlaze architecture tune feature configuration
+
+# Architecture feature and override
+TUNEVALID[microblaze] = "MicroBlaze"
+MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "microblaze", "microblaze:", "" ,d)}"
+
+# Endian
+TUNEVALID[bigendian] = "Use Microblaze Big Endian"
+TUNECONFLICTS[bigendian] += "v10.0"
+
+MBPKGARCH_ENDIAN = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "eb", "el" ,d)}"
+
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "-mbig-endian", "-mlittle-endian" ,d)}"
+
+# General features
+TUNEVALID[barrel-shift] = "Enable Hardware Barrel Shifter"
+TUNEVALID[pattern-compare] = "Enable Pattern Compare Instructions"
+TUNEVALID[reorder] = "Enable Reorder Instructions"
+TUNECONFLICTS[reorder] += "v8.00 v8.10 v8.20"
+
+# Core configuration tune optimizations
+TUNEVALID[frequency-optimized] = "Enabling tuning for frequency optimized core (AREA_OPTIMIZED_2)"
+TUNECONFLICTS[frequency-optimized] += "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5 v9.6"
+
+# Feature compiler args
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "barrel-shift", "-mxl-barrel-shift", "-mno-xl-barrel-shift" ,d)}"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "pattern-compare", "-mxl-pattern-compare", "-mno-xl-pattern-compare" ,d)}"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "frequency-optimized", "-mxl-frequency", "", d)}"
+
+# Disable reorder for v8.30 if pattern-compare is not enabled
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "reorder", \
+ bb.utils.contains("TUNE_FEATURES", "v8.30", \
+ bb.utils.contains("TUNE_FEATURES", "pattern-compare", \
+ "-mxl-reorder", "-mno-xl-reorder", d), \
+ "-mxl-reorder", d), "-mno-xl-reorder", d)}"
+
+# Feature package architecture formatting
+MBPKGARCH_TUNE = ""
+MBPKGARCH_TUNE .= "${@bb.utils.contains("TUNE_FEATURES", "barrel-shift", "-bs", "" ,d)}"
+MBPKGARCH_TUNE .= "${@bb.utils.contains("TUNE_FEATURES", "pattern-compare", "-cmp", "" ,d)}"
+MBPKGARCH_TUNE .= "${@bb.utils.contains("TUNE_FEATURES", "reorder", "-re", "" ,d)}"
+MBPKGARCH_TUNE .= "${@bb.utils.contains("TUNE_FEATURES", "frequency-optimized", "-fo", "" ,d)}"
+
+# Additional features
+require conf/machine/include/microblaze/feature-microblaze-versions.inc
+require conf/machine/include/microblaze/feature-microblaze-math.inc
+
+# Architecture name, either 'microblazeeb' or 'microblazeel' depending on endianess
+TUNE_ARCH = "microblaze${@bb.utils.contains("TUNE_FEATURES", "bigendian", "eb", "el" ,d)}"
+
+# Package Architecture formatting
+TUNE_PKGARCH = "microblaze${MBPKGARCH_ENDIAN}${MBPKGARCH_VERSION}${MBPKGARCH_TUNE}${MBPKGARCH_MATH}"
+
diff --git a/meta-xilinx-bsp/conf/machine/include/microblaze/feature-microblaze-math.inc b/meta-xilinx-bsp/conf/machine/include/microblaze/feature-microblaze-math.inc
new file mode 100644
index 00000000..b2c7f071
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/include/microblaze/feature-microblaze-math.inc
@@ -0,0 +1,33 @@
+# This include describes the math features (integer and floating point) that
+# are available for the MicroBlaze ISA
+
+TUNEVALID[multiply-low] = "Hardware multipler with 32 bit result"
+TUNEVALID[multiply-high] = "Hardware multipler with 64 bit result"
+TUNEVALID[divide-hard] = "Hardware divider"
+TUNEVALID[fpu-soft] = "Software FPU"
+TUNEVALID[fpu-hard] = "Hardware FPU in basic mode"
+TUNEVALID[fpu-hard-extended] = "Hardware FPU in extended mode (conversion and square root instructions)"
+
+TUNECONFLICTS[fpu-soft] = "fpu-hard fpu-hard-extended"
+TUNECONFLICTS[fpu-hard] = "fpu-soft"
+TUNECONFLICTS[fpu-hard-extended] = "fpu-soft"
+
+# Compiler args
+TUNE_CCARGS += "${@bb.utils.contains_any('TUNE_FEATURES', ['multiply-low', 'multiply-high'], '-mno-xl-soft-mul', '-mxl-soft-mul', d)}"
+TUNE_CCARGS += "${@bb.utils.contains('TUNE_FEATURES', 'multiply-high', '-mxl-multiply-high', '', d)}"
+
+TUNE_CCARGS += "${@bb.utils.contains('TUNE_FEATURES', 'divide-hard', '-mno-xl-soft-div', '-mxl-soft-div' ,d)}"
+
+TUNE_CCARGS += "${@bb.utils.contains('TUNE_FEATURES', 'fpu-soft', '', '', d)}"
+TUNE_CCARGS += "${@bb.utils.contains_any('TUNE_FEATURES', ['fpu-hard', 'fpu-hard-extended'], '-mhard-float', '', d)}"
+TUNE_CCARGS += "${@bb.utils.contains('TUNE_FEATURES', 'fpu-hard-extended', '-mxl-float-convert -mxl-float-sqrt', '', d)}"
+
+# Set target fpu (bitbake known target) to soft or hard (basic or extended)
+TARGET_FPU = "${@bb.utils.contains_any('TUNE_FEATURES', 'fpu-hard fpu-hard-extended', 'fpu-hard', 'fpu-soft', d)}"
+
+# Package Architecture formatting
+MBPKGARCH_MATH = ""
+MBPKGARCH_MATH .= "${@bb.utils.contains('TUNE_FEATURES', 'multiply-high', '-mh', bb.utils.contains('TUNE_FEATURES', 'multiply-low', '-ml', '', d), d)}"
+MBPKGARCH_MATH .= "${@bb.utils.contains('TUNE_FEATURES', 'divide-hard', '-div', '' ,d)}"
+MBPKGARCH_MATH .= "${@bb.utils.contains('TUNE_FEATURES', 'fpu-hard-extended', '-fe', bb.utils.contains('TUNE_FEATURES', 'fpu-hard', '-fb', '', d), d)}"
+
diff --git a/meta-xilinx-bsp/conf/machine/include/microblaze/feature-microblaze-versions.inc b/meta-xilinx-bsp/conf/machine/include/microblaze/feature-microblaze-versions.inc
new file mode 100644
index 00000000..955674ff
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/include/microblaze/feature-microblaze-versions.inc
@@ -0,0 +1,67 @@
+# MicroBlaze versions are defined as features, the features are setup to
+# conflict with other versions as well as unavailable features for particular
+# versions.
+#
+# Versions before v9.0 of MicroBlaze use a versioning scheme of "vX.YY.Z"
+# (where Z = [abc]). For v8.* versions of MicroBlaze the revision (Z) changes
+# did not affect ABI and are ignored by this tune configuration. Though this
+# format is expected by GCC including the revision, but this is defaulted to
+# ".a".
+#
+# Since v9.0 of MicroBlaze the revision (Z) part of versions was entirely
+# dropped and the version scheme was changed to "vX.Y".
+
+def microblaze_current_version(d, gcc = False):
+ import re
+ # find the current version, and convert it to major/minor integers
+ version = None
+ for t in (d.getVar("TUNE_FEATURES") or "").split():
+ m = re.search("^v(\d+)\.(\d+)", t)
+ if m:
+ version = int(m.group(1)), int(m.group(2))
+ break
+
+ # format the version string in generic or GCC specific formats
+ if version:
+ if version[0] <= 8:
+ return ("v%d.%02d" % version[0:2]) + (".a" if gcc else "")
+ else:
+ return "v%d.%d" % version[0:2]
+ return ""
+
+# MicroBlaze versions
+TUNEVALID[v8.00] = "MicroBlaze version 8.00"
+TUNEVALID[v8.10] = "MicroBlaze version 8.10"
+TUNEVALID[v8.20] = "MicroBlaze version 8.20"
+TUNEVALID[v8.30] = "MicroBlaze version 8.30"
+TUNEVALID[v8.40] = "MicroBlaze version 8.40"
+TUNEVALID[v8.50] = "MicroBlaze version 8.50"
+TUNEVALID[v9.0] = "MicroBlaze version 9.0"
+TUNEVALID[v9.1] = "MicroBlaze version 9.1"
+TUNEVALID[v9.2] = "MicroBlaze version 9.2"
+TUNEVALID[v9.3] = "MicroBlaze version 9.3"
+TUNEVALID[v9.4] = "MicroBlaze version 9.4"
+TUNEVALID[v9.5] = "MicroBlaze version 9.5"
+TUNEVALID[v9.6] = "MicroBlaze version 9.6"
+TUNEVALID[v10.0] = "MicroBlaze version 10.0"
+
+# Version conflict matrix
+TUNECONFLICTS[v8.00] = ""
+TUNECONFLICTS[v8.10] = "v8.00"
+TUNECONFLICTS[v8.20] = "v8.00 v8.10"
+TUNECONFLICTS[v8.30] = "v8.00 v8.10 v8.20"
+TUNECONFLICTS[v8.40] = "v8.00 v8.10 v8.20 v8.30"
+TUNECONFLICTS[v8.50] = "v8.00 v8.10 v8.20 v8.30 v8.40"
+TUNECONFLICTS[v9.0] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50"
+TUNECONFLICTS[v9.1] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0"
+TUNECONFLICTS[v9.2] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1"
+TUNECONFLICTS[v9.3] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2"
+TUNECONFLICTS[v9.4] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3"
+TUNECONFLICTS[v9.5] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4"
+TUNECONFLICTS[v9.6] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5"
+TUNECONFLICTS[v10.0] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5 v9.6"
+
+# Version flags
+TUNE_CCARGS += "-mcpu=${@microblaze_current_version(d, True)}"
+MBPKGARCH_VERSION = "-${@microblaze_current_version(d)}"
+
diff --git a/meta-xilinx-bsp/conf/machine/include/tune-microblaze.inc b/meta-xilinx-bsp/conf/machine/include/tune-microblaze.inc
new file mode 100644
index 00000000..835de41b
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/include/tune-microblaze.inc
@@ -0,0 +1,19 @@
+DEFAULTTUNE ?= "microblaze"
+
+require conf/machine/include/microblaze/arch-microblaze.inc
+
+AVAILTUNES += "microblaze"
+TUNE_FEATURES_tune-microblaze = "microblaze"
+PACKAGE_EXTRA_ARCHS_tune-microblaze = "${TUNE_PKGARCH}"
+
+# Linux Configuration
+KERNEL_IMAGETYPE ?= "linux.bin.ub"
+
+# U-Boot Configuration
+UBOOT_MACHINE ?= "microblaze-generic_config"
+
+# default to use the gdb 7.7.1
+PREFERRED_VERSION_gdb ?= "7.7.1"
+PREFERRED_VERSION_gdb-cross ?= "7.7.1"
+PREFERRED_VERSION_gdb-cross-canadian ?= "7.7.1"
+
diff --git a/meta-xilinx-bsp/conf/machine/include/tune-zynq.inc b/meta-xilinx-bsp/conf/machine/include/tune-zynq.inc
new file mode 100644
index 00000000..19e73412
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/include/tune-zynq.inc
@@ -0,0 +1,12 @@
+DEFAULTTUNE ?= "cortexa9thf-neon"
+SOC_FAMILY ?= "zynq"
+
+require conf/machine/include/tune-cortexa9.inc
+require conf/machine/include/soc-family.inc
+
+# Linux Configuration
+KERNEL_IMAGETYPE ?= "uImage"
+
+# Set default load address.
+# Override with KERNEL_EXTRA_ARGS_<board> += "..." in machine file if required
+KERNEL_EXTRA_ARGS_zynq += "UIMAGE_LOADADDR=0x8000"
diff --git a/meta-xilinx-bsp/conf/machine/include/tune-zynqmp.inc b/meta-xilinx-bsp/conf/machine/include/tune-zynqmp.inc
new file mode 100644
index 00000000..8d1f9537
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/include/tune-zynqmp.inc
@@ -0,0 +1,11 @@
+DEFAULTTUNE ?= "aarch64"
+SOC_FAMILY ?= "zynqmp"
+
+require conf/machine/include/arm/arch-armv8.inc
+require conf/machine/include/soc-family.inc
+
+# Linux Configuration
+KERNEL_IMAGETYPE ?= "Image"
+
+# Support multilib on zynqmp
+DEFAULTTUNE_virtclass-multilib-lib32 ?= "armv7vethf-neon-vfpv4"
diff --git a/meta-xilinx-bsp/conf/machine/include/zynqmp-pmu-config.inc b/meta-xilinx-bsp/conf/machine/include/zynqmp-pmu-config.inc
new file mode 100644
index 00000000..fd9e9809
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/include/zynqmp-pmu-config.inc
@@ -0,0 +1,20 @@
+
+# Enable the use of zynqmp-pmu for specific recipes only
+def zynqmp_pmu_enable_for_bpns(d):
+ bpn = d.getVar("BPN")
+ crossbpns = ["binutils", "gcc"]
+ targetbpns = ["libgcc", "newlib", "libgloss"]
+ if bpn in targetbpns:
+ return True
+ if bpn in crossbpns and bb.data.inherits_class('cross', d):
+ return True
+ return False
+
+BBCLASSEXTEND_append = "${@' zynqmp-pmu' if zynqmp_pmu_enable_for_bpns(d) else ''}"
+
+# Add the pkgarch to the extra list, this is done to avoid warnings about
+# missing manifests due to implicit dependency chains on populate_sysroot when
+# a recipe/task depends on a IMAGE_EXTRADEPENDS/do_deploy task which is
+# provided by a zynqmp-pmu-* target.
+PACKAGE_EXTRA_ARCHS_append = " microblazeel-v9.2-bs-cmp"
+
diff --git a/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf b/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf
new file mode 100644
index 00000000..658b75be
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf
@@ -0,0 +1,20 @@
+#@TYPE: Machine
+#@NAME: kc705-microblazeel
+#@DESCRIPTION: Machine support for Xilinx KC705 Embedded Kit.
+#
+
+require conf/machine/include/tune-microblaze.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-board.inc
+
+TUNE_FEATURES_tune-microblaze += "v10.0 barrel-shift reorder pattern-compare multiply-high divide-hard"
+
+MACHINE_FEATURES = ""
+
+USE_VT = ""
+SERIAL_CONSOLE = "115200 ttyS0"
+
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
+
+EXTRA_IMAGEDEPENDS += "virtual/bitstream"
+
diff --git a/meta-xilinx-bsp/conf/machine/microzed-zynq7.conf b/meta-xilinx-bsp/conf/machine/microzed-zynq7.conf
new file mode 100644
index 00000000..815bf474
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/microzed-zynq7.conf
@@ -0,0 +1,30 @@
+#@TYPE: Machine
+#@NAME: microzed-zynq7
+#@DESCRIPTION: Machine support for microZed. (http://www.microzed.org/)
+
+require conf/machine/include/tune-zynq.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-board.inc
+
+MACHINE_FEATURES = "ext2 vfat usbhost"
+
+# u-boot configuration
+PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
+UBOOT_MACHINE = "zynq_microzed_config"
+SPL_BINARY = "spl/boot.bin"
+
+EXTRA_IMAGEDEPENDS += " \
+ u-boot-zynq-uenv \
+ virtual/boot-bin \
+ "
+
+SERIAL_CONSOLE = "115200 ttyPS0"
+
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
+
+IMAGE_BOOT_FILES += " \
+ boot.bin \
+ ${MACHINE}.dtb \
+ uEnv.txt \
+ "
+
diff --git a/meta-xilinx-bsp/conf/machine/ml605-qemu-microblazeel.conf b/meta-xilinx-bsp/conf/machine/ml605-qemu-microblazeel.conf
new file mode 100644
index 00000000..2092801e
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/ml605-qemu-microblazeel.conf
@@ -0,0 +1,25 @@
+#@TYPE: Machine
+#@NAME: ml605-qemu-microblazeel
+#@DESCRIPTION: MicroBlaze QEMU machine support ('petalogix-ml605' model)
+
+require conf/machine/include/tune-microblaze.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-qemu.inc
+
+TUNE_FEATURES_tune-microblaze += "v8.50 barrel-shift reorder pattern-compare divide-hard multiply-high fpu-hard"
+
+MACHINE_FEATURES = ""
+
+USE_VT = ""
+SERIAL_CONSOLE = "115200 ttyS0"
+
+# Use the networking setup from qemuarm
+FILESOVERRIDES_append_pn-init-ifupdown = ":qemuarm"
+
+# This machine is a targeting a QEMU model, runqemu setup:
+IMAGE_CLASSES += "qemuboot"
+QB_MEM = "-m 256"
+QB_MACHINE = "-machine petalogix-ml605"
+QB_OPT_APPEND = "-nographic -serial mon:stdio"
+QB_NETWORK_DEVICE = "-net nic,netdev=net0,macaddr=@MAC@"
+
diff --git a/meta-xilinx-bsp/conf/machine/picozed-zynq7.conf b/meta-xilinx-bsp/conf/machine/picozed-zynq7.conf
new file mode 100644
index 00000000..59b4a6cb
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/picozed-zynq7.conf
@@ -0,0 +1,34 @@
+#@TYPE: Machine
+#@NAME: picozed-zynq7
+#@DESCRIPTION: Machine support for picoZed. (http://www.picozed.org/)
+#
+# Note: This machine configuration is intended as a generic config for
+# the picozed SOM. It also covers the multiple SKUs for the picoZed
+# including 7010, 7020, 7015 and 7030.
+
+require conf/machine/include/tune-zynq.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-board.inc
+
+MACHINE_FEATURES = "ext2 vfat usbhost usbgadget"
+
+# u-boot configuration
+PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
+UBOOT_MACHINE = "zynq_picozed_config"
+SPL_BINARY = "spl/boot.bin"
+
+EXTRA_IMAGEDEPENDS += " \
+ u-boot-zynq-uenv \
+ virtual/boot-bin \
+ "
+
+SERIAL_CONSOLE = "115200 ttyPS0"
+
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
+
+IMAGE_BOOT_FILES += " \
+ boot.bin \
+ ${MACHINE}.dtb \
+ uEnv.txt \
+ "
+
diff --git a/meta-xilinx-bsp/conf/machine/qemu-zynq7.conf b/meta-xilinx-bsp/conf/machine/qemu-zynq7.conf
new file mode 100644
index 00000000..0fe99e27
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/qemu-zynq7.conf
@@ -0,0 +1,25 @@
+#@TYPE: Machine
+#@NAME: qemu-zynq7
+#@DESCRIPTION: Zynq QEMU machine support ('xilinx-zynq-a9' model)
+
+require conf/machine/include/tune-zynq.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-qemu.inc
+
+MACHINE_FEATURES = "ext2 vfat"
+
+SERIAL_CONSOLE = "115200 ttyPS0"
+
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
+IMAGE_BOOT_FILES += "${MACHINE}.dtb"
+
+# Use the networking setup from qemuarm
+FILESOVERRIDES_append_pn-init-ifupdown = ":qemuarm"
+
+# This machine is a targeting a QEMU model, runqemu setup:
+IMAGE_CLASSES += "qemuboot"
+QB_MEM = "-m 1024"
+QB_MACHINE = "-machine xilinx-zynq-a9"
+QB_OPT_APPEND = "-nographic -serial null -serial mon:stdio"
+QB_NETWORK_DEVICE = "-net nic,netdev=net0,macaddr=@MAC@"
+
diff --git a/meta-xilinx-bsp/conf/machine/s3adsp1800-qemu-microblazeeb.conf b/meta-xilinx-bsp/conf/machine/s3adsp1800-qemu-microblazeeb.conf
new file mode 100644
index 00000000..6bd75417
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/s3adsp1800-qemu-microblazeeb.conf
@@ -0,0 +1,24 @@
+#@TYPE: Machine
+#@NAME: s3adsp1800-qemu-microblazeeb
+#@DESCRIPTION: MicroBlaze QEMU machine support ('petalogix-s3adsp1800' model)
+
+require conf/machine/include/tune-microblaze.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-qemu.inc
+
+TUNE_FEATURES_tune-microblaze += "v8.00 bigendian barrel-shift pattern-compare multiply-low"
+
+MACHINE_FEATURES = ""
+
+USE_VT = ""
+SERIAL_CONSOLE = "115200 ttyUL0"
+
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS_remove = "device-tree"
+
+# This machine is a targeting a QEMU model, runqemu setup:
+IMAGE_CLASSES += "qemuboot"
+QB_MEM = "-m 256"
+QB_MACHINE = "-machine petalogix-s3adsp1800"
+QB_OPT_APPEND = "-nographic -serial mon:stdio"
+QB_NETWORK_DEVICE = "-net nic,netdev=net0,macaddr=@MAC@"
+
diff --git a/meta-xilinx-bsp/conf/machine/zc702-zynq7.conf b/meta-xilinx-bsp/conf/machine/zc702-zynq7.conf
new file mode 100644
index 00000000..57877bfa
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/zc702-zynq7.conf
@@ -0,0 +1,45 @@
+#@TYPE: Machine
+#@NAME: zc702-zynq7
+#@DESCRIPTION: Machine support for ZC702 Evaluation Board.
+#
+# For details on the Evaluation board:
+# http://www.xilinx.com/products/boards-and-kits/EK-Z7-ZC702-G.htm
+# For documentation and design files for the ZC702:
+# http://www.xilinx.com/support/index.html/content/xilinx/en/supportNav/boards_and_kits/zynq-7000_soc_boards_and_kits/zynq-7000_soc_zc702_evaluation_kit.html
+# For the FSBL 'zynq_fsbl_0.elf' refer to UG873 and the associated design files.
+#
+
+require conf/machine/include/tune-zynq.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-board.inc
+require conf/machine/include/machine-xilinx-qemu.inc
+
+MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
+
+# u-boot configuration
+UBOOT_MACHINE = "zynq_zc702_config"
+SPL_BINARY = "spl/boot.bin"
+
+EXTRA_IMAGEDEPENDS += " \
+ u-boot-zynq-uenv \
+ virtual/boot-bin \
+ "
+
+SERIAL_CONSOLE = "115200 ttyPS0"
+
+KERNEL_DEVICETREE = "zynq-zc702.dtb"
+
+IMAGE_BOOT_FILES += "boot.bin uEnv.txt ${KERNEL_IMAGETYPE}-zynq-zc702.dtb"
+
+# Although not fully supported you can run this machine on the mainline QEMU 'xilinx-zynq-a9' machine
+IMAGE_CLASSES += "qemuboot"
+QB_MEM = "-m 1024"
+QB_MACHINE = "-machine xilinx-zynq-a9"
+QB_OPT_APPEND = "-nographic -serial null -serial mon:stdio"
+QB_NETWORK_DEVICE = "-net nic,netdev=net0,macaddr=@MAC@"
+
+# Xilinx's fork of QEMU has much better results, so let's default to that
+# Use qemu-xilinx instead of mainline
+PREFERRED_PROVIDER_qemu-helper-native = "qemu-xilinx-helper-native"
+
+IMAGE_CLASSES += "qemuboot-xilinx"
diff --git a/meta-xilinx-bsp/conf/machine/zc706-zynq7.conf b/meta-xilinx-bsp/conf/machine/zc706-zynq7.conf
new file mode 100644
index 00000000..d2fbf1b1
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/zc706-zynq7.conf
@@ -0,0 +1,49 @@
+#@TYPE: Machine
+#@NAME: zc706-zynq7
+#@DESCRIPTION: Machine support for ZC706 Evaluation Board.
+#
+# For details on the Evaluation board:
+# http://www.xilinx.com/products/boards-and-kits/EK-Z7-ZC706-G.htm
+# For documentation and design files for the ZC702:
+# http://www.xilinx.com/support/index.html/content/xilinx/en/supportNav/boards_and_kits/zynq-7000_soc_boards_and_kits/zynq-7000_soc_zc706_evaluation_kit.html
+# For the FSBL 'zynq_fsbl_0.elf' refer to UG873 and the associated design files.
+#
+
+require conf/machine/include/tune-zynq.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-board.inc
+require conf/machine/include/machine-xilinx-qemu.inc
+
+MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost usbgadget"
+
+# u-boot configuration
+UBOOT_MACHINE = "zynq_zc706_config"
+SPL_BINARY = "spl/boot.bin"
+
+EXTRA_IMAGEDEPENDS += " \
+ u-boot-zynq-uenv \
+ virtual/boot-bin \
+ "
+
+SERIAL_CONSOLE = "115200 ttyPS0"
+
+KERNEL_DEVICETREE = "zynq-zc706.dtb"
+
+IMAGE_BOOT_FILES += " \
+ boot.bin \
+ ${KERNEL_IMAGETYPE}-zynq-zc706.dtb \
+ uEnv.txt \
+ "
+
+# Although not fully supported you can run this machine on the mainline QEMU 'xilinx-zynq-a9' machine
+IMAGE_CLASSES += "qemuboot"
+QB_MEM = "-m 1024"
+QB_MACHINE = "-machine xilinx-zynq-a9"
+QB_OPT_APPEND = "-nographic -serial null -serial mon:stdio"
+QB_NETWORK_DEVICE = "-net nic,netdev=net0,macaddr=@MAC@"
+
+# Xilinx's fork of QEMU has much better results, so let's default to that
+# Use qemu-xilinx instead of mainline
+PREFERRED_PROVIDER_qemu-helper-native = "qemu-xilinx-helper-native"
+
+IMAGE_CLASSES += "qemuboot-xilinx"
diff --git a/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf
new file mode 100644
index 00000000..fe411483
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf
@@ -0,0 +1,77 @@
+#@TYPE: Machine
+#@NAME: zcu102-zynqmp
+#@DESCRIPTION: Machine support for ZCU102 Evaluation Board.
+
+require conf/machine/include/tune-zynqmp.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-board.inc
+require conf/machine/include/machine-xilinx-qemu.inc
+include conf/machine/include/zynqmp-pmu-config.inc
+
+MACHINE_FEATURES = "rtc ext2 ext3 vfat usbhost"
+
+UBOOT_MACHINE = "xilinx_zynqmp_zcu102_rev1_0_defconfig"
+SPL_BINARY = "spl/boot.bin"
+
+# Default SD image build onfiguration, use qemu-sd to pad
+IMAGE_CLASSES += "image-types-xilinx-qemu"
+IMAGE_FSTYPES += "wic.qemu-sd"
+WKS_FILES ?= "sdimage-bootpart.wks"
+
+SERIAL_CONSOLE = "115200 ttyPS0"
+SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
+
+KERNEL_DEVICETREE = "xilinx/zynqmp-zcu102-rev1.0.dtb"
+
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
+PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-xlnx"
+PREFERRED_PROVIDER_virtual/pmu-firmware ?= "zynqmp-pmu-pmu-firmware"
+
+EXTRA_IMAGEDEPENDS += " \
+ u-boot-zynq-uenv \
+ arm-trusted-firmware \
+ qemu-devicetrees \
+ virtual/pmu-firmware \
+ virtual/boot-bin \
+ "
+
+IMAGE_BOOT_FILES += "uEnv.txt atf-uboot.ub ${KERNEL_IMAGETYPE}-zynqmp-zcu102-rev1.0.dtb"
+
+# This machine has a QEMU model, runqemu setup:
+IMAGE_CLASSES += "qemuboot-xilinx"
+QB_MACHINE = "-machine xlnx-zcu102"
+QB_MEM = "-m 4096"
+QB_OPT_APPEND = "-nographic -serial mon:stdio -serial null"
+QB_NETWORK_DEVICE = "-net nic -net nic -net nic -net nic,netdev=net0,macaddr=@MAC@"
+
+# Use qemu-xilinx instead of mainline
+PREFERRED_PROVIDER_qemu-helper-native = "qemu-xilinx-helper-native"
+
+# Use the multiarch script instead of launching QEMU directly
+QB_SYSTEM_NAME_append = "-multiarch"
+
+# Replicate BootROM like behaviour, having loaded SPL and PMU(ROM+FW)
+QB_OPT_APPEND_append_qemuboot-xilinx = " \
+ -hw-dtb ${DEPLOY_DIR_IMAGE}/qemu-hw-devicetrees/multiarch/zcu102-arm.dtb \
+ ${@qemu_zynqmp_unhalt(d, True)} \
+ -device loader,addr=0xfffc0000,file=${DEPLOY_DIR_IMAGE}/u-boot-spl.bin,cpu-num=0 \
+ "
+
+# Attach the rootfs disk image to the second SD interface of QEMU (which is SD0)
+QB_DEFAULT_FSTYPE_qemuboot-xilinx = "wic.qemu-sd"
+QB_OPT_APPEND_append_qemuboot-xilinx = " -boot mode=3"
+QB_ROOTFS_OPT_qemuboot-xilinx = " -drive if=sd,index=1,file=@ROOTFS@,format=raw"
+
+# PMU instance args
+PMU_ROM ?= "${DEPLOY_DIR_IMAGE}/pmu-rom.elf"
+QB_PMU_OPT = " \
+ -M microblaze-fdt \
+ -display none \
+ -hw-dtb ${DEPLOY_DIR_IMAGE}/qemu-hw-devicetrees/multiarch/zynqmp-pmu.dtb \
+ -kernel ${PMU_ROM} \
+ -device loader,file=${DEPLOY_DIR_IMAGE}/pmu-${MACHINE}.elf \
+ -device loader,addr=0xfd1a0074,data=0x1011003,data-len=4 \
+ -device loader,addr=0xfd1a007C,data=0x1010f03,data-len=4 \
+ "
+QB_OPT_APPEND_append_qemuboot-xilinx = " -pmu-args '${QB_PMU_OPT}'"
+
diff --git a/meta-xilinx-bsp/conf/machine/zedboard-zynq7.conf b/meta-xilinx-bsp/conf/machine/zedboard-zynq7.conf
new file mode 100644
index 00000000..114927de
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/zedboard-zynq7.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: zedboard-zynq7
+#@DESCRIPTION: Machine support for ZedBoard. (http://www.zedboard.org/)
+#
+# For details on the Evaluation board:
+# http://www.zedboard.org/content/overview
+# For design files (including 'zynq_fsbl_0.elf') for the ZedBoard:
+# http://www.zedboard.org/reference-designs-categories/zynq-concepts-tools-and-techniques-zedboard
+#
+
+require conf/machine/include/tune-zynq.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-board.inc
+
+# u-boot configuration
+UBOOT_MACHINE = "zynq_zed_config"
+SPL_BINARY = "spl/boot.bin"
+
+EXTRA_IMAGEDEPENDS += " \
+ u-boot-zynq-uenv \
+ virtual/boot-bin \
+ "
+
+SERIAL_CONSOLE = "115200 ttyPS0"
+
+KERNEL_DEVICETREE = "zynq-zed.dtb"
+
+IMAGE_BOOT_FILES += "boot.bin uEnv.txt ${KERNEL_IMAGETYPE}-zynq-zed.dtb"
+
diff --git a/meta-xilinx-bsp/conf/machine/zybo-linux-bd-zynq7.conf b/meta-xilinx-bsp/conf/machine/zybo-linux-bd-zynq7.conf
new file mode 100644
index 00000000..b916a209
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/zybo-linux-bd-zynq7.conf
@@ -0,0 +1,40 @@
+#@TYPE: Machine
+#@NAME: zybo-linux-bd-zynq7
+#@DESCRIPTION: Machine support for zybo-linux-bd project.
+#
+# generated base on ZYBO linux-bd project
+#
+
+require conf/machine/include/tune-zynq.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-board.inc
+
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-xlnx"
+PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
+
+MACHINE_FEATURES = "ext2 vfat usbhost usbgadget keyboard screen alsa sdio"
+SERIAL_CONSOLE = "115200 ttyPS0"
+
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree"
+
+UBOOT_MACHINE = "zynq_zybo_config"
+SPL_BINARY = "spl/boot.bin"
+FORCE_PLATFORM_INIT = "1"
+
+EXTRA_IMAGEDEPENDS += " \
+ u-boot-zynq-uenv \
+ virtual/boot-bin \
+ virtual/bitstream \
+ "
+
+IMAGE_BOOT_FILES += " \
+ boot.bin \
+ ${MACHINE}.dtb \
+ bitstream \
+ uEnv.txt \
+ "
+
+KERNEL_FEATURES += " \
+ bsp/zybo-linux-bd-zynq7/zybo-linux-bd-zynq7.scc \
+ features/v4l2/v4l2-xilinx.scc \
+ "
diff --git a/meta-xilinx-bsp/conf/machine/zybo-zynq7.conf b/meta-xilinx-bsp/conf/machine/zybo-zynq7.conf
new file mode 100644
index 00000000..e94ad6b9
--- /dev/null
+++ b/meta-xilinx-bsp/conf/machine/zybo-zynq7.conf
@@ -0,0 +1,34 @@
+#@TYPE: Machine
+#@NAME: zybo-zynq7
+#@DESCRIPTION: Machine support for ZYBO.
+#
+# For details on the ZYBO board:
+# https://www.digilentinc.com/Products/Detail.cfm?Prod=ZYBO
+#
+
+require conf/machine/include/tune-zynq.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-board.inc
+
+MACHINE_FEATURES = "ext2 vfat usbhost usbgadget"
+
+# u-boot configuration
+PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
+UBOOT_MACHINE = "zynq_zybo_config"
+SPL_BINARY = "spl/boot.bin"
+
+EXTRA_IMAGEDEPENDS += " \
+ u-boot-zynq-uenv \
+ virtual/boot-bin \
+ "
+
+SERIAL_CONSOLE = "115200 ttyPS0"
+
+KERNEL_DEVICETREE = "zynq-zybo.dtb"
+
+IMAGE_BOOT_FILES += " \
+ boot.bin \
+ ${KERNEL_IMAGETYPE}-zynq-zybo.dtb \
+ uEnv.txt \
+ "
+