# 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 (built-in FireWire card with OXFW971 ASIC)
	   * 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 (optional FireWire card with DM1000 ASIC)
	  * 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
	  * ToneWeal FW66

	  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
	  * Ultralite
	  * 8pre
	  * 828mk3 (FireWire only)
	  * 828mk3 (Hybrid)
	  * Audio Express
	  * 4pre

	 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 UFX
	  * Fireface UCX
	  * Fireface 802

endif # SND_FIREWIRE
