diff options
author | Srinivas Rao L <lsrao@codeaurora.org> | 2015-12-07 19:48:56 +0530 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 21:22:09 -0700 |
commit | 99d535fc95fad0128a1708f660264161e08b415d (patch) | |
tree | f9e00164facd71ce5c5d172ed3e2859ec9655f2f /drivers/cpuidle/lpm-levels-of.c | |
parent | 8804d589374895384c2ae68a2fd87d1cf9b7ef80 (diff) |
cpuidle: lpm-levels: Add API to get low power mode latency
Add API to get latency for a low power mode with particular
affinity level and reset level. Reset level is level at which
only control logic power collpase happen or both control and
memory logic power collapse happen or Retention state.
The API returns the minum latency out of all clusters in the
particular affinity level and reset level if cluster name is
not passed or the latency of the specific cluster for which
the cluster name is passed.
Change-Id: I2facd9a1fa2dba7e7103d65544537799bd8ba518
Signed-off-by: Srinivas Rao L <lsrao@codeaurora.org>
Conflicts:
arch/arm/boot/dts/qcom/mdm9607-pm.dtsi
arch/arm/boot/dts/qcom/mdm9640-pm.dtsi
arch/arm/boot/dts/qcom/mdmcalifornium-pm.dtsi
arch/arm/boot/dts/qcom/msm8909-pm8909-pm.dtsi
arch/arm/boot/dts/qcom/msm8909-pm8916-pm.dtsi
arch/arm/boot/dts/qcom/msm8937-pm.dtsi
arch/arm/boot/dts/qcom/msm8952-pm.dtsi
arch/arm/boot/dts/qcom/msmgold-pm.dtsi
arch/arm/boot/dts/qcom/msmtitanium-pm.dtsi
Diffstat (limited to 'drivers/cpuidle/lpm-levels-of.c')
-rw-r--r-- | drivers/cpuidle/lpm-levels-of.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/cpuidle/lpm-levels-of.c b/drivers/cpuidle/lpm-levels-of.c index 4476771a637b..f4ae70ac9315 100644 --- a/drivers/cpuidle/lpm-levels-of.c +++ b/drivers/cpuidle/lpm-levels-of.c @@ -507,6 +507,13 @@ static int parse_cluster_level(struct device_node *node, if (ret) goto failed; + key = "qcom,reset-level"; + ret = of_property_read_u32(node, key, &level->reset_level); + if (ret == -EINVAL) + level->reset_level = LPM_RESET_LVL_NONE; + else if (ret) + goto failed; + cluster->nlevels++; return 0; failed: @@ -661,6 +668,13 @@ static int parse_cpu_levels(struct device_node *node, struct lpm_cluster *c) key = "qcom,jtag-save-restore"; l->jtag_save_restore = of_property_read_bool(n, key); + + key = "qcom,reset-level"; + ret = of_property_read_u32(n, key, &l->reset_level); + if (ret == -EINVAL) + l->reset_level = LPM_RESET_LVL_NONE; + else if (ret) + goto failed; } return 0; failed: |