#
# PCI Hotplug support
#

menuconfig HOTPLUG_PCI
	tristate "Support for PCI Hotplug"
	depends on PCI && HOTPLUG && 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.

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

	  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
	tristate "SHPC PCI Hotplug driver"
	help
	  Say Y here if you have a motherboard with a SHPC PCI Hotplug
	  controller.

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

	  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_SGI
	tristate "SGI PCI Hotplug Support"
	depends on IA64_SGI_SN2 || IA64_GENERIC
	help
	  Say Y here if you want to use the SGI Altix Hotplug
	  Driver for PCI devices.

	  When in doubt, say N.

config HOTPLUG_PCI_S390
	tristate "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
