config SND_OMAP_SOC
	tristate "SoC Audio for the Texas Instruments OMAP chips"
	depends on ARCH_OMAP

config SND_OMAP_SOC_MCBSP
	tristate
	select OMAP_MCBSP

config SND_OMAP_SOC_MCPDM
	tristate

config SND_OMAP_SOC_N810
	tristate "SoC Audio support for Nokia N810"
	depends on SND_OMAP_SOC && MACH_NOKIA_N810 && I2C
	select SND_OMAP_SOC_MCBSP
	select OMAP_MUX
	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 OMAP_MCBSP
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TLV320AIC3X
	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_OVERO
	tristate "SoC Audio support for Gumstix Overo and CompuLab CM-T35"
	depends on TWL4030_CORE && SND_OMAP_SOC && (MACH_OVERO || MACH_CM_T35)
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TWL4030
	help
	  Say Y if you want to add support for SoC audio on the
	  Gumstix Overo or CompuLab CM-T35

config SND_OMAP_SOC_OMAP2EVM
	tristate "SoC Audio support for OMAP2EVM board"
	depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP2EVM
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TWL4030
	help
	  Say Y if you want to add support for SoC audio on the omap2evm board.

config SND_OMAP_SOC_OMAP3EVM
	tristate "SoC Audio support for OMAP3EVM board"
	depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP3EVM
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TWL4030
	help
	  Say Y if you want to add support for SoC audio on the omap3evm board.

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_SDP3430
	tristate "SoC Audio support for Texas Instruments SDP3430"
	depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP_3430SDP
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TWL4030
	help
	  Say Y if you want to add support for SoC audio on Texas Instruments
	  SDP3430.

config SND_OMAP_SOC_SDP4430
	tristate "SoC Audio support for Texas Instruments SDP4430"
	depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP_4430SDP
	select SND_OMAP_SOC_MCPDM
	select SND_SOC_TWL6040
	help
	  Say Y if you want to add support for SoC audio on Texas Instruments
	  SDP4430.

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.

config SND_OMAP_SOC_OMAP3_BEAGLE
	tristate "SoC Audio support for OMAP3 Beagle and Devkit8000"
	depends on TWL4030_CORE && SND_OMAP_SOC
	depends on (MACH_OMAP3_BEAGLE || MACH_DEVKIT8000)
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TWL4030
	help
	  Say Y if you want to add support for SoC audio on the Beagleboard or
	  the clone Devkit8000.

config SND_OMAP_SOC_ZOOM2
	tristate "SoC Audio support for Zoom2"
	depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP_ZOOM2
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TWL4030
	help
	  Say Y if you want to add support for Soc audio on Zoom2 board.

config SND_OMAP_SOC_IGEP0020
	tristate "SoC Audio support for IGEP v2"
	depends on TWL4030_CORE && SND_OMAP_SOC && MACH_IGEP0020
	select SND_OMAP_SOC_MCBSP
	select SND_SOC_TWL4030
	help
	  Say Y if you want to add support for Soc audio on IGEP v2 board.
