#
# Plug and Play BIOS configuration
#
config PNPBIOS
	bool "Plug and Play BIOS support"
	depends on ISA && X86_32
	default n
	---help---
	  Linux uses the PNPBIOS as defined in "Plug and Play BIOS
	  Specification Version 1.0A May 5, 1994" to autodetect built-in
	  mainboard resources (e.g. parallel port resources).

	  Some features (e.g. event notification, docking station information,
	  ISAPNP services) are not currently implemented.

	  If you would like the kernel to detect and allocate resources to
	  your mainboard devices (on some systems they are disabled by the
	  BIOS) say Y here.  Also the PNPBIOS can help prevent resource
	  conflicts between mainboard devices and other bus devices.

	  Note: ACPI is expected to supersede PNPBIOS some day, currently it
	  co-exists nicely.  If you have a non-ISA system that supports ACPI,
	  you probably don't need PNPBIOS support.

config PNPBIOS_PROC_FS
	bool "Plug and Play BIOS /proc interface"
	depends on PNPBIOS && PROC_FS
	---help---
	  If you say Y here and to "/proc file system support", you will be
	  able to directly access the PNPBIOS.  This includes resource
	  allocation, ESCD, and other PNPBIOS services.  Using this
	  interface is potentially dangerous because the PNPBIOS driver will
	  not be notified of any resource changes made by writing directly.
	  Also some buggy systems will fault when accessing certain features
	  in the PNPBIOS /proc interface (e.g. "boot" configs).

	  See the latest pcmcia-cs (stand-alone package) for a nice set of
	  PNPBIOS /proc interface tools (lspnp and setpnp).

	  Unless you are debugging or have other specific reasons, it is
	  recommended that you say N here.

