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