# SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)

config SND_SOC_SOF_IMX_TOPLEVEL
	bool "SOF support for NXP i.MX audio DSPs"
	depends on ARM64|| COMPILE_TEST
	depends on SND_SOC_SOF_OF
	help
	  This adds support for Sound Open Firmware for NXP i.MX platforms.
	  Say Y if you have such a device.
	  If unsure select "N".

if SND_SOC_SOF_IMX_TOPLEVEL

config SND_SOC_SOF_IMX_COMMON
	tristate
	select SND_SOC_SOF_OF_DEV
	select SND_SOC_SOF
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_XTENSA
	select SND_SOC_SOF_COMPRESS
	help
	  This option is not user-selectable but automagically handled by
	  'select' statements at a higher level.

config SND_SOC_SOF_IMX8
	tristate "SOF support for i.MX8"
	depends on IMX_SCU
	depends on IMX_DSP
	select SND_SOC_SOF_IMX_COMMON
	help
	  This adds support for Sound Open Firmware for NXP i.MX8 platforms.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_IMX8M
	tristate "SOF support for i.MX8M"
	depends on IMX_DSP
	select SND_SOC_SOF_IMX_COMMON
	help
	  This adds support for Sound Open Firmware for NXP i.MX8M platforms.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_IMX8ULP
	tristate "SOF support for i.MX8ULP"
	depends on IMX_DSP
	select SND_SOC_SOF_IMX_COMMON
	help
	  This adds support for Sound Open Firmware for NXP i.MX8ULP platforms.
	  Say Y if you have such a device.
	  If unsure select "N".

endif ## SND_SOC_SOF_IMX_TOPLEVEL
