config CCW
	bool
	default y

source "drivers/block/Kconfig"

source "drivers/md/Kconfig"


menu "Character device drivers"

config UNIX98_PTYS
	bool "Unix98 PTY support"
	---help---
	  A pseudo terminal (PTY) is a software device consisting of two
	  halves: a master and a slave. The slave device behaves identical to
	  a physical terminal; the master device is used by a process to
	  read data from and write data to the slave, thereby emulating a
	  terminal. Typical programs for the master side are telnet servers
	  and xterms.

	  Linux has traditionally used the BSD-like names /dev/ptyxx for
	  masters and /dev/ttyxx for slaves of pseudo terminals. This scheme
	  has a number of problems. The GNU C library glibc 2.1 and later,
	  however, supports the Unix98 naming standard: in order to acquire a
	  pseudo terminal, a process opens /dev/ptmx; the number of the pseudo
	  terminal is then made available to the process and the pseudo
	  terminal slave can be accessed as /dev/pts/<number>. What was
	  traditionally /dev/ttyp2 will then be /dev/pts/2, for example.

	  The entries in /dev/pts/ are created on the fly by a virtual
	  file system; therefore, if you say Y here you should say Y to
	  "/dev/pts file system for Unix98 PTYs" as well.

	  If you want to say Y here, you need to have the C library glibc 2.1
	  or later (equal to libc-6.1, check with "ls -l /lib/libc.so.*").
	  Read the instructions in <file:Documentation/Changes> pertaining to
	  pseudo terminals. It's safe to say N.

config UNIX98_PTY_COUNT
	int "Maximum number of Unix98 PTYs in use (0-2048)"
	depends on UNIX98_PTYS
	default "256"
	help
	  The maximum number of Unix98 PTYs that can be used at any one time.
	  The default is 256, and should be enough for desktop systems. Server
	  machines which support incoming telnet/rlogin/ssh connections and/or
	  serve several X terminals may want to increase this: every incoming
	  connection and every xterm uses up one PTY.

	  When not in use, each additional set of 256 PTYs occupy
	  approximately 8 KB of kernel memory on 32-bit architectures.

config HANGCHECK_TIMER
	tristate "Hangcheck timer"
	help
	  The hangcheck-timer module detects when the system has gone
	  out to lunch past a certain margin.  It can reboot the system
	  or merely print a warning.

source "drivers/char/watchdog/Kconfig"

comment "S/390 character device drivers"

config TN3270
	tristate "Support for locally attached 3270 terminals"
	help
	  Include support for IBM 3270 terminals.

config TN3270_TTY
	tristate "Support for tty input/output on 3270 terminals"
	depends on TN3270
	help
	  Include support for using an IBM 3270 terminal as a Linux tty.

config TN3270_FS
	tristate "Support for fullscreen applications on 3270 terminals"
	depends on TN3270
	help
	  Include support for fullscreen applications on an IBM 3270 terminal.

config TN3270_CONSOLE
	bool "Support for console on 3270 terminal"
	depends on TN3270=y && TN3270_TTY=y
	help
	  Include support for using an IBM 3270 terminal as a Linux system
	  console.  Available only if 3270 support is compiled in statically.

config TN3215
	bool "Support for 3215 line mode terminal"
	help
	  Include support for IBM 3215 line-mode terminals.

config TN3215_CONSOLE
	bool "Support for console on 3215 line mode terminal"
	depends on TN3215
	help
	  Include support for using an IBM 3215 line-mode terminal as a
	  Linux system console.

config CCW_CONSOLE
 	bool
 	depends on TN3215_CONSOLE || TN3270_CONSOLE
 	default y
 
config SCLP_TTY
	bool "Support for SCLP line mode terminal"
	help
	  Include support for IBM SCLP line-mode terminals.

config SCLP_CONSOLE
	bool "Support for console on SCLP line mode terminal"
	depends on SCLP_TTY
	help
	  Include support for using an IBM HWC line-mode terminal as the Linux
	  system console.

config SCLP_VT220_TTY
	bool "Support for SCLP VT220-compatible terminal"
	help
	  Include support for an IBM SCLP VT220-compatible terminal.

config SCLP_VT220_CONSOLE
	bool "Support for console on SCLP VT220-compatible terminal"
	depends on SCLP_VT220_TTY
	help
	  Include support for using an IBM SCLP VT220-compatible terminal as a
	  Linux system console.

config SCLP_CPI
	tristate "Control-Program Identification"
	help
	  This option enables the hardware console interface for system
	  identification. This is commonly used for workload management and
	  gives you a nice name for the system on the service element.
	  Please select this option as a module since built-in operation is
	  completely untested.
	  You should only select this option if you know what you are doing,
	  need this feature and intend to run your kernel in LPAR.

config S390_TAPE
	tristate "S/390 tape device support"
	help
	  Select this option if you want to access channel-attached tape
	  devices on IBM S/390 or zSeries.
	  If you select this option you will also want to select at
	  least one of the tape interface options and one of the tape
	  hardware options in order to access a tape device.
	  This option is also available as a module. The module will be
	  called tape390 and include all selected interfaces and
	  hardware drivers.

comment "S/390 tape interface support"
	depends on S390_TAPE

config S390_TAPE_BLOCK
	bool "Support for tape block devices"
	depends on S390_TAPE
	help
	  Select this option if you want to access your channel-attached tape
	  devices using the block device interface.  This interface is similar
	  to CD-ROM devices on other platforms.  The tapes can only be
	  accessed read-only when using this interface.  Have a look at
	  <file:Documentation/s390/TAPE> for further information about creating
	  volumes for and using this interface.  It is safe to say "Y" here.

comment "S/390 tape hardware support"
	depends on S390_TAPE

config S390_TAPE_34XX
	tristate "Support for 3480/3490 tape hardware"
	depends on S390_TAPE
	help
	  Select this option if you want to access IBM 3480/3490 magnetic
	  tape subsystems and 100% compatibles.
	  It is safe to say "Y" here.

config S390_TAPE_3590
	tristate "Support for 3590 tape hardware"
	depends on S390_TAPE
	help
	  Select this option if you want to access IBM 3590 magnetic
	  tape subsystems and 100% compatibles.
	  It is safe to say "Y" here.

config VMLOGRDR
	tristate "Support for the z/VM recording system services (VM only)"
	depends on IUCV
	help
	  Select this option if you want to be able to receive records collected
	  by the z/VM recording system services, eg. from *LOGREC, *ACCOUNT or
	  *SYMPTOM.
	  This driver depends on the IUCV support driver.

config VMCP
	tristate "Support for the z/VM CP interface (VM only)"
	help
	  Select this option if you want to be able to interact with the control
	  program on z/VM


config MONREADER
	tristate "API for reading z/VM monitor service records"
	depends on IUCV
	help
	  Character device driver for reading z/VM monitor service records

config MONWRITER
	tristate "API for writing z/VM monitor service records"
	default "m"
	help
	  Character device driver for writing z/VM monitor service records

endmenu

menu "Cryptographic devices"

config ZCRYPT
	tristate "Support for PCI-attached cryptographic adapters"
	select ZCRYPT_MONOLITHIC if ZCRYPT="y"
	default "m"
	help
	  Select this option if you want to use a PCI-attached cryptographic
	  adapter like:
	  + PCI Cryptographic Accelerator (PCICA)
	  + PCI Cryptographic Coprocessor (PCICC)
	  + PCI-X Cryptographic Coprocessor (PCIXCC)
	  + Crypto Express2 Coprocessor (CEX2C)
	  + Crypto Express2 Accelerator (CEX2A)

config ZCRYPT_MONOLITHIC
	bool "Monolithic zcrypt module"
	depends on ZCRYPT="m"
	help
	  Select this option if you want to have a single module z90crypt.ko
	  that contains all parts of the crypto device driver (ap bus,
	  request router and all the card drivers).

endmenu
