Signed-off-by: Stefano Stabellini stefano.stabellini@xilinx.com --- source/devicenodes.rst | 88 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+)
diff --git a/source/devicenodes.rst b/source/devicenodes.rst index 8825ad9..bcf6163 100644 --- a/source/devicenodes.rst +++ b/source/devicenodes.rst @@ -737,3 +737,91 @@ each with their own on-chip L2 and a shared L3. }; };
+.. _sect-cpus-cluster: + +CPUs Cluster Node Properties +---------------------------- + +Similarly to ``/cpus``, CPUs cluster nodes do not represent real devices +in the system, but act as containers for children cpu nodes. They group +together a set of CPUs that share the same view of the system, the same +``address-map`` (see section :ref:`sect-address-map`). CPUs clusters are +optional, there can be multiple in a single system, and are represented +by nodes compatible with ``cpus,cluster``. + +A child ``cpu`` node represents a system CPU. All ``cpus`` nodes under +the same cluster share key properties (i.e. instruction set) so that a +SMP operating system could run on all of the CPUs in the cluster if +configured to do so. + +.. tabularcolumns:: | p{4cm} p{0.75cm} p{4cm} p{6.5cm} | +.. table:: ``CPUs cluster`` Node Properties + + ======================= ===== ===================== =============================================== + Property Name Usage Value Type Definition + ======================= ===== ===================== =============================================== + ``compatible`` R ``<string list>`` Value shall include "cpus,cluster". + ``#address-cells`` R ``<u32>`` The value specifies how many cells each + element of the ``reg`` property array takes in + children of this node. + ``#size-cells`` R ``<u32>`` Value shall be 0. Specifies that no size is + required in the ``reg`` property in children of + this node. + ``address-map`` SD ``<array>`` If present, it specifies an address mapping + translation between the root node and the + address space of the CPUs cluster. address-map + is fully described in section + :ref:`sect-address-map`. + Usage legend: R=Required, O=Optional, OR=Optional but Recommended, SD=See Definition + =================================================================================================== + +The CPUs cluster node may contain properties that are common across CPU +nodes. + +Example: + +.. code-block:: dts + + cpus_a53 { + #size-cells = <0x0>; + #address-cells = <0x1>; + compatible = "cpus,cluster"; + + cpu@0 { + reg = <0x0>; + compatible = "arm,cortex-a53"; + device_type = "cpu"; + }; + cpu@1 { + reg = <0x1>; + compatible = "arm,cortex-a53"; + device_type = "cpu"; + }; + cpu@2 { + reg = <0x2>; + compatible = "arm,cortex-a53"; + device_type = "cpu"; + }; + cpu@3 { + reg = <0x3>; + compatible = "arm,cortex-a53"; + device_type = "cpu"; + }; + }; + + cpus_r5 { + #size-cells = <0x0>; + #address-cells = <0x1>; + compatible = "cpus,cluster"; + + cpu@0 { + reg = <0x0>; + compatible = "arm,cortex-r5"; + device_type = "cpu"; + }; + cpu@1 { + reg = <0x1>; + compatible = "arm,cortex-r5"; + device_type = "cpu"; + }; + };
system-dt@lists.openampproject.org