#
# 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_FAKE
	tristate "Fake PCI Hotplug driver"
	help
	  Say Y here if you want to use the fake PCI hotplug driver. It can
	  be used to simulate PCI hotplug events if even if your system is
	  not PCI hotplug capable.

	  This driver will "emulate" removing PCI devices from the system.
	  If the "power" file is written to with "0" then the specified PCI
	  device will be completely removed from the kernel.

	  WARNING, this does NOT turn off the power to the PCI device.
	  This is a "logical" removal, not a physical or electrical
	  removal.

	  Use this module at your own risk.  You have been warned!

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

	  When in doubt, say N.

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
	tristate "ACPI PCI Hotplug driver"
	depends on (!ACPI_DOCK && ACPI) || (ACPI_DOCK)
	help
	  Say Y here if you have a system that supports PCI Hotplug using
	  ACPI.

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

	  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 && !HOTPLUG_PCI_FAKE
	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.

endif # HOTPLUG_PCI
