Document the MDSS hardware found on the Qualcomm SA8775P platform.
Signed-off-by: Mahadevan <quic_mahap@quicinc.com>
---
[v2]
- Use fake DISPCC nodes to avoid clock dependencies in dt-bindings. [Dmitry]
- Update bindings by fixing dt_binding_check tool errors (update includes in example),
adding proper spacing and indentation in binding example, dropping unused labels,
dropping status disable, adding reset node. [Dmitry, Rob, Krzysztof]
---
.../display/msm/qcom,sa8775p-mdss.yaml | 239 ++++++++++++++++++
1 file changed, 239 insertions(+)
create mode 100644 Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml
new file mode 100644
index 000000000000..e610b66ffa9f
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml
@@ -0,0 +1,239 @@
+# 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
+ properties:
+ compatible:
+ const: qcom,sa8775p-dpu
+
+ "^displayport-controller@[0-9a-f]+$":
+ type: object
+ properties:
+ compatible:
+ items:
+ - const: qcom,sa8775p-dp
+
+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-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 = <0 0x0ae00000 0 0x1000>;
+ reg-names = "mdss";
+
+ /* same path used twice */
+ interconnects = <&mmss_noc MASTER_MDP0 0 &mc_virt SLAVE_EBI1 0>,
+ <&mmss_noc MASTER_MDP1 0 &mc_virt SLAVE_EBI1 0>,
+ <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+ &config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
+ 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 = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ display-controller@ae01000 {
+ compatible = "qcom,sa8775p-dpu";
+ reg = <0 0x0ae01000 0 0x8f000>,
+ <0 0x0aeb0000 0 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 = "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>;
+ };
+ };
+ };
+
+ 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>;
+ };
+ };
+ };
+
+ displayport-controller@af54000 {
+ compatible = "qcom,sa8775p-dp";
+
+ pinctrl-0 = <&dp_hot_plug_det>;
+ pinctrl-names = "default";
+
+ reg = <0 0xaf54000 0 0x104>,
+ <0 0xaf54200 0 0x0c0>,
+ <0 0xaf55000 0 0x770>,
+ <0 0xaf56000 0 0x09c>;
+
+ 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>;
+ clock-names = "core_iface",
+ "core_aux",
+ "ctrl_link",
+ "ctrl_link_iface",
+ "stream_pixel";
+
+ assigned-clocks = <&dispcc_mdss_dptx0_link_clk_src>,
+ <&dispcc_mdss_dptx0_pixel0_clk_src>;
+ assigned-clock-parents = <&mdss0_edp_phy 0>, <&mdss0_edp_phy 1>;
+
+ phys = <&mdss0_edp_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>;
+ };
+ };
+ };
+ };
+...
--
2.34.1
On 26/09/2024 13:01, Mahadevan wrote: > + > + 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 > + properties: > + compatible: > + const: qcom,sa8775p-dpu Which binding did you used as an example? On which kernel was this developed? Best regards, Krzysztof
On Thu, Sep 26, 2024 at 04:31:33PM +0530, Mahadevan wrote: > Document the MDSS hardware found on the Qualcomm SA8775P platform. > > Signed-off-by: Mahadevan <quic_mahap@quicinc.com> > --- > > [v2] > - Use fake DISPCC nodes to avoid clock dependencies in dt-bindings. [Dmitry] > - Update bindings by fixing dt_binding_check tool errors (update includes in example), > adding proper spacing and indentation in binding example, dropping unused labels, > dropping status disable, adding reset node. [Dmitry, Rob, Krzysztof] No concerns with the changelog, but please adopt b4 (go/upstream has instructions) for sending patches upstream. > > --- > .../display/msm/qcom,sa8775p-mdss.yaml | 239 ++++++++++++++++++ > 1 file changed, 239 insertions(+) > create mode 100644 Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml > > diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml > new file mode 100644 > index 000000000000..e610b66ffa9f > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml > @@ -0,0 +1,239 @@ > +# 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> Please use Firstname Lastname, if possible > + > +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# > + [..] > + > +examples: > + - | > + #include <dt-bindings/interconnect/qcom,icc.h> > + #include <dt-bindings/interrupt-controller/arm-gic.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 = <0 0x0ae00000 0 0x1000>; #address-cells and #size-cells are 1 in the example root node, so drop the two 0 entries. > + reg-names = "mdss"; > + > + /* same path used twice */ What do you mean? All three paths below are unique. > + interconnects = <&mmss_noc MASTER_MDP0 0 &mc_virt SLAVE_EBI1 0>, > + <&mmss_noc MASTER_MDP1 0 &mc_virt SLAVE_EBI1 0>, > + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY > + &config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>; > + interconnect-names = "mdp0-mem", > + "mdp1-mem", > + "cpu-cfg"; > + > + Regards, Bjorn
On 9/26/2024 6:54 PM, Bjorn Andersson wrote: > On Thu, Sep 26, 2024 at 04:31:33PM +0530, Mahadevan wrote: >> Document the MDSS hardware found on the Qualcomm SA8775P platform. >> >> Signed-off-by: Mahadevan <quic_mahap@quicinc.com> >> --- >> >> [v2] >> - Use fake DISPCC nodes to avoid clock dependencies in dt-bindings. [Dmitry] >> - Update bindings by fixing dt_binding_check tool errors (update includes in example), >> adding proper spacing and indentation in binding example, dropping unused labels, >> dropping status disable, adding reset node. [Dmitry, Rob, Krzysztof] > No concerns with the changelog, but please adopt b4 (go/upstream has > instructions) for sending patches upstream. Sure, will follow while posting next patch. > >> --- >> .../display/msm/qcom,sa8775p-mdss.yaml | 239 ++++++++++++++++++ >> 1 file changed, 239 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml >> >> diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml >> new file mode 100644 >> index 000000000000..e610b66ffa9f >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml >> @@ -0,0 +1,239 @@ >> +# 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> > Please use Firstname Lastname, if possible My name has only First name, can I please go ahead with this. > >> + >> +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# >> + > [..] >> + >> +examples: >> + - | >> + #include <dt-bindings/interconnect/qcom,icc.h> >> + #include <dt-bindings/interrupt-controller/arm-gic.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 = <0 0x0ae00000 0 0x1000>; > #address-cells and #size-cells are 1 in the example root node, so drop > the two 0 entries. > >> + reg-names = "mdss"; >> + >> + /* same path used twice */ > What do you mean? All three paths below are unique. Yes all three are paths are unique, its same sm8450-mdss. Will remove the comment /* same path used twice */. > >> + interconnects = <&mmss_noc MASTER_MDP0 0 &mc_virt SLAVE_EBI1 0>, >> + <&mmss_noc MASTER_MDP1 0 &mc_virt SLAVE_EBI1 0>, >> + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY >> + &config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>; >> + interconnect-names = "mdp0-mem", >> + "mdp1-mem", >> + "cpu-cfg"; >> + >> + > Regards, > Bjorn Thanks, Mahadevan
On Thu, 26 Sep 2024 16:31:33 +0530, Mahadevan wrote: > Document the MDSS hardware found on the Qualcomm SA8775P platform. > > Signed-off-by: Mahadevan <quic_mahap@quicinc.com> > --- > > [v2] > - Use fake DISPCC nodes to avoid clock dependencies in dt-bindings. [Dmitry] > - Update bindings by fixing dt_binding_check tool errors (update includes in example), > adding proper spacing and indentation in binding example, dropping unused labels, > dropping status disable, adding reset node. [Dmitry, Rob, Krzysztof] > > --- > .../display/msm/qcom,sa8775p-mdss.yaml | 239 ++++++++++++++++++ > 1 file changed, 239 insertions(+) > create mode 100644 Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: dtschema/dtc warnings/errors: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml: ^display-controller@[0-9a-f]+$: Missing additionalProperties/unevaluatedProperties constraint /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml: ^displayport-controller@[0-9a-f]+$: Missing additionalProperties/unevaluatedProperties constraint Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.example.dts:61.13-20: Warning (ranges_format): /example-0/display-subsystem@ae00000:ranges: empty "ranges" property but its #address-cells (2) differs from /example-0 (1) Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.example.dts:61.13-20: Warning (ranges_format): /example-0/display-subsystem@ae00000:ranges: empty "ranges" property but its #size-cells (2) differs from /example-0 (1) /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.example.dtb: display-subsystem@ae00000: reg: [[0, 182452224], [0, 4096]] is too long from schema $id: http://devicetree.org/schemas/display/msm/qcom,sa8775p-mdss.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.example.dtb: display-subsystem@ae00000: Unevaluated properties are not allowed ('reg' was unexpected) from schema $id: http://devicetree.org/schemas/display/msm/qcom,sa8775p-mdss.yaml# doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20240926110137.2200158-2-quic_mahap@quicinc.com The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
On Thu, Sep 26, 2024 at 04:31:33PM GMT, Mahadevan wrote: > Document the MDSS hardware found on the Qualcomm SA8775P platform. > > Signed-off-by: Mahadevan <quic_mahap@quicinc.com> > --- > > [v2] > - Use fake DISPCC nodes to avoid clock dependencies in dt-bindings. [Dmitry] > - Update bindings by fixing dt_binding_check tool errors (update includes in example), > adding proper spacing and indentation in binding example, dropping unused labels, > dropping status disable, adding reset node. [Dmitry, Rob, Krzysztof] > > --- > .../display/msm/qcom,sa8775p-mdss.yaml | 239 ++++++++++++++++++ > 1 file changed, 239 insertions(+) > create mode 100644 Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml > > diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml > new file mode 100644 > index 000000000000..e610b66ffa9f > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/msm/qcom,sa8775p-mdss.yaml > @@ -0,0 +1,239 @@ > +# 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 > + properties: > + compatible: > + const: qcom,sa8775p-dpu > + > + "^displayport-controller@[0-9a-f]+$": > + type: object > + properties: > + compatible: > + items: > + - const: qcom,sa8775p-dp > + > +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-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 = <0 0x0ae00000 0 0x1000>; 0x0, not just 0, please. Here and alsmost everywhere else. > + reg-names = "mdss"; -- With best wishes Dmitry
© 2016 - 2024 Red Hat, Inc.