
menu "I2O device support"

config I2O
	tristate "I2O support"
	depends on PCI
	---help---
	  The Intelligent Input/Output (I2O) architecture allows hardware
	  drivers to be split into two parts: an operating system specific
	  module called the OSM and an hardware specific module called the
	  HDM. The OSM can talk to a whole range of HDM's, and ideally the
	  HDM's are not OS dependent. This allows for the same HDM driver to
	  be used under different operating systems if the relevant OSM is in
	  place. In order for this to work, you need to have an I2O interface
	  adapter card in your computer. This card contains a special I/O
	  processor (IOP), thus allowing high speeds since the CPU does not
	  have to deal with I/O.

	  If you say Y here, you will get a choice of interface adapter
	  drivers and OSM's with the following questions.

	  To compile this support as a module, choose M here: the
	  modules will be called i2o_core.

	  If unsure, say N.

config I2O_LCT_NOTIFY_ON_CHANGES
	bool "Enable LCT notification"
	depends on I2O
	default y
	---help---
	  Only say N here if you have a I2O controller from SUN. The SUN
	  firmware doesn't support LCT notification on changes. If this option
	  is enabled on such a controller the driver will hang up in a endless
	  loop. On all other controllers say Y.

	  If unsure, say Y.

config I2O_EXT_ADAPTEC
	bool "Enable Adaptec extensions"
	depends on I2O
	default y
	---help---
	  Say Y for support of raidutils for Adaptec I2O controllers. You also
	  have to say Y to "I2O Configuration support", "I2O SCSI OSM" below
	  and to "SCSI generic support" under "SCSI device configuration".

config I2O_EXT_ADAPTEC_DMA64
	bool "Enable 64-bit DMA"
	depends on I2O_EXT_ADAPTEC && ( 64BIT || HIGHMEM64G )
	default y
	---help---
	  Say Y for support of 64-bit DMA transfer mode on Adaptec I2O
	  controllers.
	  Note: You need at least firmware version 3709.

config I2O_CONFIG
	tristate "I2O Configuration support"
	depends on I2O
	---help---
	  Say Y for support of the configuration interface for the I2O adapters.
	  If you have a RAID controller from Adaptec and you want to use the
	  raidutils to manage your RAID array, you have to say Y here.

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

	  Note: If you want to use the new API you have to download the
	  i2o_config patch from http://i2o.shadowconnect.com/

config I2O_CONFIG_OLD_IOCTL
	bool "Enable ioctls (OBSOLETE)"
	depends on I2O_CONFIG
	default y
	---help---
	  Enables old ioctls.

config I2O_BUS
	tristate "I2O Bus Adapter OSM"
	depends on I2O
	---help---
	  Include support for the I2O Bus Adapter OSM. The Bus Adapter OSM
	  provides access to the busses on the I2O controller. The main purpose
	  is to rescan the bus to find new devices.

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

config I2O_BLOCK
	tristate "I2O Block OSM"
	depends on I2O
	---help---
	  Include support for the I2O Block OSM. The Block OSM presents disk
	  and other structured block devices to the operating system. If you
	  are using an RAID controller, you could access the array only by
	  the Block OSM driver. But it is possible to access the single disks
	  by the SCSI OSM driver, for example to monitor the disks.

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

config I2O_SCSI
	tristate "I2O SCSI OSM"
	depends on I2O && SCSI
	---help---
	  Allows direct SCSI access to SCSI devices on a SCSI or FibreChannel
	  I2O controller. You can use both the SCSI and Block OSM together if
	  you wish. To access a RAID array, you must use the Block OSM driver.
	  But you could use the SCSI OSM driver to monitor the single disks.

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

config I2O_PROC
	tristate "I2O /proc support"
	depends on I2O
	---help---
	  If you say Y here and to "/proc file system support", you will be
	  able to read I2O related information from the virtual directory
	  /proc/i2o.

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

endmenu

