0001 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/interconnect/qcom,rpm.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006
0007 title: Qualcomm RPM Network-On-Chip Interconnect
0008
0009 maintainers:
0010 - Georgi Djakov <georgi.djakov@linaro.org>
0011
0012 description: |
0013 RPM interconnect providers support system bandwidth requirements through
0014 RPM processor. The provider is able to communicate with the RPM through
0015 the RPM shared memory device.
0016
0017 properties:
0018 reg:
0019 maxItems: 1
0020
0021 compatible:
0022 enum:
0023 - qcom,msm8916-bimc
0024 - qcom,msm8916-pcnoc
0025 - qcom,msm8916-snoc
0026 - qcom,msm8939-bimc
0027 - qcom,msm8939-pcnoc
0028 - qcom,msm8939-snoc
0029 - qcom,msm8996-a0noc
0030 - qcom,msm8996-a1noc
0031 - qcom,msm8996-a2noc
0032 - qcom,msm8996-bimc
0033 - qcom,msm8996-cnoc
0034 - qcom,msm8996-mnoc
0035 - qcom,msm8996-pnoc
0036 - qcom,msm8996-snoc
0037 - qcom,qcs404-bimc
0038 - qcom,qcs404-pcnoc
0039 - qcom,qcs404-snoc
0040 - qcom,sdm660-a2noc
0041 - qcom,sdm660-bimc
0042 - qcom,sdm660-cnoc
0043 - qcom,sdm660-gnoc
0044 - qcom,sdm660-mnoc
0045 - qcom,sdm660-snoc
0046
0047 '#interconnect-cells':
0048 description: |
0049 Value: <1> is one cell in an interconnect specifier for the
0050 interconnect node id, <2> requires the interconnect node id and an
0051 extra path tag.
0052 enum: [ 1, 2 ]
0053
0054 clocks:
0055 minItems: 2
0056 maxItems: 7
0057
0058 clock-names:
0059 minItems: 2
0060 maxItems: 7
0061
0062 power-domains:
0063 maxItems: 1
0064
0065 required:
0066 - compatible
0067 - reg
0068 - '#interconnect-cells'
0069 - clock-names
0070 - clocks
0071
0072 additionalProperties: false
0073
0074 allOf:
0075 - if:
0076 properties:
0077 compatible:
0078 contains:
0079 enum:
0080 - qcom,msm8916-bimc
0081 - qcom,msm8916-pcnoc
0082 - qcom,msm8916-snoc
0083 - qcom,msm8939-bimc
0084 - qcom,msm8939-pcnoc
0085 - qcom,msm8939-snoc
0086 - qcom,msm8996-a1noc
0087 - qcom,msm8996-a2noc
0088 - qcom,msm8996-bimc
0089 - qcom,msm8996-cnoc
0090 - qcom,msm8996-pnoc
0091 - qcom,msm8996-snoc
0092 - qcom,qcs404-bimc
0093 - qcom,qcs404-pcnoc
0094 - qcom,qcs404-snoc
0095 - qcom,sdm660-bimc
0096 - qcom,sdm660-cnoc
0097 - qcom,sdm660-gnoc
0098 - qcom,sdm660-snoc
0099
0100 then:
0101 properties:
0102 clock-names:
0103 items:
0104 - const: bus
0105 - const: bus_a
0106
0107 clocks:
0108 items:
0109 - description: Bus Clock
0110 - description: Bus A Clock
0111
0112 # Child node's properties
0113 patternProperties:
0114 '^interconnect-[a-z0-9]+$':
0115 type: object
0116 description:
0117 snoc-mm is a child of snoc, sharing snoc's register address space.
0118
0119 properties:
0120 compatible:
0121 enum:
0122 - qcom,msm8939-snoc-mm
0123
0124 '#interconnect-cells':
0125 const: 1
0126
0127 clock-names:
0128 items:
0129 - const: bus
0130 - const: bus_a
0131
0132 clocks:
0133 items:
0134 - description: Bus Clock
0135 - description: Bus A Clock
0136
0137 required:
0138 - compatible
0139 - '#interconnect-cells'
0140 - clock-names
0141 - clocks
0142
0143 - if:
0144 properties:
0145 compatible:
0146 contains:
0147 enum:
0148 - qcom,msm8996-mnoc
0149 - qcom,sdm660-mnoc
0150
0151 then:
0152 properties:
0153 clock-names:
0154 items:
0155 - const: bus
0156 - const: bus_a
0157 - const: iface
0158
0159 clocks:
0160 items:
0161 - description: Bus Clock.
0162 - description: Bus A Clock.
0163 - description: CPU-NoC High-performance Bus Clock.
0164
0165 - if:
0166 properties:
0167 compatible:
0168 contains:
0169 enum:
0170 - qcom,msm8996-a0noc
0171
0172 then:
0173 properties:
0174 clock-names:
0175 items:
0176 - const: aggre0_snoc_axi
0177 - const: aggre0_cnoc_ahb
0178 - const: aggre0_noc_mpu_cfg
0179
0180 clocks:
0181 items:
0182 - description: Aggregate0 System NoC AXI Clock.
0183 - description: Aggregate0 Config NoC AHB Clock.
0184 - description: Aggregate0 NoC MPU Clock.
0185
0186 required:
0187 - power-domains
0188
0189 - if:
0190 properties:
0191 compatible:
0192 contains:
0193 enum:
0194 - qcom,sdm660-a2noc
0195
0196 then:
0197 properties:
0198 clock-names:
0199 items:
0200 - const: bus
0201 - const: bus_a
0202 - const: ipa
0203 - const: ufs_axi
0204 - const: aggre2_ufs_axi
0205 - const: aggre2_usb3_axi
0206 - const: cfg_noc_usb2_axi
0207
0208 clocks:
0209 items:
0210 - description: Bus Clock.
0211 - description: Bus A Clock.
0212 - description: IPA Clock.
0213 - description: UFS AXI Clock.
0214 - description: Aggregate2 UFS AXI Clock.
0215 - description: Aggregate2 USB3 AXI Clock.
0216 - description: Config NoC USB2 AXI Clock.
0217
0218 examples:
0219 - |
0220 #include <dt-bindings/clock/qcom,rpmcc.h>
0221
0222 bimc: interconnect@400000 {
0223 compatible = "qcom,msm8916-bimc";
0224 reg = <0x00400000 0x62000>;
0225 #interconnect-cells = <1>;
0226 clock-names = "bus", "bus_a";
0227 clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
0228 <&rpmcc RPM_SMD_BIMC_A_CLK>;
0229 };
0230
0231 pcnoc: interconnect@500000 {
0232 compatible = "qcom,msm8916-pcnoc";
0233 reg = <0x00500000 0x11000>;
0234 #interconnect-cells = <1>;
0235 clock-names = "bus", "bus_a";
0236 clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
0237 <&rpmcc RPM_SMD_PCNOC_A_CLK>;
0238 };
0239
0240 snoc: interconnect@580000 {
0241 compatible = "qcom,msm8916-snoc";
0242 reg = <0x00580000 0x14000>;
0243 #interconnect-cells = <1>;
0244 clock-names = "bus", "bus_a";
0245 clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
0246 <&rpmcc RPM_SMD_SNOC_A_CLK>;
0247 };