
menu "Passive cards"
	depends on ISDN_I4L

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!=n

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 || !(SPARC64 || PPC))
	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)"
	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 || !(SPARC64 || PPC))
	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 || !(SPARC64 || PPC))
	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 || !(SPARC64 || PPC))
	help
	  This enables HiSax support for the HFC-S PCI 2BDS0 based cards.

	  For more informations 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.

#      bool '  TESTEMULATOR (EXPERIMENTAL)' CONFIG_HISAX_TESTEMU

config HISAX_ENTERNOW_PCI
	bool "Formula-n enter:now PCI card"
	depends on PCI && (BROKEN || !(SPARC64 || PPC))
	help
	  This enables HiSax support for the Formula-n enter:now PCI
	  ISDN card.

config HISAX_AMD7930
	bool "Am7930 (EXPERIMENTAL)"
	depends on EXPERIMENTAL && (SPARC32 || SPARC64)
	help
	  This enables HiSax support for the AMD7930 chips on some SPARCs.
	  This code is not finished yet.

endif

if ISDN_DRV_HISAX

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 (EXPERIMENTAL)"
	depends on USB && EXPERIMENTAL
	select CRC_CCITT
	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 (EXPERIMENTAL)"
	depends on USB && EXPERIMENTAL
	help
	  This enables the driver for HFC USB based ISDN modems.

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

config HISAX_FRITZ_PCIPNP
	tristate "AVM Fritz!Card PCI/PCIv2/PnP support (EXPERIMENTAL)"
	depends on PCI && EXPERIMENTAL
	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")

config HISAX_HDLC
	bool
	depends on HISAX_ST5481
	default y

config HISAX_AVM_A1_PCMCIA
	bool
	depends on HISAX_AVM_A1_CS
	default y

endif

endmenu

