mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-09 21:41:16 -04:00
can: kvaser_usb: hydra: Add struct for Tx ACK commands
Add, struct kvaser_cmd_tx_ack, for standard Tx ACK commands. Expand kvaser_usb_hydra_ktime_from_cmd() to extract timestamps from both standard and extended Tx ACK commands. Unsupported commands are silently ignored, and 0 is returned. Signed-off-by: Jimmy Assarsson <extja@kvaser.com> Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr> Link: https://lore.kernel.org/all/20240701154936.92633-4-extja@kvaser.com Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
committed by
Marc Kleine-Budde
parent
7cb0450c1d
commit
0512cc691a
@@ -261,6 +261,15 @@ struct kvaser_cmd_tx_can {
|
||||
u8 reserved[11];
|
||||
} __packed;
|
||||
|
||||
struct kvaser_cmd_tx_ack {
|
||||
__le32 id;
|
||||
u8 data[8];
|
||||
u8 dlc;
|
||||
u8 flags;
|
||||
__le16 timestamp[3];
|
||||
u8 reserved0[8];
|
||||
} __packed;
|
||||
|
||||
struct kvaser_cmd_header {
|
||||
u8 cmd_no;
|
||||
/* The destination HE address is stored in 0..5 of he_addr.
|
||||
@@ -297,6 +306,7 @@ struct kvaser_cmd {
|
||||
|
||||
struct kvaser_cmd_rx_can rx_can;
|
||||
struct kvaser_cmd_tx_can tx_can;
|
||||
struct kvaser_cmd_tx_ack tx_ack;
|
||||
} __packed;
|
||||
} __packed;
|
||||
|
||||
@@ -530,9 +540,14 @@ static ktime_t kvaser_usb_hydra_ktime_from_cmd(const struct kvaser_usb_dev_cfg *
|
||||
if (cmd->header.cmd_no == CMD_EXTENDED) {
|
||||
struct kvaser_cmd_ext *cmd_ext = (struct kvaser_cmd_ext *)cmd;
|
||||
|
||||
hwtstamp = kvaser_usb_timestamp64_to_ktime(cfg, cmd_ext->rx_can.timestamp);
|
||||
} else {
|
||||
if (cmd_ext->cmd_no_ext == CMD_RX_MESSAGE_FD)
|
||||
hwtstamp = kvaser_usb_timestamp64_to_ktime(cfg, cmd_ext->rx_can.timestamp);
|
||||
else if (cmd_ext->cmd_no_ext == CMD_TX_ACKNOWLEDGE_FD)
|
||||
hwtstamp = kvaser_usb_timestamp64_to_ktime(cfg, cmd_ext->tx_ack.timestamp);
|
||||
} else if (cmd->header.cmd_no == CMD_RX_MESSAGE) {
|
||||
hwtstamp = kvaser_usb_timestamp48_to_ktime(cfg, cmd->rx_can.timestamp);
|
||||
} else if (cmd->header.cmd_no == CMD_TX_ACKNOWLEDGE) {
|
||||
hwtstamp = kvaser_usb_timestamp48_to_ktime(cfg, cmd->tx_ack.timestamp);
|
||||
}
|
||||
|
||||
return hwtstamp;
|
||||
|
||||
Reference in New Issue
Block a user