On 25/11/2023 16:59, Konrad Dybcio wrote: > Add bindings for Qualcomm SM6115 Network-On-Chip interconnect. > > Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx> > --- > .../bindings/interconnect/qcom,sm6115.yaml | 128 +++++++++++++++++++++ > include/dt-bindings/interconnect/qcom,sm6115.h | 111 ++++++++++++++++++ > 2 files changed, 239 insertions(+) > > diff --git a/Documentation/devicetree/bindings/interconnect/qcom,sm6115.yaml b/Documentation/devicetree/bindings/interconnect/qcom,sm6115.yaml > new file mode 100644 > index 000000000000..8908946eb391 > --- /dev/null > +++ b/Documentation/devicetree/bindings/interconnect/qcom,sm6115.yaml > @@ -0,0 +1,128 @@ > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/interconnect/qcom,sm6115.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Qualcomm SM6115 Network-On-Chip interconnect > + > +maintainers: > + - Konrad Dybcio <konradybcio@xxxxxxxxxx> > + > +description: | Do not need '|' unless you need to preserve formatting. > + The Qualcomm SM6115 interconnect providers support adjusting the > + bandwidth requirements between the various NoC fabrics. > + > +properties: > + reg: > + maxItems: 1 > + > + compatible: compatible is the first in properties (move it before reg). > + enum: > + - qcom,sm6115-bimc > + - qcom,sm6115-cnoc > + - qcom,sm6115-snoc > + Add clocks: with min/maxItems here. Same with clock-names. > +# Child node's properties > +patternProperties: > + '^interconnect-[a-z0-9]+$': > + type: object > + description: > + The interconnect providers do not have a separate QoS register space, > + but share parent's space. > + > + allOf: Drop allOf, just $ref. > + - $ref: qcom,rpm-common.yaml# > + > + properties: > + compatible: > + enum: > + - qcom,sm6115-clk-virt > + - qcom,sm6115-mmrt-virt > + - qcom,sm6115-mmnrt-virt > + > + required: > + - compatible > + > + unevaluatedProperties: false > + > +required: > + - compatible > + - reg > + > +unevaluatedProperties: false Put it after allOf: block. > + > +allOf: > + - $ref: qcom,rpm-common.yaml# > + - if: > + properties: > + compatible: > + const: qcom,sm6115-cnoc > + > + then: > + properties: > + clocks: > + items: > + - description: USB-NoC AXI clock > + > + clock-names: > + items: > + - const: usb_axi > + > + - if: > + properties: > + compatible: > + const: qcom,sm6115-snoc > + > + then: > + properties: > + clocks: > + items: > + - description: CPU-NoC AXI clock. > + - description: UFS-NoC AXI clock. > + - description: USB-NoC AXI clock. > + - description: IPA clock. > + > + clock-names: > + items: > + - const: cpu_axi > + - const: ufs_axi > + - const: usb_axi > + - const: ipa Add if: for remaining variant disallowing clocks and clock-names. (clocks: false) > + > +examples: > + - | > + #include <dt-bindings/clock/qcom,rpmcc.h> Is it used? > + > + snoc: interconnect@1880000 { > + compatible = "qcom,sm6115-snoc"; > + reg = <0x01880000 0x60200>; > + #interconnect-cells = <1>; Missing clocks. > + > + qup_virt: interconnect-qup { > + compatible = "qcom,sm6115-qup-virt"; > + #interconnect-cells = <1>; > + }; > + > + mmnrt_virt: interconnect-mmnrt { > + compatible = "qcom,sm6115-mmnrt-virt"; > + #interconnect-cells = <1>; > + }; > + > + mmrt_virt: interconnect-mmrt { > + compatible = "qcom,sm6115-mmrt-virt"; > + #interconnect-cells = <1>; > + }; > + }; > + > + cnoc: interconnect@1900000 { > + compatible = "qcom,sm6115-cnoc"; > + reg = <0x01900000 0x8200>; > + #interconnect-cells = <1>; > + }; > + > + bimc: interconnect@4480000 { > + compatible = "qcom,sm6115-bimc"; > + reg = <0x04480000 0x80000>; > + #interconnect-cells = <1>; > + }; Drop this node, duplicates cnoc. > diff --git a/include/dt-bindings/interconnect/qcom,sm6115.h b/include/dt-bindings/interconnect/qcom,sm6115.h > new file mode 100644 > index 000000000000..21090e585f05 Best regards, Krzysztof