
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

