xref: /freebsd/sys/contrib/device-tree/Bindings/display/amlogic,meson-dw-hdmi.yaml (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*c66ec88fSEmmanuel Vadot# Copyright 2019 BayLibre, SAS
3*c66ec88fSEmmanuel Vadot%YAML 1.2
4*c66ec88fSEmmanuel Vadot---
5*c66ec88fSEmmanuel Vadot$id: "http://devicetree.org/schemas/display/amlogic,meson-dw-hdmi.yaml#"
6*c66ec88fSEmmanuel Vadot$schema: "http://devicetree.org/meta-schemas/core.yaml#"
7*c66ec88fSEmmanuel Vadot
8*c66ec88fSEmmanuel Vadottitle: Amlogic specific extensions to the Synopsys Designware HDMI Controller
9*c66ec88fSEmmanuel Vadot
10*c66ec88fSEmmanuel Vadotmaintainers:
11*c66ec88fSEmmanuel Vadot  - Neil Armstrong <narmstrong@baylibre.com>
12*c66ec88fSEmmanuel Vadot
13*c66ec88fSEmmanuel Vadotdescription: |
14*c66ec88fSEmmanuel Vadot  The Amlogic Meson Synopsys Designware Integration is composed of
15*c66ec88fSEmmanuel Vadot  - A Synopsys DesignWare HDMI Controller IP
16*c66ec88fSEmmanuel Vadot  - A TOP control block controlling the Clocks and PHY
17*c66ec88fSEmmanuel Vadot  - A custom HDMI PHY in order to convert video to TMDS signal
18*c66ec88fSEmmanuel Vadot   ___________________________________
19*c66ec88fSEmmanuel Vadot  |            HDMI TOP               |<= HPD
20*c66ec88fSEmmanuel Vadot  |___________________________________|
21*c66ec88fSEmmanuel Vadot  |                  |                |
22*c66ec88fSEmmanuel Vadot  |  Synopsys HDMI   |   HDMI PHY     |=> TMDS
23*c66ec88fSEmmanuel Vadot  |    Controller    |________________|
24*c66ec88fSEmmanuel Vadot  |___________________________________|<=> DDC
25*c66ec88fSEmmanuel Vadot
26*c66ec88fSEmmanuel Vadot  The HDMI TOP block only supports HPD sensing.
27*c66ec88fSEmmanuel Vadot  The Synopsys HDMI Controller interrupt is routed through the
28*c66ec88fSEmmanuel Vadot  TOP Block interrupt.
29*c66ec88fSEmmanuel Vadot  Communication to the TOP Block and the Synopsys HDMI Controller is done
30*c66ec88fSEmmanuel Vadot  via a pair of dedicated addr+read/write registers.
31*c66ec88fSEmmanuel Vadot  The HDMI PHY is configured by registers in the HHI register block.
32*c66ec88fSEmmanuel Vadot
33*c66ec88fSEmmanuel Vadot  Pixel data arrives in "4:4:4" format from the VENC block and the VPU HDMI mux
34*c66ec88fSEmmanuel Vadot  selects either the ENCI encoder for the 576i or 480i formats or the ENCP
35*c66ec88fSEmmanuel Vadot  encoder for all the other formats including interlaced HD formats.
36*c66ec88fSEmmanuel Vadot
37*c66ec88fSEmmanuel Vadot  The VENC uses a DVI encoder on top of the ENCI or ENCP encoders to generate
38*c66ec88fSEmmanuel Vadot  DVI timings for the HDMI controller.
39*c66ec88fSEmmanuel Vadot
40*c66ec88fSEmmanuel Vadot  Amlogic Meson GXBB, GXL and GXM SoCs families embeds the Synopsys DesignWare
41*c66ec88fSEmmanuel Vadot  HDMI TX IP version 2.01a with HDCP and I2C & S/PDIF
42*c66ec88fSEmmanuel Vadot  audio source interfaces.
43*c66ec88fSEmmanuel Vadot
44*c66ec88fSEmmanuel Vadotproperties:
45*c66ec88fSEmmanuel Vadot  compatible:
46*c66ec88fSEmmanuel Vadot    oneOf:
47*c66ec88fSEmmanuel Vadot      - items:
48*c66ec88fSEmmanuel Vadot          - enum:
49*c66ec88fSEmmanuel Vadot              - amlogic,meson-gxbb-dw-hdmi # GXBB (S905)
50*c66ec88fSEmmanuel Vadot              - amlogic,meson-gxl-dw-hdmi # GXL (S905X, S905D)
51*c66ec88fSEmmanuel Vadot              - amlogic,meson-gxm-dw-hdmi # GXM (S912)
52*c66ec88fSEmmanuel Vadot          - const: amlogic,meson-gx-dw-hdmi
53*c66ec88fSEmmanuel Vadot      - enum:
54*c66ec88fSEmmanuel Vadot          - amlogic,meson-g12a-dw-hdmi # G12A (S905X2, S905Y2, S905D2)
55*c66ec88fSEmmanuel Vadot
56*c66ec88fSEmmanuel Vadot  reg:
57*c66ec88fSEmmanuel Vadot    maxItems: 1
58*c66ec88fSEmmanuel Vadot
59*c66ec88fSEmmanuel Vadot  interrupts:
60*c66ec88fSEmmanuel Vadot    maxItems: 1
61*c66ec88fSEmmanuel Vadot
62*c66ec88fSEmmanuel Vadot  clocks:
63*c66ec88fSEmmanuel Vadot    minItems: 3
64*c66ec88fSEmmanuel Vadot
65*c66ec88fSEmmanuel Vadot  clock-names:
66*c66ec88fSEmmanuel Vadot    items:
67*c66ec88fSEmmanuel Vadot      - const: isfr
68*c66ec88fSEmmanuel Vadot      - const: iahb
69*c66ec88fSEmmanuel Vadot      - const: venci
70*c66ec88fSEmmanuel Vadot
71*c66ec88fSEmmanuel Vadot  resets:
72*c66ec88fSEmmanuel Vadot    minItems: 3
73*c66ec88fSEmmanuel Vadot
74*c66ec88fSEmmanuel Vadot  reset-names:
75*c66ec88fSEmmanuel Vadot    items:
76*c66ec88fSEmmanuel Vadot      - const: hdmitx_apb
77*c66ec88fSEmmanuel Vadot      - const: hdmitx
78*c66ec88fSEmmanuel Vadot      - const: hdmitx_phy
79*c66ec88fSEmmanuel Vadot
80*c66ec88fSEmmanuel Vadot  hdmi-supply:
81*c66ec88fSEmmanuel Vadot    description: phandle to an external 5V regulator to power the HDMI logic
82*c66ec88fSEmmanuel Vadot
83*c66ec88fSEmmanuel Vadot  port@0:
84*c66ec88fSEmmanuel Vadot    type: object
85*c66ec88fSEmmanuel Vadot    description:
86*c66ec88fSEmmanuel Vadot      A port node pointing to the VENC Input port node.
87*c66ec88fSEmmanuel Vadot
88*c66ec88fSEmmanuel Vadot  port@1:
89*c66ec88fSEmmanuel Vadot    type: object
90*c66ec88fSEmmanuel Vadot    description:
91*c66ec88fSEmmanuel Vadot      A port node pointing to the TMDS Output port node.
92*c66ec88fSEmmanuel Vadot
93*c66ec88fSEmmanuel Vadot  "#address-cells":
94*c66ec88fSEmmanuel Vadot    const: 1
95*c66ec88fSEmmanuel Vadot
96*c66ec88fSEmmanuel Vadot  "#size-cells":
97*c66ec88fSEmmanuel Vadot    const: 0
98*c66ec88fSEmmanuel Vadot
99*c66ec88fSEmmanuel Vadot  "#sound-dai-cells":
100*c66ec88fSEmmanuel Vadot    const: 0
101*c66ec88fSEmmanuel Vadot
102*c66ec88fSEmmanuel Vadotrequired:
103*c66ec88fSEmmanuel Vadot  - compatible
104*c66ec88fSEmmanuel Vadot  - reg
105*c66ec88fSEmmanuel Vadot  - interrupts
106*c66ec88fSEmmanuel Vadot  - clocks
107*c66ec88fSEmmanuel Vadot  - clock-names
108*c66ec88fSEmmanuel Vadot  - resets
109*c66ec88fSEmmanuel Vadot  - reset-names
110*c66ec88fSEmmanuel Vadot  - port@0
111*c66ec88fSEmmanuel Vadot  - port@1
112*c66ec88fSEmmanuel Vadot  - "#address-cells"
113*c66ec88fSEmmanuel Vadot  - "#size-cells"
114*c66ec88fSEmmanuel Vadot
115*c66ec88fSEmmanuel VadotadditionalProperties: false
116*c66ec88fSEmmanuel Vadot
117*c66ec88fSEmmanuel Vadotexamples:
118*c66ec88fSEmmanuel Vadot  - |
119*c66ec88fSEmmanuel Vadot    hdmi_tx: hdmi-tx@c883a000 {
120*c66ec88fSEmmanuel Vadot        compatible = "amlogic,meson-gxbb-dw-hdmi", "amlogic,meson-gx-dw-hdmi";
121*c66ec88fSEmmanuel Vadot        reg = <0xc883a000 0x1c>;
122*c66ec88fSEmmanuel Vadot        interrupts = <57>;
123*c66ec88fSEmmanuel Vadot        resets = <&reset_apb>, <&reset_hdmitx>, <&reset_hdmitx_phy>;
124*c66ec88fSEmmanuel Vadot        reset-names = "hdmitx_apb", "hdmitx", "hdmitx_phy";
125*c66ec88fSEmmanuel Vadot        clocks = <&clk_isfr>, <&clk_iahb>, <&clk_venci>;
126*c66ec88fSEmmanuel Vadot        clock-names = "isfr", "iahb", "venci";
127*c66ec88fSEmmanuel Vadot        #address-cells = <1>;
128*c66ec88fSEmmanuel Vadot        #size-cells = <0>;
129*c66ec88fSEmmanuel Vadot
130*c66ec88fSEmmanuel Vadot        /* VPU VENC Input */
131*c66ec88fSEmmanuel Vadot        hdmi_tx_venc_port: port@0 {
132*c66ec88fSEmmanuel Vadot            reg = <0>;
133*c66ec88fSEmmanuel Vadot
134*c66ec88fSEmmanuel Vadot            hdmi_tx_in: endpoint {
135*c66ec88fSEmmanuel Vadot                remote-endpoint = <&hdmi_tx_out>;
136*c66ec88fSEmmanuel Vadot            };
137*c66ec88fSEmmanuel Vadot        };
138*c66ec88fSEmmanuel Vadot
139*c66ec88fSEmmanuel Vadot        /* TMDS Output */
140*c66ec88fSEmmanuel Vadot        hdmi_tx_tmds_port: port@1 {
141*c66ec88fSEmmanuel Vadot             reg = <1>;
142*c66ec88fSEmmanuel Vadot
143*c66ec88fSEmmanuel Vadot             hdmi_tx_tmds_out: endpoint {
144*c66ec88fSEmmanuel Vadot                 remote-endpoint = <&hdmi_connector_in>;
145*c66ec88fSEmmanuel Vadot             };
146*c66ec88fSEmmanuel Vadot        };
147*c66ec88fSEmmanuel Vadot    };
148*c66ec88fSEmmanuel Vadot
149