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
	depends on GPIOLIB
	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_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_OMAP_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_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.
