mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -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
465 lines
14 KiB
YAML
465 lines
14 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/display/msm/qcom,sa8775p-mdss.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Qualcomm Technologies, Inc. SA87755P Display MDSS
|
|
|
|
maintainers:
|
|
- Mahadevan <quic_mahap@quicinc.com>
|
|
|
|
description:
|
|
SA8775P MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
|
|
DPU display controller, DP interfaces and EDP etc.
|
|
|
|
$ref: /schemas/display/msm/mdss-common.yaml#
|
|
|
|
properties:
|
|
compatible:
|
|
const: qcom,sa8775p-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,sa8775p-dpu
|
|
|
|
"^displayport-controller@[0-9a-f]+$":
|
|
type: object
|
|
additionalProperties: true
|
|
|
|
properties:
|
|
compatible:
|
|
items:
|
|
- const: qcom,sa8775p-dp
|
|
|
|
"^dsi@[0-9a-f]+$":
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: qcom,sa8775p-dsi-ctrl
|
|
|
|
"^phy@[0-9a-f]+$":
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,sa8775p-dsi-phy-5nm
|
|
- qcom,sa8775p-edp-phy
|
|
|
|
required:
|
|
- compatible
|
|
|
|
unevaluatedProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/interconnect/qcom,icc.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
#include <dt-bindings/clock/qcom,sa8775p-dispcc.h>
|
|
#include <dt-bindings/clock/qcom,sa8775p-gcc.h>
|
|
#include <dt-bindings/interconnect/qcom,sa8775p-rpmh.h>
|
|
#include <dt-bindings/power/qcom,rpmhpd.h>
|
|
#include <dt-bindings/power/qcom-rpmpd.h>
|
|
|
|
display-subsystem@ae00000 {
|
|
compatible = "qcom,sa8775p-mdss";
|
|
reg = <0x0ae00000 0x1000>;
|
|
reg-names = "mdss";
|
|
|
|
interconnects = <&mmss_noc MASTER_MDP0 &mc_virt SLAVE_EBI1>,
|
|
<&mmss_noc MASTER_MDP1 &mc_virt SLAVE_EBI1>,
|
|
<&gem_noc MASTER_APPSS_PROC &config_noc SLAVE_DISPLAY_CFG>;
|
|
interconnect-names = "mdp0-mem",
|
|
"mdp1-mem",
|
|
"cpu-cfg";
|
|
|
|
resets = <&dispcc_core_bcr>;
|
|
power-domains = <&dispcc_gdsc>;
|
|
|
|
clocks = <&dispcc_ahb_clk>,
|
|
<&gcc GCC_DISP_HF_AXI_CLK>,
|
|
<&dispcc_mdp_clk>;
|
|
|
|
interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <1>;
|
|
|
|
iommus = <&apps_smmu 0x1000 0x402>;
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
ranges;
|
|
|
|
display-controller@ae01000 {
|
|
compatible = "qcom,sa8775p-dpu";
|
|
reg = <0x0ae01000 0x8f000>,
|
|
<0x0aeb0000 0x2008>;
|
|
reg-names = "mdp", "vbif";
|
|
|
|
clocks = <&gcc GCC_DISP_HF_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 = <&mdss0_mdp_opp_table>;
|
|
power-domains = <&rpmhpd RPMHPD_MMCX>;
|
|
|
|
interrupt-parent = <&mdss0>;
|
|
interrupts = <0>;
|
|
|
|
ports {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
port@0 {
|
|
reg = <0>;
|
|
dpu_intf0_out: endpoint {
|
|
remote-endpoint = <&mdss0_dp0_in>;
|
|
};
|
|
};
|
|
|
|
port@1 {
|
|
reg = <1>;
|
|
dpu_intf1_out: endpoint {
|
|
remote-endpoint = <&mdss0_dsi0_in>;
|
|
};
|
|
};
|
|
|
|
port@2 {
|
|
reg = <2>;
|
|
dpu_intf2_out: endpoint {
|
|
remote-endpoint = <&mdss0_dsi1_in>;
|
|
};
|
|
};
|
|
};
|
|
|
|
mdss0_mdp_opp_table: opp-table {
|
|
compatible = "operating-points-v2";
|
|
|
|
opp-375000000 {
|
|
opp-hz = /bits/ 64 <375000000>;
|
|
required-opps = <&rpmhpd_opp_svs_l1>;
|
|
};
|
|
|
|
opp-500000000 {
|
|
opp-hz = /bits/ 64 <500000000>;
|
|
required-opps = <&rpmhpd_opp_nom>;
|
|
};
|
|
|
|
opp-575000000 {
|
|
opp-hz = /bits/ 64 <575000000>;
|
|
required-opps = <&rpmhpd_opp_turbo>;
|
|
};
|
|
|
|
opp-650000000 {
|
|
opp-hz = /bits/ 64 <650000000>;
|
|
required-opps = <&rpmhpd_opp_turbo_l1>;
|
|
};
|
|
};
|
|
};
|
|
|
|
mdss0_dp0_phy: phy@aec2a00 {
|
|
compatible = "qcom,sa8775p-edp-phy";
|
|
|
|
reg = <0x0aec2a00 0x200>,
|
|
<0x0aec2200 0xd0>,
|
|
<0x0aec2600 0xd0>,
|
|
<0x0aec2000 0x1c8>;
|
|
|
|
clocks = <&dispcc0 MDSS_DISP_CC_MDSS_DPTX0_AUX_CLK>,
|
|
<&dispcc0 MDSS_DISP_CC_MDSS_AHB_CLK>;
|
|
clock-names = "aux",
|
|
"cfg_ahb";
|
|
|
|
#clock-cells = <1>;
|
|
#phy-cells = <0>;
|
|
|
|
vdda-phy-supply = <&vreg_l1c>;
|
|
vdda-pll-supply = <&vreg_l4a>;
|
|
};
|
|
|
|
dsi@ae94000 {
|
|
compatible = "qcom,sa8775p-dsi-ctrl", "qcom,mdss-dsi-ctrl";
|
|
reg = <0x0ae94000 0x400>;
|
|
reg-names = "dsi_ctrl";
|
|
|
|
interrupt-parent = <&mdss>;
|
|
interrupts = <4>;
|
|
|
|
clocks = <&dispc_byte_clk>,
|
|
<&dispcc_intf_clk>,
|
|
<&dispcc_pclk>,
|
|
<&dispcc_esc_clk>,
|
|
<&dispcc_ahb_clk>,
|
|
<&gcc_bus_clk>;
|
|
clock-names = "byte",
|
|
"byte_intf",
|
|
"pixel",
|
|
"core",
|
|
"iface",
|
|
"bus";
|
|
assigned-clocks = <&dispcc_byte_clk>,
|
|
<&dispcc_pclk>;
|
|
assigned-clock-parents = <&mdss0_dsi0_phy 0>, <&mdss0_dsi0_phy 1>;
|
|
phys = <&mdss0_dsi0_phy>;
|
|
|
|
operating-points-v2 = <&dsi0_opp_table>;
|
|
power-domains = <&rpmhpd SA8775P_MMCX>;
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
ports {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
port@0 {
|
|
reg = <0>;
|
|
mdss0_dsi0_in: endpoint {
|
|
remote-endpoint = <&dpu_intf1_out>;
|
|
};
|
|
};
|
|
|
|
port@1 {
|
|
reg = <1>;
|
|
mdss0_dsi0_out: endpoint { };
|
|
};
|
|
};
|
|
|
|
dsi0_opp_table: opp-table {
|
|
compatible = "operating-points-v2";
|
|
|
|
opp-358000000 {
|
|
opp-hz = /bits/ 64 <358000000>;
|
|
required-opps = <&rpmhpd_opp_svs_l1>;
|
|
};
|
|
};
|
|
};
|
|
|
|
mdss0_dsi0_phy: phy@ae94400 {
|
|
compatible = "qcom,sa8775p-dsi-phy-5nm";
|
|
reg = <0x0ae94400 0x200>,
|
|
<0x0ae94600 0x280>,
|
|
<0x0ae94900 0x27c>;
|
|
reg-names = "dsi_phy",
|
|
"dsi_phy_lane",
|
|
"dsi_pll";
|
|
|
|
#clock-cells = <1>;
|
|
#phy-cells = <0>;
|
|
|
|
clocks = <&dispcc_iface_clk>,
|
|
<&rpmhcc_ref_clk>;
|
|
clock-names = "iface", "ref";
|
|
|
|
vdds-supply = <&vreg_dsi_supply>;
|
|
};
|
|
|
|
dsi@ae96000 {
|
|
compatible = "qcom,sa8775p-dsi-ctrl", "qcom,mdss-dsi-ctrl";
|
|
reg = <0x0ae96000 0x400>;
|
|
reg-names = "dsi_ctrl";
|
|
|
|
interrupt-parent = <&mdss>;
|
|
interrupts = <4>;
|
|
|
|
clocks = <&dispc_byte_clk>,
|
|
<&dispcc_intf_clk>,
|
|
<&dispcc_pclk>,
|
|
<&dispcc_esc_clk>,
|
|
<&dispcc_ahb_clk>,
|
|
<&gcc_bus_clk>;
|
|
clock-names = "byte",
|
|
"byte_intf",
|
|
"pixel",
|
|
"core",
|
|
"iface",
|
|
"bus";
|
|
assigned-clocks = <&dispcc_byte_clk>,
|
|
<&dispcc_pclk>;
|
|
assigned-clock-parents = <&mdss0_dsi1_phy 0>, <&mdss0_dsi1_phy 1>;
|
|
phys = <&mdss0_dsi1_phy>;
|
|
|
|
operating-points-v2 = <&dsi1_opp_table>;
|
|
power-domains = <&rpmhpd SA8775P_MMCX>;
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
ports {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
port@0 {
|
|
reg = <0>;
|
|
mdss0_dsi1_in: endpoint {
|
|
remote-endpoint = <&dpu_intf2_out>;
|
|
};
|
|
};
|
|
|
|
port@1 {
|
|
reg = <1>;
|
|
mdss0_dsi1_out: endpoint { };
|
|
};
|
|
};
|
|
|
|
dsi1_opp_table: opp-table {
|
|
compatible = "operating-points-v2";
|
|
|
|
opp-358000000 {
|
|
opp-hz = /bits/ 64 <358000000>;
|
|
required-opps = <&rpmhpd_opp_svs_l1>;
|
|
};
|
|
};
|
|
};
|
|
|
|
mdss0_dsi1_phy: phy@ae96400 {
|
|
compatible = "qcom,sa8775p-dsi-phy-5nm";
|
|
reg = <0x0ae96400 0x200>,
|
|
<0x0ae96600 0x280>,
|
|
<0x0ae96900 0x27c>;
|
|
reg-names = "dsi_phy",
|
|
"dsi_phy_lane",
|
|
"dsi_pll";
|
|
|
|
#clock-cells = <1>;
|
|
#phy-cells = <0>;
|
|
|
|
clocks = <&dispcc_iface_clk>,
|
|
<&rpmhcc_ref_clk>;
|
|
clock-names = "iface", "ref";
|
|
|
|
vdds-supply = <&vreg_dsi_supply>;
|
|
};
|
|
|
|
displayport-controller@af54000 {
|
|
compatible = "qcom,sa8775p-dp";
|
|
|
|
pinctrl-0 = <&dp_hot_plug_det>;
|
|
pinctrl-names = "default";
|
|
|
|
reg = <0xaf54000 0x104>,
|
|
<0xaf54200 0x0c0>,
|
|
<0xaf55000 0x770>,
|
|
<0xaf56000 0x09c>,
|
|
<0xaf57000 0x09c>,
|
|
<0xaf58000 0x09c>,
|
|
<0xaf59000 0x09c>,
|
|
<0xaf5a000 0x23c>,
|
|
<0xaf5b000 0x23c>;
|
|
|
|
interrupt-parent = <&mdss0>;
|
|
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>,
|
|
<&dispcc_dptx0_pixel2_clk>,
|
|
<&dispcc_dptx0_pixel3_clk>;
|
|
clock-names = "core_iface",
|
|
"core_aux",
|
|
"ctrl_link",
|
|
"ctrl_link_iface",
|
|
"stream_pixel",
|
|
"stream_1_pixel",
|
|
"stream_2_pixel",
|
|
"stream_3_pixel";
|
|
|
|
assigned-clocks = <&dispcc_mdss_dptx0_link_clk_src>,
|
|
<&dispcc_mdss_dptx0_pixel0_clk_src>,
|
|
<&dispcc_mdss_dptx0_pixel1_clk_src>,
|
|
<&dispcc_mdss_dptx0_pixel2_clk_src>,
|
|
<&dispcc_mdss_dptx0_pixel3_clk_src>;
|
|
assigned-clock-parents = <&mdss0_dp0_phy 0>,
|
|
<&mdss0_dp0_phy 1>,
|
|
<&mdss0_dp0_phy 1>,
|
|
<&mdss0_dp0_phy 1>;
|
|
|
|
phys = <&mdss0_dp0_phy>;
|
|
phy-names = "dp";
|
|
|
|
operating-points-v2 = <&dp_opp_table>;
|
|
power-domains = <&rpmhpd SA8775P_MMCX>;
|
|
|
|
#sound-dai-cells = <0>;
|
|
|
|
ports {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
port@0 {
|
|
reg = <0>;
|
|
mdss0_dp0_in: endpoint {
|
|
remote-endpoint = <&dpu_intf0_out>;
|
|
};
|
|
};
|
|
|
|
port@1 {
|
|
reg = <1>;
|
|
mdss0_dp_out: endpoint { };
|
|
};
|
|
};
|
|
|
|
dp_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>;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
...
|