config IEEE1394
	tristate "Legacy alternative FireWire driver 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.

	  NOTE:
	  ieee1394 is superseded by the newer firewire-core driver.  See
	  http://ieee1394.wiki.kernel.org/index.php/Juju_Migration for
	  further information on how to switch to the new FireWire drivers.

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:
	  ohci1394 is superseded by the newer firewire-ohci driver.  See
	  http://ieee1394.wiki.kernel.org/index.php/Juju_Migration for
	  further information on how to switch to the new FireWire drivers.

	  If you want to install firewire-ohci and ohci1394 together, you
	  should configure them only as modules and blacklist the driver(s)
	  which you don't want to have auto-loaded.  Add either

	      blacklist ohci1394
	      blacklist video1394
	      blacklist dv1394
	  or
	      blacklist firewire-ohci

	  to /etc/modprobe.conf or /etc/modprobe.d/* and update modprobe.conf
	  depending on your distribution.

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.

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

	  NOTE:
	  sbp2 is superseded by the newer firewire-sbp2 driver. See
	  http://ieee1394.wiki.kernel.org/index.php/Juju_Migration for
	  further information on how to switch to the new FireWire drivers.

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 networking over 1394 (experimental)"
	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.

	  NOTE:
	  eth1394 is superseded by the newer firewire-net driver. See
	  http://ieee1394.wiki.kernel.org/index.php/Juju_Migration for
	  further information on how to switch to the new FireWire drivers.

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.

	  NOTE:
	  raw1394 is superseded by the newer firewire-core driver. See
	  http://ieee1394.wiki.kernel.org/index.php/Juju_Migration for
	  further information on how to switch to the new FireWire drivers.

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.

	  NOTE:
	  video1394 is superseded by the newer firewire-core driver. See
	  http://ieee1394.wiki.kernel.org/index.php/Juju_Migration for
	  further information on how to switch to the new FireWire drivers.

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 either
	  raw1394 or firewire-core 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.
