#
# Config.in for the CAPI subsystem
#
config ISDN_DRV_AVMB1_VERBOSE_REASON
	bool "Verbose reason code reporting"
	depends on ISDN_CAPI
	default y
	help
	  If you say Y here, the CAPI drivers will give verbose reasons for
	  disconnecting. This will increase the size of the kernel by 7 KB. If
	  unsure, say Y.

config CAPI_TRACE
	bool "CAPI trace support"
	depends on ISDN_CAPI
	default y
	help
	  If you say Y here, the kernelcapi driver can make verbose traces
	  of CAPI messages. This feature can be enabled/disabled via IOCTL for
	  every controller (default disabled).
	  This will increase the size of the kernelcapi module by 20 KB.
	  If unsure, say Y.

config ISDN_CAPI_MIDDLEWARE
	bool "CAPI2.0 Middleware support (EXPERIMENTAL)"
	depends on ISDN_CAPI && EXPERIMENTAL
	help
	  This option will enhance the capabilities of the /dev/capi20
	  interface.  It will provide a means of moving a data connection,
	  established via the usual /dev/capi20 interface to a special tty
	  device.  If you want to use pppd with pppdcapiplugin to dial up to
	  your ISP, say Y here.

config ISDN_CAPI_CAPI20
	tristate "CAPI2.0 /dev/capi support"
	depends on ISDN_CAPI
	help
	  This option will provide the CAPI 2.0 interface to userspace
	  applications via /dev/capi20. Applications should use the
	  standardized libcapi20 to access this functionality.  You should say
	  Y/M here.

config ISDN_CAPI_CAPIFS_BOOL
	bool "CAPI2.0 filesystem support"
	depends on ISDN_CAPI_MIDDLEWARE && ISDN_CAPI_CAPI20

config ISDN_CAPI_CAPIFS
	tristate
	depends on ISDN_CAPI_CAPIFS_BOOL
	default ISDN_CAPI_CAPI20
	help
	  This option provides a special file system, similar to /dev/pts with
	  device nodes for the special ttys established by using the
	  middleware extension above. If you want to use pppd with
	  pppdcapiplugin to dial up to your ISP, say Y here.

config ISDN_CAPI_CAPIDRV
	tristate "CAPI2.0 capidrv interface support"
	depends on ISDN_CAPI && ISDN_I4L
	help
	  This option provides the glue code to hook up CAPI driven cards to
	  the legacy isdn4linux link layer.  If you have a card which is
	  supported by a CAPI driver, but still want to use old features like
	  ippp interfaces or ttyI emulation, say Y/M here.

