[PATCH 0/4] can: usb: Add driver for HMS IXXAT USB-to-CAN adapters

Stéphane Grosjean <[email protected]> Thu, 23 Jul 2026 09:29:35 +0200
Newsgroups org.kernel.vger.linux-can
Message-ID <[email protected]>
From: Stéphane Grosjean <[email protected]>

This series adds a SocketCAN driver for the HMS Networks IXXAT family of
USB-to-CAN and USB-to-CAN FD interface adapters.

The driver supports two USB communication layers:
- CL1: the protocol for classic CAN 2.0b devices with legacy firmware
- CL2: the newer protocol used by recent device firmware versions

Supported devices (VID 0x08d8 and 0x08db):
  USB-to-CAN Compact / Embedded / Professional / Automotive / Plugin (CL1)
  USB-to-CAN FD Compact / Professional / Automotive / MiniPCIe       (CL2)
  USB-to-CAN/FD Pro / Standard / Standard Card / Pro Module /
                      Standard Module                                (CL2)
  USB-to-CAR, CAN-IDM101, CAN-IDM200                                 (CL2)

Supported CAN control modes (device-dependent):
  listen-only, loopback, triple-sampling, bus-error reporting,
  CAN FD (ISO 11898-1:2015), non-ISO CAN FD, one-shot

Additional features:
  - Hardware receive timestamps propagated via skb_hwtstamps
  - Bus error counter (do_get_berr_counter)
  - TX echo via the SocketCAN echo skb mechanism (up to 32 in flight)
  - Up to 5 independent CAN channels per physical device
  - Automatic protocol layer selection based on firmware version

Signed-off-by: Stéphane Grosjean <[email protected]>

Stéphane Grosjean (4):
  can: usb: ixxat_usb: add shared header
  can: usb: ixxat_usb: add CL1 legacy protocol layer
  can: usb: ixxat_usb: add CL2/V2 protocol layer with CAN
  can: usb: ixxat_usb: add core driver and Kconfig/Makefile

 drivers/net/can/usb/Kconfig                   |   17 +
 drivers/net/can/usb/Makefile                  |    1 +
 drivers/net/can/usb/ixxat_usb/Makefile        |    3 +
 drivers/net/can/usb/ixxat_usb/ixxat_usb_cl1.c |  188 ++
 drivers/net/can/usb/ixxat_usb/ixxat_usb_cl2.c |  347 +++
 .../net/can/usb/ixxat_usb/ixxat_usb_core.c    | 2567 +++++++++++++++++
 .../net/can/usb/ixxat_usb/ixxat_usb_core.h    |  862 ++++++
 7 files changed, 3985 insertions(+)
 create mode 100644 drivers/net/can/usb/ixxat_usb/Makefile
 create mode 100644 drivers/net/can/usb/ixxat_usb/ixxat_usb_cl1.c
 create mode 100644 drivers/net/can/usb/ixxat_usb/ixxat_usb_cl2.c
 create mode 100644 drivers/net/can/usb/ixxat_usb/ixxat_usb_core.c
 create mode 100644 drivers/net/can/usb/ixxat_usb/ixxat_usb_core.h

-- 
2.53.0