[meta-xilinx] [PATCH 01/12] device-tree.bb: Add support to use kernel source tree includes

Nathan Rossi nathan at nathanrossi.com
Wed Feb 24 01:30:54 PST 2016


* Add support to use the base platform includes directly from the
  currently selected kernel source tree
* Setup 'zynq-7000.dtsi' as default for 'zynq' targets
* Setup 'zynqmp.dtsi' as default for 'zynqmp' targets
* Remove use of awk, use basename -s instead

Signed-off-by: Nathan Rossi <nathan at nathanrossi.com>
---
 recipes-bsp/device-tree/device-tree.bb | 27 +++++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/recipes-bsp/device-tree/device-tree.bb b/recipes-bsp/device-tree/device-tree.bb
index 3cd6b26..6332e9c 100644
--- a/recipes-bsp/device-tree/device-tree.bb
+++ b/recipes-bsp/device-tree/device-tree.bb
@@ -15,7 +15,26 @@ DEVICETREE_FLAGS ?= "-R 8 -p 0x3000"
 
 S = "${WORKDIR}"
 
+KERNEL_DTS_INCLUDE ??= ""
+KERNEL_DTS_INCLUDE_zynq = "arch/arm/boot/dts/skeleton.dtsi arch/arm/boot/dts/zynq-7000.dtsi"
+KERNEL_DTS_INCLUDE_zynqmp = "arch/arm/boot/dts/skeleton.dtsi arch/arm64/boot/dts/xilinx/zynqmp.dtsi"
+
+python () {
+    # auto add dependency on kernel tree
+    if d.getVar("KERNEL_DTS_INCLUDE", True) != "":
+        d.setVarFlag("do_compile", "depends",
+            " ".join([d.getVarFlag("do_compile", "depends", True) or "", "virtual/kernel:do_shared_workdir"]))
+}
+
 do_compile() {
+	for i in ${KERNEL_DTS_INCLUDE}; do
+		DTSI_NAME=`basename $i`
+		if test -e ${STAGING_KERNEL_DIR}/$i; then
+			mkdir -p ${WORKDIR}/devicetree
+			cp ${STAGING_KERNEL_DIR}/$i ${WORKDIR}/devicetree/${DTSI_NAME}
+		fi
+	done
+
 	if test -n "${MACHINE_DEVICETREE}"; then
 		mkdir -p ${WORKDIR}/devicetree
 		for i in ${MACHINE_DEVICETREE}; do
@@ -27,7 +46,7 @@ do_compile() {
 	fi
 
 	for DTS_FILE in ${DEVICETREE}; do
-		DTS_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
+		DTS_NAME=`basename -s .dts ${DTS_FILE}`
 		dtc -I dts -O dtb ${DEVICETREE_FLAGS} -o ${DTS_NAME}.dtb ${DTS_FILE}
 	done
 }
@@ -38,7 +57,7 @@ do_install() {
 			echo "Warning: ${DTS_FILE} is not available!"
 			continue
 		fi
-		DTS_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
+		DTS_NAME=`basename -s .dts ${DTS_FILE}`
 		install -d ${D}/boot/devicetree
 		install -m 0644 ${B}/${DTS_NAME}.dtb ${D}/boot/devicetree/${DTS_NAME}.dtb
 	done
@@ -50,7 +69,7 @@ do_deploy() {
 			echo "Warning: ${DTS_FILE} is not available!"
 			continue
 		fi
-		DTS_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
+		DTS_NAME=`basename -s .dts ${DTS_FILE}`
 		install -d ${DEPLOY_DIR_IMAGE}
 		install -m 0644 ${B}/${DTS_NAME}.dtb ${DEPLOY_DIR_IMAGE}/${DTS_NAME}.dtb
 	done
@@ -61,7 +80,7 @@ DEPLOY_KERNEL_DTB_qemuzynq = "1"
 do_deploy_append() {
 	if [ ! -z "${DEPLOY_KERNEL_DTB}" -a ! -z "${KERNEL_IMAGETYPE}" ]; then
 		for DTS_FILE in ${DEVICETREE}; do
-			DTS_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
+			DTS_NAME=`basename -s .dts ${DTS_FILE}`
 			KERNELDTBPATH=${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_NAME}.dtb
 			if [ ! -e ${KERNELDTBPATH} -o -h ${KERNELDTBPATH} ]; then
 				ln -sf ${DTS_NAME}.dtb ${KERNELDTBPATH}
-- 
2.7.0




More information about the meta-xilinx mailing list