Device tree future
- 1 Devicetree Validation
- 2 Devicetree Verification
- 3 Devicetree Specification
- 4 Linux Plumbers 2015 Device Tree Track
- 5 Linux Plumbers 2016 Device Tree Track
- 6 Kernel Summit 2017, Devicetree Workshop
- 7 Linux Plumbers 2018
- 8 System Device Tree 2019, 2020
- 9 DT Evolution (DTE) 2019, 2020
- 9.1 Overview
- 9.2 Communications
- 9.3 Documents and reports
- 9.4 Meeting Minutes / Notes
- 10 Next FDT format
See section "Devicetree Verification".
Presentations about verification.
Linux Plumbers 2015
The verification project made progress around the time of Linux Plumbers 2015, then stalled out.
Linux Plumbers 2016
Grant Likely has re-awakened the project at Linux Plumbers 2016:
- [PDF] "Device Tree Schema Discussion", Linux Plumbers, November 2016, Grant Likely
- local cache of etherpad notes (Grant's presentation is the first presentation.)
- Discussion will occur on the devicetree-spec email list.
- Development is hosted on github at
Kernel Summit 2017
Grant Likely and Pantelis Antoniou have again re-awakened the project at the Kernel Summit 2017, Devicetree Workshop (and postings to the devicetree mail list shortly before the summit).
Linaro Connect Hong Kong 2018
Grant gave a presentation at Linaro Connect Hong Kong 2018:
Abstract Devicetree has become the dominant hardware configuration language used when building embedded systems. Projects using Devicetree now include Linux, U-Boot, Android, FreeBSD, and Zephyr. However, it is notoriously difficult to write correct Devicetree data files. The dtc tools perform limited tests for valid data, and there is not yet a way to add validity tests for specific hardware descriptions. Neither is there a good way to document requirements for specific bindings. Work is underway to solve these problems. This session will present a proposal for adding Devicetree schema files to the Devicetree toolchain that can be used to both validate data and produce usable documentation.
The Devicetree Specification, located on the Devicetree Specification page has superseded the ePAPR for the Linux kernel.
The Devicetree Specification will continue to be updated.
PDF presentation of the plans for the specification organization and the proposed schedule.
Related discussion occurs on the devicetree-spec email list.
Linux Plumbers 2015 Device Tree Track
- schedule (PDF) - Frank Rowand
- Dynamic DT and tools (pdf) - Pantelis Antoniou
- Device Tree Overlay use at Juniper Networks (PDF) - Guenter Roeck
- DT Binding Documentation (PDF) - Matt Porter
- Device Tree Documentation (PDF) - Frank Rowand
- Device Tree Tools (PDF) - Frank Rowand
1:30 Intro Frank Rowand 1:35 Device Tree Overlays Pantelis Antoniou, Guenter Roeck 2:00 Overlays, some times a good idea sometimes not. Pantelis Antoniou 2:15 Device Tree Documentation Matt Porter Frank Rowand 2:30 Chat With The dtc Maintainers, part 1 David Gibson, Jon Loeliger 2:45 ----- Tea Break ----- 3:00 Chat With The dtc Maintainers, part 2 David Gibson, Jon Loeliger 3:10 Overlays and tools for sanity. Pantelis Antoniou 3:25 Device Tree Tools Frank Rowand 3:40 Device Tree probe order and parallel device probing Pantelis Antoniou 3:50 Device tree round up Frank Rowand
01 -- Device Tree Overlays - Pantelis Device Tree Overlays are now in the mainline kernel. This session will cover what they are, how they are used. As part of this session I will examine device tree overlays, device tree changeset, the phandle resolution mechanism, overlay overlap removal checks and finally device tree variants (or quirks). Devicetree overlay use in Juniper products - Guenter The Juniper use case will be discussed: At Juniper, we use devicetree overlays to manage a variety of cards which can be inserted and removed at runtime. In this session, I will describe the basic system architecture, our requirements, and why we decided to use devicetree overlays to meet those requirements. I will also dive into the actual implementation of our card management framework in the Linux kernel, and explore some of the limitations of the current devicetree overlay code. 02 -- was folded into 01 03 -- Overlays, some times a good idea sometimes not. - Pantelis This session will cover supported and not supported overlay cases. 04 -- Device Tree Documentation - Frank What device tree documentation and tutorials exist and where to find them. What is needed? What new documentation is expected this year? Can we bring consistency to the documentation style/syntax? 05 -- Chat With The dtc Maintainers - Frank This session is an opportunity to ask questions of the dtc maintainers or listen to their thoughts on dtc related topics. 06 -- Overlays and tools for sanity. - Pantelis Device Tree overlays represent a big change for the device tree in the kernel. Where as of old the device tree was something static, now it's something that can change at runtime. We could use some new tools to help us when creating them (compile time) and some kernel tooling to help when applying them (run time). 07 -- Device Tree Tools - Frank What tools exist to support device tree development and debugging? Where are they? What new tools have been proposed or requested? 08 -- Device Tree probe order and parallel device probing - Pantelis The new dynamic device tree capabilities entails marking not only the location of phandles but the references made to them. We can use that information to construct a device probe order schedule that can be used to support parallel device probing which is an obvious win for kernel boot time. If earlier sessions run long, this one may be shortened or deleted. 09 -- Device tree round up - Frank Review previous sessions, round up loose ends
Material to review before the conference
The purpose of the Linux Plumbers conference is to discuss things. The conference is not a good place to go if you want to look at slides and listen to canned presentations.
The discussions will work better if the attendees have prepared in advance, and have a basic understanding of the technology and issues to be discussed. The goal of this section is to provide the resources needed to be prepared to discuss.
Device Tree 101
If you are new to Device Tree, these resources will start you on the path to a basic understanding.
- An introduction
- More advanced material
- "The Device Tree as a Stable ABI: A Fairy Tale?", ELC 2015 by Thomas Petazzoni
- "Device Tree, the Disaster so Far", ELC Europe 2013 by Mark Rutland
- "Transactional Device Tree & Overlays: Making Reconfigurable Hardware Work", ELC 2015 by Pantelis Antoniou
- Problem statements
- IO boards, eg beaglebone capes
- PPC sub-tree beneath hot-plug PCI
- It might be possible to use existing dynamic add and remove functions (CONFIG_OF_DYNAMIC) for this purpose
- Quirks - TODO
- [PATCH 0/4 Device Tree Quirks & the Beaglebone]
- cpu card plugged into multiple carrier card variants, post manufacturing
- devices present only during manufacturing
- Alexander Holler
- 2014.05.12 [RFC PATCH 0/9 dt: dependencies (for deterministic driver]
- Tomeu Vizoso
Linux Plumbers 2016 Device Tree Track
- [ODP] "Device Tree Schema Discussion"- Grant Likely
- [PDF] "Device tree Hardware Description vs Configuration vs Policy"- Frank Rowand
- [PDF] "Device Tree Tools Status" - Frank Rowand
Kernel Summit 2017, Devicetree Workshop
There was a Devicetree Workshop held as part of the Linux Kernel Summit on 26 October 2017 in Prague. Some photos of the event can be found in the OSSummit Europe / ELCE photostream on Flickr.
- [PDF] Agenda slides
- [JPG] Devicetree data flow drawing - Frank Rowand
- [PDF] "YAML and Devicetree" web blog - Pantelis Antoniou
- [YAML] [JSON] Sample DT encoded YAML and matching jsonschema - Grant Likely.
- [PDF] "Devicetree in Zephyr" - Kumar Gala
- [PDF] "Device tree in U-Boot SPL" - Simon Glass
- [PDF] "DT Generic Bindings" - Geert Uytterhoeven
- [PDF] "Duplicate Data" - Thomas Petazzoni
- [PDF] "Foreign Bindings" - Maxime Ripard
Example validator code for jsonschema
This is the sample validator code block shown for the jsonschema materials above
#!/usr/bin/env python3 import sys import yaml import jsonschema schema = yaml.load(open("dt-schema-core.json").read()) testtree = yaml.load(open("juno.cpp.yaml").read()) v = jsonschema.Draft4Validator(schema) errors = sorted(v.iter_errors(testtree), key=lambda e: e.path) for error in errors: print(error.path, error.message)
Grant Likely has audio recordings of the entire workshop, but they are large files and haven't been published yet. Contact Grant if you want a copy of the audio.
Linux Plumbers 2018
video note: The video links include timestamps into the one single [video].
- [video] [PDF] "Welcome", Linux Plumbers Devicetree track November 2018, Frank Rowand
- [video] Q&A Session 1 + General Discussion
- [video] [PDF] "json-schema for Devicetree", Linux Plumbers Devicetree track November 2018, Rob Herring
- [video] DT memory (kernel), DT memory (bootloader), storage (FDT) size
- [video] New FDT format & Overlays
- [video] [PDF] "FPGA and Devicetree", Linux Plumbers Devicetree track November 2018, Alan Tull & Moritz Fischer
- [video]Summary, Action Items, and closing
System Device Tree 2019, 2020
A proposal from Xilinx...
System Device Tree is discussed in the context of OpenAMP.
https://github.com/OpenAMP/open-amp/wiki/System-DT-Meeting-Notes-2019 https://github.com/OpenAMP/open-amp/wiki/System-DT-Meeting-Notes-2020 The wiki content can be downloaded: git clone https://github.com/OpenAMP/open-amp.wiki.git If these links becomes stale, contact Frank Rowand, frowand (dot) list (at) gmail (dot) com for an archive of these pages.
System-dt Mail List
https://lists.openampproject.org/pipermail/system-dt/ archive: https://lists.openampproject.org/pipermail/system-dt/
Documents and Reports
System Device Tree Project Linaro Tech Days: Day2, Track 1 https://connect.linaro.org/resources/ltd20/ltd20-205/ slides:
- [PDF] "LTD20-205 System Device Tree Project", Linaro Connect 20 (virtual) 3//25/20, Thomas Evensen, Stefano Stabellini, Bruce Ashfield
https://static.linaro.org/connect/ltd20/presentations/LTD20-205-0.pdf video: 1) https://static.linaro.org/connect/ltd20/videos/ltd20-205.mp4 2) https://youtu.be/34MuzEb4gmw starting at: 2:11:50
DT Evolution (DTE) 2019, 2020
two calls per month: - 2nd wednesday 2pm UTC - 4th wednesday 2pm UTC 2pm UTC currently corresponds to 7am PST / 4pm CET - 2nd Wednesday of the month prime focus: system device tree and RTOS tools. - 4th Wednesday of the month prime focus: device tree life cycle, overlays, authentication and unified repository The calls are public. Participants are advised they should not introduce topics that relate to confidential matters.
For zoom call details (meeting ID, etc), see:
Linaro boot-architecture Mailing List
Core devicetree binding / Devicetree Specification Mailing List
archive: http://dir.gmane.org/gmane.comp.devicetree.spec archive: https://www.spinics.net/lists/devicetree-spec/
Documents and reports
System Device Tree
A proposal from Xilinx...
See separate System Device Tree history on this page.
Device Tree - A Technical Report
This is a work in progress.
From page 3, as of June 16, 2020, 11:24 CST: "What is the goal of this technical report? Essentially define the form and shape of the DT that the Handover Function passes to the Booted Payload."
Thoughts About Device Trees git clone https://github.com/xypron/dte.git The documents in the github.com/xypron/dte.git repository are subject to the Creative Commons Attribution Share Alike 4.0 International license (https://spdx.org/licenses/CC-BY-SA-4.0.html). Device Tree Lifetime (odp and pdf) Device Trees Should Be Modular (odp and pdf)
Meeting Minutes / Notes
Call minutes may appear on the "Linaro boot-architecture Mailing List" and/or the "Core devicetree binding / Devicetree Specification Mailing List".