mirror of
git://git.yoctoproject.org/meta-raspberrypi.git
synced 2025-07-19 21:09:03 +02:00

[RPi DT info] https://github.com/raspberrypi/documentation/blob/master/configuration/device-tree.md#part-3-using-device-trees-on-raspberry-pi RPi bootloader detects a DT-ready kernel by checking for a specific trailer in kernel.img. Using latest raspberrypi/firmware (firmware.inc) enables this check ability. Using latest raspberrypi/tools (rpi-mkimage.bb) gives access to mkknlimg for adding the required trailer to kernel image. If KERNEL_DEVICETREE is filled in, the trailer is added to the kernel image before kernel install task. While creating the SDCard image, this modified kernel is put on boot partition (as kernel.img) as well as DeviceTree blobs (.dtb files). If KERNEL_DEVICETREE is empty, this new process isn't operated, legacy one does. KERNEL_DEVICETREE for RPi is really supported only starting from linux-rapsberry 3.18+ kernels, so as for now it defaults to empty (in machine config file). Change-Id: Ifea71bbda729b8f3c47be7ba0ba03be5ad2ceeaa Signed-off-by: Francois Muller <francois@concept-embarque.fr>
61 lines
2.0 KiB
PHP
61 lines
2.0 KiB
PHP
require linux.inc
|
|
|
|
DESCRIPTION = "Linux Kernel for Raspberry Pi"
|
|
SECTION = "kernel"
|
|
LICENSE = "GPLv2"
|
|
LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
|
|
|
|
SRC_URI += " \
|
|
file://defconfig \
|
|
"
|
|
|
|
COMPATIBLE_MACHINE = "raspberrypi"
|
|
|
|
PV_append = "+git${SRCREV}"
|
|
|
|
# NOTE: For now we pull in the default config from the RPi kernel GIT tree.
|
|
KERNEL_DEFCONFIG = "bcmrpi_defconfig"
|
|
|
|
# CMDLINE for raspberrypi
|
|
CMDLINE_raspberrypi = "dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"
|
|
|
|
UDEV_GE_141 ?= "1"
|
|
|
|
# Set programmatically some variables during recipe parsing
|
|
# 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)
|
|
|
|
# Add dependency to 'rpi-mkimage-native' package only if RPi bootloader is used with DT-enable kernel
|
|
if kerneldt:
|
|
if kerneltype != 'uImage' and len(kerneldt.strip()) > 1:
|
|
depends = d.getVar("DEPENDS", True)
|
|
depends = "%s rpi-mkimage-native" % depends
|
|
d.setVar("DEPENDS", depends)
|
|
}
|
|
|
|
do_kernel_configme_prepend() {
|
|
install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available."
|
|
}
|
|
|
|
do_install_prepend() {
|
|
install -d ${D}/lib/firmware
|
|
}
|
|
|
|
do_deploy_append() {
|
|
# Deploy cmdline.txt
|
|
install -d ${DEPLOYDIR}/bcm2835-bootfiles
|
|
echo "${CMDLINE}" > ${DEPLOYDIR}/bcm2835-bootfiles/cmdline.txt
|
|
}
|
|
|
|
do_rpiboot_mkimage() {
|
|
if test "x${KERNEL_IMAGETYPE}" != "xuImage" ; then
|
|
if test -n "${KERNEL_DEVICETREE}"; then
|
|
# Add RPi bootloader trailer to kernel image to enable DeviceTree support
|
|
${STAGING_DIR_NATIVE}/usr/lib/rpi-mkimage/mkknlimg --dtok ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}
|
|
fi
|
|
fi
|
|
}
|
|
addtask rpiboot_mkimage before do_install after do_compile
|