can: kvaser_usb: Add struct kvaser_usb_busparams
authorJimmy Assarsson <extja@kvaser.com>
Mon, 10 Oct 2022 18:52:36 +0000 (20:52 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:32:05 +0000 (13:32 +0100)
[ 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>
drivers/net/can/usb/kvaser_usb/kvaser_usb.h
drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c
drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c

index d9c5dd5..778b61c 100644 (file)
@@ -76,6 +76,14 @@ struct kvaser_usb_tx_urb_context {
        u32 echo_index;
 };
 
+struct kvaser_usb_busparams {
+       __le32 bitrate;
+       u8 tseg1;
+       u8 tseg2;
+       u8 sjw;
+       u8 nsamples;
+} __packed;
+
 struct kvaser_usb {
        struct usb_device *udev;
        struct usb_interface *intf;
index 66f672e..3319af1 100644 (file)
@@ -196,17 +196,9 @@ struct kvaser_cmd_chip_state_event {
 #define KVASER_USB_HYDRA_BUS_MODE_CANFD_ISO    0x01
 #define KVASER_USB_HYDRA_BUS_MODE_NONISO       0x02
 struct kvaser_cmd_set_busparams {
-       __le32 bitrate;
-       u8 tseg1;
-       u8 tseg2;
-       u8 sjw;
-       u8 nsamples;
+       struct kvaser_usb_busparams busparams_arb;
        u8 reserved0[4];
-       __le32 bitrate_d;
-       u8 tseg1_d;
-       u8 tseg2_d;
-       u8 sjw_d;
-       u8 nsamples_d;
+       struct kvaser_usb_busparams busparams_data;
        u8 canfd_mode;
        u8 reserved1[7];
 } __packed;
@@ -1538,11 +1530,11 @@ static int kvaser_usb_hydra_set_bittiming(struct net_device *netdev)
                return -ENOMEM;
 
        cmd->header.cmd_no = CMD_SET_BUSPARAMS_REQ;
-       cmd->set_busparams_req.bitrate = cpu_to_le32(bt->bitrate);
-       cmd->set_busparams_req.sjw = (u8)sjw;
-       cmd->set_busparams_req.tseg1 = (u8)tseg1;
-       cmd->set_busparams_req.tseg2 = (u8)tseg2;
-       cmd->set_busparams_req.nsamples = 1;
+       cmd->set_busparams_req.busparams_arb.bitrate = cpu_to_le32(bt->bitrate);
+       cmd->set_busparams_req.busparams_arb.sjw = (u8)sjw;
+       cmd->set_busparams_req.busparams_arb.tseg1 = (u8)tseg1;
+       cmd->set_busparams_req.busparams_arb.tseg2 = (u8)tseg2;
+       cmd->set_busparams_req.busparams_arb.nsamples = 1;
 
        kvaser_usb_hydra_set_cmd_dest_he
                (cmd, dev->card_data.hydra.channel_to_he[priv->channel]);
@@ -1572,11 +1564,11 @@ static int kvaser_usb_hydra_set_data_bittiming(struct net_device *netdev)
                return -ENOMEM;
 
        cmd->header.cmd_no = CMD_SET_BUSPARAMS_FD_REQ;
-       cmd->set_busparams_req.bitrate_d = cpu_to_le32(dbt->bitrate);
-       cmd->set_busparams_req.sjw_d = (u8)sjw;
-       cmd->set_busparams_req.tseg1_d = (u8)tseg1;
-       cmd->set_busparams_req.tseg2_d = (u8)tseg2;
-       cmd->set_busparams_req.nsamples_d = 1;
+       cmd->set_busparams_req.busparams_data.bitrate = cpu_to_le32(dbt->bitrate);
+       cmd->set_busparams_req.busparams_data.sjw = (u8)sjw;
+       cmd->set_busparams_req.busparams_data.tseg1 = (u8)tseg1;
+       cmd->set_busparams_req.busparams_data.tseg2 = (u8)tseg2;
+       cmd->set_busparams_req.busparams_data.nsamples = 1;
 
        if (priv->can.ctrlmode & CAN_CTRLMODE_FD) {
                if (priv->can.ctrlmode & CAN_CTRLMODE_FD_NON_ISO)
index fa940be..996d58b 100644 (file)
@@ -164,11 +164,7 @@ struct usbcan_cmd_softinfo {
 struct kvaser_cmd_busparams {
        u8 tid;
        u8 channel;
-       __le32 bitrate;
-       u8 tseg1;
-       u8 tseg2;
-       u8 sjw;
-       u8 no_samp;
+       struct kvaser_usb_busparams busparams;
 } __packed;
 
 struct kvaser_cmd_tx_can {
@@ -1699,15 +1695,15 @@ static int kvaser_usb_leaf_set_bittiming(struct net_device *netdev)
        cmd->len = CMD_HEADER_LEN + sizeof(struct kvaser_cmd_busparams);
        cmd->u.busparams.channel = priv->channel;
        cmd->u.busparams.tid = 0xff;
-       cmd->u.busparams.bitrate = cpu_to_le32(bt->bitrate);
-       cmd->u.busparams.sjw = bt->sjw;
-       cmd->u.busparams.tseg1 = bt->prop_seg + bt->phase_seg1;
-       cmd->u.busparams.tseg2 = bt->phase_seg2;
+       cmd->u.busparams.busparams.bitrate = cpu_to_le32(bt->bitrate);
+       cmd->u.busparams.busparams.sjw = bt->sjw;
+       cmd->u.busparams.busparams.tseg1 = bt->prop_seg + bt->phase_seg1;
+       cmd->u.busparams.busparams.tseg2 = bt->phase_seg2;
 
        if (priv->can.ctrlmode & CAN_CTRLMODE_3_SAMPLES)
-               cmd->u.busparams.no_samp = 3;
+               cmd->u.busparams.busparams.nsamples = 3;
        else
-               cmd->u.busparams.no_samp = 1;
+               cmd->u.busparams.busparams.nsamples = 1;
 
        rc = kvaser_usb_send_cmd(dev, cmd, cmd->len);