# SPDX-License-Identifier: GPL-2.0
#
# PCI Hotplug support
#

menuconfig HOTPLUG_PCI
	bool "Support for PCI Hotplug"
	depends on PCI && SYSFS
	help
	  Say Y here if you have a motherboard with a PCI Hotplug controller.
	  This allows you to add and remove PCI cards while the machine is
	  powered up and running.

	  When in doubt, say N.

if HOTPLUG_PCI

config HOTPLUG_PCI_COMPAQ
	tristate "Compaq PCI Hotplug driver"
	depends on X86 && PCI_BIOS
	help
	  Say Y here if you have a motherboard with a Compaq PCI Hotplug
	  controller.

	  To compile this driver as a module, choose M here: the
	  module will be called cpqphp.

	  When in doubt, say N.

config HOTPLUG_PCI_COMPAQ_NVRAM
	bool "Save configuration into NVRAM on Compaq servers"
	depends on HOTPLUG_PCI_COMPAQ
	help
	  Say Y here if you have a Compaq server that has a PCI Hotplug
	  controller.  This will allow the PCI Hotplug driver to store the PCI
	  system configuration options in NVRAM.

	  When in doubt, say N.

config HOTPLUG_PCI_IBM
	tristate "IBM PCI Hotplug driver"
	depends on X86_IO_APIC && X86 && PCI_BIOS
	help
	  Say Y here if you have a motherboard with a IBM PCI Hotplug
	  controller.

	  To compile this driver as a module, choose M here: the
	  module will be called ibmphp.

	  When in doubt, say N.

config HOTPLUG_PCI_ACPI
	bool "ACPI PCI Hotplug driver"
	depends on HOTPLUG_PCI=y && ((!ACPI_DOCK && ACPI) || (ACPI_DOCK))
	help
	  Say Y here if you have a system that supports PCI Hotplug using
	  ACPI.

	  When in doubt, say N.

config HOTPLUG_PCI_ACPI_IBM
	tristate "ACPI PCI Hotplug driver IBM extensions"
	depends on HOTPLUG_PCI_ACPI
	help
	  Say Y here if you have an IBM system that supports PCI Hotplug using
	  ACPI.

	  To compile this driver as a module, choose M here: the
	  module will be called acpiphp_ibm.

	  When in doubt, say N.

config HOTPLUG_PCI_CPCI
	bool "CompactPCI Hotplug driver"
	help
	  Say Y here if you have a CompactPCI system card with CompactPCI
	  hotswap support per the PICMG 2.1 specification.

	  When in doubt, say N.

config HOTPLUG_PCI_CPCI_ZT5550
	tristate "Ziatech ZT5550 CompactPCI Hotplug driver"
	depends on HOTPLUG_PCI_CPCI && X86
	help
	  Say Y here if you have an Performance Technologies (formerly Intel,
	  formerly just Ziatech) Ziatech ZT5550 CompactPCI system card.

	  To compile this driver as a module, choose M here: the
	  module will be called cpcihp_zt5550.

	  When in doubt, say N.

config HOTPLUG_PCI_CPCI_GENERIC
	tristate "Generic port I/O CompactPCI Hotplug driver"
	depends on HOTPLUG_PCI_CPCI && X86
	help
	  Say Y here if you have a CompactPCI system card that exposes the #ENUM
	  hotswap signal as a bit in a system register that can be read through
	  standard port I/O.

	  To compile this driver as a module, choose M here: the
	  module will be called cpcihp_generic.

	  When in doubt, say N.

config HOTPLUG_PCI_SHPC
	bool "SHPC PCI Hotplug driver"
	help
	  Say Y here if you have a motherboard with a SHPC PCI Hotplug
	  controller.

	  When in doubt, say N.

config HOTPLUG_PCI_POWERNV
	tristate "PowerPC PowerNV PCI Hotplug driver"
	depends on PPC_POWERNV && EEH
	select OF_DYNAMIC
	help
	  Say Y here if you run PowerPC PowerNV platform that supports
	  PCI Hotplug

	  To compile this driver as a module, choose M here: the
	  module will be called pnv-php.

	  When in doubt, say N.

config HOTPLUG_PCI_RPA
	tristate "RPA PCI Hotplug driver"
	depends on PPC_PSERIES && EEH
	help
	  Say Y here if you have a RPA system that supports PCI Hotplug.

	  To compile this driver as a module, choose M here: the
	  module will be called rpaphp.

	  When in doubt, say N.

config HOTPLUG_PCI_RPA_DLPAR
	tristate "RPA Dynamic Logical Partitioning for I/O slots"
	depends on HOTPLUG_PCI_RPA
	help
	  Say Y here if your system supports Dynamic Logical Partitioning
	  for I/O slots.

	  To compile this driver as a module, choose M here: the
	  module will be called rpadlpar_io.

	  When in doubt, say N.

config HOTPLUG_PCI_S390
	bool "System z PCI Hotplug Support"
	depends on S390 && 64BIT
	help
	  Say Y here if you want to use the System z PCI Hotplug
	  driver for PCI devices. Without this driver it is not
	  possible to access stand-by PCI functions nor to deconfigure
	  PCI functions.

	  When in doubt, say Y.

endif # HOTPLUG_PCI
