1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/soc/qcom/qcom,smd-rpm.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Qualcomm Resource Power Manager (RPM) over SMD/GLINK 8 9description: | 10 This driver is used to interface with the Resource Power Manager (RPM) found 11 in various Qualcomm platforms. The RPM allows each component in the system 12 to vote for state of the system resources, such as clocks, regulators and bus 13 frequencies. 14 15 The SMD or GLINK information for the RPM edge should be filled out. See 16 qcom,smd.yaml for the required edge properties. All SMD/GLINK related 17 properties will reside within the RPM node itself. 18 19 The RPM exposes resources to its subnodes. The rpm_requests node must be 20 present and this subnode may contain children that designate regulator 21 resources. 22 23 Refer to Documentation/devicetree/bindings/regulator/qcom,smd-rpm-regulator.yaml 24 for information on the regulator subnodes that can exist under the 25 rpm_requests. 26 27maintainers: 28 - Andy Gross <agross@kernel.org> 29 - Bjorn Andersson <bjorn.andersson@linaro.org> 30 31properties: 32 compatible: 33 oneOf: 34 - items: 35 - enum: 36 - qcom,rpm-apq8084 37 - qcom,rpm-mdm9607 38 - qcom,rpm-msm8226 39 - qcom,rpm-msm8610 40 - qcom,rpm-msm8909 41 - qcom,rpm-msm8916 42 - qcom,rpm-msm8917 43 - qcom,rpm-msm8936 44 - qcom,rpm-msm8937 45 - qcom,rpm-msm8952 46 - qcom,rpm-msm8953 47 - qcom,rpm-msm8974 48 - qcom,rpm-msm8976 49 - qcom,rpm-msm8994 50 - const: qcom,smd-rpm 51 - items: 52 - enum: 53 - qcom,rpm-ipq6018 54 - qcom,rpm-ipq9574 55 - qcom,rpm-msm8996 56 - qcom,rpm-msm8998 57 - qcom,rpm-qcm2290 58 - qcom,rpm-qcs404 59 - qcom,rpm-sdm660 60 - qcom,rpm-sm6115 61 - qcom,rpm-sm6125 62 - qcom,rpm-sm6375 63 - const: qcom,glink-smd-rpm 64 65 clock-controller: 66 $ref: /schemas/clock/qcom,rpmcc.yaml# 67 unevaluatedProperties: false 68 69 power-controller: 70 $ref: /schemas/power/qcom,rpmpd.yaml# 71 72 qcom,glink-channels: 73 $ref: /schemas/types.yaml#/definitions/string-array 74 description: Channel name used for the RPM communication 75 items: 76 - const: rpm_requests 77 78 qcom,smd-channels: 79 $ref: /schemas/types.yaml#/definitions/string-array 80 description: Channel name used for the RPM communication 81 items: 82 - const: rpm_requests 83 84patternProperties: 85 "^regulators(-[01])?$": 86 $ref: /schemas/regulator/qcom,smd-rpm-regulator.yaml# 87 unevaluatedProperties: false 88 89if: 90 properties: 91 compatible: 92 contains: 93 const: qcom,smd-rpm 94then: 95 properties: 96 qcom,glink-channels: false 97 required: 98 - qcom,smd-channels 99else: 100 properties: 101 qcom,smd-channels: false 102 required: 103 - qcom,glink-channels 104 105required: 106 - compatible 107 108additionalProperties: false 109 110examples: 111 - | 112 #include <dt-bindings/interrupt-controller/arm-gic.h> 113 #include <dt-bindings/interrupt-controller/irq.h> 114 115 remoteproc { 116 compatible = "qcom,msm8916-rpm-proc", "qcom,rpm-proc"; 117 118 smd-edge { 119 interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>; 120 qcom,ipc = <&apcs 8 0>; 121 qcom,smd-edge = <15>; 122 123 rpm-requests { 124 compatible = "qcom,rpm-msm8916", "qcom,smd-rpm"; 125 qcom,smd-channels = "rpm_requests"; 126 127 clock-controller { 128 compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc"; 129 #clock-cells = <1>; 130 clocks = <&xo_board>; 131 clock-names = "xo"; 132 }; 133 134 power-controller { 135 compatible = "qcom,msm8916-rpmpd"; 136 #power-domain-cells = <1>; 137 operating-points-v2 = <&rpmpd_opp_table>; 138 139 rpmpd_opp_table: opp-table { 140 compatible = "operating-points-v2"; 141 142 opp-1 { 143 opp-level = <1>; 144 }; 145 opp-2 { 146 opp-level = <2>; 147 }; 148 }; 149 }; 150 }; 151 }; 152 }; 153