diff options
| author | Nathan Rossi <nathan.rossi@xilinx.com> | 2014-07-08 16:44:57 +1000 |
|---|---|---|
| committer | Nathan Rossi <nathan.rossi@xilinx.com> | 2014-10-27 17:58:43 +1000 |
| commit | ad44189328569608bb50f7c7fdcac1c7466ce893 (patch) | |
| tree | ece7ec15fb9a3cb6901db71c8b0e18a618c476c0 | |
| parent | 2add7980d34bf9f558c7ea87b79d07479d50c600 (diff) | |
| download | meta-xilinx-ad44189328569608bb50f7c7fdcac1c7466ce893.tar.gz | |
device-tree: Add recipe for creating device tree blobs
* Using the linux-dtb.inc steps, create a recipe external from the
kernel recipe to handle the building of device tree blobs.
* For backwards compatibility create a symlink with the kernel imagetype
Signed-off-by: Nathan Rossi <nathan.rossi@xilinx.com>
| -rw-r--r-- | recipes-bsp/device-tree/device-tree.bb | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/recipes-bsp/device-tree/device-tree.bb b/recipes-bsp/device-tree/device-tree.bb new file mode 100644 index 00000000..f32566f1 --- /dev/null +++ b/recipes-bsp/device-tree/device-tree.bb | |||
| @@ -0,0 +1,81 @@ | |||
| 1 | SUMMARY = "Device Trees for BSPs" | ||
| 2 | DESCRIPTION = "Device Tree generation and packaging for BSP Device Trees." | ||
| 3 | SECTION = "bsp" | ||
| 4 | |||
| 5 | LICENSE = "MIT" | ||
| 6 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" | ||
| 7 | |||
| 8 | INHIBIT_DEFAULT_DEPS = "1" | ||
| 9 | PACKAGE_ARCH = "all" | ||
| 10 | |||
| 11 | DEPENDS += "dtc-native" | ||
| 12 | |||
| 13 | FILES_${PN} = "/boot/devicetree*" | ||
| 14 | DEVICETREE_FLAGS ?= "-R 8 -p 0x3000" | ||
| 15 | |||
| 16 | do_compile() { | ||
| 17 | if test -n "${MACHINE_DEVICETREE}"; then | ||
| 18 | mkdir -p ${WORKDIR}/devicetree | ||
| 19 | for i in ${MACHINE_DEVICETREE}; do | ||
| 20 | if test -e ${WORKDIR}/$i; then | ||
| 21 | echo cp ${WORKDIR}/$i ${WORKDIR}/devicetree | ||
| 22 | cp ${WORKDIR}/$i ${WORKDIR}/devicetree | ||
| 23 | fi | ||
| 24 | done | ||
| 25 | fi | ||
| 26 | |||
| 27 | for DTS_FILE in ${DEVICETREE}; do | ||
| 28 | DTS_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` | ||
| 29 | dtc -I dts -O dtb ${DEVICETREE_FLAGS} -o ${DTS_NAME}.dtb ${DTS_FILE} | ||
| 30 | done | ||
| 31 | } | ||
| 32 | |||
| 33 | do_install() { | ||
| 34 | for DTS_FILE in ${DEVICETREE}; do | ||
| 35 | if [ ! -f ${DTS_FILE} ]; then | ||
| 36 | echo "Warning: ${DTS_FILE} is not available!" | ||
| 37 | continue | ||
| 38 | fi | ||
| 39 | DTS_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` | ||
| 40 | install -d ${D}/boot/devicetree | ||
| 41 | install -m 0644 ${B}/${DTS_NAME}.dtb ${D}/boot/devicetree/${DTS_NAME}.dtb | ||
| 42 | done | ||
| 43 | } | ||
| 44 | |||
| 45 | do_deploy() { | ||
| 46 | for DTS_FILE in ${DEVICETREE}; do | ||
| 47 | if [ ! -f ${DTS_FILE} ]; then | ||
| 48 | echo "Warning: ${DTS_FILE} is not available!" | ||
| 49 | continue | ||
| 50 | fi | ||
| 51 | DTS_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` | ||
| 52 | install -d ${DEPLOY_DIR_IMAGE} | ||
| 53 | install -m 0644 ${B}/${DTS_NAME}.dtb ${DEPLOY_DIR_IMAGE}/${DTS_NAME}.dtb | ||
| 54 | done | ||
| 55 | } | ||
| 56 | |||
| 57 | # Deploy ${KERNEL_IMAGETYPE}-${DTS_NAME}.dtb for compatibility with runqemu | ||
| 58 | DEPLOY_KERNEL_DTB_qemuzynq = "1" | ||
| 59 | DEPLOY_KERNEL_DTB_qemumicroblaze = "1" | ||
| 60 | do_deploy_append() { | ||
| 61 | if [ ! -z "${DEPLOY_KERNEL_DTB}" -a ! -z "${KERNEL_IMAGETYPE}" ]; then | ||
| 62 | for DTS_FILE in ${DEVICETREE}; do | ||
| 63 | DTS_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` | ||
| 64 | KERNELDTBPATH=${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_NAME}.dtb | ||
| 65 | if [ ! -e ${KERNELDTBPATH} -o -h ${KERNELDTBPATH} ]; then | ||
| 66 | ln -sf ${DTS_NAME}.dtb ${KERNELDTBPATH} | ||
| 67 | fi | ||
| 68 | done | ||
| 69 | fi | ||
| 70 | } | ||
| 71 | |||
| 72 | addtask deploy before do_build after do_install | ||
| 73 | |||
| 74 | inherit xilinx-utils | ||
| 75 | |||
| 76 | DEVICETREE ?= "${@expand_dir_basepaths_by_extension("MACHINE_DEVICETREE", os.path.join(d.getVar("WORKDIR", True), 'devicetree'), '.dts', d)}" | ||
| 77 | FILESEXTRAPATHS_append := "${@get_additional_bbpath_filespath('conf/machine/boards', d)}" | ||
| 78 | |||
| 79 | # Using the MACHINE_DEVICETREE and MACHINE_KCONFIG vars, append them to SRC_URI | ||
| 80 | SRC_URI += "${@paths_affix(d.getVar("MACHINE_DEVICETREE", True) or '', prefix = 'file://')}" | ||
| 81 | |||
