linux/drivers/regulator
Javier Martinez Canillas 3827b64dba regulator: core: Resolve supplies before disabling unused regulators
After commit 66d228a2bf ("regulator: core: Don't use regulators as
supplies until the parent is bound"), input supplies aren't resolved
if the input supplies parent device has not been bound. This prevent
regulators to hold an invalid reference if its supply parent device
driver probe is deferred.

But this causes issues on some boards where a PMIC's regulator use as
input supply a regulator from another PMIC whose driver is registered
after the driver for the former.

In this case the regulators for the first PMIC will fail to resolve
input supplies on regulators registration (since the other PMIC wasn't
probed yet). And when the core attempts to resolve again latter when
the other PMIC registers its own regulators, it will fail again since
the parent device isn't bound yet.

This will cause some parent supplies to never be resolved and wrongly
be disabled on boot due taking them as unused.

To solve this problem, also attempt to resolve the pending regulators
input supplies before disabling the unused regulators.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
2017-02-16 18:15:01 +00: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 ARM: ux500: move ab8500_regulator_plat_data into driver 2016-07-12 11:23:50 +02:00
ab8500.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02: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: add regulator driver for ACT8945A 2016-02-05 18:18:47 +00:00
ad5398.c regulator: ad5398: Fix return value of ad5398_write_reg 2016-02-20 01:02:34 +09:00
anatop-regulator.c regulator: anatop: allow regulator to be in bypass mode 2016-06-17 11:40:20 +01:00
arizona-ldo1.c regulator: arizona-ldo1: Set appropriate value for ramp_delay 2016-10-24 17:43:05 +01: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: as3722: Constify regulator ops 2016-04-11 15:15:36 +01:00
axp20x-regulator.c regulator: axp20x: Fix axp809 ldo_io registration error on cold boot 2016-11-11 15:34:45 +00:00
bcm590xx-regulator.c regulator: bcm590xx: Remove unneeded semicolon 2015-09-14 19:48:34 +01:00
core.c regulator: core: Resolve supplies before disabling unused regulators 2017-02-16 18:15:01 +00: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: da9*: constify regulator_ops structures 2015-12-22 23:59:57 +00:00
da9062-regulator.c regulator: da9*: constify regulator_ops structures 2015-12-22 23:59:57 +00:00
da9063-regulator.c regulator: da9063: Correct module alias prefix to fix module autoloading 2016-05-10 20:00:49 +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: add descriptions for da9212/da9214 2016-06-29 17:24:55 +01:00
da9211-regulator.h regulator: da9211: add descriptions for da9212/da9214 2016-06-29 17:24:55 +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 unused functions in dbx500-prcmu.c 2016-09-26 09:40:22 -07:00
dbx500-prcmu.h
devres.c regulator: Remove support for optional supplies in the bulk API 2016-08-16 20:00:44 +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: Add support for FAN53555UC13X type 2016-04-20 10:57:26 +01:00
fixed-helper.c
fixed.c regulator: fixed: add support for ACPI interface 2016-06-01 16:19:02 +01:00
gpio-regulator.c regulator: gpio: properly check return value of of_get_named_gpio 2016-11-11 15:38:08 +00:00
helpers.c regulators: helpers: Fix handling of bypass_val_on in get_bypass_regmap 2016-11-10 17:28:32 +00:00
hi655x-regulator.c regulator: hi655x: enable regulator for hi655x PMIC 2016-02-15 19:54:55 +00:00
hi6421-regulator.c regulator: hi6421: mark hi6421_regulator_ldo_get_optimum_mode() static 2016-09-01 20:54:29 +01: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 - Core Frameworks 2016-10-07 08:35:35 -07:00
lm363x-regulator.c regulator: lm363x: Staticise ldo_cont_enable_time 2015-11-30 11:32:52 +00: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: Convert to devm_request_threaded_irq 2015-06-02 15:35:17 +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
ltc3589.c regulator: ltc3589: Make IRQ optional 2016-02-12 22:35:00 +00:00
ltc3676.c regulator: Add LTC3676 support 2016-08-16 12:28:00 +01:00
Makefile regulator: twl: split twl6030 logic into its own file 2016-11-16 18:04:03 +00: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 thermal: Enhance thermal_zone_device_update for events 2016-09-27 14:35:21 +08:00
max8997-regulator.c regulator: max8997/max77802: Fix misspelled Samsung address 2016-04-05 11:37:49 -07:00
max8998.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
max14577-regulator.c regulator: Change Krzysztof Kozlowski's email to kernel.org 2016-08-17 13:41:14 +01:00
max77620-regulator.c regulator: max77620: add support to configure MPOK 2016-11-23 16:27:24 +00:00
max77686-regulator.c regulator: max77686: Configure enable time to properly handle regulator enable 2016-04-29 12:31:39 +01:00
max77693-regulator.c regulator: Change Krzysztof Kozlowski's email to kernel.org 2016-08-17 13:41:14 +01:00
max77802-regulator.c regulator: max8997/max77802: Fix misspelled Samsung address 2016-04-05 11:37:49 -07: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 regulator: mc13xxx: Remove unused field "hi_bit" 2014-06-09 20:50:35 +01:00
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
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: of: setup initial suspend state 2016-06-22 16:15:34 +01:00
palmas-regulator.c regulator: tps65917/palmas: Simplify multiple dereference of match->of_node 2016-05-06 18:15:18 +01:00
pbias-regulator.c Merge remote-tracking branches 'regulator/fix/anatop', 'regulator/fix/gpio', 'regulator/fix/pbias', 'regulator/fix/tpx65218' and 'regulator/fix/vexpress' into regulator-linus 2015-09-21 14:16:09 -07: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 regulator: pfuze100-regulator: Adjust MODULE_DESCRIPTION() 2016-06-06 19:13:48 +01:00
pv88060-regulator.c regulator: pv880x0: Clean up unnecessary header inclusion 2016-05-30 16:29:39 +01:00
pv88060-regulator.h regulator: pv88060: new regulator driver 2015-11-20 18:06:15 +00:00
pv88080-regulator.c regulator: pv88080: Update regulator for PV88080 BB silicon support 2016-09-26 08:59:08 -07: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: pv880x0: Clean up unnecessary header inclusion 2016-05-30 16:29:39 +01:00
pv88090-regulator.h regulator: pv88090: new regulator driver 2015-12-08 18:21:06 +00:00
pwm-regulator.c regulator: core: Add set_voltage_time op 2016-09-16 18:38:22 +01:00
qcom_rpm-regulator.c regulator: qcom_rpm-regulator: Add support for pm8018 rpm regulator 2016-08-31 09:33:54 +01:00
qcom_smd-regulator.c regulator: qcom_smd: Fix voltage ranges for pma8084 ftsmps and pldo 2016-08-05 12:51:51 +01:00
qcom_spmi-regulator.c regulator: qcom_spmi: Add support for get_mode/set_mode on switches 2016-06-26 12:24:07 +01:00
rc5t583-regulator.c regulator: drop owner assignment from platform_drivers 2014-10-20 16:21:29 +02:00
rk808-regulator.c - Core Frameworks 2016-10-07 08:35:35 -07:00
rn5t618-regulator.c regulator: rn5t618: Add RN5T567 PMIC support 2016-06-29 10:11:29 +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 the voltage linear range for s2mps15 2016-07-12 09:24:05 +01:00
s5m8767.c regulator: s5m8767: fix get_register() error handling 2016-02-16 17:08:59 +00:00
sky81452-regulator.c regulator: sky81452: Modify Device Tree structure 2014-12-02 12:22:39 +00:00
stw481x-vmmc.c regulator: stw481x-vmmc: fix ages old enable error 2016-11-13 09:22:37 +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: 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: silence pointer-to-int-cast 2015-07-23 15:58:33 +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: add device tree support 2015-09-21 10:13:17 -07:00
tps65086-regulator.c regulator: tps65086: Fix 25mV ranges for BUCK regulators 1, 2, and 6 2016-12-05 17:21:22 +00:00
tps65090-regulator.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
tps65217-regulator.c regulator: tps65217: Enable suspend configuration 2016-06-27 17:56:43 +01:00
tps65218-regulator.c regulator: tps65218: do not disable DCDC3 during poweroff on broken PMICs 2016-08-10 18:21:55 +01:00
tps65910-regulator.c regulator: tps65910: Work around silicon erratum SWCZ010 2016-09-24 19:04:36 +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
twl-regulator.c regulator: twl: Remove unused fields from struct twlreg_info 2016-11-23 15:46:43 +00:00
twl6030-regulator.c regulator: twl6030: Remove unused fields from struct twlreg_info 2016-11-23 15:47:02 +00:00
userspace-consumer.c
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: wm8*: constify regulator_ops structures 2015-12-23 00:00:00 +00: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