#
# ISDN device configuration
#

menuconfig ISDN
	bool "ISDN support"
	depends on NET && NETDEVICES
	depends on !S390 && !UML
	---help---
	  ISDN ("Integrated Services Digital Network", called RNIS in France)
	  is a fully digital telephone service that can be used for voice and
	  data connections.  If your computer is equipped with an ISDN
	  adapter you can use it to connect to your Internet service provider
	  (with SLIP or PPP) faster than via a conventional telephone modem
	  (though still much slower than with DSL) or to make and accept
	  voice calls (eg. turning your PC into a software answering machine
	  or PABX).

	  Select this option if you want your kernel to support ISDN.

if ISDN

menuconfig ISDN_I4L
	tristate "Old ISDN4Linux (deprecated)"
	depends on TTY
	---help---
	  This driver allows you to use an ISDN adapter for networking
	  connections and as dialin/out device.  The isdn-tty's have a built
	  in AT-compatible modem emulator.  Network devices support autodial,
	  channel-bundling, callback and caller-authentication without having
	  a daemon running.  A reduced T.70 protocol is supported with tty's
	  suitable for German BTX.  On D-Channel, the protocols EDSS1
	  (Euro-ISDN) and 1TR6 (German style) are supported.  See
	  <file:Documentation/isdn/README> for more information.

	  ISDN support in the linux kernel is moving towards a new API,
	  called CAPI (Common ISDN Application Programming Interface).
	  Therefore the old ISDN4Linux layer will eventually become obsolete.
	  It is still available, though, for use with adapters that are not
	  supported by the new CAPI subsystem yet.

source "drivers/isdn/i4l/Kconfig"

menuconfig ISDN_CAPI
	tristate "CAPI 2.0 subsystem"
	help
	  This provides CAPI (the Common ISDN Application Programming
	  Interface) Version 2.0, a standard making it easy for programs to
	  access ISDN hardware in a device independent way. (For details see
	  <http://www.capi.org/>.)  CAPI supports making and accepting voice
	  and data connections, controlling call options and protocols,
	  as well as ISDN supplementary services like call forwarding or
	  three-party conferences (if supported by the specific hardware
	  driver).

	  Select this option and the appropriate hardware driver below if
	  you have an ISDN adapter supported by the CAPI subsystem.

if ISDN_CAPI

source "drivers/isdn/capi/Kconfig"

source "drivers/isdn/hardware/Kconfig"

endif # ISDN_CAPI

source "drivers/isdn/gigaset/Kconfig"

source "drivers/isdn/hysdn/Kconfig"

source "drivers/isdn/mISDN/Kconfig"

config ISDN_HDLC
	tristate
	select CRC_CCITT
	select BITREVERSE

endif # ISDN
