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

Reply via email to