# SPDX-License-Identifier: GPL-2.0-only
#
# Hardware for mISDN
#
comment "mISDN hardware drivers"

config MISDN_HFCPCI
	tristate "Support for HFC PCI cards"
	depends on MISDN
	depends on PCI
	help
	  Enable support for cards with Cologne Chip AG's
	  HFC PCI chip.

config MISDN_HFCMULTI
	tristate "Support for HFC multiport cards (HFC-4S/8S/E1)"
	depends on PCI || CPM1
	depends on MISDN
	help
	  Enable support for cards with Cologne Chip AG's HFC multiport
	  chip. There are three types of chips that are quite similar,
	  but the interface is different:
	   * HFC-4S (4 S/T interfaces on one chip)
	   * HFC-8S (8 S/T interfaces on one chip)
	   * HFC-E1 (E1 interface for 2Mbit ISDN)

config MISDN_HFCMULTI_8xx
	bool "Support for XHFC embedded board in HFC multiport driver"
	depends on MISDN
	depends on MISDN_HFCMULTI
	depends on CPM1
	default CPM1
	help
	  Enable support for the XHFC embedded solution from Speech Design.

config MISDN_HFCUSB
	tristate "Support for HFC-S USB based TAs"
	depends on USB
	help
	  Enable support for USB ISDN TAs with Cologne Chip AG's
	  HFC-S USB ISDN Controller

config MISDN_AVMFRITZ
	tristate "Support for AVM FRITZ!CARD PCI"
	depends on MISDN
	depends on PCI
	select MISDN_IPAC
	help
	  Enable support for AVMs FRITZ!CARD PCI cards

config MISDN_SPEEDFAX
	tristate "Support for Sedlbauer Speedfax+"
	depends on MISDN
	depends on PCI
	select MISDN_IPAC
	select MISDN_ISAR
	help
	  Enable support for Sedlbauer Speedfax+.

config MISDN_INFINEON
	tristate "Support for cards with Infineon chipset"
	depends on MISDN
	depends on PCI
	select MISDN_IPAC
	help
	  Enable support for cards with ISAC + HSCX, IPAC or IPAC-SX
	  chip from Infineon (former manufacturer Siemens).

config MISDN_W6692
	tristate "Support for cards with Winbond 6692"
	depends on MISDN
	depends on PCI
	help
	  Enable support for Winbond 6692 PCI chip based cards.

config MISDN_NETJET
	tristate "Support for NETJet cards"
	depends on MISDN
	depends on PCI
	depends on TTY
	select MISDN_IPAC
	select MISDN_HDLC
	help
	  Enable support for Traverse Technologies NETJet PCI cards.

config MISDN_HDLC
	tristate
	select CRC_CCITT
	select BITREVERSE

config MISDN_IPAC
	tristate
	depends on MISDN

config MISDN_ISAR
	tristate
	depends on MISDN

