watchdog: report fw_version in sysfs
authorThomas Weißschuh <linux@weissschuh.net>
Mon, 19 Dec 2022 21:30:39 +0000 (21:30 +0000)
committerWim Van Sebroeck <wim@linux-watchdog.org>
Sat, 18 Feb 2023 14:11:40 +0000 (15:11 +0100)
This synchronizes the information reported by ioctl and sysfs.
The mismatch is confusing because "wdctl" from util-linux uses the ioctl
when used with root privileges and sysfs without.

The file is called "fw_version" instead of "firmware_version" as
"firmware_version" is already used as custom attribute by single drivers.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20221216-watchdog-sysfs-v2-1-6189311103a9@weissschuh.net
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
Documentation/ABI/testing/sysfs-class-watchdog
drivers/watchdog/watchdog_dev.c

index 585caecda3a5fc3a533360eea7ac95589b9c2545..27c000238fe446a4366603c282fd6b8b04eb8fc7 100644 (file)
@@ -6,6 +6,13 @@ Description:
                device at boot. It is equivalent to WDIOC_GETBOOTSTATUS of
                ioctl interface.
 
+What:          /sys/class/watchdog/watchdogn/fw_version
+Date:          April 2023
+Contact:       Thomas Weißschuh
+Description:
+               It is a read only file. It contains firmware version of
+               watchdog device.
+
 What:          /sys/class/watchdog/watchdogn/identity
 Date:          August 2015
 Contact:       Wim Van Sebroeck <wim@iguana.be>
index 455a9a572d7bb0aef3b4a67a3b30cb50c1437d55..bd5612fa219029ccbe381c6f1e3a9bdf9bac433a 100644 (file)
@@ -547,6 +547,15 @@ static ssize_t pretimeout_show(struct device *dev,
 }
 static DEVICE_ATTR_RO(pretimeout);
 
+static ssize_t fw_version_show(struct device *dev, struct device_attribute *attr,
+                              char *buf)
+{
+       struct watchdog_device *wdd = dev_get_drvdata(dev);
+
+       return sysfs_emit(buf, "%d\n", wdd->info->firmware_version);
+}
+static DEVICE_ATTR_RO(fw_version);
+
 static ssize_t identity_show(struct device *dev, struct device_attribute *attr,
                                char *buf)
 {
@@ -618,6 +627,7 @@ static umode_t wdt_is_visible(struct kobject *kobj, struct attribute *attr,
 }
 static struct attribute *wdt_attrs[] = {
        &dev_attr_state.attr,
+       &dev_attr_fw_version.attr,
        &dev_attr_identity.attr,
        &dev_attr_timeout.attr,
        &dev_attr_min_timeout.attr,