Commit 4a1e8ebc authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'regulator-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator

Pull regulator fixes from Mark Brown:
 "A bunch of smallish fixes that came up during the merge window as
  things got more testing - even more fixes from Axel, a fix for error
  handling in more complex systems using -EPROBE_DEFER and a couple of
  small fixes for the new dummy regulators."

* tag 'regulator-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
  regulator: Remove non-existent parameter from fixed-helper.c kernel doc
  regulator: Fix setting new voltage in s5m8767_set_voltage
  regulator: fix sysfs name collision between dummy and fixed dummy regulator
  regulator: Fix deadlock on removal of regulators with supplies
  regulator: Fix comments in include/linux/regulator/machine.h
  regulator: Only update [LDOx|DCx]_HIB_MODE bits in wm8350_[ldo|dcdc]_set_suspend_disable
  regulator: Fix setting low power mode for wm831x aldo
  regulator: Return microamps in wm8350_isink_get_current
  regulator: wm8350: Fix the logic to choose best current limit setting
  regulator: wm831x-isink: Fix the logic to choose best current limit setting
  regulator: wm831x-dcdc: Fix the logic to choose best current limit setting
  regulator: anatop: patching to device-tree property "reg".
  regulator: Do proper shift to set correct bit for DC[2|5]_HIB_MODE setting
  regulator: Fix restoring pmic.dcdcx_hib_mode settings in wm8350_dcdc_set_suspend_enable
  regulator: Fix unbalanced lock/unlock in mc13892_regulator_probe error path
  regulator: Fix set and get current limit for wm831x_buckv
  regulator: tps6586x: Fix list minimal voltage setting for LDO0
parents 66cfb327 d49fe3c4
Anatop Voltage regulators
Required properties:
- compatible: Must be "fsl,anatop-regulator"
- anatop-reg-offset: Anatop MFD register offset
- anatop-vol-bit-shift: Bit shift for the register
- anatop-vol-bit-width: Number of bits used in the register
- anatop-min-bit-val: Minimum value of this register
- anatop-min-voltage: Minimum voltage of this regulator
- anatop-max-voltage: Maximum voltage of this regulator
Any property defined as part of the core regulator
binding, defined in regulator.txt, can also be used.
Example:
regulator-vddpu {
compatible = "fsl,anatop-regulator";
regulator-name = "vddpu";
regulator-min-microvolt = <725000>;
regulator-max-microvolt = <1300000>;
regulator-always-on;
anatop-reg-offset = <0x140>;
anatop-vol-bit-shift = <9>;
anatop-vol-bit-width = <5>;
anatop-min-bit-val = <1>;
anatop-min-voltage = <725000>;
anatop-max-voltage = <1300000>;
};
...@@ -138,9 +138,10 @@ static int __devinit anatop_regulator_probe(struct platform_device *pdev) ...@@ -138,9 +138,10 @@ static int __devinit anatop_regulator_probe(struct platform_device *pdev)
rdesc->type = REGULATOR_VOLTAGE; rdesc->type = REGULATOR_VOLTAGE;
rdesc->owner = THIS_MODULE; rdesc->owner = THIS_MODULE;
sreg->mfd = anatopmfd; sreg->mfd = anatopmfd;
ret = of_property_read_u32(np, "reg", &sreg->control_reg); ret = of_property_read_u32(np, "anatop-reg-offset",
&sreg->control_reg);
if (ret) { if (ret) {
dev_err(dev, "no reg property set\n"); dev_err(dev, "no anatop-reg-offset property set\n");
goto anatop_probe_end; goto anatop_probe_end;
} }
ret = of_property_read_u32(np, "anatop-vol-bit-width", ret = of_property_read_u32(np, "anatop-vol-bit-width",
......
...@@ -2992,14 +2992,14 @@ void regulator_unregister(struct regulator_dev *rdev) ...@@ -2992,14 +2992,14 @@ void regulator_unregister(struct regulator_dev *rdev)
if (rdev == NULL) if (rdev == NULL)
return; return;
if (rdev->supply)
regulator_put(rdev->supply);
mutex_lock(&regulator_list_mutex); mutex_lock(&regulator_list_mutex);
debugfs_remove_recursive(rdev->debugfs); debugfs_remove_recursive(rdev->debugfs);
flush_work_sync(&rdev->disable_work.work); flush_work_sync(&rdev->disable_work.work);
WARN_ON(rdev->open_count); WARN_ON(rdev->open_count);
unset_regulator_supplies(rdev); unset_regulator_supplies(rdev);
list_del(&rdev->list); list_del(&rdev->list);
if (rdev->supply)
regulator_put(rdev->supply);
kfree(rdev->constraints); kfree(rdev->constraints);
device_unregister(&rdev->dev); device_unregister(&rdev->dev);
mutex_unlock(&regulator_list_mutex); mutex_unlock(&regulator_list_mutex);
......
...@@ -18,7 +18,6 @@ static void regulator_fixed_release(struct device *dev) ...@@ -18,7 +18,6 @@ static void regulator_fixed_release(struct device *dev)
/** /**
* regulator_register_fixed - register a no-op fixed regulator * regulator_register_fixed - register a no-op fixed regulator
* @name: supply name
* @id: platform device id * @id: platform device id
* @supplies: consumers for this regulator * @supplies: consumers for this regulator
* @num_supplies: number of consumers * @num_supplies: number of consumers
...@@ -32,7 +31,7 @@ struct platform_device *regulator_register_fixed(int id, ...@@ -32,7 +31,7 @@ struct platform_device *regulator_register_fixed(int id,
if (!data) if (!data)
return NULL; return NULL;
data->cfg.supply_name = "dummy"; data->cfg.supply_name = "fixed-dummy";
data->cfg.microvolts = 0; data->cfg.microvolts = 0;
data->cfg.gpio = -EINVAL; data->cfg.gpio = -EINVAL;
data->cfg.enabled_at_boot = 1; data->cfg.enabled_at_boot = 1;
......
...@@ -552,7 +552,7 @@ static int __devinit mc13892_regulator_probe(struct platform_device *pdev) ...@@ -552,7 +552,7 @@ static int __devinit mc13892_regulator_probe(struct platform_device *pdev)
mc13xxx_lock(mc13892); mc13xxx_lock(mc13892);
ret = mc13xxx_reg_read(mc13892, MC13892_REVISION, &val); ret = mc13xxx_reg_read(mc13892, MC13892_REVISION, &val);
if (ret) if (ret)
goto err_free; goto err_unlock;
/* enable switch auto mode */ /* enable switch auto mode */
if ((val & 0x0000FFFF) == 0x45d0) { if ((val & 0x0000FFFF) == 0x45d0) {
...@@ -562,7 +562,7 @@ static int __devinit mc13892_regulator_probe(struct platform_device *pdev) ...@@ -562,7 +562,7 @@ static int __devinit mc13892_regulator_probe(struct platform_device *pdev)
MC13892_SWITCHERS4_SW1MODE_AUTO | MC13892_SWITCHERS4_SW1MODE_AUTO |
MC13892_SWITCHERS4_SW2MODE_AUTO); MC13892_SWITCHERS4_SW2MODE_AUTO);
if (ret) if (ret)
goto err_free; goto err_unlock;
ret = mc13xxx_reg_rmw(mc13892, MC13892_SWITCHERS5, ret = mc13xxx_reg_rmw(mc13892, MC13892_SWITCHERS5,
MC13892_SWITCHERS5_SW3MODE_M | MC13892_SWITCHERS5_SW3MODE_M |
...@@ -570,7 +570,7 @@ static int __devinit mc13892_regulator_probe(struct platform_device *pdev) ...@@ -570,7 +570,7 @@ static int __devinit mc13892_regulator_probe(struct platform_device *pdev)
MC13892_SWITCHERS5_SW3MODE_AUTO | MC13892_SWITCHERS5_SW3MODE_AUTO |
MC13892_SWITCHERS5_SW4MODE_AUTO); MC13892_SWITCHERS5_SW4MODE_AUTO);
if (ret) if (ret)
goto err_free; goto err_unlock;
} }
mc13xxx_unlock(mc13892); mc13xxx_unlock(mc13892);
...@@ -612,10 +612,10 @@ static int __devinit mc13892_regulator_probe(struct platform_device *pdev) ...@@ -612,10 +612,10 @@ static int __devinit mc13892_regulator_probe(struct platform_device *pdev)
err: err:
while (--i >= 0) while (--i >= 0)
regulator_unregister(priv->regulators[i]); regulator_unregister(priv->regulators[i]);
return ret;
err_free: err_unlock:
mc13xxx_unlock(mc13892); mc13xxx_unlock(mc13892);
return ret; return ret;
} }
......
...@@ -311,8 +311,7 @@ static int s5m8767_set_voltage(struct regulator_dev *rdev, ...@@ -311,8 +311,7 @@ static int s5m8767_set_voltage(struct regulator_dev *rdev,
struct s5m8767_info *s5m8767 = rdev_get_drvdata(rdev); struct s5m8767_info *s5m8767 = rdev_get_drvdata(rdev);
const struct s5m_voltage_desc *desc; const struct s5m_voltage_desc *desc;
int reg_id = rdev_get_id(rdev); int reg_id = rdev_get_id(rdev);
int reg, mask, ret; int sel, reg, mask, ret;
int i;
u8 val; u8 val;
switch (reg_id) { switch (reg_id) {
...@@ -333,19 +332,20 @@ static int s5m8767_set_voltage(struct regulator_dev *rdev, ...@@ -333,19 +332,20 @@ static int s5m8767_set_voltage(struct regulator_dev *rdev,
desc = reg_voltage_map[reg_id]; desc = reg_voltage_map[reg_id];
i = s5m8767_convert_voltage_to_sel(desc, min_uV, max_uV); sel = s5m8767_convert_voltage_to_sel(desc, min_uV, max_uV);
if (i < 0) if (sel < 0)
return i; return sel;
ret = s5m8767_get_voltage_register(rdev, &reg); ret = s5m8767_get_voltage_register(rdev, &reg);
if (ret) if (ret)
return ret; return ret;
s5m_reg_read(s5m8767->iodev, reg, &val); s5m_reg_read(s5m8767->iodev, reg, &val);
val = val & mask; val &= ~mask;
val |= sel;
ret = s5m_reg_write(s5m8767->iodev, reg, val); ret = s5m_reg_write(s5m8767->iodev, reg, val);
*selector = i; *selector = sel;
return ret; return ret;
} }
......
...@@ -79,6 +79,11 @@ static int tps6586x_ldo_list_voltage(struct regulator_dev *rdev, ...@@ -79,6 +79,11 @@ static int tps6586x_ldo_list_voltage(struct regulator_dev *rdev,
unsigned selector) unsigned selector)
{ {
struct tps6586x_regulator *info = rdev_get_drvdata(rdev); struct tps6586x_regulator *info = rdev_get_drvdata(rdev);
int rid = rdev_get_id(rdev);
/* LDO0 has minimal voltage 1.2V rather than 1.25V */
if ((rid == TPS6586X_ID_LDO_0) && (selector == 0))
return (info->voltages[0] - 50) * 1000;
return info->voltages[selector] * 1000; return info->voltages[selector] * 1000;
} }
......
...@@ -380,13 +380,15 @@ static int wm831x_buckv_set_current_limit(struct regulator_dev *rdev, ...@@ -380,13 +380,15 @@ static int wm831x_buckv_set_current_limit(struct regulator_dev *rdev,
int i; int i;
for (i = 0; i < ARRAY_SIZE(wm831x_dcdc_ilim); i++) { for (i = 0; i < ARRAY_SIZE(wm831x_dcdc_ilim); i++) {
if (max_uA <= wm831x_dcdc_ilim[i]) if ((min_uA <= wm831x_dcdc_ilim[i]) &&
(wm831x_dcdc_ilim[i] <= max_uA))
break; break;
} }
if (i == ARRAY_SIZE(wm831x_dcdc_ilim)) if (i == ARRAY_SIZE(wm831x_dcdc_ilim))
return -EINVAL; return -EINVAL;
return wm831x_set_bits(wm831x, reg, WM831X_DC1_HC_THR_MASK, i); return wm831x_set_bits(wm831x, reg, WM831X_DC1_HC_THR_MASK,
i << WM831X_DC1_HC_THR_SHIFT);
} }
static int wm831x_buckv_get_current_limit(struct regulator_dev *rdev) static int wm831x_buckv_get_current_limit(struct regulator_dev *rdev)
...@@ -400,7 +402,8 @@ static int wm831x_buckv_get_current_limit(struct regulator_dev *rdev) ...@@ -400,7 +402,8 @@ static int wm831x_buckv_get_current_limit(struct regulator_dev *rdev)
if (val < 0) if (val < 0)
return val; return val;
return wm831x_dcdc_ilim[val & WM831X_DC1_HC_THR_MASK]; val = (val & WM831X_DC1_HC_THR_MASK) >> WM831X_DC1_HC_THR_SHIFT;
return wm831x_dcdc_ilim[val];
} }
static struct regulator_ops wm831x_buckv_ops = { static struct regulator_ops wm831x_buckv_ops = {
......
...@@ -101,7 +101,7 @@ static int wm831x_isink_set_current(struct regulator_dev *rdev, ...@@ -101,7 +101,7 @@ static int wm831x_isink_set_current(struct regulator_dev *rdev,
for (i = 0; i < ARRAY_SIZE(wm831x_isinkv_values); i++) { for (i = 0; i < ARRAY_SIZE(wm831x_isinkv_values); i++) {
int val = wm831x_isinkv_values[i]; int val = wm831x_isinkv_values[i];
if (min_uA >= val && val <= max_uA) { if (min_uA <= val && val <= max_uA) {
ret = wm831x_set_bits(wm831x, isink->reg, ret = wm831x_set_bits(wm831x, isink->reg,
WM831X_CS1_ISEL_MASK, i); WM831X_CS1_ISEL_MASK, i);
return ret; return ret;
......
...@@ -506,22 +506,19 @@ static int wm831x_aldo_set_mode(struct regulator_dev *rdev, ...@@ -506,22 +506,19 @@ static int wm831x_aldo_set_mode(struct regulator_dev *rdev,
{ {
struct wm831x_ldo *ldo = rdev_get_drvdata(rdev); struct wm831x_ldo *ldo = rdev_get_drvdata(rdev);
struct wm831x *wm831x = ldo->wm831x; struct wm831x *wm831x = ldo->wm831x;
int ctrl_reg = ldo->base + WM831X_LDO_CONTROL;
int on_reg = ldo->base + WM831X_LDO_ON_CONTROL; int on_reg = ldo->base + WM831X_LDO_ON_CONTROL;
int ret; int ret;
switch (mode) { switch (mode) {
case REGULATOR_MODE_NORMAL: case REGULATOR_MODE_NORMAL:
ret = wm831x_set_bits(wm831x, on_reg, ret = wm831x_set_bits(wm831x, on_reg, WM831X_LDO7_ON_MODE, 0);
WM831X_LDO7_ON_MODE, 0);
if (ret < 0) if (ret < 0)
return ret; return ret;
break; break;
case REGULATOR_MODE_IDLE: case REGULATOR_MODE_IDLE:
ret = wm831x_set_bits(wm831x, ctrl_reg, ret = wm831x_set_bits(wm831x, on_reg, WM831X_LDO7_ON_MODE,
WM831X_LDO7_ON_MODE,
WM831X_LDO7_ON_MODE); WM831X_LDO7_ON_MODE);
if (ret < 0) if (ret < 0)
return ret; return ret;
......
...@@ -99,7 +99,7 @@ static int get_isink_val(int min_uA, int max_uA, u16 *setting) ...@@ -99,7 +99,7 @@ static int get_isink_val(int min_uA, int max_uA, u16 *setting)
{ {
int i; int i;
for (i = ARRAY_SIZE(isink_cur) - 1; i >= 0; i--) { for (i = 0; i < ARRAY_SIZE(isink_cur); i++) {
if (min_uA <= isink_cur[i] && max_uA >= isink_cur[i]) { if (min_uA <= isink_cur[i] && max_uA >= isink_cur[i]) {
*setting = i; *setting = i;
return 0; return 0;
...@@ -186,7 +186,7 @@ static int wm8350_isink_get_current(struct regulator_dev *rdev) ...@@ -186,7 +186,7 @@ static int wm8350_isink_get_current(struct regulator_dev *rdev)
return 0; return 0;
} }
return DIV_ROUND_CLOSEST(isink_cur[val], 100); return isink_cur[val];
} }
/* turn on ISINK followed by DCDC */ /* turn on ISINK followed by DCDC */
...@@ -495,25 +495,25 @@ static int wm8350_dcdc_set_suspend_enable(struct regulator_dev *rdev) ...@@ -495,25 +495,25 @@ static int wm8350_dcdc_set_suspend_enable(struct regulator_dev *rdev)
val = wm8350_reg_read(wm8350, WM8350_DCDC1_LOW_POWER) val = wm8350_reg_read(wm8350, WM8350_DCDC1_LOW_POWER)
& ~WM8350_DCDC_HIB_MODE_MASK; & ~WM8350_DCDC_HIB_MODE_MASK;
wm8350_reg_write(wm8350, WM8350_DCDC1_LOW_POWER, wm8350_reg_write(wm8350, WM8350_DCDC1_LOW_POWER,
wm8350->pmic.dcdc1_hib_mode); val | wm8350->pmic.dcdc1_hib_mode);
break; break;
case WM8350_DCDC_3: case WM8350_DCDC_3:
val = wm8350_reg_read(wm8350, WM8350_DCDC3_LOW_POWER) val = wm8350_reg_read(wm8350, WM8350_DCDC3_LOW_POWER)
& ~WM8350_DCDC_HIB_MODE_MASK; & ~WM8350_DCDC_HIB_MODE_MASK;
wm8350_reg_write(wm8350, WM8350_DCDC3_LOW_POWER, wm8350_reg_write(wm8350, WM8350_DCDC3_LOW_POWER,
wm8350->pmic.dcdc3_hib_mode); val | wm8350->pmic.dcdc3_hib_mode);
break; break;
case WM8350_DCDC_4: case WM8350_DCDC_4:
val = wm8350_reg_read(wm8350, WM8350_DCDC4_LOW_POWER) val = wm8350_reg_read(wm8350, WM8350_DCDC4_LOW_POWER)
& ~WM8350_DCDC_HIB_MODE_MASK; & ~WM8350_DCDC_HIB_MODE_MASK;
wm8350_reg_write(wm8350, WM8350_DCDC4_LOW_POWER, wm8350_reg_write(wm8350, WM8350_DCDC4_LOW_POWER,
wm8350->pmic.dcdc4_hib_mode); val | wm8350->pmic.dcdc4_hib_mode);
break; break;
case WM8350_DCDC_6: case WM8350_DCDC_6:
val = wm8350_reg_read(wm8350, WM8350_DCDC6_LOW_POWER) val = wm8350_reg_read(wm8350, WM8350_DCDC6_LOW_POWER)
& ~WM8350_DCDC_HIB_MODE_MASK; & ~WM8350_DCDC_HIB_MODE_MASK;
wm8350_reg_write(wm8350, WM8350_DCDC6_LOW_POWER, wm8350_reg_write(wm8350, WM8350_DCDC6_LOW_POWER,
wm8350->pmic.dcdc6_hib_mode); val | wm8350->pmic.dcdc6_hib_mode);
break; break;
case WM8350_DCDC_2: case WM8350_DCDC_2:
case WM8350_DCDC_5: case WM8350_DCDC_5:
...@@ -535,25 +535,25 @@ static int wm8350_dcdc_set_suspend_disable(struct regulator_dev *rdev) ...@@ -535,25 +535,25 @@ static int wm8350_dcdc_set_suspend_disable(struct regulator_dev *rdev)
val = wm8350_reg_read(wm8350, WM8350_DCDC1_LOW_POWER); val = wm8350_reg_read(wm8350, WM8350_DCDC1_LOW_POWER);
wm8350->pmic.dcdc1_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK; wm8350->pmic.dcdc1_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK;
wm8350_reg_write(wm8350, WM8350_DCDC1_LOW_POWER, wm8350_reg_write(wm8350, WM8350_DCDC1_LOW_POWER,
WM8350_DCDC_HIB_MODE_DIS); val | WM8350_DCDC_HIB_MODE_DIS);
break; break;
case WM8350_DCDC_3: case WM8350_DCDC_3:
val = wm8350_reg_read(wm8350, WM8350_DCDC3_LOW_POWER); val = wm8350_reg_read(wm8350, WM8350_DCDC3_LOW_POWER);
wm8350->pmic.dcdc3_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK; wm8350->pmic.dcdc3_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK;
wm8350_reg_write(wm8350, WM8350_DCDC3_LOW_POWER, wm8350_reg_write(wm8350, WM8350_DCDC3_LOW_POWER,
WM8350_DCDC_HIB_MODE_DIS); val | WM8350_DCDC_HIB_MODE_DIS);
break; break;
case WM8350_DCDC_4: case WM8350_DCDC_4:
val = wm8350_reg_read(wm8350, WM8350_DCDC4_LOW_POWER); val = wm8350_reg_read(wm8350, WM8350_DCDC4_LOW_POWER);
wm8350->pmic.dcdc4_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK; wm8350->pmic.dcdc4_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK;
wm8350_reg_write(wm8350, WM8350_DCDC4_LOW_POWER, wm8350_reg_write(wm8350, WM8350_DCDC4_LOW_POWER,
WM8350_DCDC_HIB_MODE_DIS); val | WM8350_DCDC_HIB_MODE_DIS);
break; break;
case WM8350_DCDC_6: case WM8350_DCDC_6:
val = wm8350_reg_read(wm8350, WM8350_DCDC6_LOW_POWER); val = wm8350_reg_read(wm8350, WM8350_DCDC6_LOW_POWER);
wm8350->pmic.dcdc6_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK; wm8350->pmic.dcdc6_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK;
wm8350_reg_write(wm8350, WM8350_DCDC6_LOW_POWER, wm8350_reg_write(wm8350, WM8350_DCDC6_LOW_POWER,
WM8350_DCDC_HIB_MODE_DIS); val | WM8350_DCDC_HIB_MODE_DIS);
break; break;
case WM8350_DCDC_2: case WM8350_DCDC_2:
case WM8350_DCDC_5: case WM8350_DCDC_5:
...@@ -575,13 +575,13 @@ static int wm8350_dcdc25_set_suspend_enable(struct regulator_dev *rdev) ...@@ -575,13 +575,13 @@ static int wm8350_dcdc25_set_suspend_enable(struct regulator_dev *rdev)
val = wm8350_reg_read(wm8350, WM8350_DCDC2_CONTROL) val = wm8350_reg_read(wm8350, WM8350_DCDC2_CONTROL)
& ~WM8350_DC2_HIB_MODE_MASK; & ~WM8350_DC2_HIB_MODE_MASK;
wm8350_reg_write(wm8350, WM8350_DCDC2_CONTROL, val | wm8350_reg_write(wm8350, WM8350_DCDC2_CONTROL, val |
WM8350_DC2_HIB_MODE_ACTIVE); (WM8350_DC2_HIB_MODE_ACTIVE << WM8350_DC2_HIB_MODE_SHIFT));
break; break;
case WM8350_DCDC_5: case WM8350_DCDC_5:
val = wm8350_reg_read(wm8350, WM8350_DCDC5_CONTROL) val = wm8350_reg_read(wm8350, WM8350_DCDC5_CONTROL)
& ~WM8350_DC2_HIB_MODE_MASK; & ~WM8350_DC5_HIB_MODE_MASK;
wm8350_reg_write(wm8350, WM8350_DCDC5_CONTROL, val | wm8350_reg_write(wm8350, WM8350_DCDC5_CONTROL, val |
WM8350_DC5_HIB_MODE_ACTIVE); (WM8350_DC5_HIB_MODE_ACTIVE << WM8350_DC5_HIB_MODE_SHIFT));
break; break;
default: default:
return -EINVAL; return -EINVAL;
...@@ -600,13 +600,13 @@ static int wm8350_dcdc25_set_suspend_disable(struct regulator_dev *rdev) ...@@ -600,13 +600,13 @@ static int wm8350_dcdc25_set_suspend_disable(struct regulator_dev *rdev)
val = wm8350_reg_read(wm8350, WM8350_DCDC2_CONTROL) val = wm8350_reg_read(wm8350, WM8350_DCDC2_CONTROL)
& ~WM8350_DC2_HIB_MODE_MASK; & ~WM8350_DC2_HIB_MODE_MASK;
wm8350_reg_write(wm8350, WM8350_DCDC2_CONTROL, val | wm8350_reg_write(wm8350, WM8350_DCDC2_CONTROL, val |
WM8350_DC2_HIB_MODE_DISABLE); (WM8350_DC2_HIB_MODE_DISABLE << WM8350_DC2_HIB_MODE_SHIFT));
break; break;
case WM8350_DCDC_5: case WM8350_DCDC_5:
val = wm8350_reg_read(wm8350, WM8350_DCDC5_CONTROL) val = wm8350_reg_read(wm8350, WM8350_DCDC5_CONTROL)
& ~WM8350_DC2_HIB_MODE_MASK; & ~WM8350_DC5_HIB_MODE_MASK;
wm8350_reg_write(wm8350, WM8350_DCDC5_CONTROL, val | wm8350_reg_write(wm8350, WM8350_DCDC5_CONTROL, val |
WM8350_DC2_HIB_MODE_DISABLE); (WM8350_DC5_HIB_MODE_DISABLE << WM8350_DC5_HIB_MODE_SHIFT));
break; break;
default: default:
return -EINVAL; return -EINVAL;
...@@ -749,7 +749,7 @@ static int wm8350_ldo_set_suspend_disable(struct regulator_dev *rdev) ...@@ -749,7 +749,7 @@ static int wm8350_ldo_set_suspend_disable(struct regulator_dev *rdev)
/* all LDOs have same mV bits */ /* all LDOs have same mV bits */
val = wm8350_reg_read(wm8350, volt_reg) & ~WM8350_LDO1_HIB_MODE_MASK; val = wm8350_reg_read(wm8350, volt_reg) & ~WM8350_LDO1_HIB_MODE_MASK;
wm8350_reg_write(wm8350, volt_reg, WM8350_LDO1_HIB_MODE_DIS); wm8350_reg_write(wm8350, volt_reg, val | WM8350_LDO1_HIB_MODE_DIS);
return 0; return 0;
} }
......
...@@ -71,7 +71,7 @@ struct regulator_state { ...@@ -71,7 +71,7 @@ struct regulator_state {
* @uV_offset: Offset applied to voltages from consumer to compensate for * @uV_offset: Offset applied to voltages from consumer to compensate for
* voltage drops. * voltage drops.
* *
* @min_uA: Smallest consumers consumers may set. * @min_uA: Smallest current consumers may set.
* @max_uA: Largest current consumers may set. * @max_uA: Largest current consumers may set.
* *
* @valid_modes_mask: Mask of modes which may be configured by consumers. * @valid_modes_mask: Mask of modes which may be configured by consumers.
...@@ -134,10 +134,8 @@ struct regulation_constraints { ...@@ -134,10 +134,8 @@ struct regulation_constraints {
/** /**
* struct regulator_consumer_supply - supply -> device mapping * struct regulator_consumer_supply - supply -> device mapping
* *
* This maps a supply name to a device. Only one of dev or dev_name * This maps a supply name to a device. Use of dev_name allows support for
* can be specified. Use of dev_name allows support for buses which * buses which make struct device available late such as I2C.
* make struct device available late such as I2C and is the preferred
* form.
* *
* @dev_name: Result of dev_name() for the consumer. * @dev_name: Result of dev_name() for the consumer.
* @supply: Name for the supply. * @supply: Name for the supply.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment