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