Commit 1e22152a authored by Oleksij Rempel's avatar Oleksij Rempel Committed by Mark Brown

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: default avatarOleksij Rempel <o.rempel@pengutronix.de>
Link: https://lore.kernel.org/r/20231026144824.4065145-6-o.rempel@pengutronix.deSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 759e2bd9
...@@ -5094,7 +5094,7 @@ static void regulator_handle_critical(struct regulator_dev *rdev, ...@@ -5094,7 +5094,7 @@ static void regulator_handle_critical(struct regulator_dev *rdev,
return; return;
hw_protection_shutdown(reason, 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, ...@@ -175,6 +175,13 @@ static int of_get_regulation_constraints(struct device *dev,
if (!ret) if (!ret)
constraints->enable_time = pval; 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, constraints->soft_start = of_property_read_bool(np,
"regulator-soft-start"); "regulator-soft-start");
ret = of_property_read_u32(np, "regulator-active-discharge", &pval); ret = of_property_read_u32(np, "regulator-active-discharge", &pval);
......
...@@ -162,6 +162,13 @@ struct notification_limit { ...@@ -162,6 +162,13 @@ struct notification_limit {
* regulator_active_discharge values are used for * regulator_active_discharge values are used for
* initialisation. * initialisation.
* @enable_time: Turn-on time of the rails (unit: microseconds) * @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 { struct regulation_constraints {
...@@ -213,6 +220,7 @@ struct regulation_constraints { ...@@ -213,6 +220,7 @@ struct regulation_constraints {
unsigned int settling_time_up; unsigned int settling_time_up;
unsigned int settling_time_down; unsigned int settling_time_down;
unsigned int enable_time; unsigned int enable_time;
unsigned int uv_less_critical_window_ms;
unsigned int active_discharge; unsigned int active_discharge;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment