[yocto] [meta-raspberrypi][PATCH 1/5] devicetree: auto-disable dts for old kernels
Andrei Gherzan
andrei at gherzan.ro
Sun May 10 03:16:50 PDT 2015
Hello Petter,
On Fri, May 8, 2015 at 11:49 PM, Petter Mabäcker <petter at technux.se> wrote:
> 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 at technux.se>
> ---
> classes/linux-raspberrypi-base.bbclass | 29
> +++++++++++++++++++++++++++++
> classes/sdcard_image-rpi.bbclass | 6 ++++--
> recipes-kernel/linux/linux-raspberrypi.inc | 4 +++-
> 3 files changed, 36 insertions(+), 3 deletions(-)
> create mode 100644 classes/linux-raspberrypi-base.bbclass
>
> diff --git a/classes/linux-raspberrypi-base.bbclass
> b/classes/linux-raspberrypi-base.bbclass
> new file mode 100644
> index 0000000..4bcadd0
> --- /dev/null
> +++ b/classes/linux-raspberrypi-base.bbclass
> @@ -0,0 +1,29 @@
> +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
> diff --git a/classes/sdcard_image-rpi.bbclass
> b/classes/sdcard_image-rpi.bbclass
> index 1ff664d..ca94566 100644
> --- a/classes/sdcard_image-rpi.bbclass
> +++ b/classes/sdcard_image-rpi.bbclass
> @@ -1,4 +1,5 @@
> inherit image_types
> +inherit linux-raspberrypi-base
>
> #
> # Create an image that can by written onto a SD card using dd.
> @@ -88,7 +89,8 @@ IMAGE_CMD_rpi-sdimg () {
> ROOTFS_SIZE_ALIGNED=$(expr ${ROOTFS_SIZE_ALIGNED} -
> ${ROOTFS_SIZE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT})
> SDIMG_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} +
> ${BOOT_SPACE_ALIGNED} + ${ROOTFS_SIZE_ALIGNED})
>
> - echo "Creating filesystem with Boot partition
> ${BOOT_SPACE_ALIGNED} KiB and RootFS ${ROOTFS_SIZE_ALIGNED} KiB"
>
Why do you remove this line? Maybe by mistake?
> + # Check if we are building with device tree support
> + DTS="${@get_dts(d, None)}"
>
Aren't we able to use the same variable name, KERNEL_DEVICETREE? What that
be a little clearer?
>
> # Initialize sdcard image file
> dd if=/dev/zero of=${SDIMG} bs=1024 count=0 seek=${SDIMG_SIZE}
> @@ -112,7 +114,7 @@ IMAGE_CMD_rpi-sdimg () {
> 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
> # Copy board device trees to root folder
> for DTB in ${DT_ROOT}; do
> DTB_BASE_NAME=`basename ${DTB} .dtb`
> diff --git a/recipes-kernel/linux/linux-raspberrypi.inc
> b/recipes-kernel/linux/linux-raspberrypi.inc
> index 84d4f9e..7e36408 100644
> --- a/recipes-kernel/linux/linux-raspberrypi.inc
> +++ b/recipes-kernel/linux/linux-raspberrypi.inc
> @@ -1,4 +1,5 @@
> require linux.inc
> +inherit linux-raspberrypi-base
>
> DESCRIPTION = "Linux Kernel for Raspberry Pi"
> 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
> python __anonymous () {
> 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
> if kerneldt:
> --
> 1.9.1
>
> --
> _______________________________________________
> yocto mailing list
> yocto at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
>
--
*Andrei Gherzan*
*e: **andrei at gherzan.ro <andrei at gherzan.ro>*
*w: *www.gherzan.ro
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20150510/baa6e07d/attachment.html>
More information about the yocto
mailing list