-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dt-bindings: power: Add qcom rpm power domain driver bindings
Add DT bindings to describe the rpm/rpmh power domains found on Qualcomm Technologies, Inc. SoCs. These power domains communicate a performance state to RPM/RPMh, which then translates it into corresponding voltage on a PMIC rail. Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> Reviewed-by: Stephen Boyd <swboyd@chromium.org> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: Andy Gross <andy.gross@linaro.org>
- Loading branch information
Rajendra Nayak
authored and
Andy Gross
committed
Jan 22, 2019
1 parent
5b93ac5
commit c6e6eff
Showing
2 changed files
with
184 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,145 @@ | ||
Qualcomm RPM/RPMh Power domains | ||
|
||
For RPM/RPMh Power domains, we communicate a performance state to RPM/RPMh | ||
which then translates it into a corresponding voltage on a rail | ||
|
||
Required Properties: | ||
- compatible: Should be one of the following | ||
* qcom,msm8996-rpmpd: RPM Power domain for the msm8996 family of SoC | ||
* qcom,sdm845-rpmhpd: RPMh Power domain for the sdm845 family of SoC | ||
- #power-domain-cells: number of cells in Power domain specifier | ||
must be 1. | ||
- operating-points-v2: Phandle to the OPP table for the Power domain. | ||
Refer to Documentation/devicetree/bindings/power/power_domain.txt | ||
and Documentation/devicetree/bindings/opp/opp.txt for more details | ||
|
||
Refer to <dt-bindings/power/qcom-rpmpd.h> for the level values for | ||
various OPPs for different platforms as well as Power domain indexes | ||
|
||
Example: rpmh power domain controller and OPP table | ||
|
||
#include <dt-bindings/power/qcom-rpmhpd.h> | ||
|
||
opp-level values specified in the OPP tables for RPMh power domains | ||
should use the RPMH_REGULATOR_LEVEL_* constants from | ||
<dt-bindings/power/qcom-rpmhpd.h> | ||
|
||
rpmhpd: power-controller { | ||
compatible = "qcom,sdm845-rpmhpd"; | ||
#power-domain-cells = <1>; | ||
operating-points-v2 = <&rpmhpd_opp_table>; | ||
|
||
rpmhpd_opp_table: opp-table { | ||
compatible = "operating-points-v2"; | ||
|
||
rpmhpd_opp_ret: opp1 { | ||
opp-level = <RPMH_REGULATOR_LEVEL_RETENTION>; | ||
}; | ||
|
||
rpmhpd_opp_min_svs: opp2 { | ||
opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>; | ||
}; | ||
|
||
rpmhpd_opp_low_svs: opp3 { | ||
opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>; | ||
}; | ||
|
||
rpmhpd_opp_svs: opp4 { | ||
opp-level = <RPMH_REGULATOR_LEVEL_SVS>; | ||
}; | ||
|
||
rpmhpd_opp_svs_l1: opp5 { | ||
opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>; | ||
}; | ||
|
||
rpmhpd_opp_nom: opp6 { | ||
opp-level = <RPMH_REGULATOR_LEVEL_NOM>; | ||
}; | ||
|
||
rpmhpd_opp_nom_l1: opp7 { | ||
opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>; | ||
}; | ||
|
||
rpmhpd_opp_nom_l2: opp8 { | ||
opp-level = <RPMH_REGULATOR_LEVEL_NOM_L2>; | ||
}; | ||
|
||
rpmhpd_opp_turbo: opp9 { | ||
opp-level = <RPMH_REGULATOR_LEVEL_TURBO>; | ||
}; | ||
|
||
rpmhpd_opp_turbo_l1: opp10 { | ||
opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>; | ||
}; | ||
}; | ||
}; | ||
|
||
Example: rpm power domain controller and OPP table | ||
|
||
rpmpd: power-controller { | ||
compatible = "qcom,msm8996-rpmpd"; | ||
#power-domain-cells = <1>; | ||
operating-points-v2 = <&rpmpd_opp_table>; | ||
|
||
rpmpd_opp_table: opp-table { | ||
compatible = "operating-points-v2"; | ||
|
||
rpmpd_opp_low: opp1 { | ||
opp-level = <1>; | ||
}; | ||
|
||
rpmpd_opp_ret: opp2 { | ||
opp-level = <2>; | ||
}; | ||
|
||
rpmpd_opp_svs: opp3 { | ||
opp-level = <3>; | ||
}; | ||
|
||
rpmpd_opp_normal: opp4 { | ||
opp-level = <4>; | ||
}; | ||
|
||
rpmpd_opp_high: opp5 { | ||
opp-level = <5>; | ||
}; | ||
|
||
rpmpd_opp_turbo: opp6 { | ||
opp-level = <6>; | ||
}; | ||
}; | ||
}; | ||
|
||
Example: Client/Consumer device using OPP table | ||
|
||
leaky-device0@12350000 { | ||
compatible = "foo,i-leak-current"; | ||
reg = <0x12350000 0x1000>; | ||
power-domains = <&rpmhpd SDM845_MX>; | ||
operating-points-v2 = <&leaky_opp_table>; | ||
}; | ||
|
||
|
||
leaky_opp_table: opp-table { | ||
compatible = "operating-points-v2"; | ||
|
||
opp1 { | ||
opp-hz = /bits/ 64 <144000>; | ||
required-opps = <&rpmhpd_opp_low>; | ||
}; | ||
|
||
opp2 { | ||
opp-hz = /bits/ 64 <400000>; | ||
required-opps = <&rpmhpd_opp_ret>; | ||
}; | ||
|
||
opp3 { | ||
opp-hz = /bits/ 64 <20000000>; | ||
required-opps = <&rpmpd_opp_svs>; | ||
}; | ||
|
||
opp4 { | ||
opp-hz = /bits/ 64 <25000000>; | ||
required-opps = <&rpmpd_opp_normal>; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
/* Copyright (c) 2018, The Linux Foundation. All rights reserved. */ | ||
|
||
#ifndef _DT_BINDINGS_POWER_QCOM_RPMPD_H | ||
#define _DT_BINDINGS_POWER_QCOM_RPMPD_H | ||
|
||
/* SDM845 Power Domain Indexes */ | ||
#define SDM845_EBI 0 | ||
#define SDM845_MX 1 | ||
#define SDM845_MX_AO 2 | ||
#define SDM845_CX 3 | ||
#define SDM845_CX_AO 4 | ||
#define SDM845_LMX 5 | ||
#define SDM845_LCX 6 | ||
#define SDM845_GFX 7 | ||
#define SDM845_MSS 8 | ||
|
||
/* SDM845 Power Domain performance levels */ | ||
#define RPMH_REGULATOR_LEVEL_RETENTION 16 | ||
#define RPMH_REGULATOR_LEVEL_MIN_SVS 48 | ||
#define RPMH_REGULATOR_LEVEL_LOW_SVS 64 | ||
#define RPMH_REGULATOR_LEVEL_SVS 128 | ||
#define RPMH_REGULATOR_LEVEL_SVS_L1 192 | ||
#define RPMH_REGULATOR_LEVEL_NOM 256 | ||
#define RPMH_REGULATOR_LEVEL_NOM_L1 320 | ||
#define RPMH_REGULATOR_LEVEL_NOM_L2 336 | ||
#define RPMH_REGULATOR_LEVEL_TURBO 384 | ||
#define RPMH_REGULATOR_LEVEL_TURBO_L1 416 | ||
|
||
/* MSM8996 Power Domain Indexes */ | ||
#define MSM8996_VDDCX 0 | ||
#define MSM8996_VDDCX_AO 1 | ||
#define MSM8996_VDDCX_VFC 2 | ||
#define MSM8996_VDDMX 3 | ||
#define MSM8996_VDDMX_AO 4 | ||
#define MSM8996_VDDSSCX 5 | ||
#define MSM8996_VDDSSCX_VFC 6 | ||
|
||
#endif |