|
|
@@ -0,0 +1,129 @@
|
|
|
+Common bindings for device graphs
|
|
|
+
|
|
|
+General concept
|
|
|
+---------------
|
|
|
+
|
|
|
+The hierarchical organisation of the device tree is well suited to describe
|
|
|
+control flow to devices, but there can be more complex connections between
|
|
|
+devices that work together to form a logical compound device, following an
|
|
|
+arbitrarily complex graph.
|
|
|
+There already is a simple directed graph between devices tree nodes using
|
|
|
+phandle properties pointing to other nodes to describe connections that
|
|
|
+can not be inferred from device tree parent-child relationships. The device
|
|
|
+tree graph bindings described herein abstract more complex devices that can
|
|
|
+have multiple specifiable ports, each of which can be linked to one or more
|
|
|
+ports of other devices.
|
|
|
+
|
|
|
+These common bindings do not contain any information about the direction or
|
|
|
+type of the connections, they just map their existence. Specific properties
|
|
|
+may be described by specialized bindings depending on the type of connection.
|
|
|
+
|
|
|
+To see how this binding applies to video pipelines, for example, see
|
|
|
+Documentation/device-tree/bindings/media/video-interfaces.txt.
|
|
|
+Here the ports describe data interfaces, and the links between them are
|
|
|
+the connecting data buses. A single port with multiple connections can
|
|
|
+correspond to multiple devices being connected to the same physical bus.
|
|
|
+
|
|
|
+Organisation of ports and endpoints
|
|
|
+-----------------------------------
|
|
|
+
|
|
|
+Ports are described by child 'port' nodes contained in the device node.
|
|
|
+Each port node contains an 'endpoint' subnode for each remote device port
|
|
|
+connected to this port. If a single port is connected to more than one
|
|
|
+remote device, an 'endpoint' child node must be provided for each link.
|
|
|
+If more than one port is present in a device node or there is more than one
|
|
|
+endpoint at a port, or a port node needs to be associated with a selected
|
|
|
+hardware interface, a common scheme using '#address-cells', '#size-cells'
|
|
|
+and 'reg' properties is used number the nodes.
|
|
|
+
|
|
|
+device {
|
|
|
+ ...
|
|
|
+ #address-cells = <1>;
|
|
|
+ #size-cells = <0>;
|
|
|
+
|
|
|
+ port@0 {
|
|
|
+ #address-cells = <1>;
|
|
|
+ #size-cells = <0>;
|
|
|
+ reg = <0>;
|
|
|
+
|
|
|
+ endpoint@0 {
|
|
|
+ reg = <0>;
|
|
|
+ ...
|
|
|
+ };
|
|
|
+ endpoint@1 {
|
|
|
+ reg = <1>;
|
|
|
+ ...
|
|
|
+ };
|
|
|
+ };
|
|
|
+
|
|
|
+ port@1 {
|
|
|
+ reg = <1>;
|
|
|
+
|
|
|
+ endpoint { ... };
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+All 'port' nodes can be grouped under an optional 'ports' node, which
|
|
|
+allows to specify #address-cells, #size-cells properties for the 'port'
|
|
|
+nodes independently from any other child device nodes a device might
|
|
|
+have.
|
|
|
+
|
|
|
+device {
|
|
|
+ ...
|
|
|
+ ports {
|
|
|
+ #address-cells = <1>;
|
|
|
+ #size-cells = <0>;
|
|
|
+
|
|
|
+ port@0 {
|
|
|
+ ...
|
|
|
+ endpoint@0 { ... };
|
|
|
+ endpoint@1 { ... };
|
|
|
+ };
|
|
|
+
|
|
|
+ port@1 { ... };
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+Links between endpoints
|
|
|
+-----------------------
|
|
|
+
|
|
|
+Each endpoint should contain a 'remote-endpoint' phandle property that points
|
|
|
+to the corresponding endpoint in the port of the remote device. In turn, the
|
|
|
+remote endpoint should contain a 'remote-endpoint' property. If it has one,
|
|
|
+it must not point to another than the local endpoint. Two endpoints with their
|
|
|
+'remote-endpoint' phandles pointing at each other form a link between the
|
|
|
+containing ports.
|
|
|
+
|
|
|
+device-1 {
|
|
|
+ port {
|
|
|
+ device_1_output: endpoint {
|
|
|
+ remote-endpoint = <&device_2_input>;
|
|
|
+ };
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+device-2 {
|
|
|
+ port {
|
|
|
+ device_2_input: endpoint {
|
|
|
+ remote-endpoint = <&device_1_output>;
|
|
|
+ };
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+Required properties
|
|
|
+-------------------
|
|
|
+
|
|
|
+If there is more than one 'port' or more than one 'endpoint' node or 'reg'
|
|
|
+property is present in port and/or endpoint nodes the following properties
|
|
|
+are required in a relevant parent node:
|
|
|
+
|
|
|
+ - #address-cells : number of cells required to define port/endpoint
|
|
|
+ identifier, should be 1.
|
|
|
+ - #size-cells : should be zero.
|
|
|
+
|
|
|
+Optional endpoint properties
|
|
|
+----------------------------
|
|
|
+
|
|
|
+- remote-endpoint: phandle to an 'endpoint' subnode of a remote device node.
|
|
|
+
|