# SPDX-License-Identifier: GPL-2.0

config HVC_DRIVER
	bool
	help
	  Generic "hypervisor virtual console" infrastructure for various
	  hypervisors (pSeries, iSeries, Xen).
	  It will automatically be selected if one of the back-end console drivers
	  is selected.

config HVC_IRQ
	bool

config HVC_CONSOLE
	bool "pSeries Hypervisor Virtual Console support"
	depends on PPC_PSERIES
	select HVC_DRIVER
	select HVC_IRQ
	help
	  pSeries machines when partitioned support a hypervisor virtual
	  console. This driver allows each pSeries partition to have a console
	  which is accessed via the HMC.

config HVC_OLD_HVSI
	bool "Old driver for pSeries serial port (/dev/hvsi*)"
	depends on HVC_CONSOLE

config HVC_OPAL
	bool "OPAL Console support"
	depends on PPC_POWERNV
	select HVC_DRIVER
	select HVC_IRQ
	default y
	help
	  PowerNV machines running under OPAL need that driver to get a console

config HVC_RTAS
	bool "IBM RTAS Console support"
	depends on PPC_RTAS
	select HVC_DRIVER
	help
	  IBM Console device driver which makes use of RTAS

config HVC_IUCV
	bool "z/VM IUCV Hypervisor console support (VM only)"
	depends on S390 && NET
	select HVC_DRIVER
	select IUCV
	default y
	help
	  This driver provides a Hypervisor console (HVC) back-end to access
	  a Linux (console) terminal via a z/VM IUCV communication path.

config HVC_XEN
	bool "Xen Hypervisor Console support"
	depends on XEN
	select HVC_DRIVER
	select HVC_IRQ
	default y
	help
	  Xen virtual console device driver

config HVC_XEN_FRONTEND
	bool "Xen Hypervisor Multiple Consoles support"
	depends on HVC_XEN
	select XEN_XENBUS_FRONTEND
	default y
	help
	  Xen driver for secondary virtual consoles

config HVC_UDBG
	bool "udbg based fake hypervisor console"
	depends on PPC
	select HVC_DRIVER
	help
	  This is meant to be used during HW bring up or debugging when
	  no other console mechanism exist but udbg, to get you a quick
	  console for userspace. Do NOT enable in production kernels.

config HVC_DCC
	bool "ARM JTAG DCC console"
	depends on ARM || ARM64
	select HVC_DRIVER
	select SERIAL_CORE_CONSOLE
	help
	  This console uses the JTAG DCC on ARM to create a console under the HVC
	  driver. This console is used through a JTAG only on ARM. If you don't have
	  a JTAG then you probably don't want this option.

config HVC_DCC_SERIALIZE_SMP
	bool "Use DCC only on CPU core 0"
	depends on SMP && HVC_DCC
	help
	  This is a DEBUG option to serialize all console input and output to CPU 0.
	  Some external debuggers, do not handle reads/writes from/to DCC on more
	  than one CPU core. Each core has its own DCC device registers, so when a
	  CPU core reads or writes from/to DCC, it only accesses its own DCC device.
	  Since kernel code can run on any CPU core, every time the kernel wants to
	  write to the console, it might write to a different DCC.

	  In SMP mode, external debuggers create multiple windows, and each window
	  shows the DCC output only from that core's DCC. The result is that
	  console output is either lost or scattered across windows.

	  Enable this option only if you are sure that you do not need features like
	  CPU hotplug to work. For example, during early chipset bringups without
	  debug serial console support. If unsure, say N.

config HVC_RISCV_SBI
	bool "RISC-V SBI console support"
	depends on RISCV_SBI_V01
	select HVC_DRIVER
	help
	  This enables support for console output via RISC-V SBI calls, which
	  is normally used only during boot to output printk.

	  If you don't know what do to here, say Y.

config HVCS
	tristate "IBM Hypervisor Virtual Console Server support"
	depends on PPC_PSERIES && HVC_CONSOLE
	help
	  Partitionable IBM Power5 ppc64 machines allow hosting of
	  firmware virtual consoles from one Linux partition by
	  another Linux partition.  This driver allows console data
	  from Linux partitions to be accessed through TTY device
	  interfaces in the device tree of a Linux partition running
	  this driver.

	  To compile this driver as a module, choose M here: the
	  module will be called hvcs.  Additionally, this module
	  will depend on arch specific APIs exported from hvcserver.ko
	  which will also be compiled when this driver is built as a
	  module.
