18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci# Copyright 2019 BayLibre, SAS
38c2ecf20Sopenharmony_ci%YAML 1.2
48c2ecf20Sopenharmony_ci---
58c2ecf20Sopenharmony_ci$id: "http://devicetree.org/schemas/display/amlogic,meson-dw-hdmi.yaml#"
68c2ecf20Sopenharmony_ci$schema: "http://devicetree.org/meta-schemas/core.yaml#"
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_cititle: Amlogic specific extensions to the Synopsys Designware HDMI Controller
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_cimaintainers:
118c2ecf20Sopenharmony_ci  - Neil Armstrong <narmstrong@baylibre.com>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ciallOf:
148c2ecf20Sopenharmony_ci  - $ref: /schemas/sound/name-prefix.yaml#
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_cidescription: |
178c2ecf20Sopenharmony_ci  The Amlogic Meson Synopsys Designware Integration is composed of
188c2ecf20Sopenharmony_ci  - A Synopsys DesignWare HDMI Controller IP
198c2ecf20Sopenharmony_ci  - A TOP control block controlling the Clocks and PHY
208c2ecf20Sopenharmony_ci  - A custom HDMI PHY in order to convert video to TMDS signal
218c2ecf20Sopenharmony_ci   ___________________________________
228c2ecf20Sopenharmony_ci  |            HDMI TOP               |<= HPD
238c2ecf20Sopenharmony_ci  |___________________________________|
248c2ecf20Sopenharmony_ci  |                  |                |
258c2ecf20Sopenharmony_ci  |  Synopsys HDMI   |   HDMI PHY     |=> TMDS
268c2ecf20Sopenharmony_ci  |    Controller    |________________|
278c2ecf20Sopenharmony_ci  |___________________________________|<=> DDC
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci  The HDMI TOP block only supports HPD sensing.
308c2ecf20Sopenharmony_ci  The Synopsys HDMI Controller interrupt is routed through the
318c2ecf20Sopenharmony_ci  TOP Block interrupt.
328c2ecf20Sopenharmony_ci  Communication to the TOP Block and the Synopsys HDMI Controller is done
338c2ecf20Sopenharmony_ci  via a pair of dedicated addr+read/write registers.
348c2ecf20Sopenharmony_ci  The HDMI PHY is configured by registers in the HHI register block.
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci  Pixel data arrives in "4:4:4" format from the VENC block and the VPU HDMI mux
378c2ecf20Sopenharmony_ci  selects either the ENCI encoder for the 576i or 480i formats or the ENCP
388c2ecf20Sopenharmony_ci  encoder for all the other formats including interlaced HD formats.
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci  The VENC uses a DVI encoder on top of the ENCI or ENCP encoders to generate
418c2ecf20Sopenharmony_ci  DVI timings for the HDMI controller.
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci  Amlogic Meson GXBB, GXL and GXM SoCs families embeds the Synopsys DesignWare
448c2ecf20Sopenharmony_ci  HDMI TX IP version 2.01a with HDCP and I2C & S/PDIF
458c2ecf20Sopenharmony_ci  audio source interfaces.
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ciproperties:
488c2ecf20Sopenharmony_ci  compatible:
498c2ecf20Sopenharmony_ci    oneOf:
508c2ecf20Sopenharmony_ci      - items:
518c2ecf20Sopenharmony_ci          - enum:
528c2ecf20Sopenharmony_ci              - amlogic,meson-gxbb-dw-hdmi # GXBB (S905)
538c2ecf20Sopenharmony_ci              - amlogic,meson-gxl-dw-hdmi # GXL (S905X, S905D)
548c2ecf20Sopenharmony_ci              - amlogic,meson-gxm-dw-hdmi # GXM (S912)
558c2ecf20Sopenharmony_ci          - const: amlogic,meson-gx-dw-hdmi
568c2ecf20Sopenharmony_ci      - enum:
578c2ecf20Sopenharmony_ci          - amlogic,meson-g12a-dw-hdmi # G12A (S905X2, S905Y2, S905D2)
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci  reg:
608c2ecf20Sopenharmony_ci    maxItems: 1
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci  interrupts:
638c2ecf20Sopenharmony_ci    maxItems: 1
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci  clocks:
668c2ecf20Sopenharmony_ci    minItems: 3
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci  clock-names:
698c2ecf20Sopenharmony_ci    items:
708c2ecf20Sopenharmony_ci      - const: isfr
718c2ecf20Sopenharmony_ci      - const: iahb
728c2ecf20Sopenharmony_ci      - const: venci
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci  resets:
758c2ecf20Sopenharmony_ci    minItems: 3
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ci  reset-names:
788c2ecf20Sopenharmony_ci    items:
798c2ecf20Sopenharmony_ci      - const: hdmitx_apb
808c2ecf20Sopenharmony_ci      - const: hdmitx
818c2ecf20Sopenharmony_ci      - const: hdmitx_phy
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_ci  hdmi-supply:
848c2ecf20Sopenharmony_ci    description: phandle to an external 5V regulator to power the HDMI logic
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ci  port@0:
878c2ecf20Sopenharmony_ci    type: object
888c2ecf20Sopenharmony_ci    description:
898c2ecf20Sopenharmony_ci      A port node pointing to the VENC Input port node.
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci  port@1:
928c2ecf20Sopenharmony_ci    type: object
938c2ecf20Sopenharmony_ci    description:
948c2ecf20Sopenharmony_ci      A port node pointing to the TMDS Output port node.
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_ci  "#address-cells":
978c2ecf20Sopenharmony_ci    const: 1
988c2ecf20Sopenharmony_ci
998c2ecf20Sopenharmony_ci  "#size-cells":
1008c2ecf20Sopenharmony_ci    const: 0
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_ci  "#sound-dai-cells":
1038c2ecf20Sopenharmony_ci    const: 0
1048c2ecf20Sopenharmony_ci
1058c2ecf20Sopenharmony_ci  sound-name-prefix: true
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_cirequired:
1088c2ecf20Sopenharmony_ci  - compatible
1098c2ecf20Sopenharmony_ci  - reg
1108c2ecf20Sopenharmony_ci  - interrupts
1118c2ecf20Sopenharmony_ci  - clocks
1128c2ecf20Sopenharmony_ci  - clock-names
1138c2ecf20Sopenharmony_ci  - resets
1148c2ecf20Sopenharmony_ci  - reset-names
1158c2ecf20Sopenharmony_ci  - port@0
1168c2ecf20Sopenharmony_ci  - port@1
1178c2ecf20Sopenharmony_ci  - "#address-cells"
1188c2ecf20Sopenharmony_ci  - "#size-cells"
1198c2ecf20Sopenharmony_ci
1208c2ecf20Sopenharmony_ciadditionalProperties: false
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_ciexamples:
1238c2ecf20Sopenharmony_ci  - |
1248c2ecf20Sopenharmony_ci    hdmi_tx: hdmi-tx@c883a000 {
1258c2ecf20Sopenharmony_ci        compatible = "amlogic,meson-gxbb-dw-hdmi", "amlogic,meson-gx-dw-hdmi";
1268c2ecf20Sopenharmony_ci        reg = <0xc883a000 0x1c>;
1278c2ecf20Sopenharmony_ci        interrupts = <57>;
1288c2ecf20Sopenharmony_ci        resets = <&reset_apb>, <&reset_hdmitx>, <&reset_hdmitx_phy>;
1298c2ecf20Sopenharmony_ci        reset-names = "hdmitx_apb", "hdmitx", "hdmitx_phy";
1308c2ecf20Sopenharmony_ci        clocks = <&clk_isfr>, <&clk_iahb>, <&clk_venci>;
1318c2ecf20Sopenharmony_ci        clock-names = "isfr", "iahb", "venci";
1328c2ecf20Sopenharmony_ci        #address-cells = <1>;
1338c2ecf20Sopenharmony_ci        #size-cells = <0>;
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci        /* VPU VENC Input */
1368c2ecf20Sopenharmony_ci        hdmi_tx_venc_port: port@0 {
1378c2ecf20Sopenharmony_ci            reg = <0>;
1388c2ecf20Sopenharmony_ci
1398c2ecf20Sopenharmony_ci            hdmi_tx_in: endpoint {
1408c2ecf20Sopenharmony_ci                remote-endpoint = <&hdmi_tx_out>;
1418c2ecf20Sopenharmony_ci            };
1428c2ecf20Sopenharmony_ci        };
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci        /* TMDS Output */
1458c2ecf20Sopenharmony_ci        hdmi_tx_tmds_port: port@1 {
1468c2ecf20Sopenharmony_ci             reg = <1>;
1478c2ecf20Sopenharmony_ci
1488c2ecf20Sopenharmony_ci             hdmi_tx_tmds_out: endpoint {
1498c2ecf20Sopenharmony_ci                 remote-endpoint = <&hdmi_connector_in>;
1508c2ecf20Sopenharmony_ci             };
1518c2ecf20Sopenharmony_ci        };
1528c2ecf20Sopenharmony_ci    };
1538c2ecf20Sopenharmony_ci
154