# SPDX-License-Identifier: GPL-2.0-only
menu "ASoC support for Amlogic platforms"
	depends on ARCH_MESON || COMPILE_TEST

config SND_MESON_AIU
	tristate "Amlogic AIU"
	select SND_MESON_CODEC_GLUE
	select SND_PCM_IEC958
	imply SND_SOC_MESON_T9015
	imply SND_SOC_HDMI_CODEC if DRM_MESON_DW_HDMI
	help
	  Select Y or M to add support for the Audio output subsystem found
	  in the Amlogic Meson8, Meson8b and GX SoC families

config SND_MESON_AXG_FIFO
	tristate
	select REGMAP_MMIO
	imply COMMON_CLK_AXG_AUDIO
	imply RESET_MESON_AUDIO_ARB

config SND_MESON_AXG_FRDDR
	tristate "Amlogic AXG Playback FIFO support"
	select SND_MESON_AXG_FIFO
	help
	  Select Y or M to add support for the frontend playback interfaces
	  embedded in the Amlogic AXG SoC family

config SND_MESON_AXG_TODDR
	tristate "Amlogic AXG Capture FIFO support"
	select SND_MESON_AXG_FIFO
	help
	  Select Y or M to add support for the frontend capture interfaces
	  embedded in the Amlogic AXG SoC family

config SND_MESON_AXG_TDM_FORMATTER
	tristate
	select REGMAP_MMIO
	imply COMMON_CLK_AXG_AUDIO

config SND_MESON_AXG_TDM_INTERFACE
	tristate
	select SND_MESON_AXG_TDM_FORMATTER

config SND_MESON_AXG_TDMIN
	tristate "Amlogic AXG TDM Input Support"
	select SND_MESON_AXG_TDM_FORMATTER
	select SND_MESON_AXG_TDM_INTERFACE
	help
	  Select Y or M to add support for TDM input formatter embedded
	  in the Amlogic AXG SoC family

config SND_MESON_AXG_TDMOUT
	tristate "Amlogic AXG TDM Output Support"
	select SND_MESON_AXG_TDM_FORMATTER
	select SND_MESON_AXG_TDM_INTERFACE
	help
	  Select Y or M to add support for TDM output formatter embedded
	  in the Amlogic AXG SoC family

config SND_MESON_AXG_SOUND_CARD
	tristate "Amlogic AXG Sound Card Support"
	select SND_MESON_AXG_TDM_INTERFACE
	select SND_MESON_CARD_UTILS
	imply SND_MESON_AXG_FRDDR
	imply SND_MESON_AXG_TODDR
	imply SND_MESON_AXG_TDMIN
	imply SND_MESON_AXG_TDMOUT
	imply SND_MESON_AXG_SPDIFOUT
	imply SND_MESON_AXG_SPDIFIN
	imply SND_MESON_AXG_PDM
	imply SND_MESON_G12A_TOACODEC
	imply SND_MESON_G12A_TOHDMITX if DRM_MESON_DW_HDMI
	help
	  Select Y or M to add support for the AXG SoC sound card

config SND_MESON_AXG_SPDIFOUT
	tristate "Amlogic AXG SPDIF Output Support"
	select SND_PCM_IEC958
	imply SND_SOC_SPDIF
	imply COMMON_CLK_AXG_AUDIO
	help
	  Select Y or M to add support for SPDIF output serializer embedded
	  in the Amlogic AXG SoC family

config SND_MESON_AXG_SPDIFIN
	tristate "Amlogic AXG SPDIF Input Support"
	imply SND_SOC_SPDIF
	help
	  Select Y or M to add support for SPDIF input embedded
	  in the Amlogic AXG SoC family

config SND_MESON_AXG_PDM
	tristate "Amlogic AXG PDM Input Support"
	imply SND_SOC_DMIC
	imply COMMON_CLK_AXG_AUDIO
	help
	  Select Y or M to add support for PDM input embedded
	  in the Amlogic AXG SoC family

config SND_MESON_CARD_UTILS
       tristate

config SND_MESON_CODEC_GLUE
	tristate

config SND_MESON_GX_SOUND_CARD
	tristate "Amlogic GX Sound Card Support"
	select SND_MESON_CARD_UTILS
	imply SND_MESON_AIU
	help
	  Select Y or M to add support for the GXBB/GXL SoC sound card

config SND_MESON_G12A_TOACODEC
	tristate "Amlogic G12A To Internal DAC Control Support"
	select SND_MESON_CODEC_GLUE
	select REGMAP_MMIO
	imply SND_SOC_MESON_T9015
	help
	  Select Y or M to add support for the internal audio DAC on the
	  g12a SoC family

config SND_MESON_G12A_TOHDMITX
	tristate "Amlogic G12A To HDMI TX Control Support"
	select REGMAP_MMIO
	select SND_MESON_CODEC_GLUE
	imply SND_SOC_HDMI_CODEC
	help
	  Select Y or M to add support for HDMI audio on the g12a SoC
	  family

config SND_SOC_MESON_T9015
	tristate "Amlogic T9015 DAC"
	select REGMAP_MMIO
	help
	  Say Y or M if you want to add support for the internal DAC found
	  on GXL, G12 and SM1 SoC family.
endmenu
