summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-12-06 14:33:36 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-12-06 14:33:36 -0800
commit79d4b5400daa145295c18b2909220e82f2e5b6c1 (patch)
tree2b4f7d218baf0deecf9a2c5208e114fb7795f44e
parentac55ab1f39c0a93337cdebe4fa0be792716d6088 (diff)
parent1d79e3181d487fb67b8944342e9bcbd4f4d8e4be (diff)
Merge "regulator: msm_gfx_ldo: Fix the CX voting logic"
-rw-r--r--drivers/regulator/msm_gfx_ldo.c31
1 files changed, 20 insertions, 11 deletions
diff --git a/drivers/regulator/msm_gfx_ldo.c b/drivers/regulator/msm_gfx_ldo.c
index 4bcfd8a07fc9..3c0cc9a74cd7 100644
--- a/drivers/regulator/msm_gfx_ldo.c
+++ b/drivers/regulator/msm_gfx_ldo.c
@@ -398,6 +398,15 @@ static int msm_gfx_ldo_enable(struct regulator_dev *rdev)
ldo_vreg->corner + MIN_CORNER_OFFSET);
if (ldo_vreg->vdd_cx) {
+ rc = regulator_set_voltage(ldo_vreg->vdd_cx,
+ ldo_vreg->vdd_cx_corner_map[ldo_vreg->corner],
+ INT_MAX);
+ if (rc) {
+ pr_err("Unable to set CX for corner %d rc=%d\n",
+ ldo_vreg->corner + MIN_CORNER_OFFSET, rc);
+ goto fail;
+ }
+
rc = regulator_enable(ldo_vreg->vdd_cx);
if (rc) {
pr_err("regulator_enable: vdd_cx: failed rc=%d\n", rc);
@@ -646,17 +655,6 @@ static int msm_gfx_ldo_set_voltage(struct regulator_dev *rdev,
else if (corner < ldo_vreg->corner)
dir = DOWN;
- if (ldo_vreg->vdd_cx) {
- rc = regulator_set_voltage(ldo_vreg->vdd_cx,
- ldo_vreg->vdd_cx_corner_map[corner],
- INT_MAX);
- if (rc) {
- pr_err("Unable to set CX for corner %d rc=%d\n",
- corner + MIN_CORNER_OFFSET, rc);
- goto done;
- }
- }
-
if (ldo_vreg->mem_acc_vreg && dir == DOWN) {
mem_acc_corner = ldo_vreg->mem_acc_corner_map[corner];
rc = regulator_set_voltage(ldo_vreg->mem_acc_vreg,
@@ -668,6 +666,17 @@ static int msm_gfx_ldo_set_voltage(struct regulator_dev *rdev,
goto done;
}
+ if (ldo_vreg->vdd_cx) {
+ rc = regulator_set_voltage(ldo_vreg->vdd_cx,
+ ldo_vreg->vdd_cx_corner_map[corner],
+ INT_MAX);
+ if (rc) {
+ pr_err("Unable to set CX for corner %d rc=%d\n",
+ corner + MIN_CORNER_OFFSET, rc);
+ goto done;
+ }
+ }
+
new_mode = get_operating_mode(ldo_vreg, corner);
if (new_mode == BHS) {