aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-03-07 17:23:34 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-03-07 17:23:34 -0500
commitbfe24b9cbefc33efdb9bd10132037e8e4840e616 (patch)
tree6336e895c75079bd78a2f1c242c7fb451d6584b7 /Documentation/devicetree
parent4504b1bc059f218bf3a3aa56d9956b1ae8ec7c0f (diff)
parent6a6317113391b482a6715d1c826b2d78bfdf9366 (diff)
Merge branch 'imx-drm-staging' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into staging-next
Russell writes: This set of changes reorganises imx-drm's DT bindings by re-using the OF graph parsing code which was located in drivers/media, removing the temporary bindings. The result is that more TODO entries are now removed. While we're not quite done with this yet as there's a few straggling updates to imx-ldb to come, but leaving these out is not detrimental at this point in time - they are more an enhancement. However, this pull has the additional complication that we're sharing seven commits with Mauro's V4L git tree, which move the OF graph parsing code out of drivers/media into drivers/of. Philipp's imx-drm changes depend on these and my previously committed round of imx-drm commits. Hence, the diffstat below is from a test merge with your tree head (17b02809cfa7). Mauro merged those seven commits earlier today as a git pull, so both trees will be sharing exactly the same commit IDs. I've given these changes a spin here on both my Hummingboard and Cubox-i4 (one is iMX6Solo, the other is iMX6Quad based), which includes Xorg using the DRM device directly, and I find nothing wrong. The diffstat does look a little scarey - this is because we're having to update the ARM DT files along with this change, and obviously the dependency on the OF graph parsing code.
Diffstat (limited to 'Documentation/devicetree')
-rw-r--r--Documentation/devicetree/bindings/graph.txt129
-rw-r--r--Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt48
-rw-r--r--Documentation/devicetree/bindings/staging/imx-drm/hdmi.txt58
-rw-r--r--Documentation/devicetree/bindings/staging/imx-drm/ldb.txt20
4 files changed, 246 insertions, 9 deletions
diff --git a/Documentation/devicetree/bindings/graph.txt b/Documentation/devicetree/bindings/graph.txt
new file mode 100644
index 000000000000..1a69c078adf2
--- /dev/null
+++ b/Documentation/devicetree/bindings/graph.txt
@@ -0,0 +1,129 @@
1Common bindings for device graphs
2
3General concept
4---------------
5
6The hierarchical organisation of the device tree is well suited to describe
7control flow to devices, but there can be more complex connections between
8devices that work together to form a logical compound device, following an
9arbitrarily complex graph.
10There already is a simple directed graph between devices tree nodes using
11phandle properties pointing to other nodes to describe connections that
12can not be inferred from device tree parent-child relationships. The device
13tree graph bindings described herein abstract more complex devices that can
14have multiple specifiable ports, each of which can be linked to one or more
15ports of other devices.
16
17These common bindings do not contain any information about the direction or
18type of the connections, they just map their existence. Specific properties
19may be described by specialized bindings depending on the type of connection.
20
21To see how this binding applies to video pipelines, for example, see
22Documentation/device-tree/bindings/media/video-interfaces.txt.
23Here the ports describe data interfaces, and the links between them are
24the connecting data buses. A single port with multiple connections can
25correspond to multiple devices being connected to the same physical bus.
26
27Organisation of ports and endpoints
28-----------------------------------
29
30Ports are described by child 'port' nodes contained in the device node.
31Each port node contains an 'endpoint' subnode for each remote device port
32connected to this port. If a single port is connected to more than one
33remote device, an 'endpoint' child node must be provided for each link.
34If more than one port is present in a device node or there is more than one
35endpoint at a port, or a port node needs to be associated with a selected
36hardware interface, a common scheme using '#address-cells', '#size-cells'
37and 'reg' properties is used number the nodes.
38
39device {
40 ...
41 #address-cells = <1>;
42 #size-cells = <0>;
43
44 port@0 {
45 #address-cells = <1>;
46 #size-cells = <0>;
47 reg = <0>;
48
49 endpoint@0 {
50 reg = <0>;
51 ...
52 };
53 endpoint@1 {
54 reg = <1>;
55 ...
56 };
57 };
58
59 port@1 {
60 reg = <1>;
61
62 endpoint { ... };
63 };
64};
65
66All 'port' nodes can be grouped under an optional 'ports' node, which
67allows to specify #address-cells, #size-cells properties for the 'port'
68nodes independently from any other child device nodes a device might
69have.
70
71device {
72 ...
73 ports {
74 #address-cells = <1>;
75 #size-cells = <0>;
76
77 port@0 {
78 ...
79 endpoint@0 { ... };
80 endpoint@1 { ... };
81 };
82
83 port@1 { ... };
84 };
85};
86
87Links between endpoints
88-----------------------
89
90Each endpoint should contain a 'remote-endpoint' phandle property that points
91to the corresponding endpoint in the port of the remote device. In turn, the
92remote endpoint should contain a 'remote-endpoint' property. If it has one,
93it must not point to another than the local endpoint. Two endpoints with their
94'remote-endpoint' phandles pointing at each other form a link between the
95containing ports.
96
97device-1 {
98 port {
99 device_1_output: endpoint {
100 remote-endpoint = <&device_2_input>;
101 };
102 };
103};
104
105device-2 {
106 port {
107 device_2_input: endpoint {
108 remote-endpoint = <&device_1_output>;
109 };
110 };
111};
112
113
114Required properties
115-------------------
116
117If there is more than one 'port' or more than one 'endpoint' node or 'reg'
118property is present in port and/or endpoint nodes the following properties
119are required in a relevant parent node:
120
121 - #address-cells : number of cells required to define port/endpoint
122 identifier, should be 1.
123 - #size-cells : should be zero.
124
125Optional endpoint properties
126----------------------------
127
128- remote-endpoint: phandle to an 'endpoint' subnode of a remote device node.
129
diff --git a/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt b/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt
index b876d4925a57..3be5ce7a9654 100644
--- a/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt
+++ b/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt
@@ -1,3 +1,22 @@
1Freescale i.MX DRM master device
2================================
3
4The freescale i.MX DRM master device is a virtual device needed to list all
5IPU or other display interface nodes that comprise the graphics subsystem.
6
7Required properties:
8- compatible: Should be "fsl,imx-display-subsystem"
9- ports: Should contain a list of phandles pointing to display interface ports
10 of IPU devices
11
12example:
13
14display-subsystem {
15 compatible = "fsl,display-subsystem";
16 ports = <&ipu_di0>;
17};
18
19
1Freescale i.MX IPUv3 20Freescale i.MX IPUv3
2==================== 21====================
3 22
@@ -7,18 +26,31 @@ Required properties:
7 datasheet 26 datasheet
8- interrupts: Should contain sync interrupt and error interrupt, 27- interrupts: Should contain sync interrupt and error interrupt,
9 in this order. 28 in this order.
10- #crtc-cells: 1, See below
11- resets: phandle pointing to the system reset controller and 29- resets: phandle pointing to the system reset controller and
12 reset line index, see reset/fsl,imx-src.txt for details 30 reset line index, see reset/fsl,imx-src.txt for details
31Optional properties:
32- port@[0-3]: Port nodes with endpoint definitions as defined in
33 Documentation/devicetree/bindings/media/video-interfaces.txt.
34 Ports 0 and 1 should correspond to CSI0 and CSI1,
35 ports 2 and 3 should correspond to DI0 and DI1, respectively.
13 36
14example: 37example:
15 38
16ipu: ipu@18000000 { 39ipu: ipu@18000000 {
17 #crtc-cells = <1>; 40 #address-cells = <1>;
41 #size-cells = <0>;
18 compatible = "fsl,imx53-ipu"; 42 compatible = "fsl,imx53-ipu";
19 reg = <0x18000000 0x080000000>; 43 reg = <0x18000000 0x080000000>;
20 interrupts = <11 10>; 44 interrupts = <11 10>;
21 resets = <&src 2>; 45 resets = <&src 2>;
46
47 ipu_di0: port@2 {
48 reg = <2>;
49
50 ipu_di0_disp0: endpoint {
51 remote-endpoint = <&display_in>;
52 };
53 };
22}; 54};
23 55
24Parallel display support 56Parallel display support
@@ -26,19 +58,25 @@ Parallel display support
26 58
27Required properties: 59Required properties:
28- compatible: Should be "fsl,imx-parallel-display" 60- compatible: Should be "fsl,imx-parallel-display"
29- crtc: the crtc this display is connected to, see below
30Optional properties: 61Optional properties:
31- interface_pix_fmt: How this display is connected to the 62- interface_pix_fmt: How this display is connected to the
32 crtc. Currently supported types: "rgb24", "rgb565", "bgr666" 63 display interface. Currently supported types: "rgb24", "rgb565", "bgr666"
33- edid: verbatim EDID data block describing attached display. 64- edid: verbatim EDID data block describing attached display.
34- ddc: phandle describing the i2c bus handling the display data 65- ddc: phandle describing the i2c bus handling the display data
35 channel 66 channel
67- port: A port node with endpoint definitions as defined in
68 Documentation/devicetree/bindings/media/video-interfaces.txt.
36 69
37example: 70example:
38 71
39display@di0 { 72display@di0 {
40 compatible = "fsl,imx-parallel-display"; 73 compatible = "fsl,imx-parallel-display";
41 edid = [edid-data]; 74 edid = [edid-data];
42 crtc = <&ipu 0>;
43 interface-pix-fmt = "rgb24"; 75 interface-pix-fmt = "rgb24";
76
77 port {
78 display_in: endpoint {
79 remote-endpoint = <&ipu_di0_disp0>;
80 };
81 };
44}; 82};
diff --git a/Documentation/devicetree/bindings/staging/imx-drm/hdmi.txt b/Documentation/devicetree/bindings/staging/imx-drm/hdmi.txt
new file mode 100644
index 000000000000..1b756cf9afb0
--- /dev/null
+++ b/Documentation/devicetree/bindings/staging/imx-drm/hdmi.txt
@@ -0,0 +1,58 @@
1Device-Tree bindings for HDMI Transmitter
2
3HDMI Transmitter
4================
5
6The HDMI Transmitter is a Synopsys DesignWare HDMI 1.4 TX controller IP
7with accompanying PHY IP.
8
9Required properties:
10 - #address-cells : should be <1>
11 - #size-cells : should be <0>
12 - compatible : should be "fsl,imx6q-hdmi" or "fsl,imx6dl-hdmi".
13 - gpr : should be <&gpr>.
14 The phandle points to the iomuxc-gpr region containing the HDMI
15 multiplexer control register.
16 - clocks, clock-names : phandles to the HDMI iahb and isrf clocks, as described
17 in Documentation/devicetree/bindings/clock/clock-bindings.txt and
18 Documentation/devicetree/bindings/clock/imx6q-clock.txt.
19 - port@[0-4]: Up to four port nodes with endpoint definitions as defined in
20 Documentation/devicetree/bindings/media/video-interfaces.txt,
21 corresponding to the four inputs to the HDMI multiplexer.
22
23Optional properties:
24 - ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
25
26example:
27
28 gpr: iomuxc-gpr@020e0000 {
29 /* ... */
30 };
31
32 hdmi: hdmi@0120000 {
33 #address-cells = <1>;
34 #size-cells = <0>;
35 compatible = "fsl,imx6q-hdmi";
36 reg = <0x00120000 0x9000>;
37 interrupts = <0 115 0x04>;
38 gpr = <&gpr>;
39 clocks = <&clks 123>, <&clks 124>;
40 clock-names = "iahb", "isfr";
41 ddc-i2c-bus = <&i2c2>;
42
43 port@0 {
44 reg = <0>;
45
46 hdmi_mux_0: endpoint {
47 remote-endpoint = <&ipu1_di0_hdmi>;
48 };
49 };
50
51 port@1 {
52 reg = <1>;
53
54 hdmi_mux_1: endpoint {
55 remote-endpoint = <&ipu1_di1_hdmi>;
56 };
57 };
58 };
diff --git a/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt b/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt
index ed9377811ee2..578a1fca366e 100644
--- a/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt
+++ b/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt
@@ -50,12 +50,14 @@ have a look at Documentation/devicetree/bindings/video/display-timing.txt.
50 50
51Required properties: 51Required properties:
52 - reg : should be <0> or <1> 52 - reg : should be <0> or <1>
53 - crtcs : a list of phandles with index pointing to the IPU display interfaces
54 that can be used as video source for this channel.
55 - fsl,data-mapping : should be "spwg" or "jeida" 53 - fsl,data-mapping : should be "spwg" or "jeida"
56 This describes how the color bits are laid out in the 54 This describes how the color bits are laid out in the
57 serialized LVDS signal. 55 serialized LVDS signal.
58 - fsl,data-width : should be <18> or <24> 56 - fsl,data-width : should be <18> or <24>
57 - port: A port node with endpoint definitions as defined in
58 Documentation/devicetree/bindings/media/video-interfaces.txt.
59 On i.MX6, there should be four ports (port@[0-3]) that correspond
60 to the four LVDS multiplexer inputs.
59 61
60example: 62example:
61 63
@@ -77,23 +79,33 @@ ldb: ldb@53fa8008 {
77 79
78 lvds-channel@0 { 80 lvds-channel@0 {
79 reg = <0>; 81 reg = <0>;
80 crtcs = <&ipu 0>;
81 fsl,data-mapping = "spwg"; 82 fsl,data-mapping = "spwg";
82 fsl,data-width = <24>; 83 fsl,data-width = <24>;
83 84
84 display-timings { 85 display-timings {
85 /* ... */ 86 /* ... */
86 }; 87 };
88
89 port {
90 lvds0_in: endpoint {
91 remote-endpoint = <&ipu_di0_lvds0>;
92 };
93 };
87 }; 94 };
88 95
89 lvds-channel@1 { 96 lvds-channel@1 {
90 reg = <1>; 97 reg = <1>;
91 crtcs = <&ipu 1>;
92 fsl,data-mapping = "spwg"; 98 fsl,data-mapping = "spwg";
93 fsl,data-width = <24>; 99 fsl,data-width = <24>;
94 100
95 display-timings { 101 display-timings {
96 /* ... */ 102 /* ... */
97 }; 103 };
104
105 port {
106 lvds1_in: endpoint {
107 remote-endpoint = <&ipu_di1_lvds1>;
108 };
109 };
98 }; 110 };
99}; 111};