* [U-Boot] [PATCH] drivers: watchdog: add MAX6373 WDT support
@ 2015-07-23 21:33 rnd4 at dave-tech.it
2015-08-12 15:46 ` Tom Rini
0 siblings, 1 reply; 5+ messages in thread
From: rnd4 at dave-tech.it @ 2015-07-23 21:33 UTC (permalink / raw)
To: u-boot
From: Andrea Scian <andrea.scian@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@dave.eu>
---
drivers/watchdog/Makefile | 1 +
drivers/watchdog/max6373_wdt.c | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 35 insertions(+)
create mode 100644 drivers/watchdog/max6373_wdt.c
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index 0276a10..6826100 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -16,3 +16,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@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
^ permalink raw reply related [flat|nested] 5+ messages in thread* [U-Boot] [PATCH] drivers: watchdog: add MAX6373 WDT support
2015-07-23 21:33 [U-Boot] [PATCH] drivers: watchdog: add MAX6373 WDT support rnd4 at dave-tech.it
@ 2015-08-12 15:46 ` Tom Rini
2015-08-18 13:22 ` [U-Boot] [PATCH v2] " rnd4 at dave-tech.it
0 siblings, 1 reply; 5+ messages in thread
From: Tom Rini @ 2015-08-12 15:46 UTC (permalink / raw)
To: u-boot
On Thu, Jul 23, 2015 at 11:33:19PM +0200, rnd4 at dave-tech.it wrote:
> From: Andrea Scian <andrea.scian@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@dave.eu>
> ---
> drivers/watchdog/Makefile | 1 +
> drivers/watchdog/max6373_wdt.c | 34 ++++++++++++++++++++++++++++++++++
> 2 files changed, 35 insertions(+)
> create mode 100644 drivers/watchdog/max6373_wdt.c
Please Kconfig'ize this, thanks.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150812/5c13031e/attachment.sig>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] [PATCH v2] drivers: watchdog: add MAX6373 WDT support
2015-08-12 15:46 ` Tom Rini
@ 2015-08-18 13:22 ` rnd4 at dave-tech.it
2015-08-18 13:33 ` Michael Trimarchi
0 siblings, 1 reply; 5+ messages in thread
From: rnd4 at dave-tech.it @ 2015-08-18 13:22 UTC (permalink / raw)
To: u-boot
From: Andrea Scian <andrea.scian@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@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@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
^ permalink raw reply related [flat|nested] 5+ messages in thread* [U-Boot] [PATCH v2] drivers: watchdog: add MAX6373 WDT support
2015-08-18 13:22 ` [U-Boot] [PATCH v2] " rnd4 at dave-tech.it
@ 2015-08-18 13:33 ` Michael Trimarchi
2015-08-18 20:41 ` Andrea Scian
0 siblings, 1 reply; 5+ messages in thread
From: Michael Trimarchi @ 2015-08-18 13:33 UTC (permalink / raw)
To: u-boot
Hi
On Tue, Aug 18, 2015 at 3:22 PM, <rnd4@dave-tech.it> wrote:
> From: Andrea Scian <andrea.scian@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@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@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));
> +}
> +
According to the datasheet timeout can be select from 3 additional pin. Plus
if a timeout is defined you can avoid to change the value always. For example
if the gpio pin is on an expander you avoid to send an i2c message always.
Half of timeout is always enough. Even because this invest a family of device
I don't think that we require a name. Can be watchdog-gpio?
Michael
> +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 at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
^ permalink raw reply [flat|nested] 5+ messages in thread* [U-Boot] [PATCH v2] drivers: watchdog: add MAX6373 WDT support
2015-08-18 13:33 ` Michael Trimarchi
@ 2015-08-18 20:41 ` Andrea Scian
0 siblings, 0 replies; 5+ messages in thread
From: Andrea Scian @ 2015-08-18 20:41 UTC (permalink / raw)
To: u-boot
Il 18/08/2015 15:33, Michael Trimarchi ha scritto:
> Hi
>
> On Tue, Aug 18, 2015 at 3:22 PM, <rnd4@dave-tech.it> wrote:
>> From: Andrea Scian <andrea.scian@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@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@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));
>> +}
>> +
>
> According to the datasheet timeout can be select from 3 additional pin. Plus
> if a timeout is defined you can avoid to change the value always. For example
> if the gpio pin is on an expander you avoid to send an i2c message always.
> Half of timeout is always enough.
Understood. I think we can add the WDT timeout or WDT ping timeout (in
ms?) as an additional Kconfig entry.
Can you please give me some clues about the best way to safely calculate
such a timeout in this scenario?
Then I can elaborate on it and test it on hardware (as soon as I find
some spare time ;-) )
> Even because this invest a family of device
> I don't think that we require a name. Can be watchdog-gpio?
I didn't think about writing a general purpose GPIO WDT driver, but I
think it's a nice idea. It may be useful as heartbeat too.
I think we can call it as you suggest.
I can rewrite the code and make it more reusable, if there's no other
comments on this.
>
> Michael
Thanks for your feedback,
--
Andrea SCIAN
DAVE Embedded Systems
>
>> +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 at lists.denx.de
>> http://lists.denx.de/mailman/listinfo/u-boot
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-08-18 20:41 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-23 21:33 [U-Boot] [PATCH] drivers: watchdog: add MAX6373 WDT support rnd4 at dave-tech.it
2015-08-12 15:46 ` Tom Rini
2015-08-18 13:22 ` [U-Boot] [PATCH v2] " rnd4 at dave-tech.it
2015-08-18 13:33 ` Michael Trimarchi
2015-08-18 20:41 ` Andrea Scian
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox