| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/display/msm/qcom,sm8550-mdss.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: Qualcomm SM8550 Display MDSS
- maintainers:
- - Neil Armstrong <neil.armstrong@linaro.org>
- description:
- SM8550 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
- DPU display controller, DSI and DP interfaces etc.
- $ref: /schemas/display/msm/mdss-common.yaml#
- properties:
- compatible:
- const: qcom,sm8550-mdss
- clocks:
- items:
- - description: Display MDSS AHB
- - description: Display AHB
- - description: Display hf AXI
- - description: Display core
- iommus:
- maxItems: 1
- interconnects:
- maxItems: 2
- interconnect-names:
- maxItems: 2
- patternProperties:
- "^display-controller@[0-9a-f]+$":
- type: object
- additionalProperties: true
- properties:
- compatible:
- const: qcom,sm8550-dpu
- "^displayport-controller@[0-9a-f]+$":
- type: object
- additionalProperties: true
- properties:
- compatible:
- items:
- - const: qcom,sm8550-dp
- - const: qcom,sm8350-dp
- "^dsi@[0-9a-f]+$":
- type: object
- additionalProperties: true
- properties:
- compatible:
- items:
- - const: qcom,sm8550-dsi-ctrl
- - const: qcom,mdss-dsi-ctrl
- "^phy@[0-9a-f]+$":
- type: object
- additionalProperties: true
- properties:
- compatible:
- const: qcom,sm8550-dsi-phy-4nm
- required:
- - compatible
- unevaluatedProperties: false
- examples:
- - |
- #include <dt-bindings/clock/qcom,sm8550-dispcc.h>
- #include <dt-bindings/clock/qcom,sm8550-gcc.h>
- #include <dt-bindings/clock/qcom,rpmh.h>
- #include <dt-bindings/interrupt-controller/arm-gic.h>
- #include <dt-bindings/interconnect/qcom,sm8550-rpmh.h>
- #include <dt-bindings/power/qcom,rpmhpd.h>
- display-subsystem@ae00000 {
- compatible = "qcom,sm8550-mdss";
- reg = <0x0ae00000 0x1000>;
- reg-names = "mdss";
- interconnects = <&mmss_noc MASTER_MDP 0 &gem_noc SLAVE_LLCC 0>,
- <&mc_virt MASTER_LLCC 0 &mc_virt SLAVE_EBI1 0>;
- interconnect-names = "mdp0-mem", "mdp1-mem";
- resets = <&dispcc DISP_CC_MDSS_CORE_BCR>;
- power-domains = <&dispcc MDSS_GDSC>;
- clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
- <&gcc GCC_DISP_AHB_CLK>,
- <&gcc GCC_DISP_HF_AXI_CLK>,
- <&dispcc DISP_CC_MDSS_MDP_CLK>;
- clock-names = "iface", "bus", "nrt_bus", "core";
- interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-controller;
- #interrupt-cells = <1>;
- iommus = <&apps_smmu 0x1c00 0x2>;
- #address-cells = <1>;
- #size-cells = <1>;
- ranges;
- display-controller@ae01000 {
- compatible = "qcom,sm8550-dpu";
- reg = <0x0ae01000 0x8f000>,
- <0x0aeb0000 0x2008>;
- reg-names = "mdp", "vbif";
- clocks = <&gcc GCC_DISP_AHB_CLK>,
- <&gcc GCC_DISP_HF_AXI_CLK>,
- <&dispcc DISP_CC_MDSS_AHB_CLK>,
- <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>,
- <&dispcc DISP_CC_MDSS_MDP_CLK>,
- <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
- clock-names = "bus",
- "nrt_bus",
- "iface",
- "lut",
- "core",
- "vsync";
- assigned-clocks = <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
- assigned-clock-rates = <19200000>;
- operating-points-v2 = <&mdp_opp_table>;
- power-domains = <&rpmhpd RPMHPD_MMCX>;
- interrupt-parent = <&mdss>;
- interrupts = <0>;
- 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>;
- };
- };
- };
- mdp_opp_table: opp-table {
- compatible = "operating-points-v2";
- opp-200000000 {
- opp-hz = /bits/ 64 <200000000>;
- required-opps = <&rpmhpd_opp_low_svs>;
- };
- opp-325000000 {
- opp-hz = /bits/ 64 <325000000>;
- required-opps = <&rpmhpd_opp_svs>;
- };
- opp-375000000 {
- opp-hz = /bits/ 64 <375000000>;
- required-opps = <&rpmhpd_opp_svs_l1>;
- };
- opp-514000000 {
- opp-hz = /bits/ 64 <514000000>;
- required-opps = <&rpmhpd_opp_nom>;
- };
- };
- };
- dsi@ae94000 {
- compatible = "qcom,sm8550-dsi-ctrl", "qcom,mdss-dsi-ctrl";
- reg = <0x0ae94000 0x400>;
- reg-names = "dsi_ctrl";
- interrupt-parent = <&mdss>;
- interrupts = <4>;
- clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>,
- <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>,
- <&dispcc DISP_CC_MDSS_PCLK0_CLK>,
- <&dispcc DISP_CC_MDSS_ESC0_CLK>,
- <&dispcc DISP_CC_MDSS_AHB_CLK>,
- <&gcc GCC_DISP_HF_AXI_CLK>;
- clock-names = "byte",
- "byte_intf",
- "pixel",
- "core",
- "iface",
- "bus";
- assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
- <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
- assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
- operating-points-v2 = <&dsi_opp_table>;
- power-domains = <&rpmhpd RPMHPD_MMCX>;
- phys = <&dsi0_phy>;
- phy-names = "dsi";
- #address-cells = <1>;
- #size-cells = <0>;
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
- port@0 {
- reg = <0>;
- dsi0_in: endpoint {
- remote-endpoint = <&dpu_intf1_out>;
- };
- };
- port@1 {
- reg = <1>;
- dsi0_out: endpoint {
- };
- };
- };
- dsi_opp_table: opp-table {
- compatible = "operating-points-v2";
- opp-187500000 {
- opp-hz = /bits/ 64 <187500000>;
- required-opps = <&rpmhpd_opp_low_svs>;
- };
- opp-300000000 {
- opp-hz = /bits/ 64 <300000000>;
- required-opps = <&rpmhpd_opp_svs>;
- };
- opp-358000000 {
- opp-hz = /bits/ 64 <358000000>;
- required-opps = <&rpmhpd_opp_svs_l1>;
- };
- };
- };
- dsi0_phy: phy@ae94400 {
- compatible = "qcom,sm8550-dsi-phy-4nm";
- reg = <0x0ae95000 0x200>,
- <0x0ae95200 0x280>,
- <0x0ae95500 0x400>;
- reg-names = "dsi_phy",
- "dsi_phy_lane",
- "dsi_pll";
- #clock-cells = <1>;
- #phy-cells = <0>;
- clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
- <&rpmhcc RPMH_CXO_CLK>;
- clock-names = "iface", "ref";
- };
- dsi@ae96000 {
- compatible = "qcom,sm8550-dsi-ctrl", "qcom,mdss-dsi-ctrl";
- reg = <0x0ae96000 0x400>;
- reg-names = "dsi_ctrl";
- interrupt-parent = <&mdss>;
- interrupts = <5>;
- clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK>,
- <&dispcc DISP_CC_MDSS_BYTE1_INTF_CLK>,
- <&dispcc DISP_CC_MDSS_PCLK1_CLK>,
- <&dispcc DISP_CC_MDSS_ESC1_CLK>,
- <&dispcc DISP_CC_MDSS_AHB_CLK>,
- <&gcc GCC_DISP_HF_AXI_CLK>;
- clock-names = "byte",
- "byte_intf",
- "pixel",
- "core",
- "iface",
- "bus";
- assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>,
- <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
- assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>;
- operating-points-v2 = <&dsi_opp_table>;
- power-domains = <&rpmhpd RPMHPD_MMCX>;
- phys = <&dsi1_phy>;
- phy-names = "dsi";
- #address-cells = <1>;
- #size-cells = <0>;
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
- port@0 {
- reg = <0>;
- dsi1_in: endpoint {
- remote-endpoint = <&dpu_intf2_out>;
- };
- };
- port@1 {
- reg = <1>;
- dsi1_out: endpoint {
- };
- };
- };
- };
- dsi1_phy: phy@ae96400 {
- compatible = "qcom,sm8550-dsi-phy-4nm";
- reg = <0x0ae97000 0x200>,
- <0x0ae97200 0x280>,
- <0x0ae97500 0x400>;
- reg-names = "dsi_phy",
- "dsi_phy_lane",
- "dsi_pll";
- #clock-cells = <1>;
- #phy-cells = <0>;
- clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
- <&rpmhcc RPMH_CXO_CLK>;
- clock-names = "iface", "ref";
- };
- };
- ...
|