tests: audio: dmic_util: test PDM_DT_IO_CFG_GET

Test the implementation of `PDM_DT_IO_CFG_GET`. Implemented as a
distinct test from `dmic_api` to allow running natively in CI.

Signed-off-by: Jordan Yates <jordan@embeint.com>
This commit is contained in:
Jordan Yates
2025-11-14 10:52:28 +10:00
committed by Johan Hedberg
parent e2d88b44e4
commit 8b697b6b03
5 changed files with 98 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
# SPDX-License-Identifier: Apache-2.0
cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(dmic_util)
FILE(GLOB app_sources src/*.c)
target_sources(app PRIVATE ${app_sources})

View File

@@ -0,0 +1,35 @@
/*
* Copyright (c) 2025 Embeint Pty Ltd
*
* SPDX-License-Identifier: Apache-2.0
*/
/ {
dmic_cfg0: dmic_cfg0 {
compatible = "zephyr,pdm-dmic";
clk-frequency-min = <1000000>;
clk-frequency-max = <2000000>;
clk-duty-cycle-min = <45>;
clk-duty-cycle-max = <55>;
channel-left;
};
dmic_cfg1: dmic_cfg1 {
compatible = "zephyr,pdm-dmic";
clk-frequency-min = <100000>;
clk-frequency-max = <400000>;
clk-duty-cycle-min = <40>;
clk-duty-cycle-max = <60>;
channel-right;
};
dmic_cfg2: dmic_cfg2 {
compatible = "zephyr,pdm-dmic";
clk-frequency-min = <150000>;
clk-frequency-max = <450000>;
clk-duty-cycle-min = <49>;
clk-duty-cycle-max = <51>;
channel-left;
channel-right;
};
};

View File

@@ -0,0 +1,4 @@
CONFIG_TEST=y
CONFIG_ZTEST=y
CONFIG_AUDIO=y
CONFIG_AUDIO_DMIC=y

View File

@@ -0,0 +1,45 @@
/*
* Copyright 2025 Embeint Pty Ltd
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/kernel.h>
#include <zephyr/audio/dmic.h>
#include <zephyr/ztest.h>
ZTEST(dmic_util, test_io_cfg_get)
{
const struct pdm_io_cfg cfg0 = PDM_DT_IO_CFG_GET(DT_NODELABEL(dmic_cfg0));
const struct pdm_io_cfg cfg1 = PDM_DT_IO_CFG_GET(DT_NODELABEL(dmic_cfg1));
const struct pdm_io_cfg cfg2 = PDM_DT_IO_CFG_GET(DT_NODELABEL(dmic_cfg2));
zassert_equal(1000000, cfg0.min_pdm_clk_freq);
zassert_equal(2000000, cfg0.max_pdm_clk_freq);
zassert_equal(45, cfg0.min_pdm_clk_dc);
zassert_equal(55, cfg0.max_pdm_clk_dc);
zassert_equal(100000, cfg1.min_pdm_clk_freq);
zassert_equal(400000, cfg1.max_pdm_clk_freq);
zassert_equal(40, cfg1.min_pdm_clk_dc);
zassert_equal(60, cfg1.max_pdm_clk_dc);
zassert_equal(150000, cfg2.min_pdm_clk_freq);
zassert_equal(450000, cfg2.max_pdm_clk_freq);
zassert_equal(49, cfg2.min_pdm_clk_dc);
zassert_equal(51, cfg2.max_pdm_clk_dc);
}
ZTEST(dmic_util, test_channel_query)
{
zassert_true(PDM_DT_HAS_LEFT_CHANNEL(DT_NODELABEL(dmic_cfg0)));
zassert_false(PDM_DT_HAS_RIGHT_CHANNEL(DT_NODELABEL(dmic_cfg0)));
zassert_false(PDM_DT_HAS_LEFT_CHANNEL(DT_NODELABEL(dmic_cfg1)));
zassert_true(PDM_DT_HAS_RIGHT_CHANNEL(DT_NODELABEL(dmic_cfg1)));
zassert_true(PDM_DT_HAS_LEFT_CHANNEL(DT_NODELABEL(dmic_cfg2)));
zassert_true(PDM_DT_HAS_RIGHT_CHANNEL(DT_NODELABEL(dmic_cfg2)));
}
ZTEST_SUITE(dmic_util, NULL, NULL, NULL, NULL, NULL);

View File

@@ -0,0 +1,6 @@
tests:
drivers.audio.dmic_util:
tags: dmic
harness: ztest
integration_platforms:
- native_sim