Device Tree Overlay Support Lands Upstream

Pantelis Antoniou originated device tree overlay support for the purpose of enabling dynamic hardware configuration under Linux on devices like BeagleBone that use device tree for hardware configuration. Device tree was introduced to Linux for the purpose of putting the description of hardware into data structures, rather than building it up programmatically, greatly reducing the amount of code required to be maintained within the Linux kernel sources. Until now, the device tree data structure was only processed at boot time and that simply can’t work for devices that might change hardware configurations after boot. While many BeagleBone capes can be probed by the bootloader, a common use-case is hardware that is reconfigurable. The most obvious example is a cape with an FPGA on it.

Pantelis’ early code was used in the kernel provided with the launch of BeagleBone Black. This became the standard for how BeagleBone cape hardware is supported with numerous tutorials showing up and probing of the on-board cape EEPROMs by Capemgr. This was all done specifically for BeagleBone kernels and was not part of mainline Linux until today when Linus’ accepted Pantelis’ patch for device tree transactional support which introduces changesets to device tree support.

Thank you Pantelis for your persistence!

This means that we should soon have Capemgr support in newer kernels and we are trying to get a jump on that now. However, we’ve also learned a few things over the last year about what the typical cape maker might feel comfortable understanding and debugging. Robert Nelson has been releasing kernel images based on 3.14 stable trees and TI patch sets along with test Debian images. This was announced on the mailing list recently along with instructions on downloading newer images, updating to newer kernels and reporting issues. In this new kernel effort, we are starting with trying to enable every cape and I/O function we can manage without overlays first, then will make use of overlays for any features. The initial direction was to create a separate git tree for this effort, but that idea was dropped and the latest Beagle kernels can all be found at github.com/beagleboard/linux with live Debian-packaged builds at builds.beagleboard.org.

Your help testing and patching this kernel, along with your appreciation of those continuing to advance the state of the mainline Linux kernel, is greatly appreciated. Thanks all!