SUMMARY = "Device Trees for BSPs" DESCRIPTION = "Device Tree generation and packaging for BSP Device Trees." SECTION = "bsp" LICENSE = "MIT & GPLv2" LIC_FILES_CHKSUM = " \ file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302 \ file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6 \ " inherit deploy kernel-arch PROVIDES = "virtual/dtb" INHIBIT_DEFAULT_DEPS = "1" DEPENDS += "dtc-native" COMPATIBLE_MACHINE ?= "^$" PACKAGE_ARCH = "${MACHINE_ARCH}" FILES_${PN} = "/boot/devicetree/*.dtb /boot/devicetree/*.dtbo" S = "${WORKDIR}" B = "${WORKDIR}/build" SYSROOT_DIRS += "/boot/devicetree" # By default provide the current kernel arch's boot/dts and boot/dts/include. KERNEL_DTS_INCLUDE ??= " \ ${STAGING_KERNEL_DIR}/arch/${ARCH}/boot/dts \ ${STAGING_KERNEL_DIR}/arch/${ARCH}/boot/dts/include \ ${STAGING_KERNEL_DIR}/scripts/dtc/include-prefixes \ " # For arm64/zynqmp the xilinx specific includes are subdired under a vendor directory. KERNEL_DTS_INCLUDE_append_zynqmp = " \ ${STAGING_KERNEL_DIR}/arch/${ARCH}/boot/dts/xilinx \ " DTS_FILES_PATH ?= "${S}" DTS_INCLUDE ?= "${DTS_FILES_PATH} ${KERNEL_DTS_INCLUDE}" DT_PADDING_SIZE ?= "0x3000" DEVICETREE_FLAGS ?= " \ -R 8 -p ${DT_PADDING_SIZE} -b 0 \ ${@' '.join(['-i %s' % i for i in d.getVar('DTS_INCLUDE', True).split()])} \ " DEVICETREE_OFLAGS ?= "-@ -H epapr" DEVICETREE_PP_FLAGS ?= " \ -nostdinc -Ulinux -x assembler-with-cpp \ ${@' '.join(['-I%s' % i for i in d.getVar('DTS_INCLUDE', True).split()])} \ " python () { # auto add dependency on kernel tree if d.getVar("KERNEL_DTS_INCLUDE") != "": d.appendVarFlag("do_compile", "depends", " virtual/kernel:do_configure") } do_compile() { for DTS_FILE in ${DTS_FILES_PATH}/*.dts; do DTS_NAME=`basename -s .dts ${DTS_FILE}` ${BUILD_CPP} ${DEVICETREE_PP_FLAGS} -o `basename ${DTS_FILE}`.pp ${DTS_FILE} # for now use the existance of the '/plugin/' tag to detect overlays if grep -qse "/plugin/;" `basename ${DTS_FILE}`.pp; then dtc ${DEVICETREE_OFLAGS} -I dts -O dtb ${DEVICETREE_FLAGS} -o ${DTS_NAME}.dtbo `basename ${DTS_FILE}`.pp else dtc -I dts -O dtb ${DEVICETREE_FLAGS} -o ${DTS_NAME}.dtb `basename ${DTS_FILE}`.pp fi done } do_install() { for DTB_FILE in `ls *.dtb *.dtbo`; do install -Dm 0644 ${B}/${DTB_FILE} ${D}/boot/devicetree/${DTB_FILE} done } do_deploy() { for DTB_FILE in `ls *.dtb *.dtbo`; do install -Dm 0644 ${B}/${DTB_FILE} ${DEPLOYDIR}/${DTB_FILE} done } addtask deploy before do_build after do_install