summaryrefslogtreecommitdiff
path: root/drivers/cpuidle/lpm-levels-of.c
diff options
context:
space:
mode:
authorSrinivas Rao L <lsrao@codeaurora.org>2015-12-07 19:48:56 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 21:22:09 -0700
commit99d535fc95fad0128a1708f660264161e08b415d (patch)
treef9e00164facd71ce5c5d172ed3e2859ec9655f2f /drivers/cpuidle/lpm-levels-of.c
parent8804d589374895384c2ae68a2fd87d1cf9b7ef80 (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.c14
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: