From: Andrea Scian <andrea.sc...@dave.eu> MAX6373 is a simple WDT which is programmed its configuration pins and reset via another pin, which is usually connected to a GPIO
Signed-off-by: Andrea Scian <andrea.sc...@dave.eu> --- Changes for v2: - add Kconfig support drivers/watchdog/Kconfig | 17 +++++++++++++++++ drivers/watchdog/Makefile | 1 + drivers/watchdog/max6373_wdt.c | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 drivers/watchdog/max6373_wdt.c diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index e69de29..c7c2011 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig @@ -0,0 +1,17 @@ +menu "Watchdog Timer Support" + +config MAX6373_WATCHDOG + bool "Maxim MAX6373 Watchdog" + depends on DM_GPIO + default n + help + Enable MAX6373 Watchdog timer driver. This is a simple WDT which is reset + via GPIO + +config MAX6373_WDT_GPIO + int "Maxim MAX6373 WDT Reset GPIO" + depends on MAX6373_WATCHDOG + help + GPIO number used by the MAX6373 driver to reset the WDT at runtime + +endmenu # menu "Watchdog Timer Support" diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index 482a4bd..5bb5f5b 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile @@ -15,3 +15,4 @@ obj-$(CONFIG_XILINX_TB_WATCHDOG) += xilinx_tb_wdt.o obj-$(CONFIG_BFIN_WATCHDOG) += bfin_wdt.o obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o +obj-$(CONFIG_MAX6373_WATCHDOG) += max6373_wdt.o diff --git a/drivers/watchdog/max6373_wdt.c b/drivers/watchdog/max6373_wdt.c new file mode 100644 index 0000000..cda46af --- /dev/null +++ b/drivers/watchdog/max6373_wdt.c @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2015 DAVE Embedded Systems <de...@dave.eu> + * + * SPDX-License-Identifier: GPL-2.0+ + * + * MAX6373 is a WDT which uses a simple GPIO to reset its timeout + * + * Use CONFIG_MAX6373_WDT_GPIO to define the GPIO number to use + */ + +#include <common.h> +#include <asm/io.h> +#include <asm/gpio.h> +#include <watchdog.h> + +#ifndef CONFIG_MAX6373_WDT_GPIO +#error "Please use CONFIG_MAX6373_WDT_GPIO to define which GPIO to use" +#endif + +void hw_watchdog_reset(void) +{ + gpio_set_value(CONFIG_MAX6373_WDT_GPIO, + !gpio_get_value(CONFIG_MAX6373_WDT_GPIO)); +} + +void hw_watchdog_init(void) +{ + if (gpio_request(CONFIG_MAX6373_WDT_GPIO, "MAX6373 WDT")) { + printf("Cannot request GPIO %d for MAX6373 WDT\n", + CONFIG_MAX6373_WDT_GPIO); + return; + } + gpio_direction_output(CONFIG_MAX6373_WDT_GPIO, 1); +} -- 1.7.9.5 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot