Re: [PATCH v10 1/2] watchdog: New watchdog driver for MEN A21 watchdogs
On Mon, Jun 17, 2013 at 12:22:48PM +0200, Johannes Thumshirn wrote: > This patch adds the driver for the watchdog devices found on MEN Mikro > Elektronik A21 VMEbus CPU Carrier Boards. It has DT-support and uses the > watchdog framework. > > Signed-off-by: Johannes Thumshirn Reviewed-by: Guenter Roeck > --- > > Revision 2: > * Removed unneeded open flag in struct a21_wdt_drv > * Corrected 3bit reason code from gpio > * Additional sysfs files are now part of watchdog sysfs > * Changed OFF/ON delay in ping from 400ms to 10ns > * Reworked timeout setting > * Removed a21_wdt_ioctl(...) > > Revision 3: > * Changed pr_{err,info} to dev_{err,info} > * Removed out of memory error print > * Transition from "fast" to "slow" mode not allowed by chip > > Revision 4: > * Remove reboot_notifier and place disable code into platform_device's > shutdown function > * Removed sysfs interface > > Revision 5: > * Added setting of .bootstatus on driver init > * Added initial timeout on driver init > > Revision 6: > * Use watchdog_init_timeout() to initialize timeout > > Revision 7: > * Fix possible get_bootstatus race condition > > Revision 8: > * a21_wdt_get_bootstatus() should return reset code > * GPIOs are supplied via DT instead of being hardcoded. Code derived from >(drivers/hwmon/gpio-fan.c) > * Added Devicetree binding document > * Driver now depends on GPIOLIB > > Revision 9: > * We need 6 GPIOs not only 1 to work > * GPIO_WD_RST[0..2] are inputs > > Revision 10: > * Don't perform checks of Watchdog core again. > * Some style fixes > > .../devicetree/bindings/gpio/men-a021-wdt.txt | 25 ++ > MAINTAINERS|6 + > drivers/watchdog/Kconfig | 12 + > drivers/watchdog/Makefile |1 + > drivers/watchdog/mena21_wdt.c | 270 > > 5 files changed, 314 insertions(+) > create mode 100644 Documentation/devicetree/bindings/gpio/men-a021-wdt.txt > create mode 100644 drivers/watchdog/mena21_wdt.c > > diff --git a/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt > b/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt > new file mode 100644 > index 000..370dee3 > --- /dev/null > +++ b/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt > @@ -0,0 +1,25 @@ > +Bindings for MEN A21 Watchdog device connected to GPIO lines > + > +Required properties: > +- compatible: "men,a021-wdt" > +- gpios: Specifies the pins that control the Watchdog, order: > + 1: Watchdog enable > + 2: Watchdog fast-mode > + 3: Watchdog trigger > + 4: Watchdog reset cause bit 0 > + 5: Watchdog reset cause bit 1 > + 6: Watchdog reset cause bit 2 > + > +Optional properties: > +- None > + > +Example: > + watchdog { > + compatible ="men,a021-wdt"; > + gpios = < 9 1/* WD_EN */ > + 10 1/* WD_FAST */ > + 11 1/* WD_TRIG */ > + 6 1/* RST_CAUSE[0] */ > + 7 1/* RST_CAUSE[1] */ > + 8 1>; /* RST_CAUSE[2] */ > + }; > diff --git a/MAINTAINERS b/MAINTAINERS > index 5be702c..824261e 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -5317,6 +5317,12 @@ F: drivers/mtd/ > F: include/linux/mtd/ > F: include/uapi/mtd/ > > +MEN A21 WATCHDOG DRIVER > +M: Johannes Thumshirn > +L: linux-watch...@vger.kernel.org > +S: Supported > +F: drivers/watchdog/mena21_wdt.c > + > METAG ARCHITECTURE > M: James Hogan > S: Supported > diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig > index e89fc31..8b143ee 100644 > --- a/drivers/watchdog/Kconfig > +++ b/drivers/watchdog/Kconfig > @@ -1172,6 +1172,18 @@ config BOOKE_WDT_DEFAULT_TIMEOUT > > The value can be overridden by the wdt_period command-line parameter. > > +config MEN_A21_WDT > + tristate "MEN A21 VME CPU Carrier Board Watchdog Timer" > + select WATCHDOG_CORE > + depends on GPIOLIB > + help > +Watchdog driver for MEN A21 VMEbus CPU Carrier Boards. > + > + The driver can also be built as a module. If so, the module will be > + called mena21_wdt. > + > + If unsure select N here. > + > # PPC64 Architecture > > config WATCHDOG_RTAS > diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile > index a300b94..bffdcb1 100644 > --- a/drivers/watchdog/Makefile > +++ b/drivers/watchdog/Makefile > @@ -143,6 +143,7 @@ obj-$(CONFIG_8xxx_WDT) += mpc8xxx_wdt.o > obj-$(CONFIG_MV64X60_WDT) += mv64x60_wdt.o > obj-$(CONFIG_PIKA_WDT) += pika_wdt.o > obj-$(CONFIG_BOOKE_WDT) += booke_wdt.o > +obj-$(CONFIG_MEN_A21_WDT) += mena21_wdt.o > > # PPC64 Architecture > obj-$(CONFIG_WATCHDOG_RTAS) += wdrtas.o > diff --git a/drivers/watchdog/mena21_wdt.c b/drivers/watchdog/mena21_wdt.c > new file mode 100644 > index 000..96dbba9 > --- /dev/null > +++
[PATCH v10 1/2] watchdog: New watchdog driver for MEN A21 watchdogs
This patch adds the driver for the watchdog devices found on MEN Mikro Elektronik A21 VMEbus CPU Carrier Boards. It has DT-support and uses the watchdog framework. Signed-off-by: Johannes Thumshirn --- Revision 2: * Removed unneeded open flag in struct a21_wdt_drv * Corrected 3bit reason code from gpio * Additional sysfs files are now part of watchdog sysfs * Changed OFF/ON delay in ping from 400ms to 10ns * Reworked timeout setting * Removed a21_wdt_ioctl(...) Revision 3: * Changed pr_{err,info} to dev_{err,info} * Removed out of memory error print * Transition from "fast" to "slow" mode not allowed by chip Revision 4: * Remove reboot_notifier and place disable code into platform_device's shutdown function * Removed sysfs interface Revision 5: * Added setting of .bootstatus on driver init * Added initial timeout on driver init Revision 6: * Use watchdog_init_timeout() to initialize timeout Revision 7: * Fix possible get_bootstatus race condition Revision 8: * a21_wdt_get_bootstatus() should return reset code * GPIOs are supplied via DT instead of being hardcoded. Code derived from (drivers/hwmon/gpio-fan.c) * Added Devicetree binding document * Driver now depends on GPIOLIB Revision 9: * We need 6 GPIOs not only 1 to work * GPIO_WD_RST[0..2] are inputs Revision 10: * Don't perform checks of Watchdog core again. * Some style fixes .../devicetree/bindings/gpio/men-a021-wdt.txt | 25 ++ MAINTAINERS|6 + drivers/watchdog/Kconfig | 12 + drivers/watchdog/Makefile |1 + drivers/watchdog/mena21_wdt.c | 270 5 files changed, 314 insertions(+) create mode 100644 Documentation/devicetree/bindings/gpio/men-a021-wdt.txt create mode 100644 drivers/watchdog/mena21_wdt.c diff --git a/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt b/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt new file mode 100644 index 000..370dee3 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt @@ -0,0 +1,25 @@ +Bindings for MEN A21 Watchdog device connected to GPIO lines + +Required properties: +- compatible: "men,a021-wdt" +- gpios: Specifies the pins that control the Watchdog, order: + 1: Watchdog enable + 2: Watchdog fast-mode + 3: Watchdog trigger + 4: Watchdog reset cause bit 0 + 5: Watchdog reset cause bit 1 + 6: Watchdog reset cause bit 2 + +Optional properties: +- None + +Example: + watchdog { + compatible ="men,a021-wdt"; + gpios = < 9 1/* WD_EN */ + 10 1/* WD_FAST */ + 11 1/* WD_TRIG */ + 6 1/* RST_CAUSE[0] */ + 7 1/* RST_CAUSE[1] */ + 8 1>; /* RST_CAUSE[2] */ + }; diff --git a/MAINTAINERS b/MAINTAINERS index 5be702c..824261e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -5317,6 +5317,12 @@ F: drivers/mtd/ F: include/linux/mtd/ F: include/uapi/mtd/ +MEN A21 WATCHDOG DRIVER +M: Johannes Thumshirn +L: linux-watch...@vger.kernel.org +S: Supported +F: drivers/watchdog/mena21_wdt.c + METAG ARCHITECTURE M: James Hogan S: Supported diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index e89fc31..8b143ee 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig @@ -1172,6 +1172,18 @@ config BOOKE_WDT_DEFAULT_TIMEOUT The value can be overridden by the wdt_period command-line parameter. +config MEN_A21_WDT + tristate "MEN A21 VME CPU Carrier Board Watchdog Timer" + select WATCHDOG_CORE + depends on GPIOLIB + help +Watchdog driver for MEN A21 VMEbus CPU Carrier Boards. + + The driver can also be built as a module. If so, the module will be + called mena21_wdt. + + If unsure select N here. + # PPC64 Architecture config WATCHDOG_RTAS diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index a300b94..bffdcb1 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile @@ -143,6 +143,7 @@ obj-$(CONFIG_8xxx_WDT) += mpc8xxx_wdt.o obj-$(CONFIG_MV64X60_WDT) += mv64x60_wdt.o obj-$(CONFIG_PIKA_WDT) += pika_wdt.o obj-$(CONFIG_BOOKE_WDT) += booke_wdt.o +obj-$(CONFIG_MEN_A21_WDT) += mena21_wdt.o # PPC64 Architecture obj-$(CONFIG_WATCHDOG_RTAS) += wdrtas.o diff --git a/drivers/watchdog/mena21_wdt.c b/drivers/watchdog/mena21_wdt.c new file mode 100644 index 000..96dbba9 --- /dev/null +++ b/drivers/watchdog/mena21_wdt.c @@ -0,0 +1,270 @@ +/* + * Watchdog driver for the A21 VME CPU Boards + * + * Copyright (C) 2013 MEN Mikro Elektronik Nuernberg GmbH + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation + */ +#include +#include
[PATCH v10 1/2] watchdog: New watchdog driver for MEN A21 watchdogs
This patch adds the driver for the watchdog devices found on MEN Mikro Elektronik A21 VMEbus CPU Carrier Boards. It has DT-support and uses the watchdog framework. Signed-off-by: Johannes Thumshirn johannes.thumsh...@men.de --- Revision 2: * Removed unneeded open flag in struct a21_wdt_drv * Corrected 3bit reason code from gpio * Additional sysfs files are now part of watchdog sysfs * Changed OFF/ON delay in ping from 400ms to 10ns * Reworked timeout setting * Removed a21_wdt_ioctl(...) Revision 3: * Changed pr_{err,info} to dev_{err,info} * Removed out of memory error print * Transition from fast to slow mode not allowed by chip Revision 4: * Remove reboot_notifier and place disable code into platform_device's shutdown function * Removed sysfs interface Revision 5: * Added setting of .bootstatus on driver init * Added initial timeout on driver init Revision 6: * Use watchdog_init_timeout() to initialize timeout Revision 7: * Fix possible get_bootstatus race condition Revision 8: * a21_wdt_get_bootstatus() should return reset code * GPIOs are supplied via DT instead of being hardcoded. Code derived from (drivers/hwmon/gpio-fan.c) * Added Devicetree binding document * Driver now depends on GPIOLIB Revision 9: * We need 6 GPIOs not only 1 to work * GPIO_WD_RST[0..2] are inputs Revision 10: * Don't perform checks of Watchdog core again. * Some style fixes .../devicetree/bindings/gpio/men-a021-wdt.txt | 25 ++ MAINTAINERS|6 + drivers/watchdog/Kconfig | 12 + drivers/watchdog/Makefile |1 + drivers/watchdog/mena21_wdt.c | 270 5 files changed, 314 insertions(+) create mode 100644 Documentation/devicetree/bindings/gpio/men-a021-wdt.txt create mode 100644 drivers/watchdog/mena21_wdt.c diff --git a/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt b/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt new file mode 100644 index 000..370dee3 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt @@ -0,0 +1,25 @@ +Bindings for MEN A21 Watchdog device connected to GPIO lines + +Required properties: +- compatible: men,a021-wdt +- gpios: Specifies the pins that control the Watchdog, order: + 1: Watchdog enable + 2: Watchdog fast-mode + 3: Watchdog trigger + 4: Watchdog reset cause bit 0 + 5: Watchdog reset cause bit 1 + 6: Watchdog reset cause bit 2 + +Optional properties: +- None + +Example: + watchdog { + compatible =men,a021-wdt; + gpios = gpio3 9 1/* WD_EN */ +gpio3 10 1/* WD_FAST */ +gpio3 11 1/* WD_TRIG */ +gpio3 6 1/* RST_CAUSE[0] */ +gpio3 7 1/* RST_CAUSE[1] */ +gpio3 8 1; /* RST_CAUSE[2] */ + }; diff --git a/MAINTAINERS b/MAINTAINERS index 5be702c..824261e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -5317,6 +5317,12 @@ F: drivers/mtd/ F: include/linux/mtd/ F: include/uapi/mtd/ +MEN A21 WATCHDOG DRIVER +M: Johannes Thumshirn johannes.thumsh...@men.de +L: linux-watch...@vger.kernel.org +S: Supported +F: drivers/watchdog/mena21_wdt.c + METAG ARCHITECTURE M: James Hogan james.ho...@imgtec.com S: Supported diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index e89fc31..8b143ee 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig @@ -1172,6 +1172,18 @@ config BOOKE_WDT_DEFAULT_TIMEOUT The value can be overridden by the wdt_period command-line parameter. +config MEN_A21_WDT + tristate MEN A21 VME CPU Carrier Board Watchdog Timer + select WATCHDOG_CORE + depends on GPIOLIB + help +Watchdog driver for MEN A21 VMEbus CPU Carrier Boards. + + The driver can also be built as a module. If so, the module will be + called mena21_wdt. + + If unsure select N here. + # PPC64 Architecture config WATCHDOG_RTAS diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index a300b94..bffdcb1 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile @@ -143,6 +143,7 @@ obj-$(CONFIG_8xxx_WDT) += mpc8xxx_wdt.o obj-$(CONFIG_MV64X60_WDT) += mv64x60_wdt.o obj-$(CONFIG_PIKA_WDT) += pika_wdt.o obj-$(CONFIG_BOOKE_WDT) += booke_wdt.o +obj-$(CONFIG_MEN_A21_WDT) += mena21_wdt.o # PPC64 Architecture obj-$(CONFIG_WATCHDOG_RTAS) += wdrtas.o diff --git a/drivers/watchdog/mena21_wdt.c b/drivers/watchdog/mena21_wdt.c new file mode 100644 index 000..96dbba9 --- /dev/null +++ b/drivers/watchdog/mena21_wdt.c @@ -0,0 +1,270 @@ +/* + * Watchdog driver for the A21 VME CPU Boards + * + * Copyright (C) 2013 MEN Mikro Elektronik Nuernberg GmbH + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General
Re: [PATCH v10 1/2] watchdog: New watchdog driver for MEN A21 watchdogs
On Mon, Jun 17, 2013 at 12:22:48PM +0200, Johannes Thumshirn wrote: This patch adds the driver for the watchdog devices found on MEN Mikro Elektronik A21 VMEbus CPU Carrier Boards. It has DT-support and uses the watchdog framework. Signed-off-by: Johannes Thumshirn johannes.thumsh...@men.de Reviewed-by: Guenter Roeck li...@roeck-us.net --- Revision 2: * Removed unneeded open flag in struct a21_wdt_drv * Corrected 3bit reason code from gpio * Additional sysfs files are now part of watchdog sysfs * Changed OFF/ON delay in ping from 400ms to 10ns * Reworked timeout setting * Removed a21_wdt_ioctl(...) Revision 3: * Changed pr_{err,info} to dev_{err,info} * Removed out of memory error print * Transition from fast to slow mode not allowed by chip Revision 4: * Remove reboot_notifier and place disable code into platform_device's shutdown function * Removed sysfs interface Revision 5: * Added setting of .bootstatus on driver init * Added initial timeout on driver init Revision 6: * Use watchdog_init_timeout() to initialize timeout Revision 7: * Fix possible get_bootstatus race condition Revision 8: * a21_wdt_get_bootstatus() should return reset code * GPIOs are supplied via DT instead of being hardcoded. Code derived from (drivers/hwmon/gpio-fan.c) * Added Devicetree binding document * Driver now depends on GPIOLIB Revision 9: * We need 6 GPIOs not only 1 to work * GPIO_WD_RST[0..2] are inputs Revision 10: * Don't perform checks of Watchdog core again. * Some style fixes .../devicetree/bindings/gpio/men-a021-wdt.txt | 25 ++ MAINTAINERS|6 + drivers/watchdog/Kconfig | 12 + drivers/watchdog/Makefile |1 + drivers/watchdog/mena21_wdt.c | 270 5 files changed, 314 insertions(+) create mode 100644 Documentation/devicetree/bindings/gpio/men-a021-wdt.txt create mode 100644 drivers/watchdog/mena21_wdt.c diff --git a/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt b/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt new file mode 100644 index 000..370dee3 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt @@ -0,0 +1,25 @@ +Bindings for MEN A21 Watchdog device connected to GPIO lines + +Required properties: +- compatible: men,a021-wdt +- gpios: Specifies the pins that control the Watchdog, order: + 1: Watchdog enable + 2: Watchdog fast-mode + 3: Watchdog trigger + 4: Watchdog reset cause bit 0 + 5: Watchdog reset cause bit 1 + 6: Watchdog reset cause bit 2 + +Optional properties: +- None + +Example: + watchdog { + compatible =men,a021-wdt; + gpios = gpio3 9 1/* WD_EN */ + gpio3 10 1/* WD_FAST */ + gpio3 11 1/* WD_TRIG */ + gpio3 6 1/* RST_CAUSE[0] */ + gpio3 7 1/* RST_CAUSE[1] */ + gpio3 8 1; /* RST_CAUSE[2] */ + }; diff --git a/MAINTAINERS b/MAINTAINERS index 5be702c..824261e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -5317,6 +5317,12 @@ F: drivers/mtd/ F: include/linux/mtd/ F: include/uapi/mtd/ +MEN A21 WATCHDOG DRIVER +M: Johannes Thumshirn johannes.thumsh...@men.de +L: linux-watch...@vger.kernel.org +S: Supported +F: drivers/watchdog/mena21_wdt.c + METAG ARCHITECTURE M: James Hogan james.ho...@imgtec.com S: Supported diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index e89fc31..8b143ee 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig @@ -1172,6 +1172,18 @@ config BOOKE_WDT_DEFAULT_TIMEOUT The value can be overridden by the wdt_period command-line parameter. +config MEN_A21_WDT + tristate MEN A21 VME CPU Carrier Board Watchdog Timer + select WATCHDOG_CORE + depends on GPIOLIB + help +Watchdog driver for MEN A21 VMEbus CPU Carrier Boards. + + The driver can also be built as a module. If so, the module will be + called mena21_wdt. + + If unsure select N here. + # PPC64 Architecture config WATCHDOG_RTAS diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index a300b94..bffdcb1 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile @@ -143,6 +143,7 @@ obj-$(CONFIG_8xxx_WDT) += mpc8xxx_wdt.o obj-$(CONFIG_MV64X60_WDT) += mv64x60_wdt.o obj-$(CONFIG_PIKA_WDT) += pika_wdt.o obj-$(CONFIG_BOOKE_WDT) += booke_wdt.o +obj-$(CONFIG_MEN_A21_WDT) += mena21_wdt.o # PPC64 Architecture obj-$(CONFIG_WATCHDOG_RTAS) += wdrtas.o diff --git a/drivers/watchdog/mena21_wdt.c b/drivers/watchdog/mena21_wdt.c new file mode 100644 index 000..96dbba9 --- /dev/null +++ b/drivers/watchdog/mena21_wdt.c @@ -0,0 +1,270 @@ +/* + *