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