#
# Copyright (c) 2025 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
#

mainmenu "I2S Additional Test"

source "Kconfig.zephyr"

config I2S_TEST_USE_GPIO_LOOPBACK
	bool "Use GPIO loopback"
	default y if DT_HAS_NORDIC_NRF_I2S_ENABLED || DT_HAS_NORDIC_NRF_TDM_ENABLED
	help
	  Use wiring between the data-out and data-in pins for looping back
	  data. This option is intended to be used for devices that do not
	  provide the internal loopback functionality.

config I2S_TEST_ALLOWED_DATA_OFFSET
	int "Allowed offset in received data"
	default 2 if DT_HAS_NORDIC_NRF_I2S_ENABLED || DT_HAS_NORDIC_NRF_TDM_ENABLED
	default 0
	help
	  Maximum allowed offset between sent and received samples. Non-zero
	  value of this option may be needed when GPIO loopback is used.

config I2S_TEST_WORD_SIZE_8_BIT_UNSUPPORTED
	bool "8 bit word size is not supported by the driver"
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_WORD_SIZE_16_BIT_UNSUPPORTED
	bool "16 bit word size is not supported by the driver"
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_WORD_SIZE_24_BIT_UNSUPPORTED
	bool "24 bit word size is not supported by the driver"
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_WORD_SIZE_32_BIT_UNSUPPORTED
	bool "32 bit word size is not supported by the driver"
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_WORD_SIZE_48_BIT_UNSUPPORTED
	bool "48 bit word size is not supported by the driver"
	default y if DT_HAS_NORDIC_NRF_I2S_ENABLED || DT_HAS_NORDIC_NRF_TDM_ENABLED
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_ONE_CHANNEL_UNSUPPORTED
	bool "Single audio channel is not supported by the driver"
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_FOUR_CHANNELS_UNSUPPORTED
	bool "Four audio channels are not supported by the driver"
	default y if DT_HAS_NORDIC_NRF_I2S_ENABLED
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_EIGHT_CHANNELS_UNSUPPORTED
	bool "Eight audio channels are not supported by the driver"
	default y if DT_HAS_NORDIC_NRF_I2S_ENABLED
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_EIGHT_CHANNELS_32B_48K_UNSUPPORTED
	bool "Skip test with 8 channels, 32 bit word size and 48k sample rate"
	depends on !I2S_TEST_EIGHT_CHANNELS_UNSUPPORTED
	help
	  Skip test that is challenging due to high data throughput.
	  When set to 'y', test will be skipped.
	  When set to 'n', test will do the transmission.

config I2S_TEST_DATA_FORMAT_I2S_UNSUPPORTED
	bool "I2S_FMT_DATA_FORMAT_I2S is not supported by the driver"
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_DATA_FORMAT_LEFT_JUSTIFIED_UNSUPPORTED
	bool "I2S_FMT_DATA_FORMAT_LEFT_JUSTIFIED is not supported by the driver"
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_DATA_FORMAT_RIGHT_JUSTIFIED_UNSUPPORTED
	bool "I2S_FMT_DATA_FORMAT_RIGHT_JUSTIFIED is not supported by the driver"
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_DATA_FORMAT_PCM_LONG_UNSUPPORTED
	bool "I2S_FMT_DATA_FORMAT_PCM_LONG is not supported by the driver"
	default y if DT_HAS_NORDIC_NRF_I2S_ENABLED
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_DATA_FORMAT_PCM_SHORT_UNSUPPORTED
	bool "I2S_FMT_DATA_FORMAT_PCM_SHORT is not supported by the driver"
	default y if DT_HAS_NORDIC_NRF_I2S_ENABLED
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_DATA_ORDER_MSB_UNSUPPORTED
	bool "I2S_FMT_DATA_ORDER_MSB is not supported by the driver"
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_DATA_ORDER_LSB_UNSUPPORTED
	bool "I2S_FMT_DATA_ORDER_LSB is not supported by the driver"
	default y if DT_HAS_NORDIC_NRF_I2S_ENABLED || DT_HAS_NORDIC_NRF_TDM_ENABLED
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_BIT_CLK_INV_UNSUPPORTED
	bool "I2S_FMT_BIT_CLK_INV is not supported by the driver"
	default y if DT_HAS_NORDIC_NRF_I2S_ENABLED || DT_HAS_NORDIC_NRF_TDM_ENABLED
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_FRAME_CLK_INV_UNSUPPORTED
	bool "I2S_FMT_FRAME_CLK_INV is not supported by the driver"
	default y if DT_HAS_NORDIC_NRF_I2S_ENABLED || DT_HAS_NORDIC_NRF_TDM_ENABLED
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_BLOCK_SIZE_6_UNSUPPORTED
	bool "Block_size of 6 is not supported by the driver"
	default y if DT_HAS_NORDIC_NRF_I2S_ENABLED || DT_HAS_NORDIC_NRF_TDM_ENABLED
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_OPTIONS_BIT_CLK_CONT_UNSUPPORTED
	bool "I2S_OPT_BIT_CLK_CONT is not supported by the driver"
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_OPTIONS_BIT_CLK_GATED_UNSUPPORTED
	bool "I2S_OPT_BIT_CLK_GATED is not supported by the driver"
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_OPTIONS_LOOPBACK_UNSUPPORTED
	bool "I2S_OPT_LOOPBACK is not supported by the driver"
	default y if DT_HAS_NORDIC_NRF_I2S_ENABLED || DT_HAS_NORDIC_NRF_TDM_ENABLED
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.

config I2S_TEST_OPTIONS_PINGPONG_UNSUPPORTED
	bool "I2S_OPT_PINGPONG is not supported by the driver"
	default y if DT_HAS_NORDIC_NRF_I2S_ENABLED || DT_HAS_NORDIC_NRF_TDM_ENABLED
	help
	  When set to 'y', test will check that i2s_configure() returns -EINVAL.
	  When set to 'n', test will do the transmission.
