| # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: "http://devicetree.org/schemas/soc/qcom/qcom,smd-rpm.yaml#" |
| $schema: "http://devicetree.org/meta-schemas/core.yaml#" |
| |
| title: Qualcomm Resource Power Manager (RPM) over SMD/GLINK |
| |
| description: | |
| This driver is used to interface with the Resource Power Manager (RPM) found |
| in various Qualcomm platforms. The RPM allows each component in the system |
| to vote for state of the system resources, such as clocks, regulators and bus |
| frequencies. |
| |
| The SMD or GLINK information for the RPM edge should be filled out. See |
| qcom,smd.yaml for the required edge properties. All SMD/GLINK related |
| properties will reside within the RPM node itself. |
| |
| The RPM exposes resources to its subnodes. The rpm_requests node must be |
| present and this subnode may contain children that designate regulator |
| resources. |
| |
| Refer to Documentation/devicetree/bindings/regulator/qcom,smd-rpm-regulator.yaml |
| for information on the regulator subnodes that can exist under the |
| rpm_requests. |
| |
| maintainers: |
| - Andy Gross <agross@kernel.org> |
| - Bjorn Andersson <bjorn.andersson@linaro.org> |
| |
| properties: |
| compatible: |
| enum: |
| - qcom,rpm-apq8084 |
| - qcom,rpm-ipq6018 |
| - qcom,rpm-msm8226 |
| - qcom,rpm-msm8909 |
| - qcom,rpm-msm8916 |
| - qcom,rpm-msm8936 |
| - qcom,rpm-msm8953 |
| - qcom,rpm-msm8974 |
| - qcom,rpm-msm8976 |
| - qcom,rpm-msm8996 |
| - qcom,rpm-msm8998 |
| - qcom,rpm-sdm660 |
| - qcom,rpm-sm6115 |
| - qcom,rpm-sm6125 |
| - qcom,rpm-sm6375 |
| - qcom,rpm-qcm2290 |
| - qcom,rpm-qcs404 |
| |
| clock-controller: |
| $ref: /schemas/clock/qcom,rpmcc.yaml# |
| unevaluatedProperties: false |
| |
| power-controller: |
| $ref: /schemas/power/qcom,rpmpd.yaml# |
| |
| qcom,glink-channels: |
| $ref: /schemas/types.yaml#/definitions/string-array |
| description: Channel name used for the RPM communication |
| items: |
| - const: rpm_requests |
| |
| qcom,smd-channels: |
| $ref: /schemas/types.yaml#/definitions/string-array |
| description: Channel name used for the RPM communication |
| items: |
| - const: rpm_requests |
| |
| patternProperties: |
| "^regulators(-[01])?$": |
| $ref: /schemas/regulator/qcom,smd-rpm-regulator.yaml# |
| unevaluatedProperties: false |
| |
| if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - qcom,rpm-apq8084 |
| - qcom,rpm-msm8916 |
| - qcom,rpm-msm8936 |
| - qcom,rpm-msm8974 |
| - qcom,rpm-msm8976 |
| - qcom,rpm-msm8953 |
| then: |
| properties: |
| qcom,glink-channels: false |
| required: |
| - qcom,smd-channels |
| else: |
| properties: |
| qcom,smd-channels: false |
| required: |
| - qcom,glink-channels |
| |
| required: |
| - compatible |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/interrupt-controller/arm-gic.h> |
| #include <dt-bindings/interrupt-controller/irq.h> |
| |
| smd { |
| compatible = "qcom,smd"; |
| |
| rpm { |
| interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>; |
| qcom,ipc = <&apcs 8 0>; |
| qcom,smd-edge = <15>; |
| |
| rpm-requests { |
| compatible = "qcom,rpm-msm8916"; |
| qcom,smd-channels = "rpm_requests"; |
| |
| clock-controller { |
| compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc"; |
| #clock-cells = <1>; |
| clocks = <&xo_board>; |
| clock-names = "xo"; |
| }; |
| |
| power-controller { |
| compatible = "qcom,msm8916-rpmpd"; |
| #power-domain-cells = <1>; |
| operating-points-v2 = <&rpmpd_opp_table>; |
| |
| rpmpd_opp_table: opp-table { |
| compatible = "operating-points-v2"; |
| |
| opp-1 { |
| opp-level = <1>; |
| }; |
| opp-2 { |
| opp-level = <2>; |
| }; |
| }; |
| }; |
| }; |
| }; |
| }; |