# 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 support 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/3-FD
	    - 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_F81604
        tristate "Fintek F81604 USB to 2CAN interface"
        help
          This driver supports the Fintek F81604 USB to 2CAN interface.
          The device can support CAN2.0A/B protocol and also support
          2 output pins to control external terminator (optional).

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

          (see also https://www.fintek.com.tw).

config CAN_GS_USB
	tristate "Geschwister Schneider UG and candleLight compatible interfaces"
	select CAN_RX_OFFLOAD
	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 Mini PCIe 1xCAN
	    - 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 Leaf v3
	    - 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 5xCAN
	    - Kvaser USBcan Pro 5xHS
	    - Kvaser U100
	    - Kvaser U100P
	    - Kvaser U100S
	    - ATI Memorator Pro 2xHS v2
	    - ATI USBcan Pro 2xHS v2
	    - Vining 800

	  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
