Revision c4b5fd3fb2058b650447372472ad24e2a989f9f6 authored by Linus Torvalds on 09 July 2015, 20:35:39 UTC, committed by Linus Torvalds on 09 July 2015, 20:35:39 UTC
Merge hpfs updates from Mikulas Patocka.

Mainly fstrim support, with some minor other cleanups.

These were actually sent during the merge window, but I wanted to wait
for the FSTRIM compat handling cleanup before applying them.  Mikulas
sent that earlier today.

* emailed patches from Mikulas Patocka <mikulas@twibright.com>:
  hpfs: hpfs_error: Remove static buffer, use vsprintf extension %pV instead
  hpfs: kstrdup() out of memory handling
  hpfs: Remove unessary cast
  hpfs: add fstrim support
2 parent s 4c0a9f7 + a28e4b2
Raw File
graph.txt
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/devicetree/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.

back to top