# SPDX-License-Identifier: GPL-2.0-only
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
	   * APOGEE duet FireWire

	  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
	  * Traveler
	  * 828mk3
	  * Audio Express

	 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
	  * Fireface 800
	  * Fireface UCX

endif # SND_FIREWIRE
