# 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_USB2
	tristate "ESD USB/2 CAN/USB interface"
	help
	  This driver supports the CAN-USB/2 interface
	  from esd electronic system design gmbh (http://www.esd.eu).

config CAN_GS_USB
	tristate "Geschwister Schneider UG interfaces"
	help
	  This driver supports the Geschwister Schneider and bytewerk.org
	  candleLight USB CAN interfaces USB/CAN devices
	  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 2xCAN/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 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
