# SPDX-License-Identifier: GPL-2.0-only
menuconfig SND_SOC_QCOM
	tristate "Qualcomm"
	depends on ARCH_QCOM || COMPILE_TEST
	help
	  Say Y or M if you want to add support to use audio devices
	  in Qualcomm Technologies SOC-based platforms.

if SND_SOC_QCOM

config SND_SOC_LPASS_CPU
	tristate
	select REGMAP_MMIO

config SND_SOC_LPASS_HDMI
	tristate
	select REGMAP_MMIO

config SND_SOC_LPASS_PLATFORM
	tristate
	select REGMAP_MMIO

config SND_SOC_LPASS_CDC_DMA
	tristate
	select REGMAP_MMIO

config SND_SOC_LPASS_IPQ806X
	tristate
	select SND_SOC_LPASS_CPU
	select SND_SOC_LPASS_PLATFORM

config SND_SOC_LPASS_APQ8016
	tristate
	select SND_SOC_LPASS_CPU
	select SND_SOC_LPASS_PLATFORM

config SND_SOC_LPASS_SC7180
	tristate
	select SND_SOC_LPASS_CPU
	select SND_SOC_LPASS_PLATFORM
	select SND_SOC_LPASS_HDMI

config SND_SOC_LPASS_SC7280
	tristate
	select SND_SOC_LPASS_CPU
	select SND_SOC_LPASS_PLATFORM
	select SND_SOC_LPASS_HDMI
	select SND_SOC_LPASS_CDC_DMA

config SND_SOC_STORM
	tristate "ASoC I2S support for Storm boards"
	depends on GPIOLIB
	select SND_SOC_LPASS_IPQ806X
	select SND_SOC_MAX98357A
	help
	  Say Y or M if you want add support for SoC audio on the
	  Qualcomm Technologies IPQ806X-based Storm board.

config SND_SOC_APQ8016_SBC
	tristate "SoC Audio support for APQ8016 SBC platforms"
	select SND_SOC_LPASS_APQ8016
	select SND_SOC_QCOM_COMMON
	help
	  Support for Qualcomm Technologies LPASS audio block in
	  APQ8016 SOC-based systems.
	  Say Y if you want to use audio devices on MI2S.

config SND_SOC_QCOM_COMMON
	tristate

config SND_SOC_QCOM_SDW
	tristate

config SND_SOC_QDSP6_COMMON
	tristate

config SND_SOC_QDSP6_CORE
	tristate

config SND_SOC_QDSP6_AFE
	tristate

config SND_SOC_QDSP6_AFE_DAI
	tristate

config SND_SOC_QDSP6_AFE_CLOCKS
	tristate

config SND_SOC_QDSP6_ADM
	tristate

config SND_SOC_QDSP6_ROUTING
	tristate

config SND_SOC_QDSP6_ASM
	tristate

config SND_SOC_QDSP6_ASM_DAI
	select SND_SOC_COMPRESS
	tristate

config SND_SOC_QDSP6_APM_DAI
	tristate
	select SND_SOC_COMPRESS

config SND_SOC_QDSP6_APM_LPASS_DAI
	tristate

config SND_SOC_QDSP6_APM
	tristate
	select SND_SOC_QDSP6_APM_DAI
	select SND_SOC_QDSP6_APM_LPASS_DAI

config SND_SOC_QDSP6_PRM_LPASS_CLOCKS
	tristate

config SND_SOC_QDSP6_PRM
	tristate
	select SND_SOC_QDSP6_PRM_LPASS_CLOCKS

config SND_SOC_QCOM_OFFLOAD_UTILS
	tristate

config SND_SOC_QDSP6_USB
    tristate "SoC ALSA USB offloading backing for QDSP6"
    depends on SND_SOC_USB
    select AUXILIARY_BUS
    select SND_SOC_QCOM_OFFLOAD_UTILS

    help
      Adds support for USB offloading for QDSP6 ASoC
      based platform sound cards.  This will enable the
      Q6USB DPCM backend DAI link, which will interact
      with the SoC USB framework to initialize a session
      with active USB SND devices.

config SND_SOC_QDSP6
	tristate "SoC ALSA audio driver for QDSP6"
	depends on QCOM_APR
	depends on COMMON_CLK
	select SND_SOC_QDSP6_COMMON
	select SND_SOC_QDSP6_CORE
	select SND_SOC_QDSP6_AFE
	select SND_SOC_QDSP6_AFE_DAI
	select SND_SOC_QDSP6_AFE_CLOCKS
	select SND_SOC_QDSP6_ADM
	select SND_SOC_QDSP6_ROUTING
	select SND_SOC_QDSP6_ASM
	select SND_SOC_QDSP6_ASM_DAI
	select SND_SOC_TOPOLOGY
	select SND_SOC_QDSP6_APM
	select SND_SOC_QDSP6_PRM
	help
	 To add support for MSM QDSP6 Soc Audio.
	 This will enable sound soc platform specific
	 audio drivers. This includes q6asm, q6adm,
	 q6afe interfaces to DSP using apr.

config SND_SOC_MSM8996
	tristate "SoC Machine driver for MSM8996 and APQ8096 boards"
	depends on QCOM_APR
	depends on COMMON_CLK
	select SND_SOC_QDSP6
	select SND_SOC_QCOM_COMMON
	help
	  Support for Qualcomm Technologies LPASS audio block in
	  APQ8096 SoC-based systems.
	  Say Y if you want to use audio device on this SoCs

config SND_SOC_SDM845
	tristate "SoC Machine driver for SDM845 boards"
	depends on QCOM_APR && I2C && SOUNDWIRE
	depends on COMMON_CLK
	select SND_SOC_QDSP6
	select SND_SOC_QCOM_COMMON
	select SND_SOC_QCOM_SDW
	select SND_SOC_RT5663
	select SND_SOC_MAX98927
	imply SND_SOC_CROS_EC_CODEC
	help
	  To add support for audio on Qualcomm Technologies Inc.
	  SDM845 SoC-based systems.
	  Say Y if you want to use audio device on this SoCs.

config SND_SOC_SM8250
	tristate "SoC Machine driver for SM8250 boards"
	depends on QCOM_APR && SOUNDWIRE
	depends on COMMON_CLK
	depends on SND_SOC_QCOM_OFFLOAD_UTILS || !SND_SOC_QCOM_OFFLOAD_UTILS
	select SND_SOC_QDSP6
	select SND_SOC_QCOM_COMMON
	select SND_SOC_QCOM_SDW
	help
	  To add support for audio on Qualcomm Technologies Inc.
	  SM8250 SoC-based systems.
	  Say Y if you want to use audio device on this SoCs.

config SND_SOC_SC8280XP
	tristate "SoC Machine driver for SC8280XP boards"
	depends on QCOM_APR && SOUNDWIRE
	depends on COMMON_CLK
	select SND_SOC_QDSP6
	select SND_SOC_QCOM_COMMON
	select SND_SOC_QCOM_SDW
	help
	  To add support for audio on Qualcomm Technologies Inc.
	  SC8280XP SoC-based systems.
	  Say Y if you want to use audio device on this SoCs.

config SND_SOC_SC7180
	tristate "SoC Machine driver for SC7180 boards"
	depends on I2C && GPIOLIB
	depends on SOUNDWIRE || SOUNDWIRE=n
	select SND_SOC_QCOM_COMMON
	select SND_SOC_LPASS_SC7180
	select SND_SOC_MAX98357A
	select SND_SOC_RT5682_I2C
	select SND_SOC_RT5682S
	select SND_SOC_ADAU7002
	help
	  To add support for audio on Qualcomm Technologies Inc.
	  SC7180 SoC-based systems.
	  Say Y if you want to use audio device on this SoCs.

config SND_SOC_SC7280
	tristate "SoC Machine driver for SC7280 boards"
	depends on I2C && SOUNDWIRE
	select SND_SOC_QCOM_COMMON
	select SND_SOC_QCOM_SDW
	select SND_SOC_LPASS_SC7280
	select SND_SOC_MAX98357A
	select SND_SOC_WCD938X_SDW
	select SND_SOC_LPASS_MACRO_COMMON
	imply SND_SOC_LPASS_RX_MACRO
	imply SND_SOC_LPASS_TX_MACRO
	select SND_SOC_RT5682_I2C
	select SND_SOC_RT5682S
	help
	  Add support for audio on Qualcomm Technologies Inc.
	  SC7280 SoC-based systems.
	  Say Y or M if you want to use audio device on this SoCs.

config SND_SOC_X1E80100
	tristate "SoC Machine driver for X1E80100 boards"
	depends on QCOM_APR && SOUNDWIRE
	depends on COMMON_CLK
	select SND_SOC_QDSP6
	select SND_SOC_QCOM_COMMON
	select SND_SOC_QCOM_SDW
	help
	  Add support for audio on Qualcomm Technologies Inc.
	  X1E80100 SoC-based systems.
	  Say Y or M if you want to use audio device on this SoCs.

endif #SND_SOC_QCOM
