# SPDX-License-Identifier: GPL-2.0-only
menu "SoC Audio for Freescale CPUs"

comment "Common SoC Audio options for Freescale CPUs:"

config SND_SOC_FSL_ASRC
	tristate "Asynchronous Sample Rate Converter (ASRC) module support"
	depends on HAS_DMA
	select REGMAP_MMIO
	select SND_SOC_GENERIC_DMAENGINE_PCM
	help
	  Say Y if you want to add Asynchronous Sample Rate Converter (ASRC)
	  support for the Freescale CPUs.
	  This option is only useful for out-of-tree drivers since
	  in-tree drivers select it automatically.

config SND_SOC_FSL_SAI
	tristate "Synchronous Audio Interface (SAI) module support"
	select REGMAP_MMIO
	select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n
	select SND_SOC_GENERIC_DMAENGINE_PCM
	select SND_SOC_FSL_UTILS
	help
	  Say Y if you want to add Synchronous Audio Interface (SAI)
	  support for the Freescale CPUs.
	  This option is only useful for out-of-tree drivers since
	  in-tree drivers select it automatically.

config SND_SOC_FSL_MQS
	tristate "Medium Quality Sound (MQS) module support"
	depends on SND_SOC_FSL_SAI
	select REGMAP_MMIO
	help
	  Say Y if you want to add Medium Quality Sound (MQS)
	  support for the Freescale CPUs.
	  This option is only useful for out-of-tree drivers since
	  in-tree drivers select it automatically.

config SND_SOC_FSL_AUDMIX
	tristate "Audio Mixer (AUDMIX) module support"
	select REGMAP_MMIO
	help
	  Say Y if you want to add Audio Mixer (AUDMIX)
	  support for the NXP iMX CPUs.

config SND_SOC_FSL_SSI
	tristate "Synchronous Serial Interface module (SSI) support"
	select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n
	select SND_SOC_IMX_PCM_FIQ if SND_IMX_SOC != n && (MXC_TZIC || MXC_AVIC)
	select REGMAP_MMIO
	help
	  Say Y if you want to add Synchronous Serial Interface (SSI)
	  support for the Freescale CPUs.
	  This option is only useful for out-of-tree drivers since
	  in-tree drivers select it automatically.

config SND_SOC_FSL_SPDIF
	tristate "Sony/Philips Digital Interface (S/PDIF) module support"
	select REGMAP_MMIO
	select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n
	select SND_SOC_IMX_PCM_FIQ if SND_IMX_SOC != n && (MXC_TZIC || MXC_AVIC)
	select BITREVERSE
	select SND_SOC_FSL_UTILS
	help
	  Say Y if you want to add Sony/Philips Digital Interface (SPDIF)
	  support for the Freescale CPUs.
	  This option is only useful for out-of-tree drivers since
	  in-tree drivers select it automatically.

config SND_SOC_FSL_ESAI
	tristate "Enhanced Serial Audio Interface (ESAI) module support"
	select REGMAP_MMIO
	select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n
	help
	  Say Y if you want to add Enhanced Synchronous Audio Interface
	  (ESAI) support for the Freescale CPUs.
	  This option is only useful for out-of-tree drivers since
	  in-tree drivers select it automatically.

config SND_SOC_FSL_MICFIL
	tristate "Pulse Density Modulation Microphone Interface (MICFIL) module support"
	select REGMAP_MMIO
	select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n
	select SND_SOC_GENERIC_DMAENGINE_PCM
	select SND_SOC_FSL_UTILS
	help
	  Say Y if you want to add Pulse Density Modulation microphone
	  interface (MICFIL) support for NXP.

config SND_SOC_FSL_EASRC
	tristate "Enhanced Asynchronous Sample Rate Converter (EASRC) module support"
	depends on SND_SOC_FSL_ASRC
	select REGMAP_MMIO
	select SND_SOC_GENERIC_DMAENGINE_PCM
	help
	  Say Y if you want to add Enhanced ASRC support for NXP. The ASRC is
	  a digital module that converts audio from a source sample rate to a
	  destination sample rate. It is a new design module compare with the
	  old ASRC.

config SND_SOC_FSL_XCVR
	tristate "NXP Audio Transceiver (XCVR) module support"
	select REGMAP_MMIO
	select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n
	select SND_SOC_GENERIC_DMAENGINE_PCM
	help
	  Say Y if you want to add Audio Transceiver (XCVR) support for NXP
	  iMX CPUs. XCVR is a digital module that supports HDMI2.1 eARC,
	  HDMI1.4 ARC and SPDIF.

config SND_SOC_FSL_AUD2HTX
	tristate "AUDIO TO HDMI TX module support"
	depends on ARCH_MXC || COMPILE_TEST
	select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n
	help
	  Say Y if you want to add AUDIO TO HDMI TX support for NXP.

config SND_SOC_FSL_UTILS
	tristate

config SND_SOC_FSL_RPMSG
	tristate "NXP Audio Base On RPMSG support"
	depends on COMMON_CLK
	depends on OF && I2C
	depends on RPMSG
	depends on SND_IMX_SOC || SND_IMX_SOC = n
	select SND_SOC_IMX_RPMSG if SND_IMX_SOC != n
	help
	  Say Y if you want to add rpmsg audio support for the Freescale CPUs.
	  This option is only useful for out-of-tree drivers since
	  in-tree drivers select it automatically.

config SND_SOC_IMX_PCM_DMA
	tristate
	select SND_SOC_GENERIC_DMAENGINE_PCM

config SND_SOC_IMX_AUDIO_RPMSG
	tristate
	depends on RPMSG

config SND_SOC_IMX_PCM_RPMSG
	tristate
	depends on SND_SOC_IMX_AUDIO_RPMSG
	select SND_SOC_GENERIC_DMAENGINE_PCM

config SND_SOC_IMX_AUDMUX
	tristate "Digital Audio Mux module support"
	help
	  Say Y if you want to add Digital Audio Mux (AUDMUX) support
	  for the ARM i.MX CPUs.
	  This option is only useful for out-of-tree drivers since
	  in-tree drivers select it automatically.

config SND_POWERPC_SOC
	tristate "SoC Audio for Freescale PowerPC CPUs"
	depends on FSL_SOC || PPC_MPC52xx
	help
	  Say Y or M if you want to add support for codecs attached to
	  the PowerPC CPUs.

config SND_IMX_SOC
	tristate "SoC Audio for Freescale i.MX CPUs"
	depends on ARCH_MXC || COMPILE_TEST
	help
	  Say Y or M if you want to add support for codecs attached to
	  the i.MX CPUs.

if SND_POWERPC_SOC

config SND_MPC52xx_DMA
	tristate

config SND_SOC_POWERPC_DMA
	tristate

config SND_SOC_POWERPC_QMC_AUDIO
	tristate "QMC ALSA SoC support"
	depends on CPM_QMC
	help
	  ALSA SoC Audio support using the Freescale QUICC Multichannel
	  Controller (QMC).
	  Say Y or M if you want to add support for SoC audio using Freescale
	  QMC.

comment "SoC Audio support for Freescale PPC boards:"

config SND_SOC_P1022_DS
	tristate "ALSA SoC support for the Freescale P1022 DS board"
	# I2C is necessary for the WM8776 driver
	depends on P1022_DS && I2C
	select SND_SOC_FSL_SSI
	select SND_SOC_FSL_UTILS
	select SND_SOC_POWERPC_DMA
	select SND_SOC_WM8776
	default y if P1022_DS
	help
	  Say Y if you want to enable audio on the Freescale P1022 DS board.
	  This will also include the Wolfson Microelectronics WM8776 codec
	  driver.

config SND_SOC_P1022_RDK
	tristate "ALSA SoC support for the Freescale / iVeia P1022 RDK board"
	# I2C is necessary for the WM8960 driver
	depends on P1022_RDK && I2C
	select SND_SOC_FSL_SSI
	select SND_SOC_FSL_UTILS
	select SND_SOC_POWERPC_DMA
	select SND_SOC_WM8960
	default y if P1022_RDK
	help
	  Say Y if you want to enable audio on the Freescale / iVeia
	  P1022 RDK board.  This will also include the Wolfson
	  Microelectronics WM8960 codec driver.

config SND_SOC_MPC5200_I2S
	tristate "Freescale MPC5200 PSC in I2S mode driver"
	depends on PPC_MPC52xx && PPC_BESTCOMM
	select SND_MPC52xx_DMA
	select PPC_BESTCOMM_GEN_BD
	help
	  Say Y here to support the MPC5200 PSCs in I2S mode.

config SND_SOC_MPC5200_AC97
	tristate "Freescale MPC5200 PSC in AC97 mode driver"
	depends on PPC_MPC52xx && PPC_BESTCOMM
	select SND_SOC_AC97_BUS
	select SND_MPC52xx_DMA
	select PPC_BESTCOMM_GEN_BD
	help
	  Say Y here to support the MPC5200 PSCs in AC97 mode.

config SND_MPC52xx_SOC_PCM030
	tristate "SoC AC97 Audio support for Phytec pcm030 and WM9712"
	depends on PPC_MPC5200_SIMPLE
	select SND_SOC_MPC5200_AC97
	select SND_SOC_WM9712
	help
	  Say Y if you want to add support for sound on the Phytec pcm030
	  baseboard.

config SND_MPC52xx_SOC_EFIKA
	tristate "SoC AC97 Audio support for bbplan Efika and STAC9766"
	depends on PPC_EFIKA
	select SND_SOC_MPC5200_AC97
	select SND_SOC_STAC9766
	help
	  Say Y if you want to add support for sound on the Efika.

endif # SND_POWERPC_SOC

config SND_SOC_IMX_PCM_FIQ
	tristate
	default y if (SND_SOC_FSL_SSI=m || SND_SOC_FSL_SPDIF=m) && (MXC_TZIC || MXC_AVIC)
	select FIQ

if SND_IMX_SOC

comment "SoC Audio support for Freescale i.MX boards:"

config SND_SOC_EUKREA_TLV320
	tristate "Eukrea TLV320"
	depends on ARCH_MXC && !ARM64 && I2C
	select SND_SOC_TLV320AIC23_I2C
	select SND_SOC_IMX_AUDMUX
	select SND_SOC_FSL_SSI
	select SND_SOC_IMX_PCM_DMA
	help
	  Enable I2S based access to the TLV320AIC23B codec attached
	  to the SSI interface

config SND_SOC_IMX_ES8328
	tristate "SoC Audio support for i.MX boards with the ES8328 codec"
	depends on OF && (I2C || SPI)
	select SND_SOC_ES8328_I2C if I2C
	select SND_SOC_ES8328_SPI if SPI_MASTER
	select SND_SOC_IMX_PCM_DMA
	select SND_SOC_IMX_AUDMUX
	select SND_SOC_FSL_SSI
	help
	  Say Y if you want to add support for the ES8328 audio codec connected
	  via SSI/I2S over either SPI or I2C.

config SND_SOC_IMX_SGTL5000
	tristate "SoC Audio support for i.MX boards with sgtl5000"
	depends on OF && I2C
	select SND_SOC_SGTL5000
	select SND_SOC_IMX_PCM_DMA
	select SND_SOC_IMX_AUDMUX
	select SND_SOC_FSL_SSI
	help
	  Say Y if you want to add support for SoC audio on an i.MX board with
	  a sgtl5000 codec.

	  Note that this is an old driver. Consider enabling
	  SND_SOC_FSL_ASOC_CARD and SND_SOC_SGTL5000 to use the newer
	  driver.

config SND_SOC_IMX_SPDIF
	tristate "SoC Audio support for i.MX boards with S/PDIF"
	select SND_SOC_IMX_PCM_DMA
	select SND_SOC_FSL_SPDIF
	help
	  SoC Audio support for i.MX boards with S/PDIF
	  Say Y if you want to add support for SoC audio on an i.MX board with
	  a S/DPDIF.

config SND_SOC_FSL_ASOC_CARD
	tristate "Generic ASoC Sound Card with ASRC support"
	depends on OF && I2C
	# enforce SND_SOC_FSL_ASOC_CARD=m if SND_AC97_CODEC=m:
	depends on SND_AC97_CODEC || SND_AC97_CODEC=n
	select SND_SIMPLE_CARD_UTILS
	select SND_SOC_IMX_AUDMUX
	select SND_SOC_IMX_PCM_DMA
	select SND_SOC_FSL_ESAI
	select SND_SOC_FSL_SAI
	select SND_SOC_FSL_SSI
	select SND_SOC_TLV320AIC31XX
	select SND_SOC_WM8994
	select MFD_WM8994
	help
	 ALSA SoC Audio support with ASRC feature for Freescale SoCs that have
	 ESAI/SAI/SSI and connect with external CODECs such as WM8962, CS42888,
	 CS4271, CS4272, SGTL5000 and TLV320AIC32x4.
	 Say Y if you want to add support for Freescale Generic ASoC Sound Card.

config SND_SOC_IMX_AUDMIX
	tristate "SoC Audio support for i.MX boards with AUDMIX"
	select SND_SOC_FSL_AUDMIX
	select SND_SOC_FSL_SAI
	help
	  SoC Audio support for i.MX boards with Audio Mixer
	  Say Y if you want to add support for SoC audio on an i.MX board with
	  an Audio Mixer.

config SND_SOC_IMX_HDMI
	tristate "SoC Audio support for i.MX boards with HDMI port"
	select SND_SOC_FSL_SAI
	select SND_SOC_FSL_AUD2HTX
	select SND_SOC_HDMI_CODEC
	help
	  ALSA SoC Audio support with HDMI feature for Freescale SoCs that have
	  SAI/AUD2HTX and connect with internal HDMI IP or external module
	  SII902X.
	  Say Y if you want to add support for SoC audio on an i.MX board with
	  IMX HDMI.

config SND_SOC_IMX_RPMSG
	tristate "SoC Audio support for i.MX boards with rpmsg"
	depends on RPMSG
	depends on OF && I2C
	select SND_SOC_IMX_PCM_RPMSG
	select SND_SOC_IMX_AUDIO_RPMSG
	help
	  SoC Audio support for i.MX boards with rpmsg.
	  There should be rpmsg devices defined in other core (M core)
	  Say Y if you want to add support for SoC audio on an i.MX board with
	  a rpmsg devices.

config SND_SOC_IMX_CARD
	tristate "SoC Audio Graph Sound Card support for i.MX boards"
	depends on OF && I2C
	select SND_SOC_AK4458
	select SND_SOC_AK5558
	select SND_SOC_IMX_PCM_DMA
	select SND_SOC_FSL_SAI
	select SND_SIMPLE_CARD_UTILS
	help
	  This option enables audio sound card support for i.MX boards
	  with OF-graph DT bindings.
	  It also support DPCM of single CPU multi Codec ststem.

endif # SND_IMX_SOC

endmenu
