xref: /freebsd/sys/contrib/device-tree/Bindings/display/msm/qcom,sm8650-mdss.yaml (revision 01950c46b8155250f64374fb72fc11faa44bf099)
18d13bc63SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
28d13bc63SEmmanuel Vadot%YAML 1.2
38d13bc63SEmmanuel Vadot---
48d13bc63SEmmanuel Vadot$id: http://devicetree.org/schemas/display/msm/qcom,sm8650-mdss.yaml#
58d13bc63SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
68d13bc63SEmmanuel Vadot
78d13bc63SEmmanuel Vadottitle: Qualcomm SM8650 Display MDSS
88d13bc63SEmmanuel Vadot
98d13bc63SEmmanuel Vadotmaintainers:
108d13bc63SEmmanuel Vadot  - Neil Armstrong <neil.armstrong@linaro.org>
118d13bc63SEmmanuel Vadot
128d13bc63SEmmanuel Vadotdescription:
138d13bc63SEmmanuel Vadot  SM8650 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
148d13bc63SEmmanuel Vadot  DPU display controller, DSI and DP interfaces etc.
158d13bc63SEmmanuel Vadot
168d13bc63SEmmanuel Vadot$ref: /schemas/display/msm/mdss-common.yaml#
178d13bc63SEmmanuel Vadot
188d13bc63SEmmanuel Vadotproperties:
198d13bc63SEmmanuel Vadot  compatible:
208d13bc63SEmmanuel Vadot    const: qcom,sm8650-mdss
218d13bc63SEmmanuel Vadot
228d13bc63SEmmanuel Vadot  clocks:
238d13bc63SEmmanuel Vadot    items:
248d13bc63SEmmanuel Vadot      - description: Display AHB
258d13bc63SEmmanuel Vadot      - description: Display hf AXI
268d13bc63SEmmanuel Vadot      - description: Display core
278d13bc63SEmmanuel Vadot
288d13bc63SEmmanuel Vadot  iommus:
298d13bc63SEmmanuel Vadot    maxItems: 1
308d13bc63SEmmanuel Vadot
318d13bc63SEmmanuel Vadot  interconnects:
328d13bc63SEmmanuel Vadot    maxItems: 2
338d13bc63SEmmanuel Vadot
348d13bc63SEmmanuel Vadot  interconnect-names:
358d13bc63SEmmanuel Vadot    maxItems: 2
368d13bc63SEmmanuel Vadot
378d13bc63SEmmanuel VadotpatternProperties:
388d13bc63SEmmanuel Vadot  "^display-controller@[0-9a-f]+$":
398d13bc63SEmmanuel Vadot    type: object
40*01950c46SEmmanuel Vadot    additionalProperties: true
418d13bc63SEmmanuel Vadot    properties:
428d13bc63SEmmanuel Vadot      compatible:
438d13bc63SEmmanuel Vadot        const: qcom,sm8650-dpu
448d13bc63SEmmanuel Vadot
458d13bc63SEmmanuel Vadot  "^displayport-controller@[0-9a-f]+$":
468d13bc63SEmmanuel Vadot    type: object
47*01950c46SEmmanuel Vadot    additionalProperties: true
488d13bc63SEmmanuel Vadot    properties:
498d13bc63SEmmanuel Vadot      compatible:
508d13bc63SEmmanuel Vadot        const: qcom,sm8650-dp
518d13bc63SEmmanuel Vadot
528d13bc63SEmmanuel Vadot  "^dsi@[0-9a-f]+$":
538d13bc63SEmmanuel Vadot    type: object
54*01950c46SEmmanuel Vadot    additionalProperties: true
558d13bc63SEmmanuel Vadot    properties:
568d13bc63SEmmanuel Vadot      compatible:
578d13bc63SEmmanuel Vadot        items:
588d13bc63SEmmanuel Vadot          - const: qcom,sm8650-dsi-ctrl
598d13bc63SEmmanuel Vadot          - const: qcom,mdss-dsi-ctrl
608d13bc63SEmmanuel Vadot
618d13bc63SEmmanuel Vadot  "^phy@[0-9a-f]+$":
628d13bc63SEmmanuel Vadot    type: object
63*01950c46SEmmanuel Vadot    additionalProperties: true
648d13bc63SEmmanuel Vadot    properties:
658d13bc63SEmmanuel Vadot      compatible:
668d13bc63SEmmanuel Vadot        const: qcom,sm8650-dsi-phy-4nm
678d13bc63SEmmanuel Vadot
688d13bc63SEmmanuel Vadotrequired:
698d13bc63SEmmanuel Vadot  - compatible
708d13bc63SEmmanuel Vadot
718d13bc63SEmmanuel VadotunevaluatedProperties: false
728d13bc63SEmmanuel Vadot
738d13bc63SEmmanuel Vadotexamples:
748d13bc63SEmmanuel Vadot  - |
758d13bc63SEmmanuel Vadot    #include <dt-bindings/clock/qcom,rpmh.h>
768d13bc63SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
778d13bc63SEmmanuel Vadot    #include <dt-bindings/power/qcom,rpmhpd.h>
788d13bc63SEmmanuel Vadot
798d13bc63SEmmanuel Vadot    display-subsystem@ae00000 {
808d13bc63SEmmanuel Vadot        compatible = "qcom,sm8650-mdss";
818d13bc63SEmmanuel Vadot        reg = <0x0ae00000 0x1000>;
828d13bc63SEmmanuel Vadot        reg-names = "mdss";
838d13bc63SEmmanuel Vadot
848d13bc63SEmmanuel Vadot        resets = <&dispcc_core_bcr>;
858d13bc63SEmmanuel Vadot
868d13bc63SEmmanuel Vadot        power-domains = <&dispcc_gdsc>;
878d13bc63SEmmanuel Vadot
888d13bc63SEmmanuel Vadot        clocks = <&gcc_ahb_clk>,
898d13bc63SEmmanuel Vadot                 <&gcc_axi_clk>,
908d13bc63SEmmanuel Vadot                 <&dispcc_mdp_clk>;
918d13bc63SEmmanuel Vadot        clock-names = "bus", "nrt_bus", "core";
928d13bc63SEmmanuel Vadot
938d13bc63SEmmanuel Vadot        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
948d13bc63SEmmanuel Vadot        interrupt-controller;
958d13bc63SEmmanuel Vadot        #interrupt-cells = <1>;
968d13bc63SEmmanuel Vadot
978d13bc63SEmmanuel Vadot        iommus = <&apps_smmu 0x1c00 0x2>;
988d13bc63SEmmanuel Vadot
998d13bc63SEmmanuel Vadot        #address-cells = <1>;
1008d13bc63SEmmanuel Vadot        #size-cells = <1>;
1018d13bc63SEmmanuel Vadot        ranges;
1028d13bc63SEmmanuel Vadot
1038d13bc63SEmmanuel Vadot        display-controller@ae01000 {
1048d13bc63SEmmanuel Vadot            compatible = "qcom,sm8650-dpu";
1058d13bc63SEmmanuel Vadot            reg = <0x0ae01000 0x8f000>,
1068d13bc63SEmmanuel Vadot                  <0x0aeb0000 0x2008>;
1078d13bc63SEmmanuel Vadot            reg-names = "mdp", "vbif";
1088d13bc63SEmmanuel Vadot
1098d13bc63SEmmanuel Vadot            clocks = <&gcc_axi_clk>,
1108d13bc63SEmmanuel Vadot                     <&dispcc_ahb_clk>,
1118d13bc63SEmmanuel Vadot                     <&dispcc_mdp_lut_clk>,
1128d13bc63SEmmanuel Vadot                     <&dispcc_mdp_clk>,
1138d13bc63SEmmanuel Vadot                     <&dispcc_mdp_vsync_clk>;
1148d13bc63SEmmanuel Vadot            clock-names = "nrt_bus",
1158d13bc63SEmmanuel Vadot                          "iface",
1168d13bc63SEmmanuel Vadot                          "lut",
1178d13bc63SEmmanuel Vadot                          "core",
1188d13bc63SEmmanuel Vadot                          "vsync";
1198d13bc63SEmmanuel Vadot
1208d13bc63SEmmanuel Vadot            assigned-clocks = <&dispcc_mdp_vsync_clk>;
1218d13bc63SEmmanuel Vadot            assigned-clock-rates = <19200000>;
1228d13bc63SEmmanuel Vadot
1238d13bc63SEmmanuel Vadot            operating-points-v2 = <&mdp_opp_table>;
1248d13bc63SEmmanuel Vadot            power-domains = <&rpmhpd RPMHPD_MMCX>;
1258d13bc63SEmmanuel Vadot
1268d13bc63SEmmanuel Vadot            interrupt-parent = <&mdss>;
1278d13bc63SEmmanuel Vadot            interrupts = <0>;
1288d13bc63SEmmanuel Vadot
1298d13bc63SEmmanuel Vadot            ports {
1308d13bc63SEmmanuel Vadot                #address-cells = <1>;
1318d13bc63SEmmanuel Vadot                #size-cells = <0>;
1328d13bc63SEmmanuel Vadot
1338d13bc63SEmmanuel Vadot                port@0 {
1348d13bc63SEmmanuel Vadot                    reg = <0>;
1358d13bc63SEmmanuel Vadot                    dpu_intf1_out: endpoint {
1368d13bc63SEmmanuel Vadot                        remote-endpoint = <&dsi0_in>;
1378d13bc63SEmmanuel Vadot                    };
1388d13bc63SEmmanuel Vadot                };
1398d13bc63SEmmanuel Vadot
1408d13bc63SEmmanuel Vadot                port@1 {
1418d13bc63SEmmanuel Vadot                    reg = <1>;
1428d13bc63SEmmanuel Vadot                    dpu_intf2_out: endpoint {
1438d13bc63SEmmanuel Vadot                        remote-endpoint = <&dsi1_in>;
1448d13bc63SEmmanuel Vadot                    };
1458d13bc63SEmmanuel Vadot                };
1468d13bc63SEmmanuel Vadot            };
1478d13bc63SEmmanuel Vadot
1488d13bc63SEmmanuel Vadot            mdp_opp_table: opp-table {
1498d13bc63SEmmanuel Vadot                compatible = "operating-points-v2";
1508d13bc63SEmmanuel Vadot
1518d13bc63SEmmanuel Vadot                opp-200000000 {
1528d13bc63SEmmanuel Vadot                    opp-hz = /bits/ 64 <200000000>;
1538d13bc63SEmmanuel Vadot                    required-opps = <&rpmhpd_opp_low_svs>;
1548d13bc63SEmmanuel Vadot                };
1558d13bc63SEmmanuel Vadot
1568d13bc63SEmmanuel Vadot                opp-325000000 {
1578d13bc63SEmmanuel Vadot                    opp-hz = /bits/ 64 <325000000>;
1588d13bc63SEmmanuel Vadot                    required-opps = <&rpmhpd_opp_svs>;
1598d13bc63SEmmanuel Vadot                };
1608d13bc63SEmmanuel Vadot
1618d13bc63SEmmanuel Vadot                opp-375000000 {
1628d13bc63SEmmanuel Vadot                    opp-hz = /bits/ 64 <375000000>;
1638d13bc63SEmmanuel Vadot                    required-opps = <&rpmhpd_opp_svs_l1>;
1648d13bc63SEmmanuel Vadot                };
1658d13bc63SEmmanuel Vadot
1668d13bc63SEmmanuel Vadot                opp-514000000 {
1678d13bc63SEmmanuel Vadot                    opp-hz = /bits/ 64 <514000000>;
1688d13bc63SEmmanuel Vadot                    required-opps = <&rpmhpd_opp_nom>;
1698d13bc63SEmmanuel Vadot                };
1708d13bc63SEmmanuel Vadot            };
1718d13bc63SEmmanuel Vadot        };
1728d13bc63SEmmanuel Vadot
1738d13bc63SEmmanuel Vadot        dsi@ae94000 {
1748d13bc63SEmmanuel Vadot            compatible = "qcom,sm8650-dsi-ctrl", "qcom,mdss-dsi-ctrl";
1758d13bc63SEmmanuel Vadot            reg = <0x0ae94000 0x400>;
1768d13bc63SEmmanuel Vadot            reg-names = "dsi_ctrl";
1778d13bc63SEmmanuel Vadot
1788d13bc63SEmmanuel Vadot            interrupt-parent = <&mdss>;
1798d13bc63SEmmanuel Vadot            interrupts = <4>;
1808d13bc63SEmmanuel Vadot
1818d13bc63SEmmanuel Vadot            clocks = <&dispc_byte_clk>,
1828d13bc63SEmmanuel Vadot                     <&dispcc_intf_clk>,
1838d13bc63SEmmanuel Vadot                     <&dispcc_pclk>,
1848d13bc63SEmmanuel Vadot                     <&dispcc_esc_clk>,
1858d13bc63SEmmanuel Vadot                     <&dispcc_ahb_clk>,
1868d13bc63SEmmanuel Vadot                     <&gcc_bus_clk>;
1878d13bc63SEmmanuel Vadot            clock-names = "byte",
1888d13bc63SEmmanuel Vadot                          "byte_intf",
1898d13bc63SEmmanuel Vadot                          "pixel",
1908d13bc63SEmmanuel Vadot                          "core",
1918d13bc63SEmmanuel Vadot                          "iface",
1928d13bc63SEmmanuel Vadot                          "bus";
1938d13bc63SEmmanuel Vadot
1948d13bc63SEmmanuel Vadot            assigned-clocks = <&dispcc_byte_clk>,
1958d13bc63SEmmanuel Vadot                              <&dispcc_pclk>;
1968d13bc63SEmmanuel Vadot            assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
1978d13bc63SEmmanuel Vadot
1988d13bc63SEmmanuel Vadot            operating-points-v2 = <&dsi_opp_table>;
1998d13bc63SEmmanuel Vadot            power-domains = <&rpmhpd RPMHPD_MMCX>;
2008d13bc63SEmmanuel Vadot
2018d13bc63SEmmanuel Vadot            phys = <&dsi0_phy>;
2028d13bc63SEmmanuel Vadot            phy-names = "dsi";
2038d13bc63SEmmanuel Vadot
2048d13bc63SEmmanuel Vadot            #address-cells = <1>;
2058d13bc63SEmmanuel Vadot            #size-cells = <0>;
2068d13bc63SEmmanuel Vadot
2078d13bc63SEmmanuel Vadot            ports {
2088d13bc63SEmmanuel Vadot                #address-cells = <1>;
2098d13bc63SEmmanuel Vadot                #size-cells = <0>;
2108d13bc63SEmmanuel Vadot
2118d13bc63SEmmanuel Vadot                port@0 {
2128d13bc63SEmmanuel Vadot                    reg = <0>;
2138d13bc63SEmmanuel Vadot                    dsi0_in: endpoint {
2148d13bc63SEmmanuel Vadot                        remote-endpoint = <&dpu_intf1_out>;
2158d13bc63SEmmanuel Vadot                    };
2168d13bc63SEmmanuel Vadot                };
2178d13bc63SEmmanuel Vadot
2188d13bc63SEmmanuel Vadot                port@1 {
2198d13bc63SEmmanuel Vadot                    reg = <1>;
2208d13bc63SEmmanuel Vadot                    dsi0_out: endpoint {
2218d13bc63SEmmanuel Vadot                    };
2228d13bc63SEmmanuel Vadot                };
2238d13bc63SEmmanuel Vadot            };
2248d13bc63SEmmanuel Vadot
2258d13bc63SEmmanuel Vadot            dsi_opp_table: opp-table {
2268d13bc63SEmmanuel Vadot                compatible = "operating-points-v2";
2278d13bc63SEmmanuel Vadot
2288d13bc63SEmmanuel Vadot                opp-187500000 {
2298d13bc63SEmmanuel Vadot                    opp-hz = /bits/ 64 <187500000>;
2308d13bc63SEmmanuel Vadot                    required-opps = <&rpmhpd_opp_low_svs>;
2318d13bc63SEmmanuel Vadot                };
2328d13bc63SEmmanuel Vadot
2338d13bc63SEmmanuel Vadot                opp-300000000 {
2348d13bc63SEmmanuel Vadot                    opp-hz = /bits/ 64 <300000000>;
2358d13bc63SEmmanuel Vadot                    required-opps = <&rpmhpd_opp_svs>;
2368d13bc63SEmmanuel Vadot                };
2378d13bc63SEmmanuel Vadot
2388d13bc63SEmmanuel Vadot                opp-358000000 {
2398d13bc63SEmmanuel Vadot                    opp-hz = /bits/ 64 <358000000>;
2408d13bc63SEmmanuel Vadot                    required-opps = <&rpmhpd_opp_svs_l1>;
2418d13bc63SEmmanuel Vadot                };
2428d13bc63SEmmanuel Vadot            };
2438d13bc63SEmmanuel Vadot        };
2448d13bc63SEmmanuel Vadot
2458d13bc63SEmmanuel Vadot        dsi0_phy: phy@ae94400 {
2468d13bc63SEmmanuel Vadot            compatible = "qcom,sm8650-dsi-phy-4nm";
2478d13bc63SEmmanuel Vadot            reg = <0x0ae95000 0x200>,
2488d13bc63SEmmanuel Vadot                  <0x0ae95200 0x280>,
2498d13bc63SEmmanuel Vadot                  <0x0ae95500 0x400>;
2508d13bc63SEmmanuel Vadot            reg-names = "dsi_phy",
2518d13bc63SEmmanuel Vadot                        "dsi_phy_lane",
2528d13bc63SEmmanuel Vadot                        "dsi_pll";
2538d13bc63SEmmanuel Vadot
2548d13bc63SEmmanuel Vadot            #clock-cells = <1>;
2558d13bc63SEmmanuel Vadot            #phy-cells = <0>;
2568d13bc63SEmmanuel Vadot
2578d13bc63SEmmanuel Vadot            clocks = <&dispcc_iface_clk>,
2588d13bc63SEmmanuel Vadot                     <&rpmhcc_ref_clk>;
2598d13bc63SEmmanuel Vadot            clock-names = "iface", "ref";
2608d13bc63SEmmanuel Vadot        };
2618d13bc63SEmmanuel Vadot
2628d13bc63SEmmanuel Vadot        dsi@ae96000 {
2638d13bc63SEmmanuel Vadot            compatible = "qcom,sm8650-dsi-ctrl", "qcom,mdss-dsi-ctrl";
2648d13bc63SEmmanuel Vadot            reg = <0x0ae96000 0x400>;
2658d13bc63SEmmanuel Vadot            reg-names = "dsi_ctrl";
2668d13bc63SEmmanuel Vadot
2678d13bc63SEmmanuel Vadot            interrupt-parent = <&mdss>;
2688d13bc63SEmmanuel Vadot            interrupts = <5>;
2698d13bc63SEmmanuel Vadot
2708d13bc63SEmmanuel Vadot            clocks = <&dispc_byte_clk>,
2718d13bc63SEmmanuel Vadot                     <&dispcc_intf_clk>,
2728d13bc63SEmmanuel Vadot                     <&dispcc_pclk>,
2738d13bc63SEmmanuel Vadot                     <&dispcc_esc_clk>,
2748d13bc63SEmmanuel Vadot                     <&dispcc_ahb_clk>,
2758d13bc63SEmmanuel Vadot                     <&gcc_bus_clk>;
2768d13bc63SEmmanuel Vadot            clock-names = "byte",
2778d13bc63SEmmanuel Vadot                          "byte_intf",
2788d13bc63SEmmanuel Vadot                          "pixel",
2798d13bc63SEmmanuel Vadot                          "core",
2808d13bc63SEmmanuel Vadot                          "iface",
2818d13bc63SEmmanuel Vadot                          "bus";
2828d13bc63SEmmanuel Vadot
2838d13bc63SEmmanuel Vadot            assigned-clocks = <&dispcc_byte_clk>,
2848d13bc63SEmmanuel Vadot                              <&dispcc_pclk>;
2858d13bc63SEmmanuel Vadot            assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>;
2868d13bc63SEmmanuel Vadot
2878d13bc63SEmmanuel Vadot            operating-points-v2 = <&dsi_opp_table>;
2888d13bc63SEmmanuel Vadot            power-domains = <&rpmhpd RPMHPD_MMCX>;
2898d13bc63SEmmanuel Vadot
2908d13bc63SEmmanuel Vadot            phys = <&dsi1_phy>;
2918d13bc63SEmmanuel Vadot            phy-names = "dsi";
2928d13bc63SEmmanuel Vadot
2938d13bc63SEmmanuel Vadot            #address-cells = <1>;
2948d13bc63SEmmanuel Vadot            #size-cells = <0>;
2958d13bc63SEmmanuel Vadot
2968d13bc63SEmmanuel Vadot            ports {
2978d13bc63SEmmanuel Vadot                #address-cells = <1>;
2988d13bc63SEmmanuel Vadot                #size-cells = <0>;
2998d13bc63SEmmanuel Vadot
3008d13bc63SEmmanuel Vadot                port@0 {
3018d13bc63SEmmanuel Vadot                    reg = <0>;
3028d13bc63SEmmanuel Vadot                    dsi1_in: endpoint {
3038d13bc63SEmmanuel Vadot                        remote-endpoint = <&dpu_intf2_out>;
3048d13bc63SEmmanuel Vadot                    };
3058d13bc63SEmmanuel Vadot                };
3068d13bc63SEmmanuel Vadot
3078d13bc63SEmmanuel Vadot                port@1 {
3088d13bc63SEmmanuel Vadot                    reg = <1>;
3098d13bc63SEmmanuel Vadot                    dsi1_out: endpoint {
3108d13bc63SEmmanuel Vadot                    };
3118d13bc63SEmmanuel Vadot                };
3128d13bc63SEmmanuel Vadot            };
3138d13bc63SEmmanuel Vadot        };
3148d13bc63SEmmanuel Vadot
3158d13bc63SEmmanuel Vadot        dsi1_phy: phy@ae96400 {
3168d13bc63SEmmanuel Vadot            compatible = "qcom,sm8650-dsi-phy-4nm";
3178d13bc63SEmmanuel Vadot            reg = <0x0ae97000 0x200>,
3188d13bc63SEmmanuel Vadot                  <0x0ae97200 0x280>,
3198d13bc63SEmmanuel Vadot                  <0x0ae97500 0x400>;
3208d13bc63SEmmanuel Vadot            reg-names = "dsi_phy",
3218d13bc63SEmmanuel Vadot                        "dsi_phy_lane",
3228d13bc63SEmmanuel Vadot                        "dsi_pll";
3238d13bc63SEmmanuel Vadot
3248d13bc63SEmmanuel Vadot            #clock-cells = <1>;
3258d13bc63SEmmanuel Vadot            #phy-cells = <0>;
3268d13bc63SEmmanuel Vadot
3278d13bc63SEmmanuel Vadot            clocks = <&dispcc_iface_clk>,
3288d13bc63SEmmanuel Vadot                     <&rpmhcc_ref_clk>;
3298d13bc63SEmmanuel Vadot            clock-names = "iface", "ref";
3308d13bc63SEmmanuel Vadot        };
3318d13bc63SEmmanuel Vadot    };
3328d13bc63SEmmanuel Vadot...
333