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

source "drivers/firewire/Kconfig"

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_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_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
