Repository: zephyrproject-rtos/zephyr
Pull request #90720: tests: boards: nrf: i2s: i2s_divider: Confirm CLK divider value
Author: login: nordic-segl
Labels: name: platform: nRF
description: Nordic nRFx
name: area: I2S
Created: 2025-05-28T08:32:07Z | Merged: 2025-05-30T14:35:23Z

Frame rate selected by the user may not be obtained due to PCLK frequency and finite number of clock divider values.
In such case, driver shall select divider that results in I2S frame clock rate closest to the requested value.
There was a bug that was discarding perfect match divider.

Add test which confirms correct clock divider selection.


Diff:
diff --git a/tests/boards/nrf/i2s/i2s_divider/CMakeLists.txt b/tests/boards/nrf/i2s/i2s_divider/CMakeLists.txt
new file mode 100644
index 0000000000000..35157bf3d443d
--- /dev/null
+++ b/tests/boards/nrf/i2s/i2s_divider/CMakeLists.txt
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: Apache-2.0
+
+cmake_minimum_required(VERSION 3.20.0)
+
+find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
+project(i2s_divider)
+
+FILE(GLOB app_sources src/*.c)
+target_sources(app PRIVATE ${app_sources})
diff --git a/tests/boards/nrf/i2s/i2s_divider/boards/nrf52840dk_nrf52840.overlay b/tests/boards/nrf/i2s/i2s_divider/boards/nrf52840dk_nrf52840.overlay
new file mode 100644
index 0000000000000..ca21135bca4fd
--- /dev/null
+++ b/tests/boards/nrf/i2s/i2s_divider/boards/nrf52840dk_nrf52840.overlay
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2025 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/ {
+	aliases {
+		i2s-node0 = &i2s0;
+	};
+};
+
+&pinctrl {
+	i2s0_default_alt: i2s0_default_alt {
+		group1 {
+			psels = <NRF_PSEL(I2S_SCK_M, 1, 5)>,
+				<NRF_PSEL(I2S_LRCK_M, 1, 6)>,
+				<NRF_PSEL(I2S_SDOUT, 1, 1)>,
+				<NRF_PSEL(I2S_SDIN, 1, 2)>;
+		};
+	};
+};
+
+&i2s0 {
+	status = "okay";
+	pinctrl-0 = <&i2s0_default_alt>;
+	pinctrl-names = "default";
+};
diff --git a/tests/boards/nrf/i2s/i2s_divider/boards/nrf5340dk_nrf5340_cpuapp.overlay b/tests/boards/nrf/i2s/i2s_divider/boards/nrf5340dk_nrf5340_cpuapp.overlay
new file mode 100644
index 0000000000000..a4c595b1bcdb9
--- /dev/null
+++ b/tests/boards/nrf/i2s/i2s_divider/boards/nrf5340dk_nrf5340_cpuapp.overlay
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2025 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/ {
+	aliases {
+		i2s-node0 = &i2s0;
+	};
+};
+
+&pinctrl {
+	i2s0_default_alt: i2s0_default_alt {
+		group1 {
+			psels = <NRF_PSEL(I2S_SCK_M, 1, 6)>,
+				<NRF_PSEL(I2S_LRCK_M, 1, 7)>,
+				<NRF_PSEL(I2S_SDOUT, 0, 4)>,
+				<NRF_PSEL(I2S_SDIN, 0, 5)>;
+		};
+	};
+};
+
+&uart1 {
+	status = "disabled";
+};
+
+&i2s0 {
+	status = "okay";
+	pinctrl-0 = <&i2s0_default_alt>;
+	pinctrl-names = "default";
+};
diff --git a/tests/boards/nrf/i2s/i2s_divider/boards/nrf54l15dk_nrf54l15_cpuapp.overlay b/tests/boards/nrf/i2s/i2s_divider/boards/nrf54l15dk_nrf54l15_cpuapp.overlay
new file mode 100644
index 0000000000000..08de6a76c7c5e
--- /dev/null
+++ b/tests/boards/nrf/i2s/i2s_divider/boards/nrf54l15dk_nrf54l15_cpuapp.overlay
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2025 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/ {
+	aliases {
+		i2s-node0 = &i2s20;
+	};
+};
+
+&pinctrl {
+	i2s20_default_alt: i2s20_default_alt {
+		group1 {
+			psels = <NRF_PSEL(I2S_SCK_M, 1, 11)>,
+				<NRF_PSEL(I2S_LRCK_M, 1, 12)>,
+				<NRF_PSEL(I2S_SDOUT, 1, 8)>,
+				<NRF_PSEL(I2S_SDIN, 1, 9)>;
+		};
+	};
+};
+
+&i2s20 {
+	status = "okay";
+	pinctrl-0 = <&i2s20_default_alt>;
+	pinctrl-names = "default";
+};
diff --git a/tests/boards/nrf/i2s/i2s_divider/prj.conf b/tests/boards/nrf/i2s/i2s_divider/prj.conf
new file mode 100644
index 0000000000000..38455942679e7
--- /dev/null
+++ b/tests/boards/nrf/i2s/i2s_divider/prj.conf
@@ -0,0 +1,3 @@
+CONFIG_ZTEST=y
+CONFIG_I2S=y
+CONFIG_I2S_LOG_LEVEL_INF=y
diff --git a/tests/boards/nrf/i2s/i2s_divider/src/main.c b/tests/boards/nrf/i2s/i2s_divider/src/main.c
new file mode 100644
index 0000000000000..bc4176d3284b3
--- /dev/null
+++ b/tests/boards/nrf/i2s/i2s_divider/src/main.c
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2025 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include <zephyr/kernel.h>
+#include <zephyr/ztest.h>
+#include <zephyr/drivers/i2s.h>
+#include <zephyr/sys/iterable_sections.h>
+
+#define I2S_DEV_NODE DT_ALIAS(i2s_node0)
+
+#define WORD_SIZE 16U
+#define NUMBER_OF_CHANNELS 2
+#define FRAME_CLK_FREQ 44100
+
+#define NUM_BLOCKS 2
+#define TIMEOUT 1000
+
+#define SAMPLES_COUNT 4
+/* Each word has one bit set */
+static const int16_t data[SAMPLES_COUNT] = {16, 32, 64, 128};
+
+#define BLOCK_SIZE (2 * sizeof(data))
+
+#ifdef CONFIG_NOCACHE_MEMORY
+	#define MEM_SLAB_CACHE_ATTR __nocache
+#else
+	#define MEM_SLAB_CACHE_ATTR
+#endif /* CONFIG_NOCACHE_MEMORY */
+
+static char MEM_SLAB_CACHE_ATTR __aligned(WB_UP(32))
+	_k_mem_slab_buf_tx_0_mem_slab[NUM_BLOCKS * WB_UP(BLOCK_SIZE)];
+STRUCT_SECTION_ITERABLE(k_mem_slab, tx_0_mem_slab) =
+	Z_MEM_SLAB_INITIALIZER(tx_0_mem_slab, _k_mem_slab_buf_tx_0_mem_slab,
+				WB_UP(BLOCK_SIZE), NUM_BLOCKS);
+
+static const struct device *dev_i2s;
+
+static const struct i2s_config default_i2s_cfg = {
+	.word_size = WORD_SIZE,
+	.channels = NUMBER_OF_CHANNELS,
+	.format = I2S_FMT_DATA_FORMAT_I2S,
+	.frame_clk_freq = FRAME_CLK_FREQ,
+	.block_size = BLOCK_SIZE,
+	.timeout = TIMEOUT,
+	.options = I2S_OPT_FRAME_CLK_MASTER | I2S_OPT_BIT_CLK_MASTER,
+	.mem_slab = &tx_0_mem_slab,
+};
+
+/** @brief Check actual PCM rate at frame_clk_freq=8000.
+ *
+ * - Configure I2S stream.
+ */
+ZTEST(drivers_i2s_clk_div, test_i2s_frame_clk_freq_08000)
+{
+	struct i2s_config i2s_cfg = default_i2s_cfg;
+	int ret;
+
+	i2s_cfg.frame_clk_freq = 8000;
+
+	ret = i2s_configure(dev_i2s, I2S_DIR_TX, &i2s_cfg);
+	zassert_ok(ret, "i2s_configure() returned %d", ret);
+}
+
+/** @brief Check actual PCM rate at frame_clk_freq=16000.
+ *
+ * - Configure I2S stream.
+ */
+ZTEST(drivers_i2s_clk_div, test_i2s_frame_clk_freq_16000)
+{
+	struct i2s_config i2s_cfg = default_i2s_cfg;
+	int ret;
+
+	i2s_cfg.frame_clk_freq = 16000;
+
+	ret = i2s_configure(dev_i2s, I2S_DIR_TX, &i2s_cfg);
+	zassert_ok(ret, "i2s_configure() returned %d", ret);
+}
+
+/** @brief Check actual PCM rate at frame_clk_freq=32000.
+ *
+ * - Configure I2S stream.
+ */
+ZTEST(drivers_i2s_clk_div, test_i2s_frame_clk_freq_32000)
+{
+	struct i2s_config i2s_cfg = default_i2s_cfg;
+	int ret;
+
+	i2s_cfg.frame_clk_freq = 32000;
+
+	ret = i2s_configure(dev_i2s, I2S_DIR_TX, &i2s_cfg);
+	zassert_ok(ret, "i2s_configure() returned %d", ret);
+}
+
+/** @brief Check actual PCM rate at frame_clk_freq=44100.
+ *
+ * - Configure I2S stream.
+ */
+ZTEST(drivers_i2s_clk_div, test_i2s_frame_clk_freq_44100)
+{
+	struct i2s_config i2s_cfg = default_i2s_cfg;
+	int ret;
+
+	i2s_cfg.frame_clk_freq = 44100;
+
+	ret = i2s_configure(dev_i2s, I2S_DIR_TX, &i2s_cfg);
+	zassert_ok(ret, "i2s_configure() returned %d", ret);
+}
+
+/** @brief Check actual PCM rate at frame_clk_freq=48000.
+ *
+ * - Configure I2S stream.
+ */
+ZTEST(drivers_i2s_clk_div, test_i2s_frame_clk_freq_48000)
+{
+	struct i2s_config i2s_cfg = default_i2s_cfg;
+	int ret;
+
+	i2s_cfg.frame_clk_freq = 48000;
+
+	ret = i2s_configure(dev_i2s, I2S_DIR_TX, &i2s_cfg);
+	zassert_ok(ret, "i2s_configure() returned %d", ret);
+}
+
+/** @brief Check actual PCM rate at frame_clk_freq=88200.
+ *
+ * - Configure I2S stream.
+ */
+ZTEST(drivers_i2s_clk_div, test_i2s_frame_clk_freq_88200)
+{
+	struct i2s_config i2s_cfg = default_i2s_cfg;
+	int ret;
+
+	i2s_cfg.frame_clk_freq = 88200;
+
+	ret = i2s_configure(dev_i2s, I2S_DIR_TX, &i2s_cfg);
+	zassert_ok(ret, "i2s_configure() returned %d", ret);
+}
+
+/** @brief Check actual PCM rate at frame_clk_freq=96000.
+ *
+ * - Configure I2S stream.
+ */
+ZTEST(drivers_i2s_clk_div, test_i2s_frame_clk_freq_96000)
+{
+	struct i2s_config i2s_cfg = default_i2s_cfg;
+	int ret;
+
+	i2s_cfg.frame_clk_freq = 96000;
+
+	ret = i2s_configure(dev_i2s, I2S_DIR_TX, &i2s_cfg);
+	zassert_ok(ret, "i2s_configure() returned %d", ret);
+}
+
+static void *suite_setup(void)
+{
+	/* Check I2S Device. */
+	dev_i2s = DEVICE_DT_GET_OR_NULL(I2S_DEV_NODE);
+	zassert_not_null(dev_i2s, "I2S device not found");
+	zassert(device_is_ready(dev_i2s), "I2S device not ready");
+
+	return 0;
+}
+
+ZTEST_SUITE(drivers_i2s_clk_div, NULL, suite_setup, NULL, NULL, NULL);
diff --git a/tests/boards/nrf/i2s/i2s_divider/testcase.yaml b/tests/boards/nrf/i2s/i2s_divider/testcase.yaml
new file mode 100644
index 0000000000000..55d6912d7b54c
--- /dev/null
+++ b/tests/boards/nrf/i2s/i2s_divider/testcase.yaml
@@ -0,0 +1,32 @@
+tests:
+  boards.nrf.i2s.i2s_divider:
+    tags:
+      - drivers
+      - i2s
+    harness: console
+    harness_config:
+      type: multi_line
+      ordered: true
+      regex:
+        - "test_i2s_frame_clk_freq_08000"
+        - "I2S MCK frequency: 256000, actual PCM rate: 8000"
+        - "test_i2s_frame_clk_freq_16000"
+        - "I2S MCK frequency: 507936, actual PCM rate: 15873"
+        - "test_i2s_frame_clk_freq_32000"
+        - "I2S MCK frequency: 1032258, actual PCM rate: 32258"
+        - "test_i2s_frame_clk_freq_44100"
+        - "I2S MCK frequency: 1391304, actual PCM rate: 43478"
+        - "test_i2s_frame_clk_freq_48000"
+        - "I2S MCK frequency: 1523809, actual PCM rate: 47619"
+        - "test_i2s_frame_clk_freq_88200"
+        - "I2S MCK frequency: 2909090, actual PCM rate: 90909"
+        - "test_i2s_frame_clk_freq_96000"
+        - "I2S MCK frequency: 3200000, actual PCM rate: 100000"
+        - "PROJECT EXECUTION SUCCESSFUL"
+    platform_allow:
+      - nrf52840dk/nrf52840
+      - nrf5340dk/nrf5340/cpuapp
+      - nrf54l15dk/nrf54l15/cpuapp
+    integration_platforms:
+      - nrf52840dk/nrf52840
+      - nrf54l15dk/nrf54l15/cpuapp
diff --git a/tests/drivers/i2s/i2s_speed/Kconfig b/tests/drivers/i2s/i2s_speed/Kconfig
index 165fc6279b275..4fe2675d21cd0 100644
--- a/tests/drivers/i2s/i2s_speed/Kconfig
+++ b/tests/drivers/i2s/i2s_speed/Kconfig
@@ -39,43 +39,43 @@ config I2S_TEST_ALLOWED_DATA_OFFSET
 	  value of this option may be needed when GPIO loopback is used.
 
 config I2S_TEST_SKIP_SAMPLERATE_8000
-	bool "Skip short transfer tests at 8000 samples per socond"
+	bool "Skip short transfer tests at 8000 samples per second"
 	help
 	  When set to 'y', short transfer tests at 8000 samples per second
 	  will be skipped.
 
 config I2S_TEST_SKIP_SAMPLERATE_16000
-	bool "Skip short transfer tests at 16000 samples per socond"
+	bool "Skip short transfer tests at 16000 samples per second"
 	help
 	  When set to 'y', short transfer tests at 16000 samples per second
 	  will be skipped.
 
 config I2S_TEST_SKIP_SAMPLERATE_32000
-	bool "Skip short transfer tests at 32000 samples per socond"
+	bool "Skip short transfer tests at 32000 samples per second"
 	help
 	  When set to 'y', short transfer tests at 32000 samples per second
 	  will be skipped.
 
 config I2S_TEST_SKIP_SAMPLERATE_44100
-	bool "Skip short transfer tests at 44100 samples per socond"
+	bool "Skip short transfer tests at 44100 samples per second"
 	help
 	  When set to 'y', short transfer tests at 44100 samples per second
 	  will be skipped.
 
 config I2S_TEST_SKIP_SAMPLERATE_48000
-	bool "Skip short transfer tests at 48000 samples per socond"
+	bool "Skip short transfer tests at 48000 samples per second"
 	help
 	  When set to 'y', short transfer tests at 48000 samples per second
 	  will be skipped.
 
 config I2S_TEST_SKIP_SAMPLERATE_88200
-	bool "Skip short transfer tests at 88200 samples per socond"
+	bool "Skip short transfer tests at 88200 samples per second"
 	help
 	  When set to 'y', short transfer tests at 88200 samples per second
 	  will be skipped.
 
 config I2S_TEST_SKIP_SAMPLERATE_96000
-	bool "Skip short transfer tests at 96000 samples per socond"
+	bool "Skip short transfer tests at 96000 samples per second"
 	help
 	  When set to 'y', short transfer tests at 96000 samples per second
 	  will be skipped.


Reviews:
user: login: nordic-piks
state: DISMISSED
author_association: CONTRIBUTOR
submitted_at: 2025-05-28T08:53:16Z
user: login: kl-cruz
state: DISMISSED
author_association: CONTRIBUTOR
submitted_at: 2025-05-29T07:33:04Z
user: login: anangl
state: CHANGES_REQUESTED
author_association: MEMBER
submitted_at: 2025-05-30T06:46:54Z
user: login: nordic-segl
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-30T09:06:36Z
user: login: nordic-segl
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-30T09:09:50Z
user: login: nordic-piks
state: DISMISSED
author_association: CONTRIBUTOR
submitted_at: 2025-05-30T09:40:44Z
user: login: anangl
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-30T10:12:47Z
user: login: anangl
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-30T10:15:55Z
user: login: nordic-segl
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-30T10:29:09Z
user: login: anangl
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-30T10:33:14Z
user: login: nordic-piks
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-30T10:47:56Z

Review comments:
diff_hunk: @@ -29,3 +29,33 @@ tests:
       fixture: gpio_loopback
     extra_args: EXTRA_DTC_OVERLAY_FILE="boards/nrf5340dk_nrf5340_cpuapp_aclk.overlay"
     platform_allow: nrf5340dk/nrf5340/cpuapp
+  drivers.i2s.speed.gpio_loopback.clk_divider:
+    tags:
+      - drivers
+      - i2s
+    platform_allow:
+      - nrf52840dk/nrf52840
+      - nrf5340dk/nrf5340/cpuapp
+      - nrf54l15dk/nrf54l15/cpuapp
+    extra_args:
+      - CONFIG_I2S_LOG_LEVEL_INF=y
+    harness: console
+    harness_config:
+      fixture: gpio_loopback
+      type: multi_line
+      ordered: true
+      regex:
+        - "transfer_short_08000"
+        - "I2S MCK frequency: 256000, actual PCM rate: 8000"
path: tests/drivers/i2s/i2s_speed/testcase.yaml
user: login: anangl
body: I don't think it's a good idea to abuse the test this way. This may generate unnecessary complication when the test is to be modified in the future. And this is a purely Nordic specific thing that is checked here. Why not add a much simpler test in `tests/boards/nrf/` that will just verify the rates?
created_at: 2025-05-30T06:44:17Z
author_association: MEMBER
diff_hunk: @@ -29,3 +29,33 @@ tests:
       fixture: gpio_loopback
     extra_args: EXTRA_DTC_OVERLAY_FILE="boards/nrf5340dk_nrf5340_cpuapp_aclk.overlay"
     platform_allow: nrf5340dk/nrf5340/cpuapp
+  drivers.i2s.speed.gpio_loopback.clk_divider:
+    tags:
+      - drivers
+      - i2s
+    platform_allow:
+      - nrf52840dk/nrf52840
+      - nrf5340dk/nrf5340/cpuapp
+      - nrf54l15dk/nrf54l15/cpuapp
path: tests/drivers/i2s/i2s_speed/testcase.yaml
user: login: anangl
body: For '5340 and '54L15, the same path in code will be used, so it's redundant to perform the test on both.
created_at: 2025-05-30T06:45:53Z
author_association: MEMBER
diff_hunk: @@ -29,3 +29,33 @@ tests:
       fixture: gpio_loopback
     extra_args: EXTRA_DTC_OVERLAY_FILE="boards/nrf5340dk_nrf5340_cpuapp_aclk.overlay"
     platform_allow: nrf5340dk/nrf5340/cpuapp
+  drivers.i2s.speed.gpio_loopback.clk_divider:
+    tags:
+      - drivers
+      - i2s
+    platform_allow:
+      - nrf52840dk/nrf52840
+      - nrf5340dk/nrf5340/cpuapp
+      - nrf54l15dk/nrf54l15/cpuapp
+    extra_args:
+      - CONFIG_I2S_LOG_LEVEL_INF=y
+    harness: console
+    harness_config:
+      fixture: gpio_loopback
+      type: multi_line
+      ordered: true
+      regex:
+        - "transfer_short_08000"
+        - "I2S MCK frequency: 256000, actual PCM rate: 8000"
path: tests/drivers/i2s/i2s_speed/testcase.yaml
user: login: nordic-segl
body: Test was simplified and moved to zephyr/tests/boards/nrf/i2s/ directory
created_at: 2025-05-30T09:06:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -29,3 +29,33 @@ tests:
       fixture: gpio_loopback
     extra_args: EXTRA_DTC_OVERLAY_FILE="boards/nrf5340dk_nrf5340_cpuapp_aclk.overlay"
     platform_allow: nrf5340dk/nrf5340/cpuapp
+  drivers.i2s.speed.gpio_loopback.clk_divider:
+    tags:
+      - drivers
+      - i2s
+    platform_allow:
+      - nrf52840dk/nrf52840
+      - nrf5340dk/nrf5340/cpuapp
+      - nrf54l15dk/nrf54l15/cpuapp
path: tests/drivers/i2s/i2s_speed/testcase.yaml
user: login: nordic-segl
body: I left all three targets in platform_allow (plust DTS overlay files).
I added 'integration_platforms' list with only two of them. I choose '54L15 as it will become obsolete at later time than '5340.
created_at: 2025-05-30T09:09:50Z
author_association: CONTRIBUTOR
diff_hunk: @@ -29,3 +29,33 @@ tests:
       fixture: gpio_loopback
     extra_args: EXTRA_DTC_OVERLAY_FILE="boards/nrf5340dk_nrf5340_cpuapp_aclk.overlay"
     platform_allow: nrf5340dk/nrf5340/cpuapp
+  drivers.i2s.speed.gpio_loopback.clk_divider:
+    tags:
+      - drivers
+      - i2s
+    platform_allow:
+      - nrf52840dk/nrf52840
+      - nrf5340dk/nrf5340/cpuapp
+      - nrf54l15dk/nrf54l15/cpuapp
path: tests/drivers/i2s/i2s_speed/testcase.yaml
user: login: anangl
body: I still don't see much value in keeping both in `platform_allow` (this causes that one more overlay is needed), but I won't insist on this matter.
created_at: 2025-05-30T10:12:46Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,51 @@
+#
+# Copyright (c) 2025 Nordic Semiconductor ASA
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+mainmenu "I2S CLK Divider Test"
+
+source "Kconfig.zephyr"
+
+config I2S_TEST_SKIP_SAMPLERATE_8000
+	bool "Skip short transfer tests at 8000 samples per socond"
+	help
+	  When set to 'y', short transfer tests at 8000 samples per second
+	  will be skipped.
path: tests/boards/nrf/i2s/i2s_divider/Kconfig
user: login: anangl
body: I'd suggest not to add these options, to keep this test as simple as possible. Especially that their descriptions are not accurate (no transfers are performed) and they contain typos ("socond") in their prompts.
created_at: 2025-05-30T10:15:15Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,51 @@
+#
+# Copyright (c) 2025 Nordic Semiconductor ASA
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+mainmenu "I2S CLK Divider Test"
+
+source "Kconfig.zephyr"
+
+config I2S_TEST_SKIP_SAMPLERATE_8000
+	bool "Skip short transfer tests at 8000 samples per socond"
+	help
+	  When set to 'y', short transfer tests at 8000 samples per second
+	  will be skipped.
path: tests/boards/nrf/i2s/i2s_divider/Kconfig
user: login: nordic-segl
body: I removed Kconfig file from i2s_divider test.
I fixed typo in i2s_speed test.
created_at: 2025-05-30T10:29:09Z
author_association: CONTRIBUTOR

PR comments:
user: login: nordic-segl
created_at: 2025-05-28T08:35:45Z
body: Bug report:
https://devzone.nordicsemi.com/f/nordic-q-a/106134/bug-report-patch-i2s-find_suitable_clock-calculates-wrong-clock-frequencies-nrf-connect-sdk-2-5-0

Fix:
https://github.com/zephyrproject-rtos/zephyr/pull/68347/commits/03aa972e3842bb781e8e0dbfe57417e4aaf11c4e
author_association: CONTRIBUTOR
user: login: sonarqubecloud[bot]
created_at: 2025-05-30T10:57:51Z
body: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=zephyrproject-rtos_zephyr&pullRequest=90720) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=zephyrproject-rtos_zephyr&pullRequest=90720&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=zephyrproject-rtos_zephyr&pullRequest=90720&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=zephyrproject-rtos_zephyr&pullRequest=90720&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=zephyrproject-rtos_zephyr&pullRequest=90720&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=zephyrproject-rtos_zephyr&pullRequest=90720&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=zephyrproject-rtos_zephyr&pullRequest=90720)


author_association: NONE