linux_dsm_epyc7002/drivers/regulator
Maciej Purski 696861761a
regulator: core: Add voltage balancing mechanism
On Odroid XU3/4 and other Exynos5422 based boards there is a case, that
different devices on the board are supplied by different regulators
with non-fixed voltages. If one of these devices temporarily requires
higher voltage, there might occur a situation that the spread between
two devices' voltages is so high, that there is a risk of changing
'high' and 'low' states on the interconnection between devices powered
by those regulators.

Introduce new function regulator_balance_voltage(), which
keeps max_spread constraint fulfilled between a group of coupled
regulators. It should be called if a regulator changes its
voltage or after disabling or enabling. Disabled regulators should
follow changes of the enabled ones, but their consumers' demands
shouldn't be taken into account while calculating voltage of other
coupled regulators.

Find voltages, which are closest to suiting all the consumers' demands,
while fulfilling max_spread constraint, keeping the following rules:
- if one regulator is about to rise its voltage, rise others
  voltages in order to keep the max_spread
- if a regulator, which has caused rising other regulators, is
  lowered, lower other regulators if possible
- if one regulator is about to lower its voltage, but it hasn't caused
  rising other regulators, don't change its voltage if it breaks the
  max_spread

Change regulators' voltages step by step, keeping max_spread constraint
fulfilled all the time. Function regulator_get_optimal_voltage()
should find the best possible change for the regulator, which doesn't
break max_spread constraint. In function regulator_balance_voltage()
optimize number of steps by finding highest voltage difference on
each iteration.

If a regulator, which is about to change its voltage, is not coupled,
method regulator_get_optimal_voltage() should simply return the lowest
voltage fulfilling consumers' demands.

Coupling should be checked only if the system is in PM_SUSPEND_ON state.

Signed-off-by: Maciej Purski <m.purski@samsung.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
2018-05-17 16:05:50 +09:00
..
88pg86x.c regulator: 88pg86x: new i2c dual regulator chip 2018-03-09 13:01:17 +00:00
88pm800.c regulator: 88pm800: constify regulator_ops structures 2017-01-31 20:32:26 +00:00
88pm8607.c regulator: 88pm8607: constify regulator_ops structure 2017-01-31 20:32:53 +00:00
aat2870-regulator.c regulator: aat2870-regulator: constify regulator_ops structure 2017-01-31 20:35:49 +00:00
ab3100.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
ab8500-ext.c ARM: ux500: move ab8500_regulator_plat_data into driver 2016-07-12 11:23:50 +02:00
ab8500.c regulator: ab8500: Drop AB8540/9540 support 2018-04-16 13:08:59 +01:00
act8865-regulator.c regulator: act8865: Fix missing of_node_put() in act8865_pdata_from_dt() 2016-07-14 17:22:22 +01:00
act8945a-regulator.c regulator: act8945a-regulator: constify regulator_ops structure 2017-01-31 20:36:10 +00:00
ad5398.c regulator: ad5398: constify regulator_ops structure 2017-01-31 20:38:27 +00:00
anatop-regulator.c Merge remote-tracking branches 'regulator/topic/anatop', 'regulator/topic/arizona', 'regulator/topic/bd9571mvw-m' and 'regulator/topic/const' into regulator-next 2017-04-30 22:17:25 +09:00
arizona-ldo1.c regulator: arizona-ldo1: Look up a descriptor and pass to the core 2018-05-17 15:42:53 +09:00
arizona-micsupp.c regulator: arizona-micsupp: Factor out generic initialization 2017-04-25 16:36:31 +01:00
as3711-regulator.c regulator: as3711-regulator: constify regulator_ops structure 2017-01-31 20:43:36 +00:00
as3722-regulator.c regulator: as3722: Constify regulator ops 2016-04-11 15:15:36 +01:00
axp20x-regulator.c regulator: axp20x: add drivevbus support for axp803 2018-04-23 15:46:12 +01:00
bcm590xx-regulator.c regulator: bcm590xx-regulator: constify regulator_ops structure 2017-01-31 20:44:14 +00:00
bd9571mwv-regulator.c regulator: bd9571mwv: Add support for backup mode 2018-04-23 17:53:50 +01:00
core.c regulator: core: Add voltage balancing mechanism 2018-05-17 16:05:50 +09:00
cpcap-regulator.c regulator: Don't return or expect -errno from of_map_mode() 2018-04-20 12:45:36 +01:00
da903x.c regulator: da9*: constify regulator_ops structures 2015-12-22 23:59:57 +00:00
da9052-regulator.c regulator: da9053/52: Fix incorrectly stated minimum and maximum voltage limits 2016-07-20 17:00:34 +01:00
da9055-regulator.c regulator: da9055: Pass descriptor instead of GPIO number 2018-02-16 17:05:45 +00:00
da9062-regulator.c regulator: da9061: BUCK and LDO regulator driver 2017-06-07 19:47:24 +01:00
da9063-regulator.c regulator: da9063: Return an error code on probe failure 2017-08-30 16:05:46 +01:00
da9210-regulator.c regulator: da9210: addition of device tree support 2016-07-15 11:45:26 +01:00
da9210-regulator.h
da9211-regulator.c regulator: da9211: Pass descriptors instead of GPIO numbers 2018-02-16 17:05:52 +00:00
da9211-regulator.h regulator: da9211: update for supporting da9223/4/5 2017-10-31 11:01:14 +00: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 unused functions in dbx500-prcmu.c 2016-09-26 09:40:22 -07:00
dbx500-prcmu.h
devres.c regulator: core: optimize devm_regulator_bulk_get() 2017-02-04 11:37:25 +01:00
dummy.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
dummy.h
fan53555.c regulator: fan53555: fix I2C device ids 2017-08-21 16:57:53 +01:00
fixed-helper.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fixed.c regulator: fixed: Revert support for ACPI interface 2017-01-25 21:05:37 +00:00
gpio-regulator.c regulator: giving regulator controlling gpios a non-empty label when used through the devicetree. 2018-03-20 09:19:32 +08:00
helpers.c regulator: helpers: Add regmap set_pull_down helper 2017-04-06 19:29:37 +01:00
hi655x-regulator.c Merge remote-tracking branches 'regulator/topic/helpers', 'regulator/topic/hi655x', 'regulator/topic/lm363x', 'regulator/topic/ltc3589' and 'regulator/topic/ltc3676' into regulator-next 2017-04-30 22:17:31 +09:00
hi6421-regulator.c regulator: hi6421: Describe consumed platform device 2017-06-07 20:25:49 +01:00
hi6421v530-regulator.c regulator: hi6421v530: Describe consumed platform device 2017-06-14 18:27:20 +01:00
internal.h regulator: core: Parse coupled regulators properties 2018-05-17 16:05:48 +09: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 regulator: add support for SY8106A regulator 2018-05-09 18:25:06 +09:00
lm363x-regulator.c regulator: lm363x: Use generic DT property name for external control pins 2017-03-07 14:59:22 +01:00
lp872x.c regulator: lp872x: Add enable GPIO pin support 2016-02-05 18:57:09 +00:00
lp873x-regulator.c regulator: lp873x: Add support for populating input supply 2016-11-11 15:36:38 +00:00
lp3971.c regulator: lp3971: Silence uninitialized variable warning 2016-04-14 14:46:05 +01:00
lp3972.c regulator: lp3972: Silence uninitialized variable warning 2016-04-14 14:46:19 +01:00
lp8755.c regulator: lp8755: fix spelling mistake "acceess" -> "access" 2017-05-19 17:56:37 +01:00
lp8788-buck.c regulator: lp8788: constify regulator_ops structures 2015-12-23 00:01:23 +00:00
lp8788-ldo.c regulator: lp8788: constify regulator_ops structures 2015-12-23 00:01:23 +00:00
lp87565-regulator.c regulator: lp87565: Enable LP87565_BUCK_CTRL_1_FPWM_MP_0_2 2018-04-17 10:57:21 +01:00
ltc3589.c regulator: ltc3589: constify i2c_device_id 2017-08-21 18:10:42 +01:00
ltc3676.c regulator: ltc3676: Add OF device ID table 2017-02-21 10:30:56 -08:00
Makefile regulator: add support for SY8106A regulator 2018-05-09 18:25:06 +09:00
max1586.c regulator: Convert to using %pOF instead of full_name 2017-07-19 11:56: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: max8660: Constify regulator_ops 2017-03-13 16:46:24 +00:00
max8907-regulator.c regulator: max8907-regulator: constify regulator_ops structure 2017-01-31 20:54:26 +00:00
max8925-regulator.c regulator: max8925-regulator: constify regulator_ops structure 2017-01-31 20:54:41 +00:00
max8952.c regulator: max8952: constify regulator_ops structure 2017-01-31 20:56:09 +00:00
max8973-regulator.c thermal: Enhance thermal_zone_device_update for events 2016-09-27 14:35:21 +08:00
max8997-regulator.c regulator: max8997/8966: fix charger cv voltage set bug 2017-05-14 18:39:31 +09:00
max8998.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
max14577-regulator.c regulator: max14577-regulator: constify regulator_ops structure 2017-01-31 20:48:53 +00:00
max77620-regulator.c regulator: max77620-regulator: constify regulator_ops structure 2017-01-31 20:52:52 +00:00
max77686-regulator.c regulator: max77686: Pass descriptor instead of GPIO number 2018-05-17 15:43:00 +09:00
max77693-regulator.c Merge remote-tracking branches 'regulator/topic/anatop', 'regulator/topic/arizona', 'regulator/topic/bd9571mvw-m' and 'regulator/topic/const' into regulator-next 2017-04-30 22:17:25 +09:00
max77802-regulator.c regulator: max77802-regulator: constify regulator_ops structure 2017-01-31 20:54:06 +00: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: Use REGCACHE_RBTREE 2015-12-18 12:14:27 +00:00
mt6311-regulator.h regulator: mt6311: Add support for mt6311 regulator 2015-07-24 12:30:49 +01:00
mt6323-regulator.c regulator: mt6323: Constify struct regulator_ops 2016-07-19 18:31:59 +01:00
mt6380-regulator.c regulator: mt6380: Add support for MT6380 2017-08-15 12:50:48 +01:00
mt6397-regulator.c regulator: mt6397: Add buck change mode regulator interface for mt6397 2016-05-30 16:29:43 +01:00
of_regulator.c regulator: core: Parse coupled regulators properties 2018-05-17 16:05:48 +09:00
palmas-regulator.c Merge remote-tracking branches 'regulator/topic/settle', 'regulator/topic/tps65910' and 'regulator/topic/tps65917' into regulator-next 2017-07-03 16:52:21 +01:00
pbias-regulator.c regulator: pbias: Select voltage table based on max-voltage 2017-08-31 11:55:40 +01:00
pcap-regulator.c regulator: pcap-regulator: constify regulator_ops structure 2017-01-31 20:57:31 +00:00
pcf50633-regulator.c regulator: pcf50633-regulator: constify regulator_ops structure 2017-01-31 20:58:15 +00:00
pfuze100-regulator.c regulator: pfuze100: update voltage setting for pfuze3000 sw1a 2018-04-18 12:48:58 +01:00
pv88060-regulator.c regulator: pv88060-regulator: constify regulator_ops structure 2017-01-31 20:58:46 +00:00
pv88060-regulator.h regulator: pv88060: new regulator driver 2015-11-20 18:06:15 +00:00
pv88080-regulator.c regulator: pv88080-regulator: constify regulator_ops structure 2017-01-31 20:59:01 +00:00
pv88080-regulator.h regulator: pv88080: Update regulator for PV88080 BB silicon support 2016-09-26 08:59:08 -07:00
pv88090-regulator.c regulator: pv88090: Exception handling for out of bounds 2017-08-30 16:12:17 +01:00
pv88090-regulator.h regulator: pv88090: Exception handling for out of bounds 2017-08-30 16:12:17 +01:00
pwm-regulator.c regulator: pwm-regulator: Remove unneeded gpiod NULL check 2017-07-24 16:26:35 +01:00
qcom_rpm-regulator.c regulator: qcom_rpm-regulator: add NULL check on of_match_device() return value 2017-07-07 13:42:03 +01:00
qcom_smd-regulator.c Merge remote-tracking branch 'regulator/topic/qcom_smd' into regulator-next 2018-03-28 10:33:51 +08:00
qcom_spmi-regulator.c regulator: qcom_spmi: Use regmap helpers for enable/disable/is_enabled callback 2018-01-24 17:31:01 +00:00
rc5t583-regulator.c regulator: rc5t583-regulator: constify regulator_ops structure 2017-01-31 20:59:37 +00:00
rk808-regulator.c regulator: rk808: Add regulator driver for RK805 2017-08-21 08:54:12 +01:00
rn5t618-regulator.c regulator: rn5t618: Do not index regulator_desc arrays by id 2017-10-18 11:23:21 +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 Merge remote-tracking branches 'regulator/topic/anatop', 'regulator/topic/arizona', 'regulator/topic/bd9571mvw-m' and 'regulator/topic/const' into regulator-next 2017-04-30 22:17:25 +09:00
s2mps11.c regulator: s2mps11: Pass descriptor instead of GPIO number 2018-05-17 15:43:27 +09:00
s5m8767.c regulator: Convert to using %pOF instead of full_name 2017-07-19 11:56:01 +01:00
sc2731-regulator.c regulator: sc2731: Fix defines for SC2731_WR_UNLOCK and SC2731_PWR_WR_PROT_VALUE 2018-01-03 12:10:14 +00:00
sky81452-regulator.c regulator: sky81452: Modify Device Tree structure 2014-12-02 12:22:39 +00:00
stm32-vrefbuf.c regulator: stm32-vrefbuf: fix check on ready flag 2018-02-08 15:28:35 +00:00
stw481x-vmmc.c regulator: stw481x-vmmc: fix ages old enable error 2016-11-13 09:22:37 +00:00
sy8106a-regulator.c regulator: add support for SY8106A regulator 2018-05-09 18:25:06 +09:00
ti-abb-regulator.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
tps6105x-regulator.c regulator: tps6105x: Convert to use regmap helper functions 2015-11-18 13:19:47 +00:00
tps6507x-regulator.c regulator: tps6507x: Drop pointless static qualifier for *reg_data variable 2016-10-24 17:49:14 +01:00
tps6524x-regulator.c regulator: tps6524x: Fix broken use of spi_dev_get() 2016-04-20 17:37:59 +01:00
tps6586x-regulator.c regulator: tps6586x: Add support for TPS658624 2018-04-20 11:44:34 +01:00
tps51632-regulator.c regulator: tps51632: Fix setting ramp delay 2016-05-31 16:38: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: tps65023: Fix inverted core enable logic. 2017-04-18 18:55:05 +01:00
tps65086-regulator.c regulator: tps65086: Fix DT node referencing in of_parse_cb 2017-02-13 18:04:28 +00:00
tps65090-regulator.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
tps65132-regulator.c regulator: tps65132: fix platform_no_drv_owner.cocci warnings 2017-04-14 17:59:32 +01:00
tps65217-regulator.c mfd: tps65217: Introduce dependency on CONFIG_OF 2017-10-13 10:42:58 +01:00
tps65218-regulator.c regulator: tps65218: Add NULL test for devm_kzalloc call 2017-11-16 11:59:09 +00:00
tps65910-regulator.c regulator: tps65910: check TPS65910_NUM_REGS at build time 2017-06-13 18:46:48 +01:00
tps65912-regulator.c regulator: tps65912: Add regulator driver for the TPS65912 PMIC 2016-02-11 16:31:06 +00:00
tps80031-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
twl6030-regulator.c mfd: twl: Move header file out of I2C realm 2017-09-04 14:41:02 +01:00
twl-regulator.c regulator: Don't return or expect -errno from of_map_mode() 2018-04-20 12:45:36 +01:00
userspace-consumer.c
vctrl-regulator.c regulator: vctrl: Fix out of bounds array access for vctrl->vtable 2017-04-14 18:01:03 +01:00
vexpress-regulator.c regulator: vexpress: rename vexpress regulator implementation 2016-02-15 21:01:52 +00:00
virtual.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
wm831x-dcdc.c Merge remote-tracking branch 'regulator/topic/wm831x' into regulator-next 2016-01-12 18:26:12 +00:00
wm831x-isink.c regulator: wm8*: constify regulator_ops structures 2015-12-23 00:00:00 +00:00
wm831x-ldo.c Merge remote-tracking branch 'regulator/topic/wm831x' into regulator-next 2016-01-12 18:26:12 +00:00
wm8350-regulator.c regulator: wm8350: fix missing increment of loop index i 2018-04-23 12:26:05 +01:00
wm8400-regulator.c regulator: wm8*: constify regulator_ops structures 2015-12-23 00:00:00 +00:00
wm8994-regulator.c regulator: wm8*: constify regulator_ops structures 2015-12-23 00:00:00 +00:00