mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
can: kvaser_usb: Expose device information via devlink info_get()
Expose device information via devlink info_get():
* Serial number
* Firmware version
* Hardware revision
* EAN (product number)
Example output:
$ devlink dev
usb/1-1.2:1.0
$ devlink dev info
usb/1-1.2:1.0:
driver kvaser_usb
serial_number 1020
versions:
fixed:
board.rev 1
board.id 7330130009653
running:
fw 3.22.527
Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Signed-off-by: Jimmy Assarsson <extja@kvaser.com>
Link: https://patch.msgid.link/20250725123452.41-10-extja@kvaser.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
9505a83fc4
commit
8720aed90c
|
|
@ -7,5 +7,56 @@
|
|||
|
||||
#include <net/devlink.h>
|
||||
|
||||
#define KVASER_USB_EAN_MSB 0x00073301
|
||||
|
||||
static int kvaser_usb_devlink_info_get(struct devlink *devlink,
|
||||
struct devlink_info_req *req,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct kvaser_usb *dev = devlink_priv(devlink);
|
||||
char buf[] = "73301XXXXXXXXXX";
|
||||
int ret;
|
||||
|
||||
if (dev->serial_number) {
|
||||
snprintf(buf, sizeof(buf), "%u", dev->serial_number);
|
||||
ret = devlink_info_serial_number_put(req, buf);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (dev->fw_version.major) {
|
||||
snprintf(buf, sizeof(buf), "%u.%u.%u",
|
||||
dev->fw_version.major,
|
||||
dev->fw_version.minor,
|
||||
dev->fw_version.build);
|
||||
ret = devlink_info_version_running_put(req,
|
||||
DEVLINK_INFO_VERSION_GENERIC_FW,
|
||||
buf);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (dev->hw_revision) {
|
||||
snprintf(buf, sizeof(buf), "%u", dev->hw_revision);
|
||||
ret = devlink_info_version_fixed_put(req,
|
||||
DEVLINK_INFO_VERSION_GENERIC_BOARD_REV,
|
||||
buf);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (dev->ean[1] == KVASER_USB_EAN_MSB) {
|
||||
snprintf(buf, sizeof(buf), "%x%08x", dev->ean[1], dev->ean[0]);
|
||||
ret = devlink_info_version_fixed_put(req,
|
||||
DEVLINK_INFO_VERSION_GENERIC_BOARD_ID,
|
||||
buf);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
const struct devlink_ops kvaser_usb_devlink_ops = {
|
||||
.info_get = kvaser_usb_devlink_info_get,
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user