1f5a98bfeSMaxime Ripard# SPDX-License-Identifier: GPL-2.0
2f5a98bfeSMaxime Ripard%YAML 1.2
3f5a98bfeSMaxime Ripard---
4f5a98bfeSMaxime Ripard$id: http://devicetree.org/schemas/display/allwinner,sun8i-a83t-dw-hdmi.yaml#
5f5a98bfeSMaxime Ripard$schema: http://devicetree.org/meta-schemas/core.yaml#
6f5a98bfeSMaxime Ripard
7*dd3cb467SAndrew Lunntitle: Allwinner A83t DWC HDMI TX Encoder
8f5a98bfeSMaxime Ripard
9f5a98bfeSMaxime Riparddescription: |
10f5a98bfeSMaxime Ripard  The HDMI transmitter is a Synopsys DesignWare HDMI 1.4 TX controller
11f5a98bfeSMaxime Ripard  IP with Allwinner\'s own PHY IP. It supports audio and video outputs
12f5a98bfeSMaxime Ripard  and CEC.
13f5a98bfeSMaxime Ripard
14f5a98bfeSMaxime Ripard  These DT bindings follow the Synopsys DWC HDMI TX bindings defined
15a485a5fdSLaurent Pinchart  in bridge/synopsys,dw-hdmi.yaml with the following device-specific
16a485a5fdSLaurent Pinchart  properties.
17f5a98bfeSMaxime Ripard
18f5a98bfeSMaxime Ripardmaintainers:
19f5a98bfeSMaxime Ripard  - Chen-Yu Tsai <wens@csie.org>
20f5a98bfeSMaxime Ripard  - Maxime Ripard <mripard@kernel.org>
21f5a98bfeSMaxime Ripard
22f5a98bfeSMaxime Ripardproperties:
23f5a98bfeSMaxime Ripard  "#phy-cells":
24f5a98bfeSMaxime Ripard    const: 0
25f5a98bfeSMaxime Ripard
26f5a98bfeSMaxime Ripard  compatible:
27f5a98bfeSMaxime Ripard    oneOf:
28f5a98bfeSMaxime Ripard      - const: allwinner,sun8i-a83t-dw-hdmi
29f5a98bfeSMaxime Ripard      - const: allwinner,sun50i-h6-dw-hdmi
30f5a98bfeSMaxime Ripard
31f5a98bfeSMaxime Ripard      - items:
32f5a98bfeSMaxime Ripard          - enum:
33f5a98bfeSMaxime Ripard              - allwinner,sun8i-h3-dw-hdmi
34f5a98bfeSMaxime Ripard              - allwinner,sun8i-r40-dw-hdmi
35f5a98bfeSMaxime Ripard              - allwinner,sun50i-a64-dw-hdmi
36f5a98bfeSMaxime Ripard          - const: allwinner,sun8i-a83t-dw-hdmi
37f5a98bfeSMaxime Ripard
38f5a98bfeSMaxime Ripard  reg:
39f5a98bfeSMaxime Ripard    maxItems: 1
40f5a98bfeSMaxime Ripard
41f5a98bfeSMaxime Ripard  reg-io-width:
42f5a98bfeSMaxime Ripard    const: 1
43f5a98bfeSMaxime Ripard
44f5a98bfeSMaxime Ripard  interrupts:
45f5a98bfeSMaxime Ripard    maxItems: 1
46f5a98bfeSMaxime Ripard
47f5a98bfeSMaxime Ripard  clocks:
48f5a98bfeSMaxime Ripard    minItems: 3
49f5a98bfeSMaxime Ripard    items:
50f5a98bfeSMaxime Ripard      - description: Bus Clock
51f5a98bfeSMaxime Ripard      - description: Register Clock
52f5a98bfeSMaxime Ripard      - description: TMDS Clock
53f5a98bfeSMaxime Ripard      - description: HDMI CEC Clock
54f5a98bfeSMaxime Ripard      - description: HDCP Clock
55f5a98bfeSMaxime Ripard      - description: HDCP Bus Clock
56f5a98bfeSMaxime Ripard
57f5a98bfeSMaxime Ripard  clock-names:
58f5a98bfeSMaxime Ripard    minItems: 3
59f5a98bfeSMaxime Ripard    items:
60f5a98bfeSMaxime Ripard      - const: iahb
61f5a98bfeSMaxime Ripard      - const: isfr
62f5a98bfeSMaxime Ripard      - const: tmds
63f5a98bfeSMaxime Ripard      - const: cec
64f5a98bfeSMaxime Ripard      - const: hdcp
65f5a98bfeSMaxime Ripard      - const: hdcp-bus
66f5a98bfeSMaxime Ripard
67f5a98bfeSMaxime Ripard  resets:
68f5a98bfeSMaxime Ripard    minItems: 1
69f5a98bfeSMaxime Ripard    items:
70f5a98bfeSMaxime Ripard      - description: HDMI Controller Reset
71f5a98bfeSMaxime Ripard      - description: HDCP Reset
72f5a98bfeSMaxime Ripard
73f5a98bfeSMaxime Ripard  reset-names:
74f5a98bfeSMaxime Ripard    minItems: 1
75f5a98bfeSMaxime Ripard    items:
76f5a98bfeSMaxime Ripard      - const: ctrl
77f5a98bfeSMaxime Ripard      - const: hdcp
78f5a98bfeSMaxime Ripard
79f5a98bfeSMaxime Ripard  phys:
80f5a98bfeSMaxime Ripard    maxItems: 1
81f5a98bfeSMaxime Ripard    description:
82f5a98bfeSMaxime Ripard      Phandle to the DWC HDMI PHY.
83f5a98bfeSMaxime Ripard
84f5a98bfeSMaxime Ripard  phy-names:
85f5a98bfeSMaxime Ripard    const: phy
86f5a98bfeSMaxime Ripard
87f5a98bfeSMaxime Ripard  hvcc-supply:
88f5a98bfeSMaxime Ripard    description:
89f5a98bfeSMaxime Ripard      The VCC power supply of the controller
90f5a98bfeSMaxime Ripard
91f5a98bfeSMaxime Ripard  ports:
92b6755423SRob Herring    $ref: /schemas/graph.yaml#/properties/ports
93f5a98bfeSMaxime Ripard
94f5a98bfeSMaxime Ripard    properties:
95f5a98bfeSMaxime Ripard      port@0:
96b6755423SRob Herring        $ref: /schemas/graph.yaml#/properties/port
97f5a98bfeSMaxime Ripard        description: |
98f5a98bfeSMaxime Ripard          Input endpoints of the controller. Usually the associated
99f5a98bfeSMaxime Ripard          TCON.
100f5a98bfeSMaxime Ripard
101f5a98bfeSMaxime Ripard      port@1:
102b6755423SRob Herring        $ref: /schemas/graph.yaml#/properties/port
103f5a98bfeSMaxime Ripard        description: |
104f5a98bfeSMaxime Ripard          Output endpoints of the controller. Usually an HDMI
105f5a98bfeSMaxime Ripard          connector.
106f5a98bfeSMaxime Ripard
107f5a98bfeSMaxime Ripard    required:
108f5a98bfeSMaxime Ripard      - port@0
109f5a98bfeSMaxime Ripard      - port@1
110f5a98bfeSMaxime Ripard
111f5a98bfeSMaxime Ripardrequired:
112f5a98bfeSMaxime Ripard  - compatible
113f5a98bfeSMaxime Ripard  - reg
114f5a98bfeSMaxime Ripard  - reg-io-width
115f5a98bfeSMaxime Ripard  - interrupts
116f5a98bfeSMaxime Ripard  - clocks
117f5a98bfeSMaxime Ripard  - clock-names
118f5a98bfeSMaxime Ripard  - resets
119f5a98bfeSMaxime Ripard  - reset-names
120f5a98bfeSMaxime Ripard  - phys
121f5a98bfeSMaxime Ripard  - phy-names
122f5a98bfeSMaxime Ripard  - ports
123f5a98bfeSMaxime Ripard
124f5a98bfeSMaxime Ripardif:
125f5a98bfeSMaxime Ripard  properties:
126f5a98bfeSMaxime Ripard    compatible:
127f5a98bfeSMaxime Ripard      contains:
128f5a98bfeSMaxime Ripard        enum:
129f5a98bfeSMaxime Ripard          - allwinner,sun50i-h6-dw-hdmi
130f5a98bfeSMaxime Ripard
131f5a98bfeSMaxime Ripardthen:
132f5a98bfeSMaxime Ripard  properties:
133f5a98bfeSMaxime Ripard    clocks:
134f5a98bfeSMaxime Ripard      minItems: 6
135f5a98bfeSMaxime Ripard
136f5a98bfeSMaxime Ripard    clock-names:
137f5a98bfeSMaxime Ripard      minItems: 6
138f5a98bfeSMaxime Ripard
139f5a98bfeSMaxime Ripard    resets:
140f5a98bfeSMaxime Ripard      minItems: 2
141f5a98bfeSMaxime Ripard
142f5a98bfeSMaxime Ripard    reset-names:
143f5a98bfeSMaxime Ripard      minItems: 2
144f5a98bfeSMaxime Ripard
145f5a98bfeSMaxime Ripard
146f5a98bfeSMaxime RipardadditionalProperties: false
147f5a98bfeSMaxime Ripard
148f5a98bfeSMaxime Ripardexamples:
149f5a98bfeSMaxime Ripard  - |
150f5a98bfeSMaxime Ripard    #include <dt-bindings/interrupt-controller/arm-gic.h>
151f5a98bfeSMaxime Ripard
152f5a98bfeSMaxime Ripard    /*
153f5a98bfeSMaxime Ripard     * This comes from the clock/sun8i-a83t-ccu.h and
154f5a98bfeSMaxime Ripard     * reset/sun8i-a83t-ccu.h headers, but we can't include them since
155f5a98bfeSMaxime Ripard     * it would trigger a bunch of warnings for redefinitions of
156f5a98bfeSMaxime Ripard     * symbols with the other example.
157f5a98bfeSMaxime Ripard     */
158f5a98bfeSMaxime Ripard    #define CLK_BUS_HDMI	39
159f5a98bfeSMaxime Ripard    #define CLK_HDMI		93
160f5a98bfeSMaxime Ripard    #define CLK_HDMI_SLOW	94
161f5a98bfeSMaxime Ripard    #define RST_BUS_HDMI1	26
162f5a98bfeSMaxime Ripard
163f5a98bfeSMaxime Ripard    hdmi@1ee0000 {
164f5a98bfeSMaxime Ripard        compatible = "allwinner,sun8i-a83t-dw-hdmi";
165f5a98bfeSMaxime Ripard        reg = <0x01ee0000 0x10000>;
166f5a98bfeSMaxime Ripard        reg-io-width = <1>;
167f5a98bfeSMaxime Ripard        interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
168f5a98bfeSMaxime Ripard        clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>,
169f5a98bfeSMaxime Ripard                 <&ccu CLK_HDMI>;
170f5a98bfeSMaxime Ripard        clock-names = "iahb", "isfr", "tmds";
171f5a98bfeSMaxime Ripard        resets = <&ccu RST_BUS_HDMI1>;
172f5a98bfeSMaxime Ripard        reset-names = "ctrl";
173f5a98bfeSMaxime Ripard        phys = <&hdmi_phy>;
174f5a98bfeSMaxime Ripard        phy-names = "phy";
175f5a98bfeSMaxime Ripard        pinctrl-names = "default";
176f5a98bfeSMaxime Ripard        pinctrl-0 = <&hdmi_pins>;
177f5a98bfeSMaxime Ripard
178f5a98bfeSMaxime Ripard        ports {
179f5a98bfeSMaxime Ripard            #address-cells = <1>;
180f5a98bfeSMaxime Ripard            #size-cells = <0>;
181f5a98bfeSMaxime Ripard
182f5a98bfeSMaxime Ripard            port@0 {
183f5a98bfeSMaxime Ripard                reg = <0>;
184f5a98bfeSMaxime Ripard
185f5a98bfeSMaxime Ripard                endpoint {
186f5a98bfeSMaxime Ripard                    remote-endpoint = <&tcon1_out_hdmi>;
187f5a98bfeSMaxime Ripard                };
188f5a98bfeSMaxime Ripard            };
189f5a98bfeSMaxime Ripard
190f5a98bfeSMaxime Ripard            port@1 {
191f5a98bfeSMaxime Ripard                reg = <1>;
192f5a98bfeSMaxime Ripard            };
193f5a98bfeSMaxime Ripard        };
194f5a98bfeSMaxime Ripard    };
195f5a98bfeSMaxime Ripard
196f5a98bfeSMaxime Ripard    /* Cleanup after ourselves */
197f5a98bfeSMaxime Ripard    #undef CLK_BUS_HDMI
198f5a98bfeSMaxime Ripard    #undef CLK_HDMI
199f5a98bfeSMaxime Ripard    #undef CLK_HDMI_SLOW
200f5a98bfeSMaxime Ripard
201f5a98bfeSMaxime Ripard  - |
202f5a98bfeSMaxime Ripard    #include <dt-bindings/interrupt-controller/arm-gic.h>
203f5a98bfeSMaxime Ripard
204f5a98bfeSMaxime Ripard    /*
205f5a98bfeSMaxime Ripard     * This comes from the clock/sun50i-h6-ccu.h and
206f5a98bfeSMaxime Ripard     * reset/sun50i-h6-ccu.h headers, but we can't include them since
207f5a98bfeSMaxime Ripard     * it would trigger a bunch of warnings for redefinitions of
208f5a98bfeSMaxime Ripard     * symbols with the other example.
209f5a98bfeSMaxime Ripard     */
210f5a98bfeSMaxime Ripard    #define CLK_BUS_HDMI	126
211f5a98bfeSMaxime Ripard    #define CLK_BUS_HDCP	137
212f5a98bfeSMaxime Ripard    #define CLK_HDMI		123
213f5a98bfeSMaxime Ripard    #define CLK_HDMI_SLOW	124
214f5a98bfeSMaxime Ripard    #define CLK_HDMI_CEC	125
215f5a98bfeSMaxime Ripard    #define CLK_HDCP		136
216f5a98bfeSMaxime Ripard    #define RST_BUS_HDMI_SUB	57
217f5a98bfeSMaxime Ripard    #define RST_BUS_HDCP	62
218f5a98bfeSMaxime Ripard
219f5a98bfeSMaxime Ripard    hdmi@6000000 {
220f5a98bfeSMaxime Ripard        compatible = "allwinner,sun50i-h6-dw-hdmi";
221f5a98bfeSMaxime Ripard        reg = <0x06000000 0x10000>;
222f5a98bfeSMaxime Ripard        reg-io-width = <1>;
223f5a98bfeSMaxime Ripard        interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
224f5a98bfeSMaxime Ripard        clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>,
225f5a98bfeSMaxime Ripard                 <&ccu CLK_HDMI>, <&ccu CLK_HDMI_CEC>,
226f5a98bfeSMaxime Ripard                 <&ccu CLK_HDCP>, <&ccu CLK_BUS_HDCP>;
227f5a98bfeSMaxime Ripard        clock-names = "iahb", "isfr", "tmds", "cec", "hdcp",
228f5a98bfeSMaxime Ripard                      "hdcp-bus";
229f5a98bfeSMaxime Ripard        resets = <&ccu RST_BUS_HDMI_SUB>, <&ccu RST_BUS_HDCP>;
230f5a98bfeSMaxime Ripard        reset-names = "ctrl", "hdcp";
231f5a98bfeSMaxime Ripard        phys = <&hdmi_phy>;
232f5a98bfeSMaxime Ripard        phy-names = "phy";
233f5a98bfeSMaxime Ripard        pinctrl-names = "default";
234f5a98bfeSMaxime Ripard        pinctrl-0 = <&hdmi_pins>;
235f5a98bfeSMaxime Ripard
236f5a98bfeSMaxime Ripard        ports {
237f5a98bfeSMaxime Ripard            #address-cells = <1>;
238f5a98bfeSMaxime Ripard            #size-cells = <0>;
239f5a98bfeSMaxime Ripard
240f5a98bfeSMaxime Ripard            port@0 {
241f5a98bfeSMaxime Ripard                reg = <0>;
242f5a98bfeSMaxime Ripard
243f5a98bfeSMaxime Ripard                endpoint {
244f5a98bfeSMaxime Ripard                    remote-endpoint = <&tcon_top_hdmi_out_hdmi>;
245f5a98bfeSMaxime Ripard                };
246f5a98bfeSMaxime Ripard            };
247f5a98bfeSMaxime Ripard
248f5a98bfeSMaxime Ripard            port@1 {
249f5a98bfeSMaxime Ripard                reg = <1>;
250f5a98bfeSMaxime Ripard            };
251f5a98bfeSMaxime Ripard        };
252f5a98bfeSMaxime Ripard    };
253f5a98bfeSMaxime Ripard
254f5a98bfeSMaxime Ripard...
255