# SPDX-License-Identifier: GPL-2.0-only
menuconfig SND_SOC_SAMSUNG
	tristate "ASoC support for Samsung"
	depends on PLAT_SAMSUNG || ARCH_EXYNOS || COMPILE_TEST
	depends on COMMON_CLK
	select SND_SOC_GENERIC_DMAENGINE_PCM
	---help---
	  Say Y or M if you want to add support for codecs attached to
	  the Samsung SoCs' Audio interfaces. You will also need to
	  select the audio interfaces to support below.

if SND_SOC_SAMSUNG

config SND_S3C24XX_I2S
	tristate

config SND_S3C_I2SV2_SOC
	tristate

config SND_S3C2412_SOC_I2S
	tristate
	select SND_S3C_I2SV2_SOC

config SND_SAMSUNG_PCM
	tristate "Samsung PCM interface support"

config SND_SAMSUNG_SPDIF
	tristate "Samsung SPDIF transmitter support"
	select SND_SOC_SPDIF

config SND_SAMSUNG_I2S
	tristate "Samsung I2S interface support"

config SND_SOC_SAMSUNG_NEO1973_WM8753
	tristate "Audio support for Openmoko Neo1973 Smartphones (GTA02)"
	depends on MACH_NEO1973_GTA02
	select SND_S3C24XX_I2S
	select SND_SOC_WM8753
	select SND_SOC_BT_SCO
	help
	  Say Y here to enable audio support for the Openmoko Neo1973
	  Smartphones.

config SND_SOC_SAMSUNG_JIVE_WM8750
	tristate "SoC I2S Audio support for Jive"
	depends on MACH_JIVE && I2C
	select SND_SOC_WM8750
	select SND_S3C2412_SOC_I2S
	help
	  Say Y if you want to add support for SoC audio on the Jive.

config SND_SOC_SAMSUNG_SMDK_WM8580
	tristate "SoC I2S Audio support for WM8580 on SMDK"
	depends on MACH_SMDK6410 || COMPILE_TEST
	depends on I2C
	select SND_SOC_WM8580
	select SND_SAMSUNG_I2S
	help
	  Say Y if you want to add support for SoC audio on the SMDKs.

config SND_SOC_SAMSUNG_SMDK_WM8994
	tristate "SoC I2S Audio support for WM8994 on SMDK"
	depends on I2C=y
	select MFD_WM8994
	select SND_SOC_WM8994
	select SND_SAMSUNG_I2S
	help
		Say Y if you want to add support for SoC audio on the SMDKs.

config SND_SOC_SAMSUNG_S3C24XX_UDA134X
	tristate "SoC I2S Audio support UDA134X wired to a S3C24XX"
	depends on ARCH_S3C24XX
	select SND_S3C24XX_I2S
	select SND_SOC_L3
	select SND_SOC_UDA134X

config SND_SOC_SAMSUNG_SIMTEC
	tristate
	help
	  Internal node for common S3C24XX/Simtec suppor

config SND_SOC_SAMSUNG_SIMTEC_TLV320AIC23
	tristate "SoC I2S Audio support for TLV320AIC23 on Simtec boards"
	depends on ARCH_S3C24XX && I2C
	select SND_S3C24XX_I2S
	select SND_SOC_TLV320AIC23_I2C
	select SND_SOC_SAMSUNG_SIMTEC

config SND_SOC_SAMSUNG_SIMTEC_HERMES
	tristate "SoC I2S Audio support for Simtec Hermes board"
	depends on ARCH_S3C24XX && I2C
	select SND_S3C24XX_I2S
	select SND_SOC_TLV320AIC3X
	select SND_SOC_SAMSUNG_SIMTEC

config SND_SOC_SAMSUNG_H1940_UDA1380
	tristate "Audio support for the HP iPAQ H1940"
	depends on ARCH_H1940 && I2C
	select SND_S3C24XX_I2S
	select SND_SOC_UDA1380
	help
	  This driver provides audio support for HP iPAQ h1940 PDA.

config SND_SOC_SAMSUNG_RX1950_UDA1380
	tristate "Audio support for the HP iPAQ RX1950"
	depends on MACH_RX1950 && I2C
	select SND_S3C24XX_I2S
	select SND_SOC_UDA1380
	help
	  This driver provides audio support for HP iPAQ RX1950 PDA.

config SND_SOC_SMARTQ
	tristate "SoC I2S Audio support for SmartQ board"
	depends on MACH_SMARTQ || COMPILE_TEST
	depends on GPIOLIB || COMPILE_TEST
	depends on I2C
	select SND_SAMSUNG_I2S
	select SND_SOC_WM8750

config SND_SOC_SAMSUNG_SMDK_SPDIF
	tristate "SoC S/PDIF Audio support for SMDK"
	select SND_SAMSUNG_SPDIF
	help
	  Say Y if you want to add support for SoC S/PDIF audio on the SMDK.

config SND_SOC_SMDK_WM8994_PCM
	tristate "SoC PCM Audio support for WM8994 on SMDK"
	depends on I2C=y
	select MFD_WM8994
	select SND_SOC_WM8994
	select SND_SAMSUNG_PCM
	help
	  Say Y if you want to add support for SoC audio on the SMDK

config SND_SOC_SPEYSIDE
	tristate "Audio support for Wolfson Speyside"
	depends on I2C && SPI_MASTER
	depends on MACH_WLF_CRAGG_6410 || COMPILE_TEST
	select SND_SAMSUNG_I2S
	select SND_SOC_WM8996
	select SND_SOC_WM9081
	select SND_SOC_WM0010
	select SND_SOC_WM1250_EV1

config SND_SOC_TOBERMORY
	tristate "Audio support for Wolfson Tobermory"
	depends on INPUT && I2C
	depends on MACH_WLF_CRAGG_6410 || COMPILE_TEST
	select SND_SAMSUNG_I2S
	select SND_SOC_WM8962

config SND_SOC_BELLS
	tristate "Audio support for Wolfson Bells"
	depends on MFD_ARIZONA && I2C && SPI_MASTER
	depends on MACH_WLF_CRAGG_6410 || COMPILE_TEST
	select SND_SAMSUNG_I2S
	select SND_SOC_WM5102
	select SND_SOC_WM5110
	select SND_SOC_WM9081
	select SND_SOC_WM0010
	select SND_SOC_WM1250_EV1

config SND_SOC_LOWLAND
	tristate "Audio support for Wolfson Lowland"
	depends on I2C
	depends on MACH_WLF_CRAGG_6410 || COMPILE_TEST
	select SND_SAMSUNG_I2S
	select SND_SOC_WM5100
	select SND_SOC_WM9081

config SND_SOC_LITTLEMILL
	tristate "Audio support for Wolfson Littlemill"
	depends on I2C
	depends on MACH_WLF_CRAGG_6410 || COMPILE_TEST
	select SND_SAMSUNG_I2S
	select MFD_WM8994
	select SND_SOC_WM8994

config SND_SOC_SNOW
	tristate "Audio support for Google Snow boards"
	depends on I2C
	select SND_SOC_MAX98090
	select SND_SOC_MAX98095
	select SND_SAMSUNG_I2S
	help
	  Say Y if you want to add audio support for various Snow
	  boards based on Exynos5 series of SoCs.

config SND_SOC_ODROID
	tristate "Audio support for Odroid XU3/XU4"
	depends on SND_SOC_SAMSUNG && I2C
	select SND_SOC_MAX98090
	select SND_SAMSUNG_I2S
	help
	  Say Y here to enable audio support for the Odroid XU3/XU4.

config SND_SOC_ARNDALE
	tristate "Audio support for Arndale Board"
	depends on I2C
	select SND_SAMSUNG_I2S
	select SND_SOC_RT5631
	select MFD_WM8994
	select SND_SOC_WM8994

config SND_SOC_SAMSUNG_TM2_WM5110
	tristate "SoC I2S Audio support for WM5110 on TM2 board"
	depends on SND_SOC_SAMSUNG && MFD_ARIZONA && I2C && SPI_MASTER
	depends on GPIOLIB || COMPILE_TEST
	select SND_SOC_MAX98504
	select SND_SOC_WM5110
	select SND_SAMSUNG_I2S
	help
	  Say Y if you want to add support for SoC audio on the TM2 board.

endif #SND_SOC_SAMSUNG
