|
119 | 119 | /* Extended CAN identifier flag */
|
120 | 120 | #define KVASER_EXTENDED_FRAME BIT(31)
|
121 | 121 |
|
| 122 | +/* USBCanII timestamp */ |
| 123 | +#define KVASER_USB_USBCAN_CLK_OVERFLOW_MASK GENMASK(31, 16) |
| 124 | + |
122 | 125 | struct kvaser_cmd_simple {
|
123 | 126 | u8 tid;
|
124 | 127 | u8 channel;
|
@@ -418,7 +421,6 @@ static const u8 kvaser_usb_leaf_cmd_sizes_usbcan[] = {
|
418 | 421 | [CMD_CHIP_STATE_EVENT] = kvaser_fsize(u.usbcan.chip_state_event),
|
419 | 422 | [CMD_CAN_ERROR_EVENT] = kvaser_fsize(u.usbcan.can_error_event),
|
420 | 423 | [CMD_ERROR_EVENT] = kvaser_fsize(u.usbcan.error_event),
|
421 |
| - /* ignored events: */ |
422 | 424 | [CMD_USBCAN_CLOCK_OVERFLOW_EVENT] = kvaser_fsize(u.usbcan.clk_overflow_event),
|
423 | 425 | };
|
424 | 426 |
|
@@ -1573,7 +1575,7 @@ static void kvaser_usb_leaf_get_busparams_reply(const struct kvaser_usb *dev,
|
1573 | 1575 | complete(&priv->get_busparams_comp);
|
1574 | 1576 | }
|
1575 | 1577 |
|
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, |
1577 | 1579 | const struct kvaser_cmd *cmd)
|
1578 | 1580 | {
|
1579 | 1581 | 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,
|
1619 | 1621 | kvaser_usb_leaf_get_busparams_reply(dev, cmd);
|
1620 | 1622 | break;
|
1621 | 1623 |
|
1622 |
| - /* Ignored commands */ |
1623 | 1624 | case CMD_USBCAN_CLOCK_OVERFLOW_EVENT:
|
1624 | 1625 | if (dev->driver_info->family != KVASER_USBCAN)
|
1625 | 1626 | 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; |
1626 | 1630 | break;
|
1627 | 1631 |
|
| 1632 | + /* Ignored commands */ |
1628 | 1633 | case CMD_FLUSH_QUEUE_REPLY:
|
1629 | 1634 | if (dev->driver_info->family != KVASER_LEAF)
|
1630 | 1635 | goto warn;
|
|
0 commit comments