[U-Boot] [PATCH v2] drivers: watchdog: add MAX6373 WDT support
rnd4 at dave-tech.it
rnd4 at dave-tech.it
Tue Aug 18 15:22:29 CEST 2015
From: Andrea Scian <andrea.scian at 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.scian at 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 <devel at 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
More information about the U-Boot
mailing list