hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/net/can/usb/kvaser_usb/kvaser_usb.h
....@@ -76,6 +76,14 @@
7676 int dlc;
7777 };
7878
79
+struct kvaser_usb_busparams {
80
+ __le32 bitrate;
81
+ u8 tseg1;
82
+ u8 tseg2;
83
+ u8 sjw;
84
+ u8 nsamples;
85
+} __packed;
86
+
7987 struct kvaser_usb {
8088 struct usb_device *udev;
8189 struct usb_interface *intf;
....@@ -104,12 +112,18 @@
104112 struct can_priv can;
105113 struct can_berr_counter bec;
106114
115
+ /* subdriver-specific data */
116
+ void *sub_priv;
117
+
107118 struct kvaser_usb *dev;
108119 struct net_device *netdev;
109120 int channel;
110121
111
- struct completion start_comp, stop_comp, flush_comp;
122
+ struct completion start_comp, stop_comp, flush_comp,
123
+ get_busparams_comp;
112124 struct usb_anchor tx_submitted;
125
+
126
+ struct kvaser_usb_busparams busparams_nominal, busparams_data;
113127
114128 spinlock_t tx_contexts_lock; /* lock for active_tx_contexts */
115129 int active_tx_contexts;
....@@ -120,11 +134,15 @@
120134 * struct kvaser_usb_dev_ops - Device specific functions
121135 * @dev_set_mode: used for can.do_set_mode
122136 * @dev_set_bittiming: used for can.do_set_bittiming
137
+ * @dev_get_busparams: readback arbitration busparams
123138 * @dev_set_data_bittiming: used for can.do_set_data_bittiming
139
+ * @dev_get_data_busparams: readback data busparams
124140 * @dev_get_berr_counter: used for can.do_get_berr_counter
125141 *
126142 * @dev_setup_endpoints: setup USB in and out endpoints
127143 * @dev_init_card: initialize card
144
+ * @dev_init_channel: initialize channel
145
+ * @dev_remove_channel: uninitialize channel
128146 * @dev_get_software_info: get software info
129147 * @dev_get_software_details: get software details
130148 * @dev_get_card_info: get card info
....@@ -140,12 +158,18 @@
140158 */
141159 struct kvaser_usb_dev_ops {
142160 int (*dev_set_mode)(struct net_device *netdev, enum can_mode mode);
143
- int (*dev_set_bittiming)(struct net_device *netdev);
144
- int (*dev_set_data_bittiming)(struct net_device *netdev);
161
+ int (*dev_set_bittiming)(const struct net_device *netdev,
162
+ const struct kvaser_usb_busparams *busparams);
163
+ int (*dev_get_busparams)(struct kvaser_usb_net_priv *priv);
164
+ int (*dev_set_data_bittiming)(const struct net_device *netdev,
165
+ const struct kvaser_usb_busparams *busparams);
166
+ int (*dev_get_data_busparams)(struct kvaser_usb_net_priv *priv);
145167 int (*dev_get_berr_counter)(const struct net_device *netdev,
146168 struct can_berr_counter *bec);
147169 int (*dev_setup_endpoints)(struct kvaser_usb *dev);
148170 int (*dev_init_card)(struct kvaser_usb *dev);
171
+ int (*dev_init_channel)(struct kvaser_usb_net_priv *priv);
172
+ void (*dev_remove_channel)(struct kvaser_usb_net_priv *priv);
149173 int (*dev_get_software_info)(struct kvaser_usb *dev);
150174 int (*dev_get_software_details)(struct kvaser_usb *dev);
151175 int (*dev_get_card_info)(struct kvaser_usb *dev);