# SPDX-License-Identifier: GPL-2.0-only
menu "CAN USB interfaces"
	depends on USB

config CAN_8DEV_USB
	tristate "8 devices USB2CAN interface"
	help
	  This driver supports the USB2CAN interface
	  from 8 devices (http://www.8devices.com).

config CAN_EMS_USB
	tristate "EMS CPC-USB/ARM7 CAN/USB interface"
	help
	  This driver is for the one channel CPC-USB/ARM7 CAN/USB interface
	  from EMS Dr. Thomas Wuensche (http://www.ems-wuensche.de).

config CAN_ESD_USB
	tristate "esd electronics gmbh CAN/USB interfaces"
	help
	  This driver adds supports for several CAN/USB interfaces
	  from esd electronics gmbh (https://www.esd.eu).

	  The drivers supports the following devices:
	    - esd CAN-USB/2
	    - esd CAN-USB/Micro

	  To compile this driver as a module, choose M here: the module
	  will be called esd_usb.

config CAN_ETAS_ES58X
	tristate "ETAS ES58X CAN/USB interfaces"
	select CRC16
	select NET_DEVLINK
	help
	  This driver supports the ES581.4, ES582.1 and ES584.1 interfaces
	  from ETAS GmbH (https://www.etas.com/en/products/es58x.php).

	  To compile this driver as a module, choose M here: the module
	  will be called etas_es58x.

config CAN_GS_USB
	tristate "Geschwister Schneider UG and candleLight compatible interfaces"
	help
	  This driver supports the Geschwister Schneider and
	  bytewerk.org candleLight compatible
	  (https://github.com/candle-usb/candleLight_fw) USB/CAN
	  interfaces.

	  If unsure choose N,
	  choose Y for built in support,
	  M to compile as module (module will be named: gs_usb).

config CAN_KVASER_USB
	tristate "Kvaser CAN/USB interface"
	help
	  This driver adds support for Kvaser CAN/USB devices like Kvaser
	  Leaf Light, Kvaser USBcan II and Kvaser Memorator Pro 5xHS.

	  The driver provides support for the following devices:
	    - Kvaser Leaf Light
	    - Kvaser Leaf Professional HS
	    - Kvaser Leaf SemiPro HS
	    - Kvaser Leaf Professional LS
	    - Kvaser Leaf Professional SWC
	    - Kvaser Leaf Professional LIN
	    - Kvaser Leaf SemiPro LS
	    - Kvaser Leaf SemiPro SWC
	    - Kvaser Memorator II HS/HS
	    - Kvaser USBcan Professional HS/HS
	    - Kvaser Leaf Light GI
	    - Kvaser Leaf Professional HS (OBD-II connector)
	    - Kvaser Memorator Professional HS/LS
	    - Kvaser Leaf Light "China"
	    - Kvaser BlackBird SemiPro
	    - Kvaser USBcan R
	    - Kvaser USBcan R v2
	    - Kvaser Leaf Light v2
	    - Kvaser Leaf Light R v2
	    - Kvaser Mini PCI Express HS
	    - Kvaser Mini PCI Express 2xHS
	    - Kvaser USBcan Light 2xHS
	    - Kvaser USBcan II HS/HS
	    - Kvaser USBcan II HS/LS
	    - Kvaser USBcan Rugged ("USBcan Rev B")
	    - Kvaser Memorator HS/HS
	    - Kvaser Memorator HS/LS
	    - Scania VCI2 (if you have the Kvaser logo on top)
	    - Kvaser BlackBird v2
	    - Kvaser Leaf Pro HS v2
	    - Kvaser Hybrid CAN/LIN
	    - Kvaser Hybrid 2xCAN/LIN
	    - Kvaser Hybrid Pro CAN/LIN
	    - Kvaser Hybrid Pro 2xCAN/LIN
	    - Kvaser Memorator 2xHS v2
	    - Kvaser Memorator Pro 2xHS v2
	    - Kvaser Memorator Pro 5xHS
	    - Kvaser USBcan Light 4xHS
	    - Kvaser USBcan Pro 2xHS v2
	    - Kvaser USBcan Pro 4xHS
	    - Kvaser USBcan Pro 5xHS
	    - Kvaser U100
	    - Kvaser U100P
	    - Kvaser U100S
	    - ATI Memorator Pro 2xHS v2
	    - ATI USBcan Pro 2xHS v2

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called kvaser_usb.

config CAN_MCBA_USB
	tristate "Microchip CAN BUS Analyzer interface"
	help
	  This driver supports the CAN BUS Analyzer interface
	  from Microchip (http://www.microchip.com/development-tools/).

config CAN_PEAK_USB
	tristate "PEAK PCAN-USB/USB Pro interfaces for CAN 2.0b/CAN-FD"
	help
	  This driver supports the PEAK-System Technik USB adapters that enable
	  access to the CAN bus, with respect to the CAN 2.0b and/or CAN-FD
	  standards, that is:

	  PCAN-USB             single CAN 2.0b channel USB adapter
	  PCAN-USB Pro         dual CAN 2.0b channels USB adapter
	  PCAN-USB FD          single CAN-FD channel USB adapter
	  PCAN-USB Pro FD      dual CAN-FD channels USB adapter
	  PCAN-Chip USB        CAN-FD to USB stamp module
	  PCAN-USB X6          6 CAN-FD channels USB adapter

	  (see also http://www.peak-system.com).

config CAN_UCAN
	tristate "Theobroma Systems UCAN interface"
	help
	  This driver supports the Theobroma Systems
	  UCAN USB-CAN interface.

	  The UCAN driver supports the microcontroller-based USB/CAN
	  adapters from Theobroma Systems. There are two form-factors
	  that run essentially the same firmware:

	  * Seal: standalone USB stick
	          https://www.theobroma-systems.com/seal)
	  * Mule: integrated on the PCB of various System-on-Modules
	          from Theobroma Systems like the A31-µQ7 and the RK3399-Q7
	          (https://www.theobroma-systems.com/rk3399-q7)

endmenu
