# 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 && TTY
	help
	  Include support for IBM 3270 terminals.

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
	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 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 its 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_UV_UAPI
	def_tristate m
	prompt "Ultravisor userspace API"
	depends on S390
	help
	  Selecting exposes parts of the UV interface to userspace
	  by providing a misc character device at /dev/uv.
	  Using IOCTLs one can interact with the UV.
	  The device is only available if the Ultravisor
	  Facility (158) is present.

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.
