Merge tag 'nfs-for-5.2-1' of git://git.linux-nfs.org/projects/anna/linux-nfs
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / display / amlogic,meson-dw-hdmi.txt
1 Amlogic specific extensions to the Synopsys Designware HDMI Controller
2 ======================================================================
3
4 The Amlogic Meson Synopsys Designware Integration is composed of :
5 - A Synopsys DesignWare HDMI Controller IP
6 - A TOP control block controlling the Clocks and PHY
7 - A custom HDMI PHY in order to convert video to TMDS signal
8  ___________________________________
9 |            HDMI TOP               |<= HPD
10 |___________________________________|
11 |                  |                |
12 |  Synopsys HDMI   |   HDMI PHY     |=> TMDS
13 |    Controller    |________________|
14 |___________________________________|<=> DDC
15
16 The HDMI TOP block only supports HPD sensing.
17 The Synopsys HDMI Controller interrupt is routed through the
18 TOP Block interrupt.
19 Communication to the TOP Block and the Synopsys HDMI Controller is done
20 via a pair of dedicated addr+read/write registers.
21 The HDMI PHY is configured by registers in the HHI register block.
22
23 Pixel data arrives in 4:4:4 format from the VENC block and the VPU HDMI mux
24 selects either the ENCI encoder for the 576i or 480i formats or the ENCP
25 encoder for all the other formats including interlaced HD formats.
26
27 The VENC uses a DVI encoder on top of the ENCI or ENCP encoders to generate
28 DVI timings for the HDMI controller.
29
30 Amlogic Meson GXBB, GXL and GXM SoCs families embeds the Synopsys DesignWare
31 HDMI TX IP version 2.01a with HDCP and I2C & S/PDIF
32 audio source interfaces.
33
34 Required properties:
35 - compatible: value should be different for each SoC family as :
36         - GXBB (S905) : "amlogic,meson-gxbb-dw-hdmi"
37         - GXL (S905X, S905D) : "amlogic,meson-gxl-dw-hdmi"
38         - GXM (S912) : "amlogic,meson-gxm-dw-hdmi"
39         followed by the common "amlogic,meson-gx-dw-hdmi"
40         - G12A (S905X2, S905Y2, S905D2) : "amlogic,meson-g12a-dw-hdmi"
41 - reg: Physical base address and length of the controller's registers.
42 - interrupts: The HDMI interrupt number
43 - clocks, clock-names : must have the phandles to the HDMI iahb and isfr clocks,
44   and the Amlogic Meson venci clocks as described in
45   Documentation/devicetree/bindings/clock/clock-bindings.txt,
46   the clocks are soc specific, the clock-names should be "iahb", "isfr", "venci"
47 - resets, resets-names: must have the phandles to the HDMI apb, glue and phy
48   resets as described in :
49   Documentation/devicetree/bindings/reset/reset.txt,
50   the reset-names should be "hdmitx_apb", "hdmitx", "hdmitx_phy"
51
52 Optional properties:
53 - hdmi-supply: Optional phandle to an external 5V regulator to power the HDMI
54   logic, as described in the file ../regulator/regulator.txt
55
56 Required nodes:
57
58 The connections to the HDMI ports are modeled using the OF graph
59 bindings specified in Documentation/devicetree/bindings/graph.txt.
60
61 The following table lists for each supported model the port number
62 corresponding to each HDMI output and input.
63
64                 Port 0          Port 1
65 -----------------------------------------
66  S905 (GXBB)    VENC Input      TMDS Output
67  S905X (GXL)    VENC Input      TMDS Output
68  S905D (GXL)    VENC Input      TMDS Output
69  S912 (GXM)     VENC Input      TMDS Output
70  S905X2 (G12A)  VENC Input      TMDS Output
71  S905Y2 (G12A)  VENC Input      TMDS Output
72  S905D2 (G12A)  VENC Input      TMDS Output
73
74 Example:
75
76 hdmi-connector {
77         compatible = "hdmi-connector";
78         type = "a";
79
80         port {
81                 hdmi_connector_in: endpoint {
82                         remote-endpoint = <&hdmi_tx_tmds_out>;
83                 };
84         };
85 };
86
87 hdmi_tx: hdmi-tx@c883a000 {
88         compatible = "amlogic,meson-gxbb-dw-hdmi", "amlogic,meson-gx-dw-hdmi";
89         reg = <0x0 0xc883a000 0x0 0x1c>;
90         interrupts = <GIC_SPI 57 IRQ_TYPE_EDGE_RISING>;
91         resets = <&reset RESET_HDMITX_CAPB3>,
92                  <&reset RESET_HDMI_SYSTEM_RESET>,
93                  <&reset RESET_HDMI_TX>;
94         reset-names = "hdmitx_apb", "hdmitx", "hdmitx_phy";
95         clocks = <&clkc CLKID_HDMI_PCLK>,
96                  <&clkc CLKID_CLK81>,
97                  <&clkc CLKID_GCLK_VENCI_INT0>;
98         clock-names = "isfr", "iahb", "venci";
99         #address-cells = <1>;
100         #size-cells = <0>;
101
102         /* VPU VENC Input */
103         hdmi_tx_venc_port: port@0 {
104                 reg = <0>;
105
106                 hdmi_tx_in: endpoint {
107                         remote-endpoint = <&hdmi_tx_out>;
108                 };
109         };
110
111         /* TMDS Output */
112         hdmi_tx_tmds_port: port@1 {
113                 reg = <1>;
114
115                 hdmi_tx_tmds_out: endpoint {
116                         remote-endpoint = <&hdmi_connector_in>;
117                 };
118         };
119 };