config SND_OMAP_SOC
	tristate "SoC Audio for the Texas Instruments OMAP chips"
	depends on ARCH_OMAP && DMA_OMAP
	select SND_SOC_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 && MACH_NOKIA_RX51
	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
	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_OMAP_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.
