linux/drivers/regulator
Sascha Hauer fc42112c0e regulator: core: Propagate voltage changes to supply regulators
Until now changing the voltage of a regulator only ever effected the
regulator itself, but never its supplies. It's a common pattern though
to put LDO regulators behind switching regulators. The switching
regulators efficiently drop the input voltage but have a high ripple on
their output. The output is then cleaned up by the LDOs. For higher
energy efficiency the voltage drop at the LDOs should be minimized. For
this scenario we need to propagate the voltage change to the supply
regulators. Another scenario where voltage propagation is desired is
a regulator which only consists of a switch and thus cannot regulate
voltages itself. In this case we can pass setting voltages to the
supply.

This patch adds support for voltage propagation. We do voltage
propagation when the current regulator has a minimum dropout voltage
specified or if the current regulator lacks a get_voltage operation
(indicating it's a switch and not a regulator).

Changing the supply voltage must be done carefully. When we are
increasing the current regulators output we must first increase the
supply voltage and then the regulator itself. When we are decreasing the
current regulators voltage we must decrease the supply voltage after
changing the current regulators voltage.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
2015-10-22 13:34:11 +01:00
..
88pm800.c Merge branch 'fix/88pm800' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator into regulator-88pm800 2015-07-17 12:42:48 +01:00
88pm8607.c regulator: 88pm8607: Constify platform_device_id 2015-05-01 17:44:55 +01:00
aat2870-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
ab3100.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
ab8500-ext.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
ab8500.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
act8865-regulator.c regulator: drivers: Drop owner assignment from i2c_driver 2015-07-14 18:53:01 +01:00
ad5398.c regulator: ad5398: Remove unnecessary MODULE_ALIAS() 2015-08-30 12:21:01 +01:00
anatop-regulator.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
arizona-ldo1.c sound updates for 4.2-rc1 2015-06-25 17:15:18 -07:00
arizona-micsupp.c == Changes to existing drivers == 2015-04-14 17:29:55 -07:00
as3711-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
as3722-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
axp20x-regulator.c regulator: axp20x: Add module alias 2015-08-04 18:29:00 +01:00
bcm590xx-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
core.c regulator: core: Propagate voltage changes to supply regulators 2015-10-22 13:34:11 +01:00
da903x.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
da9052-regulator.c mfd: da9052: Fix broken regulator probe 2015-05-27 13:34:15 +01:00
da9055-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
da9062-regulator.c regulator: da9062: Drop owner assignment from platform_driver 2015-07-14 18:48:19 +01:00
da9063-regulator.c regulator: da9063: Fix up irq leak 2015-06-02 15:38:36 +01:00
da9210-regulator.c Merge remote-tracking branches 'regulator/topic/mt6311', 'regulator/topic/ocp', 'regulator/topic/owner', 'regulator/topic/pfuze100' and 'regulator/topic/pwm' into regulator-next 2015-08-30 14:39:48 +01:00
da9210-regulator.h
da9211-regulator.c Merge remote-tracking branches 'regulator/topic/mt6311', 'regulator/topic/ocp', 'regulator/topic/owner', 'regulator/topic/pfuze100' and 'regulator/topic/pwm' into regulator-next 2015-08-30 14:39:48 +01:00
da9211-regulator.h regulator: da9211: support da9215 2015-07-13 19:11:24 +01:00
db8500-prcmu.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
dbx500-prcmu.c regulator: dbx500: Remove use of seq_puts/seq_printf return value 2015-02-24 17:16:14 +09:00
dbx500-prcmu.h
devres.c regulator: core: Add devres versions of notifier registration 2015-03-05 16:42:14 +00:00
dummy.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
dummy.h
fan53555.c regulator: fan53555: Export I2C module alias information 2015-07-31 18:15:21 +01:00
fixed-helper.c
fixed.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
gpio-regulator.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
helpers.c regulator: Fix the function name in documentation 2015-04-19 13:23:07 +01:00
hi6421-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
internal.h regulator: Allow parsing custom properties when using simplified DT parsing 2015-01-08 20:15:45 +00:00
isl6271a-regulator.c regulator: drivers: Drop owner assignment from i2c_driver 2015-07-14 18:53:01 +01:00
isl9305.c Merge remote-tracking branches 'regulator/topic/mt6311', 'regulator/topic/ocp', 'regulator/topic/owner', 'regulator/topic/pfuze100' and 'regulator/topic/pwm' into regulator-next 2015-08-30 14:39:48 +01:00
Kconfig Merge remote-tracking branches 'regulator/topic/qcom-smd', 'regulator/topic/qcom-spmi', 'regulator/topic/rk808', 'regulator/topic/stub' and 'regulator/topic/tol' into regulator-next 2015-08-30 14:40:11 +01:00
lp872x.c Merge remote-tracking branches 'regulator/topic/mt6311', 'regulator/topic/ocp', 'regulator/topic/owner', 'regulator/topic/pfuze100' and 'regulator/topic/pwm' into regulator-next 2015-08-30 14:39:48 +01:00
lp3971.c regulator: drivers: Drop owner assignment from i2c_driver 2015-07-14 18:53:01 +01:00
lp3972.c regulator: drivers: Drop owner assignment from i2c_driver 2015-07-14 18:53:01 +01:00
lp8755.c regulator: lp8755: Convert to devm_request_threaded_irq 2015-06-02 15:35:17 +01:00
lp8788-buck.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
lp8788-ldo.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
ltc3589.c Merge remote-tracking branches 'regulator/topic/mt6311', 'regulator/topic/ocp', 'regulator/topic/owner', 'regulator/topic/pfuze100' and 'regulator/topic/pwm' into regulator-next 2015-08-30 14:39:48 +01:00
Makefile Merge remote-tracking branches 'regulator/topic/qcom-smd', 'regulator/topic/qcom-spmi', 'regulator/topic/rk808', 'regulator/topic/stub' and 'regulator/topic/tol' into regulator-next 2015-08-30 14:40:11 +01:00
max1586.c regulator: drivers: Drop owner assignment from i2c_driver 2015-07-14 18:53:01 +01:00
max8649.c regulator: max8649: Constify struct regmap_config and regulator_ops 2015-01-05 20:10:13 +00:00
max8660.c regulator: drivers: Drop owner assignment from i2c_driver 2015-07-14 18:53:01 +01:00
max8907-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
max8925-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
max8952.c Merge remote-tracking branches 'regulator/topic/max77686', 'regulator/topic/max77693', 'regulator/topic/max77802', 'regulator/topic/power-off' and 'regulator/topic/rk808' into regulator-next 2014-12-05 11:14:37 +00:00
max8973-regulator.c Merge remote-tracking branches 'regulator/topic/mt6311', 'regulator/topic/ocp', 'regulator/topic/owner', 'regulator/topic/pfuze100' and 'regulator/topic/pwm' into regulator-next 2015-08-30 14:39:48 +01:00
max8997.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
max8998.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
max14577.c regulator: max14577: Reduce duplication of regulator_desc initializers 2015-04-27 18:57:57 +01:00
max77686.c regulator: max77686: fix gpio_enabled shift wrapping bug 2015-05-20 19:09:51 +01:00
max77693.c regulators: max77693: register driver earlier to avoid deferred probe 2015-08-21 09:07:45 -07:00
max77802.c drivers/regulator: include <module.h> for modular max77802 code 2015-06-16 14:12:26 -04:00
mc13xxx-regulator-core.c regulator: of: Add regulator desc param to of_get_regulator_init_data() 2014-11-26 18:58:14 +00:00
mc13xxx.h
mc13783-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
mc13892-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
mt6311-regulator.c regulator: mt6311: fix platform_no_drv_owner.cocci warnings 2015-08-30 14:34:50 +01:00
mt6311-regulator.h regulator: mt6311: Add support for mt6311 regulator 2015-07-24 12:30:49 +01:00
mt6397-regulator.c regulator: mt6397: Add support for MT6397 regulator 2014-12-24 12:41:05 +00:00
of_regulator.c regulator: Add over current protection (OCP) support 2015-07-24 18:28:46 +01:00
palmas-regulator.c regulator: palmas: Add has_regen3 check for TPS659038 2015-03-17 12:21:15 +00:00
pbias-regulator.c regulator: pbias: Fix broken pbias disable functionality 2015-08-14 19:01:58 +01:00
pcap-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
pcf50633-regulator.c
pfuze100-regulator.c Merge remote-tracking branches 'regulator/topic/mt6311', 'regulator/topic/ocp', 'regulator/topic/owner', 'regulator/topic/pfuze100' and 'regulator/topic/pwm' into regulator-next 2015-08-30 14:39:48 +01:00
pwm-regulator.c regulator: pwm-regulator: Fix ' comparison between signed and unsigned integer' warning 2015-07-10 19:34:06 +01:00
qcom_rpm-regulator.c regulator: qcom: Tidy up probe() 2015-04-08 12:22:55 +01:00
qcom_smd-regulator.c regulator: qcom_smd: Set n_voltages for pm8941_lnldo 2015-08-19 09:21:00 -07:00
qcom_spmi-regulator.c regulator: qcom-spmi: Add vendor specific configuration 2015-07-24 18:29:45 +01:00
rc5t583-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
rk808-regulator.c regulator: rk808: make better use of the gpiod API 2015-07-21 17:11:30 +01:00
rn5t618-regulator.c regulator: rn5t618: Convert to new style DT parsing 2014-10-20 12:23:59 +01:00
rt5033-regulator.c regulator: rt5033-regulator: Use regulator_nodes/of_match in the descriptor 2014-12-24 12:54:56 +00:00
s2mpa01.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
s2mps11.c regulator: s2mps11: Fix GPIO suspend enable shift wrapping bug 2015-06-24 12:25:20 +01:00
s5m8767.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
sky81452-regulator.c regulator: sky81452: Modify Device Tree structure 2014-12-02 12:22:39 +00:00
stw481x-vmmc.c regulator: stw481x: Remove unused fields from struct stw481x 2015-03-21 01:05:56 +00:00
ti-abb-regulator.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
tps6105x-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
tps6507x-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
tps6524x-regulator.c
tps6586x-regulator.c regulator: tps6586x: silence pointer-to-int-cast 2015-07-23 15:58:33 +01:00
tps51632-regulator.c regulator: drivers: Drop owner assignment from i2c_driver 2015-07-14 18:53:01 +01:00
tps62360-regulator.c regulator: drivers: Drop owner assignment from i2c_driver 2015-07-14 18:53:01 +01:00
tps65023-regulator.c regulator: drivers: Drop owner assignment from i2c_driver 2015-07-14 18:53:01 +01:00
tps65090-regulator.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
tps65217-regulator.c regulator: tps65217: Use simplified DT parsing 2014-09-10 12:02:48 +01:00
tps65218-regulator.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
tps65910-regulator.c regulator: tps65910: Add missing #include <linux/of.h> 2015-03-16 11:41:16 +00:00
tps65912-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
tps80031-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
twl-regulator.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
userspace-consumer.c
vexpress.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
virtual.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
wm831x-dcdc.c regulator: wm831x: Pass the IRQF_ONESHOT flag 2015-06-02 11:53:59 +01:00
wm831x-isink.c regulator: wm831x: Pass the IRQF_ONESHOT flag 2015-06-02 11:53:59 +01:00
wm831x-ldo.c regulator: wm831x: Pass the IRQF_ONESHOT flag 2015-06-02 11:53:59 +01:00
wm8350-regulator.c regulator: wm8350: Remove unused variable 2015-03-05 17:56:12 +00:00
wm8400-regulator.c
wm8994-regulator.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00