diff options
Diffstat (limited to 'drivers/watchdog')
29 files changed, 23 insertions, 64 deletions
diff --git a/drivers/watchdog/armada-37xx-wdt.c b/drivers/watchdog/armada-37xx-wdt.c index e09f5ac9e34..4b51178e1b8 100644 --- a/drivers/watchdog/armada-37xx-wdt.c +++ b/drivers/watchdog/armada-37xx-wdt.c @@ -5,7 +5,6 @@ * Marek BehĂșn <kabel@kernel.org> */ -#include <common.h> #include <dm.h> #include <wdt.h> #include <asm/global_data.h> diff --git a/drivers/watchdog/ast2600_wdt.c b/drivers/watchdog/ast2600_wdt.c index bc9842089be..190490f3692 100644 --- a/drivers/watchdog/ast2600_wdt.c +++ b/drivers/watchdog/ast2600_wdt.c @@ -3,7 +3,6 @@ * Copyright (c) 2020 Aspeed Technology, Inc */ -#include <common.h> #include <dm.h> #include <errno.h> #include <log.h> diff --git a/drivers/watchdog/ast_wdt.c b/drivers/watchdog/ast_wdt.c index f7b5a1adc10..e61e13fdc49 100644 --- a/drivers/watchdog/ast_wdt.c +++ b/drivers/watchdog/ast_wdt.c @@ -3,7 +3,6 @@ * Copyright 2017 Google, Inc */ -#include <common.h> #include <dm.h> #include <errno.h> #include <log.h> diff --git a/drivers/watchdog/at91sam9_wdt.c b/drivers/watchdog/at91sam9_wdt.c index 647ae325e9a..c809a8936b8 100644 --- a/drivers/watchdog/at91sam9_wdt.c +++ b/drivers/watchdog/at91sam9_wdt.c @@ -18,7 +18,6 @@ #include <asm/global_data.h> #include <asm/io.h> #include <asm/arch/at91_wdt.h> -#include <common.h> #include <div64.h> #include <dm.h> #include <errno.h> diff --git a/drivers/watchdog/bcm6345_wdt.c b/drivers/watchdog/bcm6345_wdt.c index 677b1347ca7..6ebe901c2b8 100644 --- a/drivers/watchdog/bcm6345_wdt.c +++ b/drivers/watchdog/bcm6345_wdt.c @@ -7,7 +7,6 @@ * Copyright (C) 2008 Florian Fainelli <florian@openwrt.org> */ -#include <common.h> #include <dm.h> #include <log.h> #include <wdt.h> diff --git a/drivers/watchdog/cdns_wdt.c b/drivers/watchdog/cdns_wdt.c index 743ab6487bc..cb5a786c589 100644 --- a/drivers/watchdog/cdns_wdt.c +++ b/drivers/watchdog/cdns_wdt.c @@ -6,7 +6,6 @@ * Author(s): Shreenidhi Shedi <yesshedi@gmail.com> */ -#include <common.h> #include <dm.h> #include <log.h> #include <wdt.h> diff --git a/drivers/watchdog/cortina_wdt.c b/drivers/watchdog/cortina_wdt.c index 7ab9d7b2db9..9f09ac0e15f 100644 --- a/drivers/watchdog/cortina_wdt.c +++ b/drivers/watchdog/cortina_wdt.c @@ -4,7 +4,6 @@ * */ -#include <common.h> #include <dm.h> #include <hang.h> #include <asm/io.h> diff --git a/drivers/watchdog/designware_wdt.c b/drivers/watchdog/designware_wdt.c index b22e0ee06a4..bd9d7105366 100644 --- a/drivers/watchdog/designware_wdt.c +++ b/drivers/watchdog/designware_wdt.c @@ -4,7 +4,6 @@ */ #include <clk.h> -#include <common.h> #include <dm.h> #include <reset.h> #include <wdt.h> diff --git a/drivers/watchdog/ftwdt010_wdt.c b/drivers/watchdog/ftwdt010_wdt.c index 1f5f301b125..4769b967e52 100644 --- a/drivers/watchdog/ftwdt010_wdt.c +++ b/drivers/watchdog/ftwdt010_wdt.c @@ -14,7 +14,6 @@ * 22/08/2022 Port to DM */ -#include <common.h> #include <dm.h> #include <wdt.h> #include <log.h> diff --git a/drivers/watchdog/imx_watchdog.c b/drivers/watchdog/imx_watchdog.c index 894158b304a..ea770217e59 100644 --- a/drivers/watchdog/imx_watchdog.c +++ b/drivers/watchdog/imx_watchdog.c @@ -4,7 +4,6 @@ * Licensed under the GPL-2 or later. */ -#include <common.h> #include <cpu_func.h> #include <dm.h> #include <hang.h> diff --git a/drivers/watchdog/mcf_wdt.c b/drivers/watchdog/mcf_wdt.c index b36488bb5b9..5092a256af0 100644 --- a/drivers/watchdog/mcf_wdt.c +++ b/drivers/watchdog/mcf_wdt.c @@ -6,7 +6,7 @@ * */ -#include <common.h> +#include <config.h> #include <dm.h> #include <hang.h> #include <asm/io.h> diff --git a/drivers/watchdog/mpc8xxx_wdt.c b/drivers/watchdog/mpc8xxx_wdt.c index f28636ca901..036ff690d3f 100644 --- a/drivers/watchdog/mpc8xxx_wdt.c +++ b/drivers/watchdog/mpc8xxx_wdt.c @@ -3,7 +3,6 @@ * Copyright 2017 CS Systemes d'Information */ -#include <common.h> #include <env.h> #include <dm.h> #include <wdt.h> diff --git a/drivers/watchdog/mt7621_wdt.c b/drivers/watchdog/mt7621_wdt.c index f7d201b921a..6308d9632a8 100644 --- a/drivers/watchdog/mt7621_wdt.c +++ b/drivers/watchdog/mt7621_wdt.c @@ -9,7 +9,6 @@ * Copyright (C) 2013 John Crispin <blogic@openwrt.org> */ -#include <common.h> #include <dm.h> #include <wdt.h> #include <asm/global_data.h> diff --git a/drivers/watchdog/mtk_wdt.c b/drivers/watchdog/mtk_wdt.c index 368b36849c8..706deb9da84 100644 --- a/drivers/watchdog/mtk_wdt.c +++ b/drivers/watchdog/mtk_wdt.c @@ -6,7 +6,6 @@ * Author: Ryder Lee <ryder.lee@mediatek.com> */ -#include <common.h> #include <dm.h> #include <hang.h> #include <wdt.h> diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c index f0e57b4f728..5fd02ddf564 100644 --- a/drivers/watchdog/omap_wdt.c +++ b/drivers/watchdog/omap_wdt.c @@ -36,7 +36,6 @@ * Use the driver model and standard identifiers; handle bigger timeouts. */ -#include <common.h> #include <log.h> #include <watchdog.h> #include <asm/ti-common/omap_wdt.h> diff --git a/drivers/watchdog/orion_wdt.c b/drivers/watchdog/orion_wdt.c index 127766df58a..4562b2a37e3 100644 --- a/drivers/watchdog/orion_wdt.c +++ b/drivers/watchdog/orion_wdt.c @@ -12,7 +12,6 @@ * warranty of any kind, whether express or implied. */ -#include <common.h> #include <dm.h> #include <clk.h> #include <log.h> diff --git a/drivers/watchdog/rti_wdt.c b/drivers/watchdog/rti_wdt.c index 8d93f19b984..99168d0cad0 100644 --- a/drivers/watchdog/rti_wdt.c +++ b/drivers/watchdog/rti_wdt.c @@ -8,7 +8,6 @@ * Derived from linux/drivers/watchdog/rti_wdt.c */ -#include <common.h> #include <clk.h> #include <dm.h> #include <dm/device_compat.h> diff --git a/drivers/watchdog/s5p_wdt.c b/drivers/watchdog/s5p_wdt.c index 80524a00101..c244f15a895 100644 --- a/drivers/watchdog/s5p_wdt.c +++ b/drivers/watchdog/s5p_wdt.c @@ -4,7 +4,6 @@ * Minkyu Kang <mk7.kang@samsung.com> */ -#include <common.h> #include <asm/io.h> #include <asm/arch/cpu.h> #include <asm/arch/watchdog.h> diff --git a/drivers/watchdog/sandbox_alarm-wdt.c b/drivers/watchdog/sandbox_alarm-wdt.c index 71bb5d924ea..8dbbfc249e7 100644 --- a/drivers/watchdog/sandbox_alarm-wdt.c +++ b/drivers/watchdog/sandbox_alarm-wdt.c @@ -1,4 +1,3 @@ -#include <common.h> #include <dm.h> #include <os.h> #include <wdt.h> diff --git a/drivers/watchdog/sandbox_wdt.c b/drivers/watchdog/sandbox_wdt.c index 535614f04d6..cd5eadbfd21 100644 --- a/drivers/watchdog/sandbox_wdt.c +++ b/drivers/watchdog/sandbox_wdt.c @@ -3,7 +3,6 @@ * Copyright 2017 Google, Inc */ -#include <common.h> #include <dm.h> #include <wdt.h> #include <asm/state.h> diff --git a/drivers/watchdog/sbsa_gwdt.c b/drivers/watchdog/sbsa_gwdt.c index 96d04665d52..03585529bb6 100644 --- a/drivers/watchdog/sbsa_gwdt.c +++ b/drivers/watchdog/sbsa_gwdt.c @@ -7,7 +7,6 @@ #include <asm/global_data.h> #include <asm/io.h> -#include <common.h> #include <dm/device.h> #include <dm/fdtaddr.h> #include <dm/read.h> diff --git a/drivers/watchdog/sl28cpld-wdt.c b/drivers/watchdog/sl28cpld-wdt.c index af5a6b1a28a..c5b4f8a9f66 100644 --- a/drivers/watchdog/sl28cpld-wdt.c +++ b/drivers/watchdog/sl28cpld-wdt.c @@ -5,7 +5,6 @@ * Copyright (c) 2021 Michael Walle <michael@walle.cc> */ -#include <common.h> #include <dm.h> #include <wdt.h> #include <sl28cpld.h> diff --git a/drivers/watchdog/sp805_wdt.c b/drivers/watchdog/sp805_wdt.c index 6d58fd3cfda..10fe3e28232 100644 --- a/drivers/watchdog/sp805_wdt.c +++ b/drivers/watchdog/sp805_wdt.c @@ -8,7 +8,6 @@ #include <log.h> #include <asm/global_data.h> #include <asm/io.h> -#include <common.h> #include <clk.h> #include <dm/device.h> #include <dm/fdtaddr.h> diff --git a/drivers/watchdog/stm32mp_wdt.c b/drivers/watchdog/stm32mp_wdt.c index 7ebcd255266..97ab8cfe7ab 100644 --- a/drivers/watchdog/stm32mp_wdt.c +++ b/drivers/watchdog/stm32mp_wdt.c @@ -5,7 +5,6 @@ #define LOG_CATEGORY UCLASS_WDT -#include <common.h> #include <clk.h> #include <dm.h> #include <log.h> diff --git a/drivers/watchdog/tangier_wdt.c b/drivers/watchdog/tangier_wdt.c index bdc65597dcf..8fbfac31b1e 100644 --- a/drivers/watchdog/tangier_wdt.c +++ b/drivers/watchdog/tangier_wdt.c @@ -2,7 +2,6 @@ /* * Copyright (c) 2017 Intel Corporation */ -#include <common.h> #include <dm.h> #include <log.h> #include <wdt.h> diff --git a/drivers/watchdog/ulp_wdog.c b/drivers/watchdog/ulp_wdog.c index 0eea04ed2c6..83f19dc0e86 100644 --- a/drivers/watchdog/ulp_wdog.c +++ b/drivers/watchdog/ulp_wdog.c @@ -3,7 +3,6 @@ * Copyright (C) 2016 Freescale Semiconductor, Inc. */ -#include <common.h> #include <cpu_func.h> #include <asm/io.h> #include <asm/arch/imx-regs.h> diff --git a/drivers/watchdog/wdt-uclass.c b/drivers/watchdog/wdt-uclass.c index 417e8d7eef9..10be334e9ed 100644 --- a/drivers/watchdog/wdt-uclass.c +++ b/drivers/watchdog/wdt-uclass.c @@ -5,7 +5,6 @@ #define LOG_CATEGORY UCLASS_WDT -#include <common.h> #include <cyclic.h> #include <div64.h> #include <dm.h> @@ -18,17 +17,20 @@ #include <asm/global_data.h> #include <dm/device-internal.h> #include <dm/lists.h> +#include <linux/kernel.h> DECLARE_GLOBAL_DATA_PTR; #define WATCHDOG_TIMEOUT_SECS (CONFIG_WATCHDOG_TIMEOUT_MSECS / 1000) struct wdt_priv { + /* The udevice owning this wdt_priv. */ + struct udevice *dev; /* Timeout, in seconds, to configure this device to. */ u32 timeout; /* * Time, in milliseconds, between calling the device's ->reset() - * method from watchdog_reset(). + * method from schedule(). */ ulong reset_period; /* @@ -41,18 +43,17 @@ struct wdt_priv { /* autostart */ bool autostart; - struct cyclic_info *cyclic; + struct cyclic_info cyclic; }; -static void wdt_cyclic(void *ctx) +static void wdt_cyclic(struct cyclic_info *c) { - struct udevice *dev = ctx; - struct wdt_priv *priv; + struct wdt_priv *priv = container_of(c, struct wdt_priv, cyclic); + struct udevice *dev = priv->dev; if (!device_active(dev)) return; - priv = dev_get_uclass_priv(dev); if (!priv->running) return; @@ -122,24 +123,20 @@ int wdt_start(struct udevice *dev, u64 timeout_ms, ulong flags) struct wdt_priv *priv = dev_get_uclass_priv(dev); char str[16]; - priv->running = true; - memset(str, 0, 16); if (IS_ENABLED(CONFIG_WATCHDOG)) { + if (priv->running) + cyclic_unregister(&priv->cyclic); + /* Register the watchdog driver as a cyclic function */ - priv->cyclic = cyclic_register(wdt_cyclic, - priv->reset_period * 1000, - dev->name, dev); - if (!priv->cyclic) { - printf("cyclic_register for %s failed\n", - dev->name); - return -ENODEV; - } else { - snprintf(str, 16, "every %ldms", - priv->reset_period); - } + cyclic_register(&priv->cyclic, wdt_cyclic, + priv->reset_period * 1000, + dev->name); + + snprintf(str, 16, "every %ldms", priv->reset_period); } + priv->running = true; printf("WDT: Started %s with%s servicing %s (%ds timeout)\n", dev->name, IS_ENABLED(CONFIG_WATCHDOG) ? "" : "out", str, (u32)lldiv(timeout_ms, 1000)); @@ -160,6 +157,9 @@ int wdt_stop(struct udevice *dev) if (ret == 0) { struct wdt_priv *priv = dev_get_uclass_priv(dev); + if (IS_ENABLED(CONFIG_WATCHDOG) && priv->running) + cyclic_unregister(&priv->cyclic); + priv->running = false; } @@ -222,21 +222,6 @@ int wdt_expire_now(struct udevice *dev, ulong flags) return ret; } -#if defined(CONFIG_WATCHDOG) -/* - * Called by macro WATCHDOG_RESET. This function be called *very* early, - * so we need to make sure, that the watchdog driver is ready before using - * it in this function. - */ -void watchdog_reset(void) -{ - /* - * Empty function for now. The actual WDT handling is now done in - * the cyclic function instead. - */ -} -#endif - static int wdt_pre_probe(struct udevice *dev) { u32 timeout = WATCHDOG_TIMEOUT_SECS; @@ -258,12 +243,13 @@ static int wdt_pre_probe(struct udevice *dev) autostart = true; } priv = dev_get_uclass_priv(dev); + priv->dev = dev; priv->timeout = timeout; priv->reset_period = reset_period; priv->autostart = autostart; /* * Pretend this device was last reset "long" ago so the first - * watchdog_reset will actually call its ->reset method. + * schedule() will actually call its ->reset method. */ priv->next_reset = get_timer(0); diff --git a/drivers/watchdog/xilinx_tb_wdt.c b/drivers/watchdog/xilinx_tb_wdt.c index b38c4000161..8a8e55370a0 100644 --- a/drivers/watchdog/xilinx_tb_wdt.c +++ b/drivers/watchdog/xilinx_tb_wdt.c @@ -8,7 +8,6 @@ * Copyright (c) 2011-2018 Xilinx Inc. */ -#include <common.h> #include <dm.h> #include <log.h> #include <wdt.h> diff --git a/drivers/watchdog/xilinx_wwdt.c b/drivers/watchdog/xilinx_wwdt.c index 963ab22fb45..41eff1a4645 100644 --- a/drivers/watchdog/xilinx_wwdt.c +++ b/drivers/watchdog/xilinx_wwdt.c @@ -9,7 +9,6 @@ */ #include <clk.h> -#include <common.h> #include <dm.h> #include <regmap.h> #include <wdt.h> |