Skip to content

Commit c644c96

Browse files
Jimmy Assarssonmarckleinebudde
authored andcommitted
can: kvaser_usb: leaf: Store MSB of timestamp
Store MSB of timestamp, provided from the device via the clock overflow event, for usbcan devices (M16C). Signed-off-by: Jimmy Assarsson <[email protected]> Reviewed-by: Vincent Mailhol <[email protected]> Link: https://lore.kernel.org/all/[email protected] Signed-off-by: Marc Kleine-Budde <[email protected]>
1 parent a7cfb22 commit c644c96

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

drivers/net/can/usb/kvaser_usb/kvaser_usb.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ struct kvaser_usb_dev_card_data {
7070
u32 ctrlmode_supported;
7171
u32 capabilities;
7272
struct kvaser_usb_dev_card_data_hydra hydra;
73+
u32 usbcan_timestamp_msb;
7374
};
7475

7576
/* Context for an outstanding, not yet ACKed, transmission */

drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@
119119
/* Extended CAN identifier flag */
120120
#define KVASER_EXTENDED_FRAME BIT(31)
121121

122+
/* USBCanII timestamp */
123+
#define KVASER_USB_USBCAN_CLK_OVERFLOW_MASK GENMASK(31, 16)
124+
122125
struct kvaser_cmd_simple {
123126
u8 tid;
124127
u8 channel;
@@ -418,7 +421,6 @@ static const u8 kvaser_usb_leaf_cmd_sizes_usbcan[] = {
418421
[CMD_CHIP_STATE_EVENT] = kvaser_fsize(u.usbcan.chip_state_event),
419422
[CMD_CAN_ERROR_EVENT] = kvaser_fsize(u.usbcan.can_error_event),
420423
[CMD_ERROR_EVENT] = kvaser_fsize(u.usbcan.error_event),
421-
/* ignored events: */
422424
[CMD_USBCAN_CLOCK_OVERFLOW_EVENT] = kvaser_fsize(u.usbcan.clk_overflow_event),
423425
};
424426

@@ -1573,7 +1575,7 @@ static void kvaser_usb_leaf_get_busparams_reply(const struct kvaser_usb *dev,
15731575
complete(&priv->get_busparams_comp);
15741576
}
15751577

1576-
static void kvaser_usb_leaf_handle_command(const struct kvaser_usb *dev,
1578+
static void kvaser_usb_leaf_handle_command(struct kvaser_usb *dev,
15771579
const struct kvaser_cmd *cmd)
15781580
{
15791581
if (kvaser_usb_leaf_verify_size(dev, cmd) < 0)
@@ -1619,12 +1621,15 @@ static void kvaser_usb_leaf_handle_command(const struct kvaser_usb *dev,
16191621
kvaser_usb_leaf_get_busparams_reply(dev, cmd);
16201622
break;
16211623

1622-
/* Ignored commands */
16231624
case CMD_USBCAN_CLOCK_OVERFLOW_EVENT:
16241625
if (dev->driver_info->family != KVASER_USBCAN)
16251626
goto warn;
1627+
dev->card_data.usbcan_timestamp_msb =
1628+
le32_to_cpu(cmd->u.usbcan.clk_overflow_event.time) &
1629+
KVASER_USB_USBCAN_CLK_OVERFLOW_MASK;
16261630
break;
16271631

1632+
/* Ignored commands */
16281633
case CMD_FLUSH_QUEUE_REPLY:
16291634
if (dev->driver_info->family != KVASER_LEAF)
16301635
goto warn;

0 commit comments

Comments
 (0)