menuconfig SND_FIREWIRE
	bool "FireWire sound devices"
	depends on FIREWIRE
	default y
	help
	  Support for IEEE-1394/FireWire/iLink sound devices.

if SND_FIREWIRE && FIREWIRE

config SND_FIREWIRE_LIB
	tristate
	select SND_PCM
	select SND_RAWMIDI

config SND_DICE
	tristate "DICE-based DACs support"
	select SND_HWDEP
	select SND_FIREWIRE_LIB
	help
	  Say Y here to include support for many DACs based on the DICE
	  chip family (DICE-II/Jr/Mini) which TC Applied Technologies produces.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-dice.

config SND_OXFW
	tristate "Oxford Semiconductor FW970/971 chipset support"
	select SND_FIREWIRE_LIB
	select SND_HWDEP
	help
	  Say Y here to include support for FireWire devices based on
	  Oxford Semiconductor FW970/971 chipset.
	   * Griffin Firewave
	   * LaCie Firewire Speakers
	   * Behringer F-Control Audio 202
	   * Mackie(Loud) Onyx-i series (former models)
	   * Mackie(Loud) Onyx 1640i (former model)
	   * Mackie(Loud) Onyx Satellite
	   * Mackie(Loud) Tapco Link.Firewire
	   * Mackie(Loud) d.2 pro/d.4 pro
	   * Mackie(Loud) U.420/U.420d
	   * TASCAM FireOne
	   * Stanton Controllers & Systems 1 Deck/Mixer

	  To compile this driver as a module, choose M here: the module
	  will be called snd-oxfw.

config SND_ISIGHT
	tristate "Apple iSight microphone"
	select SND_FIREWIRE_LIB
	help
	  Say Y here to include support for the front and rear microphones
	  of the Apple iSight web camera.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-isight.

config SND_FIREWORKS
	tristate "Echo Fireworks board module support"
	select SND_FIREWIRE_LIB
	select SND_HWDEP
	help
	  Say Y here to include support for FireWire devices based
	  on Echo Digital Audio Fireworks board:
	   * Mackie Onyx 400F/1200F
	   * Echo AudioFire12/8(until 2009 July)
	   * Echo AudioFire2/4/Pre8/8(since 2009 July)
	   * Echo Fireworks 8/HDMI
	   * Gibson Robot Interface Pack/GoldTop

	  To compile this driver as a module, choose M here: the module
	  will be called snd-fireworks.

config SND_BEBOB
	tristate "BridgeCo DM1000/DM1100/DM1500 with BeBoB firmware"
	select SND_FIREWIRE_LIB
	select SND_HWDEP
        help
	 Say Y here to include support for FireWire devices based
	 on BridgeCo DM1000/DM1100/DM1500 with BeBoB firmware:
	  * Edirol FA-66/FA-101
	  * PreSonus FIREBOX/FIREPOD/FP10/Inspire1394
	  * BridgeCo RDAudio1/Audio5
	  * Mackie Onyx 1220/1620/1640 (FireWire I/O Card)
	  * Mackie d.2 (FireWire Option)
	  * Stanton FinalScratch 2 (ScratchAmp)
	  * Tascam IF-FW/DM
	  * Behringer XENIX UFX 1204/1604
	  * Behringer Digital Mixer X32 series (X-UF Card)
	  * Behringer FCA610/1616
	  * Apogee Rosetta 200/400 (X-FireWire card)
	  * Apogee DA/AD/DD-16X (X-FireWire card)
	  * Apogee Ensemble
	  * ESI QuataFire 610
	  * AcousticReality eARMasterOne
	  * CME MatrixKFW
	  * Phonic Helix Board 12 MkII/18 MkII/24 MkII
	  * Phonic Helix Board 12 Universal/18 Universal/24 Universal
	  * Lynx Aurora 8/16 (LT-FW)
	  * ICON FireXon
	  * PrismSound Orpheus/ADA-8XR
	  * TerraTec PHASE 24 FW/PHASE X24 FW/PHASE 88 Rack FW
	  * TerraTec EWS MIC2/EWS MIC8
	  * TerraTec Aureon 7.1 FireWire
	  * Yamaha GO44/GO46
	  * Focusrite Saffire/Saffire LE/SaffirePro10 IO/SaffirePro26 IO
	  * M-Audio FireWire410/AudioPhile/Solo
	  * M-Audio Ozonic/NRV10/ProfireLightBridge
	  * M-Audio FireWire 1814/ProjectMix IO
	  * Digidesign Mbox 2 Pro

          To compile this driver as a module, choose M here: the module
          will be called snd-bebob.

config SND_FIREWIRE_DIGI00X
	tristate "Digidesign Digi 002/003 family support"
	select SND_FIREWIRE_LIB
	select SND_HWDEP
	help
	 Say Y here to include support for Digidesign Digi 002/003 family.
	  * Digi 002 Console
	  * Digi 002 Rack
	  * Digi 003 Console
	  * Digi 003 Rack
	  * Digi 003 Rack+

	 To compile this driver as a module, choose M here: the module
	 will be called snd-firewire-digi00x.

config SND_FIREWIRE_TASCAM
	tristate "TASCAM FireWire series support"
	select SND_FIREWIRE_LIB
	select SND_HWDEP
	help
	 Say Y here to include support for TASCAM.
	  * FW-1884
	  * FW-1082
	  * FW-1804

	 To compile this driver as a module, choose M here: the module
	 will be called snd-firewire-tascam.

config SND_FIREWIRE_MOTU
	tristate "Mark of the unicorn FireWire series support"
	select SND_FIREWIRE_LIB
	select SND_HWDEP
	help
	 Say Y here to enable support for FireWire devices which MOTU produced:
	  * 828mk2
	  * 828mk3

	 To compile this driver as a module, choose M here: the module
	 will be called snd-firewire-motu.

config SND_FIREFACE
	tristate "RME Fireface series support"
	select SND_FIREWIRE_LIB
	select SND_HWDEP
	help
	 Say Y here to include support for RME fireface series.
	  * Fireface 400

endif # SND_FIREWIRE
