# SPDX-License-Identifier: GPL-2.0-only
menu "Freescale"

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 DMA_SHARED_BUFFER
	select REGMAP_MMIO
	select SND_SOC_GENERIC_DMAENGINE_PCM
	select SND_COMPRESS_ACCEL
	select SND_COMPRESS_OFFLOAD
	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
	depends on IMX_SCMI_MISC_DRV || !IMX_SCMI_MISC_DRV
	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
	select SND_SOC_FSL_UTILS
	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_FSL_LPC3XXX
	tristate "SoC Audio for NXP LPC32XX CPUs"
	depends on ARCH_LPC32XX || COMPILE_TEST
	select SND_SOC_GENERIC_DMAENGINE_PCM
	help
	  Say Y or M if you want to add support for the LPC3XXX I2S interface.

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_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_FSL_SPDIF
	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
