config SND_BF5XX_I2S
	tristate "SoC I2S Audio for the ADI Blackfin chip"
	depends on BLACKFIN
	select SND_BF5XX_SOC_SPORT if !BF60x
	select SND_BF6XX_SOC_SPORT if BF60x
	help
	  Say Y or M if you want to add support for codecs attached to
	  the Blackfin SPORT (synchronous serial ports) interface in I2S
	  mode (supports single stereo In/Out).
	  You will also need to select the audio interfaces to support below.

config SND_BF5XX_SOC_SSM2602
	tristate "SoC SSM2602 Audio Codec Add-On Card support"
	depends on SND_BF5XX_I2S && (SPI_MASTER || I2C)
	select SND_BF5XX_SOC_I2S if !BF60x
	select SND_BF6XX_SOC_I2S if BF60x
	select SND_SOC_SSM2602
	help
	  Say Y if you want to add support for the Analog Devices
	  SSM2602 Audio Codec Add-On Card.

config SND_SOC_BFIN_EVAL_ADAU1701
	tristate "Support for the EVAL-ADAU1701MINIZ board on Blackfin eval boards"
	depends on SND_BF5XX_I2S
	select SND_BF5XX_SOC_I2S
	select SND_SOC_ADAU1701
	select I2C
	help
	  Say Y if you want to add support for the Analog Devices EVAL-ADAU1701MINIZ
	  board connected to one of the Blackfin evaluation boards like the
	  BF5XX-STAMP or BF5XX-EZKIT.

config SND_SOC_BFIN_EVAL_ADAU1373
	tristate "Support for the EVAL-ADAU1373 board on Blackfin eval boards"
	depends on SND_BF5XX_I2S && I2C
	select SND_BF5XX_SOC_I2S
	select SND_SOC_ADAU1373
	help
	  Say Y if you want to add support for the Analog Devices EVAL-ADAU1373
	  board connected to one of the Blackfin evaluation boards like the
	  BF5XX-STAMP or BF5XX-EZKIT.

	  Note: This driver assumes that first ADAU1373 DAI is connected to the
	  first SPORT port on the BF5XX board.

config SND_SOC_BFIN_EVAL_ADAV80X
	tristate "Support for the EVAL-ADAV80X boards on Blackfin eval boards"
	depends on SND_BF5XX_I2S && (SPI_MASTER || I2C)
	select SND_BF5XX_SOC_I2S
	select SND_SOC_ADAV80X
	help
	  Say Y if you want to add support for the Analog Devices EVAL-ADAV801 or
	  EVAL-ADAV803 board connected to one of the Blackfin evaluation boards
	  like the BF5XX-STAMP or BF5XX-EZKIT.

	  Note: This driver assumes that the ADAV80X digital record and playback
	  interfaces are connected to the first SPORT port on the BF5XX board.

config SND_BF5XX_SOC_AD1836
	tristate "SoC AD1836 Audio support for BF5xx"
	depends on SND_BF5XX_I2S
	select SND_BF5XX_SOC_I2S
	select SND_SOC_AD1836
	help
	  Say Y if you want to add support for SoC audio on BF5xx STAMP/EZKIT.

config SND_BF5XX_SOC_AD193X
	tristate "SoC AD193X Audio support for Blackfin"
	depends on SND_BF5XX_I2S
	select SND_BF5XX_SOC_I2S
	select SND_SOC_AD193X
	help
	  Say Y if you want to add support for AD193X codec on Blackfin.
	  This driver supports AD1936, AD1937, AD1938 and AD1939.

config SND_BF5XX_SOC_AD73311
	tristate "SoC AD73311 Audio support for Blackfin"
	depends on SND_BF5XX_I2S
	select SND_BF5XX_SOC_I2S
	select SND_SOC_AD73311
	help
	  Say Y if you want to add support for AD73311 codec on Blackfin.

config SND_BFIN_AD73311_SE
	int "PF pin for AD73311L Chip Select"
	depends on SND_BF5XX_SOC_AD73311
	default 4
	help
	  Enter the GPIO used to control AD73311's SE pin. Acceptable
	  values are 0 to 7

config SND_BF5XX_AC97
	tristate "SoC AC97 Audio for the ADI BF5xx chip"
	depends on BLACKFIN
	select AC97_BUS
	select SND_SOC_AC97_BUS
	select SND_BF5XX_SOC_SPORT
	select SND_BF5XX_SOC_AC97
	help
	  Say Y or M if you want to add support for codecs attached to
	  the Blackfin SPORT (synchronous serial ports) interface in slot 16
	  mode (pseudo AC97 interface).
	  You will also need to select the audio interfaces to support below.

	  Note:
	  AC97 codecs which do not implement the slot-16 mode will not function
	  properly with this driver. This driver is known to work with the
	  Analog Devices line of AC97 codecs.

config SND_BF5XX_MMAP_SUPPORT
	bool "Enable MMAP Support"
	depends on SND_BF5XX_AC97
	default y
	help
	  Say y if you want AC97 driver to support mmap mode.
	  We introduce an intermediate buffer to simulate mmap.

config SND_BF5XX_MULTICHAN_SUPPORT
	bool "Enable Multichannel Support"
	depends on SND_BF5XX_AC97
	default n
	help
	  Say y if you want AC97 driver to support up to 5.1 channel audio.
	  this mode will consume much more memory for DMA.

config SND_BF5XX_HAVE_COLD_RESET
	bool "BOARD has COLD Reset GPIO"
	depends on SND_BF5XX_AC97
	default y if BFIN548_EZKIT
	default n if !BFIN548_EZKIT

config SND_BF5XX_RESET_GPIO_NUM
	int "Set a GPIO for cold reset"
	depends on SND_BF5XX_HAVE_COLD_RESET
	range 0 159
	default 19 if BFIN548_EZKIT
	default 5 if BFIN537_STAMP
	default 0
	help
	  Set the correct GPIO for RESET the sound chip.

config SND_BF5XX_SOC_AD1980
	tristate "SoC AD1980/1 Audio support for BF5xx (Obsolete)"
	depends on SND_BF5XX_AC97
	select SND_BF5XX_SOC_AC97
	select SND_SOC_AD1980
	help
	  Say Y if you want to add support for SoC audio on BF5xx STAMP/EZKIT.

	  Warning:
	  Because Analog Devices Inc. discontinued the ad1980 sound chip since
	  Sep. 2009, this ad1980 driver is not maintained, tested and supported
	  by ADI now.

config SND_BF5XX_SOC_SPORT
	tristate

config SND_BF6XX_SOC_SPORT
	tristate

config SND_BF5XX_SOC_I2S
	tristate

config SND_BF6XX_SOC_I2S
	tristate

config SND_BF5XX_SOC_AC97
	tristate

config SND_BF5XX_SPORT_NUM
	int "Set a SPORT for Sound chip"
	depends on (SND_BF5XX_SOC_SPORT || SND_BF6XX_SOC_SPORT)
	range 0 3 if BF54x
	range 0 1 if !BF54x
	default 0
	help
	  Set the correct SPORT for sound chip.
