# Helper to resolve issues with configs that have SPI enabled but I2C
# modular, meaning we can't build the codec driver in with I2C support.
# We use an ordered list of conditional defaults to pick the appropriate
# setting - SPI can't be modular so that case doesn't need to be covered.
config SND_SOC_I2C_AND_SPI
	tristate
	default m if I2C=m
	default y if I2C=y
	default y if SPI_MASTER=y

config SND_SOC_ALL_CODECS
	tristate "Build all ASoC CODEC drivers"
	select SND_SOC_AC97_CODEC if SND_SOC_AC97_BUS
	select SND_SOC_AD1980 if SND_SOC_AC97_BUS
	select SND_SOC_AD73311 if I2C
	select SND_SOC_AK4535 if I2C
	select SND_SOC_CS4270 if I2C
	select SND_SOC_PCM3008
	select SND_SOC_SSM2602 if I2C
	select SND_SOC_TLV320AIC23 if I2C
	select SND_SOC_TLV320AIC26 if SPI_MASTER
	select SND_SOC_TLV320AIC3X if I2C
	select SND_SOC_TWL4030 if TWL4030_CORE
	select SND_SOC_UDA134X
	select SND_SOC_UDA1380 if I2C
	select SND_SOC_WM8350 if MFD_WM8350
	select SND_SOC_WM8510 if SND_SOC_I2C_AND_SPI
	select SND_SOC_WM8580 if I2C
	select SND_SOC_WM8728 if SND_SOC_I2C_AND_SPI
	select SND_SOC_WM8731 if SND_SOC_I2C_AND_SPI
	select SND_SOC_WM8750 if SND_SOC_I2C_AND_SPI
	select SND_SOC_WM8753 if SND_SOC_I2C_AND_SPI
	select SND_SOC_WM8900 if I2C
	select SND_SOC_WM8903 if I2C
	select SND_SOC_WM8971 if I2C
	select SND_SOC_WM8990 if I2C
	select SND_SOC_WM9712 if SND_SOC_AC97_BUS
	select SND_SOC_WM9713 if SND_SOC_AC97_BUS
        help
          Normally ASoC codec drivers are only built if a machine driver which
          uses them is also built since they are only usable with a machine
          driver.  Selecting this option will allow these drivers to be built
          without an explicit machine driver for test and development purposes.

	  Support for the bus types used to access the codecs to be built must
	  be selected separately.

          If unsure select "N".


config SND_SOC_AC97_CODEC
	tristate
	select SND_AC97_CODEC

config SND_SOC_AD1980
	tristate

config SND_SOC_AD73311
	tristate

config SND_SOC_AK4535
	tristate

# Cirrus Logic CS4270 Codec
config SND_SOC_CS4270
	tristate

# Cirrus Logic CS4270 Codec Hardware Mute Support
# Select if you have external muting circuitry attached to your CS4270.
config SND_SOC_CS4270_HWMUTE
	bool
	depends on SND_SOC_CS4270

# Cirrus Logic CS4270 Codec VD = 3.3V Errata
# Select if you are affected by the errata where the part will not function
# if MCLK divide-by-1.5 is selected and VD is set to 3.3V.  The driver will
# not select any sample rates that require MCLK to be divided by 1.5.
config SND_SOC_CS4270_VD33_ERRATA
	bool
	depends on SND_SOC_CS4270

config SND_SOC_L3
       tristate

config SND_SOC_PCM3008
       tristate

config SND_SOC_SSM2602
	tristate

config SND_SOC_TLV320AIC23
	tristate
	depends on I2C

config SND_SOC_TLV320AIC26
	tristate "TI TLV320AIC26 Codec support" if SND_SOC_OF_SIMPLE
	depends on SPI

config SND_SOC_TLV320AIC3X
	tristate
	depends on I2C

config SND_SOC_TWL4030
	tristate
	depends on TWL4030_CORE

config SND_SOC_UDA134X
       tristate
       select SND_SOC_L3

config SND_SOC_UDA1380
        tristate

config SND_SOC_WM8350
	tristate

config SND_SOC_WM8510
	tristate

config SND_SOC_WM8580
	tristate

config SND_SOC_WM8728
	tristate

config SND_SOC_WM8731
	tristate

config SND_SOC_WM8750
	tristate

config SND_SOC_WM8753
	tristate

config SND_SOC_WM8900
	tristate

config SND_SOC_WM8903
	tristate

config SND_SOC_WM8971
	tristate

config SND_SOC_WM8990
	tristate

config SND_SOC_WM9712
	tristate

config SND_SOC_WM9713
	tristate
