linux-yocto/drivers/regulator
Heiko Stuebner 3d546c8b10 regulator: fan53555: add enable_time support and soft-start times
[ Upstream commit 8acfb165a4 ]

The datasheets for all the fan53555 variants (and clones using the same
interface) define so called soft start times, from enabling the regulator
until at least some percentage of the output (i.e. 92% for the rk860x
types) are available.

The regulator framework supports this with the enable_time property
but currently the fan53555 driver does not define enable_times for any
variant.

I ran into a problem with this while testing the new driver for the
Rockchip NPUs (rocket), which does runtime-pm including disabling and
enabling a rk8602 as needed. When reenabling the regulator while running
a load, fatal hangs could be observed while enabling the associated
power-domain, which the regulator supplies.

Experimentally setting the regulator to always-on, made the issue
disappear, leading to the missing delay to let power stabilize.
And as expected, setting the enable-time to a non-zero value
according to the datasheet also resolved the regulator-issue.

The datasheets in nearly all cases only specify "typical" values,
except for the fan53555 type 08. There both a typical and maximum
value are listed - 40uS apart.

For all typical values I've added 100uS to be on the safe side.
Individual details for the relevant regulators below:

- fan53526:
  The datasheet for all variants lists a typical value of 150uS, so
  make that 250uS with safety margin.
- fan53555:
  types 08 and 18 (unsupported) are given a typical enable time of 135uS
  but also a maximum of 175uS so use that value. All the other types only
  have a typical time in the datasheet of 300uS, so give a bit margin by
  setting it to 400uS.
- rk8600 + rk8602:
  Datasheet reports a typical value of 260us, so use 360uS to be safe.
- syr82x + syr83x:
  All datasheets report typical soft-start values of 300uS for these
  regulators, so use 400uS.
- tcs452x:
  Datasheet sadly does not report a soft-start time, so I've not set
  an enable-time

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://patch.msgid.link/20250606190418.478633-1-heiko@sntech.de
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-07-10 16:05:07 +02:00
..
88pg86x.c
88pm800-regulator.c
88pm886-regulator.c regulator: Add regulators driver for Marvell 88PM886 PMIC 2024-06-28 15:41:11 +01:00
88pm8607.c
aat2870-regulator.c
ab8500-ext.c
ab8500.c
act8865-regulator.c regulator: Use of_property_read_bool() 2024-08-01 12:50:11 +01:00
act8945a-regulator.c regulator: Explicitly include correct DT includes 2023-07-14 20:52:54 +01:00
ad5398.c regulator: ad5398: Add device tree support 2025-05-29 11:03:06 +02:00
anatop-regulator.c
arizona-ldo1.c regulator: arizona-ldo1: Convert to platform remove callback returning void 2023-12-11 12:54:25 +00:00
arizona-micsupp.c
as3711-regulator.c
as3722-regulator.c
atc260x-regulator.c regulator: Use bitfield values for range selectors 2023-07-25 12:14:27 +01:00
aw37503-regulator.c regulator: aw37503: Switch back to use struct i2c_driver's .probe() 2023-08-24 21:43:28 +01:00
axp20x-regulator.c regulator: axp20x: AXP717: set ramp_delay 2024-12-19 18:13:14 +01:00
bcm590xx-regulator.c
bd718x7-regulator.c regulator: bd718x7: Use scoped device node handling to simplify error paths 2024-08-14 18:21:42 +01:00
bd9571mwv-regulator.c regulator: bd9571mwv: Convert to platform remove callback returning void 2023-12-11 12:54:26 +00:00
bd9576-regulator.c regulator: bd9576: Constify struct linear_range 2024-08-06 15:24:01 +01:00
bd71815-regulator.c regulator: bd71815: fix ramp values 2024-06-12 16:19:49 +01:00
bd71828-regulator.c regulator: bd71828: Don't overwrite runtime voltages 2024-05-16 13:36:41 +01:00
bd96801-regulator.c regulator: bd96801: Use scoped device node handling to simplify error paths 2024-08-14 18:21:43 +01:00
core.c regulator: check that dummy regulator has been probed before using it 2025-03-28 22:03:29 +01:00
cpcap-regulator.c regulator: Explicitly include correct DT includes 2023-07-14 20:52:54 +01:00
cros-ec-regulator.c
da903x-regulator.c regulator: Fix typos in the comment 2024-09-10 12:40:38 +01:00
da9052-regulator.c regulator: da9052: Constify static data 2024-09-10 12:44:03 +01:00
da9055-regulator.c regulator: da9055: Constify static data 2024-09-10 12:44:04 +01:00
da9062-regulator.c regulator: da9062: Annotate struct da9062_regulators with __counted_by 2023-10-09 13:14:23 +01:00
da9063-regulator.c regulator: Few constifications of static data 2024-09-11 11:20:37 +01:00
da9121-regulator.c regulator: da9121: Constify static data 2024-09-10 12:44:06 +01:00
da9121-regulator.h
da9210-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
da9210-regulator.h
da9211-regulator.c regulator: da9211: Constify struct regulator_desc 2024-09-09 18:27:02 +01:00
da9211-regulator.h
db8500-prcmu.c regulator: db8500-prcmu: Convert to platform remove callback returning void 2023-12-11 12:54:27 +00:00
dbx500-prcmu.c
dbx500-prcmu.h
devres.c regulator: Unify "negative error number" terminology in comments 2024-08-29 14:20:30 +01:00
dummy.c regulator: dummy: force synchronous probing 2025-03-28 22:03:29 +01:00
dummy.h
event.c regulator: event: Ensure atomicity for sequence number 2024-01-04 20:02:06 +00:00
fan53555.c regulator: fan53555: add enable_time support and soft-start times 2025-07-10 16:05:07 +02:00
fan53880.c
fixed-helper.c regulator: fixed-helper: Add missing "Return" kerneldoc section 2024-08-29 14:20:28 +01:00
fixed.c regulator: Unify "negative error number" terminology in comments 2024-08-29 14:20:30 +01:00
gpio-regulator.c regulator: gpio: Fix the out-of-bounds access to drvdata::gpiods 2025-07-10 16:04:43 +02:00
helpers.c regulator: update some comments ([gs]et_voltage_vsel vs [gs]et_voltage_sel) 2024-09-13 14:57:08 +01:00
hi655x-regulator.c
hi6421-regulator.c regulator: hi6421: Constify static data 2024-09-10 12:44:07 +01:00
hi6421v530-regulator.c regulator: hi6421v530: Use container_of and constify static data 2024-09-10 12:44:17 +01:00
hi6421v600-regulator.c regulator: hi6421v600: Constify static data 2024-09-10 12:44:08 +01:00
internal.h regulator: Split up _regulator_get() 2024-09-13 17:39:48 +01:00
irq_helpers.c regulator: Unify "negative error number" terminology in comments 2024-08-29 14:20:30 +01:00
isl6271a-regulator.c
isl9305.c regulator: isl9305: convert to use maple tree register cache 2024-03-25 00:48:18 +00:00
Kconfig regulator: sm5703: Remove because it is unused and fails to build 2024-09-13 19:08:14 +01:00
lm363x-regulator.c
lochnagar-regulator.c regulator: Use device_get_match_data() 2023-10-17 21:38:48 +01:00
lp872x.c regulator: lp872x: Fix Wvoid-pointer-to-enum-cast warning 2023-08-10 15:44:46 +01:00
lp873x-regulator.c regulator: lp873x: Use bitfield helpers 2024-02-15 13:41:11 +00:00
lp3971.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
lp3972.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
lp8755.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
lp8788-buck.c regulator: lp8788-buck: fix copy and paste bug in lp8788_dvs_gpio_request() 2024-03-06 14:03:32 +00:00
lp8788-ldo.c
lp87565-regulator.c regulator: lp87565: Use bitfield helpers 2024-02-15 13:41:10 +00:00
ltc3589.c regulator: ltc3589: Convert enum->pointer for data in the match tables 2023-09-11 01:31:25 +01:00
ltc3676.c
Makefile regulator: sm5703: Remove because it is unused and fails to build 2024-09-13 19:08:14 +01:00
max1586.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
max5970-regulator.c regulator: Fix typos in the comment 2024-09-10 12:40:38 +01:00
max8649.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
max8660.c
max8893.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
max8907-regulator.c
max8925-regulator.c
max8952.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
max8973-regulator.c regulator: max8973: Use irq_get_trigger_type() helper 2024-09-13 14:57:07 +01:00
max8997-regulator.c regulator: max8997: Use scoped device node handling to simplify error paths 2024-08-14 18:21:44 +01:00
max8998.c regulator: max8998: Convert to GPIO descriptors 2024-02-26 13:46:37 +00:00
max14577-regulator.c regulator: max14577: Add error check for max14577_read_reg() 2025-06-27 11:11:24 +01:00
max20086-regulator.c regulator: max20086: Change enable gpio to optional 2025-06-27 11:11:14 +01:00
max20411-regulator.c regulator: add missing MODULE_DESCRIPTION() macro 2024-06-10 15:39:29 +01:00
max77503-regulator.c regulator: max77503: remove unused struct 'max77503_dev' 2024-05-29 11:24:22 +01:00
max77541-regulator.c regulator: Use bitfield values for range selectors 2023-07-25 12:14:27 +01:00
max77620-regulator.c
max77650-regulator.c regulator: max77650: Use container_of and constify static data 2024-09-10 12:44:18 +01:00
max77686-regulator.c
max77693-regulator.c
max77802-regulator.c regulator: Unify "negative error number" terminology in comments 2024-08-29 14:20:30 +01:00
max77826-regulator.c regulator: max77826: Constify static data 2024-09-10 12:44:11 +01:00
max77857-regulator.c regulator: max77857: Make max77857_id static 2024-08-01 12:50:10 +01:00
mc13xxx-regulator-core.c
mc13xxx.h regulator: mc13xxx: Annotate struct mc13xxx_regulator_priv with __counted_by 2023-09-22 19:01:38 +01:00
mc13783-regulator.c
mc13892-regulator.c
mcp16502.c regulator: mcp16502: Add supplier for regulators 2024-08-13 12:41:44 +01:00
mp886x.c regulator: mp886x: Make similar OF and ID table 2023-09-11 01:31:26 +01:00
mp5416.c regulator: mp5416: Constify struct regulator_desc 2024-09-09 18:27:01 +01:00
mp8859.c regulator: mp8859: Implement set_current_limit() 2024-02-26 13:46:55 +00:00
mpq7920.c regulator: mpq7920: Remove redundant of_match_ptr() macro 2023-08-09 12:52:44 +01:00
mpq7920.h
mt6311-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
mt6311-regulator.h
mt6315-regulator.c regulator: Explicitly include correct DT includes 2023-07-14 20:52:54 +01:00
mt6323-regulator.c
mt6331-regulator.c
mt6332-regulator.c
mt6357-regulator.c regulator: update some comments ([gs]et_voltage_vsel vs [gs]et_voltage_sel) 2024-09-13 14:57:08 +01:00
mt6358-regulator.c regulator: Merge up pending fix 2023-10-30 13:14:27 +00:00
mt6359-regulator.c regulator: Remove duplicated include in mt6359-regulator.c 2023-07-18 15:11:31 +01:00
mt6360-regulator.c regulator: mt6360: De-capitalize devicetree regulator subnodes 2024-04-09 16:22:59 +01:00
mt6370-regulator.c
mt6380-regulator.c
mt6397-regulator.c
mtk-dvfsrc-regulator.c regulator: mtk-dvfsrc: Constify static data 2024-09-10 12:44:12 +01:00
of_regulator.c regulator: of: Implement the unwind path of of_regulator_match() 2025-02-08 09:57:10 +01:00
palmas-regulator.c regulator: palmas: remove redundant initialization of pointer pdata 2023-11-13 01:26:31 +00:00
pbias-regulator.c regulator: Explicitly include correct DT includes 2023-07-14 20:52:54 +01:00
pca9450-regulator.c regulator: pca9450: Fix enable register for LDO5 2025-04-10 14:39:12 +02:00
pcap-regulator.c regulator: pcap: Constify static data 2024-09-10 12:44:13 +01:00
pcf50633-regulator.c
pf8x00-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
pfuze100-regulator.c regulator: pfuze100: Constify static data 2024-09-10 12:44:14 +01:00
pv88060-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
pv88060-regulator.h
pv88080-regulator.c regulator: pv880x0: Simplify probe() 2023-09-11 01:30:10 +01:00
pv88080-regulator.h
pv88090-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
pv88090-regulator.h
pwm-regulator.c regulator: pwm-regulator: Use dev_err_probe() for error paths in .probe() 2024-02-19 16:59:34 +00:00
qcom_rpm-regulator.c regulator: Use device_get_match_data() 2023-10-17 21:38:48 +01:00
qcom_smd-regulator.c regulator: qcom-smd: make smd_vreg_rpm static 2024-12-05 14:01:24 +01:00
qcom_spmi-regulator.c regulator: Fix typos in the comment 2024-09-10 12:40:38 +01:00
qcom_usb_vbus-regulator.c regulator: Explicitly include correct DT includes 2023-07-14 20:52:54 +01:00
qcom-labibb-regulator.c regulator: Use device_get_match_data() 2023-10-17 21:38:48 +01:00
qcom-pm8008-regulator.c regulator: add pm8008 pmic regulator driver 2024-06-13 18:42:21 +01:00
qcom-refgen-regulator.c regulator: qcom-refgen: Constify static data 2024-09-10 12:44:15 +01:00
qcom-rpmh-regulator.c regulator: qcom-rpmh: Update ranges for FTSMPS525 2024-12-14 20:04:07 +01:00
raa215300.c regulator: raa215300: Add missing blank space 2023-08-18 16:21:44 +01:00
rc5t583-regulator.c regulator: rc5t583: Drop useless header 2023-08-08 15:23:12 +01:00
regnl.h regulator: event: Add regulator netlink event support 2023-12-06 13:14:54 +00:00
renesas-usb-vbus-regulator.c regulator: Add Renesas RZ/G2L USB VBUS regulator driver 2024-06-26 18:17:06 +01:00
rk808-regulator.c objtool, regulator: rk808: Remove potential undefined behavior in rk806_set_mode_dcdc() 2025-05-02 07:59:20 +02:00
rn5t618-regulator.c
rohm-regulator.c regulator: rohm-regulator: warn if unsupported voltage is set 2024-05-16 13:36:42 +01:00
rpi-panel-attiny-regulator.c regulator: rpi-panel-attiny: convert to use maple tree register cache 2024-03-25 00:48:27 +00:00
rt4801-regulator.c
rt4803.c
rt4831-regulator.c regulator: add missing MODULE_DESCRIPTION() macro 2024-06-10 15:39:29 +01:00
rt5033-regulator.c
rt5120-regulator.c regulator: rt5120: Convert comma to semicolon 2024-07-29 01:19:05 +01:00
rt5190a-regulator.c
rt5739.c
rt5759-regulator.c regulator: Explicitly include correct DT includes 2023-07-14 20:52:54 +01:00
rt6160-regulator.c
rt6190-regulator.c
rt6245-regulator.c
rtmv20-regulator.c regulator: rtmv20: convert to use maple tree register cache 2024-03-25 00:48:23 +00:00
rtq2134-regulator.c
rtq2208-regulator.c regulator: rtq2208: Fix uninitialized use of regulator_config 2024-10-25 14:10:19 +01:00
rtq6752-regulator.c regulator: rtq6752: convert to use maple tree register cache 2024-03-25 00:48:24 +00:00
s2mpa01.c regulator: s2mpa01: Drop useless header 2023-08-08 15:23:11 +01:00
s2mps11.c regulator: s2mps11: use scoped memory allocation to simplify probe 2024-08-22 17:52:31 +01:00
s5m8767.c regulator: s5m8767: Use scoped device node handling to simplify error paths 2024-08-14 18:21:45 +01:00
sc2731-regulator.c
scmi-regulator.c regulator: scmi: Simplify with scoped for each OF child loop 2024-08-14 18:21:48 +01:00
sky81452-regulator.c
slg51000-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
slg51000-regulator.h
stm32-booster.c regulator: Use device_get_match_data() 2023-10-17 21:38:48 +01:00
stm32-pwr.c regulator: stm32-pwr: add support of STM32MP13 2024-05-27 01:32:22 +01:00
stm32-vrefbuf.c regulator: stm32-vrefbuf: Convert to platform remove callback returning void 2023-12-11 12:54:28 +00:00
stpmic1_regulator.c regulator: stpmic1: Fix kernel-doc notation warnings 2023-11-13 01:26:32 +00:00
stw481x-vmmc.c
sun20i-regulator.c regulator: sun20i: Add Allwinner D1 LDOs driver 2024-05-09 17:44:01 +02:00
sy7636a-regulator.c
sy8106a-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
sy8824x.c regulator: sy8824x: Make similar OF and ID table 2023-09-11 01:31:24 +01:00
sy8827n.c regulator: Explicitly include correct DT includes 2023-07-14 20:52:54 +01:00
ti-abb-regulator.c regulator: ti-abb: don't use devm_platform_ioremap_resource_byname for shared interrupt register 2024-01-23 15:05:13 +00:00
tps6105x-regulator.c
tps6286x-regulator.c regulator: add missing MODULE_DESCRIPTION() macro 2024-06-10 15:39:29 +01:00
tps6287x-regulator.c regulator: tps6287x: Constify struct regulator_desc 2024-09-09 21:08:43 +01:00
tps6507x-regulator.c
tps6524x-regulator.c
tps6586x-regulator.c
tps6594-regulator.c regulator: tps6594-regulator: Fix the number of irqs for TPS65224 and TPS6594 2024-06-04 13:22:18 +01:00
tps51632-regulator.c regulator: tps51632: convert to use maple tree register cache 2024-03-25 00:48:25 +00:00
tps62360-regulator.c regulator: tps62360: convert to use maple tree register cache 2024-03-25 00:48:26 +00:00
tps65023-regulator.c regulator: tps65023: Constify static data 2024-09-10 12:44:09 +01:00
tps65086-regulator.c regulator: tps65086: Select dedicated regulator config for chip variant 2023-08-18 22:06:52 +01:00
tps65090-regulator.c
tps65132-regulator.c regulator: tps65132: Add of_match table 2024-03-25 19:28:27 +00:00
tps65217-regulator.c
tps65218-regulator.c regulator: Explicitly include correct DT includes 2023-07-14 20:52:54 +01:00
tps65219-regulator.c regulator: Explicitly include correct DT includes 2023-07-14 20:52:54 +01:00
tps65910-regulator.c regulator: tps65910: Drop useless header 2023-08-08 15:23:10 +01:00
tps65912-regulator.c
tps68470-regulator.c
twl-regulator.c regulator: Explicitly include correct DT includes 2023-07-14 20:52:54 +01:00
twl6030-regulator.c regulator: Explicitly include correct DT includes 2023-07-14 20:52:54 +01:00
uniphier-regulator.c regulator: uniphier: Convert to platform remove callback returning void 2023-12-11 12:54:29 +00:00
userspace-consumer.c regulator: userspace-consumer: quiet device deferral 2024-06-24 13:39:19 +01:00
vctrl-regulator.c regulator: Explicitly include correct DT includes 2023-07-14 20:52:54 +01:00
vexpress-regulator.c regulator: Explicitly include correct DT includes 2023-07-14 20:52:54 +01:00
virtual.c regulator: virtual: Convert to platform remove callback returning void 2023-12-11 12:54:31 +00:00
vqmmc-ipq4019-regulator.c regulator: vqmmc-ipq4019: fix module autoloading 2024-04-10 18:48:59 +01:00
wm831x-dcdc.c
wm831x-isink.c regulator: wm831x-isink: Convert comma to semicolon 2024-07-29 01:19:04 +01:00
wm831x-ldo.c
wm8350-regulator.c regulator: wm8350: Convert to platform remove callback returning void 2023-12-11 12:54:32 +00:00
wm8400-regulator.c regulator: wm8400: Constify struct regulator_desc 2024-09-09 21:08:42 +01:00
wm8994-regulator.c