config SND_OMAP_SOC
	tristate "SoC Audio for the Texas Instruments OMAP chips"
	depends on (ARCH_OMAP && DMA_OMAP) || (ARM && COMPILE_TEST)
	select SND_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
	tristate

config SND_OMAP_SOC_N810
	tristate "SoC Audio support for Nokia N810"
	depends on SND_OMAP_SOC && MACH_NOKIA_N810 && I2C
	depends on OMAP_MUX
	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 RX-51"
	depends on SND_OMAP_SOC && ARM && (MACH_NOKIA_RX51 || COMPILE_TEST)
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TLV320AIC3X
	select SND_SOC_TPA6130A2
	help
	  Say Y if you want to add support for SoC audio on Nokia RX-51
	  hardware. This is also known as Nokia N900 product.

config SND_OMAP_SOC_AMS_DELTA
	tristate "SoC Audio support for Amstrad E3 (Delta) videophone"
	depends on SND_OMAP_SOC && MACH_AMS_DELTA
	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_OMAP_SOC && MACH_OMAP_OSK && I2C
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TLV320AIC23
	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_OMAP_SOC && MACH_OMAP3517EVM && I2C
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TLV320AIC23
	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_OMAP_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_OMAP_SOC && (ARCH_OMAP4 || COMPILE_TEST)
	select SND_OMAP_SOC_DMIC
	select SND_OMAP_SOC_MCPDM
	select SND_SOC_TWL6040
	select SND_SOC_DMIC
	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)

config SND_OMAP_SOC_OMAP_HDMI
	tristate "SoC Audio support for Texas Instruments OMAP HDMI"
	depends on SND_OMAP_SOC && OMAP4_DSS_HDMI && OMAP2_DSS
	select SND_OMAP_SOC_HDMI
	select SND_SOC_HDMI_CODEC
	select OMAP4_DSS_HDMI_AUDIO
	help
	  Say Y if you want to add support for SoC HDMI audio on Texas Instruments
	  OMAP4 chips

config SND_OMAP_SOC_OMAP3_PANDORA
	tristate "SoC Audio support for OMAP3 Pandora"
	depends on TWL4030_CORE && SND_OMAP_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.
