# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/dpu-sdm845.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm Display DPU dt properties for SDM845 target

maintainers:
  - Krishna Manikandan <mkrishn@codeaurora.org>

description: |
  Device tree bindings for MSM Mobile Display Subsystem(MDSS) that encapsulates
  sub-blocks like DPU display controller, DSI and DP interfaces etc. Device tree
  bindings of MDSS and DPU are mentioned for SDM845 target.

properties:
  compatible:
    items:
      - const: qcom,sdm845-mdss

  reg:
    maxItems: 1

  reg-names:
    const: mdss

  power-domains:
    maxItems: 1

  clocks:
    items:
      - description: Display AHB clock from gcc
      - description: Display AXI clock
      - description: Display core clock

  clock-names:
    items:
      - const: iface
      - const: bus
      - const: core

  interrupts:
    maxItems: 1

  interrupt-controller: true

  "#address-cells": true

  "#size-cells": true

  "#interrupt-cells":
    const: 1

  iommus:
    items:
      - description: Phandle to apps_smmu node with SID mask for Hard-Fail port0
      - description: Phandle to apps_smmu node with SID mask for Hard-Fail port1

  ranges: true

patternProperties:
  "^display-controller@[0-9a-f]+$":
    type: object
    description: Node containing the properties of DPU.

    properties:
      compatible:
        items:
          - const: qcom,sdm845-dpu

      reg:
        items:
          - description: Address offset and size for mdp register set
          - description: Address offset and size for vbif register set

      reg-names:
        items:
          - const: mdp
          - const: vbif

      clocks:
        items:
          - description: Display ahb clock
          - description: Display axi clock
          - description: Display core clock
          - description: Display vsync clock

      clock-names:
        items:
          - const: iface
          - const: bus
          - const: core
          - const: vsync

      interrupts:
        maxItems: 1

      power-domains:
        maxItems: 1

      operating-points-v2: true
      ports:
        $ref: /schemas/graph.yaml#/properties/ports
        description: |
          Contains the list of output ports from DPU device. These ports
          connect to interfaces that are external to the DPU hardware,
          such as DSI, DP etc. Each output port contains an endpoint that
          describes how it is connected to an external interface.

        properties:
          port@0:
            $ref: /schemas/graph.yaml#/properties/port
            description: DPU_INTF1 (DSI1)

          port@1:
            $ref: /schemas/graph.yaml#/properties/port
            description: DPU_INTF2 (DSI2)

        required:
          - port@0
          - port@1

    required:
      - compatible
      - reg
      - reg-names
      - clocks
      - interrupts
      - power-domains
      - operating-points-v2
      - ports

required:
  - compatible
  - reg
  - reg-names
  - power-domains
  - clocks
  - interrupts
  - interrupt-controller
  - iommus
  - ranges

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/qcom,dispcc-sdm845.h>
    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/power/qcom-rpmpd.h>

    display-subsystem@ae00000 {
          #address-cells = <1>;
          #size-cells = <1>;
          compatible = "qcom,sdm845-mdss";
          reg = <0x0ae00000 0x1000>;
          reg-names = "mdss";
          power-domains = <&dispcc MDSS_GDSC>;

          clocks = <&gcc GCC_DISP_AHB_CLK>,
                   <&gcc GCC_DISP_AXI_CLK>,
                   <&dispcc DISP_CC_MDSS_MDP_CLK>;
          clock-names = "iface", "bus", "core";

          interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
          interrupt-controller;
          #interrupt-cells = <1>;

          iommus = <&apps_smmu 0x880 0x8>,
                   <&apps_smmu 0xc80 0x8>;
          ranges;

          display-controller@ae01000 {
                    compatible = "qcom,sdm845-dpu";
                    reg = <0x0ae01000 0x8f000>,
                          <0x0aeb0000 0x2008>;
                    reg-names = "mdp", "vbif";

                    clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
                             <&dispcc DISP_CC_MDSS_AXI_CLK>,
                             <&dispcc DISP_CC_MDSS_MDP_CLK>,
                             <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
                    clock-names = "iface", "bus", "core", "vsync";

                    interrupt-parent = <&mdss>;
                    interrupts = <0>;
                    power-domains = <&rpmhpd SDM845_CX>;
                    operating-points-v2 = <&mdp_opp_table>;

                    ports {
                           #address-cells = <1>;
                           #size-cells = <0>;

                           port@0 {
                                   reg = <0>;
                                   dpu_intf1_out: endpoint {
                                                  remote-endpoint = <&dsi0_in>;
                                   };
                           };

                           port@1 {
                                   reg = <1>;
                                   dpu_intf2_out: endpoint {
                                                  remote-endpoint = <&dsi1_in>;
                                   };
                           };
                    };
          };
    };
...
