diff --git a/tests/drivers/dma/chan_link_transfer/Kconfig b/tests/drivers/dma/chan_link_transfer/Kconfig new file mode 100644 index 0000000000000..49d7a0f060fba --- /dev/null +++ b/tests/drivers/dma/chan_link_transfer/Kconfig @@ -0,0 +1,6 @@ +# Copyright (c) 2025 Alex Apostolu +# SPDX-License-Identifier: Apache-2.0 + +config DMA_LOOP_TRANSFER_NUMBER_OF_DMAS + int "Number of DMAs to test" + default 1 diff --git a/tests/drivers/dma/chan_link_transfer/boards/bg29_rb4420a.overlay b/tests/drivers/dma/chan_link_transfer/boards/bg29_rb4420a.overlay index 57a16a6916a11..bb55d55fed366 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/bg29_rb4420a.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/bg29_rb4420a.overlay @@ -4,6 +4,6 @@ * SPDX-License-Identifier: Apache-2.0 */ -&dma0 { +test_dma0: &dma0 { status = "okay"; }; diff --git a/tests/drivers/dma/chan_link_transfer/boards/frdm_k64f.overlay b/tests/drivers/dma/chan_link_transfer/boards/frdm_k64f.overlay index 9de65ba7b944a..64d4a8195c458 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/frdm_k64f.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/frdm_k64f.overlay @@ -4,4 +4,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -dma0: &edma0 {}; +test_dma0: &edma0 {}; diff --git a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1010_evk.overlay b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1010_evk.overlay index edc11dd90c50a..dfc6f16f0dd1f 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1010_evk.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1010_evk.overlay @@ -5,4 +5,4 @@ * */ -dma0: &edma0 {}; +test_dma0: &edma0 {}; diff --git a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1024_evk.overlay b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1024_evk.overlay index f3639475d4d62..c73d172c53323 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1024_evk.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1024_evk.overlay @@ -1 +1,7 @@ -dma0: &edma0 {}; +/* + * Copyright (c) 2025 Alex Apostolu + * + * SPDX-License-Identifier: Apache-2.0 + */ + +test_dma0: &edma0 {}; diff --git a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1050_evk_mimxrt1052_hyperflash.overlay b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1050_evk_mimxrt1052_hyperflash.overlay index e384c0c391fde..ed231660efa6c 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1050_evk_mimxrt1052_hyperflash.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1050_evk_mimxrt1052_hyperflash.overlay @@ -5,4 +5,4 @@ * */ -dma0: &edma0 {}; +test_dma0: &edma0 {}; diff --git a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1060_evk_mimxrt1062_qspi.overlay b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1060_evk_mimxrt1062_qspi.overlay index 9de65ba7b944a..64d4a8195c458 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1060_evk_mimxrt1062_qspi.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1060_evk_mimxrt1062_qspi.overlay @@ -4,4 +4,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -dma0: &edma0 {}; +test_dma0: &edma0 {}; diff --git a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1060_evk_mimxrt1062_qspi_C.overlay b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1060_evk_mimxrt1062_qspi_C.overlay index 9de65ba7b944a..64d4a8195c458 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1060_evk_mimxrt1062_qspi_C.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1060_evk_mimxrt1062_qspi_C.overlay @@ -4,4 +4,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -dma0: &edma0 {}; +test_dma0: &edma0 {}; diff --git a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1064_evk.overlay b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1064_evk.overlay index 9de65ba7b944a..64d4a8195c458 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1064_evk.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1064_evk.overlay @@ -4,4 +4,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -dma0: &edma0 {}; +test_dma0: &edma0 {}; diff --git a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1160_evk_mimxrt1166_cm7.overlay b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1160_evk_mimxrt1166_cm7.overlay index 9de65ba7b944a..64d4a8195c458 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1160_evk_mimxrt1166_cm7.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1160_evk_mimxrt1166_cm7.overlay @@ -4,4 +4,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -dma0: &edma0 {}; +test_dma0: &edma0 {}; diff --git a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1170_evk_mimxrt1176_cm7.overlay b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1170_evk_mimxrt1176_cm7.overlay index 9de65ba7b944a..64d4a8195c458 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/mimxrt1170_evk_mimxrt1176_cm7.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/mimxrt1170_evk_mimxrt1176_cm7.overlay @@ -4,4 +4,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -dma0: &edma0 {}; +test_dma0: &edma0 {}; diff --git a/tests/drivers/dma/chan_link_transfer/boards/mr_canhubk3.overlay b/tests/drivers/dma/chan_link_transfer/boards/mr_canhubk3.overlay index a1753c71df829..5965bf744f9d4 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/mr_canhubk3.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/mr_canhubk3.overlay @@ -4,4 +4,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -dma0: &edma0 {}; +test_dma0: &edma0 {}; diff --git a/tests/drivers/dma/chan_link_transfer/boards/native_sim.overlay b/tests/drivers/dma/chan_link_transfer/boards/native_sim.overlay index 31acaa6798be0..c493203f6f224 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/native_sim.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/native_sim.overlay @@ -9,4 +9,4 @@ status = "okay"; }; -dma0: &dma {}; +test_dma0: &dma {}; diff --git a/tests/drivers/dma/chan_link_transfer/boards/rpi_pico2_rp2350a_hazard3.overlay b/tests/drivers/dma/chan_link_transfer/boards/rpi_pico2_rp2350a_hazard3.overlay index 8b83efe6ea08f..a9bc55ec05ede 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/rpi_pico2_rp2350a_hazard3.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/rpi_pico2_rp2350a_hazard3.overlay @@ -6,3 +6,5 @@ /* Pico 2 is compatible with the Pico 1, so reuse. */ #include "rpi_pico.overlay" + +test_dma0: &dma0 {}; diff --git a/tests/drivers/dma/chan_link_transfer/boards/s32z2xxdc2_s32z270_rtu0.overlay b/tests/drivers/dma/chan_link_transfer/boards/s32z2xxdc2_s32z270_rtu0.overlay index 159e466c62b1a..5016c008a365d 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/s32z2xxdc2_s32z270_rtu0.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/s32z2xxdc2_s32z270_rtu0.overlay @@ -8,4 +8,4 @@ status = "okay"; }; -dma0: &edma0 {}; +test_dma0: &edma0 {}; diff --git a/tests/drivers/dma/chan_link_transfer/boards/s32z2xxdc2_s32z270_rtu1.overlay b/tests/drivers/dma/chan_link_transfer/boards/s32z2xxdc2_s32z270_rtu1.overlay index 4bb508ed8486d..1e69a252002ff 100644 --- a/tests/drivers/dma/chan_link_transfer/boards/s32z2xxdc2_s32z270_rtu1.overlay +++ b/tests/drivers/dma/chan_link_transfer/boards/s32z2xxdc2_s32z270_rtu1.overlay @@ -8,4 +8,4 @@ status = "okay"; }; -dma0: &edma5 {}; +test_dma0: &edma5 {}; diff --git a/tests/drivers/dma/chan_link_transfer/src/test_dma.c b/tests/drivers/dma/chan_link_transfer/src/test_dma.c index 78b52b77857fc..a062f7e63e084 100644 --- a/tests/drivers/dma/chan_link_transfer/src/test_dma.c +++ b/tests/drivers/dma/chan_link_transfer/src/test_dma.c @@ -49,11 +49,10 @@ static void test_done(const struct device *dma_dev, void *arg, uint32_t id, } } -static int test_task(int minor, int major) +static int test_task(const struct device *dma, int minor, int major) { struct dma_config dma_cfg = { 0 }; struct dma_block_config dma_block_cfg = { 0 }; - const struct device *const dma = DEVICE_DT_GET(DT_NODELABEL(dma0)); if (!device_is_ready(dma)) { TC_PRINT("dma controller device is not ready\n"); @@ -148,18 +147,34 @@ static int test_task(int minor, int major) return TC_PASS; } -/* export test cases */ -ZTEST(dma_m2m_link, test_dma_m2m_chan0_1_major_link) -{ - zassert_true((test_task(0, 1) == TC_PASS)); -} +#define DMA_NAME(i, _) test_dma##i +#define DMA_LIST LISTIFY(CONFIG_DMA_LOOP_TRANSFER_NUMBER_OF_DMAS, DMA_NAME, (,)) -ZTEST(dma_m2m_link, test_dma_m2m_chan0_1_minor_link) -{ - zassert_true((test_task(1, 0) == TC_PASS)); -} +#define TEST_MAJOR_LINK(dma_name) \ + ZTEST(dma_m2m_link, test_##dma_name##_m2m_chan0_1_major_link) \ + { \ + const struct device *dma = DEVICE_DT_GET(DT_NODELABEL(dma_name)); \ + zassert_true((test_task(dma, 0, 1) == TC_PASS)); \ + } -ZTEST(dma_m2m_link, test_dma_m2m_chan0_1_minor_major_link) -{ - zassert_true((test_task(1, 1) == TC_PASS)); -} +FOR_EACH(TEST_LOOP, (), DMA_LIST) + ; + +#define TEST_MINOR_LINK(dma_name) \ + ZTEST(dma_m2m_link, test_##dma_name##_m2m_chan0_1_minor_link) \ + { \ + const struct device *dma = DEVICE_DT_GET(DT_NODELABEL(dma_name)); \ + zassert_true((test_task(dma, 1, 0) == TC_PASS)); \ + } + +FOR_EACH(TEST_LOOP_SUSPEND_RESUME, (), DMA_LIST) + ; + +#define TEST_MINOR_MAJOR_LINK(dma_name) \ + ZTEST(dma_m2m_link, test_##dma_name##_m2m_chan0_1_minor_major_link) \ + { \ + const struct device *dma = DEVICE_DT_GET(DT_NODELABEL(dma_name)); \ + zassert_true((test_task(dma, 1, 1) == TC_PASS)); \ + } + +FOR_EACH(TEST_LOOP_REPEATED_START_STOP, (), DMA_LIST); diff --git a/tests/drivers/dma/cyclic/Kconfig b/tests/drivers/dma/cyclic/Kconfig index d53b052542ac7..ba864401885a1 100644 --- a/tests/drivers/dma/cyclic/Kconfig +++ b/tests/drivers/dma/cyclic/Kconfig @@ -5,6 +5,10 @@ mainmenu "DMA Cyclic Test" source "Kconfig.zephyr" +config DMA_LOOP_TRANSFER_NUMBER_OF_DMAS + int "Number of DMAs to test" + default 1 + config DMA_CYCLIC_CHANNEL_NR int "DMA channel to use" default 0 diff --git a/tests/drivers/dma/cyclic/boards/xmc45_relax_kit.overlay b/tests/drivers/dma/cyclic/boards/xmc45_relax_kit.overlay index 4513bba046be3..593bc915fd745 100644 --- a/tests/drivers/dma/cyclic/boards/xmc45_relax_kit.overlay +++ b/tests/drivers/dma/cyclic/boards/xmc45_relax_kit.overlay @@ -4,12 +4,6 @@ * SPDX-License-Identifier: Apache-2.0 */ -/ { - aliases { - dma0 = &dma0; - }; -}; - -&dma0 { +test_dma0: &dma0 { status = "okay"; }; diff --git a/tests/drivers/dma/cyclic/boards/xmc47_relax_kit.overlay b/tests/drivers/dma/cyclic/boards/xmc47_relax_kit.overlay index 4513bba046be3..593bc915fd745 100644 --- a/tests/drivers/dma/cyclic/boards/xmc47_relax_kit.overlay +++ b/tests/drivers/dma/cyclic/boards/xmc47_relax_kit.overlay @@ -4,12 +4,6 @@ * SPDX-License-Identifier: Apache-2.0 */ -/ { - aliases { - dma0 = &dma0; - }; -}; - -&dma0 { +test_dma0: &dma0 { status = "okay"; }; diff --git a/tests/drivers/dma/cyclic/src/test_dma_cyclic.c b/tests/drivers/dma/cyclic/src/test_dma_cyclic.c index c80d0e6d9d6a0..8deda4340ab5d 100644 --- a/tests/drivers/dma/cyclic/src/test_dma_cyclic.c +++ b/tests/drivers/dma/cyclic/src/test_dma_cyclic.c @@ -37,9 +37,8 @@ static void dma_callback(const struct device *dma_dev, void *user_data, } -static int test_cyclic(void) +static int test_cyclic(const struct device *dma) { - const struct device *dma; int chan_id; TC_PRINT("Preparing DMA Controller\n"); @@ -48,7 +47,6 @@ static int test_cyclic(void) tx_data[i] = i; } - dma = DEVICE_DT_GET(DT_ALIAS(dma0)); if (!device_is_ready(dma)) { TC_PRINT("dma controller device is not ready\n"); return TC_FAIL; @@ -137,8 +135,14 @@ static int test_cyclic(void) return TC_PASS; } -/* export test cases */ -ZTEST(dma_m2m_cyclic, test_dma_m2m_cyclic) -{ - zassert_true((test_cyclic() == TC_PASS)); -} +#define DMA_NAME(i, _) test_dma##i +#define DMA_LIST LISTIFY(CONFIG_DMA_LOOP_TRANSFER_NUMBER_OF_DMAS, DMA_NAME, (,)) + +#define TEST_CYCLIC(dma_name) \ + ZTEST(dma_m2m_cyclic, test_##dma_name##_m2m_cyclic) \ + { \ + const struct device *dma = DEVICE_DT_GET(DT_NODELABEL(dma_name)); \ + zassert_true((test_cyclic(dma) == TC_PASS)); \ + } + +FOR_EACH(TEST_CYCLIC, (), DMA_LIST);