On 07 February 2020 14:56, Guenter Roeck wrote: > On Fri, Feb 07, 2020 at 08:15:18AM +0100, Marco Felsch wrote: > > This fixes commit f6c98b08381c ("watchdog: da9062: add power management > > ops"). During discussion [1] we agreed that this should be configurable > > because it is a device quirk if we can't use the hw watchdog auto > > suspend function. > > > > [1] https://lore.kernel.org/linux-watchdog/20191128171931.22563-1- > m.felsch@xxxxxxxxxxxxxx/ > > > > Signed-off-by: Marco Felsch <m.felsch@xxxxxxxxxxxxxx> > > Reviewed-by: Guenter Roeck <linux@xxxxxxxxxxxx> Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@xxxxxxxxxxx> > > > --- > > Hi, > > > > unfortunately I forgot to add an v2 tag [2] and Guenter took the > > wrong patch version. It is completely my fault anyway this should be > > part of the next rc tag for 5.6. The device property should be applied > > already so this patch adds only the usage and therefore don't include > > the dt-folks in the to: and cc:. > > > > Regards, > > Marco > > > > [2] https://lkml.org/lkml/2020/1/8/210 > > > > drivers/watchdog/da9062_wdt.c | 12 ++++++++++++ > > 1 file changed, 12 insertions(+) > > > > diff --git a/drivers/watchdog/da9062_wdt.c b/drivers/watchdog/da9062_wdt.c > > index 47eefe072b40..77b6b5336067 100644 > > --- a/drivers/watchdog/da9062_wdt.c > > +++ b/drivers/watchdog/da9062_wdt.c > > @@ -16,6 +16,7 @@ > > #include <linux/jiffies.h> > > #include <linux/mfd/da9062/registers.h> > > #include <linux/mfd/da9062/core.h> > > +#include <linux/property.h> > > #include <linux/regmap.h> > > #include <linux/of.h> > > > > @@ -31,6 +32,7 @@ static const unsigned int wdt_timeout[] = { 0, 2, 4, 8, 16, 32, > 65, 131 }; > > struct da9062_watchdog { > > struct da9062 *hw; > > struct watchdog_device wdtdev; > > + bool use_sw_pm; > > }; > > > > static unsigned int da9062_wdt_timeout_to_sel(unsigned int secs) > > @@ -200,6 +202,8 @@ static int da9062_wdt_probe(struct platform_device > *pdev) > > if (!wdt) > > return -ENOMEM; > > > > + wdt->use_sw_pm = device_property_present(dev, "dlg,use-sw-pm"); > > + > > wdt->hw = chip; > > > > wdt->wdtdev.info = &da9062_watchdog_info; > > @@ -226,6 +230,10 @@ static int da9062_wdt_probe(struct platform_device > *pdev) > > static int __maybe_unused da9062_wdt_suspend(struct device *dev) > > { > > struct watchdog_device *wdd = dev_get_drvdata(dev); > > + struct da9062_watchdog *wdt = watchdog_get_drvdata(wdd); > > + > > + if (!wdt->use_sw_pm) > > + return 0; > > > > if (watchdog_active(wdd)) > > return da9062_wdt_stop(wdd); > > @@ -236,6 +244,10 @@ static int __maybe_unused > da9062_wdt_suspend(struct device *dev) > > static int __maybe_unused da9062_wdt_resume(struct device *dev) > > { > > struct watchdog_device *wdd = dev_get_drvdata(dev); > > + struct da9062_watchdog *wdt = watchdog_get_drvdata(wdd); > > + > > + if (!wdt->use_sw_pm) > > + return 0; > > > > if (watchdog_active(wdd)) > > return da9062_wdt_start(wdd); > > -- > > 2.20.1 > >