mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-23 08:35:19 -05:00
regulator: Implement uv_survival_time for handling under-voltage events
Add 'uv_survival_time' field to regulation_constraints for specifying survival time post critical under-voltage event. Update the regulator notifier call chain and Device Tree property parsing to use this new field, allowing a configurable timeout before emergency shutdown. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.kernel.org/r/20231026144824.4065145-6-o.rempel@pengutronix.de Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
759e2bd969
commit
1e22152aa5
3 changed files with 16 additions and 1 deletions
|
@ -5094,7 +5094,7 @@ static void regulator_handle_critical(struct regulator_dev *rdev,
|
|||
return;
|
||||
|
||||
hw_protection_shutdown(reason,
|
||||
REGULATOR_DEF_UV_LESS_CRITICAL_WINDOW_MS);
|
||||
rdev->constraints->uv_less_critical_window_ms);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -175,6 +175,13 @@ static int of_get_regulation_constraints(struct device *dev,
|
|||
if (!ret)
|
||||
constraints->enable_time = pval;
|
||||
|
||||
ret = of_property_read_u32(np, "regulator-uv-survival-time-ms", &pval);
|
||||
if (!ret)
|
||||
constraints->uv_less_critical_window_ms = pval;
|
||||
else
|
||||
constraints->uv_less_critical_window_ms =
|
||||
REGULATOR_DEF_UV_LESS_CRITICAL_WINDOW_MS;
|
||||
|
||||
constraints->soft_start = of_property_read_bool(np,
|
||||
"regulator-soft-start");
|
||||
ret = of_property_read_u32(np, "regulator-active-discharge", &pval);
|
||||
|
|
|
@ -162,6 +162,13 @@ struct notification_limit {
|
|||
* regulator_active_discharge values are used for
|
||||
* initialisation.
|
||||
* @enable_time: Turn-on time of the rails (unit: microseconds)
|
||||
* @uv_less_critical_window_ms: Specifies the time window (in milliseconds)
|
||||
* following a critical under-voltage (UV) event
|
||||
* during which less critical actions can be
|
||||
* safely carried out by the system (for example
|
||||
* logging). After this time window more critical
|
||||
* actions should be done (for example prevent
|
||||
* HW damage).
|
||||
*/
|
||||
struct regulation_constraints {
|
||||
|
||||
|
@ -213,6 +220,7 @@ struct regulation_constraints {
|
|||
unsigned int settling_time_up;
|
||||
unsigned int settling_time_down;
|
||||
unsigned int enable_time;
|
||||
unsigned int uv_less_critical_window_ms;
|
||||
|
||||
unsigned int active_discharge;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue