RE: [PATCH] watchdog: da9062: fix power management ops

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux