Difference between revisions of "Device tree future"

From eLinux.org
Jump to: navigation, search
(Probe Ordering: add Tomeu Vizoso patches)
(DT Evolution (DTE) 2019, 2020: add header for following section: Next FDT format)
 
(58 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
[[Category:Device_tree]]
 
[[Category:Device_tree]]
  
== Where Device Tree is Headed ==
+
[[Device_Tree | Top Device Tree page]]
  
=== Resources for the Linux Plumbers 2015 Device Tree Track ===
+
== Devicetree Validation ==
  
'''THIS SECTION IS UNDER CONSTRUCTION'''
+
See section "Devicetree Verification".
  
==== Material to review '''before''' the event ====
+
== Devicetree Verification ==
  
The purpose of the Linux Plumbers conference is to '''discuss''' things.
+
=== references ===
The conference is not a good place to go if you want to look at slides
+
 
and listen to canned presentations.
+
[[Device_Tree_presentations_papers_articles#validation | Presentations ]] about verification.
 +
 
 +
=== Linux Plumbers 2015 ===
 +
 
 +
The verification project made progress around the time of Linux Plumbers 2015,
 +
then stalled out.
  
The discussions will work better if the attendees have prepared in advance,
+
=== Linux Plumbers 2016 ===
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 =====
+
Grant Likely has re-awakened the project at Linux Plumbers 2016:
 +
* [[Media:Grant_likely_plumbers_2016_DT_Schema_Proposal.odp | [PDF]]] "Device Tree Schema Discussion", Linux Plumbers, November 2016, Grant Likely
 +
* [[Device_tree_plumbers_2016_etherpad | local cache of etherpad notes]] (Grant's presentation is the first presentation.)
 +
* Discussion will occur on the [http://elinux.org/Device_Tree#Core_devicetree_binding_.2F_Devicetree_Specification_Mailing_List devicetree-spec email list].
 +
* Development is hosted on github at
 +
** git://github.com/glikely/dtgendoc
 +
** http://github.com/glikely/dtgendoc
  
If you are new to Device Tree, these resources will start you on the path to a basic understanding.
+
=== Kernel Summit 2017 ===
  
* '''An introduction'''
+
Grant Likely and Pantelis Antoniou have again re-awakened the project at the
** [https://lwn.net/Articles/572692/ Device trees I: Are we having fun yet?] - Neil Brown, LWN.net November 2013
+
[[Device_tree_future#Kernel_Summit_2017.2C_Devicetree_Workshop | Kernel Summit 2017, Devicetree Workshop]]
** [https://lwn.net/Articles/573409/ Device trees II: The harder parts] - Neil Brown, LWN.net November 2013
+
(and postings to the devicetree mail list shortly before the summit).
** "Device Tree for Dummies", ELC 2014 by Thomas Petazzoni
 
*** [[Media:petazzoni-device-tree-dummies_0.pdf|PDF]]
 
*** [https://www.youtube.com/watch?v=uzBwHFjJ0vU YouTube video]
 
* '''More advanced material'''
 
** "The Device Tree as a Stable ABI: A Fairy Tale?", ELC 2015 by Thomas Petazzoni
 
*** http://elinux.org/images/0/0a/The_Device_Tree_as_a_Stable_ABI-_A_Fairy_Tale%3F.pdf
 
** "Device Tree, the Disaster so Far", ELC Europe 2013 by Mark Rutland
 
*** [[Media:Rutland-presentation_3.pdf]]
 
*** [https://www.youtube.com/watch?v=xamjHjjyeBI YouTube video]
 
  
 +
=== Linaro Connect Hong Kong 2018 ===
  
===== Overlays =====
+
Grant gave a presentation at Linaro Connect Hong Kong 2018:
  
* "Transactional Device Tree & Overlays: Making Reconfigurable Hardware Work", ELC 2015 by Pantelis Antoniou
+
Abstract
** [[Media:Dynamic-dt-keynote-v3.pdf|PDF]]
+
Devicetree has become the dominant hardware configuration language used when
** [http://www.youtube.com/watch?v=3Ag7ZBC_Nts YouTube video]
+
building embedded systems. Projects using Devicetree now include Linux, U-Boot,
* Problem statements
+
Android, FreeBSD, and Zephyr. However, it is notoriously difficult to write correct
** IO boards, eg beaglebone capes
+
Devicetree data files. The dtc tools perform limited tests for valid data, and
** PPC sub-tree beneath hot-plug PCI
+
there is not yet a way to add validity tests for specific hardware descriptions.
*** http://www.spinics.net/lists/linux-pci/msg40740.html
+
Neither is there a good way to document requirements for specific bindings. Work is
** Quirks - TODO
+
underway to solve these problems. This session will present a proposal for adding
*** [http://www.spinics.net/lists/devicetree/msg69490.html [PATCH 0/4] Device Tree Quirks & the Beaglebone]
+
Devicetree schema files to the Devicetree toolchain that can be used to both validate
*** [http://www.spinics.net/lists/devicetree/msg69565.html cpu card plugged into multiple carrier card variants, post manufacturing]
+
data and produce usable documentation.
** devices present only during manufacturing
 
*** [http://www.spinics.net/lists/devicetree/msg82817.html Dealing with optional i2c devices in a devicetree ]
 
  
===== documentation =====
+
* [[Media:Hkg18-120-devicetreeschema-grantlikely-180404144834.pdf | [PDF] Devicetree Schema Documentation and Validation]]
 +
* [https://www.youtube.com/watch?v=ooHN2_tvDzk Youtube video]
 +
* [http://connect.linaro.org/resource/hkg18/hkg18-120/ Linaro Connect Resource Page]
  
===== dtc =====
+
== Devicetree Specification ==
  
===== Probe Ordering =====
+
The Devicetree Specification, located on the
 +
[https://www.devicetree.org/specifications/ Devicetree Specification page]
 +
has superseded the ePAPR for the Linux kernel.
  
* Tomeu Vizoso
+
The Devicetree Specification [[Device_tree_future#Devicetree_Specification | will continue to be updated]].
** First approach: [http://thread.gmane.org/gmane.linux.kernel.gpio/8465 [PATCH 00/21] On-demand device registration]
 
** Second approach: [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-June/351061.html [PATCH 00/13] Discover and probe dependencies]
 
* Other....
 
  
===== device tree debugging tools =====
 
  
 +
[[Media:Devicetree_specification_linaro_connect_bangkok_2016.pdf|PDF presentation]]
 +
of the plans for the specification organization and the proposed schedule.
  
 +
The update process is occurring in the <s>http://webdev.linaro.org/devicetree.org/</s>
 +
[http://devicetree.org/ devicetree.org organization].
  
==== Current '''draft''' of the schedule ====
+
Related discussion occurs on the
 +
[[Device_Tree#Core_devicetree_binding_.2F_Devicetree_Specification_Mailing_List | devicetree-spec]]
 +
email list.
  
Expect this to evolve.
+
== Linux Plumbers 2015 Device Tree Track ==
  
<pre>
+
=== presentation material ===
  
01 -- Device Tree Overlays - Pantelis
+
* [[Media:Plumbers_2016_dt_schedule.pdf | schedule (PDF) - Frank Rowand]]
02 -- Devicetree overlay use in Juniper products - Guenter
+
* [[Media:Plumbers_2015_dt_DT-plumbers-2015.pdf | Dynamic DT and tools (pdf) - Pantelis Antoniou]]
03 -- Overlays, some times a good idea sometimes not. - Pantelis
+
* [[Media:Plumbers_2016_dt_Devicetree_Overlays_at_Juniper.pdf | Device Tree Overlay use at Juniper Networks (PDF) - Guenter Roeck]]
04 -- Device Tree Documentation - Frank, Matt
+
* [[Media:Plumbers_2016_dt_DT_Binding_Documentation.pdf | DT Binding Documentation (PDF) - Matt Porter]]
05 -- Chat With The dtc Maintainers - Frank, the maintainers
+
* [[Media:Plumbers_2016_dt_device_tree_doc.pdf | Device Tree Documentation (PDF) - Frank Rowand]]
06 -- Overlays and tools for sanity. - Pantelis
+
* [[Media:Plumbers_2016_dt_device_tree_tools.pdf | Device Tree Tools (PDF) - Frank Rowand]]
07 -- Device Tree Tools - Frank
 
08 -- Device Tree and parallel device probing - Pantelis
 
09 -- Device tree round up - Frank
 
  
 +
=== etherpad notes ===
  
    session  start
+
https://etherpad.openstack.org/p/LPC2015_Device_Tree
    length  offset
 
    ------  ------
 
  
  01    20      0
+
[[Device_tree_plumbers_2015_etherpad | local cache of etherpad notes]]
  02    10    :20
 
  03    15    :30
 
  04    15    :45
 
  
break  10    1:00
+
=== final schedule ===
  
  05    30   1:10
+
<pre>
  06    10    1:40
+
1:30 Intro
  07    15   1:55
+
    Frank Rowand
  08    15    2:10
+
1:35 Device Tree Overlays
  09    10    2:20
+
    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
 +
</pre>
  
      -----
+
=== '''draft''' schedule ===
      2:30
 
  
 +
<pre>
  
 
01 -- Device Tree Overlays - Pantelis
 
01 -- Device Tree Overlays - Pantelis
Line 112: Line 127:
 
   removal checks and finally device tree variants (or quirks).
 
   removal checks and finally device tree variants (or quirks).
  
02 -- Devicetree overlay use in Juniper products - Guenter
+
  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
 
   At Juniper, we use devicetree overlays to manage a variety of cards
 
   which can be inserted and removed at runtime.
 
   which can be inserted and removed at runtime.
Line 121: Line 139:
 
   of our card management framework in the Linux kernel, and explore
 
   of our card management framework in the Linux kernel, and explore
 
   some of the limitations of the current devicetree overlay code.
 
   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
 
03 -- Overlays, some times a good idea sometimes not. - Pantelis
Line 163: Line 183:
  
 
</pre>
 
</pre>
 +
 +
=== 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'''
 +
** [https://lwn.net/Articles/572692/ Device trees I: Are we having fun yet?] - Neil Brown, LWN.net November 2013
 +
** [https://lwn.net/Articles/573409/ Device trees II: The harder parts] - Neil Brown, LWN.net November 2013
 +
** "Device Tree for Dummies", ELC 2014 by Thomas Petazzoni
 +
*** [[Media:petazzoni-device-tree-dummies_0.pdf|PDF]]
 +
*** [https://www.youtube.com/watch?v=uzBwHFjJ0vU YouTube video]
 +
* '''More advanced material'''
 +
** "The Device Tree as a Stable ABI: A Fairy Tale?", ELC 2015 by Thomas Petazzoni
 +
*** http://elinux.org/images/0/0a/The_Device_Tree_as_a_Stable_ABI-_A_Fairy_Tale%3F.pdf
 +
** "Device Tree, the Disaster so Far", ELC Europe 2013 by Mark Rutland
 +
*** [[Media:Rutland-presentation_3.pdf]]
 +
*** [https://www.youtube.com/watch?v=xamjHjjyeBI YouTube video]
 +
 +
==== Overlays ====
 +
 +
* "Transactional Device Tree & Overlays: Making Reconfigurable Hardware Work", ELC 2015 by Pantelis Antoniou
 +
** [[Media:Dynamic-dt-keynote-v3.pdf|PDF]]
 +
** [http://www.youtube.com/watch?v=3Ag7ZBC_Nts YouTube video]
 +
* Problem statements
 +
** IO boards, eg beaglebone capes
 +
** PPC sub-tree beneath hot-plug PCI
 +
*** http://www.spinics.net/lists/linux-pci/msg40740.html
 +
*** It might be possible to use existing dynamic add and remove functions (CONFIG_OF_DYNAMIC) for this purpose
 +
** Quirks - TODO
 +
*** [http://www.spinics.net/lists/devicetree/msg69490.html [PATCH 0/4] Device Tree Quirks & the Beaglebone]
 +
*** [http://www.spinics.net/lists/devicetree/msg69565.html cpu card plugged into multiple carrier card variants, post manufacturing]
 +
** devices present only during manufacturing
 +
*** [http://www.spinics.net/lists/devicetree/msg82817.html Dealing with optional i2c devices in a devicetree ]
 +
 +
==== Probe Ordering ====
 +
 +
* Alexander Holler
 +
** 2014.05.12 [https://lkml.org/lkml/2014/5/12/452 [RFC PATCH 0/9] dt: dependencies (for deterministic driver]
 +
* Tomeu Vizoso
 +
** 2015.05.25[http://thread.gmane.org/gmane.linux.kernel.gpio/8465 [PATCH 00/21] On-demand device registration]
 +
** 2015.06.17 [http://lists.infradead.org/pipermail/linux-arm-kernel/2015-June/351061.html [PATCH 00/13] Discover and probe dependencies]
 +
** 2015.07.28 [https://lkml.org/lkml/2015/7/28/534 [PATCH v2 0/22] On-demand device probing]
 +
** 2015.08.06 [http://article.gmane.org/gmane.linux.acpi.devel/77867 [PATCH v3 0/18] On-demand device probing]
 +
** 2015.08.06 [https://lkml.org/lkml/2015/8/6/389 [PATCH v3 0/18] On-demand device probing (2nd archive)]
 +
 +
== Linux Plumbers 2016 Device Tree Track ==
 +
 +
=== presentation material ===
 +
 +
* [[Media:Grant_likely_plumbers_2016_DT_Schema_Proposal.odp | [ODP]]] "Device Tree Schema Discussion"- Grant Likely
 +
* [[Media:Dt_hw_config_policy.pdf | [PDF] ]] "Device tree Hardware Description vs Configuration vs Policy"- Frank Rowand
 +
* [[Media:Dt_tools_status.pdf | [PDF] ]] "Device Tree Tools Status" - Frank Rowand
 +
 +
=== etherpad notes ===
 +
 +
[[Device_tree_plumbers_2016_etherpad | local cache of etherpad notes]]
 +
 +
== Kernel Summit 2017, Devicetree Workshop ==
 +
[[File:DTWorkshop2017_Group_Photo.jpg|300px|thumb|right|Devicetree Workshop 2017 Group photo]]
 +
 +
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
 +
[https://www.flickr.com/photos/linuxfoundation/albums/72157661789269468/with/38019245302/ OSSummit Europe / ELCE photostream] on Flickr.
 +
 +
=== Presentation Materials ===
 +
* [[Media:DTWorkshop2017_Agenda.pdf | [PDF]]] Agenda slides
 +
* [[Media:Dt summit 2017 data flow.JPG | [JPG]]] Devicetree data flow drawing - Frank Rowand
 +
* [[Media:YAML_and_Devicetree_171102_0010.pdf | [PDF]]] "YAML and Devicetree" web blog - Pantelis Antoniou
 +
* [[Media:Juno.cpp.yaml.txt | [YAML]]][[Media:dt-schema-core.json.txt | [JSON]]] Sample DT encoded YAML and matching jsonschema - Grant Likely.
 +
* [[Media:DTWorkshop2017_Zephyr.pdf | [PDF]]] "Devicetree in Zephyr" - Kumar Gala
 +
* [[Media:Device_tree_in_U-Boot_SPL.pdf | [PDF]]] "Device tree in U-Boot SPL" - Simon Glass
 +
* [[Media:DTWorkshop2017_DT_Generic_Bindings.pdf | [PDF]]] "DT Generic Bindings" - Geert Uytterhoeven
 +
* [[Media:DTWorkshop2017-duplicate-data.pdf | [PDF]]] "Duplicate Data" - Thomas Petazzoni
 +
* [[Media:DTWorkshop2017_foreign_bindings.pdf | [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)
 +
 +
=== Notes ===
 +
* [[Device_tree_kernel_summit_2017_etherpad | Local cache of Etherpad notes]]
 +
* [[Device_tree_kernel_summit_2017_notes_julia | Notes from Julia Lawall]]
 +
 +
=== Audio Recording ===
 +
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.
 +
 +
=== Action Items ===
 +
* [[Device_tree_kernel_summit_2017_action_items| Device Tree Workshop Action Items ]]
 +
 +
== Linux Plumbers 2018 ==
 +
 +
* [https://linuxplumbersconf.org/event/2/timetable/?view=lpc Conference Schedule]
 +
 +
=== presentation material ===
 +
 +
video note: The video links include timestamps into the one single [https://www.youtube.com/watch?v=s7Eb4cNffoQ [video]].
 +
 +
* [https://www.youtube.com/watch?v=s7Eb4cNffoQ&t=0 [video]] [[Media:Welcome.pdf | [PDF]]] "Welcome", Linux Plumbers Devicetree track November 2018, Frank Rowand
 +
* [https://www.youtube.com/watch?v=s7Eb4cNffoQ&t=218s [video]] Q&A Session 1 + General Discussion
 +
* [https://www.youtube.com/watch?v=s7Eb4cNffoQ&feature=youtu.be&t=567s [video]] [[Media:LPC2018_json-schema_for_Devicetree.pdf | [PDF]]] "json-schema for Devicetree", Linux Plumbers Devicetree track November 2018, Rob Herring
 +
* [https://www.youtube.com/watch?v=s7Eb4cNffoQ&t=4547s [video]] DT memory (kernel), DT memory (bootloader), storage (FDT) size
 +
** [[Media:Device_tree_format_v18_181112_1926.pdf | [PDF]]] "Device tree format v18", Linux Plumbers Devicetree track November 2018, Simon Glass
 +
** [[Media:Proposed_new_DTB_format_181112_1926.pdf | [PDF]]] "Proposed new DTB format", Linux Plumbers Devicetree track November 2018, Simon Glass
 +
** [[Media:Size-kernel-fdt.pdf | [PDF]]] "Linux kernel memory size, FDT size", Linux Plumbers Devicetree track November 2018, Frank Rowand
 +
* [https://www.youtube.com/watch?v=s7Eb4cNffoQ&t=6497s [video]] New FDT format & Overlays
 +
** [[Media:Fdt_format.pdf | [PDF]]] "FDT Format", Linux Plumbers Devicetree track November 2018, Frank Rowand
 +
** [[Media:Overlay_frank.pdf | [PDF]]] "Overlay", Linux Plumbers Devicetree track November 2018, Frank Rowand
 +
* [https://www.youtube.com/watch?v=s7Eb4cNffoQ&t=8468s [video]] [[Media:Fpga_and_dt.pdf | [PDF]]] "FPGA and Devicetree", Linux Plumbers Devicetree track November 2018, Alan Tull & Moritz Fischer
 +
* [https://www.youtube.com/watch?v=s7Eb4cNffoQ&t=10150s [video]]Summary, Action Items, and closing
 +
 +
=== etherpad notes ===
 +
 +
https://etherpad.openstack.org/p/Device_Tree
 +
 +
[[Device_tree_plumbers_2018_etherpad | local cache of etherpad notes]]
 +
 +
== System Device Tree 2019, 2020 ==
 +
 +
A proposal from Xilinx...
 +
 +
System Device Tree is discussed in the context of OpenAMP.
 +
 +
=== Meeting Notes ===
 +
 +
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.
 +
 +
=== Communications ===
 +
 +
==== 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:
 +
* [[Media: LTD20-205-0.pdf | [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 ==
 +
 +
=== Overview ===
 +
 +
=== Communications ===
 +
 +
==== Video Calls ====
 +
 +
  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:
 +
 +
  https://lists.linaro.org/pipermail/boot-architecture/2020-May/001248.html
 +
 +
==== Linaro boot-architecture Mailing List ====
 +
 +
boot-architecture@lists.linaro.org
 +
 +
  https://lists.linaro.org/mailman/listinfo/boot-architecture
 +
 +
  archive: https://lists.linaro.org/mailman/listinfo/boot-architecture
 +
 +
====  Core devicetree binding / Devicetree Specification Mailing List ====
 +
 +
  http://vger.kernel.org/vger-lists.html#devicetree-spec
 +
 +
  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.
 +
 +
https://docs.google.com/document/d/1CLkhLRaz_zcCq44DLGmPZQFPbYHOC6nzPowaL0XmRk0/edit?ts=5ec3aacf#heading=h.egp8c0597ooz
 +
 +
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."
 +
 +
==== Heinrich Schuchardt ====
 +
 +
https://github.com/xypron
 +
 +
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".
 +
 +
== Next FDT format ==

Latest revision as of 21:55, 21 April 2021


Top Device Tree page

Devicetree Validation

See section "Devicetree Verification".

Devicetree Verification

references

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:

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.

Devicetree Specification

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.

The update process is occurring in the http://webdev.linaro.org/devicetree.org/ devicetree.org organization.

Related discussion occurs on the devicetree-spec email list.

Linux Plumbers 2015 Device Tree Track

presentation material

etherpad notes

https://etherpad.openstack.org/p/LPC2015_Device_Tree

local cache of etherpad notes

final schedule

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

draft schedule


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.

Overlays

Probe Ordering

Linux Plumbers 2016 Device Tree Track

presentation material

  • [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

etherpad notes

local cache of etherpad notes

Kernel Summit 2017, Devicetree Workshop

Devicetree Workshop 2017 Group photo

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.

Presentation Materials

  • [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)

Notes

Audio Recording

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.

Action Items

Linux Plumbers 2018

presentation material

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
    • [PDF] "Device tree format v18", Linux Plumbers Devicetree track November 2018, Simon Glass
    • [PDF] "Proposed new DTB format", Linux Plumbers Devicetree track November 2018, Simon Glass
    • [PDF] "Linux kernel memory size, FDT size", Linux Plumbers Devicetree track November 2018, Frank Rowand
  • [video] New FDT format & Overlays
    • [PDF] "FDT Format", Linux Plumbers Devicetree track November 2018, Frank Rowand
    • [PDF] "Overlay", Linux Plumbers Devicetree track November 2018, Frank Rowand
  • [video] [PDF] "FPGA and Devicetree", Linux Plumbers Devicetree track November 2018, Alan Tull & Moritz Fischer
  • [video]Summary, Action Items, and closing

etherpad notes

https://etherpad.openstack.org/p/Device_Tree

local cache of etherpad notes

System Device Tree 2019, 2020

A proposal from Xilinx...

System Device Tree is discussed in the context of OpenAMP.

Meeting Notes

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.

Communications

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

Overview

Communications

Video Calls

 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:

 https://lists.linaro.org/pipermail/boot-architecture/2020-May/001248.html

Linaro boot-architecture Mailing List

boot-architecture@lists.linaro.org

 https://lists.linaro.org/mailman/listinfo/boot-architecture
 archive: https://lists.linaro.org/mailman/listinfo/boot-architecture

Core devicetree binding / Devicetree Specification Mailing List

 http://vger.kernel.org/vger-lists.html#devicetree-spec
 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.

https://docs.google.com/document/d/1CLkhLRaz_zcCq44DLGmPZQFPbYHOC6nzPowaL0XmRk0/edit?ts=5ec3aacf#heading=h.egp8c0597ooz

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."

Heinrich Schuchardt

https://github.com/xypron

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".

Next FDT format