# SPDX-License-Identifier: GPL-2.0-only
#
# SoundWire subsystem configuration
#

menuconfig SOUNDWIRE
	tristate "SoundWire support"
	depends on ACPI || OF
	help
	  SoundWire is a 2-Pin interface with data and clock line ratified
	  by the MIPI Alliance. SoundWire is used for transporting data
	  typically related to audio functions. SoundWire interface is
	  optimized to integrate audio devices in mobile or mobile inspired
	  systems. Say Y to enable this subsystem, N if you do not have such
	  a device

if SOUNDWIRE

comment "SoundWire Devices"

config SOUNDWIRE_CADENCE
	tristate

config SOUNDWIRE_INTEL
	tristate "Intel SoundWire Master driver"
	select SOUNDWIRE_CADENCE
	select SOUNDWIRE_GENERIC_ALLOCATION
	select AUXILIARY_BUS
	depends on ACPI && SND_SOC
	help
	  SoundWire Intel Master driver.
	  If you have an Intel platform which has a SoundWire Master then
	  enable this config option to get the SoundWire support for that
	  device.

config SOUNDWIRE_QCOM
	tristate "Qualcomm SoundWire Master driver"
	imply SLIMBUS
	depends on SND_SOC
	help
	  SoundWire Qualcomm Master driver.
	  If you have an Qualcomm platform which has a SoundWire Master then
	  enable this config option to get the SoundWire support for that
	  device

config SOUNDWIRE_GENERIC_ALLOCATION
	tristate

endif
