# Audio Codec configuration options

# Copyright (c) 2018 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

menuconfig AUDIO
	bool "Audio drivers"
	help
	  Enable support for Audio

if AUDIO
#
# Audio Codec options
#
menuconfig AUDIO_CODEC
	bool "Audio Codec Drivers"
	help
	  Enable Audio Codec Driver Configuration

if AUDIO_CODEC

config AUDIO_CODEC_INIT_PRIORITY
	int "Init priority"
	default 60
	help
	  Audio codec device driver initialization priority.

module = AUDIO_CODEC
module-str = audio codec
source "subsys/logging/Kconfig.template.log_config"

source "drivers/audio/Kconfig.tlv320dac"

endif # AUDIO_CODEC

menuconfig AUDIO_DMIC
	bool "Digital Microphone (Audio) Drivers"
	help
	  Enable Digital Microphone Driver Configuration

if AUDIO_DMIC

config AUDIO_DMIC_INIT_PRIORITY
	int "Init priority"
	default 80
	help
	  Audio Digital Microphone device driver initialization priority.

module = AUDIO_DMIC
module-str = audio_dmic
source "subsys/logging/Kconfig.template.log_config"

source "drivers/audio/Kconfig.mpxxdtyy"
source "drivers/audio/Kconfig.dmic_pdm_nrfx"

endif # AUDIO_DMIC

endif # AUDIO
