[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <7b0fbd06-73d0-7fa9-3f03-e788f1df4631@roeck-us.net>
Date: Mon, 10 Apr 2023 07:43:37 -0700
From: Guenter Roeck <linux@...ck-us.net>
To: William Breathitt Gray <william.gray@...aro.org>,
Wim Van Sebroeck <wim@...ux-watchdog.org>
Cc: linux-kernel@...r.kernel.org, linux-watchdog@...r.kernel.org,
Paul Demetrotion <pdemetrotion@...systems.com>,
techsupport@...systems.com,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
Fred Eckert <Frede@...laser.com>
Subject: Re: [PATCH] watchdog: ebc-c384_wdt: Remove support
On 4/10/23 07:31, William Breathitt Gray wrote:
> The current maintainer no longer has access to the device for testing,
> the original user of this driver indicates that they have moved on to
> another device, and the manufacturer WINSYSTEMS does not appear
> interested in taking over support for this code.
>
> Signed-off-by: William Breathitt Gray <william.gray@...aro.org>
A bit harsh, maybe. Just mark it as orphan for the time being.
I see there are other Winsystems drivers. What are you going to do
with those ?
Guenter
> ---
> MAINTAINERS | 6 --
> drivers/watchdog/Kconfig | 10 ---
> drivers/watchdog/Makefile | 1 -
> drivers/watchdog/ebc-c384_wdt.c | 142 --------------------------------
> 4 files changed, 159 deletions(-)
> delete mode 100644 drivers/watchdog/ebc-c384_wdt.c
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 90abe83c02f3..3b30b502de93 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -22511,12 +22511,6 @@ M: David Härdeman <david@...deman.nu>
> S: Maintained
> F: drivers/media/rc/winbond-cir.c
>
> -WINSYSTEMS EBC-C384 WATCHDOG DRIVER
> -M: William Breathitt Gray <william.gray@...aro.org>
> -L: linux-watchdog@...r.kernel.org
> -S: Maintained
> -F: drivers/watchdog/ebc-c384_wdt.c
> -
> WINSYSTEMS WS16C48 GPIO DRIVER
> M: William Breathitt Gray <william.gray@...aro.org>
> L: linux-gpio@...r.kernel.org
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index f0872970daf9..7c443d71b01f 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -1085,16 +1085,6 @@ config ALIM7101_WDT
>
> Most people will say N.
>
> -config EBC_C384_WDT
> - tristate "WinSystems EBC-C384 Watchdog Timer"
> - depends on X86
> - select ISA_BUS_API
> - select WATCHDOG_CORE
> - help
> - Enables watchdog timer support for the watchdog timer on the
> - WinSystems EBC-C384 motherboard. The timeout may be configured via
> - the timeout module parameter.
> -
> config EXAR_WDT
> tristate "Exar Watchdog Timer"
> depends on X86
> diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
> index 9cbf6580f16c..3d12d4ddd5ea 100644
> --- a/drivers/watchdog/Makefile
> +++ b/drivers/watchdog/Makefile
> @@ -105,7 +105,6 @@ obj-$(CONFIG_ADVANTECH_WDT) += advantechwdt.o
> obj-$(CONFIG_ADVANTECH_EC_WDT) += advantech_ec_wdt.o
> obj-$(CONFIG_ALIM1535_WDT) += alim1535_wdt.o
> obj-$(CONFIG_ALIM7101_WDT) += alim7101_wdt.o
> -obj-$(CONFIG_EBC_C384_WDT) += ebc-c384_wdt.o
> obj-$(CONFIG_EXAR_WDT) += exar_wdt.o
> obj-$(CONFIG_F71808E_WDT) += f71808e_wdt.o
> obj-$(CONFIG_SP5100_TCO) += sp5100_tco.o
> diff --git a/drivers/watchdog/ebc-c384_wdt.c b/drivers/watchdog/ebc-c384_wdt.c
> deleted file mode 100644
> index 8ef4b0df3855..000000000000
> --- a/drivers/watchdog/ebc-c384_wdt.c
> +++ /dev/null
> @@ -1,142 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * Watchdog timer driver for the WinSystems EBC-C384
> - * Copyright (C) 2016 William Breathitt Gray
> - */
> -#include <linux/device.h>
> -#include <linux/dmi.h>
> -#include <linux/errno.h>
> -#include <linux/io.h>
> -#include <linux/ioport.h>
> -#include <linux/isa.h>
> -#include <linux/kernel.h>
> -#include <linux/module.h>
> -#include <linux/moduleparam.h>
> -#include <linux/types.h>
> -#include <linux/watchdog.h>
> -
> -#define MODULE_NAME "ebc-c384_wdt"
> -#define WATCHDOG_TIMEOUT 60
> -/*
> - * The timeout value in minutes must fit in a single byte when sent to the
> - * watchdog timer; the maximum timeout possible is 15300 (255 * 60) seconds.
> - */
> -#define WATCHDOG_MAX_TIMEOUT 15300
> -#define BASE_ADDR 0x564
> -#define ADDR_EXTENT 5
> -#define CFG_ADDR (BASE_ADDR + 1)
> -#define PET_ADDR (BASE_ADDR + 2)
> -
> -static bool nowayout = WATCHDOG_NOWAYOUT;
> -module_param(nowayout, bool, 0);
> -MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
> - __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
> -
> -static unsigned timeout;
> -module_param(timeout, uint, 0);
> -MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds (default="
> - __MODULE_STRING(WATCHDOG_TIMEOUT) ")");
> -
> -static int ebc_c384_wdt_start(struct watchdog_device *wdev)
> -{
> - unsigned t = wdev->timeout;
> -
> - /* resolution is in minutes for timeouts greater than 255 seconds */
> - if (t > 255)
> - t = DIV_ROUND_UP(t, 60);
> -
> - outb(t, PET_ADDR);
> -
> - return 0;
> -}
> -
> -static int ebc_c384_wdt_stop(struct watchdog_device *wdev)
> -{
> - outb(0x00, PET_ADDR);
> -
> - return 0;
> -}
> -
> -static int ebc_c384_wdt_set_timeout(struct watchdog_device *wdev, unsigned t)
> -{
> - /* resolution is in minutes for timeouts greater than 255 seconds */
> - if (t > 255) {
> - /* round second resolution up to minute granularity */
> - wdev->timeout = roundup(t, 60);
> -
> - /* set watchdog timer for minutes */
> - outb(0x00, CFG_ADDR);
> - } else {
> - wdev->timeout = t;
> -
> - /* set watchdog timer for seconds */
> - outb(0x80, CFG_ADDR);
> - }
> -
> - return 0;
> -}
> -
> -static const struct watchdog_ops ebc_c384_wdt_ops = {
> - .start = ebc_c384_wdt_start,
> - .stop = ebc_c384_wdt_stop,
> - .set_timeout = ebc_c384_wdt_set_timeout
> -};
> -
> -static const struct watchdog_info ebc_c384_wdt_info = {
> - .options = WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE | WDIOF_SETTIMEOUT,
> - .identity = MODULE_NAME
> -};
> -
> -static int ebc_c384_wdt_probe(struct device *dev, unsigned int id)
> -{
> - struct watchdog_device *wdd;
> -
> - if (!devm_request_region(dev, BASE_ADDR, ADDR_EXTENT, dev_name(dev))) {
> - dev_err(dev, "Unable to lock port addresses (0x%X-0x%X)\n",
> - BASE_ADDR, BASE_ADDR + ADDR_EXTENT);
> - return -EBUSY;
> - }
> -
> - wdd = devm_kzalloc(dev, sizeof(*wdd), GFP_KERNEL);
> - if (!wdd)
> - return -ENOMEM;
> -
> - wdd->info = &ebc_c384_wdt_info;
> - wdd->ops = &ebc_c384_wdt_ops;
> - wdd->timeout = WATCHDOG_TIMEOUT;
> - wdd->min_timeout = 1;
> - wdd->max_timeout = WATCHDOG_MAX_TIMEOUT;
> -
> - watchdog_set_nowayout(wdd, nowayout);
> - watchdog_init_timeout(wdd, timeout, dev);
> -
> - return devm_watchdog_register_device(dev, wdd);
> -}
> -
> -static struct isa_driver ebc_c384_wdt_driver = {
> - .probe = ebc_c384_wdt_probe,
> - .driver = {
> - .name = MODULE_NAME
> - },
> -};
> -
> -static int __init ebc_c384_wdt_init(void)
> -{
> - if (!dmi_match(DMI_BOARD_NAME, "EBC-C384 SBC"))
> - return -ENODEV;
> -
> - return isa_register_driver(&ebc_c384_wdt_driver, 1);
> -}
> -
> -static void __exit ebc_c384_wdt_exit(void)
> -{
> - isa_unregister_driver(&ebc_c384_wdt_driver);
> -}
> -
> -module_init(ebc_c384_wdt_init);
> -module_exit(ebc_c384_wdt_exit);
> -
> -MODULE_AUTHOR("William Breathitt Gray <vilhelm.gray@...il.com>");
> -MODULE_DESCRIPTION("WinSystems EBC-C384 watchdog timer driver");
> -MODULE_LICENSE("GPL v2");
> -MODULE_ALIAS("isa:" MODULE_NAME);
>
> base-commit: 09a9639e56c01c7a00d6c0ca63f4c7c41abe075d
Powered by blists - more mailing lists