mirror of
git://git.yoctoproject.org/meta-raspberrypi.git
synced 2025-07-19 21:09:03 +02:00
devicetree: auto-disable dts for old kernels
After '6392a63 rpi-base.inc: Use KERNEL_DEVICETREE by default' was introduced, kernel versions < 3.18 might not be buildable. Since full device tree support was introduced in 3.18 this change ensures that all kernel < 3.18 will automatically disable device tree. Signed-off-by: Petter Mabäcker <petter@technux.se>
This commit is contained in:
parent
6ef9d94a2c
commit
4a4373c02d
39
classes/linux-raspberrypi-base.bbclass
Normal file
39
classes/linux-raspberrypi-base.bbclass
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
inherit linux-kernel-base
|
||||||
|
|
||||||
|
|
||||||
|
def get_dts(d, ver):
|
||||||
|
staging_dir = d.getVar("STAGING_KERNEL_BUILDDIR", True)
|
||||||
|
dts = d.getVar("KERNEL_DEVICETREE", True)
|
||||||
|
|
||||||
|
# d.getVar() might return 'None' as a normal string
|
||||||
|
# leading to 'is None' check isn't enough.
|
||||||
|
# TODO: Investigate if this is a bug in bitbake
|
||||||
|
if ver is None or ver == "None":
|
||||||
|
''' if 'ver' isn't set try to grab the kernel version
|
||||||
|
from the kernel staging '''
|
||||||
|
ver = get_kernelversion_file(staging_dir)
|
||||||
|
|
||||||
|
if ver is not None:
|
||||||
|
min_ver = ver.split('.', 3)
|
||||||
|
else:
|
||||||
|
return dts
|
||||||
|
|
||||||
|
# Always turn off device tree support for kernel's < 3.18
|
||||||
|
try:
|
||||||
|
if int(min_ver[0]) <= 3:
|
||||||
|
if int(min_ver[1]) < 18:
|
||||||
|
dts = ""
|
||||||
|
except IndexError:
|
||||||
|
min_ver = None
|
||||||
|
|
||||||
|
return dts
|
||||||
|
|
||||||
|
|
||||||
|
def split_overlays(d, out):
|
||||||
|
dts = get_dts(d, None)
|
||||||
|
if out:
|
||||||
|
overlays = oe.utils.str_filter_out('\S+\-overlay\.dtb$', dts, d)
|
||||||
|
else:
|
||||||
|
overlays = oe.utils.str_filter('\S+\-overlay\.dtb$', dts, d)
|
||||||
|
|
||||||
|
return overlays
|
|
@ -1,4 +1,5 @@
|
||||||
inherit image_types
|
inherit image_types
|
||||||
|
inherit linux-raspberrypi-base
|
||||||
|
|
||||||
#
|
#
|
||||||
# Create an image that can by written onto a SD card using dd.
|
# Create an image that can by written onto a SD card using dd.
|
||||||
|
@ -70,11 +71,6 @@ 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.
|
# Additional files and/or directories to be copied into the vfat partition from the IMAGE_ROOTFS.
|
||||||
FATPAYLOAD ?= ""
|
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())}"
|
IMAGEDATESTAMP = "${@time.strftime('%Y.%m.%d',time.gmtime())}"
|
||||||
|
|
||||||
IMAGE_CMD_rpi-sdimg () {
|
IMAGE_CMD_rpi-sdimg () {
|
||||||
|
@ -90,6 +86,9 @@ IMAGE_CMD_rpi-sdimg () {
|
||||||
|
|
||||||
echo "Creating filesystem with Boot partition ${BOOT_SPACE_ALIGNED} KiB and RootFS ${ROOTFS_SIZE_ALIGNED} KiB"
|
echo "Creating filesystem with Boot partition ${BOOT_SPACE_ALIGNED} KiB and RootFS ${ROOTFS_SIZE_ALIGNED} KiB"
|
||||||
|
|
||||||
|
# Check if we are building with device tree support
|
||||||
|
DTS="${@get_dts(d, None)}"
|
||||||
|
|
||||||
# Initialize sdcard image file
|
# Initialize sdcard image file
|
||||||
dd if=/dev/zero of=${SDIMG} bs=1024 count=0 seek=${SDIMG_SIZE}
|
dd if=/dev/zero of=${SDIMG} bs=1024 count=0 seek=${SDIMG_SIZE}
|
||||||
|
|
||||||
|
@ -112,7 +111,11 @@ IMAGE_CMD_rpi-sdimg () {
|
||||||
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}${KERNEL_INITRAMFS}-${MACHINE}.bin ::uImage
|
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}${KERNEL_INITRAMFS}-${MACHINE}.bin ::uImage
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if test -n "${KERNEL_DEVICETREE}"; then
|
if test -n "${DTS}"; then
|
||||||
|
# Device Tree Overlays are assumed to be suffixed by '-overlay.dtb' string and will be put in a dedicated folder
|
||||||
|
DT_OVERLAYS="${@split_overlays(d, 0)}"
|
||||||
|
DT_ROOT="${@split_overlays(d, 1)}"
|
||||||
|
|
||||||
# Copy board device trees to root folder
|
# Copy board device trees to root folder
|
||||||
for DTB in ${DT_ROOT}; do
|
for DTB in ${DT_ROOT}; do
|
||||||
DTB_BASE_NAME=`basename ${DTB} .dtb`
|
DTB_BASE_NAME=`basename ${DTB} .dtb`
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
require linux.inc
|
require linux.inc
|
||||||
|
inherit linux-raspberrypi-base
|
||||||
|
|
||||||
DESCRIPTION = "Linux Kernel for Raspberry Pi"
|
DESCRIPTION = "Linux Kernel for Raspberry Pi"
|
||||||
SECTION = "kernel"
|
SECTION = "kernel"
|
||||||
|
@ -26,7 +27,8 @@ UDEV_GE_141 ?= "1"
|
||||||
# See http://www.yoctoproject.org/docs/current/bitbake-user-manual/bitbake-user-manual.html#anonymous-python-functions
|
# See http://www.yoctoproject.org/docs/current/bitbake-user-manual/bitbake-user-manual.html#anonymous-python-functions
|
||||||
python __anonymous () {
|
python __anonymous () {
|
||||||
kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
|
kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
|
||||||
kerneldt = d.getVar('KERNEL_DEVICETREE', True)
|
kerneldt = get_dts(d, d.getVar('LINUX_VERSION', True))
|
||||||
|
d.setVar("KERNEL_DEVICETREE", kerneldt)
|
||||||
|
|
||||||
# Add dependency to 'rpi-mkimage-native' package only if RPi bootloader is used with DT-enable kernel
|
# Add dependency to 'rpi-mkimage-native' package only if RPi bootloader is used with DT-enable kernel
|
||||||
if kerneldt:
|
if kerneldt:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user