2020-04-16 00:13:18

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v3 00/12] Convert some DT documentation files to ReST

While most of the devicetree stuff has its own format (with is now being
converted to YAML format), some documents there are actually
describing the DT concepts and how to contribute to it.

IMHO, those documents would fit perfectly as part of the documentation
body, as part of the firmare documents set.

This patch series manually converts some DT documents that, on my
opinion, would belong to it.

If you want to see how this would show at the documentation body,
a sneak peak of this series (together with the other pending
doc patches from me) is available at:

https://www.infradead.org/~mchehab/kernel_docs/devicetree/index.html

-

v3:
- rebased on the top of next-20200414

Mauro Carvalho Chehab (12):
docs: dt: add an index.rst file for devicetree
docs: dt: convert usage-model.txt to ReST
docs: dt: usage_model.rst: fix link for DT usage
docs: dt: convert booting-without-of.txt to ReST format
docs: dt: convert changesets to ReST
docs: dt: convert dynamic-resolution-notes.txt to ReST
docs: dt: convert of_unittest.txt to ReST
docs: dt: convert overlay-notes.txt to ReST format
docs: dt: minor adjustments at writing-schema.rst
docs: dt: convert ABI.txt to ReST format
docs: dt: convert submitting-patches.txt to ReST format
docs: dt: convert writing-bindings.txt to ReST

Documentation/arm/booting.rst | 2 +-
Documentation/arm/microchip.rst | 2 +-
.../devicetree/bindings/{ABI.txt => ABI.rst} | 5 +-
.../devicetree/bindings/arm/amlogic.yaml | 2 +-
.../devicetree/bindings/arm/syna.txt | 2 +-
Documentation/devicetree/bindings/index.rst | 12 +
...ing-patches.txt => submitting-patches.rst} | 12 +-
...ting-bindings.txt => writing-bindings.rst} | 9 +-
...-without-of.txt => booting-without-of.rst} | 299 ++++++++++--------
.../{changesets.txt => changesets.rst} | 24 +-
...notes.txt => dynamic-resolution-notes.rst} | 5 +-
Documentation/devicetree/index.rst | 18 ++
.../{of_unittest.txt => of_unittest.rst} | 186 +++++------
.../{overlay-notes.txt => overlay-notes.rst} | 143 +++++----
.../{usage-model.txt => usage-model.rst} | 35 +-
Documentation/devicetree/writing-schema.rst | 9 +-
Documentation/index.rst | 3 +
Documentation/process/submitting-patches.rst | 2 +-
.../it_IT/process/submitting-patches.rst | 2 +-
Documentation/translations/zh_CN/arm/Booting | 2 +-
MAINTAINERS | 4 +-
include/linux/mfd/core.h | 2 +-
scripts/checkpatch.pl | 2 +-
23 files changed, 446 insertions(+), 336 deletions(-)
rename Documentation/devicetree/bindings/{ABI.txt => ABI.rst} (94%)
create mode 100644 Documentation/devicetree/bindings/index.rst
rename Documentation/devicetree/bindings/{submitting-patches.txt => submitting-patches.rst} (92%)
rename Documentation/devicetree/bindings/{writing-bindings.txt => writing-bindings.rst} (89%)
rename Documentation/devicetree/{booting-without-of.txt => booting-without-of.rst} (90%)
rename Documentation/devicetree/{changesets.txt => changesets.rst} (59%)
rename Documentation/devicetree/{dynamic-resolution-notes.txt => dynamic-resolution-notes.rst} (90%)
create mode 100644 Documentation/devicetree/index.rst
rename Documentation/devicetree/{of_unittest.txt => of_unittest.rst} (54%)
rename Documentation/devicetree/{overlay-notes.txt => overlay-notes.rst} (56%)
rename Documentation/devicetree/{usage-model.txt => usage-model.rst} (97%)

--
2.25.2



2020-04-16 00:13:23

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v3 04/12] docs: dt: convert booting-without-of.txt to ReST format

- Add a SPDX header;
- Use copyright symbol;
- Adjust document title;
- Adjust document and section titles;
- Some whitespace fixes and new line breaks;
- Mark literal blocks as such;
- Add table markups;
- Add it to devicetree/index.rst.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---
Documentation/arm/booting.rst | 2 +-
...-without-of.txt => booting-without-of.rst} | 299 ++++++++++--------
Documentation/devicetree/index.rst | 1 +
Documentation/translations/zh_CN/arm/Booting | 2 +-
4 files changed, 169 insertions(+), 135 deletions(-)
rename Documentation/devicetree/{booting-without-of.txt => booting-without-of.rst} (90%)

diff --git a/Documentation/arm/booting.rst b/Documentation/arm/booting.rst
index 4babb6c6ae1e..a2263451dc2c 100644
--- a/Documentation/arm/booting.rst
+++ b/Documentation/arm/booting.rst
@@ -128,7 +128,7 @@ it. The recommended placement is in the first 16KiB of RAM.

The boot loader must load a device tree image (dtb) into system ram
at a 64bit aligned address and initialize it with the boot data. The
-dtb format is documented in Documentation/devicetree/booting-without-of.txt.
+dtb format is documented in Documentation/devicetree/booting-without-of.rst.
The kernel will look for the dtb magic value of 0xd00dfeed at the dtb
physical address to determine if a dtb has been passed instead of a
tagged list.
diff --git a/Documentation/devicetree/booting-without-of.txt b/Documentation/devicetree/booting-without-of.rst
similarity index 90%
rename from Documentation/devicetree/booting-without-of.txt
rename to Documentation/devicetree/booting-without-of.rst
index 4660ccee35a3..56e54e95efa7 100644
--- a/Documentation/devicetree/booting-without-of.txt
+++ b/Documentation/devicetree/booting-without-of.rst
@@ -1,15 +1,20 @@
- Booting the Linux/ppc kernel without Open Firmware
- --------------------------------------------------
-
-(c) 2005 Benjamin Herrenschmidt <benh at kernel.crashing.org>,
- IBM Corp.
-(c) 2005 Becky Bruce <becky.bruce at freescale.com>,
- Freescale Semiconductor, FSL SOC and 32-bit additions
-(c) 2006 MontaVista Software, Inc.
- Flash chip node definition
-
-Table of Contents
-=================
+.. SPDX-License-Identifier: GPL-2.0
+.. include:: <isonum.txt>
+
+==================================================
+Booting the Linux/ppc kernel without Open Firmware
+==================================================
+
+Copyright |copy| 2005 Benjamin Herrenschmidt <benh at kernel.crashing.org>,
+IBM Corp.
+
+Copyright |copy| 2005 Becky Bruce <becky.bruce at freescale.com>,
+Freescale Semiconductor, FSL SOC and 32-bit additions
+
+Copyright |copy| 2006 MontaVista Software, Inc.
+Flash chip node definition
+
+.. Table of Contents

I - Introduction
1) Entry point for arch/arm
@@ -61,15 +66,18 @@ Table of Contents
Revision Information
====================

- May 18, 2005: Rev 0.1 - Initial draft, no chapter III yet.
+ May 18, 2005: Rev 0.1
+ - Initial draft, no chapter III yet.

- May 19, 2005: Rev 0.2 - Add chapter III and bits & pieces here or
+ May 19, 2005: Rev 0.2
+ - Add chapter III and bits & pieces here or
clarifies the fact that a lot of things are
optional, the kernel only requires a very
small device tree, though it is encouraged
to provide an as complete one as possible.

- May 24, 2005: Rev 0.3 - Precise that DT block has to be in RAM
+ May 24, 2005: Rev 0.3
+ - Precise that DT block has to be in RAM
- Misc fixes
- Define version 3 and new format version 16
for the DT block (version 16 needs kernel
@@ -82,7 +90,8 @@ Revision Information
"name" property is now automatically
deduced from the unit name

- June 1, 2005: Rev 0.4 - Correct confusion between OF_DT_END and
+ June 1, 2005: Rev 0.4
+ - Correct confusion between OF_DT_END and
OF_DT_END_NODE in structure definition.
- Change version 16 format to always align
property data to 4 bytes. Since tokens are
@@ -115,7 +124,7 @@ Revision Information
- Compare FSL SOC use of PCI to standard and make sure no new
node definition required.
- Add more information about node definitions for SOC devices
- that currently have no standard, like the FSL CPM.
+ that currently have no standard, like the FSL CPM.


I - Introduction
@@ -260,7 +269,7 @@ it with special cases.

b) create your main platform file as
"arch/powerpc/platforms/myplatform/myboard_setup.c" and add it
- to the Makefile under the condition of your CONFIG_
+ to the Makefile under the condition of your ``CONFIG_``
option. This file will define a structure of type "ppc_md"
containing the various callbacks that the generic code will
use to get to your platform specific code
@@ -271,7 +280,7 @@ it with special cases.
with classic Powerpc architectures.

3) Entry point for arch/x86
--------------------------------
+---------------------------

There is one single 32bit entry point to the kernel at code32_start,
the decompressor (the real mode entry point goes to the same 32bit
@@ -280,9 +289,9 @@ it with special cases.
Documentation/x86/boot.rst
The physical pointer to the device-tree block (defined in chapter II)
is passed via setup_data which requires at least boot protocol 2.09.
- The type filed is defined as
+ The type filed is defined as::

- #define SETUP_DTB 2
+ #define SETUP_DTB 2

This device-tree is used as an extension to the "boot page". As such it
does not parse / consider data which is already covered by the boot
@@ -354,9 +363,9 @@ the block to RAM before passing it to the kernel.

The kernel is passed the physical address pointing to an area of memory
that is roughly described in include/linux/of_fdt.h by the structure
- boot_param_header:
+ boot_param_header:::

-struct boot_param_header {
+ struct boot_param_header {
u32 magic; /* magic word OF_DT_HEADER */
u32 totalsize; /* total size of DT block */
u32 off_dt_struct; /* offset to structure */
@@ -374,19 +383,19 @@ struct boot_param_header {

/* version 17 fields below */
u32 size_dt_struct; /* size of the DT structure block */
-};
+ };

- Along with the constants:
+ Along with the constants::

-/* Definitions used by the flattened device tree */
-#define OF_DT_HEADER 0xd00dfeed /* 4: version,
- 4: total size */
-#define OF_DT_BEGIN_NODE 0x1 /* Start node: full name
- */
-#define OF_DT_END_NODE 0x2 /* End node */
-#define OF_DT_PROP 0x3 /* Property: name off,
- size, content */
-#define OF_DT_END 0x9
+ /* Definitions used by the flattened device tree */
+ #define OF_DT_HEADER 0xd00dfeed /* 4: version,
+ 4: total size */
+ #define OF_DT_BEGIN_NODE 0x1 /* Start node: full name
+ */
+ #define OF_DT_END_NODE 0x2 /* End node */
+ #define OF_DT_PROP 0x3 /* Property: name off,
+ size, content */
+ #define OF_DT_END 0x9

All values in this header are in big endian format, the various
fields in this header are defined more precisely below. All
@@ -430,7 +439,7 @@ struct boot_param_header {
way to avoid overriding critical things like, on Open Firmware
capable machines, the RTAS instance, or on some pSeries, the TCE
tables used for the iommu. Typically, the reserve map should
- contain _at least_ this DT block itself (header,total_size). If
+ contain **at least** this DT block itself (header,total_size). If
you are passing an initrd to the kernel, you should reserve it as
well. You do not need to reserve the kernel image itself. The map
should be 64-bit aligned.
@@ -485,7 +494,7 @@ struct boot_param_header {

So the typical layout of a DT block (though the various parts don't
need to be in that order) looks like this (addresses go from top to
- bottom):
+ bottom)::


------------------------------
@@ -511,9 +520,9 @@ struct boot_param_header {
|
--- (base + totalsize)

- (*) The alignment gaps are not necessarily present; their presence
- and size are dependent on the various alignment requirements of
- the individual data blocks.
+ (*) The alignment gaps are not necessarily present; their presence
+ and size are dependent on the various alignment requirements of
+ the individual data blocks.


2) Device tree generalities
@@ -600,7 +609,7 @@ discussed in a later chapter. At this point, it is only meant to give
you a idea of what a device-tree looks like. I have purposefully kept
the "name" and "linux,phandle" properties which aren't necessary in
order to give you a better idea of what the tree looks like in
-practice.
+practice::

/ o device-tree
|- name = "device-tree"
@@ -650,6 +659,7 @@ properties and their content.


3) Device tree "structure" block
+--------------------------------

The structure of the device tree is a linearized tree structure. The
"OF_DT_BEGIN_NODE" token starts a new node, and the "OF_DT_END_NODE"
@@ -666,12 +676,14 @@ Here's the basic structure of a single node:
root node)
* [align gap to next 4 bytes boundary]
* for each property:
+
* token OF_DT_PROP (that is 0x00000003)
* 32-bit value of property value size in bytes (or 0 if no
value)
* 32-bit value of offset in string block of property name
* property value data if any
* [align gap to next 4 bytes boundary]
+
* [child nodes if any]
* token OF_DT_END_NODE (that is 0x00000002)

@@ -688,6 +700,7 @@ manipulating a flattened tree must take care to preserve this
constraint.

4) Device tree "strings" block
+------------------------------

In order to save space, property names, which are generally redundant,
are stored separately in the "strings" block. This block is simply the
@@ -700,15 +713,17 @@ strings block.
III - Required content of the device tree
=========================================

-WARNING: All "linux,*" properties defined in this document apply only
-to a flattened device-tree. If your platform uses a real
-implementation of Open Firmware or an implementation compatible with
-the Open Firmware client interface, those properties will be created
-by the trampoline code in the kernel's prom_init() file. For example,
-that's where you'll have to add code to detect your board model and
-set the platform number. However, when using the flattened device-tree
-entry point, there is no prom_init() pass, and thus you have to
-provide those properties yourself.
+.. Warning::
+
+ All ``linux,*`` properties defined in this document apply only
+ to a flattened device-tree. If your platform uses a real
+ implementation of Open Firmware or an implementation compatible with
+ the Open Firmware client interface, those properties will be created
+ by the trampoline code in the kernel's prom_init() file. For example,
+ that's where you'll have to add code to detect your board model and
+ set the platform number. However, when using the flattened device-tree
+ entry point, there is no prom_init() pass, and thus you have to
+ provide those properties yourself.


1) Note about cells and address representation
@@ -769,7 +784,7 @@ addresses), all buses must contain a "ranges" property. If the
"ranges" property is missing at a given level, it's assumed that
translation isn't possible, i.e., the registers are not visible on the
parent bus. The format of the "ranges" property for a bus is a list
-of:
+of::

bus address, parent bus address, size

@@ -877,7 +892,7 @@ address which can extend beyond that limit.

This node is the parent of all individual CPU nodes. It doesn't
have any specific requirements, though it's generally good practice
- to have at least:
+ to have at least::

#address-cells = <00000001>
#size-cells = <00000000>
@@ -887,7 +902,7 @@ address which can extend beyond that limit.
that format when reading the "reg" properties of a CPU node, see
below

- c) The /cpus/* nodes
+ c) The ``/cpus/*`` nodes

So under /cpus, you are supposed to create a node for every CPU on
the machine. There is no specific restriction on the name of the
@@ -903,21 +918,23 @@ address which can extend beyond that limit.
- reg : This is the physical CPU number, it's a single 32-bit cell
and is also used as-is as the unit number for constructing the
unit name in the full path. For example, with 2 CPUs, you would
- have the full path:
+ have the full path::
+
/cpus/PowerPC,970FX@0
/cpus/PowerPC,970FX@1
+
(unit addresses do not require leading zeroes)
- - d-cache-block-size : one cell, L1 data cache block size in bytes (*)
+ - d-cache-block-size : one cell, L1 data cache block size in bytes [#]_
- i-cache-block-size : one cell, L1 instruction cache block size in
bytes
- d-cache-size : one cell, size of L1 data cache in bytes
- i-cache-size : one cell, size of L1 instruction cache in bytes

-(*) The cache "block" size is the size on which the cache management
-instructions operate. Historically, this document used the cache
-"line" size here which is incorrect. The kernel will prefer the cache
-block size and will fallback to cache line size for backward
-compatibility.
+ .. [#] The cache "block" size is the size on which the cache management
+ instructions operate. Historically, this document used the cache
+ "line" size here which is incorrect. The kernel will prefer the cache
+ block size and will fallback to cache line size for backward
+ compatibility.

Recommended properties:

@@ -963,10 +980,10 @@ compatibility.
#address-cells and #size-cells of the root node. For example,
with both of these properties being 2 like in the example given
earlier, a 970 based machine with 6Gb of RAM could typically
- have a "reg" property here that looks like:
+ have a "reg" property here that looks like::

- 00000000 00000000 00000000 80000000
- 00000001 00000000 00000001 00000000
+ 00000000 00000000 00000000 80000000
+ 00000001 00000000 00000001 00000000

That is a range starting at 0 of 0x80000000 bytes and a range
starting at 0x100000000 and of 0x100000000 bytes. You can see
@@ -1047,18 +1064,18 @@ compatibility.
See 1) above for more details on defining #address-cells.
- #size-cells : Size representation for "soc" devices
- #interrupt-cells : Defines the width of cells used to represent
- interrupts. Typically this value is <2>, which includes a
- 32-bit number that represents the interrupt number, and a
- 32-bit number that represents the interrupt sense and level.
- This field is only needed if the SOC contains an interrupt
- controller.
+ interrupts. Typically this value is <2>, which includes a
+ 32-bit number that represents the interrupt number, and a
+ 32-bit number that represents the interrupt sense and level.
+ This field is only needed if the SOC contains an interrupt
+ controller.

The SOC node may contain child nodes for each SOC device that the
platform uses. Nodes should not be created for devices which exist
on the SOC but are not used by a particular platform. See chapter VI
for more information on how to specify devices that are part of a SOC.

- Example SOC node for the MPC8540:
+ Example SOC node for the MPC8540::

soc8540@e0000000 {
#address-cells = <1>;
@@ -1079,31 +1096,33 @@ IV - "dtc", the device tree compiler
dtc source code can be found at
<http://git.jdl.com/gitweb/?p=dtc.git>

-WARNING: This version is still in early development stage; the
-resulting device-tree "blobs" have not yet been validated with the
-kernel. The current generated block lacks a useful reserve map (it will
-be fixed to generate an empty one, it's up to the bootloader to fill
-it up) among others. The error handling needs work, bugs are lurking,
-etc...
+.. Warning::
+
+ This version is still in early development stage; the
+ resulting device-tree "blobs" have not yet been validated with the
+ kernel. The current generated block lacks a useful reserve map (it will
+ be fixed to generate an empty one, it's up to the bootloader to fill
+ it up) among others. The error handling needs work, bugs are lurking,
+ etc...

dtc basically takes a device-tree in a given format and outputs a
device-tree in another format. The currently supported formats are:

- Input formats:
- -------------
+Input formats
+-------------

- "dtb": "blob" format, that is a flattened device-tree block
with
- header all in a binary blob.
+ header all in a binary blob.
- "dts": "source" format. This is a text file containing a
"source" for a device-tree. The format is defined later in this
- chapter.
+ chapter.
- "fs" format. This is a representation equivalent to the
- output of /proc/device-tree, that is nodes are directories and
- properties are files
+ output of /proc/device-tree, that is nodes are directories and
+ properties are files

- Output formats:
- ---------------
+Output formats
+--------------

- "dtb": "blob" format
- "dts": "source" format
@@ -1113,7 +1132,7 @@ device-tree in another format. The currently supported formats are:
assembly file exports some symbols that can be used.


-The syntax of the dtc tool is
+The syntax of the dtc tool is::

dtc [-I <input-format>] [-O <output-format>]
[-o output-filename] [-V output_version] input_filename
@@ -1127,43 +1146,45 @@ Additionally, dtc performs various sanity checks on the tree, like the
uniqueness of linux, phandle properties, validity of strings, etc...

The format of the .dts "source" file is "C" like, supports C and C++
-style comments.
+style comments::

-/ {
-}
+ / {
+ }

The above is the "device-tree" definition. It's the only statement
supported currently at the toplevel.

-/ {
- property1 = "string_value"; /* define a property containing a 0
- * terminated string
- */
+::

- property2 = <0x1234abcd>; /* define a property containing a
- * numerical 32-bit value (hexadecimal)
- */
+ / {
+ property1 = "string_value"; /* define a property containing a 0
+ * terminated string
+ */

- property3 = <0x12345678 0x12345678 0xdeadbeef>;
- /* define a property containing 3
- * numerical 32-bit values (cells) in
- * hexadecimal
- */
- property4 = [0x0a 0x0b 0x0c 0x0d 0xde 0xea 0xad 0xbe 0xef];
- /* define a property whose content is
- * an arbitrary array of bytes
- */
+ property2 = <0x1234abcd>; /* define a property containing a
+ * numerical 32-bit value (hexadecimal)
+ */

- childnode@address { /* define a child node named "childnode"
- * whose unit name is "childnode at
- * address"
- */
+ property3 = <0x12345678 0x12345678 0xdeadbeef>;
+ /* define a property containing 3
+ * numerical 32-bit values (cells) in
+ * hexadecimal
+ */
+ property4 = [0x0a 0x0b 0x0c 0x0d 0xde 0xea 0xad 0xbe 0xef];
+ /* define a property whose content is
+ * an arbitrary array of bytes
+ */

- childprop = "hello\n"; /* define a property "childprop" of
- * childnode (in this case, a string)
- */
- };
-};
+ childnode@address { /* define a child node named "childnode"
+ * whose unit name is "childnode at
+ * address"
+ */
+
+ childprop = "hello\n"; /* define a property "childprop" of
+ * childnode (in this case, a string)
+ */
+ };
+ };

Nodes can contain other nodes etc... thus defining the hierarchical
structure of the tree.
@@ -1322,7 +1343,7 @@ phandle of the parent node.

If the interrupt-parent property is not defined for a node, its
interrupt parent is assumed to be an ancestor in the node's
-_device tree_ hierarchy.
+*device tree* hierarchy.

3) OpenPIC Interrupt Controllers
--------------------------------
@@ -1334,10 +1355,12 @@ information.

Sense and level information should be encoded as follows:

- 0 = low to high edge sensitive type enabled
- 1 = active low level sensitive type enabled
- 2 = active high level sensitive type enabled
- 3 = high to low edge sensitive type enabled
+ == ========================================
+ 0 low to high edge sensitive type enabled
+ 1 active low level sensitive type enabled
+ 2 active high level sensitive type enabled
+ 3 high to low edge sensitive type enabled
+ == ========================================

4) ISA Interrupt Controllers
----------------------------
@@ -1350,13 +1373,15 @@ information.
ISA PIC interrupt controllers should adhere to the ISA PIC
encodings listed below:

- 0 = active low level sensitive type enabled
- 1 = active high level sensitive type enabled
- 2 = high to low edge sensitive type enabled
- 3 = low to high edge sensitive type enabled
+ == ========================================
+ 0 active low level sensitive type enabled
+ 1 active high level sensitive type enabled
+ 2 high to low edge sensitive type enabled
+ 3 low to high edge sensitive type enabled
+ == ========================================

VIII - Specifying Device Power Management Information (sleep property)
-===================================================================
+======================================================================

Devices on SOCs often have mechanisms for placing devices into low-power
states that are decoupled from the devices' own register blocks. Sometimes,
@@ -1387,6 +1412,7 @@ reasonably grouped in this manner, then create a virtual sleep controller
sleep-map should wait until its necessity is demonstrated).

IX - Specifying dma bus information
+===================================

Some devices may have DMA memory range shifted relatively to the beginning of
RAM, or even placed outside of kernel RAM. For example, the Keystone 2 SoC
@@ -1404,25 +1430,30 @@ coherent DMA operations. The "dma-coherent" property is intended to be used
for identifying devices supported coherent DMA operations in DT.

* DMA Bus master
+
Optional property:
+
- dma-ranges: <prop-encoded-array> encoded as arbitrary number of triplets of
- (child-bus-address, parent-bus-address, length). Each triplet specified
- describes a contiguous DMA address range.
- The dma-ranges property is used to describe the direct memory access (DMA)
- structure of a memory-mapped bus whose device tree parent can be accessed
- from DMA operations originating from the bus. It provides a means of
- defining a mapping or translation between the physical address space of
- the bus and the physical address space of the parent of the bus.
- (for more information see the Devicetree Specification)
+ (child-bus-address, parent-bus-address, length). Each triplet specified
+ describes a contiguous DMA address range.
+ The dma-ranges property is used to describe the direct memory access (DMA)
+ structure of a memory-mapped bus whose device tree parent can be accessed
+ from DMA operations originating from the bus. It provides a means of
+ defining a mapping or translation between the physical address space of
+ the bus and the physical address space of the parent of the bus.
+ (for more information see the Devicetree Specification)

* DMA Bus child
+
Optional property:
+
- dma-ranges: <empty> value. if present - It means that DMA addresses
- translation has to be enabled for this device.
+ translation has to be enabled for this device.
- dma-coherent: Present if dma operations are coherent

-Example:
-soc {
+Example::
+
+ soc {
compatible = "ti,keystone","simple-bus";
ranges = <0x0 0x0 0x0 0xc0000000>;
dma-ranges = <0x80000000 0x8 0x00000000 0x80000000>;
@@ -1435,11 +1466,13 @@ soc {
[...]
dma-coherent;
};
-};
+ };

Appendix A - Sample SOC node for MPC8540
========================================

+::
+
soc@e0000000 {
#address-cells = <1>;
#size-cells = <1>;
diff --git a/Documentation/devicetree/index.rst b/Documentation/devicetree/index.rst
index 7a6aad7d384a..6b4daf252375 100644
--- a/Documentation/devicetree/index.rst
+++ b/Documentation/devicetree/index.rst
@@ -9,3 +9,4 @@ Open Firmware and Device Tree

usage-model
writing-schema
+ booting-without-of
diff --git a/Documentation/translations/zh_CN/arm/Booting b/Documentation/translations/zh_CN/arm/Booting
index 562e9a2957e6..c3d26ce5f6de 100644
--- a/Documentation/translations/zh_CN/arm/Booting
+++ b/Documentation/translations/zh_CN/arm/Booting
@@ -124,7 +124,7 @@ bootloader 必须传递一个系统内存的位置和最小值,以及根文件

bootloader 必须以 64bit 地址对齐的形式加载一个设备树映像(dtb)到系统
RAM 中,并用启动数据初始化它。dtb 格式在文档
-Documentation/devicetree/booting-without-of.txt 中。内核将会在
+Documentation/devicetree/booting-without-of.rst 中。内核将会在
dtb 物理地址处查找 dtb 魔数值(0xd00dfeed),以确定 dtb 是否已经代替
标签列表被传递进来。

--
2.25.2

2020-04-16 00:13:28

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v3 07/12] docs: dt: convert of_unittest.txt to ReST

- Add a SPDX header;
- Adjust document and section titles;
- Adjust numerated list markups;
- Some whitespace fixes and new line breaks;
- Mark literal blocks as such;
- Add it to devicetree/index.rst.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---
Documentation/devicetree/index.rst | 1 +
.../{of_unittest.txt => of_unittest.rst} | 186 +++++++++---------
2 files changed, 98 insertions(+), 89 deletions(-)
rename Documentation/devicetree/{of_unittest.txt => of_unittest.rst} (54%)

diff --git a/Documentation/devicetree/index.rst b/Documentation/devicetree/index.rst
index 308cac9d7021..ca83258fbba5 100644
--- a/Documentation/devicetree/index.rst
+++ b/Documentation/devicetree/index.rst
@@ -12,3 +12,4 @@ Open Firmware and Device Tree
booting-without-of
changesets
dynamic-resolution-notes
+ of_unittest
diff --git a/Documentation/devicetree/of_unittest.txt b/Documentation/devicetree/of_unittest.rst
similarity index 54%
rename from Documentation/devicetree/of_unittest.txt
rename to Documentation/devicetree/of_unittest.rst
index 9fdd2de9b770..dea05214f3ad 100644
--- a/Documentation/devicetree/of_unittest.txt
+++ b/Documentation/devicetree/of_unittest.rst
@@ -1,9 +1,13 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+==================================
Open Firmware Device Tree Unittest
-----------------------------------
+==================================

Author: Gaurav Minocha <[email protected]>

1. Introduction
+===============

This document explains how the test data required for executing OF unittest
is attached to the live tree dynamically, independent of the machine's
@@ -11,8 +15,8 @@ architecture.

It is recommended to read the following documents before moving ahead.

-[1] Documentation/devicetree/usage-model.rst
-[2] http://www.devicetree.org/Device_Tree_Usage
+(1) Documentation/devicetree/usage-model.rst
+(2) http://www.devicetree.org/Device_Tree_Usage

OF Selftest has been designed to test the interface (include/linux/of.h)
provided to device driver developers to fetch the device information..etc.
@@ -21,79 +25,82 @@ most of the device drivers in various use cases.


2. Test-data
+============

The Device Tree Source file (drivers/of/unittest-data/testcases.dts) contains
the test data required for executing the unit tests automated in
drivers/of/unittest.c. Currently, following Device Tree Source Include files
-(.dtsi) are included in testcases.dts:
+(.dtsi) are included in testcases.dts::

-drivers/of/unittest-data/tests-interrupts.dtsi
-drivers/of/unittest-data/tests-platform.dtsi
-drivers/of/unittest-data/tests-phandle.dtsi
-drivers/of/unittest-data/tests-match.dtsi
+ drivers/of/unittest-data/tests-interrupts.dtsi
+ drivers/of/unittest-data/tests-platform.dtsi
+ drivers/of/unittest-data/tests-phandle.dtsi
+ drivers/of/unittest-data/tests-match.dtsi

-When the kernel is build with OF_SELFTEST enabled, then the following make rule
+When the kernel is build with OF_SELFTEST enabled, then the following make
+rule::

-$(obj)/%.dtb: $(src)/%.dts FORCE
- $(call if_changed_dep, dtc)
+ $(obj)/%.dtb: $(src)/%.dts FORCE
+ $(call if_changed_dep, dtc)

is used to compile the DT source file (testcases.dts) into a binary blob
(testcases.dtb), also referred as flattened DT.

After that, using the following rule the binary blob above is wrapped as an
-assembly file (testcases.dtb.S).
+assembly file (testcases.dtb.S)::

-$(obj)/%.dtb.S: $(obj)/%.dtb
- $(call cmd, dt_S_dtb)
+ $(obj)/%.dtb.S: $(obj)/%.dtb
+ $(call cmd, dt_S_dtb)

The assembly file is compiled into an object file (testcases.dtb.o), and is
linked into the kernel image.


2.1. Adding the test data
+-------------------------

Un-flattened device tree structure:

Un-flattened device tree consists of connected device_node(s) in form of a tree
-structure described below.
+structure described below::

-// following struct members are used to construct the tree
-struct device_node {
- ...
- struct device_node *parent;
- struct device_node *child;
- struct device_node *sibling;
- ...
- };
+ // following struct members are used to construct the tree
+ struct device_node {
+ ...
+ struct device_node *parent;
+ struct device_node *child;
+ struct device_node *sibling;
+ ...
+ };

Figure 1, describes a generic structure of machine's un-flattened device tree
considering only child and sibling pointers. There exists another pointer,
-*parent, that is used to traverse the tree in the reverse direction. So, at
+``*parent``, that is used to traverse the tree in the reverse direction. So, at
a particular level the child node and all the sibling nodes will have a parent
pointer pointing to a common node (e.g. child1, sibling2, sibling3, sibling4's
-parent points to root node)
+parent points to root node)::

-root ('/')
- |
-child1 -> sibling2 -> sibling3 -> sibling4 -> null
- | | | |
- | | | null
- | | |
- | | child31 -> sibling32 -> null
- | | | |
- | | null null
- | |
- | child21 -> sibling22 -> sibling23 -> null
- | | | |
- | null null null
- |
-child11 -> sibling12 -> sibling13 -> sibling14 -> null
- | | | |
- | | | null
- | | |
- null null child131 -> null
- |
- null
+ root ('/')
+ |
+ child1 -> sibling2 -> sibling3 -> sibling4 -> null
+ | | | |
+ | | | null
+ | | |
+ | | child31 -> sibling32 -> null
+ | | | |
+ | | null null
+ | |
+ | child21 -> sibling22 -> sibling23 -> null
+ | | | |
+ | null null null
+ |
+ child11 -> sibling12 -> sibling13 -> sibling14 -> null
+ | | | |
+ | | | null
+ | | |
+ null null child131 -> null
+ |
+ null

Figure 1: Generic structure of un-flattened device tree

@@ -101,10 +108,10 @@ Figure 1: Generic structure of un-flattened device tree
Before executing OF unittest, it is required to attach the test data to
machine's device tree (if present). So, when selftest_data_add() is called,
at first it reads the flattened device tree data linked into the kernel image
-via the following kernel symbols:
+via the following kernel symbols::

-__dtb_testcases_begin - address marking the start of test data blob
-__dtb_testcases_end - address marking the end of test data blob
+ __dtb_testcases_begin - address marking the start of test data blob
+ __dtb_testcases_end - address marking the end of test data blob

Secondly, it calls of_fdt_unflatten_tree() to unflatten the flattened
blob. And finally, if the machine's device tree (i.e live tree) is present,
@@ -113,15 +120,15 @@ attaches itself as a live device tree.

attach_node_and_children() uses of_attach_node() to attach the nodes into the
live tree as explained below. To explain the same, the test data tree described
- in Figure 2 is attached to the live tree described in Figure 1.
+in Figure 2 is attached to the live tree described in Figure 1::

-root ('/')
- |
- testcase-data
- |
- test-child0 -> test-sibling1 -> test-sibling2 -> test-sibling3 -> null
- | | | |
- test-child01 null null null
+ root ('/')
+ |
+ testcase-data
+ |
+ test-child0 -> test-sibling1 -> test-sibling2 -> test-sibling3 -> null
+ | | | |
+ test-child01 null null null


Figure 2: Example test data tree to be attached to live tree.
@@ -134,39 +141,39 @@ In the function of_attach_node(), the new node is attached as the child of the
given parent in live tree. But, if parent already has a child then the new node
replaces the current child and turns it into its sibling. So, when the testcase
data node is attached to the live tree above (Figure 1), the final structure is
- as shown in Figure 3.
+as shown in Figure 3::

-root ('/')
- |
-testcase-data -> child1 -> sibling2 -> sibling3 -> sibling4 -> null
- | | | | |
- (...) | | | null
- | | child31 -> sibling32 -> null
- | | | |
- | | null null
- | |
- | child21 -> sibling22 -> sibling23 -> null
- | | | |
- | null null null
- |
- child11 -> sibling12 -> sibling13 -> sibling14 -> null
- | | | |
- null null | null
- |
- child131 -> null
- |
- null
------------------------------------------------------------------------
+ root ('/')
+ |
+ testcase-data -> child1 -> sibling2 -> sibling3 -> sibling4 -> null
+ | | | | |
+ (...) | | | null
+ | | child31 -> sibling32 -> null
+ | | | |
+ | | null null
+ | |
+ | child21 -> sibling22 -> sibling23 -> null
+ | | | |
+ | null null null
+ |
+ child11 -> sibling12 -> sibling13 -> sibling14 -> null
+ | | | |
+ null null | null
+ |
+ child131 -> null
+ |
+ null
+ -----------------------------------------------------------------------

-root ('/')
- |
-testcase-data -> child1 -> sibling2 -> sibling3 -> sibling4 -> null
- | | | | |
- | (...) (...) (...) null
- |
-test-sibling3 -> test-sibling2 -> test-sibling1 -> test-child0 -> null
- | | | |
- null null null test-child01
+ root ('/')
+ |
+ testcase-data -> child1 -> sibling2 -> sibling3 -> sibling4 -> null
+ | | | | |
+ | (...) (...) (...) null
+ |
+ test-sibling3 -> test-sibling2 -> test-sibling1 -> test-child0 -> null
+ | | | |
+ null null null test-child01


Figure 3: Live device tree structure after attaching the testcase-data.
@@ -176,7 +183,7 @@ Astute readers would have noticed that test-child0 node becomes the last
sibling compared to the earlier structure (Figure 2). After attaching first
test-child0 the test-sibling1 is attached that pushes the child node
(i.e. test-child0) to become a sibling and makes itself a child node,
- as mentioned above.
+as mentioned above.

If a duplicate node is found (i.e. if a node with same full_name property is
already present in the live tree), then the node isn't attached rather its
@@ -185,6 +192,7 @@ update_node_properties().


2.2. Removing the test data
+---------------------------

Once the test case execution is complete, selftest_data_remove is called in
order to remove the device nodes attached initially (first the leaf nodes are
--
2.25.2

2020-04-16 00:13:29

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v3 10/12] docs: dt: convert ABI.txt to ReST format

This file only requires a properly-formatted title to be
recognized as a ReST file.

As there will be more files under bindings/ that will be
included at the documentation body, add a new index.rst
file there.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---
Documentation/arm/microchip.rst | 2 +-
Documentation/devicetree/bindings/{ABI.txt => ABI.rst} | 5 ++++-
Documentation/devicetree/bindings/arm/amlogic.yaml | 2 +-
Documentation/devicetree/bindings/arm/syna.txt | 2 +-
Documentation/devicetree/bindings/index.rst | 10 ++++++++++
Documentation/devicetree/index.rst | 2 ++
6 files changed, 19 insertions(+), 4 deletions(-)
rename Documentation/devicetree/bindings/{ABI.txt => ABI.rst} (94%)
create mode 100644 Documentation/devicetree/bindings/index.rst

diff --git a/Documentation/arm/microchip.rst b/Documentation/arm/microchip.rst
index 05e5f2dfb814..9c013299fd3b 100644
--- a/Documentation/arm/microchip.rst
+++ b/Documentation/arm/microchip.rst
@@ -192,7 +192,7 @@ Device Tree files and Device Tree bindings that apply to AT91 SoCs and boards ar
considered as "Unstable". To be completely clear, any at91 binding can change at
any time. So, be sure to use a Device Tree Binary and a Kernel Image generated from
the same source tree.
-Please refer to the Documentation/devicetree/bindings/ABI.txt file for a
+Please refer to the Documentation/devicetree/bindings/ABI.rst file for a
definition of a "Stable" binding/ABI.
This statement will be removed by AT91 MAINTAINERS when appropriate.

diff --git a/Documentation/devicetree/bindings/ABI.txt b/Documentation/devicetree/bindings/ABI.rst
similarity index 94%
rename from Documentation/devicetree/bindings/ABI.txt
rename to Documentation/devicetree/bindings/ABI.rst
index d25f8d379680..a885713cf184 100644
--- a/Documentation/devicetree/bindings/ABI.txt
+++ b/Documentation/devicetree/bindings/ABI.rst
@@ -1,5 +1,8 @@
+.. SPDX-License-Identifier: GPL-2.0

- Devicetree (DT) ABI
+===================
+Devicetree (DT) ABI
+===================

I. Regarding stable bindings/ABI, we quote from the 2013 ARM mini-summit
summary document:
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
index f74aba48cec1..a21ce4ad63f6 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
@@ -17,7 +17,7 @@ description: |+
any time. Be sure to use a device tree binary and a kernel image
generated from the same source tree.

- Please refer to Documentation/devicetree/bindings/ABI.txt for a definition of a
+ Please refer to Documentation/devicetree/bindings/ABI.rst for a definition of a
stable binding/ABI.

properties:
diff --git a/Documentation/devicetree/bindings/arm/syna.txt b/Documentation/devicetree/bindings/arm/syna.txt
index 2face46a5f64..d8b48f2edf1b 100644
--- a/Documentation/devicetree/bindings/arm/syna.txt
+++ b/Documentation/devicetree/bindings/arm/syna.txt
@@ -13,7 +13,7 @@ considered "unstable". Any Marvell Berlin device tree binding may change at any
time. Be sure to use a device tree binary and a kernel image generated from the
same source tree.

-Please refer to Documentation/devicetree/bindings/ABI.txt for a definition of a
+Please refer to Documentation/devicetree/bindings/ABI.rst for a definition of a
stable binding/ABI.

---------------------------------------------------------------
diff --git a/Documentation/devicetree/bindings/index.rst b/Documentation/devicetree/bindings/index.rst
new file mode 100644
index 000000000000..98ebdab24b51
--- /dev/null
+++ b/Documentation/devicetree/bindings/index.rst
@@ -0,0 +1,10 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+===========
+Device Tree
+===========
+
+.. toctree::
+ :maxdepth: 1
+
+ ABI
diff --git a/Documentation/devicetree/index.rst b/Documentation/devicetree/index.rst
index 0669a53fc617..2f2c93c75713 100644
--- a/Documentation/devicetree/index.rst
+++ b/Documentation/devicetree/index.rst
@@ -14,3 +14,5 @@ Open Firmware and Device Tree
dynamic-resolution-notes
of_unittest
overlay-notes
+
+ bindings/index
--
2.25.2

2020-04-16 00:13:32

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v3 08/12] docs: dt: convert overlay-notes.txt to ReST format

- Add a SPDX header;
- Adjust document title;
- Some whitespace fixes and new line breaks;
- Mark literal blocks as such;
- Add it to devicetree/index.rst.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---
Documentation/devicetree/index.rst | 1 +
.../{overlay-notes.txt => overlay-notes.rst} | 141 +++++++++---------
MAINTAINERS | 2 +-
3 files changed, 74 insertions(+), 70 deletions(-)
rename Documentation/devicetree/{overlay-notes.txt => overlay-notes.rst} (56%)

diff --git a/Documentation/devicetree/index.rst b/Documentation/devicetree/index.rst
index ca83258fbba5..0669a53fc617 100644
--- a/Documentation/devicetree/index.rst
+++ b/Documentation/devicetree/index.rst
@@ -13,3 +13,4 @@ Open Firmware and Device Tree
changesets
dynamic-resolution-notes
of_unittest
+ overlay-notes
diff --git a/Documentation/devicetree/overlay-notes.txt b/Documentation/devicetree/overlay-notes.rst
similarity index 56%
rename from Documentation/devicetree/overlay-notes.txt
rename to Documentation/devicetree/overlay-notes.rst
index 3f20a39e4bc2..7e8e568f64a8 100644
--- a/Documentation/devicetree/overlay-notes.txt
+++ b/Documentation/devicetree/overlay-notes.rst
@@ -1,5 +1,8 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+=========================
Device Tree Overlay Notes
--------------------------
+=========================

This document describes the implementation of the in-kernel
device tree overlay functionality residing in drivers/of/overlay.c and is a
@@ -15,68 +18,68 @@ Since the kernel mainly deals with devices, any new device node that result
in an active device should have it created while if the device node is either
disabled or removed all together, the affected device should be deregistered.

-Lets take an example where we have a foo board with the following base tree:
-
----- foo.dts -----------------------------------------------------------------
- /* FOO platform */
- / {
- compatible = "corp,foo";
-
- /* shared resources */
- res: res {
- };
-
- /* On chip peripherals */
- ocp: ocp {
- /* peripherals that are always instantiated */
- peripheral1 { ... };
- }
- };
----- foo.dts -----------------------------------------------------------------
-
-The overlay bar.dts, when loaded (and resolved as described in [1]) should
-
----- bar.dts -----------------------------------------------------------------
-/plugin/; /* allow undefined label references and record them */
-/ {
- .... /* various properties for loader use; i.e. part id etc. */
- fragment@0 {
- target = <&ocp>;
- __overlay__ {
- /* bar peripheral */
- bar {
- compatible = "corp,bar";
- ... /* various properties and child nodes */
- }
- };
- };
-};
----- bar.dts -----------------------------------------------------------------
-
-result in foo+bar.dts
-
----- foo+bar.dts -------------------------------------------------------------
- /* FOO platform + bar peripheral */
- / {
- compatible = "corp,foo";
-
- /* shared resources */
- res: res {
- };
-
- /* On chip peripherals */
- ocp: ocp {
- /* peripherals that are always instantiated */
- peripheral1 { ... };
-
- /* bar peripheral */
- bar {
- compatible = "corp,bar";
- ... /* various properties and child nodes */
- }
- }
- };
----- foo+bar.dts -------------------------------------------------------------
+Lets take an example where we have a foo board with the following base tree::
+
+ ---- foo.dts --------------------------------------------------------------
+ /* FOO platform */
+ / {
+ compatible = "corp,foo";
+
+ /* shared resources */
+ res: res {
+ };
+
+ /* On chip peripherals */
+ ocp: ocp {
+ /* peripherals that are always instantiated */
+ peripheral1 { ... };
+ }
+ };
+ ---- foo.dts --------------------------------------------------------------
+
+The overlay bar.dts, when loaded (and resolved as described in [1]) should::
+
+ ---- bar.dts --------------------------------------------------------------
+ /plugin/; /* allow undefined label references and record them */
+ / {
+ .... /* various properties for loader use; i.e. part id etc. */
+ fragment@0 {
+ target = <&ocp>;
+ __overlay__ {
+ /* bar peripheral */
+ bar {
+ compatible = "corp,bar";
+ ... /* various properties and child nodes */
+ }
+ };
+ };
+ };
+ ---- bar.dts --------------------------------------------------------------
+
+result in foo+bar.dts::
+
+ ---- foo+bar.dts ----------------------------------------------------------
+ /* FOO platform + bar peripheral */
+ / {
+ compatible = "corp,foo";
+
+ /* shared resources */
+ res: res {
+ };
+
+ /* On chip peripherals */
+ ocp: ocp {
+ /* peripherals that are always instantiated */
+ peripheral1 { ... };
+
+ /* bar peripheral */
+ bar {
+ compatible = "corp,bar";
+ ... /* various properties and child nodes */
+ }
+ }
+ };
+ ---- foo+bar.dts ----------------------------------------------------------

As a result of the overlay, a new device node (bar) has been created
so a bar platform device will be registered and if a matching device driver
@@ -88,11 +91,11 @@ Overlay in-kernel API
The API is quite easy to use.

1. Call of_overlay_fdt_apply() to create and apply an overlay changeset. The
-return value is an error or a cookie identifying this overlay.
+ return value is an error or a cookie identifying this overlay.

2. Call of_overlay_remove() to remove and cleanup the overlay changeset
-previously created via the call to of_overlay_fdt_apply(). Removal of an
-overlay changeset that is stacked by another will not be permitted.
+ previously created via the call to of_overlay_fdt_apply(). Removal of an
+ overlay changeset that is stacked by another will not be permitted.

Finally, if you need to remove all overlays in one-go, just call
of_overlay_remove_all() which will remove every single one in the correct
@@ -109,9 +112,9 @@ respective node it received.
Overlay DTS Format
------------------

-The DTS of an overlay should have the following format:
+The DTS of an overlay should have the following format::

-{
+ {
/* ignored properties by the overlay */

fragment@0 { /* first child node */
@@ -131,7 +134,7 @@ The DTS of an overlay should have the following format:
...
};
/* more fragments follow */
-}
+ }

Using the non-phandle based target method allows one to use a base DT which does
not contain a __symbols__ node, i.e. it was not compiled with the -@ option.
diff --git a/MAINTAINERS b/MAINTAINERS
index 12fb85313e1b..4da583422186 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12554,7 +12554,7 @@ M: Frank Rowand <[email protected]>
L: [email protected]
S: Maintained
F: Documentation/devicetree/dynamic-resolution-notes.rst
-F: Documentation/devicetree/overlay-notes.txt
+F: Documentation/devicetree/overlay-notes.rst
F: drivers/of/overlay.c
F: drivers/of/resolver.c
K: of_overlay_notifier_
--
2.25.2

2020-04-16 00:13:41

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v3 05/12] docs: dt: convert changesets to ReST

- Add a SPDX header;
- Add a document title;
- Some whitespace fixes and new line breaks;
- Add it to devicetree/index.rst.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---
.../{changesets.txt => changesets.rst} | 24 ++++++++++++-------
Documentation/devicetree/index.rst | 1 +
2 files changed, 16 insertions(+), 9 deletions(-)
rename Documentation/devicetree/{changesets.txt => changesets.rst} (59%)

diff --git a/Documentation/devicetree/changesets.txt b/Documentation/devicetree/changesets.rst
similarity index 59%
rename from Documentation/devicetree/changesets.txt
rename to Documentation/devicetree/changesets.rst
index cb488eeb6353..c7fd8cd6a270 100644
--- a/Documentation/devicetree/changesets.txt
+++ b/Documentation/devicetree/changesets.rst
@@ -1,3 +1,9 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+=============
+DT Changesets
+=============
+
A DT changeset is a method which allows one to apply changes
in the live tree in such a way that either the full set of changes
will be applied, or none of them will be. If an error occurs partway
@@ -15,17 +21,17 @@ The sequence of a changeset is as follows.
1. of_changeset_init() - initializes a changeset

2. A number of DT tree change calls, of_changeset_attach_node(),
-of_changeset_detach_node(), of_changeset_add_property(),
-of_changeset_remove_property, of_changeset_update_property() to prepare
-a set of changes. No changes to the active tree are made at this point.
-All the change operations are recorded in the of_changeset 'entries'
-list.
+ of_changeset_detach_node(), of_changeset_add_property(),
+ of_changeset_remove_property, of_changeset_update_property() to prepare
+ a set of changes. No changes to the active tree are made at this point.
+ All the change operations are recorded in the of_changeset 'entries'
+ list.

3. of_changeset_apply() - Apply the changes to the tree. Either the
-entire changeset will get applied, or if there is an error the tree will
-be restored to the previous state. The core ensures proper serialization
-through locking. An unlocked version __of_changeset_apply is available,
-if needed.
+ entire changeset will get applied, or if there is an error the tree will
+ be restored to the previous state. The core ensures proper serialization
+ through locking. An unlocked version __of_changeset_apply is available,
+ if needed.

If a successfully applied changeset needs to be removed, it can be done
with of_changeset_revert().
diff --git a/Documentation/devicetree/index.rst b/Documentation/devicetree/index.rst
index 6b4daf252375..64c78c3ffea6 100644
--- a/Documentation/devicetree/index.rst
+++ b/Documentation/devicetree/index.rst
@@ -10,3 +10,4 @@ Open Firmware and Device Tree
usage-model
writing-schema
booting-without-of
+ changesets
--
2.25.2

2020-05-05 03:40:40

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH v3 00/12] Convert some DT documentation files to ReST

On Wed, Apr 15, 2020 at 9:45 AM Mauro Carvalho Chehab
<[email protected]> wrote:
>
> While most of the devicetree stuff has its own format (with is now being
> converted to YAML format), some documents there are actually
> describing the DT concepts and how to contribute to it.
>
> IMHO, those documents would fit perfectly as part of the documentation
> body, as part of the firmare documents set.
>
> This patch series manually converts some DT documents that, on my
> opinion, would belong to it.
>
> If you want to see how this would show at the documentation body,
> a sneak peak of this series (together with the other pending
> doc patches from me) is available at:
>
> https://www.infradead.org/~mchehab/kernel_docs/devicetree/index.html
>
> -
>
> v3:
> - rebased on the top of next-20200414
>
> Mauro Carvalho Chehab (12):
> docs: dt: add an index.rst file for devicetree
> docs: dt: convert usage-model.txt to ReST
> docs: dt: usage_model.rst: fix link for DT usage
> docs: dt: convert booting-without-of.txt to ReST format
> docs: dt: convert changesets to ReST
> docs: dt: convert dynamic-resolution-notes.txt to ReST
> docs: dt: convert of_unittest.txt to ReST
> docs: dt: convert overlay-notes.txt to ReST format
> docs: dt: minor adjustments at writing-schema.rst
> docs: dt: convert ABI.txt to ReST format
> docs: dt: convert submitting-patches.txt to ReST format
> docs: dt: convert writing-bindings.txt to ReST

I've applied all but patch 4 as I'm working on just removing it.

Rob