Signed-off-by: Stefano Stabellini stefano.stabellini@xilinx.com --- source/devicetree-basics.rst | 59 ++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+)
diff --git a/source/devicetree-basics.rst b/source/devicetree-basics.rst index b91b048..82242ad 100644 --- a/source/devicetree-basics.rst +++ b/source/devicetree-basics.rst @@ -803,6 +803,65 @@ Description: from the *#size-cells* of this node (the node in which the dma-ranges property appears).
+.. _sect-address-map: + +address-map +~~~~~~~~~~~ + +Property name: ``address-map`` + +Value type: ``<empty>`` or ``<prop-encoded-array>`` encoded as an arbitrary +number of (*bus-master-address*, *ref-node*, *root-node-address*, *length*) +quartets. + +Description: + + CPUs, represented by ``cpu`` nodes under either ``/cpus`` or a cluster + compatible to ``cpus,cluster`` and other bus masters (i.e. PCI Root + Complexes), can have different address mappings compared to the one of the + root node. The *address-map* property provides a mean of defining a mapping, + or translation, between the address space of the root node and the address + space of the CPUs cluster (or other bus master). See section + :ref:`sect-cpus-cluster` for a full description of CPUs clusters. + *address-map* can be used to create a mapping between the address + space of an ``indirect-bus`` and the address space of the node. + ``indirect-bus`` is defined in section :ref:`sect-bindings-indirect-bus`. + + The format of the value of the *address-map* property is an arbitrary number + of quartets of (*node-address*, *ref-node*, *root-node-address*, *length*). + Each quartet specified describes a contiguous address range. + + * the *node-address* is a physical address within this node address space + (the node in which the address-map property appears). The number of cells + to represent the address is determined by the *#ranges-address-cells* + property of this node. + + * *ref-node* is a phandle that points to the node describing the resource + whose address is being mapped into this node address space. + + * *root-node-address* is a physical address within the root node address + space. The number of cells to represent the parent address can be + determined from the #address-cells property of root node. + + * *length* specifies the size of the range in this node address space. + The number of cells to represent the size can be determined by the + *#ranges-size-cells* of this node. + +If the property is defined with an <empty> value, it specifies that this node +has no mappings of the root node address space. + +If the property is not present, it is assumed that the address space of +this node and the address space of the root node are identical. + +Example: + +.. code-block:: dts + + #ranges-size-cells = <0x1>; + #ranges-address-cells = <0x1>; + address-map = <0xf0000000 &amba 0xf0000000 0x10000000 + 0xffe90000 &tcm_bus 0x0 0x10000>; + name (deprecated) ~~~~~~~~~~~~~~~~~
system-dt@lists.openampproject.org