# SPDX-License-Identifier: GPL-2.0
comment "S/390 character device drivers"
	depends on S390

config TN3270
	def_tristate y
	prompt "Support for locally attached 3270 terminals"
	depends on CCW
	help
	  Include support for IBM 3270 terminals.

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

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

config TN3270_CONSOLE
	def_bool y
	prompt "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
	def_bool y
	prompt "Support for 3215 line mode terminal"
	depends on CCW && TTY
	help
	  Include support for IBM 3215 line-mode terminals.

config TN3215_CONSOLE
	def_bool y
	prompt "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
	def_bool y if TN3215_CONSOLE || TN3270_CONSOLE

config SCLP_TTY
	def_bool y
	prompt "Support for SCLP line mode terminal"
	depends on S390 && TTY
	help
	  Include support for IBM SCLP line-mode terminals.

config SCLP_CONSOLE
	def_bool y
	prompt "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
	def_bool y
	prompt "Support for SCLP VT220-compatible terminal"
	depends on S390 && TTY
	help
	  Include support for an IBM SCLP VT220-compatible terminal.

config SCLP_VT220_CONSOLE
	def_bool y
	prompt "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_ASYNC
	def_tristate m
	prompt "Support for Call Home via Asynchronous SCLP Records"
	depends on S390
	help
	  This option enables the call home function, which is able to inform
	  the service element and connected organisations about a kernel panic.
	  You should only select this option if you know what you are doing,
	  want for inform other people about your kernel panics,
	  need this feature and intend to run your kernel in LPAR.

config SCLP_ASYNC_ID
       string "Component ID for Call Home"
       depends on SCLP_ASYNC
       default "000000000"
       help
	 The Component ID for Call Home is used to identify the correct
	 problem reporting queue the call home records should be sent to.

	 If your are unsure, please use the default value "000000000".

config HMC_DRV
	def_tristate m
	prompt "Support for file transfers from HMC drive CD/DVD-ROM"
	depends on S390
	select CRC16
	help
	  This option enables support for file transfers from a Hardware
	  Management Console (HMC) drive CD/DVD-ROM. It is available as a
	  module, called 'hmcdrv', and also as kernel built-in. There is one
	  optional parameter for this module: cachesize=N, which modifies the
	  transfer cache size from it's default value 0.5MB to N bytes. If N
	  is zero, then no caching is performed.

config SCLP_OFB
	def_bool n
	prompt "Support for Open-for-Business SCLP Event"
	depends on S390
	help
	  This option enables the Open-for-Business interface to the s390
	  Service Element.

config S390_TAPE
	def_tristate m
	prompt "S/390 tape device support"
	depends on CCW
	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 hardware support"
	depends on S390_TAPE

config S390_TAPE_34XX
	def_tristate m
	prompt "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
	def_tristate m
	prompt "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
	def_tristate m
	prompt "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
	def_bool y
	prompt "Support for the z/VM CP interface"
	depends on S390
	select CMA
	help
	  Select this option if you want to be able to interact with the control
	  program on z/VM

config VMCP_CMA_SIZE
	int "Memory in MiB reserved for z/VM CP interface"
	default "4"
	depends on VMCP
	help
	  Specify the default amount of memory in MiB reserved for the z/VM CP
	  interface. If needed this memory is used for large contiguous memory
	  allocations. The default can be changed with the kernel command line
	  parameter "vmcp_cma".

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

config MONWRITER
	def_tristate m
	prompt "API for writing z/VM monitor service records"
	depends on S390
	help
	  Character device driver for writing z/VM monitor service records

config S390_VMUR
	def_tristate m
	prompt "z/VM unit record device driver"
	depends on S390
	help
	  Character device driver for z/VM reader, puncher and printer.

