Re: [PATCH v3] watchdog: Add watchdog timer support for the WinSystems EBC-C384

From: Guenter Roeck
Date: Mon Jan 25 2016 - 15:42:16 EST

On 01/25/2016 11:28 AM, One Thousand Gnomes wrote:
+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) {
+ /* truncate second resolution to minute resolution */
+ t /= 60;
+ wdev->timeout = t * 60;
+ /* set watchdog timer for minutes */
+ outb(0x00, CFG_ADDR);

If ask for 299 seconds surely I should get 300 not 240 ?
(Whether to round off or round up is an interesting question for the
middle range - does it go off early or late - I'd have said late but...)

Matter of endless discussion. Some argue that the value should be rounded
up, some argue that it should be rounded down, some argue that it should
be rounded to the closest match. Each camp has its own valid arguments.
I usually leave it up to the driver's author to decide, with a slight
preference to never select a value larger than requested.

+static int __init ebc_c384_wdt_init(void)
+ int err;
+ if (!dmi_match(DMI_BOARD_NAME, "EBC-C384 SBC"))
+ return -ENODEV;

Is there no ACPI entry for it ?

Same here. As long as the board is identified, I tend to leave it up
to the driver author to decide _how_ to identify it.

Only question for me would be if the watchdog timer is implemented
in a Super-IO chip, and if so, if it would be possible to use the chip
identification instead of a DMI (or ACPI) entry to instantiate the driver.