Merge "msm: lpm_resources: Add a default property for lpm-resources node"
diff --git a/Documentation/devicetree/bindings/arm/msm/lpm-resources.txt b/Documentation/devicetree/bindings/arm/msm/lpm-resources.txt
index 7f2a21b..ccb3465 100644
--- a/Documentation/devicetree/bindings/arm/msm/lpm-resources.txt
+++ b/Documentation/devicetree/bindings/arm/msm/lpm-resources.txt
@@ -23,6 +23,7 @@
- qcom,resource-type: The type of the LPM resource.
MSM_LPM_RPM_RS_TYPE = 0
MSM_LPM_LOCAL_RS_TYPE = 1
+- qcom,init-value: Initialization value of the LPM resource.
Optional Nodes:
@@ -41,5 +42,6 @@
qcom,type = <0x62706d73>; /* "smpb" */
qcom,id = <0x02>;
qcom,key = <0x6e726f63>; /* "corn" */
+ qcom,init-value= <5>; /* Active Corner*/
};
diff --git a/arch/arm/boot/dts/msm8974-pm.dtsi b/arch/arm/boot/dts/msm8974-pm.dtsi
index 52f2a41..4d3f5fe 100644
--- a/arch/arm/boot/dts/msm8974-pm.dtsi
+++ b/arch/arm/boot/dts/msm8974-pm.dtsi
@@ -143,6 +143,7 @@
qcom,type = <0x62706d73>; /* "smpb" */
qcom,id = <0x02>;
qcom,key = <0x6e726f63>; /* "corn" */
+ qcom,init-value = <5>; /* Super Turbo */
};
qcom,lpm-resources@1 {
@@ -152,6 +153,7 @@
qcom,type = <0x62706d73>; /* "smpb" */
qcom,id = <0x01>;
qcom,key = <0x7675>; /* "uv" */
+ qcom,init-value = <1050000>; /* Super Turbo */
};
qcom,lpm-resources@2 {
@@ -161,12 +163,14 @@
qcom,type = <0x306b6c63>; /* "clk0" */
qcom,id = <0x00>;
qcom,key = <0x62616e45>; /* "Enab" */
+ qcom,init-value = <1>; /* On */
};
qcom,lpm-resources@3 {
reg = <0x3>;
qcom,name = "l2";
qcom,resource-type = <1>;
+ qcom,init-value = <3>; /* Active */
};
};
diff --git a/arch/arm/boot/dts/msm9625-pm.dtsi b/arch/arm/boot/dts/msm9625-pm.dtsi
index 2839864..dbdddb6 100644
--- a/arch/arm/boot/dts/msm9625-pm.dtsi
+++ b/arch/arm/boot/dts/msm9625-pm.dtsi
@@ -42,6 +42,7 @@
qcom,type = <0x616F646C>; /* "ldoa" */
qcom,id = <0x0A>;
qcom,key = <0x6e726f63>; /* "corn" */
+ qcom,init-value = <5>; /* Super Turbo */
};
qcom,lpm-resources@1 {
@@ -51,6 +52,7 @@
qcom,type = <0x616F646C>; /* "ldoa" */
qcom,id = <0x0C>;
qcom,key = <0x7675>; /* "uv" */
+ qcom,init-value = <1050000>; /* Super Turbo */
};
qcom,lpm-resources@2 {
@@ -60,6 +62,7 @@
qcom,type = <0x306b6c63>; /* "clk0" */
qcom,id = <0x00>;
qcom,key = <0x62616e45>; /* "Enab" */
+ qcom,init-value = <1>; /* On */
};
};
diff --git a/arch/arm/mach-msm/lpm_resources.c b/arch/arm/mach-msm/lpm_resources.c
index f4941fe..3421765 100644
--- a/arch/arm/mach-msm/lpm_resources.c
+++ b/arch/arm/mach-msm/lpm_resources.c
@@ -47,8 +47,6 @@
static bool msm_lpm_get_rpm_notif = true;
/*Macros*/
-#define VDD_DIG_ACTIVE (5)
-#define VDD_MEM_ACTIVE (1050000)
#define MAX_RS_NAME (16)
#define MAX_RS_SIZE (4)
#define IS_RPM_CTL(rs) \
@@ -133,10 +131,6 @@
.flush = msm_lpm_flush_l2,
.notify = NULL,
.valid = false,
- .rs_data = {
- .value = MSM_LPM_L2_CACHE_ACTIVE,
- .default_value = MSM_LPM_L2_CACHE_ACTIVE,
- },
.ko_attr = RPMRS_ATTR(l2),
};
@@ -147,10 +141,6 @@
.flush = msm_lpm_flush_vdd_dig,
.notify = msm_lpm_notify_vdd_dig,
.valid = false,
- .rs_data = {
- .value = VDD_DIG_ACTIVE,
- .default_value = VDD_DIG_ACTIVE,
- },
.ko_attr = RPMRS_ATTR(vdd_dig),
};
@@ -161,10 +151,6 @@
.flush = msm_lpm_flush_vdd_mem,
.notify = msm_lpm_notify_vdd_mem,
.valid = false,
- .rs_data = {
- .value = VDD_MEM_ACTIVE,
- .default_value = VDD_MEM_ACTIVE,
- },
.ko_attr = RPMRS_ATTR(vdd_mem),
};
@@ -175,10 +161,6 @@
.flush = msm_lpm_flush_pxo,
.notify = msm_lpm_notify_pxo,
.valid = false,
- .rs_data = {
- .value = MSM_LPM_PXO_ON,
- .default_value = MSM_LPM_PXO_ON,
- },
.ko_attr = RPMRS_ATTR(pxo),
};
@@ -700,12 +682,12 @@
switch (action) {
case CPU_UP_PREPARE:
case CPU_UP_PREPARE_FROZEN:
- rs->rs_data.value = MSM_LPM_L2_CACHE_ACTIVE;
+ rs->rs_data.value = rs->rs_data.default_value;
break;
case CPU_ONLINE_FROZEN:
case CPU_ONLINE:
if (num_online_cpus() > 1)
- rs->rs_data.value = MSM_LPM_L2_CACHE_ACTIVE;
+ rs->rs_data.value = rs->rs_data.default_value;
break;
case CPU_DEAD_FROZEN:
case CPU_DEAD:
@@ -823,6 +805,16 @@
continue;
}
+ key = "qcom,init-value";
+ ret = of_property_read_u32(node, key,
+ &rs->rs_data.default_value);
+ if (ret) {
+ pr_err("%s():Failed to read %s\n", __func__, key);
+ goto fail;
+ }
+
+ rs->rs_data.value = rs->rs_data.default_value;
+
key = "qcom,resource-type";
ret = of_property_read_u32(node, key, &resource_type);
if (ret) {