
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)"
	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 || !(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

