Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: display: msm: Document the Glymur Mobile Display SubSystem

The MDSS/MDP display subsystem found on Glymur platform is 2 minor version
increase compared to SM8750, which makes it incompatible with all previous
platforms. So document it.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/683714/
Link: https://lore.kernel.org/r/20251027-glymur-display-v3-1-aa13055818ac@linaro.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>

authored by

Abel Vesa and committed by
Dmitry Baryshkov
1aee577b d9792823

+264
+264
Documentation/devicetree/bindings/display/msm/qcom,glymur-mdss.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/display/msm/qcom,glymur-mdss.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm Glymur Display MDSS 8 + 9 + maintainers: 10 + - Abel Vesa <abel.vesa@linaro.org> 11 + 12 + description: 13 + Glymur MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like 14 + DPU display controller, DP interfaces, etc. 15 + 16 + $ref: /schemas/display/msm/mdss-common.yaml# 17 + 18 + properties: 19 + compatible: 20 + const: qcom,glymur-mdss 21 + 22 + clocks: 23 + items: 24 + - description: Display AHB 25 + - description: Display hf AXI 26 + - description: Display core 27 + 28 + iommus: 29 + maxItems: 1 30 + 31 + interconnects: 32 + items: 33 + - description: Interconnect path from mdp0 port to the data bus 34 + - description: Interconnect path from CPU to the reg bus 35 + 36 + interconnect-names: 37 + items: 38 + - const: mdp0-mem 39 + - const: cpu-cfg 40 + 41 + patternProperties: 42 + "^display-controller@[0-9a-f]+$": 43 + type: object 44 + additionalProperties: true 45 + properties: 46 + compatible: 47 + const: qcom,glymur-dpu 48 + 49 + "^displayport-controller@[0-9a-f]+$": 50 + type: object 51 + additionalProperties: true 52 + properties: 53 + compatible: 54 + const: qcom,glymur-dp 55 + 56 + "^phy@[0-9a-f]+$": 57 + type: object 58 + additionalProperties: true 59 + properties: 60 + compatible: 61 + const: qcom,glymur-dp-phy 62 + 63 + required: 64 + - compatible 65 + 66 + unevaluatedProperties: false 67 + 68 + examples: 69 + - | 70 + #include <dt-bindings/clock/qcom,rpmh.h> 71 + #include <dt-bindings/interconnect/qcom,icc.h> 72 + #include <dt-bindings/interconnect/qcom,glymur-rpmh.h> 73 + #include <dt-bindings/interrupt-controller/arm-gic.h> 74 + #include <dt-bindings/phy/phy-qcom-qmp.h> 75 + #include <dt-bindings/power/qcom,rpmhpd.h> 76 + 77 + display-subsystem@ae00000 { 78 + compatible = "qcom,glymur-mdss"; 79 + reg = <0x0ae00000 0x1000>; 80 + reg-names = "mdss"; 81 + 82 + interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 83 + 84 + clocks = <&dispcc_ahb_clk>, 85 + <&gcc_disp_hf_axi_clk>, 86 + <&dispcc_mdp_clk>; 87 + clock-names = "bus", "nrt_bus", "core"; 88 + 89 + interconnects = <&mmss_noc MASTER_MDP QCOM_ICC_TAG_ALWAYS 90 + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, 91 + <&hsc_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY 92 + &config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>; 93 + interconnect-names = "mdp0-mem", 94 + "cpu-cfg"; 95 + 96 + resets = <&disp_cc_mdss_core_bcr>; 97 + 98 + power-domains = <&mdss_gdsc>; 99 + 100 + iommus = <&apps_smmu 0x1c00 0x2>; 101 + 102 + interrupt-controller; 103 + #interrupt-cells = <1>; 104 + 105 + #address-cells = <1>; 106 + #size-cells = <1>; 107 + ranges; 108 + 109 + display-controller@ae01000 { 110 + compatible = "qcom,glymur-dpu"; 111 + reg = <0x0ae01000 0x8f000>, 112 + <0x0aeb0000 0x2008>; 113 + reg-names = "mdp", "vbif"; 114 + 115 + clocks = <&gcc_axi_clk>, 116 + <&dispcc_ahb_clk>, 117 + <&dispcc_mdp_lut_clk>, 118 + <&dispcc_mdp_clk>, 119 + <&dispcc_mdp_vsync_clk>; 120 + clock-names = "nrt_bus", 121 + "iface", 122 + "lut", 123 + "core", 124 + "vsync"; 125 + 126 + assigned-clocks = <&dispcc_mdp_vsync_clk>; 127 + assigned-clock-rates = <19200000>; 128 + 129 + operating-points-v2 = <&mdp_opp_table>; 130 + power-domains = <&rpmhpd RPMHPD_MMCX>; 131 + 132 + interrupt-parent = <&mdss>; 133 + interrupts = <0>; 134 + 135 + ports { 136 + #address-cells = <1>; 137 + #size-cells = <0>; 138 + 139 + port@0 { 140 + reg = <0>; 141 + dpu_intf1_out: endpoint { 142 + remote-endpoint = <&dsi0_in>; 143 + }; 144 + }; 145 + 146 + port@1 { 147 + reg = <1>; 148 + dpu_intf2_out: endpoint { 149 + remote-endpoint = <&dsi1_in>; 150 + }; 151 + }; 152 + }; 153 + 154 + mdp_opp_table: opp-table { 155 + compatible = "operating-points-v2"; 156 + 157 + opp-200000000 { 158 + opp-hz = /bits/ 64 <200000000>; 159 + required-opps = <&rpmhpd_opp_low_svs>; 160 + }; 161 + 162 + opp-325000000 { 163 + opp-hz = /bits/ 64 <325000000>; 164 + required-opps = <&rpmhpd_opp_svs>; 165 + }; 166 + 167 + opp-375000000 { 168 + opp-hz = /bits/ 64 <375000000>; 169 + required-opps = <&rpmhpd_opp_svs_l1>; 170 + }; 171 + 172 + opp-514000000 { 173 + opp-hz = /bits/ 64 <514000000>; 174 + required-opps = <&rpmhpd_opp_nom>; 175 + }; 176 + }; 177 + }; 178 + 179 + displayport-controller@ae90000 { 180 + compatible = "qcom,glymur-dp"; 181 + reg = <0xae90000 0x200>, 182 + <0xae90200 0x200>, 183 + <0xae90400 0x600>, 184 + <0xae91000 0x400>, 185 + <0xae91400 0x400>; 186 + 187 + interrupt-parent = <&mdss>; 188 + interrupts = <12>; 189 + 190 + clocks = <&dispcc_mdss_ahb_clk>, 191 + <&dispcc_dptx0_aux_clk>, 192 + <&dispcc_dptx0_link_clk>, 193 + <&dispcc_dptx0_link_intf_clk>, 194 + <&dispcc_dptx0_pixel0_clk>, 195 + <&dispcc_dptx0_pixel1_clk>; 196 + clock-names = "core_iface", 197 + "core_aux", 198 + "ctrl_link", 199 + "ctrl_link_iface", 200 + "stream_pixel", 201 + "stream_1_pixel"; 202 + 203 + assigned-clocks = <&dispcc_mdss_dptx0_link_clk_src>, 204 + <&dispcc_mdss_dptx0_pixel0_clk_src>, 205 + <&dispcc_mdss_dptx0_pixel1_clk_src>; 206 + assigned-clock-parents = <&usb_1_ss0_qmpphy QMP_USB43DP_DP_LINK_CLK>, 207 + <&usb_1_ss0_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>, 208 + <&usb_1_ss0_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>; 209 + 210 + operating-points-v2 = <&mdss_dp0_opp_table>; 211 + 212 + power-domains = <&rpmhpd RPMHPD_MMCX>; 213 + 214 + phys = <&usb_1_ss0_qmpphy QMP_USB43DP_DP_PHY>; 215 + phy-names = "dp"; 216 + 217 + #sound-dai-cells = <0>; 218 + 219 + ports { 220 + #address-cells = <1>; 221 + #size-cells = <0>; 222 + 223 + port@0 { 224 + reg = <0>; 225 + 226 + mdss_dp0_in: endpoint { 227 + remote-endpoint = <&mdss_intf0_out>; 228 + }; 229 + }; 230 + 231 + port@1 { 232 + reg = <1>; 233 + 234 + mdss_dp0_out: endpoint { 235 + }; 236 + }; 237 + }; 238 + 239 + mdss_dp0_opp_table: opp-table { 240 + compatible = "operating-points-v2"; 241 + 242 + opp-160000000 { 243 + opp-hz = /bits/ 64 <160000000>; 244 + required-opps = <&rpmhpd_opp_low_svs>; 245 + }; 246 + 247 + opp-270000000 { 248 + opp-hz = /bits/ 64 <270000000>; 249 + required-opps = <&rpmhpd_opp_svs>; 250 + }; 251 + 252 + opp-540000000 { 253 + opp-hz = /bits/ 64 <540000000>; 254 + required-opps = <&rpmhpd_opp_svs_l1>; 255 + }; 256 + 257 + opp-810000000 { 258 + opp-hz = /bits/ 64 <810000000>; 259 + required-opps = <&rpmhpd_opp_nom>; 260 + }; 261 + }; 262 + }; 263 + }; 264 + ...