menu "IEEE 1394 (FireWire) support"
	depends on PCI || BROKEN

source "drivers/firewire/Kconfig"

config IEEE1394
	tristate "Stable FireWire stack"
	depends on PCI || BROKEN
	help
	  IEEE 1394 describes a high performance serial bus, which is also
	  known as FireWire(tm) or i.Link(tm) and is used for connecting all
	  sorts of devices (most notably digital video cameras) to your
	  computer.

	  If you have FireWire hardware and want to use it, say Y here.  This
	  is the core support only, you will also need to select a driver for
	  your IEEE 1394 adapter.

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

config IEEE1394_OHCI1394
	tristate "OHCI-1394 controllers"
	depends on PCI && IEEE1394
	help
	  Enable this driver if you have an IEEE 1394 controller based on the
	  OHCI-1394 specification. The current driver is only tested with OHCI
	  chipsets made by Texas Instruments and NEC. Most third-party vendors
	  use one of these chipsets.  It should work with any OHCI-1394
	  compliant card, however.

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

	  NOTE:

	  You should only build either ohci1394 or the new firewire-ohci driver,
	  but not both.  If you nevertheless want to install both, you should
	  configure them only as modules and blacklist the driver(s) which you
	  don't want to have auto-loaded.  Add either

	      blacklist firewire-ohci
	  or
	      blacklist ohci1394
	      blacklist video1394
	      blacklist dv1394

	  to /etc/modprobe.conf or /etc/modprobe.d/* and update modprobe.conf
	  depending on your distribution.  The latter two modules should be
	  blacklisted together with ohci1394 because they depend on ohci1394.

	  If you have an old modprobe which doesn't implement the blacklist
	  directive, use "install modulename /bin/true" for the modules to be
	  blacklisted.

comment "PCILynx controller requires I2C"
	depends on IEEE1394 && I2C=n

config IEEE1394_PCILYNX
	tristate "PCILynx controller"
	depends on PCI && IEEE1394 && I2C
	select I2C_ALGOBIT
	help
	  Say Y here if you have an IEEE-1394 controller with the Texas
	  Instruments PCILynx chip.  Note: this driver is written for revision
	  2 of this chip and may not work with revision 0.

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

	  Only some old and now very rare PCI and CardBus cards and
	  PowerMacs G3 B&W contain the PCILynx controller.  Therefore
	  almost everybody can say N here.

comment "SBP-2 support (for storage devices) requires SCSI"
	depends on IEEE1394 && SCSI=n

config IEEE1394_SBP2
	tristate "Storage devices (SBP-2 protocol)"
	depends on IEEE1394 && SCSI
	help
	  This option enables you to use SBP-2 devices connected to an IEEE
	  1394 bus.  SBP-2 devices include storage devices like harddisks and
	  DVD drives, also some other FireWire devices like scanners.

	  You should also enable support for disks, CD-ROMs, etc. in the SCSI
	  configuration section.

config IEEE1394_SBP2_PHYS_DMA
	bool "Enable replacement for physical DMA in SBP2"
	depends on IEEE1394_SBP2 && VIRT_TO_BUS && EXPERIMENTAL
	help
	  This builds sbp2 for use with non-OHCI host adapters which do not
	  support physical DMA or for when ohci1394 is run with phys_dma=0.
	  Physical DMA is data movement without assistance of the drivers'
	  interrupt handlers.  This option includes the interrupt handlers
	  that are required in absence of this hardware feature.

	  This option is buggy and currently broken on some architectures.
	  If unsure, say N.

config IEEE1394_ETH1394_ROM_ENTRY
	depends on IEEE1394
	bool
	default n

config IEEE1394_ETH1394
	tristate "IP over 1394"
	depends on IEEE1394 && EXPERIMENTAL && INET
	select IEEE1394_ETH1394_ROM_ENTRY
	help
	  This driver implements a functional majority of RFC 2734: IPv4 over
	  1394.  It will provide IP connectivity with implementations of RFC
	  2734 found on other operating systems.  It will not communicate with
	  older versions of this driver found in stock kernels prior to 2.6.3.
	  This driver is still considered experimental.  It does not yet support
	  MCAP, therefore multicast support is significantly limited.

	  The module is called eth1394 although it does not emulate Ethernet.

config IEEE1394_RAWIO
	tristate "raw1394 userspace interface"
	depends on IEEE1394
	help
	  This option adds support for the raw1394 device file which enables
	  direct communication of user programs with IEEE 1394 devices
	  (isochronous and asynchronous).  Almost all application programs
	  which access FireWire require this option.

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

config IEEE1394_VIDEO1394
	tristate "video1394 userspace interface"
	depends on IEEE1394 && IEEE1394_OHCI1394
	help
	  This option adds support for the video1394 device files which enable
	  isochronous communication of user programs with IEEE 1394 devices,
	  especially video capture or export.  This interface is used by all
	  libdc1394 based programs and by several other programs, in addition to
	  the raw1394 interface.  It is generally not required for DV capture.

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

config IEEE1394_DV1394
	tristate "dv1394 userspace interface (deprecated)"
	depends on IEEE1394 && IEEE1394_OHCI1394
	help
	  The dv1394 driver is unsupported and may be removed from Linux in a
	  future release.  Its functionality is now provided by raw1394 together
	  with libraries such as libiec61883.

config IEEE1394_VERBOSEDEBUG
	bool "Excessive debugging output"
	depends on IEEE1394
	help
	  If you say Y here, you will get very verbose debugging logs from the
	  ieee1394 drivers, including sent and received packet headers.  This
	  will quickly result in large amounts of data sent to the system log.

	  Say Y if you really need the debugging output.  Everyone else says N.

endmenu
