.. | .. |
---|
35 | 35 | #define KVASER_USB_RX_BUFFER_SIZE 3072 |
---|
36 | 36 | #define KVASER_USB_MAX_NET_DEVICES 5 |
---|
37 | 37 | |
---|
38 | | -/* USB devices features */ |
---|
39 | | -#define KVASER_USB_HAS_SILENT_MODE BIT(0) |
---|
40 | | -#define KVASER_USB_HAS_TXRX_ERRORS BIT(1) |
---|
| 38 | +/* Kvaser USB device quirks */ |
---|
| 39 | +#define KVASER_USB_QUIRK_HAS_SILENT_MODE BIT(0) |
---|
| 40 | +#define KVASER_USB_QUIRK_HAS_TXRX_ERRORS BIT(1) |
---|
| 41 | +#define KVASER_USB_QUIRK_IGNORE_CLK_FREQ BIT(2) |
---|
41 | 42 | |
---|
42 | 43 | /* Device capabilities */ |
---|
43 | 44 | #define KVASER_USB_CAP_BERR_CAP 0x01 |
---|
.. | .. |
---|
65 | 66 | struct kvaser_usb_dev_card_data { |
---|
66 | 67 | u32 ctrlmode_supported; |
---|
67 | 68 | u32 capabilities; |
---|
68 | | - union { |
---|
69 | | - struct { |
---|
70 | | - enum kvaser_usb_leaf_family family; |
---|
71 | | - } leaf; |
---|
72 | | - struct kvaser_usb_dev_card_data_hydra hydra; |
---|
73 | | - }; |
---|
| 69 | + struct kvaser_usb_dev_card_data_hydra hydra; |
---|
74 | 70 | }; |
---|
75 | 71 | |
---|
76 | 72 | /* Context for an outstanding, not yet ACKed, transmission */ |
---|
.. | .. |
---|
84 | 80 | struct usb_device *udev; |
---|
85 | 81 | struct usb_interface *intf; |
---|
86 | 82 | struct kvaser_usb_net_priv *nets[KVASER_USB_MAX_NET_DEVICES]; |
---|
87 | | - const struct kvaser_usb_dev_ops *ops; |
---|
| 83 | + const struct kvaser_usb_driver_info *driver_info; |
---|
88 | 84 | const struct kvaser_usb_dev_cfg *cfg; |
---|
89 | 85 | |
---|
90 | 86 | struct usb_endpoint_descriptor *bulk_in, *bulk_out; |
---|
.. | .. |
---|
166 | 162 | int *cmd_len, u16 transid); |
---|
167 | 163 | }; |
---|
168 | 164 | |
---|
| 165 | +struct kvaser_usb_driver_info { |
---|
| 166 | + u32 quirks; |
---|
| 167 | + enum kvaser_usb_leaf_family family; |
---|
| 168 | + const struct kvaser_usb_dev_ops *ops; |
---|
| 169 | +}; |
---|
| 170 | + |
---|
169 | 171 | struct kvaser_usb_dev_cfg { |
---|
170 | 172 | const struct can_clock clock; |
---|
171 | 173 | const unsigned int timestamp_freq; |
---|
.. | .. |
---|
176 | 178 | extern const struct kvaser_usb_dev_ops kvaser_usb_hydra_dev_ops; |
---|
177 | 179 | extern const struct kvaser_usb_dev_ops kvaser_usb_leaf_dev_ops; |
---|
178 | 180 | |
---|
| 181 | +void kvaser_usb_unlink_tx_urbs(struct kvaser_usb_net_priv *priv); |
---|
| 182 | + |
---|
179 | 183 | int kvaser_usb_recv_cmd(const struct kvaser_usb *dev, void *cmd, int len, |
---|
180 | 184 | int *actual_len); |
---|
181 | 185 | |
---|
.. | .. |
---|
185 | 189 | int len); |
---|
186 | 190 | |
---|
187 | 191 | int kvaser_usb_can_rx_over_error(struct net_device *netdev); |
---|
| 192 | + |
---|
| 193 | +extern const struct can_bittiming_const kvaser_usb_flexc_bittiming_const; |
---|
| 194 | + |
---|
188 | 195 | #endif /* KVASER_USB_H */ |
---|