config SND_OMAP_SOC
	tristate "SoC Audio for Texas Instruments OMAP chips (deprecated)"
	depends on (ARCH_OMAP && DMA_OMAP) || (ARM && COMPILE_TEST)
	select SND_SDMA_SOC

config SND_SDMA_SOC
	tristate "SoC Audio for Texas Instruments chips using sDMA"
	depends on DMA_OMAP || COMPILE_TEST
	select SND_SOC_GENERIC_DMAENGINE_PCM

config SND_OMAP_SOC_DMIC
	tristate

config SND_OMAP_SOC_MCBSP
	tristate

config SND_OMAP_SOC_MCPDM
	tristate

config SND_OMAP_SOC_HDMI_AUDIO
	tristate "HDMI audio support for OMAP4+ based SoCs"
	depends on SND_SDMA_SOC
	help
	  For HDMI audio to work OMAPDSS HDMI support should be
	  enabled.
	  The hdmi audio driver implements cpu-dai component using the
	  callbacks provided by OMAPDSS and registers the component
	  under DSS HDMI device. Omap-pcm is registered for platform
	  component also under DSS HDMI device. Dummy codec is used as
	  as codec component. The hdmi audio driver implements also
	  the card and registers it under its own platform device.
	  The device for the driver is registered by OMAPDSS hdmi
	  driver.

config SND_OMAP_SOC_N810
	tristate "SoC Audio support for Nokia N810"
	depends on SND_SDMA_SOC && MACH_NOKIA_N810 && I2C
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TLV320AIC3X
	help
	  Say Y if you want to add support for SoC audio on Nokia N810.

config SND_OMAP_SOC_RX51
	tristate "SoC Audio support for Nokia N900 (RX-51)"
	depends on SND_SDMA_SOC && ARM && I2C
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TLV320AIC3X
	select SND_SOC_TPA6130A2
	depends on GPIOLIB
	help
	  Say Y if you want to add support for SoC audio on Nokia N900
	  cellphone.

config SND_OMAP_SOC_AMS_DELTA
	tristate "SoC Audio support for Amstrad E3 (Delta) videophone"
	depends on SND_SDMA_SOC && MACH_AMS_DELTA && TTY
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_CX20442
	help
	  Say Y  if you want to add support  for SoC audio device  connected to
	  a handset and a speakerphone found on Amstrad E3 (Delta) videophone.

	  Note that in order to get those devices fully supported,  you have to
	  build  the kernel  with  standard  serial port  driver  included  and
	  configured for at least 4 ports.  Then, from userspace, you must load
	  a line discipline #19 on the modem (ttyS3) serial line.  The simplest
	  way to achieve this is to install util-linux-ng  and use the included
	  ldattach  utility.  This  can be  started  automatically  from  udev,
	  a simple rule like this one should do the trick (it does for me):
	  	ACTION=="add", KERNEL=="controlC0", \
				RUN+="/usr/sbin/ldattach 19 /dev/ttyS3"

config SND_OMAP_SOC_OSK5912
	tristate "SoC Audio support for omap osk5912"
	depends on SND_SDMA_SOC && MACH_OMAP_OSK && I2C
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TLV320AIC23_I2C
	help
	  Say Y if you want to add support for SoC audio on osk5912.

config SND_OMAP_SOC_AM3517EVM
	tristate "SoC Audio support for OMAP3517 / AM3517 EVM"
	depends on SND_SDMA_SOC && MACH_OMAP3517EVM && I2C
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TLV320AIC23_I2C
	help
	  Say Y if you want to add support for SoC audio on the OMAP3517 / AM3517
	  EVM.

config SND_OMAP_SOC_OMAP_TWL4030
	tristate "SoC Audio support for TI SoC based boards with twl4030 codec"
	depends on TWL4030_CORE && SND_SDMA_SOC
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TWL4030
	help
	  Say Y if you want to add support for SoC audio on TI SoC based boards
	  using twl4030 as c codec. This driver currently supports:
	  - Beagleboard or Devkit8000
	  - Gumstix Overo or CompuLab CM-T35/CM-T3730
	  - IGEP v2
	  - OMAP3EVM
	  - SDP3430
	  - Zoom2

config SND_OMAP_SOC_OMAP_ABE_TWL6040
	tristate "SoC Audio support for OMAP boards using ABE and twl6040 codec"
	depends on TWL6040_CORE && SND_SDMA_SOC && COMMON_CLK
	depends on ARCH_OMAP4 || (SOC_OMAP5 && MFD_PALMAS) || COMPILE_TEST
	select SND_OMAP_SOC_DMIC
	select SND_OMAP_SOC_MCPDM
	select SND_SOC_TWL6040
	select SND_SOC_DMIC
	select COMMON_CLK_PALMAS if (SOC_OMAP5 && MFD_PALMAS)
	select CLK_TWL6040
	help
	  Say Y if you want to add support for SoC audio on OMAP boards using
	  ABE and twl6040 codec. This driver currently supports:
	  - SDP4430/Blaze boards
	  - PandaBoard (4430)
	  - PandaBoardES (4460)
	  - omap5-uevm (5432)

config SND_OMAP_SOC_OMAP3_PANDORA
	tristate "SoC Audio support for OMAP3 Pandora"
	depends on TWL4030_CORE && SND_SDMA_SOC && MACH_OMAP3_PANDORA
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TWL4030
	help
	  Say Y if you want to add support for SoC audio on the OMAP3 Pandora.
