mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
linux-watchdog 5.6-rc3 tag
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)
iEYEABECAAYFAl5PyHAACgkQ+iyteGJfRsrYtACgt7aQulV9htAryig1fxw3Hw96
YuYAoKjddxt5WDkcpBHcrLG4fQpzV0ap
=4YJU
-----END PGP SIGNATURE-----
Merge tag 'linux-watchdog-5.6-rc3' of git://www.linux-watchdog.org/linux-watchdog
Pull watchdog fixes from Wim Van Sebroeck:
- mtk_wdt needs RESET_CONTROLLER to build
- da9062 driver fixes:
- fix power management ops
- do not ping the hw during stop()
- add dependency on I2C
* tag 'linux-watchdog-5.6-rc3' of git://www.linux-watchdog.org/linux-watchdog:
watchdog: da9062: Add dependency on I2C
watchdog: da9062: fix power management ops
watchdog: da9062: do not ping the hw during stop()
watchdog: fix mtk_wdt.c RESET_CONTROLLER build error
This commit is contained in:
commit
0c0ddd6ae4
|
|
@ -207,6 +207,7 @@ config DA9063_WATCHDOG
|
|||
config DA9062_WATCHDOG
|
||||
tristate "Dialog DA9062/61 Watchdog"
|
||||
depends on MFD_DA9062 || COMPILE_TEST
|
||||
depends on I2C
|
||||
select WATCHDOG_CORE
|
||||
help
|
||||
Support for the watchdog in the DA9062 and DA9061 PMICs.
|
||||
|
|
@ -841,6 +842,7 @@ config MEDIATEK_WATCHDOG
|
|||
tristate "Mediatek SoCs watchdog support"
|
||||
depends on ARCH_MEDIATEK || COMPILE_TEST
|
||||
select WATCHDOG_CORE
|
||||
select RESET_CONTROLLER
|
||||
help
|
||||
Say Y here to include support for the watchdog timer
|
||||
in Mediatek SoCs.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
@ -95,13 +97,6 @@ static int da9062_wdt_stop(struct watchdog_device *wdd)
|
|||
struct da9062_watchdog *wdt = watchdog_get_drvdata(wdd);
|
||||
int ret;
|
||||
|
||||
ret = da9062_reset_watchdog_timer(wdt);
|
||||
if (ret) {
|
||||
dev_err(wdt->hw->dev, "Failed to ping the watchdog (err = %d)\n",
|
||||
ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = regmap_update_bits(wdt->hw->regmap,
|
||||
DA9062AA_CONTROL_D,
|
||||
DA9062AA_TWDSCALE_MASK,
|
||||
|
|
@ -200,6 +195,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 +223,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 +237,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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user