<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.mainlining.org/index.php?action=history&amp;feed=atom&amp;title=Devicetree%2FDTS_syntax</id>
	<title>Devicetree/DTS syntax - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mainlining.org/index.php?action=history&amp;feed=atom&amp;title=Devicetree%2FDTS_syntax"/>
	<link rel="alternate" type="text/html" href="https://wiki.mainlining.org/index.php?title=Devicetree/DTS_syntax&amp;action=history"/>
	<updated>2026-04-25T11:09:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.mainlining.org/index.php?title=Devicetree/DTS_syntax&amp;diff=81&amp;oldid=prev</id>
		<title>Knuxify: /* TODOs */</title>
		<link rel="alternate" type="text/html" href="https://wiki.mainlining.org/index.php?title=Devicetree/DTS_syntax&amp;diff=81&amp;oldid=prev"/>
		<updated>2025-02-20T18:20:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;TODOs&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:20, 20 February 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l6&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Quick intro to explain how things are typically laid out in ARM chips, buses like I2C, etc. - how &amp;lt;code&amp;gt;reg&amp;lt;/code&amp;gt; addresses work, how DTS syntax describes this layout&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Quick intro to explain how things are typically laid out in ARM chips, buses like I2C, etc. - how &amp;lt;code&amp;gt;reg&amp;lt;/code&amp;gt; addresses work, how DTS syntax describes this layout&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Split up into more granular subsections&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Basic DTS syntax ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Basic DTS syntax ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-66:rev-81:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Knuxify</name></author>
	</entry>
	<entry>
		<id>https://wiki.mainlining.org/index.php?title=Devicetree/DTS_syntax&amp;diff=66&amp;oldid=prev</id>
		<title>Knuxify at 20:03, 19 February 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.mainlining.org/index.php?title=Devicetree/DTS_syntax&amp;diff=66&amp;oldid=prev"/>
		<updated>2025-02-19T20:03:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:03, 19 February 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== TODOs ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== TODOs ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Look through the whole thing again and rewrite. The writing is rather awkward...&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Quick intro to explain how things are typically laid out in ARM chips, buses like I2C, etc. - how &amp;lt;code&amp;gt;reg&amp;lt;/code&amp;gt; addresses work, how DTS syntax describes this layout&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Quick intro to explain how things are typically laid out in ARM chips, buses like I2C, etc. - how &amp;lt;code&amp;gt;reg&amp;lt;/code&amp;gt; addresses work, how DTS syntax describes this layout&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-65:rev-66:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Knuxify</name></author>
	</entry>
	<entry>
		<id>https://wiki.mainlining.org/index.php?title=Devicetree/DTS_syntax&amp;diff=65&amp;oldid=prev</id>
		<title>Knuxify at 20:03, 19 February 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.mainlining.org/index.php?title=Devicetree/DTS_syntax&amp;diff=65&amp;oldid=prev"/>
		<updated>2025-02-19T20:03:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:03, 19 February 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l2&quot;&gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This page serves as a guide to the device tree source (DTS) file syntax.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This page serves as a guide to the device tree source (DTS) file syntax.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== TODOs ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Look through the whole thing again and rewrite. The writing is rather awkward...&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Quick intro to explain how things are typically laid out in ARM chips, buses like I2C, etc. - how &amp;lt;code&amp;gt;reg&amp;lt;/code&amp;gt; addresses work, how DTS syntax describes this layout&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Basic DTS syntax ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Basic DTS syntax ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-51:rev-65:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Knuxify</name></author>
	</entry>
	<entry>
		<id>https://wiki.mainlining.org/index.php?title=Devicetree/DTS_syntax&amp;diff=51&amp;oldid=prev</id>
		<title>Knuxify: move dts syntax guide from main devicetree page</title>
		<link rel="alternate" type="text/html" href="https://wiki.mainlining.org/index.php?title=Devicetree/DTS_syntax&amp;diff=51&amp;oldid=prev"/>
		<updated>2025-02-19T19:19:32Z</updated>

		<summary type="html">&lt;p&gt;move dts syntax guide from main devicetree page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Navbox devicetree}}&lt;br /&gt;
&lt;br /&gt;
This page serves as a guide to the device tree source (DTS) file syntax.&lt;br /&gt;
&lt;br /&gt;
== Basic DTS syntax ==&lt;br /&gt;
&lt;br /&gt;
Here is a very simple DTS file to explain the basics of what you might see in a device tree source file:&lt;br /&gt;
&lt;br /&gt;
{{SyntaxHighlight header|foo.dts}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;dts&amp;quot; line&amp;gt;&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
	&lt;br /&gt;
	my_node: node1@1000 {&lt;br /&gt;
		compatible = &amp;quot;vendor,foo&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x1000 0x54&amp;gt;;&lt;br /&gt;
		vendor,bar-factor = &amp;lt;0x2a&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	node2@2000 {&lt;br /&gt;
		compatible = &amp;quot;vendor,bar&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x2000 0xa4&amp;gt;;&lt;br /&gt;
		vendor,baz-companion = &amp;lt;&amp;amp;my_node&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	i2c-controller@3000 {&lt;br /&gt;
		compatible = &amp;quot;vendor,foobar-i2c&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x3000 0x800&amp;gt;;&lt;br /&gt;
		&lt;br /&gt;
		#address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
		&lt;br /&gt;
		sensor@10 {&lt;br /&gt;
			compatible = &amp;quot;vendor,baz-sensor&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0x10&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, we define an empty DTS; in its root node (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;), we place three nodes: a node named &amp;quot;node1&amp;quot; with a label &amp;quot;my_node&amp;quot; at address 0x1000, a node named &amp;quot;node2&amp;quot; at address 0x2000, and a node named &amp;quot;i2c-controller&amp;quot; at address 0x3000.&lt;br /&gt;
&lt;br /&gt;
A node contains:&lt;br /&gt;
* A &amp;lt;code&amp;gt;compatible&amp;lt;/code&amp;gt; value (here &amp;lt;code&amp;gt;&amp;quot;vendor,foo&amp;quot;&amp;lt;/code&amp;gt;). This specifies what kind of component it is; Linux uses this information to load the correct driver.&lt;br /&gt;
* A &amp;lt;code&amp;gt;reg&amp;lt;/code&amp;gt; value. In this case, the first parameter is the base address in memory (&amp;lt;code&amp;gt;0x1000&amp;lt;/code&amp;gt;), and the second is the size it occupies (&amp;lt;code&amp;gt;0x54&amp;lt;/code&amp;gt;). The amount of cells for the address and size are specified by the &amp;lt;code&amp;gt;#address-cells&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#size-cells&amp;lt;/code&amp;gt; properties of the root node, respectively.&lt;br /&gt;
** You might notice that the i2c-controller node defines another set of these &amp;lt;code&amp;gt;#address-cells&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#size-cells&amp;lt;/code&amp;gt; properties - this is because I2C devices contain their own subdevices with addresses ranging from 0x08 to 0x7f (todo verify), and they do not use a size.&lt;br /&gt;
* A custom vendor-specific property, &amp;lt;code&amp;gt;vendor,bar-factor&amp;lt;/code&amp;gt;, which takes a number.&lt;br /&gt;
&lt;br /&gt;
On node 2 there is also a property, &amp;lt;code&amp;gt;vendor,baz-companion&amp;lt;/code&amp;gt;, which takes a pointer to another node - here the one we labeled &amp;quot;my_node&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Working with included DTSIs ==&lt;br /&gt;
&lt;br /&gt;
Very often you&amp;#039;ll see &amp;lt;code&amp;gt;#include&amp;lt;/code&amp;gt; directives; these can either include header files (which usually contain constants defined with &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt;, similarly to C) or other DTSes. DTS files meant for inclusion are called &amp;#039;&amp;#039;&amp;#039;DTS includes&amp;#039;&amp;#039;&amp;#039; and use the &amp;#039;&amp;#039;&amp;#039;.dtsi&amp;#039;&amp;#039;&amp;#039; file extension. &lt;br /&gt;
&lt;br /&gt;
Usually, an SoC will have a common DTS include with all of the relevant nodes for that SoC. A board&amp;#039;s DTS will then include the SoC DTSI.&lt;br /&gt;
&lt;br /&gt;
As an example, here&amp;#039;s a very bare-bones DTSI for a fictional &amp;quot;FOO1234&amp;quot; SoC:&lt;br /&gt;
&lt;br /&gt;
{{SyntaxHighlight header|foo1234.dtsi}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;dts&amp;quot; line&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Common DTSI for Foobar FOO1234 System-on-a-Chip.&lt;br /&gt;
 */&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    cpus {&lt;br /&gt;
		#address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		cpu0: cpu@0 {&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a7&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
			clock-frequency = &amp;lt;1000000000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    soc {&lt;br /&gt;
        /* ... */&lt;br /&gt;
&lt;br /&gt;
        i2c1: i2c@3000 {&lt;br /&gt;
            compatible = &amp;quot;vendor,foobar-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x3000 0x800&amp;gt;;&lt;br /&gt;
            status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        i2c2: i2c@4000 {&lt;br /&gt;
            compatible = &amp;quot;vendor,foobar-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x4000 0x800&amp;gt;;&lt;br /&gt;
            status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        i2c3: i2c@5000 {&lt;br /&gt;
            compatible = &amp;quot;vendor,foobar-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x5000 0x800&amp;gt;;&lt;br /&gt;
            status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        /* ... */&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a DTS for a fictional device named &amp;quot;Quox Haystack&amp;quot; that uses the FOO1234 SoC:&lt;br /&gt;
&lt;br /&gt;
{{SyntaxHighlight header|foo1234-quox-haystack.dts}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;dts&amp;quot; line&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Device tree source for Quox Haystack based on FOO1234 SoC&lt;br /&gt;
 */&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;foo1234.dtsi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	compatible = &amp;quot;quox,haystack&amp;quot;, &amp;quot;foobar,foo1234&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	memory@80000000 {&lt;br /&gt;
		device_type = &amp;quot;memory&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x80000000 0x40000000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;i2c1 {&lt;br /&gt;
    clock-frequency = &amp;lt;400000&amp;gt;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    sensor@10 {&lt;br /&gt;
		compatible = &amp;quot;foobar,baz-sensor&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x10&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some interesting things to look out for:&lt;br /&gt;
&lt;br /&gt;
* The board DTS includes the SoC DTSI with a &amp;lt;code&amp;gt;#include &amp;quot;foo1234.dtsi&amp;quot;&amp;lt;/code&amp;gt; directive.&lt;br /&gt;
* We re-define the root &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; node, and inside of it we place a &amp;lt;code&amp;gt;memory&amp;lt;/code&amp;gt; node. This node, as well as the &amp;lt;code&amp;gt;compatible&amp;lt;/code&amp;gt;, will be merged into the root node of the included DTSI.&lt;br /&gt;
* Outside of the root node, there is a node with a name starting with an ampersand (&amp;lt;code&amp;gt;&amp;amp;i2c1&amp;lt;/code&amp;gt;); this signifies a pointer to a labeled node (see node labels in the previous example). Like with the root node above, the contents of this node will be merged with the contents of the node with this label in the SoC DTSI.&lt;br /&gt;
** A similar effect could be achieved by overriding the &amp;lt;code&amp;gt;i2c1&amp;lt;/code&amp;gt; node under the root node, where it&amp;#039;s located in the SoC DTSI (though the preferred way is to do it with a label - we do it here for demonstration purposes):&lt;br /&gt;
*: {{SyntaxHighlight header|foo1234-quox-haystack.dts}}&amp;lt;syntaxhighlight lang=&amp;quot;dts&amp;quot; line start=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
/ {&lt;br /&gt;
	compatible = &amp;quot;quox,haystack&amp;quot;, &amp;quot;foobar,foo1234&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    /* ... */&lt;br /&gt;
&lt;br /&gt;
	i2c1: i2c@3000 {&lt;br /&gt;
        clock-frequency = &amp;lt;400000&amp;gt;;&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        sensor@10 {&lt;br /&gt;
	    	compatible = &amp;quot;foobar,baz-sensor&amp;quot;;&lt;br /&gt;
	    	reg = &amp;lt;0x10&amp;gt;;&lt;br /&gt;
	    };&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a more visual example - the merged version of these two files would look something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;dts&amp;quot; line&amp;gt;&lt;br /&gt;
/dts-v1/;&lt;br /&gt;
&lt;br /&gt;
/ {&lt;br /&gt;
	#address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
    compatible = &amp;quot;quox,haystack&amp;quot;, &amp;quot;foobar,foo1234&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	memory@80000000 {&lt;br /&gt;
		device_type = &amp;quot;memory&amp;quot;;&lt;br /&gt;
		reg = &amp;lt;0x80000000 0x40000000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
    cpus {&lt;br /&gt;
		#address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
		#size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		cpu0: cpu@0 {&lt;br /&gt;
			device_type = &amp;quot;cpu&amp;quot;;&lt;br /&gt;
			compatible = &amp;quot;arm,cortex-a7&amp;quot;;&lt;br /&gt;
			reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
			clock-frequency = &amp;lt;1000000000&amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    soc {&lt;br /&gt;
        /* ... */&lt;br /&gt;
&lt;br /&gt;
        i2c1: i2c@3000 {&lt;br /&gt;
            compatible = &amp;quot;vendor,foobar-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x3000 0x800&amp;gt;;&lt;br /&gt;
            clock-frequency = &amp;lt;400000&amp;gt;;&lt;br /&gt;
            status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            sensor@10 {&lt;br /&gt;
                compatible = &amp;quot;foobar,baz-sensor&amp;quot;;&lt;br /&gt;
                reg = &amp;lt;0x10&amp;gt;;&lt;br /&gt;
            };&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        i2c2: i2c@4000 {&lt;br /&gt;
            compatible = &amp;quot;vendor,foobar-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x4000 0x800&amp;gt;;&lt;br /&gt;
            status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        i2c3: i2c@5000 {&lt;br /&gt;
            compatible = &amp;quot;vendor,foobar-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x5000 0x800&amp;gt;;&lt;br /&gt;
            status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        /* ... */&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Knuxify</name></author>
	</entry>
</feed>