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 enum: 34 - qcom,rpm-apq8084 35 - qcom,rpm-ipq6018 36 - qcom,rpm-ipq9574 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 - qcom,rpm-msm8996 51 - qcom,rpm-msm8998 52 - qcom,rpm-qcm2290 53 - qcom,rpm-qcs404 54 - qcom,rpm-sdm660 55 - qcom,rpm-sm6115 56 - qcom,rpm-sm6125 57 - qcom,rpm-sm6375 58 59 clock-controller: 60 $ref: /schemas/clock/qcom,rpmcc.yaml# 61 unevaluatedProperties: false 62 63 power-controller: 64 $ref: /schemas/power/qcom,rpmpd.yaml# 65 66 qcom,glink-channels: 67 $ref: /schemas/types.yaml#/definitions/string-array 68 description: Channel name used for the RPM communication 69 items: 70 - const: rpm_requests 71 72 qcom,smd-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 78patternProperties: 79 "^regulators(-[01])?$": 80 $ref: /schemas/regulator/qcom,smd-rpm-regulator.yaml# 81 unevaluatedProperties: false 82 83if: 84 properties: 85 compatible: 86 contains: 87 enum: 88 - qcom,rpm-apq8084 89 - qcom,rpm-mdm9607 90 - qcom,rpm-msm8226 91 - qcom,rpm-msm8610 92 - qcom,rpm-msm8909 93 - qcom,rpm-msm8916 94 - qcom,rpm-msm8917 95 - qcom,rpm-msm8936 96 - qcom,rpm-msm8937 97 - qcom,rpm-msm8952 98 - qcom,rpm-msm8953 99 - qcom,rpm-msm8974 100 - qcom,rpm-msm8976 101 - qcom,rpm-msm8994 102then: 103 properties: 104 qcom,glink-channels: false 105 required: 106 - qcom,smd-channels 107else: 108 properties: 109 qcom,smd-channels: false 110 required: 111 - qcom,glink-channels 112 113required: 114 - compatible 115 116additionalProperties: false 117 118examples: 119 - | 120 #include <dt-bindings/interrupt-controller/arm-gic.h> 121 #include <dt-bindings/interrupt-controller/irq.h> 122 123 remoteproc { 124 compatible = "qcom,msm8916-rpm-proc", "qcom,rpm-proc"; 125 126 smd-edge { 127 interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>; 128 qcom,ipc = <&apcs 8 0>; 129 qcom,smd-edge = <15>; 130 131 rpm-requests { 132 compatible = "qcom,rpm-msm8916"; 133 qcom,smd-channels = "rpm_requests"; 134 135 clock-controller { 136 compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc"; 137 #clock-cells = <1>; 138 clocks = <&xo_board>; 139 clock-names = "xo"; 140 }; 141 142 power-controller { 143 compatible = "qcom,msm8916-rpmpd"; 144 #power-domain-cells = <1>; 145 operating-points-v2 = <&rpmpd_opp_table>; 146 147 rpmpd_opp_table: opp-table { 148 compatible = "operating-points-v2"; 149 150 opp-1 { 151 opp-level = <1>; 152 }; 153 opp-2 { 154 opp-level = <2>; 155 }; 156 }; 157 }; 158 }; 159 }; 160 }; 161