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