# add dtsi's SRC_URI += "file://*.dtsi" DEV_DIR ?= "${TOPDIR}/../../linux-elphel" python do_unpack(){ DEV_DIR = d.getVar('DEV_DIR', True) MACHINE = d.getVar('MACHINE', True) WORKDIR = d.getVar('WORKDIR', True) if os.path.isdir(DEV_DIR): print("Found DEV_DIR, skipping something") DTS_PATH = DEV_DIR+"/src/arch/arm/boot/dts" MACHINE_DTS = DTS_PATH+"/"+MACHINE+".dts" if os.path.isfile(MACHINE_DTS): print("Machine device tree found: "+MACHINE+".dts") # reset MACHINE_DEVICETREE d.setVar('MACHINE_DEVICETREE',MACHINE+".dts") if not os.path.isdir(WORKDIR+"/devicetree"): import subprocess cmd = "ln -sf "+DTS_PATH+" "+WORKDIR+"/devicetree" try: res = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) except subprocess.CalledProcessError as e: res = "error_"+e.returncode else: bb.build.exec_func('base_do_unpack', d) } do_deploy(){ for DTS_FILE in ${DEVICETREE}; do DTS_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` for RLOC in ${PRODUCTION_ROOT_LOCATION}; do if [ ! -f ${WORKDIR}/${DTS_NAME}_${RLOC}.dtb ]; then echo "Warning: ${WORKDIR}/${DTS_NAME}_${RLOC}.dtb is not available!" continue fi install -d ${DEPLOY_DIR_IMAGE} install -m 0644 ${B}/${DTS_NAME}_${RLOC}.dtb ${DEPLOY_DIR_IMAGE}/${DTS_NAME}_${RLOC}.dtb echo "RootFS located in ${RLOC}" if [ ! -d ${DEPLOY_DIR_IMAGE}/${RLOC} ]; then mkdir ${DEPLOY_DIR_IMAGE}/${RLOC} fi if [ -f ${DEPLOY_DIR_IMAGE}/${RLOC}/${PRODUCTION_DEVICETREE} ]; then rm ${DEPLOY_DIR_IMAGE}/${RLOC}/${PRODUCTION_DEVICETREE} fi cp ${DEPLOY_DIR_IMAGE}/${MACHINE}_${RLOC}.dtb ${DEPLOY_DIR_IMAGE}/${RLOC}/${PRODUCTION_DEVICETREE} done done } # full sub do_compile() { if test -n "${MACHINE_DEVICETREE}"; then mkdir -p ${WORKDIR}/devicetree for i in ${MACHINE_DEVICETREE}; do if test -e ${WORKDIR}/$i; then echo cp ${WORKDIR}/$i ${WORKDIR}/devicetree cp ${WORKDIR}/$i ${WORKDIR}/devicetree cp ${WORKDIR}/*.dtsi ${WORKDIR}/devicetree fi done fi for DTS_FILE in ${DEVICETREE}; do DTS_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` for RLOC in ${PRODUCTION_ROOT_LOCATION}; do ln -sf ${WORKDIR}/devicetree/${MACHINE}-bootargs-${RLOC}.dtsi ${WORKDIR}/devicetree/bootargs.dtsi dtc -I dts -O dtb ${DEVICETREE_FLAGS} -o ${DTS_NAME}_${RLOC}.dtb ${DTS_FILE} rm ${WORKDIR}/devicetree/bootargs.dtsi done done } # full sub do_install() { for DTS_FILE in ${DEVICETREE}; do DTS_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` for RLOC in ${PRODUCTION_ROOT_LOCATION}; do if [ ! -f ${WORKDIR}/${DTS_NAME}_${RLOC}.dtb ]; then echo "Warning: ${DTS_NAME}_${RLOC}.dtb is not available!" continue fi install -d ${D}/boot/devicetree install -m 0644 ${B}/${DTS_NAME}_${RLOC}.dtb ${D}/boot/devicetree/${DTS_NAME}_${RLOC}.dtb done done }