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

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
