Commit 52473b07 authored by Marek Czerski's avatar Marek Czerski Committed by Sebastian Reichel

power: reset: ltc2952: make trigger delay configurable

Make trigger delay configurable through device tree with
trigger-delay-ms property.

Trigger delay is the time to wait before starting shutdown
sequence after trigger line assertion.
Trigger delay must take into account the OFFT time configured
with the capacitor connected to OFFT pin of the LTC2952 chip.
Basically, the higher the capacitance connected to OFFT pin,
the larger trigger delay must be.
Signed-off-by: default avatarMarek Czerski <ma.czerski@gmail.com>
Acked-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
parent 816aacd5
......@@ -17,6 +17,9 @@ Optional properties:
chip's trigger line. If this property is not set, the
trigger function is ignored and the chip is kept alive
until an explicit kill signal is received
- trigger-delay-ms The number of milliseconds to wait after trigger line
assertion before executing shut down procedure.
The default is 2500ms.
Example:
......@@ -24,6 +27,7 @@ ltc2952 {
compatible = "lltc,ltc2952";
trigger-gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
trigger-delay-ms = <2000>;
watchdog-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
kill-gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
};
......@@ -55,6 +55,7 @@
#include <linux/mod_devicetable.h>
#include <linux/gpio/consumer.h>
#include <linux/reboot.h>
#include <linux/property.h>
struct ltc2952_poweroff {
struct hrtimer timer_trigger;
......@@ -172,10 +173,17 @@ static void ltc2952_poweroff_default(struct ltc2952_poweroff *data)
static int ltc2952_poweroff_init(struct platform_device *pdev)
{
int ret;
u32 trigger_delay_ms;
struct ltc2952_poweroff *data = platform_get_drvdata(pdev);
ltc2952_poweroff_default(data);
if (!device_property_read_u32(&pdev->dev, "trigger-delay-ms",
&trigger_delay_ms)) {
data->trigger_delay = ktime_set(trigger_delay_ms / MSEC_PER_SEC,
(trigger_delay_ms % MSEC_PER_SEC) * NSEC_PER_MSEC);
}
data->gpio_watchdog = devm_gpiod_get(&pdev->dev, "watchdog",
GPIOD_OUT_LOW);
if (IS_ERR(data->gpio_watchdog)) {
......
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