diff mbox series

[v2,1/2] watchdog: report fw_version in sysfs

Message ID 20221216-watchdog-sysfs-v2-1-6189311103a9@weissschuh.net (mailing list archive)
State Accepted
Headers show
Series watchdog: report all watchdog_ident information via sysfs | expand

Commit Message

Thomas Weißschuh Dec. 19, 2022, 9:30 p.m. UTC
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>
---
 Documentation/ABI/testing/sysfs-class-watchdog |  7 +++++++
 drivers/watchdog/watchdog_dev.c                | 10 ++++++++++
 2 files changed, 17 insertions(+)

Comments

Guenter Roeck Jan. 31, 2023, 5:43 p.m. UTC | #1
On Mon, Dec 19, 2022 at 09:30:39PM +0000, Thomas Weißschuh wrote:
> 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>

> ---
>  Documentation/ABI/testing/sysfs-class-watchdog |  7 +++++++
>  drivers/watchdog/watchdog_dev.c                | 10 ++++++++++
>  2 files changed, 17 insertions(+)
> 
> diff --git a/Documentation/ABI/testing/sysfs-class-watchdog b/Documentation/ABI/testing/sysfs-class-watchdog
> index 585caecda3a5..27c000238fe4 100644
> --- a/Documentation/ABI/testing/sysfs-class-watchdog
> +++ b/Documentation/ABI/testing/sysfs-class-watchdog
> @@ -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>
> diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c
> index 55574ed42504..7feeda02a531 100644
> --- a/drivers/watchdog/watchdog_dev.c
> +++ b/drivers/watchdog/watchdog_dev.c
> @@ -546,6 +546,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)
>  {
> @@ -617,6 +626,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,
diff mbox series

Patch

diff --git a/Documentation/ABI/testing/sysfs-class-watchdog b/Documentation/ABI/testing/sysfs-class-watchdog
index 585caecda3a5..27c000238fe4 100644
--- a/Documentation/ABI/testing/sysfs-class-watchdog
+++ b/Documentation/ABI/testing/sysfs-class-watchdog
@@ -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>
diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c
index 55574ed42504..7feeda02a531 100644
--- a/drivers/watchdog/watchdog_dev.c
+++ b/drivers/watchdog/watchdog_dev.c
@@ -546,6 +546,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)
 {
@@ -617,6 +626,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,