aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@sirena.org.uk>2013-04-27 21:13:42 -0400
committerMark Brown <broonie@sirena.org.uk>2013-04-27 21:13:42 -0400
commitc4578da56a022867acea2d6c6caf0301de0ff7ba (patch)
tree07702d06e89a759ba840859aa88a11efac382424
parent388128ffd69e09306b8f17c626fd565120c416de (diff)
parent3ecf198eab145d45624010e03db2e9dfd284cced (diff)
Merge remote-tracking branch 'regulator/topic/max77686' into v3.9-rc8
-rw-r--r--drivers/regulator/max77686.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/drivers/regulator/max77686.c b/drivers/regulator/max77686.c
index e4586ee8858d..20935b1a6ed4 100644
--- a/drivers/regulator/max77686.c
+++ b/drivers/regulator/max77686.c
@@ -75,17 +75,20 @@ static int max77686_buck_set_suspend_disable(struct regulator_dev *rdev)
75{ 75{
76 unsigned int val; 76 unsigned int val;
77 struct max77686_data *max77686 = rdev_get_drvdata(rdev); 77 struct max77686_data *max77686 = rdev_get_drvdata(rdev);
78 int id = rdev_get_id(rdev); 78 int ret, id = rdev_get_id(rdev);
79 79
80 if (id == MAX77686_BUCK1) 80 if (id == MAX77686_BUCK1)
81 val = 0x1; 81 val = 0x1;
82 else 82 else
83 val = 0x1 << MAX77686_OPMODE_BUCK234_SHIFT; 83 val = 0x1 << MAX77686_OPMODE_BUCK234_SHIFT;
84 84
85 ret = regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
86 rdev->desc->enable_mask, val);
87 if (ret)
88 return ret;
89
85 max77686->opmode[id] = val; 90 max77686->opmode[id] = val;
86 return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg, 91 return 0;
87 rdev->desc->enable_mask,
88 val);
89} 92}
90 93
91/* Some LDOs supports [LPM/Normal]ON mode during suspend state */ 94/* Some LDOs supports [LPM/Normal]ON mode during suspend state */
@@ -94,7 +97,7 @@ static int max77686_set_suspend_mode(struct regulator_dev *rdev,
94{ 97{
95 struct max77686_data *max77686 = rdev_get_drvdata(rdev); 98 struct max77686_data *max77686 = rdev_get_drvdata(rdev);
96 unsigned int val; 99 unsigned int val;
97 int id = rdev_get_id(rdev); 100 int ret, id = rdev_get_id(rdev);
98 101
99 /* BUCK[5-9] doesn't support this feature */ 102 /* BUCK[5-9] doesn't support this feature */
100 if (id >= MAX77686_BUCK5) 103 if (id >= MAX77686_BUCK5)
@@ -113,10 +116,13 @@ static int max77686_set_suspend_mode(struct regulator_dev *rdev,
113 return -EINVAL; 116 return -EINVAL;
114 } 117 }
115 118
119 ret = regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
120 rdev->desc->enable_mask, val);
121 if (ret)
122 return ret;
123
116 max77686->opmode[id] = val; 124 max77686->opmode[id] = val;
117 return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg, 125 return 0;
118 rdev->desc->enable_mask,
119 val);
120} 126}
121 127
122/* Some LDOs supports LPM-ON/OFF/Normal-ON mode during suspend state */ 128/* Some LDOs supports LPM-ON/OFF/Normal-ON mode during suspend state */
@@ -125,6 +131,7 @@ static int max77686_ldo_set_suspend_mode(struct regulator_dev *rdev,
125{ 131{
126 unsigned int val; 132 unsigned int val;
127 struct max77686_data *max77686 = rdev_get_drvdata(rdev); 133 struct max77686_data *max77686 = rdev_get_drvdata(rdev);
134 int ret;
128 135
129 switch (mode) { 136 switch (mode) {
130 case REGULATOR_MODE_STANDBY: /* switch off */ 137 case REGULATOR_MODE_STANDBY: /* switch off */
@@ -142,10 +149,13 @@ static int max77686_ldo_set_suspend_mode(struct regulator_dev *rdev,
142 return -EINVAL; 149 return -EINVAL;
143 } 150 }
144 151
152 ret = regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
153 rdev->desc->enable_mask, val);
154 if (ret)
155 return ret;
156
145 max77686->opmode[rdev_get_id(rdev)] = val; 157 max77686->opmode[rdev_get_id(rdev)] = val;
146 return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg, 158 return 0;
147 rdev->desc->enable_mask,
148 val);
149} 159}
150 160
151static int max77686_enable(struct regulator_dev *rdev) 161static int max77686_enable(struct regulator_dev *rdev)