mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 04:56:13 +02:00
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 <extja@kvaser.com> Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr> Link: https://lore.kernel.org/all/20240701154936.92633-12-extja@kvaser.com Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
a7cfb2200d
commit
c644c9698d
|
|
@ -70,6 +70,7 @@ struct kvaser_usb_dev_card_data {
|
|||
u32 ctrlmode_supported;
|
||||
u32 capabilities;
|
||||
struct kvaser_usb_dev_card_data_hydra hydra;
|
||||
u32 usbcan_timestamp_msb;
|
||||
};
|
||||
|
||||
/* Context for an outstanding, not yet ACKed, transmission */
|
||||
|
|
|
|||
|
|
@ -119,6 +119,9 @@
|
|||
/* Extended CAN identifier flag */
|
||||
#define KVASER_EXTENDED_FRAME BIT(31)
|
||||
|
||||
/* USBCanII timestamp */
|
||||
#define KVASER_USB_USBCAN_CLK_OVERFLOW_MASK GENMASK(31, 16)
|
||||
|
||||
struct kvaser_cmd_simple {
|
||||
u8 tid;
|
||||
u8 channel;
|
||||
|
|
@ -418,7 +421,6 @@ static const u8 kvaser_usb_leaf_cmd_sizes_usbcan[] = {
|
|||
[CMD_CHIP_STATE_EVENT] = kvaser_fsize(u.usbcan.chip_state_event),
|
||||
[CMD_CAN_ERROR_EVENT] = kvaser_fsize(u.usbcan.can_error_event),
|
||||
[CMD_ERROR_EVENT] = kvaser_fsize(u.usbcan.error_event),
|
||||
/* ignored events: */
|
||||
[CMD_USBCAN_CLOCK_OVERFLOW_EVENT] = kvaser_fsize(u.usbcan.clk_overflow_event),
|
||||
};
|
||||
|
||||
|
|
@ -1573,7 +1575,7 @@ static void kvaser_usb_leaf_get_busparams_reply(const struct kvaser_usb *dev,
|
|||
complete(&priv->get_busparams_comp);
|
||||
}
|
||||
|
||||
static void kvaser_usb_leaf_handle_command(const struct kvaser_usb *dev,
|
||||
static void kvaser_usb_leaf_handle_command(struct kvaser_usb *dev,
|
||||
const struct kvaser_cmd *cmd)
|
||||
{
|
||||
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,
|
|||
kvaser_usb_leaf_get_busparams_reply(dev, cmd);
|
||||
break;
|
||||
|
||||
/* Ignored commands */
|
||||
case CMD_USBCAN_CLOCK_OVERFLOW_EVENT:
|
||||
if (dev->driver_info->family != KVASER_USBCAN)
|
||||
goto warn;
|
||||
dev->card_data.usbcan_timestamp_msb =
|
||||
le32_to_cpu(cmd->u.usbcan.clk_overflow_event.time) &
|
||||
KVASER_USB_USBCAN_CLK_OVERFLOW_MASK;
|
||||
break;
|
||||
|
||||
/* Ignored commands */
|
||||
case CMD_FLUSH_QUEUE_REPLY:
|
||||
if (dev->driver_info->family != KVASER_LEAF)
|
||||
goto warn;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user