mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 04:56:13 +02:00
can: kvaser_usb: Store the different firmware version components in a struct
Store firmware version in kvaser_usb_fw_version struct, specifying the different components of the version number. And drop debug prinout of firmware version, since later patches will expose it via the devlink interface. Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr> Signed-off-by: Jimmy Assarsson <extja@kvaser.com> Link: https://patch.msgid.link/20250725123452.41-7-extja@kvaser.com Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
7506789c53
commit
280eba332b
|
|
@ -47,6 +47,10 @@
|
|||
#define KVASER_USB_CAP_EXT_CAP 0x02
|
||||
#define KVASER_USB_HYDRA_CAP_EXT_CMD 0x04
|
||||
|
||||
#define KVASER_USB_SW_VERSION_MAJOR_MASK GENMASK(31, 24)
|
||||
#define KVASER_USB_SW_VERSION_MINOR_MASK GENMASK(23, 16)
|
||||
#define KVASER_USB_SW_VERSION_BUILD_MASK GENMASK(15, 0)
|
||||
|
||||
struct kvaser_usb_dev_cfg;
|
||||
|
||||
enum kvaser_usb_leaf_family {
|
||||
|
|
@ -83,6 +87,12 @@ struct kvaser_usb_tx_urb_context {
|
|||
u32 echo_index;
|
||||
};
|
||||
|
||||
struct kvaser_usb_fw_version {
|
||||
u8 major;
|
||||
u8 minor;
|
||||
u16 build;
|
||||
};
|
||||
|
||||
struct kvaser_usb_busparams {
|
||||
__le32 bitrate;
|
||||
u8 tseg1;
|
||||
|
|
@ -101,7 +111,7 @@ struct kvaser_usb {
|
|||
struct usb_endpoint_descriptor *bulk_in, *bulk_out;
|
||||
struct usb_anchor rx_submitted;
|
||||
|
||||
u32 fw_version;
|
||||
struct kvaser_usb_fw_version fw_version;
|
||||
unsigned int nchannels;
|
||||
/* @max_tx_urbs: Firmware-reported maximum number of outstanding,
|
||||
* not yet ACKed, transmissions on this device. This value is
|
||||
|
|
|
|||
|
|
@ -963,11 +963,6 @@ static int kvaser_usb_probe(struct usb_interface *intf,
|
|||
if (WARN_ON(!dev->cfg))
|
||||
return -ENODEV;
|
||||
|
||||
dev_dbg(&intf->dev, "Firmware version: %d.%d.%d\n",
|
||||
((dev->fw_version >> 24) & 0xff),
|
||||
((dev->fw_version >> 16) & 0xff),
|
||||
(dev->fw_version & 0xffff));
|
||||
|
||||
dev_dbg(&intf->dev, "Max outstanding tx = %d URBs\n", dev->max_tx_urbs);
|
||||
|
||||
err = ops->dev_get_card_info(dev);
|
||||
|
|
|
|||
|
|
@ -1839,6 +1839,7 @@ static int kvaser_usb_hydra_get_software_details(struct kvaser_usb *dev)
|
|||
size_t cmd_len;
|
||||
int err;
|
||||
u32 flags;
|
||||
u32 fw_version;
|
||||
struct kvaser_usb_dev_card_data *card_data = &dev->card_data;
|
||||
|
||||
cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
|
||||
|
|
@ -1863,7 +1864,10 @@ static int kvaser_usb_hydra_get_software_details(struct kvaser_usb *dev)
|
|||
if (err)
|
||||
goto end;
|
||||
|
||||
dev->fw_version = le32_to_cpu(cmd->sw_detail_res.sw_version);
|
||||
fw_version = le32_to_cpu(cmd->sw_detail_res.sw_version);
|
||||
dev->fw_version.major = FIELD_GET(KVASER_USB_SW_VERSION_MAJOR_MASK, fw_version);
|
||||
dev->fw_version.minor = FIELD_GET(KVASER_USB_SW_VERSION_MINOR_MASK, fw_version);
|
||||
dev->fw_version.build = FIELD_GET(KVASER_USB_SW_VERSION_BUILD_MASK, fw_version);
|
||||
flags = le32_to_cpu(cmd->sw_detail_res.sw_flags);
|
||||
|
||||
if (flags & KVASER_USB_HYDRA_SW_FLAG_FW_BAD) {
|
||||
|
|
|
|||
|
|
@ -741,9 +741,13 @@ static int kvaser_usb_leaf_send_simple_cmd(const struct kvaser_usb *dev,
|
|||
static void kvaser_usb_leaf_get_software_info_leaf(struct kvaser_usb *dev,
|
||||
const struct leaf_cmd_softinfo *softinfo)
|
||||
{
|
||||
u32 fw_version;
|
||||
u32 sw_options = le32_to_cpu(softinfo->sw_options);
|
||||
|
||||
dev->fw_version = le32_to_cpu(softinfo->fw_version);
|
||||
fw_version = le32_to_cpu(softinfo->fw_version);
|
||||
dev->fw_version.major = FIELD_GET(KVASER_USB_SW_VERSION_MAJOR_MASK, fw_version);
|
||||
dev->fw_version.minor = FIELD_GET(KVASER_USB_SW_VERSION_MINOR_MASK, fw_version);
|
||||
dev->fw_version.build = FIELD_GET(KVASER_USB_SW_VERSION_BUILD_MASK, fw_version);
|
||||
dev->max_tx_urbs = le16_to_cpu(softinfo->max_outstanding_tx);
|
||||
|
||||
if (sw_options & KVASER_USB_LEAF_SWOPTION_EXT_CAP)
|
||||
|
|
@ -784,6 +788,7 @@ static int kvaser_usb_leaf_get_software_info_inner(struct kvaser_usb *dev)
|
|||
{
|
||||
struct kvaser_cmd cmd;
|
||||
int err;
|
||||
u32 fw_version;
|
||||
|
||||
err = kvaser_usb_leaf_send_simple_cmd(dev, CMD_GET_SOFTWARE_INFO, 0);
|
||||
if (err)
|
||||
|
|
@ -798,7 +803,13 @@ static int kvaser_usb_leaf_get_software_info_inner(struct kvaser_usb *dev)
|
|||
kvaser_usb_leaf_get_software_info_leaf(dev, &cmd.u.leaf.softinfo);
|
||||
break;
|
||||
case KVASER_USBCAN:
|
||||
dev->fw_version = le32_to_cpu(cmd.u.usbcan.softinfo.fw_version);
|
||||
fw_version = le32_to_cpu(cmd.u.usbcan.softinfo.fw_version);
|
||||
dev->fw_version.major = FIELD_GET(KVASER_USB_SW_VERSION_MAJOR_MASK,
|
||||
fw_version);
|
||||
dev->fw_version.minor = FIELD_GET(KVASER_USB_SW_VERSION_MINOR_MASK,
|
||||
fw_version);
|
||||
dev->fw_version.build = FIELD_GET(KVASER_USB_SW_VERSION_BUILD_MASK,
|
||||
fw_version);
|
||||
dev->max_tx_urbs =
|
||||
le16_to_cpu(cmd.u.usbcan.softinfo.max_outstanding_tx);
|
||||
dev->cfg = &kvaser_usb_leaf_usbcan_dev_cfg;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user