|
@@ -1061,6 +1061,78 @@ const struct peak_usb_adapter pcan_usb_fd = {
|
|
|
.do_get_berr_counter = pcan_usb_fd_get_berr_counter,
|
|
|
};
|
|
|
|
|
|
+/* describes the PCAN-CHIP USB */
|
|
|
+static const struct can_bittiming_const pcan_usb_chip_const = {
|
|
|
+ .name = "pcan_chip_usb",
|
|
|
+ .tseg1_min = 1,
|
|
|
+ .tseg1_max = (1 << PUCAN_TSLOW_TSGEG1_BITS),
|
|
|
+ .tseg2_min = 1,
|
|
|
+ .tseg2_max = (1 << PUCAN_TSLOW_TSGEG2_BITS),
|
|
|
+ .sjw_max = (1 << PUCAN_TSLOW_SJW_BITS),
|
|
|
+ .brp_min = 1,
|
|
|
+ .brp_max = (1 << PUCAN_TSLOW_BRP_BITS),
|
|
|
+ .brp_inc = 1,
|
|
|
+};
|
|
|
+
|
|
|
+static const struct can_bittiming_const pcan_usb_chip_data_const = {
|
|
|
+ .name = "pcan_chip_usb",
|
|
|
+ .tseg1_min = 1,
|
|
|
+ .tseg1_max = (1 << PUCAN_TFAST_TSGEG1_BITS),
|
|
|
+ .tseg2_min = 1,
|
|
|
+ .tseg2_max = (1 << PUCAN_TFAST_TSGEG2_BITS),
|
|
|
+ .sjw_max = (1 << PUCAN_TFAST_SJW_BITS),
|
|
|
+ .brp_min = 1,
|
|
|
+ .brp_max = (1 << PUCAN_TFAST_BRP_BITS),
|
|
|
+ .brp_inc = 1,
|
|
|
+};
|
|
|
+
|
|
|
+const struct peak_usb_adapter pcan_usb_chip = {
|
|
|
+ .name = "PCAN-Chip USB",
|
|
|
+ .device_id = PCAN_USBCHIP_PRODUCT_ID,
|
|
|
+ .ctrl_count = PCAN_USBFD_CHANNEL_COUNT,
|
|
|
+ .ctrlmode_supported = CAN_CTRLMODE_FD |
|
|
|
+ CAN_CTRLMODE_3_SAMPLES | CAN_CTRLMODE_LISTENONLY,
|
|
|
+ .clock = {
|
|
|
+ .freq = PCAN_UFD_CRYSTAL_HZ,
|
|
|
+ },
|
|
|
+ .bittiming_const = &pcan_usb_chip_const,
|
|
|
+ .data_bittiming_const = &pcan_usb_chip_data_const,
|
|
|
+
|
|
|
+ /* size of device private data */
|
|
|
+ .sizeof_dev_private = sizeof(struct pcan_usb_fd_device),
|
|
|
+
|
|
|
+ /* timestamps usage */
|
|
|
+ .ts_used_bits = 32,
|
|
|
+ .ts_period = 1000000, /* calibration period in ts. */
|
|
|
+ .us_per_ts_scale = 1, /* us = (ts * scale) >> shift */
|
|
|
+ .us_per_ts_shift = 0,
|
|
|
+
|
|
|
+ /* give here messages in/out endpoints */
|
|
|
+ .ep_msg_in = PCAN_USBPRO_EP_MSGIN,
|
|
|
+ .ep_msg_out = {PCAN_USBPRO_EP_MSGOUT_0},
|
|
|
+
|
|
|
+ /* size of rx/tx usb buffers */
|
|
|
+ .rx_buffer_size = PCAN_UFD_RX_BUFFER_SIZE,
|
|
|
+ .tx_buffer_size = PCAN_UFD_TX_BUFFER_SIZE,
|
|
|
+
|
|
|
+ /* device callbacks */
|
|
|
+ .intf_probe = pcan_usb_pro_probe, /* same as PCAN-USB Pro */
|
|
|
+ .dev_init = pcan_usb_fd_init,
|
|
|
+
|
|
|
+ .dev_exit = pcan_usb_fd_exit,
|
|
|
+ .dev_free = pcan_usb_fd_free,
|
|
|
+ .dev_set_bus = pcan_usb_fd_set_bus,
|
|
|
+ .dev_set_bittiming = pcan_usb_fd_set_bittiming_slow,
|
|
|
+ .dev_set_data_bittiming = pcan_usb_fd_set_bittiming_fast,
|
|
|
+ .dev_decode_buf = pcan_usb_fd_decode_buf,
|
|
|
+ .dev_start = pcan_usb_fd_start,
|
|
|
+ .dev_stop = pcan_usb_fd_stop,
|
|
|
+ .dev_restart_async = pcan_usb_fd_restart_async,
|
|
|
+ .dev_encode_msg = pcan_usb_fd_encode_msg,
|
|
|
+
|
|
|
+ .do_get_berr_counter = pcan_usb_fd_get_berr_counter,
|
|
|
+};
|
|
|
+
|
|
|
/* describes the PCAN-USB Pro FD adapter */
|
|
|
static const struct can_bittiming_const pcan_usb_pro_fd_const = {
|
|
|
.name = "pcan_usb_pro_fd",
|