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

config IEEE1394
	tristate "IEEE 1394 (FireWire) support"
	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.

comment "Subsystem Options"
	depends on IEEE1394

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 subsystem which includes a dump of the header of every sent
	  and received packet.  This can amount to a high amount of data
	  collected in a very short time which is usually also saved to
	  disk by the system logging daemons.

	  Say Y if you really want or need the debugging output, everyone
	  else says N.

comment "Controllers"
	depends on IEEE1394

comment "Texas Instruments PCILynx requires I2C"
	depends on IEEE1394 && I2C=n

config IEEE1394_PCILYNX
	tristate "Texas Instruments PCILynx support"
	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.

config IEEE1394_OHCI1394
	tristate "OHCI-1394 support"
	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.

comment "Protocols"
	depends on IEEE1394

config IEEE1394_VIDEO1394
	tristate "OHCI-1394 Video support"
	depends on IEEE1394 && IEEE1394_OHCI1394
	help
	  This option enables video device usage for OHCI-1394 cards.  Enable
	  this option only if you have an IEEE 1394 video device connected to
	  an OHCI-1394 card.

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

config IEEE1394_SBP2
	tristate "SBP-2 support (Harddisks etc.)"
	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 && IEEE1394_SBP2 && EXPERIMENTAL && (X86_32 || PPC_32)
	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_DV1394
	tristate "OHCI-DV I/O support (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_RAWIO
	tristate "Raw IEEE1394 I/O support"
	depends on IEEE1394
	help
	  This option adds support for the raw1394 device file which enables
	  direct communication of user programs with the IEEE 1394 bus and thus
	  with the attached peripherals.  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.

endmenu
