# 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
	  * 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
