xref: /freebsd/sys/contrib/device-tree/Bindings/display/msm/dpu-msm8998.yaml (revision c9ccf3a32da427475985b85d7df023ccfb138c27)
1*c9ccf3a3SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
2*c9ccf3a3SEmmanuel Vadot%YAML 1.2
3*c9ccf3a3SEmmanuel Vadot---
4*c9ccf3a3SEmmanuel Vadot$id: http://devicetree.org/schemas/display/msm/dpu-msm8998.yaml#
5*c9ccf3a3SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*c9ccf3a3SEmmanuel Vadot
7*c9ccf3a3SEmmanuel Vadottitle: Qualcomm Display DPU dt properties for MSM8998 target
8*c9ccf3a3SEmmanuel Vadot
9*c9ccf3a3SEmmanuel Vadotmaintainers:
10*c9ccf3a3SEmmanuel Vadot  - AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
11*c9ccf3a3SEmmanuel Vadot
12*c9ccf3a3SEmmanuel Vadotdescription: |
13*c9ccf3a3SEmmanuel Vadot  Device tree bindings for MSM Mobile Display Subsystem(MDSS) that encapsulates
14*c9ccf3a3SEmmanuel Vadot  sub-blocks like DPU display controller, DSI and DP interfaces etc. Device tree
15*c9ccf3a3SEmmanuel Vadot  bindings of MDSS and DPU are mentioned for MSM8998 target.
16*c9ccf3a3SEmmanuel Vadot
17*c9ccf3a3SEmmanuel Vadotproperties:
18*c9ccf3a3SEmmanuel Vadot  compatible:
19*c9ccf3a3SEmmanuel Vadot    items:
20*c9ccf3a3SEmmanuel Vadot      - const: qcom,msm8998-mdss
21*c9ccf3a3SEmmanuel Vadot
22*c9ccf3a3SEmmanuel Vadot  reg:
23*c9ccf3a3SEmmanuel Vadot    maxItems: 1
24*c9ccf3a3SEmmanuel Vadot
25*c9ccf3a3SEmmanuel Vadot  reg-names:
26*c9ccf3a3SEmmanuel Vadot    const: mdss
27*c9ccf3a3SEmmanuel Vadot
28*c9ccf3a3SEmmanuel Vadot  power-domains:
29*c9ccf3a3SEmmanuel Vadot    maxItems: 1
30*c9ccf3a3SEmmanuel Vadot
31*c9ccf3a3SEmmanuel Vadot  clocks:
32*c9ccf3a3SEmmanuel Vadot    items:
33*c9ccf3a3SEmmanuel Vadot      - description: Display AHB clock
34*c9ccf3a3SEmmanuel Vadot      - description: Display AXI clock
35*c9ccf3a3SEmmanuel Vadot      - description: Display core clock
36*c9ccf3a3SEmmanuel Vadot
37*c9ccf3a3SEmmanuel Vadot  clock-names:
38*c9ccf3a3SEmmanuel Vadot    items:
39*c9ccf3a3SEmmanuel Vadot      - const: iface
40*c9ccf3a3SEmmanuel Vadot      - const: bus
41*c9ccf3a3SEmmanuel Vadot      - const: core
42*c9ccf3a3SEmmanuel Vadot
43*c9ccf3a3SEmmanuel Vadot  interrupts:
44*c9ccf3a3SEmmanuel Vadot    maxItems: 1
45*c9ccf3a3SEmmanuel Vadot
46*c9ccf3a3SEmmanuel Vadot  interrupt-controller: true
47*c9ccf3a3SEmmanuel Vadot
48*c9ccf3a3SEmmanuel Vadot  "#address-cells": true
49*c9ccf3a3SEmmanuel Vadot
50*c9ccf3a3SEmmanuel Vadot  "#size-cells": true
51*c9ccf3a3SEmmanuel Vadot
52*c9ccf3a3SEmmanuel Vadot  "#interrupt-cells":
53*c9ccf3a3SEmmanuel Vadot    const: 1
54*c9ccf3a3SEmmanuel Vadot
55*c9ccf3a3SEmmanuel Vadot  iommus:
56*c9ccf3a3SEmmanuel Vadot    items:
57*c9ccf3a3SEmmanuel Vadot      - description: Phandle to apps_smmu node with SID mask for Hard-Fail port0
58*c9ccf3a3SEmmanuel Vadot
59*c9ccf3a3SEmmanuel Vadot  ranges: true
60*c9ccf3a3SEmmanuel Vadot
61*c9ccf3a3SEmmanuel VadotpatternProperties:
62*c9ccf3a3SEmmanuel Vadot  "^display-controller@[0-9a-f]+$":
63*c9ccf3a3SEmmanuel Vadot    type: object
64*c9ccf3a3SEmmanuel Vadot    description: Node containing the properties of DPU.
65*c9ccf3a3SEmmanuel Vadot
66*c9ccf3a3SEmmanuel Vadot    properties:
67*c9ccf3a3SEmmanuel Vadot      compatible:
68*c9ccf3a3SEmmanuel Vadot        items:
69*c9ccf3a3SEmmanuel Vadot          - const: qcom,msm8998-dpu
70*c9ccf3a3SEmmanuel Vadot
71*c9ccf3a3SEmmanuel Vadot      reg:
72*c9ccf3a3SEmmanuel Vadot        items:
73*c9ccf3a3SEmmanuel Vadot          - description: Address offset and size for mdp register set
74*c9ccf3a3SEmmanuel Vadot          - description: Address offset and size for regdma register set
75*c9ccf3a3SEmmanuel Vadot          - description: Address offset and size for vbif register set
76*c9ccf3a3SEmmanuel Vadot          - description: Address offset and size for non-realtime vbif register set
77*c9ccf3a3SEmmanuel Vadot
78*c9ccf3a3SEmmanuel Vadot      reg-names:
79*c9ccf3a3SEmmanuel Vadot        items:
80*c9ccf3a3SEmmanuel Vadot          - const: mdp
81*c9ccf3a3SEmmanuel Vadot          - const: regdma
82*c9ccf3a3SEmmanuel Vadot          - const: vbif
83*c9ccf3a3SEmmanuel Vadot          - const: vbif_nrt
84*c9ccf3a3SEmmanuel Vadot
85*c9ccf3a3SEmmanuel Vadot      clocks:
86*c9ccf3a3SEmmanuel Vadot        items:
87*c9ccf3a3SEmmanuel Vadot          - description: Display ahb clock
88*c9ccf3a3SEmmanuel Vadot          - description: Display axi clock
89*c9ccf3a3SEmmanuel Vadot          - description: Display mem-noc clock
90*c9ccf3a3SEmmanuel Vadot          - description: Display core clock
91*c9ccf3a3SEmmanuel Vadot          - description: Display vsync clock
92*c9ccf3a3SEmmanuel Vadot
93*c9ccf3a3SEmmanuel Vadot      clock-names:
94*c9ccf3a3SEmmanuel Vadot        items:
95*c9ccf3a3SEmmanuel Vadot          - const: iface
96*c9ccf3a3SEmmanuel Vadot          - const: bus
97*c9ccf3a3SEmmanuel Vadot          - const: mnoc
98*c9ccf3a3SEmmanuel Vadot          - const: core
99*c9ccf3a3SEmmanuel Vadot          - const: vsync
100*c9ccf3a3SEmmanuel Vadot
101*c9ccf3a3SEmmanuel Vadot      interrupts:
102*c9ccf3a3SEmmanuel Vadot        maxItems: 1
103*c9ccf3a3SEmmanuel Vadot
104*c9ccf3a3SEmmanuel Vadot      power-domains:
105*c9ccf3a3SEmmanuel Vadot        maxItems: 1
106*c9ccf3a3SEmmanuel Vadot
107*c9ccf3a3SEmmanuel Vadot      operating-points-v2: true
108*c9ccf3a3SEmmanuel Vadot      ports:
109*c9ccf3a3SEmmanuel Vadot        $ref: /schemas/graph.yaml#/properties/ports
110*c9ccf3a3SEmmanuel Vadot        description: |
111*c9ccf3a3SEmmanuel Vadot          Contains the list of output ports from DPU device. These ports
112*c9ccf3a3SEmmanuel Vadot          connect to interfaces that are external to the DPU hardware,
113*c9ccf3a3SEmmanuel Vadot          such as DSI, DP etc. Each output port contains an endpoint that
114*c9ccf3a3SEmmanuel Vadot          describes how it is connected to an external interface.
115*c9ccf3a3SEmmanuel Vadot
116*c9ccf3a3SEmmanuel Vadot        properties:
117*c9ccf3a3SEmmanuel Vadot          port@0:
118*c9ccf3a3SEmmanuel Vadot            $ref: /schemas/graph.yaml#/properties/port
119*c9ccf3a3SEmmanuel Vadot            description: DPU_INTF1 (DSI1)
120*c9ccf3a3SEmmanuel Vadot
121*c9ccf3a3SEmmanuel Vadot          port@1:
122*c9ccf3a3SEmmanuel Vadot            $ref: /schemas/graph.yaml#/properties/port
123*c9ccf3a3SEmmanuel Vadot            description: DPU_INTF2 (DSI2)
124*c9ccf3a3SEmmanuel Vadot
125*c9ccf3a3SEmmanuel Vadot        required:
126*c9ccf3a3SEmmanuel Vadot          - port@0
127*c9ccf3a3SEmmanuel Vadot          - port@1
128*c9ccf3a3SEmmanuel Vadot
129*c9ccf3a3SEmmanuel Vadot    required:
130*c9ccf3a3SEmmanuel Vadot      - compatible
131*c9ccf3a3SEmmanuel Vadot      - reg
132*c9ccf3a3SEmmanuel Vadot      - reg-names
133*c9ccf3a3SEmmanuel Vadot      - clocks
134*c9ccf3a3SEmmanuel Vadot      - interrupts
135*c9ccf3a3SEmmanuel Vadot      - power-domains
136*c9ccf3a3SEmmanuel Vadot      - operating-points-v2
137*c9ccf3a3SEmmanuel Vadot      - ports
138*c9ccf3a3SEmmanuel Vadot
139*c9ccf3a3SEmmanuel Vadotrequired:
140*c9ccf3a3SEmmanuel Vadot  - compatible
141*c9ccf3a3SEmmanuel Vadot  - reg
142*c9ccf3a3SEmmanuel Vadot  - reg-names
143*c9ccf3a3SEmmanuel Vadot  - power-domains
144*c9ccf3a3SEmmanuel Vadot  - clocks
145*c9ccf3a3SEmmanuel Vadot  - interrupts
146*c9ccf3a3SEmmanuel Vadot  - interrupt-controller
147*c9ccf3a3SEmmanuel Vadot  - iommus
148*c9ccf3a3SEmmanuel Vadot  - ranges
149*c9ccf3a3SEmmanuel Vadot
150*c9ccf3a3SEmmanuel VadotadditionalProperties: false
151*c9ccf3a3SEmmanuel Vadot
152*c9ccf3a3SEmmanuel Vadotexamples:
153*c9ccf3a3SEmmanuel Vadot  - |
154*c9ccf3a3SEmmanuel Vadot    #include <dt-bindings/clock/qcom,mmcc-msm8998.h>
155*c9ccf3a3SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
156*c9ccf3a3SEmmanuel Vadot    #include <dt-bindings/power/qcom-rpmpd.h>
157*c9ccf3a3SEmmanuel Vadot
158*c9ccf3a3SEmmanuel Vadot    mdss: display-subsystem@c900000 {
159*c9ccf3a3SEmmanuel Vadot        compatible = "qcom,msm8998-mdss";
160*c9ccf3a3SEmmanuel Vadot        reg = <0x0c900000 0x1000>;
161*c9ccf3a3SEmmanuel Vadot        reg-names = "mdss";
162*c9ccf3a3SEmmanuel Vadot
163*c9ccf3a3SEmmanuel Vadot        clocks = <&mmcc MDSS_AHB_CLK>,
164*c9ccf3a3SEmmanuel Vadot                 <&mmcc MDSS_AXI_CLK>,
165*c9ccf3a3SEmmanuel Vadot                 <&mmcc MDSS_MDP_CLK>;
166*c9ccf3a3SEmmanuel Vadot        clock-names = "iface", "bus", "core";
167*c9ccf3a3SEmmanuel Vadot
168*c9ccf3a3SEmmanuel Vadot        #address-cells = <1>;
169*c9ccf3a3SEmmanuel Vadot        #interrupt-cells = <1>;
170*c9ccf3a3SEmmanuel Vadot        #size-cells = <1>;
171*c9ccf3a3SEmmanuel Vadot
172*c9ccf3a3SEmmanuel Vadot        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
173*c9ccf3a3SEmmanuel Vadot        interrupt-controller;
174*c9ccf3a3SEmmanuel Vadot        iommus = <&mmss_smmu 0>;
175*c9ccf3a3SEmmanuel Vadot
176*c9ccf3a3SEmmanuel Vadot        power-domains = <&mmcc MDSS_GDSC>;
177*c9ccf3a3SEmmanuel Vadot        ranges;
178*c9ccf3a3SEmmanuel Vadot
179*c9ccf3a3SEmmanuel Vadot        display-controller@c901000 {
180*c9ccf3a3SEmmanuel Vadot            compatible = "qcom,msm8998-dpu";
181*c9ccf3a3SEmmanuel Vadot            reg = <0x0c901000 0x8f000>,
182*c9ccf3a3SEmmanuel Vadot                  <0x0c9a8e00 0xf0>,
183*c9ccf3a3SEmmanuel Vadot                  <0x0c9b0000 0x2008>,
184*c9ccf3a3SEmmanuel Vadot                  <0x0c9b8000 0x1040>;
185*c9ccf3a3SEmmanuel Vadot            reg-names = "mdp", "regdma", "vbif", "vbif_nrt";
186*c9ccf3a3SEmmanuel Vadot
187*c9ccf3a3SEmmanuel Vadot            clocks = <&mmcc MDSS_AHB_CLK>,
188*c9ccf3a3SEmmanuel Vadot                     <&mmcc MDSS_AXI_CLK>,
189*c9ccf3a3SEmmanuel Vadot                     <&mmcc MNOC_AHB_CLK>,
190*c9ccf3a3SEmmanuel Vadot                     <&mmcc MDSS_MDP_CLK>,
191*c9ccf3a3SEmmanuel Vadot                     <&mmcc MDSS_VSYNC_CLK>;
192*c9ccf3a3SEmmanuel Vadot            clock-names = "iface", "bus", "mnoc", "core", "vsync";
193*c9ccf3a3SEmmanuel Vadot
194*c9ccf3a3SEmmanuel Vadot            interrupt-parent = <&mdss>;
195*c9ccf3a3SEmmanuel Vadot            interrupts = <0>;
196*c9ccf3a3SEmmanuel Vadot            operating-points-v2 = <&mdp_opp_table>;
197*c9ccf3a3SEmmanuel Vadot            power-domains = <&rpmpd MSM8998_VDDMX>;
198*c9ccf3a3SEmmanuel Vadot
199*c9ccf3a3SEmmanuel Vadot            ports {
200*c9ccf3a3SEmmanuel Vadot                #address-cells = <1>;
201*c9ccf3a3SEmmanuel Vadot                #size-cells = <0>;
202*c9ccf3a3SEmmanuel Vadot
203*c9ccf3a3SEmmanuel Vadot                port@0 {
204*c9ccf3a3SEmmanuel Vadot                    reg = <0>;
205*c9ccf3a3SEmmanuel Vadot                    dpu_intf1_out: endpoint {
206*c9ccf3a3SEmmanuel Vadot                        remote-endpoint = <&dsi0_in>;
207*c9ccf3a3SEmmanuel Vadot                    };
208*c9ccf3a3SEmmanuel Vadot                };
209*c9ccf3a3SEmmanuel Vadot
210*c9ccf3a3SEmmanuel Vadot                port@1 {
211*c9ccf3a3SEmmanuel Vadot                    reg = <1>;
212*c9ccf3a3SEmmanuel Vadot                    dpu_intf2_out: endpoint {
213*c9ccf3a3SEmmanuel Vadot                        remote-endpoint = <&dsi1_in>;
214*c9ccf3a3SEmmanuel Vadot                    };
215*c9ccf3a3SEmmanuel Vadot                };
216*c9ccf3a3SEmmanuel Vadot            };
217*c9ccf3a3SEmmanuel Vadot        };
218*c9ccf3a3SEmmanuel Vadot    };
219*c9ccf3a3SEmmanuel Vadot...
220