devicetree: Add support for DT overlays with RPi bootloader

Compile overlay device trees and put them in 'overlays/' folder
on sdcard RPi boot partition.

Change-Id: I3da0032b3c2618165008eec1fc94e97824d09099
Signed-off-by: Francois Muller <francois@concept-embarque.fr>
This commit is contained in:
Francois Muller 2015-02-07 20:54:37 +01:00
parent 4dc75cedf7
commit 2dbc974596
2 changed files with 31 additions and 6 deletions

View File

@ -66,6 +66,11 @@ SDIMG = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.rpi-sdimg"
# Additional files and/or directories to be copied into the vfat partition from the IMAGE_ROOTFS.
FATPAYLOAD ?= ""
# Device Tree Overlays are assumed to be suffixed by '-overlay.dtb' string and will be put in a dedicated folder
DT_ALL = "${@d.getVar('KERNEL_DEVICETREE', True) or ''}"
DT_OVERLAYS = "${@oe.utils.str_filter('\S+\-overlay\.dtb$', '${DT_ALL}', d)}"
DT_ROOT = "${@oe.utils.str_filter_out('\S+\-overlay\.dtb$', '${DT_ALL}', d)}"
IMAGEDATESTAMP = "${@time.strftime('%Y.%m.%d',time.gmtime())}"
IMAGE_CMD_rpi-sdimg () {
@ -104,15 +109,20 @@ IMAGE_CMD_rpi-sdimg () {
;;
*)
if test -n "${KERNEL_DEVICETREE}"; then
for DTB in ${KERNEL_DEVICETREE}; do
if echo ${DTB} | grep -q '/dts/'; then
bbwarn "${DTB} contains the full path to the the dts file, but only the dtb name should be used."
DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'`
fi
# Copy board device trees to root folder
for DTB in ${DT_ROOT}; do
DTB_BASE_NAME=`basename ${DTB} .dtb`
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB_BASE_NAME}.dtb ::${DTB_BASE_NAME}.dtb
done
# Copy device tree overlays to dedicated folder
mmd -i ${WORKDIR}/boot.img overlays
for DTB in ${DT_OVERLAYS}; do
DTB_BASE_NAME=`basename ${DTB} .dtb`
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB_BASE_NAME}.dtb ::overlays/${DTB_BASE_NAME}.dtb
done
fi
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}${KERNEL_INITRAMFS}-${MACHINE}.bin ::kernel.img
;;

View File

@ -25,7 +25,22 @@ XSERVER = " \
KERNEL_IMAGETYPE ?= "Image"
# Really supported starting from linux-rapsberry 3.18.y only !
#KERNEL_DEVICETREE ?= "bcm2708-rpi-b.dtb bcm2708-rpi-b-plus.dtb"
#KERNEL_DEVICETREE ?= " \
# bcm2708-rpi-b.dtb \
# bcm2708-rpi-b-plus.dtb \
# ds1307-rtc-overlay.dtb \
# hifiberry-amp-overlay.dtb \
# hifiberry-dac-overlay.dtb \
# hifiberry-dacplus-overlay.dtb \
# hifiberry-digi-overlay.dtb \
# iqaudio-dac-overlay.dtb \
# iqaudio-dacplus-overlay.dtb \
# lirc-rpi-overlay.dtb \
# pcf8523-rtc-overlay.dtb \
# pps-gpio-overlay.dtb \
# w1-gpio-overlay.dtb \
# w1-gpio-pullup-overlay.dtb \
# "
MACHINE_FEATURES = "kernel26 apm usbhost keyboard vfat ext2 screen touchscreen alsa bluetooth wifi sdio"