xref: /openbmc/linux/Documentation/devicetree/bindings/display/msm/qcom,sdm845-mdss.yaml (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1*440b075bSKrzysztof Kozlowski# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
22abfd6a2SDmitry Baryshkov%YAML 1.2
32abfd6a2SDmitry Baryshkov---
42abfd6a2SDmitry Baryshkov$id: http://devicetree.org/schemas/display/msm/qcom,sdm845-mdss.yaml#
52abfd6a2SDmitry Baryshkov$schema: http://devicetree.org/meta-schemas/core.yaml#
62abfd6a2SDmitry Baryshkov
72abfd6a2SDmitry Baryshkovtitle: Qualcomm SDM845 Display MDSS
82abfd6a2SDmitry Baryshkov
92abfd6a2SDmitry Baryshkovmaintainers:
102abfd6a2SDmitry Baryshkov  - Krishna Manikandan <quic_mkrishn@quicinc.com>
112abfd6a2SDmitry Baryshkov
122abfd6a2SDmitry Baryshkovdescription:
132abfd6a2SDmitry Baryshkov  Device tree bindings for MSM Mobile Display Subsystem(MDSS) that encapsulates
142abfd6a2SDmitry Baryshkov  sub-blocks like DPU display controller, DSI and DP interfaces etc. Device tree
152abfd6a2SDmitry Baryshkov  bindings of MDSS are mentioned for SDM845 target.
162abfd6a2SDmitry Baryshkov
172abfd6a2SDmitry Baryshkov$ref: /schemas/display/msm/mdss-common.yaml#
182abfd6a2SDmitry Baryshkov
192abfd6a2SDmitry Baryshkovproperties:
202abfd6a2SDmitry Baryshkov  compatible:
217ad65866SKrzysztof Kozlowski    const: qcom,sdm845-mdss
222abfd6a2SDmitry Baryshkov
232abfd6a2SDmitry Baryshkov  clocks:
242abfd6a2SDmitry Baryshkov    items:
252abfd6a2SDmitry Baryshkov      - description: Display AHB clock from gcc
262abfd6a2SDmitry Baryshkov      - description: Display core clock
272abfd6a2SDmitry Baryshkov
282abfd6a2SDmitry Baryshkov  clock-names:
292abfd6a2SDmitry Baryshkov    items:
302abfd6a2SDmitry Baryshkov      - const: iface
312abfd6a2SDmitry Baryshkov      - const: core
322abfd6a2SDmitry Baryshkov
332abfd6a2SDmitry Baryshkov  iommus:
342abfd6a2SDmitry Baryshkov    maxItems: 2
352abfd6a2SDmitry Baryshkov
362abfd6a2SDmitry Baryshkov  interconnects:
372abfd6a2SDmitry Baryshkov    maxItems: 2
382abfd6a2SDmitry Baryshkov
392abfd6a2SDmitry Baryshkov  interconnect-names:
402abfd6a2SDmitry Baryshkov    maxItems: 2
412abfd6a2SDmitry Baryshkov
422abfd6a2SDmitry BaryshkovpatternProperties:
432abfd6a2SDmitry Baryshkov  "^display-controller@[0-9a-f]+$":
442abfd6a2SDmitry Baryshkov    type: object
452abfd6a2SDmitry Baryshkov    properties:
462abfd6a2SDmitry Baryshkov      compatible:
472abfd6a2SDmitry Baryshkov        const: qcom,sdm845-dpu
482abfd6a2SDmitry Baryshkov
49d2640778SDmitry Baryshkov  "^displayport-controller@[0-9a-f]+$":
50d2640778SDmitry Baryshkov    type: object
51d2640778SDmitry Baryshkov    properties:
52d2640778SDmitry Baryshkov      compatible:
53d2640778SDmitry Baryshkov        const: qcom,sdm845-dp
54d2640778SDmitry Baryshkov
554b32e466SDmitry Baryshkov  "^dsi@[0-9a-f]+$":
564b32e466SDmitry Baryshkov    type: object
574b32e466SDmitry Baryshkov    properties:
584b32e466SDmitry Baryshkov      compatible:
590c0f65c6SBryan O'Donoghue        items:
600c0f65c6SBryan O'Donoghue          - const: qcom,sdm845-dsi-ctrl
610c0f65c6SBryan O'Donoghue          - const: qcom,mdss-dsi-ctrl
624b32e466SDmitry Baryshkov
634b32e466SDmitry Baryshkov  "^phy@[0-9a-f]+$":
644b32e466SDmitry Baryshkov    type: object
654b32e466SDmitry Baryshkov    properties:
664b32e466SDmitry Baryshkov      compatible:
674b32e466SDmitry Baryshkov        const: qcom,dsi-phy-10nm
684b32e466SDmitry Baryshkov
69e96150a6SDmitry Baryshkovrequired:
70e96150a6SDmitry Baryshkov  - compatible
71e96150a6SDmitry Baryshkov
722abfd6a2SDmitry BaryshkovunevaluatedProperties: false
732abfd6a2SDmitry Baryshkov
742abfd6a2SDmitry Baryshkovexamples:
752abfd6a2SDmitry Baryshkov  - |
762abfd6a2SDmitry Baryshkov    #include <dt-bindings/clock/qcom,dispcc-sdm845.h>
772abfd6a2SDmitry Baryshkov    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
784b32e466SDmitry Baryshkov    #include <dt-bindings/clock/qcom,rpmh.h>
792abfd6a2SDmitry Baryshkov    #include <dt-bindings/interrupt-controller/arm-gic.h>
802abfd6a2SDmitry Baryshkov    #include <dt-bindings/power/qcom-rpmpd.h>
812abfd6a2SDmitry Baryshkov
822abfd6a2SDmitry Baryshkov    display-subsystem@ae00000 {
832abfd6a2SDmitry Baryshkov        #address-cells = <1>;
842abfd6a2SDmitry Baryshkov        #size-cells = <1>;
852abfd6a2SDmitry Baryshkov        compatible = "qcom,sdm845-mdss";
862abfd6a2SDmitry Baryshkov        reg = <0x0ae00000 0x1000>;
872abfd6a2SDmitry Baryshkov        reg-names = "mdss";
882abfd6a2SDmitry Baryshkov        power-domains = <&dispcc MDSS_GDSC>;
892abfd6a2SDmitry Baryshkov
902abfd6a2SDmitry Baryshkov        clocks = <&gcc GCC_DISP_AHB_CLK>,
912abfd6a2SDmitry Baryshkov                 <&dispcc DISP_CC_MDSS_MDP_CLK>;
922abfd6a2SDmitry Baryshkov        clock-names = "iface", "core";
932abfd6a2SDmitry Baryshkov
942abfd6a2SDmitry Baryshkov        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
952abfd6a2SDmitry Baryshkov        interrupt-controller;
962abfd6a2SDmitry Baryshkov        #interrupt-cells = <1>;
972abfd6a2SDmitry Baryshkov
982abfd6a2SDmitry Baryshkov        iommus = <&apps_smmu 0x880 0x8>,
992abfd6a2SDmitry Baryshkov                 <&apps_smmu 0xc80 0x8>;
1002abfd6a2SDmitry Baryshkov        ranges;
1012abfd6a2SDmitry Baryshkov
1022abfd6a2SDmitry Baryshkov        display-controller@ae01000 {
1032abfd6a2SDmitry Baryshkov            compatible = "qcom,sdm845-dpu";
1042abfd6a2SDmitry Baryshkov            reg = <0x0ae01000 0x8f000>,
1052abfd6a2SDmitry Baryshkov                  <0x0aeb0000 0x2008>;
1062abfd6a2SDmitry Baryshkov            reg-names = "mdp", "vbif";
1072abfd6a2SDmitry Baryshkov
1082abfd6a2SDmitry Baryshkov            clocks = <&gcc GCC_DISP_AXI_CLK>,
1092abfd6a2SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_AHB_CLK>,
1102abfd6a2SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_AXI_CLK>,
1112abfd6a2SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_MDP_CLK>,
1122abfd6a2SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
1132abfd6a2SDmitry Baryshkov            clock-names = "gcc-bus", "iface", "bus", "core", "vsync";
1142abfd6a2SDmitry Baryshkov
1152abfd6a2SDmitry Baryshkov            interrupt-parent = <&mdss>;
1162abfd6a2SDmitry Baryshkov            interrupts = <0>;
1172abfd6a2SDmitry Baryshkov            power-domains = <&rpmhpd SDM845_CX>;
1182abfd6a2SDmitry Baryshkov            operating-points-v2 = <&mdp_opp_table>;
1192abfd6a2SDmitry Baryshkov
1202abfd6a2SDmitry Baryshkov            ports {
1212abfd6a2SDmitry Baryshkov                #address-cells = <1>;
1222abfd6a2SDmitry Baryshkov                #size-cells = <0>;
1232abfd6a2SDmitry Baryshkov
1242abfd6a2SDmitry Baryshkov                port@0 {
1252abfd6a2SDmitry Baryshkov                    reg = <0>;
1262abfd6a2SDmitry Baryshkov                    dpu_intf1_out: endpoint {
1272abfd6a2SDmitry Baryshkov                        remote-endpoint = <&dsi0_in>;
1282abfd6a2SDmitry Baryshkov                    };
1292abfd6a2SDmitry Baryshkov                };
1302abfd6a2SDmitry Baryshkov
1312abfd6a2SDmitry Baryshkov                port@1 {
1322abfd6a2SDmitry Baryshkov                    reg = <1>;
1332abfd6a2SDmitry Baryshkov                    dpu_intf2_out: endpoint {
1342abfd6a2SDmitry Baryshkov                        remote-endpoint = <&dsi1_in>;
1352abfd6a2SDmitry Baryshkov                    };
1362abfd6a2SDmitry Baryshkov                };
1372abfd6a2SDmitry Baryshkov            };
1382abfd6a2SDmitry Baryshkov        };
1394b32e466SDmitry Baryshkov
1404b32e466SDmitry Baryshkov        dsi@ae94000 {
1410c0f65c6SBryan O'Donoghue            compatible = "qcom,sdm845-dsi-ctrl", "qcom,mdss-dsi-ctrl";
1424b32e466SDmitry Baryshkov            reg = <0x0ae94000 0x400>;
1434b32e466SDmitry Baryshkov            reg-names = "dsi_ctrl";
1444b32e466SDmitry Baryshkov
1454b32e466SDmitry Baryshkov            interrupt-parent = <&mdss>;
1464b32e466SDmitry Baryshkov            interrupts = <4>;
1474b32e466SDmitry Baryshkov
1484b32e466SDmitry Baryshkov            clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>,
1494b32e466SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>,
1504b32e466SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_PCLK0_CLK>,
1514b32e466SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_ESC0_CLK>,
1524b32e466SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_AHB_CLK>,
1534b32e466SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_AXI_CLK>;
1544b32e466SDmitry Baryshkov            clock-names = "byte",
1554b32e466SDmitry Baryshkov                          "byte_intf",
1564b32e466SDmitry Baryshkov                          "pixel",
1574b32e466SDmitry Baryshkov                          "core",
1584b32e466SDmitry Baryshkov                          "iface",
1594b32e466SDmitry Baryshkov                          "bus";
1604b32e466SDmitry Baryshkov            assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
1614b32e466SDmitry Baryshkov                              <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
1624b32e466SDmitry Baryshkov            assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
1634b32e466SDmitry Baryshkov
1644b32e466SDmitry Baryshkov            operating-points-v2 = <&dsi_opp_table>;
1654b32e466SDmitry Baryshkov            power-domains = <&rpmhpd SDM845_CX>;
1664b32e466SDmitry Baryshkov
1674b32e466SDmitry Baryshkov            phys = <&dsi0_phy>;
1684b32e466SDmitry Baryshkov            phy-names = "dsi";
1694b32e466SDmitry Baryshkov
1704b32e466SDmitry Baryshkov            #address-cells = <1>;
1714b32e466SDmitry Baryshkov            #size-cells = <0>;
1724b32e466SDmitry Baryshkov
1734b32e466SDmitry Baryshkov            ports {
1744b32e466SDmitry Baryshkov                #address-cells = <1>;
1754b32e466SDmitry Baryshkov                #size-cells = <0>;
1764b32e466SDmitry Baryshkov
1774b32e466SDmitry Baryshkov                port@0 {
1784b32e466SDmitry Baryshkov                    reg = <0>;
1794b32e466SDmitry Baryshkov                    dsi0_in: endpoint {
1804b32e466SDmitry Baryshkov                        remote-endpoint = <&dpu_intf1_out>;
1814b32e466SDmitry Baryshkov                    };
1824b32e466SDmitry Baryshkov                };
1834b32e466SDmitry Baryshkov
1844b32e466SDmitry Baryshkov                port@1 {
1854b32e466SDmitry Baryshkov                    reg = <1>;
1864b32e466SDmitry Baryshkov                    dsi0_out: endpoint {
1874b32e466SDmitry Baryshkov                    };
1884b32e466SDmitry Baryshkov                };
1894b32e466SDmitry Baryshkov            };
1904b32e466SDmitry Baryshkov        };
1914b32e466SDmitry Baryshkov
1924b32e466SDmitry Baryshkov        dsi0_phy: phy@ae94400 {
1934b32e466SDmitry Baryshkov            compatible = "qcom,dsi-phy-10nm";
1944b32e466SDmitry Baryshkov            reg = <0x0ae94400 0x200>,
1954b32e466SDmitry Baryshkov                  <0x0ae94600 0x280>,
1964b32e466SDmitry Baryshkov                  <0x0ae94a00 0x1e0>;
1974b32e466SDmitry Baryshkov            reg-names = "dsi_phy",
1984b32e466SDmitry Baryshkov                        "dsi_phy_lane",
1994b32e466SDmitry Baryshkov                        "dsi_pll";
2004b32e466SDmitry Baryshkov
2014b32e466SDmitry Baryshkov            #clock-cells = <1>;
2024b32e466SDmitry Baryshkov            #phy-cells = <0>;
2034b32e466SDmitry Baryshkov
2044b32e466SDmitry Baryshkov            clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
2054b32e466SDmitry Baryshkov                     <&rpmhcc RPMH_CXO_CLK>;
2064b32e466SDmitry Baryshkov            clock-names = "iface", "ref";
2074b32e466SDmitry Baryshkov            vdds-supply = <&vreg_dsi_phy>;
2084b32e466SDmitry Baryshkov        };
2094b32e466SDmitry Baryshkov
2104b32e466SDmitry Baryshkov        dsi@ae96000 {
2110c0f65c6SBryan O'Donoghue            compatible = "qcom,sdm845-dsi-ctrl", "qcom,mdss-dsi-ctrl";
2124b32e466SDmitry Baryshkov            reg = <0x0ae96000 0x400>;
2134b32e466SDmitry Baryshkov            reg-names = "dsi_ctrl";
2144b32e466SDmitry Baryshkov
2154b32e466SDmitry Baryshkov            interrupt-parent = <&mdss>;
2164b32e466SDmitry Baryshkov            interrupts = <5>;
2174b32e466SDmitry Baryshkov
2184b32e466SDmitry Baryshkov            clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK>,
2194b32e466SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_BYTE1_INTF_CLK>,
2204b32e466SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_PCLK1_CLK>,
2214b32e466SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_ESC1_CLK>,
2224b32e466SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_AHB_CLK>,
2234b32e466SDmitry Baryshkov                     <&dispcc DISP_CC_MDSS_AXI_CLK>;
2244b32e466SDmitry Baryshkov            clock-names = "byte",
2254b32e466SDmitry Baryshkov                          "byte_intf",
2264b32e466SDmitry Baryshkov                          "pixel",
2274b32e466SDmitry Baryshkov                          "core",
2284b32e466SDmitry Baryshkov                          "iface",
2294b32e466SDmitry Baryshkov                          "bus";
2304b32e466SDmitry Baryshkov            assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>,
2314b32e466SDmitry Baryshkov                              <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
2324b32e466SDmitry Baryshkov            assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>;
2334b32e466SDmitry Baryshkov
2344b32e466SDmitry Baryshkov            operating-points-v2 = <&dsi_opp_table>;
2354b32e466SDmitry Baryshkov            power-domains = <&rpmhpd SDM845_CX>;
2364b32e466SDmitry Baryshkov
2374b32e466SDmitry Baryshkov            phys = <&dsi1_phy>;
2384b32e466SDmitry Baryshkov            phy-names = "dsi";
2394b32e466SDmitry Baryshkov
2404b32e466SDmitry Baryshkov            #address-cells = <1>;
2414b32e466SDmitry Baryshkov            #size-cells = <0>;
2424b32e466SDmitry Baryshkov
2434b32e466SDmitry Baryshkov            ports {
2444b32e466SDmitry Baryshkov                #address-cells = <1>;
2454b32e466SDmitry Baryshkov                #size-cells = <0>;
2464b32e466SDmitry Baryshkov
2474b32e466SDmitry Baryshkov                port@0 {
2484b32e466SDmitry Baryshkov                    reg = <0>;
2494b32e466SDmitry Baryshkov                    dsi1_in: endpoint {
2504b32e466SDmitry Baryshkov                        remote-endpoint = <&dpu_intf2_out>;
2514b32e466SDmitry Baryshkov                    };
2524b32e466SDmitry Baryshkov                };
2534b32e466SDmitry Baryshkov
2544b32e466SDmitry Baryshkov                port@1 {
2554b32e466SDmitry Baryshkov                    reg = <1>;
2564b32e466SDmitry Baryshkov                    dsi1_out: endpoint {
2574b32e466SDmitry Baryshkov                    };
2584b32e466SDmitry Baryshkov                };
2594b32e466SDmitry Baryshkov            };
2604b32e466SDmitry Baryshkov        };
2614b32e466SDmitry Baryshkov
2624b32e466SDmitry Baryshkov        dsi1_phy: phy@ae96400 {
2634b32e466SDmitry Baryshkov            compatible = "qcom,dsi-phy-10nm";
2644b32e466SDmitry Baryshkov            reg = <0x0ae96400 0x200>,
2654b32e466SDmitry Baryshkov                  <0x0ae96600 0x280>,
2664b32e466SDmitry Baryshkov                  <0x0ae96a00 0x10e>;
2674b32e466SDmitry Baryshkov            reg-names = "dsi_phy",
2684b32e466SDmitry Baryshkov                        "dsi_phy_lane",
2694b32e466SDmitry Baryshkov                        "dsi_pll";
2704b32e466SDmitry Baryshkov
2714b32e466SDmitry Baryshkov            #clock-cells = <1>;
2724b32e466SDmitry Baryshkov            #phy-cells = <0>;
2734b32e466SDmitry Baryshkov
2744b32e466SDmitry Baryshkov            clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
2754b32e466SDmitry Baryshkov                     <&rpmhcc RPMH_CXO_CLK>;
2764b32e466SDmitry Baryshkov            clock-names = "iface", "ref";
2774b32e466SDmitry Baryshkov            vdds-supply = <&vreg_dsi_phy>;
2784b32e466SDmitry Baryshkov        };
2792abfd6a2SDmitry Baryshkov    };
2802abfd6a2SDmitry Baryshkov...
281