# 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 core 0"
	depends on SMP && HVC_DCC
	help
	  Some debuggers, such as Trace32 from Lauterbach GmbH, do not handle
	  reads/writes from/to DCC on more than one core. Each core has its
	  own DCC device registers, so when a core reads or writes from/to DCC,
	  it only accesses its own DCC device. Since kernel code can run on
	  any core, every time the kernel wants to write to the console, it
	  might write to a different DCC.

	  In SMP mode, Trace32 only uses the DCC on core 0. In AMP mode, it
	  creates 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.

	  Selecting this option will enable code that serializes all console
	  input and output to core 0. The DCC driver will create input and
	  output FIFOs that all cores will use. Reads and writes from/to DCC
	  are handled by a workqueue that runs only core 0.

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.
