diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-03-07 17:23:34 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-03-07 17:23:34 -0500 |
commit | bfe24b9cbefc33efdb9bd10132037e8e4840e616 (patch) | |
tree | 6336e895c75079bd78a2f1c242c7fb451d6584b7 /Documentation/devicetree | |
parent | 4504b1bc059f218bf3a3aa56d9956b1ae8ec7c0f (diff) | |
parent | 6a6317113391b482a6715d1c826b2d78bfdf9366 (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')
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 @@ | |||
1 | Common bindings for device graphs | ||
2 | |||
3 | General concept | ||
4 | --------------- | ||
5 | |||
6 | The hierarchical organisation of the device tree is well suited to describe | ||
7 | control flow to devices, but there can be more complex connections between | ||
8 | devices that work together to form a logical compound device, following an | ||
9 | arbitrarily complex graph. | ||
10 | There already is a simple directed graph between devices tree nodes using | ||
11 | phandle properties pointing to other nodes to describe connections that | ||
12 | can not be inferred from device tree parent-child relationships. The device | ||
13 | tree graph bindings described herein abstract more complex devices that can | ||
14 | have multiple specifiable ports, each of which can be linked to one or more | ||
15 | ports of other devices. | ||
16 | |||
17 | These common bindings do not contain any information about the direction or | ||
18 | type of the connections, they just map their existence. Specific properties | ||
19 | may be described by specialized bindings depending on the type of connection. | ||
20 | |||
21 | To see how this binding applies to video pipelines, for example, see | ||
22 | Documentation/device-tree/bindings/media/video-interfaces.txt. | ||
23 | Here the ports describe data interfaces, and the links between them are | ||
24 | the connecting data buses. A single port with multiple connections can | ||
25 | correspond to multiple devices being connected to the same physical bus. | ||
26 | |||
27 | Organisation of ports and endpoints | ||
28 | ----------------------------------- | ||
29 | |||
30 | Ports are described by child 'port' nodes contained in the device node. | ||
31 | Each port node contains an 'endpoint' subnode for each remote device port | ||
32 | connected to this port. If a single port is connected to more than one | ||
33 | remote device, an 'endpoint' child node must be provided for each link. | ||
34 | If more than one port is present in a device node or there is more than one | ||
35 | endpoint at a port, or a port node needs to be associated with a selected | ||
36 | hardware interface, a common scheme using '#address-cells', '#size-cells' | ||
37 | and 'reg' properties is used number the nodes. | ||
38 | |||
39 | device { | ||
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 | |||
66 | All 'port' nodes can be grouped under an optional 'ports' node, which | ||
67 | allows to specify #address-cells, #size-cells properties for the 'port' | ||
68 | nodes independently from any other child device nodes a device might | ||
69 | have. | ||
70 | |||
71 | device { | ||
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 | |||
87 | Links between endpoints | ||
88 | ----------------------- | ||
89 | |||
90 | Each endpoint should contain a 'remote-endpoint' phandle property that points | ||
91 | to the corresponding endpoint in the port of the remote device. In turn, the | ||
92 | remote endpoint should contain a 'remote-endpoint' property. If it has one, | ||
93 | it 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 | ||
95 | containing ports. | ||
96 | |||
97 | device-1 { | ||
98 | port { | ||
99 | device_1_output: endpoint { | ||
100 | remote-endpoint = <&device_2_input>; | ||
101 | }; | ||
102 | }; | ||
103 | }; | ||
104 | |||
105 | device-2 { | ||
106 | port { | ||
107 | device_2_input: endpoint { | ||
108 | remote-endpoint = <&device_1_output>; | ||
109 | }; | ||
110 | }; | ||
111 | }; | ||
112 | |||
113 | |||
114 | Required properties | ||
115 | ------------------- | ||
116 | |||
117 | If there is more than one 'port' or more than one 'endpoint' node or 'reg' | ||
118 | property is present in port and/or endpoint nodes the following properties | ||
119 | are 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 | |||
125 | Optional 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 @@ | |||
1 | Freescale i.MX DRM master device | ||
2 | ================================ | ||
3 | |||
4 | The freescale i.MX DRM master device is a virtual device needed to list all | ||
5 | IPU or other display interface nodes that comprise the graphics subsystem. | ||
6 | |||
7 | Required 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 | |||
12 | example: | ||
13 | |||
14 | display-subsystem { | ||
15 | compatible = "fsl,display-subsystem"; | ||
16 | ports = <&ipu_di0>; | ||
17 | }; | ||
18 | |||
19 | |||
1 | Freescale i.MX IPUv3 | 20 | Freescale 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 |
31 | Optional 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 | ||
14 | example: | 37 | example: |
15 | 38 | ||
16 | ipu: ipu@18000000 { | 39 | ipu: 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 | ||
24 | Parallel display support | 56 | Parallel display support |
@@ -26,19 +58,25 @@ Parallel display support | |||
26 | 58 | ||
27 | Required properties: | 59 | Required 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 | ||
30 | Optional properties: | 61 | Optional 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 | ||
37 | example: | 70 | example: |
38 | 71 | ||
39 | display@di0 { | 72 | display@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 @@ | |||
1 | Device-Tree bindings for HDMI Transmitter | ||
2 | |||
3 | HDMI Transmitter | ||
4 | ================ | ||
5 | |||
6 | The HDMI Transmitter is a Synopsys DesignWare HDMI 1.4 TX controller IP | ||
7 | with accompanying PHY IP. | ||
8 | |||
9 | Required 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 | |||
23 | Optional properties: | ||
24 | - ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing | ||
25 | |||
26 | example: | ||
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 | ||
51 | Required properties: | 51 | Required 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 | ||
60 | example: | 62 | example: |
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 | }; |