[PATCH RFC/DO NOT MERGE 05/12] dt-bindings: display/msm: hdmi: Add Eliza HDMI TX

From: Krzysztof Kozlowski

Date: Fri Aug 28 2026 - 10:08:19 EST


Qualcomm Eliza SoC comes with HDMI IP block, built on top of one
previously present in MSM8998. There are just a few differences in
hardware, mostly about handling clock reparenting, but more notable the
old binding looked incomplete, thus devices could not be considered
compatible. The QFPROM MMIO space is not really part of HDMI, thus do
not include it in the new device support.

Document also VDD IO supply, which is providing power to external 5V
elements, like HPD pull ups. This is not a suuply for internal HDMI
elements, thus it is valid for older variants as well.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxxxxxxxx>
---
.../devicetree/bindings/display/msm/hdmi.yaml | 67 ++++++++++++++-
.../bindings/display/msm/qcom,eliza-mdss.yaml | 96 +++++++++++++++++++++-
2 files changed, 158 insertions(+), 5 deletions(-)

diff --git a/Documentation/devicetree/bindings/display/msm/hdmi.yaml b/Documentation/devicetree/bindings/display/msm/hdmi.yaml
index 02d27ccad024..6adaa095b747 100644
--- a/Documentation/devicetree/bindings/display/msm/hdmi.yaml
+++ b/Documentation/devicetree/bindings/display/msm/hdmi.yaml
@@ -20,6 +20,7 @@ properties:
- qcom,hdmi-tx-8994
- qcom,hdmi-tx-8996
- qcom,hdmi-tx-8998
+ - qcom,eliza-hdmi-tx

clocks:
minItems: 1
@@ -35,10 +36,7 @@ properties:

reg-names:
minItems: 1
- items:
- - const: core_physical
- - const: qfprom_physical
- - const: hdcp_physical
+ maxItems: 3

interrupts:
maxItems: 1
@@ -62,10 +60,21 @@ properties:
core-vcc-supply:
description: phandle to VCC supply regulator

+ vddio-supply:
+ description: IO (e.g. HPD) supply
+
hpd-gpios:
maxItems: 1
description: hpd pin

+ operating-points-v2: true
+
+ opp-table:
+ type: object
+
+ power-domains:
+ maxItems: 1
+
'#sound-dai-cells':
const: 1

@@ -113,6 +122,12 @@ allOf:
- const: core
- const: master_iface
- const: slave_iface
+ reg-names:
+ minItems: 1
+ items:
+ - const: core_physical
+ - const: qfprom_physical
+ - const: hdcp_physical
core-vcc-supply: false

- if:
@@ -136,6 +151,12 @@ allOf:
- const: core
- const: alt_iface
- const: extp
+ reg-names:
+ minItems: 1
+ items:
+ - const: core_physical
+ - const: qfprom_physical
+ - const: hdcp_physical
hdmi-mux-supply: false

- if:
@@ -159,6 +180,44 @@ allOf:
- const: bus
- const: mnoc
- const: iface_mmss
+ reg-names:
+ minItems: 1
+ items:
+ - const: core_physical
+ - const: qfprom_physical
+ - const: hdcp_physical
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - qcom,qcom,eliza-hdmi-tx
+ then:
+ properties:
+ clocks:
+ minItems: 6
+ maxItems: 6
+ clock-names:
+ items:
+ - const: iface
+ - const: core
+ - const: extp
+ - const: phy_iface
+ - const: pll
+ - const: pixel_src
+ reg:
+ minItems: 2
+ maxItems: 2
+ reg-names:
+ items:
+ - const: core_physical
+ - const: hdcp_physical
+ hdmi-mux-supply: false
+
+ required:
+ - core-vcc-supply
+ - core-vdda-supply

additionalProperties: false

diff --git a/Documentation/devicetree/bindings/display/msm/qcom,eliza-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,eliza-mdss.yaml
index bd4ba91a171f..6f50f7106c8f 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,eliza-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,eliza-mdss.yaml
@@ -63,13 +63,22 @@ patternProperties:
contains:
const: qcom,eliza-dsi-ctrl

+ "^hdmi@[0-9a-f]+$":
+ type: object
+ additionalProperties: true
+ properties:
+ compatible:
+ const: qcom,eliza-hdmi-tx
+
"^phy@[0-9a-f]+$":
type: object
additionalProperties: true
properties:
compatible:
contains:
- const: qcom,eliza-dsi-phy-4nm
+ enum:
+ - qcom,eliza-dsi-phy-4nm
+ - qcom,eliza-hdmi-phy

required:
- compatible
@@ -79,6 +88,7 @@ unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
+ #include <dt-bindings/clock/qcom,eliza-tcsr.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,icc.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
@@ -405,6 +415,90 @@ examples:
vdds-supply = <&vreg_l2b>;
};

+ hdmi@aea0000 {
+ compatible = "qcom,eliza-hdmi-tx";
+ reg = <0x0aea0000 0x1000>,
+ <0x0aee0000 0x1000>;
+ reg-names = "core_physical",
+ "hdcp_physical";
+
+ interrupts-extended = <&mdss 8>;
+
+ clocks = <&disp_cc_mdss_hdmi_ahbm_clk>,
+ <&disp_cc_mdss_hdmi_app_clk>,
+ <&disp_cc_mdss_hdmi_pclk_clk>,
+ <&disp_cc_mdss_hdmi_intf_clk>,
+ <&mdss_hdmi_phy>,
+ <&disp_cc_mdss_hdmi_pclk_clk_src>;
+ clock-names = "iface",
+ "core",
+ "extp",
+ "phy_iface",
+ "pll",
+ "pixel_src";
+
+ operating-points-v2 = <&mdss_hdmi_opp_table>;
+
+ phys = <&mdss_hdmi_phy>;
+ power-domains = <&rpmhpd RPMHPD_CX>;
+ #sound-dai-cells = <1>;
+
+ core-vcc-supply = <&vreg_l2b>;
+ core-vdda-supply = <&vreg_l4b>;
+ vddio-supply = <&hdmi_5p0_reg>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ mdss_hdmi_in: endpoint {
+ remote-endpoint = <&dpu_intf4_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ mdss_hdmi_out: endpoint {
+ remote-endpoint = <&hdmi_0_connector_in>;
+ };
+ };
+ };
+
+ mdss_hdmi_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ opp-150000000 {
+ opp-hz = /bits/ 64 <150000000>;
+ required-opps = <&rpmhpd_opp_low_svs_d1>;
+ };
+
+ opp-300000000 {
+ opp-hz = /bits/ 64 <300000000>;
+ required-opps = <&rpmhpd_opp_svs>;
+ };
+ };
+ };
+
+ mdss_hdmi_phy: phy@aea1000 {
+ compatible = "qcom,eliza-hdmi-phy";
+ reg = <0x0aea1000 0x1000>;
+
+ clocks = <&disp_cc_mdss_ahb_clk>,
+ <&tcsr TCSR_HDMI_CLKREF_EN>,
+ <&bi_tcxo_div2>;
+ clock-names = "iface",
+ "ref",
+ "xo";
+
+ #clock-cells = <0>;
+ #phy-cells = <0>;
+ power-domains = <&rpmhpd RPMHPD_CX>;
+ };
+
displayport-controller@af54000 {
compatible = "qcom,eliza-dp", "qcom,sm8650-dp";
reg = <0x0af54000 0x200>,

--
2.53.0