]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
can: kvaser_usb: Store additional device information
authorJimmy Assarsson <extja@kvaser.com>
Fri, 25 Jul 2025 12:34:48 +0000 (14:34 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Fri, 25 Jul 2025 16:01:20 +0000 (18:01 +0200)
Store additional device information; EAN (product number), serial_number
and hardware revision.

Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Signed-off-by: Jimmy Assarsson <extja@kvaser.com>
Link: https://patch.msgid.link/20250725123452.41-8-extja@kvaser.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/usb/kvaser_usb/kvaser_usb.h
drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c
drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c

index a36d86494113c13a4995dfe0bd06386b1b13fb21..35c2cf3d44864ac2c2810dc01b46ee631517540b 100644 (file)
@@ -111,7 +111,10 @@ struct kvaser_usb {
        struct usb_endpoint_descriptor *bulk_in, *bulk_out;
        struct usb_anchor rx_submitted;
 
+       u32 ean[2];
+       u32 serial_number;
        struct kvaser_usb_fw_version fw_version;
+       u8 hw_revision;
        unsigned int nchannels;
        /* @max_tx_urbs: Firmware-reported maximum number of outstanding,
         * not yet ACKed, transmissions on this device. This value is
index 388ebf2b1a5b113d9173184372ae8400069acdd0..a59f20dad692af57e8454f20c1452e8a7509fbcd 100644 (file)
@@ -114,7 +114,7 @@ struct kvaser_cmd_card_info {
        __le32 clock_res;
        __le32 mfg_date;
        __le32 ean[2];
-       u8 hw_version;
+       u8 hw_revision;
        u8 usb_mode;
        u8 hw_type;
        u8 reserved0;
@@ -1918,6 +1918,10 @@ static int kvaser_usb_hydra_get_card_info(struct kvaser_usb *dev)
        err = kvaser_usb_hydra_wait_cmd(dev, CMD_GET_CARD_INFO_RESP, &cmd);
        if (err)
                return err;
+       dev->ean[1] = le32_to_cpu(cmd.card_info.ean[1]);
+       dev->ean[0] = le32_to_cpu(cmd.card_info.ean[0]);
+       dev->serial_number = le32_to_cpu(cmd.card_info.serial_number);
+       dev->hw_revision = cmd.card_info.hw_revision;
 
        dev->nchannels = cmd.card_info.nchannels;
        if (dev->nchannels > KVASER_USB_MAX_NET_DEVICES)
index b4f5d4fba6304839fe23896b6dfa60fc05d4bb07..c29828a94ad0ee5af7d4e0a0596cdead0fe3c821 100644 (file)
@@ -138,7 +138,7 @@ struct kvaser_cmd_cardinfo {
        __le32 padding0;
        __le32 clock_resolution;
        __le32 mfgdate;
-       u8 ean[8];
+       __le32 ean[2];
        u8 hw_revision;
        union {
                struct {
@@ -854,6 +854,10 @@ static int kvaser_usb_leaf_get_card_info(struct kvaser_usb *dev)
            (dev->driver_info->family == KVASER_USBCAN &&
             dev->nchannels > MAX_USBCAN_NET_DEVICES))
                return -EINVAL;
+       dev->ean[1] = le32_to_cpu(cmd.u.cardinfo.ean[1]);
+       dev->ean[0] = le32_to_cpu(cmd.u.cardinfo.ean[0]);
+       dev->serial_number = le32_to_cpu(cmd.u.cardinfo.serial_number);
+       dev->hw_revision = cmd.u.cardinfo.hw_revision;
 
        return 0;
 }