161 lines
4.4 KiB
YAML
Raw Normal View History

2026-01-21 18:59:54 +08:00
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
2026-01-29 22:25:33 +08:00
$id: http://devicetree.org/schemas/soc/qcom/qcom,smd-rpm.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
2026-01-21 18:59:54 +08:00
2026-01-29 22:25:33 +08:00
title: Qualcomm Resource Power Manager (RPM) over SMD/GLINK
2026-01-21 18:59:54 +08:00
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.
2026-01-29 22:25:33 +08:00
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.
2026-01-21 18:59:54 +08:00
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:
2026-01-29 22:25:33 +08:00
- Andy Gross <agross@kernel.org>
- Bjorn Andersson <bjorn.andersson@linaro.org>
2026-01-21 18:59:54 +08:00
properties:
compatible:
enum:
- qcom,rpm-apq8084
- qcom,rpm-ipq6018
2026-01-29 22:25:33 +08:00
- qcom,rpm-ipq9574
- qcom,rpm-mdm9607
- qcom,rpm-msm8226
- qcom,rpm-msm8610
- qcom,rpm-msm8909
2026-01-21 18:59:54 +08:00
- qcom,rpm-msm8916
2026-01-29 22:25:33 +08:00
- qcom,rpm-msm8917
- qcom,rpm-msm8936
- qcom,rpm-msm8937
- qcom,rpm-msm8952
- qcom,rpm-msm8953
2026-01-21 18:59:54 +08:00
- qcom,rpm-msm8974
- qcom,rpm-msm8976
2026-01-29 22:25:33 +08:00
- qcom,rpm-msm8994
2026-01-21 18:59:54 +08:00
- qcom,rpm-msm8996
- qcom,rpm-msm8998
2026-01-29 22:25:33 +08:00
- qcom,rpm-qcm2290
2026-01-21 18:59:54 +08:00
- qcom,rpm-qcs404
2026-01-29 22:25:33 +08:00
- qcom,rpm-sdm660
- qcom,rpm-sm6115
- qcom,rpm-sm6125
- qcom,rpm-sm6375
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
2026-01-21 18:59:54 +08:00
qcom,smd-channels:
$ref: /schemas/types.yaml#/definitions/string-array
description: Channel name used for the RPM communication
items:
- const: rpm_requests
2026-01-29 22:25:33 +08:00
patternProperties:
"^regulators(-[01])?$":
$ref: /schemas/regulator/qcom,smd-rpm-regulator.yaml#
unevaluatedProperties: false
2026-01-21 18:59:54 +08:00
if:
properties:
compatible:
contains:
enum:
- qcom,rpm-apq8084
2026-01-29 22:25:33 +08:00
- qcom,rpm-mdm9607
- qcom,rpm-msm8226
- qcom,rpm-msm8610
- qcom,rpm-msm8909
2026-01-21 18:59:54 +08:00
- qcom,rpm-msm8916
2026-01-29 22:25:33 +08:00
- qcom,rpm-msm8917
- qcom,rpm-msm8936
- qcom,rpm-msm8937
- qcom,rpm-msm8952
- qcom,rpm-msm8953
2026-01-21 18:59:54 +08:00
- qcom,rpm-msm8974
2026-01-29 22:25:33 +08:00
- qcom,rpm-msm8976
- qcom,rpm-msm8994
2026-01-21 18:59:54 +08:00
then:
2026-01-29 22:25:33 +08:00
properties:
qcom,glink-channels: false
2026-01-21 18:59:54 +08:00
required:
- qcom,smd-channels
2026-01-29 22:25:33 +08:00
else:
properties:
qcom,smd-channels: false
required:
- qcom,glink-channels
2026-01-21 18:59:54 +08:00
required:
- compatible
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
2026-01-29 22:25:33 +08:00
remoteproc {
compatible = "qcom,msm8916-rpm-proc", "qcom,rpm-proc";
2026-01-21 18:59:54 +08:00
2026-01-29 22:25:33 +08:00
smd-edge {
2026-01-21 18:59:54 +08:00
interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
qcom,ipc = <&apcs 8 0>;
qcom,smd-edge = <15>;
2026-01-29 22:25:33 +08:00
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";
};
2026-01-21 18:59:54 +08:00
2026-01-29 22:25:33 +08:00
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>;
};
};
2026-01-21 18:59:54 +08:00
};
};
2026-01-29 22:25:33 +08:00
};
};