menuconfig CAN_SJA1000
	tristate "Philips/NXP SJA1000 devices"
	depends on HAS_IOMEM

if CAN_SJA1000

config CAN_SJA1000_ISA
	tristate "ISA Bus based legacy SJA1000 driver"
	---help---
	  This driver adds legacy support for SJA1000 chips connected to
	  the ISA bus using I/O port, memory mapped or indirect access.

config CAN_SJA1000_PLATFORM
	tristate "Generic Platform Bus based SJA1000 driver"
	---help---
	  This driver adds support for the SJA1000 chips connected to
	  the "platform bus" (Linux abstraction for directly to the
	  processor attached devices).  Which can be found on various
	  boards from Phytec (http://www.phytec.de) like the PCM027,
	  PCM038.

config CAN_SJA1000_OF_PLATFORM
	tristate "Generic OF Platform Bus based SJA1000 driver"
	depends on OF
	---help---
	  This driver adds support for the SJA1000 chips connected to
	  the OpenFirmware "platform bus" found on embedded systems with
	  OpenFirmware bindings, e.g. if you have a PowerPC based system
	  you may want to enable this option.

config CAN_EMS_PCMCIA
	tristate "EMS CPC-CARD Card"
	depends on PCMCIA
	---help---
	  This driver is for the one or two channel CPC-CARD cards from
	  EMS Dr. Thomas Wuensche (http://www.ems-wuensche.de).

config CAN_EMS_PCI
	tristate "EMS CPC-PCI, CPC-PCIe and CPC-104P Card"
	depends on PCI
	---help---
	  This driver is for the one, two or four channel CPC-PCI,
	  CPC-PCIe and CPC-104P cards from EMS Dr. Thomas Wuensche
	  (http://www.ems-wuensche.de).

config CAN_PEAK_PCMCIA
	tristate "PEAK PCAN-PC Card"
	depends on PCMCIA
	depends on HAS_IOPORT
	---help---
	  This driver is for the PCAN-PC Card PCMCIA adapter (1 or 2 channels)
	  from PEAK-System (http://www.peak-system.com). To compile this
	  driver as a module, choose M here: the module will be called
	  peak_pcmcia.

config CAN_PEAK_PCI
	tristate "PEAK PCAN-PCI/PCIe/miniPCI Cards"
	depends on PCI
	---help---
	  This driver is for the PCAN-PCI/PCIe/miniPCI cards
	  (1, 2, 3 or 4 channels) from PEAK-System Technik
	  (http://www.peak-system.com).

config CAN_PEAK_PCIEC
	bool "PEAK PCAN-ExpressCard Cards"
	depends on CAN_PEAK_PCI
	select I2C
	select I2C_ALGOBIT
	default y
	---help---
	  Say Y here if you want to use a PCAN-ExpressCard from PEAK-System
	  Technik. This will also automatically select I2C and I2C_ALGO
	  configuration options.

config CAN_KVASER_PCI
	tristate "Kvaser PCIcanx and Kvaser PCIcan PCI Cards"
	depends on PCI
	---help---
	  This driver is for the PCIcanx and PCIcan cards (1, 2 or
	  4 channel) from Kvaser (http://www.kvaser.com).

config CAN_PLX_PCI
	tristate "PLX90xx PCI-bridge based Cards"
	depends on PCI
	---help---
	  This driver is for CAN interface cards based on
	  the PLX90xx PCI bridge.
	  Driver supports now:
	   - Adlink PCI-7841/cPCI-7841 card (http://www.adlinktech.com/)
	   - Adlink PCI-7841/cPCI-7841 SE card
	   - esd CAN-PCI/CPCI/PCI104/200 (http://www.esd.eu/)
	   - esd CAN-PCI/PMC/266
	   - esd CAN-PCIe/2000
	   - Marathon CAN-bus-PCI card (http://www.marathon.ru/)
	   - TEWS TECHNOLOGIES TPMC810 card (http://www.tews.com/)
	   - IXXAT Automation PC-I 04/PCI card (http://www.ixxat.com/)
	   - Connect Tech Inc. CANpro/104-Plus Opto (CRG001) card (http://www.connecttech.com)

config CAN_TSCAN1
	tristate "TS-CAN1 PC104 boards"
	depends on ISA
	help
	  This driver is for Technologic Systems' TSCAN-1 PC104 boards.
	  http://www.embeddedarm.com/products/board-detail.php?product=TS-CAN1
	  The driver supports multiple boards and automatically configures them:
	  PLD IO base addresses are read from jumpers JP1 and JP2,
	  IRQ numbers are read from jumpers JP4 and JP5,
	  SJA1000 IO base addresses are chosen heuristically (first that works).

endif
