# SPDX-License-Identifier: GPL-2.0-only

menu "Passive cards"

config ISDN_DRV_HISAX
	tristate "HiSax SiemensChipSet driver support"
	select CRC_CCITT
	---help---
	  This is a driver supporting the Siemens chipset on various
	  ISDN-cards (like AVM A1, Elsa ISDN cards, Teles S0-16.0, Teles
	  S0-16.3, Teles S0-8, Teles/Creatix PnP, ITK micro ix1 and many
	  compatibles).

	  HiSax is just the name of this driver, not the name of any hardware.

	  If you have a card with such a chipset, you should say Y here and
	  also to the configuration option of the driver for your particular
	  card, below.

if ISDN_DRV_HISAX

comment "D-channel protocol features"

config HISAX_EURO
	bool "HiSax Support for EURO/DSS1"
	help
	  Say Y or N according to the D-channel protocol which your local
	  telephone service company provides.

	  The call control protocol E-DSS1 is used in most European countries.
	  If unsure, say Y.

config DE_AOC
	bool "Support for german chargeinfo"
	depends on HISAX_EURO
	help
	  If you want that the HiSax hardware driver sends messages to the
	  upper level of the isdn code on each AOCD (Advice Of Charge, During
	  the call -- transmission of the fee information during a call) and
	  on each AOCE (Advice Of Charge, at the End of the call --
	  transmission of fee information at the end of the call), say Y here.
	  This works only in Germany.

config HISAX_NO_SENDCOMPLETE
	bool "Disable sending complete"
	depends on HISAX_EURO
	help
	  If you have trouble with some ugly exchanges or you live in
	  Australia select this option.

config HISAX_NO_LLC
	bool "Disable sending low layer compatibility"
	depends on HISAX_EURO
	help
	  If you have trouble with some ugly exchanges try to select this
	  option.

config HISAX_NO_KEYPAD
	bool "Disable keypad protocol option"
	depends on HISAX_EURO
	help
	  If you like to send special dial strings including * or # without
	  using the keypad protocol, select this option.

config HISAX_1TR6
	bool "HiSax Support for german 1TR6"
	help
	  Say Y or N according to the D-channel protocol which your local
	  telephone service company provides.

	  1TR6 is an old call control protocol which was used in Germany
	  before E-DSS1 was established. Nowadays, all new lines in Germany
	  use E-DSS1.

config HISAX_NI1
	bool "HiSax Support for US NI1"
	help
	  Enable this if you like to use ISDN in US on a NI1 basic rate
	  interface.

config HISAX_MAX_CARDS
	int "Maximum number of cards supported by HiSax"
	default "8"
	help
	  This option allows you to specify the maximum number of cards which
	  the HiSax driver will be able to handle.  

comment "HiSax supported cards"

config HISAX_16_0
	bool "Teles 16.0/8.0"
	depends on ISA
	help
	  This enables HiSax support for the Teles ISDN-cards S0-16.0, S0-8
	  and many compatibles.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using the different cards, a different D-channel protocol, or
	  non-standard IRQ/port/shmem settings.

config HISAX_16_3
	bool "Teles 16.3 or PNP or PCMCIA"
	help
	  This enables HiSax support for the Teles ISDN-cards S0-16.3 the
	  Teles/Creatix PnP and the Teles PCMCIA.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using the different cards, a different D-channel protocol, or
	  non-standard IRQ/port settings.

config HISAX_TELESPCI
	bool "Teles PCI"
	depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K || (MIPS && !CPU_LITTLE_ENDIAN) || (XTENSA && !CPU_LITTLE_ENDIAN)))
	help
	  This enables HiSax support for the Teles PCI.
	  See <file:Documentation/isdn/README.HiSax> on how to configure it.

config HISAX_S0BOX
	bool "Teles S0Box"
	help
	  This enables HiSax support for the Teles/Creatix parallel port
	  S0BOX.  See <file:Documentation/isdn/README.HiSax> on how to
	  configure it.

config HISAX_AVM_A1
	bool "AVM A1 (Fritz)"
	depends on ISA
	help
	  This enables HiSax support for the AVM A1 (aka "Fritz").

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using the different cards, a different D-channel protocol, or
	  non-standard IRQ/port settings.

config HISAX_FRITZPCI
	bool "AVM PnP/PCI (Fritz!PnP/PCI)"
	depends on BROKEN || !PPC64
	help
	  This enables HiSax support for the AVM "Fritz!PnP" and "Fritz!PCI".
	  See <file:Documentation/isdn/README.HiSax> on how to configure it.

config HISAX_AVM_A1_PCMCIA
	bool "AVM A1 PCMCIA (Fritz)"
	help
	  This enables HiSax support for the AVM A1 "Fritz!PCMCIA").
	  See <file:Documentation/isdn/README.HiSax> on how to configure it.

config HISAX_ELSA
	bool "Elsa cards"
	help
	  This enables HiSax support for the Elsa Mircolink ISA cards, for the
	  Elsa Quickstep series cards and Elsa PCMCIA.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using the different cards, a different D-channel protocol, or
	  non-standard IRQ/port settings.

config HISAX_IX1MICROR2
	bool "ITK ix1-micro Revision 2"
	depends on ISA
	help
	  This enables HiSax support for the ITK ix1-micro Revision 2 card.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using the different cards, a different D-channel protocol, or
	  non-standard IRQ/port settings.

config HISAX_DIEHLDIVA
	bool "Eicon.Diehl Diva cards"
	help
	  This enables HiSax support for the Eicon.Diehl Diva none PRO
	  versions passive ISDN cards.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using the different cards, a different D-channel protocol, or
	  non-standard IRQ/port settings.

config HISAX_ASUSCOM
	bool "ASUSCOM ISA cards"
	depends on ISA
	help
	  This enables HiSax support for the AsusCom and their OEM versions
	  passive ISDN ISA cards.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using the different cards, a different D-channel protocol, or
	  non-standard IRQ/port settings.

config HISAX_TELEINT
	bool "TELEINT cards"
	depends on ISA
	help
	  This enables HiSax support for the TELEINT SA1 semiactiv ISDN card.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using the different cards, a different D-channel protocol, or
	  non-standard IRQ/port settings.

config HISAX_HFCS
	bool "HFC-S based cards"
	depends on ISA
	help
	  This enables HiSax support for the HFC-S 2BDS0 based cards, like
	  teles 16.3c.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using the different cards, a different D-channel protocol, or
	  non-standard IRQ/port settings.

config HISAX_SEDLBAUER
	bool "Sedlbauer cards"
	help
	  This enables HiSax support for the Sedlbauer passive ISDN cards.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using the different cards, a different D-channel protocol, or
	  non-standard IRQ/port settings.

config HISAX_SPORTSTER
	bool "USR Sportster internal TA"
	depends on ISA
	help
	  This enables HiSax support for the USR Sportster internal TA card.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using a different D-channel protocol, or non-standard IRQ/port
	  settings.

config HISAX_MIC
	bool "MIC card"
	depends on ISA
	help
	  This enables HiSax support for the ITH MIC card.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using a different D-channel protocol, or non-standard IRQ/port
	  settings.

config HISAX_NETJET
	bool "NETjet card"
	depends on PCI && (BROKEN || !(PPC || PARISC || M68K || (MIPS && !CPU_LITTLE_ENDIAN) || (XTENSA && !CPU_LITTLE_ENDIAN) || MICROBLAZE))
	depends on VIRT_TO_BUS
	help
	  This enables HiSax support for the NetJet from Traverse
	  Technologies.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using a different D-channel protocol, or non-standard IRQ/port
	  settings.

config HISAX_NETJET_U
	bool "NETspider U card"
	depends on PCI && (BROKEN || !(PPC || PARISC || M68K || (MIPS && !CPU_LITTLE_ENDIAN) || (XTENSA && !CPU_LITTLE_ENDIAN) || MICROBLAZE))
	depends on VIRT_TO_BUS
	help
	  This enables HiSax support for the Netspider U interface ISDN card
	  from Traverse Technologies.
	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using a different D-channel protocol, or non-standard IRQ/port
	  settings.

config HISAX_NICCY
	bool "Niccy PnP/PCI card"
	help
	  This enables HiSax support for the Dr. Neuhaus Niccy PnP or PCI.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using a different D-channel protocol, or non-standard IRQ/port
	  settings.

config HISAX_ISURF
	bool "Siemens I-Surf card"
	depends on ISA
	help
	  This enables HiSax support for the Siemens I-Talk/I-Surf card with
	  ISAR chip.
	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using a different D-channel protocol, or non-standard IRQ/port
	  settings.

config HISAX_HSTSAPHIR
	bool "HST Saphir card"
	depends on ISA
	help
	  This enables HiSax support for the HST Saphir card.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using a different D-channel protocol, or non-standard IRQ/port
	  settings.

config HISAX_BKM_A4T
	bool "Telekom A4T card"
	depends on PCI
	help
	  This enables HiSax support for the Telekom A4T card.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using a different D-channel protocol, or non-standard IRQ/port
	  settings.

config HISAX_SCT_QUADRO
	bool "Scitel Quadro card"
	depends on PCI
	help
	  This enables HiSax support for the Scitel Quadro card.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using a different D-channel protocol, or non-standard IRQ/port
	  settings.

config HISAX_GAZEL
	bool "Gazel cards"
	help
	  This enables HiSax support for the Gazel cards.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using a different D-channel protocol, or non-standard IRQ/port
	  settings.

config HISAX_HFC_PCI
	bool "HFC PCI-Bus cards"
	depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K || (MIPS && !CPU_LITTLE_ENDIAN) || (XTENSA && !CPU_LITTLE_ENDIAN)))
	help
	  This enables HiSax support for the HFC-S PCI 2BDS0 based cards.

	  For more information see under
	  <file:Documentation/isdn/README.hfc-pci>.

config HISAX_W6692
	bool "Winbond W6692 based cards"
	depends on PCI
	help
	  This enables HiSax support for Winbond W6692 based PCI ISDN cards.

	  See <file:Documentation/isdn/README.HiSax> on how to configure it
	  using a different D-channel protocol, or non-standard IRQ/port
	  settings.

config HISAX_HFC_SX
	bool "HFC-S+, HFC-SP, HFC-PCMCIA cards"
	help
	  This enables HiSax support for the HFC-S+, HFC-SP and HFC-PCMCIA
	  cards. This code is not finished yet.

config HISAX_ENTERNOW_PCI
	bool "Formula-n enter:now PCI card"
	depends on HISAX_NETJET && PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K || (MIPS && !CPU_LITTLE_ENDIAN) || (XTENSA && !CPU_LITTLE_ENDIAN)))
	help
	  This enables HiSax support for the Formula-n enter:now PCI
	  ISDN card.

config HISAX_DEBUG
	bool "HiSax debugging"
	help
	  This enables debugging code in the new-style HiSax drivers, i.e.
	  the ST5481 USB driver currently. 
	  If in doubt, say yes.

comment "HiSax PCMCIA card service modules"

config HISAX_SEDLBAUER_CS
	tristate "Sedlbauer PCMCIA cards"
	depends on PCMCIA && HISAX_SEDLBAUER
	help
	  This enables the PCMCIA client driver for the Sedlbauer Speed Star
	  and Speed Star II cards.

config HISAX_ELSA_CS
	tristate "ELSA PCMCIA MicroLink cards"
	depends on PCMCIA && HISAX_ELSA
	help
	  This enables the PCMCIA client driver for the Elsa PCMCIA MicroLink
	  card.

config HISAX_AVM_A1_CS
	tristate "AVM A1 PCMCIA cards"
	depends on PCMCIA && ISDN_DRV_HISAX
	help
	  This enables the PCMCIA client driver for the AVM A1 / Fritz!Card
	  PCMCIA cards.

config HISAX_TELES_CS
	tristate "TELES PCMCIA cards"
	depends on PCMCIA && HISAX_16_3
	help
	  This enables the PCMCIA client driver for the Teles PCMCIA cards.

comment "HiSax sub driver modules"

config HISAX_ST5481
	tristate "ST5481 USB ISDN modem"
	depends on USB
	select ISDN_HDLC
	select CRC_CCITT
	select BITREVERSE
	help
	  This enables the driver for ST5481 based USB ISDN adapters,
	  e.g. the BeWan Gazel 128 USB

config HISAX_HFCUSB
	tristate "HFC USB based ISDN modems"
	depends on USB
	help
	  This enables the driver for HFC USB based ISDN modems.

config HISAX_HFC4S8S
	tristate "HFC-4S/8S based ISDN cards"
	help
	  This enables the driver for HFC-4S/8S based ISDN cards.

config HISAX_FRITZ_PCIPNP
	tristate "AVM Fritz!Card PCI/PCIv2/PnP support"
	depends on PCI
	help
	  This enables the driver for the AVM Fritz!Card PCI,
	  Fritz!Card PCI v2 and Fritz!Card PnP.
	  (the latter also needs you to select "ISA Plug and Play support"
	  from the menu "Plug and Play configuration")

endif

endmenu

