can: kvaser_usb: Add struct kvaser_usb_busparams
[ Upstream commit 00e5786177649c1e3110f9454fdd34e336597265 ] Add struct kvaser_usb_busparams containing the busparameters used in CMD_{SET,GET}_BUSPARAMS* commands. Tested-by: Anssi Hannula <anssi.hannula@bitwise.fi> Signed-off-by: Jimmy Assarsson <extja@kvaser.com> Link: https://lore.kernel.org/all/20221010185237.319219-11-extja@kvaser.com Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Stable-dep-of: 39d3df6b0ea8 ("can: kvaser_usb: Compare requested bittiming parameters with actual parameters in do_set_{,data}_bittiming") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
f3d20de76f
commit
7482f95315
@ -76,6 +76,14 @@ struct kvaser_usb_tx_urb_context {
|
|||||||
int dlc;
|
int dlc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct kvaser_usb_busparams {
|
||||||
|
__le32 bitrate;
|
||||||
|
u8 tseg1;
|
||||||
|
u8 tseg2;
|
||||||
|
u8 sjw;
|
||||||
|
u8 nsamples;
|
||||||
|
} __packed;
|
||||||
|
|
||||||
struct kvaser_usb {
|
struct kvaser_usb {
|
||||||
struct usb_device *udev;
|
struct usb_device *udev;
|
||||||
struct usb_interface *intf;
|
struct usb_interface *intf;
|
||||||
|
@ -193,17 +193,9 @@ struct kvaser_cmd_chip_state_event {
|
|||||||
#define KVASER_USB_HYDRA_BUS_MODE_CANFD_ISO 0x01
|
#define KVASER_USB_HYDRA_BUS_MODE_CANFD_ISO 0x01
|
||||||
#define KVASER_USB_HYDRA_BUS_MODE_NONISO 0x02
|
#define KVASER_USB_HYDRA_BUS_MODE_NONISO 0x02
|
||||||
struct kvaser_cmd_set_busparams {
|
struct kvaser_cmd_set_busparams {
|
||||||
__le32 bitrate;
|
struct kvaser_usb_busparams busparams_arb;
|
||||||
u8 tseg1;
|
|
||||||
u8 tseg2;
|
|
||||||
u8 sjw;
|
|
||||||
u8 nsamples;
|
|
||||||
u8 reserved0[4];
|
u8 reserved0[4];
|
||||||
__le32 bitrate_d;
|
struct kvaser_usb_busparams busparams_data;
|
||||||
u8 tseg1_d;
|
|
||||||
u8 tseg2_d;
|
|
||||||
u8 sjw_d;
|
|
||||||
u8 nsamples_d;
|
|
||||||
u8 canfd_mode;
|
u8 canfd_mode;
|
||||||
u8 reserved1[7];
|
u8 reserved1[7];
|
||||||
} __packed;
|
} __packed;
|
||||||
@ -1515,11 +1507,11 @@ static int kvaser_usb_hydra_set_bittiming(struct net_device *netdev)
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
cmd->header.cmd_no = CMD_SET_BUSPARAMS_REQ;
|
cmd->header.cmd_no = CMD_SET_BUSPARAMS_REQ;
|
||||||
cmd->set_busparams_req.bitrate = cpu_to_le32(bt->bitrate);
|
cmd->set_busparams_req.busparams_arb.bitrate = cpu_to_le32(bt->bitrate);
|
||||||
cmd->set_busparams_req.sjw = (u8)sjw;
|
cmd->set_busparams_req.busparams_arb.sjw = (u8)sjw;
|
||||||
cmd->set_busparams_req.tseg1 = (u8)tseg1;
|
cmd->set_busparams_req.busparams_arb.tseg1 = (u8)tseg1;
|
||||||
cmd->set_busparams_req.tseg2 = (u8)tseg2;
|
cmd->set_busparams_req.busparams_arb.tseg2 = (u8)tseg2;
|
||||||
cmd->set_busparams_req.nsamples = 1;
|
cmd->set_busparams_req.busparams_arb.nsamples = 1;
|
||||||
|
|
||||||
kvaser_usb_hydra_set_cmd_dest_he
|
kvaser_usb_hydra_set_cmd_dest_he
|
||||||
(cmd, dev->card_data.hydra.channel_to_he[priv->channel]);
|
(cmd, dev->card_data.hydra.channel_to_he[priv->channel]);
|
||||||
@ -1549,11 +1541,11 @@ static int kvaser_usb_hydra_set_data_bittiming(struct net_device *netdev)
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
cmd->header.cmd_no = CMD_SET_BUSPARAMS_FD_REQ;
|
cmd->header.cmd_no = CMD_SET_BUSPARAMS_FD_REQ;
|
||||||
cmd->set_busparams_req.bitrate_d = cpu_to_le32(dbt->bitrate);
|
cmd->set_busparams_req.busparams_data.bitrate = cpu_to_le32(dbt->bitrate);
|
||||||
cmd->set_busparams_req.sjw_d = (u8)sjw;
|
cmd->set_busparams_req.busparams_data.sjw = (u8)sjw;
|
||||||
cmd->set_busparams_req.tseg1_d = (u8)tseg1;
|
cmd->set_busparams_req.busparams_data.tseg1 = (u8)tseg1;
|
||||||
cmd->set_busparams_req.tseg2_d = (u8)tseg2;
|
cmd->set_busparams_req.busparams_data.tseg2 = (u8)tseg2;
|
||||||
cmd->set_busparams_req.nsamples_d = 1;
|
cmd->set_busparams_req.busparams_data.nsamples = 1;
|
||||||
|
|
||||||
if (priv->can.ctrlmode & CAN_CTRLMODE_FD) {
|
if (priv->can.ctrlmode & CAN_CTRLMODE_FD) {
|
||||||
if (priv->can.ctrlmode & CAN_CTRLMODE_FD_NON_ISO)
|
if (priv->can.ctrlmode & CAN_CTRLMODE_FD_NON_ISO)
|
||||||
|
@ -163,11 +163,7 @@ struct usbcan_cmd_softinfo {
|
|||||||
struct kvaser_cmd_busparams {
|
struct kvaser_cmd_busparams {
|
||||||
u8 tid;
|
u8 tid;
|
||||||
u8 channel;
|
u8 channel;
|
||||||
__le32 bitrate;
|
struct kvaser_usb_busparams busparams;
|
||||||
u8 tseg1;
|
|
||||||
u8 tseg2;
|
|
||||||
u8 sjw;
|
|
||||||
u8 no_samp;
|
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
struct kvaser_cmd_tx_can {
|
struct kvaser_cmd_tx_can {
|
||||||
@ -1703,15 +1699,15 @@ static int kvaser_usb_leaf_set_bittiming(struct net_device *netdev)
|
|||||||
cmd->len = CMD_HEADER_LEN + sizeof(struct kvaser_cmd_busparams);
|
cmd->len = CMD_HEADER_LEN + sizeof(struct kvaser_cmd_busparams);
|
||||||
cmd->u.busparams.channel = priv->channel;
|
cmd->u.busparams.channel = priv->channel;
|
||||||
cmd->u.busparams.tid = 0xff;
|
cmd->u.busparams.tid = 0xff;
|
||||||
cmd->u.busparams.bitrate = cpu_to_le32(bt->bitrate);
|
cmd->u.busparams.busparams.bitrate = cpu_to_le32(bt->bitrate);
|
||||||
cmd->u.busparams.sjw = bt->sjw;
|
cmd->u.busparams.busparams.sjw = bt->sjw;
|
||||||
cmd->u.busparams.tseg1 = bt->prop_seg + bt->phase_seg1;
|
cmd->u.busparams.busparams.tseg1 = bt->prop_seg + bt->phase_seg1;
|
||||||
cmd->u.busparams.tseg2 = bt->phase_seg2;
|
cmd->u.busparams.busparams.tseg2 = bt->phase_seg2;
|
||||||
|
|
||||||
if (priv->can.ctrlmode & CAN_CTRLMODE_3_SAMPLES)
|
if (priv->can.ctrlmode & CAN_CTRLMODE_3_SAMPLES)
|
||||||
cmd->u.busparams.no_samp = 3;
|
cmd->u.busparams.busparams.nsamples = 3;
|
||||||
else
|
else
|
||||||
cmd->u.busparams.no_samp = 1;
|
cmd->u.busparams.busparams.nsamples = 1;
|
||||||
|
|
||||||
rc = kvaser_usb_send_cmd(dev, cmd, cmd->len);
|
rc = kvaser_usb_send_cmd(dev, cmd, cmd->len);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user