mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
On a vast majority of Qualcomm chipsets DisplayPort controller can support several MST streams (up to 4x). To support MST these chipsets use up to 4 stream pixel clocks for the DisplayPort controller and several extra register regions. Expand corresponding region and clock bindings for these platforms and fix example schema files to follow updated bindings. Note: On chipsets that support MST, the number of streams supported can vary between controllers. For example, SA8775P supports 4 MST streams on mdss_dp0 but only 2 streams on mdss_dp1. Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com> Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Patchwork: https://patchwork.freedesktop.org/patch/672585/ Link: https://lore.kernel.org/r/20250903-dp_mst_bindings-v8-7-7526f0311eaa@oss.qualcomm.com
256 lines
7.0 KiB
YAML
256 lines
7.0 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/display/msm/qcom,x1e80100-mdss.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Qualcomm X1E80100 Display MDSS
|
|
|
|
maintainers:
|
|
- Abel Vesa <abel.vesa@linaro.org>
|
|
|
|
description:
|
|
X1E80100 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
|
|
DPU display controller, DP interfaces, etc.
|
|
|
|
$ref: /schemas/display/msm/mdss-common.yaml#
|
|
|
|
properties:
|
|
compatible:
|
|
const: qcom,x1e80100-mdss
|
|
|
|
clocks:
|
|
items:
|
|
- description: Display AHB
|
|
- description: Display hf AXI
|
|
- description: Display core
|
|
|
|
iommus:
|
|
maxItems: 1
|
|
|
|
interconnects:
|
|
maxItems: 3
|
|
|
|
interconnect-names:
|
|
maxItems: 3
|
|
|
|
patternProperties:
|
|
"^display-controller@[0-9a-f]+$":
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
compatible:
|
|
const: qcom,x1e80100-dpu
|
|
|
|
"^displayport-controller@[0-9a-f]+$":
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
compatible:
|
|
const: qcom,x1e80100-dp
|
|
|
|
"^phy@[0-9a-f]+$":
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
compatible:
|
|
const: qcom,x1e80100-dp-phy
|
|
|
|
required:
|
|
- compatible
|
|
|
|
unevaluatedProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/clock/qcom,rpmh.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
#include <dt-bindings/interconnect/qcom,x1e80100-rpmh.h>
|
|
#include <dt-bindings/phy/phy-qcom-qmp.h>
|
|
#include <dt-bindings/power/qcom,rpmhpd.h>
|
|
|
|
display-subsystem@ae00000 {
|
|
compatible = "qcom,x1e80100-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>,
|
|
<&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_DISPLAY_CFG 0>;
|
|
interconnect-names = "mdp0-mem", "mdp1-mem", "cpu-cfg";
|
|
|
|
resets = <&dispcc_core_bcr>;
|
|
|
|
power-domains = <&dispcc_gdsc>;
|
|
|
|
clocks = <&dispcc_ahb_clk>,
|
|
<&gcc_disp_hf_axi_clk>,
|
|
<&dispcc_mdp_clk>;
|
|
clock-names = "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,x1e80100-dpu";
|
|
reg = <0x0ae01000 0x8f000>,
|
|
<0x0aeb0000 0x2008>;
|
|
reg-names = "mdp", "vbif";
|
|
|
|
clocks = <&gcc_axi_clk>,
|
|
<&dispcc_ahb_clk>,
|
|
<&dispcc_mdp_lut_clk>,
|
|
<&dispcc_mdp_clk>,
|
|
<&dispcc_mdp_vsync_clk>;
|
|
clock-names = "nrt_bus",
|
|
"iface",
|
|
"lut",
|
|
"core",
|
|
"vsync";
|
|
|
|
assigned-clocks = <&dispcc_mdp_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>;
|
|
};
|
|
};
|
|
};
|
|
|
|
displayport-controller@ae90000 {
|
|
compatible = "qcom,x1e80100-dp";
|
|
reg = <0xae90000 0x200>,
|
|
<0xae90200 0x200>,
|
|
<0xae90400 0x600>,
|
|
<0xae91000 0x400>,
|
|
<0xae91400 0x400>;
|
|
|
|
interrupt-parent = <&mdss>;
|
|
interrupts = <12>;
|
|
|
|
clocks = <&dispcc_mdss_ahb_clk>,
|
|
<&dispcc_dptx0_aux_clk>,
|
|
<&dispcc_dptx0_link_clk>,
|
|
<&dispcc_dptx0_link_intf_clk>,
|
|
<&dispcc_dptx0_pixel0_clk>,
|
|
<&dispcc_dptx0_pixel1_clk>;
|
|
clock-names = "core_iface", "core_aux",
|
|
"ctrl_link",
|
|
"ctrl_link_iface",
|
|
"stream_pixel",
|
|
"stream_1_pixel";
|
|
|
|
assigned-clocks = <&dispcc_mdss_dptx0_link_clk_src>,
|
|
<&dispcc_mdss_dptx0_pixel0_clk_src>,
|
|
<&dispcc_mdss_dptx0_pixel1_clk_src>;
|
|
assigned-clock-parents = <&usb_1_ss0_qmpphy QMP_USB43DP_DP_LINK_CLK>,
|
|
<&usb_1_ss0_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>,
|
|
<&usb_1_ss0_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>;
|
|
|
|
operating-points-v2 = <&mdss_dp0_opp_table>;
|
|
|
|
power-domains = <&rpmhpd RPMHPD_MMCX>;
|
|
|
|
phys = <&usb_1_ss0_qmpphy QMP_USB43DP_DP_PHY>;
|
|
phy-names = "dp";
|
|
|
|
#sound-dai-cells = <0>;
|
|
|
|
ports {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
port@0 {
|
|
reg = <0>;
|
|
|
|
mdss_dp0_in: endpoint {
|
|
remote-endpoint = <&mdss_intf0_out>;
|
|
};
|
|
};
|
|
|
|
port@1 {
|
|
reg = <1>;
|
|
|
|
mdss_dp0_out: endpoint {
|
|
};
|
|
};
|
|
};
|
|
|
|
mdss_dp0_opp_table: opp-table {
|
|
compatible = "operating-points-v2";
|
|
|
|
opp-160000000 {
|
|
opp-hz = /bits/ 64 <160000000>;
|
|
required-opps = <&rpmhpd_opp_low_svs>;
|
|
};
|
|
|
|
opp-270000000 {
|
|
opp-hz = /bits/ 64 <270000000>;
|
|
required-opps = <&rpmhpd_opp_svs>;
|
|
};
|
|
|
|
opp-540000000 {
|
|
opp-hz = /bits/ 64 <540000000>;
|
|
required-opps = <&rpmhpd_opp_svs_l1>;
|
|
};
|
|
|
|
opp-810000000 {
|
|
opp-hz = /bits/ 64 <810000000>;
|
|
required-opps = <&rpmhpd_opp_nom>;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
...
|