Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d3452436 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull regulator fixes from Mark Brown:
 "A few small things here and there, nothing major here really.  The
  conversion of twl4030ldo_ops to get_voltage_sel is a fix, as covered
  in the commit log it fixes inconsistency in handling of the IS_UNSUP()
  feature in the driver."

* tag 'regulator-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
  regulator: fixed regulator_bulk_enable unwinding code
  regulator: twl: Convert twl4030ldo_ops to get_voltage_sel
  regulator: palmas: fix number of SMPS voltages
  regulator: core: fix documentation error in regulator_allow_bypass
  regulator: core: update kernel documentation for regulator_desc
  regulator: db8500-prcmu - remove incorrect __exit markup
parents 0c8150d2 8870d402
Loading
Loading
Loading
Loading
+8 −4
Original line number Original line Diff line number Diff line
@@ -2830,7 +2830,7 @@ EXPORT_SYMBOL_GPL(regulator_get_bypass_regmap);
 * regulator_allow_bypass - allow the regulator to go into bypass mode
 * regulator_allow_bypass - allow the regulator to go into bypass mode
 *
 *
 * @regulator: Regulator to configure
 * @regulator: Regulator to configure
 * @allow: enable or disable bypass mode
 * @enable: enable or disable bypass mode
 *
 *
 * Allow the regulator to go into bypass mode if all other consumers
 * Allow the regulator to go into bypass mode if all other consumers
 * for the regulator also enable bypass mode and the machine
 * for the regulator also enable bypass mode and the machine
@@ -3057,9 +3057,13 @@ int regulator_bulk_enable(int num_consumers,
	return 0;
	return 0;


err:
err:
	pr_err("Failed to enable %s: %d\n", consumers[i].supply, ret);
	for (i = 0; i < num_consumers; i++) {
	while (--i >= 0)
		if (consumers[i].ret < 0)
			pr_err("Failed to enable %s: %d\n", consumers[i].supply,
			       consumers[i].ret);
		else
			regulator_disable(consumers[i].consumer);
			regulator_disable(consumers[i].consumer);
	}


	return ret;
	return ret;
}
}
+2 −2
Original line number Original line Diff line number Diff line
@@ -528,7 +528,7 @@ static int db8500_regulator_probe(struct platform_device *pdev)
	return 0;
	return 0;
}
}


static int __exit db8500_regulator_remove(struct platform_device *pdev)
static int db8500_regulator_remove(struct platform_device *pdev)
{
{
	int i;
	int i;


@@ -553,7 +553,7 @@ static struct platform_driver db8500_regulator_driver = {
		.owner = THIS_MODULE,
		.owner = THIS_MODULE,
	},
	},
	.probe = db8500_regulator_probe,
	.probe = db8500_regulator_probe,
	.remove = __exit_p(db8500_regulator_remove),
	.remove = db8500_regulator_remove,
};
};


static int __init db8500_regulator_init(void)
static int __init db8500_regulator_init(void)
+2 −1
Original line number Original line Diff line number Diff line
@@ -4,6 +4,7 @@
 * Copyright 2011-2012 Texas Instruments Inc.
 * Copyright 2011-2012 Texas Instruments Inc.
 *
 *
 * Author: Graeme Gregory <gg@slimlogic.co.uk>
 * Author: Graeme Gregory <gg@slimlogic.co.uk>
 * Author: Ian Lartey <ian@slimlogic.co.uk>
 *
 *
 *  This program is free software; you can redistribute it and/or modify it
 *  This program is free software; you can redistribute it and/or modify it
 *  under  the terms of the GNU General  Public License as published by the
 *  under  the terms of the GNU General  Public License as published by the
@@ -156,7 +157,7 @@ static const struct regs_info palmas_regs_info[] = {
 *
 *
 * So they are basically (maxV-minV)/stepV
 * So they are basically (maxV-minV)/stepV
 */
 */
#define PALMAS_SMPS_NUM_VOLTAGES	116
#define PALMAS_SMPS_NUM_VOLTAGES	117
#define PALMAS_SMPS10_NUM_VOLTAGES	2
#define PALMAS_SMPS10_NUM_VOLTAGES	2
#define PALMAS_LDO_NUM_VOLTAGES		50
#define PALMAS_LDO_NUM_VOLTAGES		50


+4 −5
Original line number Original line Diff line number Diff line
@@ -471,24 +471,23 @@ twl4030ldo_set_voltage_sel(struct regulator_dev *rdev, unsigned selector)
			    selector);
			    selector);
}
}


static int twl4030ldo_get_voltage(struct regulator_dev *rdev)
static int twl4030ldo_get_voltage_sel(struct regulator_dev *rdev)
{
{
	struct twlreg_info	*info = rdev_get_drvdata(rdev);
	struct twlreg_info	*info = rdev_get_drvdata(rdev);
	int		vsel = twlreg_read(info, TWL_MODULE_PM_RECEIVER,
	int vsel = twlreg_read(info, TWL_MODULE_PM_RECEIVER, VREG_VOLTAGE);
								VREG_VOLTAGE);


	if (vsel < 0)
	if (vsel < 0)
		return vsel;
		return vsel;


	vsel &= info->table_len - 1;
	vsel &= info->table_len - 1;
	return LDO_MV(info->table[vsel]) * 1000;
	return vsel;
}
}


static struct regulator_ops twl4030ldo_ops = {
static struct regulator_ops twl4030ldo_ops = {
	.list_voltage	= twl4030ldo_list_voltage,
	.list_voltage	= twl4030ldo_list_voltage,


	.set_voltage_sel = twl4030ldo_set_voltage_sel,
	.set_voltage_sel = twl4030ldo_set_voltage_sel,
	.get_voltage	= twl4030ldo_get_voltage,
	.get_voltage_sel = twl4030ldo_get_voltage_sel,


	.enable		= twl4030reg_enable,
	.enable		= twl4030reg_enable,
	.disable	= twl4030reg_disable,
	.disable	= twl4030reg_disable,
+2 −0
Original line number Original line Diff line number Diff line
@@ -199,6 +199,8 @@ enum regulator_type {
 *                output when using regulator_set_voltage_sel_regmap
 *                output when using regulator_set_voltage_sel_regmap
 * @enable_reg: Register for control when using regmap enable/disable ops
 * @enable_reg: Register for control when using regmap enable/disable ops
 * @enable_mask: Mask for control when using regmap enable/disable ops
 * @enable_mask: Mask for control when using regmap enable/disable ops
 * @bypass_reg: Register for control when using regmap set_bypass
 * @bypass_mask: Mask for control when using regmap set_bypass
 *
 *
 * @enable_time: Time taken for initial enable of regulator (in uS).
 * @enable_time: Time taken for initial enable of regulator (in uS).
 */
 */