diff mbox series

power: reset: ltc2952: make trigger delay configurable

Message ID 20201207222829.13676-1-ma.czerski@gmail.com
State Superseded
Headers show
Series power: reset: ltc2952: make trigger delay configurable | expand

Commit Message

Marek Czerski Dec. 7, 2020, 10:28 p.m. UTC
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: Marek Czerski <ma.czerski@gmail.com>
---
 .../devicetree/bindings/power/reset/ltc2952-poweroff.txt  | 4 ++++
 drivers/power/reset/ltc2952-poweroff.c                    | 8 ++++++++
 2 files changed, 12 insertions(+)

Comments

Sebastian Reichel Jan. 16, 2021, 3:04 p.m. UTC | #1
Hi,

On Mon, Dec 07, 2020 at 11:28:29PM +0100, Marek Czerski wrote:
> 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: Marek Czerski <ma.czerski@gmail.com>

> ---

>  .../devicetree/bindings/power/reset/ltc2952-poweroff.txt  | 4 ++++

>  drivers/power/reset/ltc2952-poweroff.c                    | 8 ++++++++

>  2 files changed, 12 insertions(+)

> 

> diff --git a/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt b/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt

> index cd2d7f58a..881f15a78 100644

> --- a/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt

> +++ b/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt


Please additionally Cc DT binding maintainer:

OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
M:	Rob Herring <robh+dt@kernel.org>
L:	devicetree@vger.kernel.org

> @@ -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>;


please use tab instead of spaces

>  	watchdog-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;

>  	kill-gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;

>  };

> diff --git a/drivers/power/reset/ltc2952-poweroff.c b/drivers/power/reset/ltc2952-poweroff.c

> index 318927938..243811541 100644

> --- a/drivers/power/reset/ltc2952-poweroff.c

> +++ b/drivers/power/reset/ltc2952-poweroff.c

> @@ -55,6 +55,7 @@

>  #include <linux/mod_devicetable.h>

>  #include <linux/gpio/consumer.h>

>  #include <linux/reboot.h>

> +#include <linux/of.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 (!of_property_read_u32(pdev->dev.of_node, "trigger-delay-ms",

> +				  &trigger_delay_ms)) {


please use device_property_read_u32() from <linux/property.h>.

> +		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)) {


Thanks and sorry for delayed response,

-- Sebastian
Marek Czerski Feb. 3, 2021, 6:55 a.m. UTC | #2
Hi Sebastian,

Thanks for the review. I will send fixed patch as v2 to the correct
list of recipients afer I test it on my hardware this week.

Best regards,
Marek Czerski.

sob., 16 sty 2021 o 16:04 Sebastian Reichel <sre@kernel.org> napisał(a):
>

> Hi,

>

> On Mon, Dec 07, 2020 at 11:28:29PM +0100, Marek Czerski wrote:

> > 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: Marek Czerski <ma.czerski@gmail.com>

> > ---

> >  .../devicetree/bindings/power/reset/ltc2952-poweroff.txt  | 4 ++++

> >  drivers/power/reset/ltc2952-poweroff.c                    | 8 ++++++++

> >  2 files changed, 12 insertions(+)

> >

> > diff --git a/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt b/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt

> > index cd2d7f58a..881f15a78 100644

> > --- a/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt

> > +++ b/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt

>

> Please additionally Cc DT binding maintainer:

>

> OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS

> M:      Rob Herring <robh+dt@kernel.org>

> L:      devicetree@vger.kernel.org

>

> > @@ -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>;

>

> please use tab instead of spaces

>

> >       watchdog-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;

> >       kill-gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;

> >  };

> > diff --git a/drivers/power/reset/ltc2952-poweroff.c b/drivers/power/reset/ltc2952-poweroff.c

> > index 318927938..243811541 100644

> > --- a/drivers/power/reset/ltc2952-poweroff.c

> > +++ b/drivers/power/reset/ltc2952-poweroff.c

> > @@ -55,6 +55,7 @@

> >  #include <linux/mod_devicetable.h>

> >  #include <linux/gpio/consumer.h>

> >  #include <linux/reboot.h>

> > +#include <linux/of.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 (!of_property_read_u32(pdev->dev.of_node, "trigger-delay-ms",

> > +                               &trigger_delay_ms)) {

>

> please use device_property_read_u32() from <linux/property.h>.

>

> > +             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)) {

>

> Thanks and sorry for delayed response,

>

> -- Sebastian




-- 
mgr inż. Marek Czerski
+48 696 842 686
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt b/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt
index cd2d7f58a..881f15a78 100644
--- a/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt
+++ b/Documentation/devicetree/bindings/power/reset/ltc2952-poweroff.txt
@@ -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>;
 };
diff --git a/drivers/power/reset/ltc2952-poweroff.c b/drivers/power/reset/ltc2952-poweroff.c
index 318927938..243811541 100644
--- a/drivers/power/reset/ltc2952-poweroff.c
+++ b/drivers/power/reset/ltc2952-poweroff.c
@@ -55,6 +55,7 @@ 
 #include <linux/mod_devicetable.h>
 #include <linux/gpio/consumer.h>
 #include <linux/reboot.h>
+#include <linux/of.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 (!of_property_read_u32(pdev->dev.of_node, "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)) {