diff --git a/boards/ite/it515xx_evb/it515xx_evb.dts b/boards/ite/it515xx_evb/it515xx_evb.dts index 926c93bd921..08c99ca1ebc 100644 --- a/boards/ite/it515xx_evb/it515xx_evb.dts +++ b/boards/ite/it515xx_evb/it515xx_evb.dts @@ -153,3 +153,11 @@ &sha256 { status = "okay"; }; + +/* voltage comparator for test */ +&vcmp1 { + status = "okay"; + threshold-mv = <1500>; + scan-period = <0x4>; + io-channels = <&adc0 3>; +}; diff --git a/drivers/comparator/CMakeLists.txt b/drivers/comparator/CMakeLists.txt index 5d8ef055461..bdbc9ce815c 100644 --- a/drivers/comparator/CMakeLists.txt +++ b/drivers/comparator/CMakeLists.txt @@ -8,6 +8,7 @@ zephyr_library() zephyr_library_sources_ifdef(CONFIG_USERSPACE comparator_handlers.c) zephyr_library_sources_ifdef(CONFIG_COMPARATOR_SILABS_ACMP comparator_silabs_acmp.c) zephyr_library_sources_ifdef(CONFIG_COMPARATOR_FAKE_COMP comparator_fake_comp.c) +zephyr_library_sources_ifdef(CONFIG_COMPARATOR_IT51XXX_VCMP comparator_it51xxx_vcmp.c) zephyr_library_sources_ifdef(CONFIG_COMPARATOR_MCUX_ACMP comparator_mcux_acmp.c) zephyr_library_sources_ifdef(CONFIG_COMPARATOR_NRF_COMP comparator_nrf_comp.c) zephyr_library_sources_ifdef(CONFIG_COMPARATOR_NRF_LPCOMP comparator_nrf_lpcomp.c) diff --git a/drivers/comparator/Kconfig b/drivers/comparator/Kconfig index 2cc02c24085..07707385b05 100644 --- a/drivers/comparator/Kconfig +++ b/drivers/comparator/Kconfig @@ -20,6 +20,7 @@ config COMPARATOR_INIT_PRIORITY rsource "Kconfig.fake_comp" rsource "Kconfig.silabs_acmp" +rsource "Kconfig.it51xxx_vcmp" rsource "Kconfig.mcux_acmp" rsource "Kconfig.nrf_comp" rsource "Kconfig.nrf_lpcomp" diff --git a/drivers/comparator/Kconfig.it51xxx_vcmp b/drivers/comparator/Kconfig.it51xxx_vcmp new file mode 100644 index 00000000000..2881beb779a --- /dev/null +++ b/drivers/comparator/Kconfig.it51xxx_vcmp @@ -0,0 +1,15 @@ +# ITE Voltage Comparator driver configuration options + +# Copyright (c) 2025 ITE Technology Corporation. +# SPDX-License-Identifier: Apache-2.0 + +config COMPARATOR_IT51XXX_VCMP + bool "ITE it51xxx Voltage Comparator" + default y + depends on ADC_ITE_IT51XXX + depends on DT_HAS_ITE_IT51XXX_VCMP_ENABLED + depends on DYNAMIC_INTERRUPTS + help + This option enables the ITE it51xxx voltage comparator, + it51xxx supports three 10-bit threshold voltage comparator + channels, and the input of each comparator comes from ADC pin. diff --git a/drivers/comparator/comparator_it51xxx_vcmp.c b/drivers/comparator/comparator_it51xxx_vcmp.c new file mode 100644 index 00000000000..e0a3e11b0c0 --- /dev/null +++ b/drivers/comparator/comparator_it51xxx_vcmp.c @@ -0,0 +1,408 @@ +/* + * Copyright (c) 2025 ITE Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#define DT_DRV_COMPAT ite_it51xxx_vcmp + +#include +#include +#include +#include +#include +#include + +#include + +#include +LOG_MODULE_REGISTER(comparator_it51xxx_vcmp, CONFIG_COMPARATOR_LOG_LEVEL); + +#define VCMP_CHANNEL_ID_REG_MASK GENMASK(2, 0) +#define VCMP_THRESHOLD BIT(10) +#ifdef CONFIG_ADC_IT51XXX_VOL_FULL_SCALE +#define VCMP_MAX_MVOLT 3300 +#else +#define VCMP_MAX_MVOLT 3000 +#endif + +/* 0x20, 0x28, 0x2c: Voltage Comparator n Control Register (VCMPnCTL) (n=0 to 2) */ +#define REG_VCMP_VCMP0CTL 0x20 +#define REG_VCMP_VCMP1CTL 0x28 +#define REG_VCMP_VCMP2CTL 0x2C +#define VCMP_CMPEN BIT(7) +#define VCMP_CMPINTEN BIT(6) +#define VCMP_GREATER_THRESHOLD BIT(5) +#define VCMP_CMP_EDGE_SENSED_MODE BIT(4) +const uint8_t vcmp_ctrl_reg[VCMP_CHANNEL_CNT] = {REG_VCMP_VCMP0CTL, REG_VCMP_VCMP1CTL, + REG_VCMP_VCMP2CTL}; + +/* 0x21, 0x29, 0x2D: Voltage Comparator n Status and Control Register (VCMPnSCTL) (n=0 to 2) */ +#define REG_VCMP_VCMP0SCTL 0x21 +#define REG_VCMP_VCMP1SCTL 0x29 +#define REG_VCMP_VCMP2SCTL 0x2D +#define VCMP_CMPXRTIS BIT(6) +const uint8_t vcmp_status_ctrl_reg[VCMP_CHANNEL_CNT] = {REG_VCMP_VCMP0SCTL, REG_VCMP_VCMP1SCTL, + REG_VCMP_VCMP2SCTL}; + +/* 0x22, 0x2A, 0x2E: Voltage Comparator 0~2 MSB Threshold Data Buffer (10-bit resolution) */ +#define REG_VCMP_CH_THRDATM 0x02 + +/* 0x23, 0x2B, 0x2F: Voltage Comparator 0~2 LSB Threshold Data Buffer (10-bit resolution) */ +#define REG_VCMP_CH_THRDATL 0x03 + +/* 0x33: Voltage Comparator Scan Period 2 (VCMPSCP2) */ +#define REG_VCMP_VCMPSCP2 0x33 +#define SCAN_PERIOD_MASK GENMASK(7, 4) + +/* Device config */ +struct vcmp_it51xxx_config { + /* Voltage comparator channel base address */ + uintptr_t base_ch; + /* Voltage comparator base address */ + uintptr_t reg_base; + /* Voltage comparator module irq */ + int irq; + /* Voltage comparator channel */ + int vcmp_ch; + /* Comparator 0/1/2 Scan Period */ + uint8_t scan_period; + /* Threshold assert value in mv */ + int32_t threshold_mv; + /* Pointer of ADC device that will be performing measurement */ + const struct device *adc; + /* Channel identifier */ + uint8_t channel_id; +}; + +/* Driver data */ +struct vcmp_it51xxx_data { + /* ADC channel config */ + struct adc_channel_cfg adc_ch_cfg; + comparator_callback_t user_cb; + void *user_cb_data; + uint8_t interrupt_mask; + atomic_t triggered; + /* Pointer of voltage comparator device */ + const struct device *vcmp; +}; +/* + * Because all the three voltage comparators use the same interrupt number, the + * 'irq_connect_dynamic' call in the driver init function sets the passed-in dev pointer in isr + * function to the first instantiated voltage comparator. + * + * For example, when setting vcmp2 and vcmp3 to 'status = "okay";' in dts file, each time an + * interrupt is triggered,the passed-in 'const struct device *dev' argument in isr function always + * points to vcmp2 device. + * + * To access the 'struct vcmp_it51xxx_data' of respective voltage comparator instance, we + * use a array to store their address. + */ +static struct vcmp_it51xxx_data *vcmp_data[VCMP_CHANNEL_CNT]; + +static void vcmp_irq_handler(const struct device *dev) +{ + struct vcmp_it51xxx_data *const data = dev->data; + + if (data->user_cb == NULL) { + atomic_set_bit(&data->triggered, 0); + return; + } + + data->user_cb(dev, data->user_cb_data); + atomic_clear_bit(&data->triggered, 0); +} + +static void clear_vcmp_status(const struct device *dev, int channel) +{ + const struct vcmp_it51xxx_config *const cfg = dev->config; + const uintptr_t reg_base = cfg->reg_base; + + sys_write8(sys_read8(reg_base + vcmp_status_ctrl_reg[channel]), + reg_base + vcmp_status_ctrl_reg[channel]); +} + +static int vcmp_set_threshold(const struct device *dev, int32_t threshold_mv) +{ + const struct vcmp_it51xxx_config *const cfg = dev->config; + const uintptr_t base_ch = cfg->base_ch; + int32_t reg_val; + + /* + * Tranfrom threshold from mv to raw + * NOTE: CMPXTHRDAT[9:0] = threshold(mv) * 1024 / 3000(mv) + */ + reg_val = (threshold_mv * VCMP_THRESHOLD / VCMP_MAX_MVOLT); + + if (reg_val >= VCMP_THRESHOLD) { + LOG_ERR("Vcmp%d threshold only support 10-bits", cfg->vcmp_ch); + return -ENOTSUP; + } + + /* Set threshold raw value */ + sys_write8(reg_val & 0xff, base_ch + REG_VCMP_CH_THRDATL); + sys_write8((reg_val >> 8) & 0xff, base_ch + REG_VCMP_CH_THRDATM); + + return 0; +} + +static void vcmp_set_attr(const struct device *dev, enum comparator_trigger trigger) +{ + const struct vcmp_it51xxx_config *const cfg = dev->config; + const uintptr_t base_ch = cfg->base_ch; + + /* Set lower or higher threshold */ + if (trigger == COMPARATOR_TRIGGER_RISING_EDGE) { + sys_write8(sys_read8(base_ch) | VCMP_GREATER_THRESHOLD, base_ch); + } else { + sys_write8(sys_read8(base_ch) & ~VCMP_GREATER_THRESHOLD, base_ch); + } +} + +static void vcmp_enable(const struct device *dev, bool enable) +{ + const struct vcmp_it51xxx_config *const cfg = dev->config; + const uintptr_t base_ch = cfg->base_ch; + + if (enable) { + /* Enable voltage comparator interrupt */ + sys_write8(sys_read8(base_ch) | VCMP_CMPINTEN, base_ch); + /* Start voltage comparator */ + sys_write8(sys_read8(base_ch) | VCMP_CMPEN, base_ch); + } else { + /* Disable voltage comparator interrupt */ + sys_write8(sys_read8(base_ch) & ~VCMP_CMPINTEN, base_ch); + /* Stop voltage comparator */ + sys_write8(sys_read8(base_ch) & ~VCMP_CMPEN, base_ch); + } +} + +static int it51xxx_vcmp_get_output(const struct device *dev) +{ + ARG_UNUSED(dev); + + LOG_ERR("Unsupported function: %s", __func__); + + return -ENOTSUP; +} + +static int it51xxx_vcmp_set_trigger(const struct device *dev, enum comparator_trigger trigger) +{ + const struct vcmp_it51xxx_config *cfg = dev->config; + struct vcmp_it51xxx_data *data = dev->data; + + /* Disable VCMP interrupt */ + vcmp_enable(dev, false); + + /* W/C voltage comparator specific channel interrupt status */ + clear_vcmp_status(dev, cfg->vcmp_ch); + + switch (trigger) { + case COMPARATOR_TRIGGER_BOTH_EDGES: + LOG_ERR("Unsupported trigger: COMPARATOR_TRIGGER_BOTH_EDGES"); + return -ENOTSUP; + case COMPARATOR_TRIGGER_RISING_EDGE: + data->interrupt_mask = COMPARATOR_TRIGGER_RISING_EDGE; + vcmp_set_attr(dev, COMPARATOR_TRIGGER_RISING_EDGE); + break; + case COMPARATOR_TRIGGER_FALLING_EDGE: + data->interrupt_mask = COMPARATOR_TRIGGER_FALLING_EDGE; + vcmp_set_attr(dev, COMPARATOR_TRIGGER_FALLING_EDGE); + break; + case COMPARATOR_TRIGGER_NONE: + data->interrupt_mask = 0; + break; + default: + return -EINVAL; + } + + if (data->interrupt_mask) { + vcmp_enable(dev, true); + } + + return 0; +} + +static int it51xxx_vcmp_set_trigger_callback(const struct device *dev, + comparator_callback_t callback, void *user_data) +{ + struct vcmp_it51xxx_data *data = dev->data; + + /* Disable voltage comparator and interrupt */ + vcmp_enable(dev, false); + + data->user_cb = callback; + data->user_cb_data = user_data; + + if (callback != NULL && atomic_test_and_clear_bit(&data->triggered, 0)) { + callback(dev, user_data); + } + + /* Re-enable currently set VCMP interrupt */ + if (data->interrupt_mask) { + vcmp_enable(dev, true); + } + + return 0; +} + +static int it51xxx_vcmp_trigger_is_pending(const struct device *dev) +{ + struct vcmp_it51xxx_data *data = dev->data; + + return atomic_test_and_clear_bit(&data->triggered, 0); +} + +/* + * All voltage comparator channels share one irq interrupt, so we + * need to handle all channels, when the interrupt fired. + */ +static void vcmp_it51xxx_isr(const struct device *dev) +{ + const struct vcmp_it51xxx_config *const cfg = dev->config; + const uintptr_t reg_base = cfg->reg_base; + /* + * Comparator n Trigger Mode (CMPnTMOD) + * false (0): Less than or equal to CMPnTHRDAT [9:0] + * true (1): Greater than CMPnTHRDAT [9:0] + */ + bool comparator_mode; + + /* Find out which voltage comparator triggered */ + for (int idx = VCMP_CHANNEL_0; idx < VCMP_CHANNEL_CNT; idx++) { + if (sys_read8(reg_base + vcmp_status_ctrl_reg[idx]) & VCMP_CMPXRTIS) { + struct vcmp_it51xxx_data *data = vcmp_data[idx]; + + comparator_mode = + sys_read8(reg_base + vcmp_ctrl_reg[idx]) & VCMP_GREATER_THRESHOLD; + + if ((comparator_mode && data && + data->interrupt_mask == COMPARATOR_TRIGGER_RISING_EDGE) || + (!comparator_mode && data && + data->interrupt_mask == COMPARATOR_TRIGGER_FALLING_EDGE)) { + + vcmp_irq_handler(data->vcmp); + } + + if (comparator_mode) { + sys_write8(sys_read8(reg_base + vcmp_ctrl_reg[idx]) & + ~VCMP_GREATER_THRESHOLD, + reg_base + vcmp_ctrl_reg[idx]); + } else { + sys_write8(sys_read8(reg_base + vcmp_ctrl_reg[idx]) | + VCMP_GREATER_THRESHOLD, + reg_base + vcmp_ctrl_reg[idx]); + } + + /* W/C voltage comparator specific channel interrupt status */ + clear_vcmp_status(dev, idx); + } + } + + /* W/C voltage comparator irq interrupt status */ + ite_intc_isr_clear(cfg->irq); +} + +static int vcmp_it51xxx_init(const struct device *dev) +{ + const struct vcmp_it51xxx_config *const cfg = dev->config; + struct vcmp_it51xxx_data *const data = dev->data; + uintptr_t base_ch = cfg->base_ch; + uintptr_t reg_vcmpscp2 = cfg->reg_base + REG_VCMP_VCMPSCP2; + uint8_t reg_value; + int err; + + data->adc_ch_cfg.gain = ADC_GAIN_1; + data->adc_ch_cfg.reference = ADC_REF_INTERNAL; + data->adc_ch_cfg.acquisition_time = ADC_ACQ_TIME_DEFAULT; + data->adc_ch_cfg.channel_id = cfg->channel_id; + + /* Disable voltage comparator and interrupt */ + vcmp_enable(dev, false); + + /* + * ADC channel signal output to voltage comparator, + * so we need to set ADC channel to alternate mode first. + */ + if (!device_is_ready(cfg->adc)) { + LOG_ERR("ADC device not ready"); + return -ENODEV; + } + + err = adc_channel_setup(cfg->adc, &data->adc_ch_cfg); + if (err) { + return err; + } + + /* Select which ADC channel output voltage into comparator */ + reg_value = FIELD_PREP(GENMASK(7, 3), sys_read8(base_ch)); + reg_value |= data->adc_ch_cfg.channel_id & VCMP_CHANNEL_ID_REG_MASK; + sys_write8(reg_value, base_ch); + + /* Set VCMP to Edge Sense Mode */ + sys_write8(sys_read8(base_ch) | VCMP_CMP_EDGE_SENSED_MODE, base_ch); + + /* Store the address of driver data for later access in ISR function*/ + if (cfg->vcmp_ch >= VCMP_CHANNEL_CNT) { + LOG_ERR("invalid volt comparator channel setting(%d)", cfg->vcmp_ch); + return -EINVAL; + } + vcmp_data[cfg->vcmp_ch] = dev->data; + + /* + * Set minimum scan period for "all" voltage comparator + * Three voltage comparators share a scan period setting and use the fastest one + */ + if (cfg->scan_period < FIELD_GET(SCAN_PERIOD_MASK, sys_read8(reg_vcmpscp2))) { + sys_write8(FIELD_PREP(SCAN_PERIOD_MASK, cfg->scan_period), reg_vcmpscp2); + } + + /* Data must keep device reference for later access in ISR function */ + data->vcmp = dev; + + err = vcmp_set_threshold(dev, cfg->threshold_mv); + if (err) { + return err; + } + + /* + * All voltage comparator channels share one irq interrupt, + * so if the irq is enabled before, we needn't to enable again. + * And we will figure out the triggered channel in vcmp_it51xxx_isr(). + */ + if (!irq_is_enabled(cfg->irq)) { + ite_intc_isr_clear(cfg->irq); + irq_connect_dynamic(cfg->irq, 0, (void (*)(const void *))vcmp_it51xxx_isr, + (const void *)dev, 0); + irq_enable(cfg->irq); + } + + return 0; +} + +static DEVICE_API(comparator, it51xxx_vcmp_api) = { + .get_output = it51xxx_vcmp_get_output, + .set_trigger = it51xxx_vcmp_set_trigger, + .set_trigger_callback = it51xxx_vcmp_set_trigger_callback, + .trigger_is_pending = it51xxx_vcmp_trigger_is_pending, +}; + +#define VCMP_IT51XXX_INIT(inst) \ + static const struct vcmp_it51xxx_config vcmp_it51xxx_cfg_##inst = { \ + .base_ch = DT_INST_REG_ADDR_BY_IDX(inst, 0), \ + .reg_base = DT_INST_REG_ADDR_BY_IDX(inst, 1), \ + .irq = DT_INST_IRQN(inst), \ + .vcmp_ch = DT_INST_PROP(inst, vcmp_ch), \ + .scan_period = DT_INST_PROP(inst, scan_period), \ + .threshold_mv = DT_INST_PROP(inst, threshold_mv), \ + .adc = DEVICE_DT_GET(DT_INST_IO_CHANNELS_CTLR(inst)), \ + .channel_id = (uint8_t)DT_INST_IO_CHANNELS_INPUT(inst), \ + }; \ + \ + static struct vcmp_it51xxx_data vcmp_it51xxx_data_##inst; \ + \ + DEVICE_DT_INST_DEFINE(inst, vcmp_it51xxx_init, NULL, &vcmp_it51xxx_data_##inst, \ + &vcmp_it51xxx_cfg_##inst, POST_KERNEL, \ + CONFIG_COMPARATOR_INIT_PRIORITY, &it51xxx_vcmp_api); + +DT_INST_FOREACH_STATUS_OKAY(VCMP_IT51XXX_INIT) diff --git a/drivers/spi/spi_nxp_lpspi/spi_nxp_lpspi_dma.c b/drivers/spi/spi_nxp_lpspi/spi_nxp_lpspi_dma.c index 5b14a66fc19..0213a808afa 100644 --- a/drivers/spi/spi_nxp_lpspi/spi_nxp_lpspi_dma.c +++ b/drivers/spi/spi_nxp_lpspi/spi_nxp_lpspi_dma.c @@ -1,5 +1,5 @@ /* - * Copyright 2018, 2024 NXP + * Copyright 2018, 2024-2025 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -12,6 +12,19 @@ LOG_MODULE_DECLARE(spi_lpspi, CONFIG_SPI_LOG_LEVEL); #include #include "spi_nxp_lpspi_priv.h" +/* These states indicate what's the status of RX and TX, also synchronization + * status of DMA size of the next DMA transfer. + */ +typedef enum { + LPSPI_TRANSFER_STATE_NULL, + LPSPI_TRANSFER_STATE_ONGOING, + LPSPI_TRANSFER_STATE_NEXT_DMA_SIZE_UPDATED, + LPSPI_TRANSFER_STATE_TX_DONE, + LPSPI_TRANSFER_STATE_RX_DONE, + LPSPI_TRANSFER_STATE_RX_TX_DONE, + LPSPI_TRANSFER_STATE_INVALID = 0xFFFFFFFFUL, +} lpspi_transfer_state_t; + /* dummy memory used for transferring NOP when tx buf is null */ static uint32_t tx_nop_val; /* check compliance says no init to 0, but should be 0 in bss */ /* dummy memory for transferring to when RX buf is null */ @@ -22,17 +35,58 @@ struct spi_dma_stream { uint32_t channel; struct dma_config dma_cfg; struct dma_block_config dma_blk_cfg; - bool chunk_done; }; struct spi_nxp_dma_data { struct spi_dma_stream dma_rx; struct spi_dma_stream dma_tx; + + lpspi_transfer_state_t state; + /* This DMA size is used in callback function for RX and TX context update. + * because of old LPSPI IP limitation, RX complete depend on next TX DMA transfer start, + * so TX and RX not always start at the same time while we can only calculate DMA transfer + * size once and update the buffer pointers at the same time. + */ + size_t synchronize_dma_size; }; +/* + * Issue a TCR (Transmit Command Register) command to properly end RX DMA transfers + * on certain LPSPI versions. The behavior depends on: + * + * 1. LPSPI Hardware Version: + * - Version 1 (RT1170, RT10xx, Kinetis K series): TCR issue always required + * - Version 2 (RT1180, MCXN, RT700, K32W, S32K3xx, MCXL10): TCR issue not needed + * + * 2. SPI_HOLD_ON_CS Configuration: + * - If enabled: Keeps chip select (PCS) asserted between transfers + * - If disabled: Deasserts PCS after each transfer + * + * This function checks the LPSPI version and SPI_HOLD_ON_CS setting to determine + * if a TCR command is needed. For version 1, TCR is always issued. For version 2, + * TCR is only issued if SPI_HOLD_ON_CS is not set. Therefore, SPI_HOLD_ON_CS is not + * supported for version 1. + * + * The LPSPI version can be read from the VERID register, which is typically the + * first register in the memory map. + */ +static void spi_mcux_issue_TCR(const struct device *dev) +{ + LPSPI_Type *base = (LPSPI_Type *)DEVICE_MMIO_NAMED_GET(dev, reg_base); + const struct spi_config *spi_cfg = DEV_DATA(dev)->ctx.config; + uint8_t major_ver = (base->VERID & LPSPI_VERID_MAJOR_MASK) >> LPSPI_VERID_MAJOR_SHIFT; + + /* On old LPSPI versions, we always have to issue TCR, or transaction will never end. + * On a newer LPSPI version, only issue TCR when hold on CS feature is disabled. + */ + if (major_ver < 2 || !(spi_cfg->operation & SPI_HOLD_ON_CS)) { + base->TCR &= ~LPSPI_TCR_CONTC_MASK; + } +} + static struct dma_block_config *lpspi_dma_common_load(struct spi_dma_stream *stream, - const struct device *dev, - const uint8_t *buf, size_t len) + const struct device *dev, const uint8_t *buf, + size_t len) { struct dma_block_config *blk_cfg = &stream->dma_blk_cfg; @@ -91,30 +145,35 @@ static int lpspi_dma_rx_load(const struct device *dev, uint8_t *buf, size_t len) return dma_config(stream->dma_dev, stream->channel, &stream->dma_cfg); } -static inline int lpspi_dma_rxtx_load(const struct device *dev) +/* Return values: + * positive value if a data chunk is loaded successfully and return the data chunk size loaded; + * negative value if error happens and return the error code; + * 0 if no data is loaded; + */ +static int lpspi_dma_rxtx_load(const struct device *dev) { struct lpspi_data *data = dev->data; struct spi_nxp_dma_data *dma_data = (struct spi_nxp_dma_data *)data->driver_data; struct spi_dma_stream *rx = &dma_data->dma_rx; struct spi_dma_stream *tx = &dma_data->dma_tx; struct spi_context *ctx = &data->ctx; - size_t next_chunk_size = spi_context_max_continuous_chunk(ctx); + size_t dma_size = spi_context_max_continuous_chunk(ctx); int ret = 0; - if (next_chunk_size == 0) { + if (dma_size == 0) { /* In case both buffers are 0 length, we should not even be here * and attempting to set up a DMA transfer like this will cause * errors that lock up the system in some cases with eDMA. */ - return -ENODATA; + return 0; } - ret = lpspi_dma_tx_load(dev, ctx->tx_buf, next_chunk_size); + ret = lpspi_dma_tx_load(dev, ctx->tx_buf, dma_size); if (ret != 0) { return ret; } - ret = lpspi_dma_rx_load(dev, ctx->rx_buf, next_chunk_size); + ret = lpspi_dma_rx_load(dev, ctx->rx_buf, dma_size); if (ret != 0) { return ret; } @@ -124,24 +183,17 @@ static inline int lpspi_dma_rxtx_load(const struct device *dev) return ret; } - return dma_start(tx->dma_dev, tx->channel); -} - -static int lpspi_dma_next_fill(const struct device *dev) -{ - struct lpspi_data *data = (struct lpspi_data *)dev->data; - struct spi_nxp_dma_data *dma_data = (struct spi_nxp_dma_data *)data->driver_data; - struct spi_dma_stream *rx = &dma_data->dma_rx; - struct spi_dma_stream *tx = &dma_data->dma_tx; - - rx->chunk_done = false; - tx->chunk_done = false; + ret = dma_start(tx->dma_dev, tx->channel); + if (ret != 0) { + return ret; + } - return lpspi_dma_rxtx_load(dev); + return dma_size; } static void spi_mcux_dma_callback(const struct device *dev, void *arg, uint32_t channel, int status) { + /* arg directly holds the spi device */ const struct device *spi_dev = arg; LPSPI_Type *base = (LPSPI_Type *)DEVICE_MMIO_NAMED_GET(spi_dev, reg_base); struct lpspi_data *data = (struct lpspi_data *)spi_dev->data; @@ -149,63 +201,98 @@ static void spi_mcux_dma_callback(const struct device *dev, void *arg, uint32_t struct spi_dma_stream *rx = &dma_data->dma_rx; struct spi_dma_stream *tx = &dma_data->dma_tx; struct spi_context *ctx = &data->ctx; - char debug_char; + char debug_char = (channel == dma_data->dma_tx.channel) ? 'T' : 'R'; + int ret = 0; if (status < 0) { + ret = status; goto error; - } else { - /* don't care about positive values, normalize to "okay" = 0 */ - status = 0; } - if (channel == rx->channel) { - spi_context_update_rx(ctx, 1, rx->dma_blk_cfg.block_size); - debug_char = 'R'; - rx->chunk_done = true; - } else if (channel == tx->channel) { - spi_context_update_tx(ctx, 1, tx->dma_blk_cfg.block_size); - debug_char = 'T'; - tx->chunk_done = true; - } else { - /* invalid channel */ - status = -EIO; + if (channel != dma_data->dma_tx.channel && channel != dma_data->dma_rx.channel) { + ret = -EIO; goto error; } - LOG_DBG("DMA %cX Block Complete", debug_char); - - /* wait for the other channel to finish if needed */ - if (!rx->chunk_done || !tx->chunk_done) { - return; - } - - - while ((IS_ENABLED(CONFIG_SOC_FAMILY_NXP_IMXRT) || - IS_ENABLED(CONFIG_SOC_FAMILY_KINETIS)) && - (base->SR & LPSPI_SR_MBF_MASK)) { - /* wait until module is idle */ - } - - if (spi_context_max_continuous_chunk(ctx) == 0) { - goto done; - } - - status = lpspi_dma_next_fill(spi_dev); - if (status) { + switch (dma_data->state) { + case LPSPI_TRANSFER_STATE_ONGOING: + spi_context_update_tx(ctx, 1, tx->dma_blk_cfg.block_size); + spi_context_update_rx(ctx, 1, rx->dma_blk_cfg.block_size); + /* Calculate next DMA transfer size */ + dma_data->synchronize_dma_size = spi_context_max_continuous_chunk(ctx); + LOG_DBG("tx len:%d rx len:%d next dma size:%d", ctx->tx_len, ctx->rx_len, + dma_data->synchronize_dma_size); + if (dma_data->synchronize_dma_size > 0) { + ret = (channel == dma_data->dma_tx.channel) + ? lpspi_dma_tx_load(spi_dev, ctx->tx_buf, + dma_data->synchronize_dma_size) + : lpspi_dma_rx_load(spi_dev, ctx->rx_buf, + dma_data->synchronize_dma_size); + + if (ret != 0) { + goto error; + } + + ret = dma_start(dev, channel); + if (ret != 0) { + goto error; + } + dma_data->state = LPSPI_TRANSFER_STATE_NEXT_DMA_SIZE_UPDATED; + } else { + ret = dma_stop(dev, channel); + if (ret != 0) { + goto error; + } + /* This is the end of the transfer. */ + if (channel == dma_data->dma_tx.channel) { + spi_mcux_issue_TCR(spi_dev); + dma_data->state = LPSPI_TRANSFER_STATE_TX_DONE; + base->DER &= ~LPSPI_DER_TDDE_MASK; + } else { + dma_data->state = LPSPI_TRANSFER_STATE_RX_DONE; + base->DER &= ~LPSPI_DER_RDDE_MASK; + } + } + break; + case LPSPI_TRANSFER_STATE_NEXT_DMA_SIZE_UPDATED: + ret = (channel == dma_data->dma_tx.channel) + ? lpspi_dma_tx_load(spi_dev, ctx->tx_buf, + dma_data->synchronize_dma_size) + : lpspi_dma_rx_load(spi_dev, ctx->rx_buf, + dma_data->synchronize_dma_size); + dma_data->synchronize_dma_size = 0; + + if (ret != 0) { + goto error; + } + + ret = dma_start(dev, channel); + if (ret != 0) { + goto error; + } + dma_data->state = LPSPI_TRANSFER_STATE_ONGOING; + break; + + case LPSPI_TRANSFER_STATE_TX_DONE: + case LPSPI_TRANSFER_STATE_RX_DONE: + dma_data->state = LPSPI_TRANSFER_STATE_RX_TX_DONE; + /* TX and RX both done here. */ + spi_context_complete(ctx, spi_dev, 0); + spi_context_cs_control(ctx, false); + break; + + default: + LOG_ERR("unknown spi stransfer state:%d", dma_data->state); + ret = -EIO; goto error; } + LOG_DBG("DMA %cX Block Complete", debug_char); return; error: - LOG_ERR("DMA callback error with channel %d err %d.", channel, status); -done: - base->DER &= ~(LPSPI_DER_TDDE_MASK | LPSPI_DER_RDDE_MASK); - base->TCR &= ~LPSPI_TCR_CONT_MASK; - lpspi_wait_tx_fifo_empty(spi_dev); + LOG_ERR("DMA callback error with channel %d.", channel); + spi_context_complete(ctx, spi_dev, ret); spi_context_cs_control(ctx, false); - base->CR |= LPSPI_CR_RTF_MASK | LPSPI_CR_RRF_MASK; - spi_context_complete(ctx, spi_dev, status); - spi_context_release(ctx, status); } static int transceive_dma(const struct device *dev, const struct spi_config *spi_cfg, @@ -214,7 +301,9 @@ static int transceive_dma(const struct device *dev, const struct spi_config *spi { LPSPI_Type *base = (LPSPI_Type *)DEVICE_MMIO_NAMED_GET(dev, reg_base); struct lpspi_data *data = dev->data; + struct spi_nxp_dma_data *dma_data = (struct spi_nxp_dma_data *)data->driver_data; struct spi_context *ctx = &data->ctx; + uint8_t major_ver = (base->VERID & LPSPI_VERID_MAJOR_MASK) >> LPSPI_VERID_MAJOR_SHIFT; int ret; spi_context_lock(ctx, asynchronous, cb, userdata, spi_cfg); @@ -224,30 +313,41 @@ static int transceive_dma(const struct device *dev, const struct spi_config *spi goto out; } - spi_context_buffers_setup(ctx, tx_bufs, rx_bufs, 1); - - ret = lpspi_dma_next_fill(dev); - if (ret == -ENODATA) { - /* No transfer to do? So just exit */ - ret = 0; - goto out; - } else if (ret) { - goto out; + /* Check CS hold on feature for DMA mode, it is not supported on some platform. */ + if ((spi_cfg->operation & SPI_HOLD_ON_CS) && major_ver < 2) { + LOG_ERR("SPI CS hold on feature is not supported on this platform."); + return -ENOTSUP; } - if (!(IS_ENABLED(CONFIG_SOC_FAMILY_NXP_IMXRT) || IS_ENABLED(CONFIG_SOC_FAMILY_KINETIS))) { - base->TCR |= LPSPI_TCR_CONT_MASK; - } + /* Always use continuous mode to satisfy SPI API requirements. */ + base->TCR |= LPSPI_TCR_CONT_MASK | LPSPI_TCR_CONTC_MASK; - spi_context_cs_control(ctx, true); + /* Please set both watermarks as 0 because there are some synchronize requirements + * between RX and TX on RT platform. TX and RX DMA callback must be called in interleaved + * mode, a none-zero TX watermark may break this. + */ + base->FCR = LPSPI_FCR_TXWATER(0) | LPSPI_FCR_RXWATER(0); + spi_context_buffers_setup(&data->ctx, tx_bufs, rx_bufs, 1); - base->CR |= LPSPI_CR_RTF_MASK | LPSPI_CR_RRF_MASK; + /* Set next dma size is invalid. */ + dma_data->synchronize_dma_size = 0; + dma_data->state = LPSPI_TRANSFER_STATE_NULL; + /* Load dma block */ + ret = lpspi_dma_rxtx_load(dev); + if (ret <= 0) { + goto out; + } + + dma_data->state = LPSPI_TRANSFER_STATE_ONGOING; + /* Set CS line just before DMA transfer. */ + spi_context_cs_control(ctx, true); + /* Enable DMA Requests */ base->DER |= LPSPI_DER_TDDE_MASK | LPSPI_DER_RDDE_MASK; ret = spi_context_wait_for_completion(ctx); - if (ret >= 0) { - return ret; + if (ret) { + spi_context_cs_control(ctx, false); } out: spi_context_release(ctx, ret); diff --git a/dts/bindings/comparator/ite,it51xxx-vcmp.yaml b/dts/bindings/comparator/ite,it51xxx-vcmp.yaml new file mode 100644 index 00000000000..08fd821f798 --- /dev/null +++ b/dts/bindings/comparator/ite,it51xxx-vcmp.yaml @@ -0,0 +1,65 @@ +# Copyright (c) 2025 ITE Technology Corporation. +# SPDX-License-Identifier: Apache-2.0 + +description: ITE, it51xxx Voltage Comparator node + +compatible: "ite,it51xxx-vcmp" + +include: base.yaml + +properties: + reg: + required: true + + interrupts: + required: true + + vcmp-ch: + type: int + required: true + description: | + Voltage comparator channel. + Check include/zephyr/dt-bindings/comparator/it51xxx-vcmp.h file for + pre-defined values. + + threshold-mv: + type: int + required: true + description: | + 16-bit value in milli-volts present on ADC data as threshold assert. + + io-channels: + type: phandle-array + required: true + description: | + ADC channel that will perform measurement. + + scan-period: + type: int + description: | + 0x1: Set comparator scan period to 100US + 0x2: Set comparator scan period to 200US + 0x3: Set comparator scan period to 400US + 0x4: Set comparator scan period to 600US + 0x5: Set comparator scan period to 800US + 0x6: Set comparator scan period to 1MS + 0x7: Set comparator scan period to 1.5MS + 0x8: Set comparator scan period to 2MS + 0x9: Set comparator scan period to 2.5MS + 0xA: Set comparator scan period to 3MS + 0xB: Set comparator scan period to 4MS + 0xC: Set comparator scan period to 5MS + default: 0x4 + enum: + - 0x1 + - 0x2 + - 0x3 + - 0x4 + - 0x5 + - 0x6 + - 0x7 + - 0x8 + - 0x9 + - 0xA + - 0xB + - 0xC diff --git a/dts/riscv/ite/it51xxx.dtsi b/dts/riscv/ite/it51xxx.dtsi index 8f3b008276e..16633f3c6b2 100644 --- a/dts/riscv/ite/it51xxx.dtsi +++ b/dts/riscv/ite/it51xxx.dtsi @@ -6,9 +6,10 @@ #include #include +#include #include +#include #include -#include #include #include #include @@ -84,6 +85,36 @@ #io-channel-cells = <1>; }; + vcmp0: vcmp@f04520 { + compatible = "ite,it51xxx-vcmp"; + interrupt-parent = <&intc>; + interrupts = ; + reg = <0xf04520 0x08 + 0xf04500 0xc1>; /* vcmp base address */ + vcmp-ch = ; + status = "disabled"; + }; + + vcmp1: vcmp@f04528 { + compatible = "ite,it51xxx-vcmp"; + interrupt-parent = <&intc>; + interrupts = ; + reg = <0xf04528 0x08 + 0xf04500 0xc1>; /* vcmp base address */ + vcmp-ch = ; + status = "disabled"; + }; + + vcmp2: vcmp@f0452c { + compatible = "ite,it51xxx-vcmp"; + interrupt-parent = <&intc>; + interrupts = ; + reg = <0xf0452c 0x08 + 0xf04500 0xc1>; /* vcmp base address */ + vcmp-ch = ; + status = "disabled"; + }; + gpiogcr: gpio-gcr@f01600 { compatible = "ite,it51xxx-gpiogcr"; reg = <0x00f01600 0x100>; diff --git a/include/zephyr/dt-bindings/comparator/it51xxx-vcmp.h b/include/zephyr/dt-bindings/comparator/it51xxx-vcmp.h new file mode 100644 index 00000000000..1296a8d5b31 --- /dev/null +++ b/include/zephyr/dt-bindings/comparator/it51xxx-vcmp.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 ITE Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_COMPARATOR_IT51XXX_VCMP_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_COMPARATOR_IT51XXX_VCMP_H_ + +/** + * @name it51xxx voltage comparator channel references + * @{ + */ + +#define VCMP_CHANNEL_0 0 +#define VCMP_CHANNEL_1 1 +#define VCMP_CHANNEL_2 2 +#define VCMP_CHANNEL_CNT 3 + +/** @} */ + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_COMPARATOR_IT51XXX_VCMP_H_ */ diff --git a/tests/boards/nrf/comp/boards/nrf54lm20dk_nrf54lm20a_cpuapp.conf b/tests/boards/nrf/comp/boards/nrf54lm20dk_nrf54lm20a_cpuapp.conf new file mode 100644 index 00000000000..3a7f6a03876 --- /dev/null +++ b/tests/boards/nrf/comp/boards/nrf54lm20dk_nrf54lm20a_cpuapp.conf @@ -0,0 +1,4 @@ +CONFIG_TEST_COMP_SE_PSEL_AIN_INDEX=1 +CONFIG_TEST_COMP_SE_EXTREFSEL_AIN_INDEX=4 +CONFIG_TEST_COMP_DIFF_PSEL_AIN_INDEX=6 +CONFIG_TEST_COMP_DIFF_EXTREFSEL_AIN_INDEX=5 diff --git a/tests/boards/nrf/comp/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/tests/boards/nrf/comp/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay new file mode 100644 index 00000000000..55d1937a4fe --- /dev/null +++ b/tests/boards/nrf/comp/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -0,0 +1,33 @@ +/* Two loopbacks are used + * Each loopback is between analog input and GPIO. + * first-gpios (P1.03) -> AIN6 (P1.04) + * second-gpios (P1.30, AIN2) -> AIN1 (P1.31) + * AIN4 (P1.06) tied to VDD + */ + +/ { + aliases { + test-comp = ∁ + }; + + zephyr,user { + first-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>; + second-gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>; + }; +}; + +&gpio1 { + status = "okay"; +}; + +&comp { + status = "okay"; + psel = "AIN4"; + refsel = "AREF"; + extrefsel= "AIN3"; + sp-mode = "NORMAL"; + th-up = <36>; + th-down = <30>; + isource = "DISABLED"; + enable-hyst; +}; diff --git a/tests/boards/nrf/comp/testcase.yaml b/tests/boards/nrf/comp/testcase.yaml index d5ac3d9c267..6d158d284ee 100644 --- a/tests/boards/nrf/comp/testcase.yaml +++ b/tests/boards/nrf/comp/testcase.yaml @@ -12,3 +12,4 @@ tests: platform_allow: - nrf54h20dk/nrf54h20/cpuapp - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp diff --git a/tests/boards/nrf/hwinfo/reset_cause/testcase.yaml b/tests/boards/nrf/hwinfo/reset_cause/testcase.yaml index 9fd5911c284..da37f9ef614 100644 --- a/tests/boards/nrf/hwinfo/reset_cause/testcase.yaml +++ b/tests/boards/nrf/hwinfo/reset_cause/testcase.yaml @@ -38,7 +38,6 @@ tests: - nrf54h20dk/nrf54h20/cpuapp - nrf54h20dk/nrf54h20/cpurad - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp integration_platforms: - nrf54h20dk/nrf54h20/cpuapp diff --git a/tests/boards/nrf/i2c/i2c_slave/boards/nrf54l20pdk_nrf54l20_cpuapp.conf b/tests/boards/nrf/i2c/i2c_slave/boards/nrf54l20pdk_nrf54l20_cpuapp.conf deleted file mode 100644 index b01af3b36a7..00000000000 --- a/tests/boards/nrf/i2c/i2c_slave/boards/nrf54l20pdk_nrf54l20_cpuapp.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_NRFX_TWIS22=y diff --git a/tests/boards/nrf/i2c/i2c_slave/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/boards/nrf/i2c/i2c_slave/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index 0003711755d..00000000000 --- a/tests/boards/nrf/i2c/i2c_slave/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,61 +0,0 @@ -/ { - aliases { - i2c-slave = &i2c22; - }; -}; - -&pinctrl { - i2c21_default_alt: i2c21_default_alt { - group1 { - psels = , - ; - }; - }; - - i2c21_sleep_alt: i2c21_sleep_alt { - group1 { - psels = , - ; - low-power-enable; - }; - }; - - i2c22_default_alt: i2c22_default_alt { - group1 { -/* Temporary workaround as it is currently not possible - * to configure pins for TWIS with pinctrl. - */ - psels = , - ; - bias-pull-up; - }; - }; - - i2c22_sleep_alt: i2c22_sleep_alt { - group1 { - psels = , - ; - low-power-enable; - }; - }; -}; - -dut_twim: &i2c21 { - compatible = "nordic,nrf-twim"; - status = "okay"; - pinctrl-0 = <&i2c21_default_alt>; - pinctrl-1 = <&i2c21_sleep_alt>; - pinctrl-names = "default", "sleep"; - clock-frequency = ; - sensor: sensor@54 { - reg = <0x54>; - }; -}; - -&i2c22 { - compatible = "nordic,nrf-twis"; - status = "okay"; - pinctrl-0 = <&i2c22_default_alt>; - pinctrl-1 = <&i2c22_sleep_alt>; - pinctrl-names = "default", "sleep"; -}; diff --git a/tests/boards/nrf/i2c/i2c_slave/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/tests/boards/nrf/i2c/i2c_slave/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay index 029c9830186..3767afee0e7 100644 --- a/tests/boards/nrf/i2c/i2c_slave/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay +++ b/tests/boards/nrf/i2c/i2c_slave/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -1,10 +1,14 @@ +/* + * Copyright 2025 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + /* * Two loopbacks are required: * P1.13 - P1.14 * P1.23 - P1.24 */ - / { aliases { i2c-slave = &i2c22; @@ -53,6 +57,7 @@ dut_twim: &i2c21 { pinctrl-0 = <&i2c21_default_alt>; pinctrl-1 = <&i2c21_sleep_alt>; pinctrl-names = "default", "sleep"; + sensor: sensor@54 { reg = <0x54>; }; diff --git a/tests/boards/nrf/i2c/i2c_slave/testcase.yaml b/tests/boards/nrf/i2c/i2c_slave/testcase.yaml index e125548a49a..02a2ee5f751 100644 --- a/tests/boards/nrf/i2c/i2c_slave/testcase.yaml +++ b/tests/boards/nrf/i2c/i2c_slave/testcase.yaml @@ -12,32 +12,32 @@ tests: platform_allow: - nrf52840dk/nrf52840 - nrf5340dk/nrf5340/cpuapp - - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - - nrf54lm20dk/nrf54lm20a/cpuapp - nrf54h20dk/nrf54h20/cpuapp - nrf54h20dk/nrf54h20/cpuppr + - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp integration_platforms: - nrf52840dk/nrf52840 - nrf5340dk/nrf5340/cpuapp - - nrf54l15dk/nrf54l15/cpuapp - nrf54h20dk/nrf54h20/cpuapp - nrf54h20dk/nrf54h20/cpuppr + - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp boards.nrf.i2c.i2c_slave.fast: platform_allow: - nrf52840dk/nrf52840 - nrf5340dk/nrf5340/cpuapp - - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - - nrf54lm20dk/nrf54lm20a/cpuapp - nrf54h20dk/nrf54h20/cpuapp - nrf54h20dk/nrf54h20/cpuppr + - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp integration_platforms: - nrf52840dk/nrf52840 - nrf5340dk/nrf5340/cpuapp - - nrf54l15dk/nrf54l15/cpuapp - nrf54h20dk/nrf54h20/cpuapp - nrf54h20dk/nrf54h20/cpuppr + - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp extra_args: - EXTRA_DTC_OVERLAY_FILE="boards/i2c_speed_fast.overlay" boards.nrf.i2c.i2c_slave.fast_plus: diff --git a/tests/boards/nrf/qdec/boards/nrf54l20pdk_nrf54l20_common.dtsi b/tests/boards/nrf/qdec/boards/nrf54l20pdk_nrf54l20_common.dtsi deleted file mode 100644 index f7810df33c0..00000000000 --- a/tests/boards/nrf/qdec/boards/nrf54l20pdk_nrf54l20_common.dtsi +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2025 Nordic Semiconductor ASA - * SPDX-License-Identifier: Apache-2.0 - */ - -/ { - aliases { - qdec0 = &qdec20; - qenca = &phase_a; - qencb = &phase_b; - }; - - encoder-emulate { - compatible = "gpio-leds"; - phase_a: phase_a { - gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>; - }; - phase_b: phase_b { - gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>; - }; - }; -}; - -&pinctrl { - qdec_pinctrl: qdec_pinctrl { - group1 { - psels = , - ; - }; - }; - - qdec_sleep_pinctrl: qdec_sleep_pinctrl { - group1 { - psels = , - ; - low-power-enable; - }; - }; -}; - -&gpio1 { - status = "okay"; -}; - -&qdec20 { - status = "okay"; - pinctrl-0 = <&qdec_pinctrl>; - pinctrl-1 = <&qdec_sleep_pinctrl>; - pinctrl-names = "default", "sleep"; - steps = <127>; - led-pre = <500>; - zephyr,pm-device-runtime-auto; -}; diff --git a/tests/boards/nrf/qdec/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/boards/nrf/qdec/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index a16bac11f17..00000000000 --- a/tests/boards/nrf/qdec/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,6 +0,0 @@ -/* - * Copyright 2024 Nordic Semiconductor ASA - * SPDX-License-Identifier: Apache-2.0 - */ - -#include "nrf54l20pdk_nrf54l20_common.dtsi" diff --git a/tests/boards/nrf/qdec/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay b/tests/boards/nrf/qdec/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay deleted file mode 100644 index 638d63e5c54..00000000000 --- a/tests/boards/nrf/qdec/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay +++ /dev/null @@ -1,6 +0,0 @@ -/* - * Copyright 2025 Nordic Semiconductor ASA - * SPDX-License-Identifier: Apache-2.0 - */ - -#include "nrf54l20pdk_nrf54l20_common.dtsi" diff --git a/tests/boards/nrf/qdec/testcase.yaml b/tests/boards/nrf/qdec/testcase.yaml index 312761b4459..2908a68a6d1 100644 --- a/tests/boards/nrf/qdec/testcase.yaml +++ b/tests/boards/nrf/qdec/testcase.yaml @@ -5,9 +5,7 @@ common: - nrf54h20dk/nrf54h20/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54l15dk/nrf54l15/cpuflpr - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - - nrf54l20pdk/nrf54l20/cpuflpr - nrf54lm20dk/nrf54lm20a/cpuflpr integration_platforms: - nrf52840dk/nrf52840 @@ -15,6 +13,8 @@ common: - nrf54h20dk/nrf54h20/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54l15dk/nrf54l15/cpuflpr + - nrf54lm20dk/nrf54lm20a/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuflpr harness: ztest harness_config: fixture: gpio_loopback diff --git a/tests/drivers/adc/adc_accuracy_test/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/tests/drivers/adc/adc_accuracy_test/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay new file mode 100644 index 00000000000..bc68f3c8d34 --- /dev/null +++ b/tests/drivers/adc/adc_accuracy_test/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause + */ + +/* + * Test requires loopback P1.06 to VDDIO + */ + +/ { + zephyr,user { + io-channels = <&adc 0>; + reference-mv = <1800>; + expected-accuracy = <64>; + }; +}; + +&adc { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + channel@0 { + reg = <0>; + zephyr,gain = "ADC_GAIN_1_2"; + zephyr,reference = "ADC_REF_INTERNAL"; + zephyr,acquisition-time = ; + zephyr,input-positive = ; /* P1.06 */ + zephyr,resolution = <14>; + }; +}; diff --git a/tests/drivers/adc/adc_accuracy_test/testcase.yaml b/tests/drivers/adc/adc_accuracy_test/testcase.yaml index 51a4cd53e2a..b3179bfd5ed 100644 --- a/tests/drivers/adc/adc_accuracy_test/testcase.yaml +++ b/tests/drivers/adc/adc_accuracy_test/testcase.yaml @@ -21,8 +21,9 @@ tests: - frdm_mcxc242 - frdm_mcxc444 - nrf52840dk/nrf52840 - - nrf54l15dk/nrf54l15/cpuapp - nrf54h20dk/nrf54h20/cpuapp + - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp - ek_ra8d1 - mck_ra8t1 @@ -44,3 +45,4 @@ tests: - xg29_rb4412a integration_platforms: - frdm_kl25z + - nrf54l15dk/nrf54l15/cpuapp diff --git a/tests/drivers/adc/adc_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/adc/adc_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index e1ca1190b33..00000000000 --- a/tests/drivers/adc/adc_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,44 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright (c) 2025 Nordic Semiconductor ASA - */ - -/ { - zephyr,user { - io-channels = <&adc 0>, <&adc 1> , <&adc 2>; - }; -}; - -&adc { - #address-cells = <1>; - #size-cells = <0>; - status = "okay"; - - channel@0 { - reg = <0>; - zephyr,gain = "ADC_GAIN_1"; - zephyr,reference = "ADC_REF_INTERNAL"; - zephyr,acquisition-time = ; - zephyr,input-positive = ; - zephyr,resolution = <10>; - }; - - channel@1 { - reg = <1>; - zephyr,gain = "ADC_GAIN_1_4"; - zephyr,reference = "ADC_REF_EXTERNAL0"; - zephyr,acquisition-time = ; - zephyr,input-positive = ; - zephyr,resolution = <12>; - }; - - channel@2 { - reg = <2>; - zephyr,gain = "ADC_GAIN_2_3"; - zephyr,reference = "ADC_REF_INTERNAL"; - zephyr,acquisition-time = ; - zephyr,input-positive = ; - zephyr,resolution = <10>; - }; -}; diff --git a/tests/drivers/adc/adc_error_cases/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/adc/adc_error_cases/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index c50279ce8f6..00000000000 --- a/tests/drivers/adc/adc_error_cases/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,15 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright (c) 2025 Nordic Semiconductor ASA - */ - -/ { - aliases { - adc = &adc; - }; -}; - -&adc { - status = "okay"; -}; diff --git a/tests/drivers/adc/adc_error_cases/testcase.yaml b/tests/drivers/adc/adc_error_cases/testcase.yaml index f902aa21af0..d9d389ab78a 100644 --- a/tests/drivers/adc/adc_error_cases/testcase.yaml +++ b/tests/drivers/adc/adc_error_cases/testcase.yaml @@ -9,7 +9,6 @@ tests: platform_allow: - nrf52840dk/nrf52840 - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - nrf54h20dk/nrf54h20/cpuapp - ophelia4ev/nrf54l15/cpuapp diff --git a/tests/drivers/audio/dmic_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/audio/dmic_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index 440ef9828ae..00000000000 --- a/tests/drivers/audio/dmic_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2025 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/ { - aliases { - dmic-dev = &pdm20; - }; -}; - -&pinctrl { - pdm20_default_alt: pdm20_default_alt { - group1 { - psels = , - ; - }; - }; -}; - -dmic_dev: &pdm20 { - status = "okay"; - pinctrl-0 = <&pdm20_default_alt>; - pinctrl-names = "default"; - clock-source = "PCLK32M"; -}; diff --git a/tests/drivers/clock_control/clock_control_api/boards/nrf54l09pdk_nrf54l09_cpuapp.conf b/tests/drivers/clock_control/clock_control_api/boards/nrf54l09pdk_nrf54l09_cpuapp.conf index 377287fb194..11d42321cbc 100644 --- a/tests/drivers/clock_control/clock_control_api/boards/nrf54l09pdk_nrf54l09_cpuapp.conf +++ b/tests/drivers/clock_control/clock_control_api/boards/nrf54l09pdk_nrf54l09_cpuapp.conf @@ -1 +1 @@ -CONFIG_TEST_NRF_HF_STARTUP_TIME_US=2000 +CONFIG_TEST_NRF_HF_STARTUP_TIME_US=1000 diff --git a/tests/drivers/clock_control/clock_control_api/boards/nrf54l20pdk_nrf54l20_cpuapp.conf b/tests/drivers/clock_control/clock_control_api/boards/nrf54l20pdk_nrf54l20_cpuapp.conf deleted file mode 100644 index 377287fb194..00000000000 --- a/tests/drivers/clock_control/clock_control_api/boards/nrf54l20pdk_nrf54l20_cpuapp.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_TEST_NRF_HF_STARTUP_TIME_US=2000 diff --git a/tests/drivers/clock_control/clock_control_api/testcase.yaml b/tests/drivers/clock_control/clock_control_api/testcase.yaml index 98f8920e162..4a192e5e3a7 100644 --- a/tests/drivers/clock_control/clock_control_api/testcase.yaml +++ b/tests/drivers/clock_control/clock_control_api/testcase.yaml @@ -23,7 +23,6 @@ tests: - nrf9160dk/nrf9160 - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp integration_platforms: @@ -35,7 +34,6 @@ tests: - nrf52840dk/nrf52840 - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp integration_platforms: diff --git a/tests/drivers/clock_control/nrf_clock_calibration/testcase.yaml b/tests/drivers/clock_control/nrf_clock_calibration/testcase.yaml index 3cdc785cbc7..4600202f0f1 100644 --- a/tests/drivers/clock_control/nrf_clock_calibration/testcase.yaml +++ b/tests/drivers/clock_control/nrf_clock_calibration/testcase.yaml @@ -1,5 +1,6 @@ tests: drivers.clock.nrf5_clock_calibration: + timeout: 30 tags: - drivers - clock_control @@ -9,7 +10,6 @@ tests: - nrf52840dk/nrf52840 - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp integration_platforms: diff --git a/tests/drivers/clock_control/nrf_lf_clock_start/testcase.yaml b/tests/drivers/clock_control/nrf_lf_clock_start/testcase.yaml index 94cc046d696..2a4bba57a71 100644 --- a/tests/drivers/clock_control/nrf_lf_clock_start/testcase.yaml +++ b/tests/drivers/clock_control/nrf_lf_clock_start/testcase.yaml @@ -4,6 +4,7 @@ common: - clock_control integration_platforms: - nrf51dk/nrf51822 + timeout: 30 tests: drivers.clock.nrf_lf_clock_start_xtal_stable: platform_allow: @@ -15,7 +16,6 @@ tests: - nrf5340dk/nrf5340/cpunet - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp extra_configs: @@ -34,7 +34,6 @@ tests: - nrf5340dk/nrf5340/cpunet - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp extra_configs: @@ -68,7 +67,6 @@ tests: - nrf5340dk/nrf5340/cpunet - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp integration_platforms: @@ -86,7 +84,6 @@ tests: - nrf5340dk/nrf5340/cpunet - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp integration_platforms: @@ -104,7 +101,6 @@ tests: - nrf5340dk/nrf5340/cpunet - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp integration_platforms: @@ -122,7 +118,6 @@ tests: - nrf5340dk/nrf5340/cpunet - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp integration_platforms: @@ -140,7 +135,6 @@ tests: - nrf5340dk/nrf5340/cpunet - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp integration_platforms: @@ -158,7 +152,6 @@ tests: - nrf5340dk/nrf5340/cpunet - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp integration_platforms: diff --git a/tests/drivers/clock_control/onoff/testcase.yaml b/tests/drivers/clock_control/onoff/testcase.yaml index 51c263dad29..c26eeca5e3d 100644 --- a/tests/drivers/clock_control/onoff/testcase.yaml +++ b/tests/drivers/clock_control/onoff/testcase.yaml @@ -9,9 +9,9 @@ tests: - nrf52840dk/nrf52840 - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - nrf9160dk/nrf9160 - ophelia4ev/nrf54l15/cpuapp integration_platforms: - nrf51dk/nrf51822 + timeout: 30 diff --git a/tests/drivers/comparator/gpio_loopback/boards/ek_ra8p1_r7ka8p1kflcac_cm85.overlay b/tests/drivers/comparator/gpio_loopback/boards/ek_ra8p1_r7ka8p1kflcac_cm85.overlay new file mode 100644 index 00000000000..cccbaf04e93 --- /dev/null +++ b/tests/drivers/comparator/gpio_loopback/boards/ek_ra8p1_r7ka8p1kflcac_cm85.overlay @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +/ { + aliases { + test-comp = &acmphs0; + }; + + zephyr,user { + test-gpios = <&ioport6 0 GPIO_ACTIVE_HIGH>; + }; +}; + +&pinctrl { + acmphs0_ivcmp0: acmphs0_ivcmp0 { + group1 { + /* CH0 IVCMP0 */ + psels = ; + renesas,analog-enable; + }; + }; +}; + +&acmphs_global { + status = "okay"; + + acmphs0 { + pinctrl-0 = <&acmphs0_ivcmp0>; + pinctrl-names = "default"; + interrupts = <90 12>; + interrupt-names = "hs"; + reference-input-source = "ivref2"; + compare-input-source = "ivcmp0"; + noise-filter = <1>; + status = "okay"; + }; +}; diff --git a/tests/drivers/comparator/gpio_loopback/boards/it515xx_evb.conf b/tests/drivers/comparator/gpio_loopback/boards/it515xx_evb.conf new file mode 100644 index 00000000000..a51e33c8c63 --- /dev/null +++ b/tests/drivers/comparator/gpio_loopback/boards/it515xx_evb.conf @@ -0,0 +1,4 @@ +# Copyright (c) 2025 ITE Technology Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_ADC=y diff --git a/tests/drivers/comparator/gpio_loopback/boards/it515xx_evb.overlay b/tests/drivers/comparator/gpio_loopback/boards/it515xx_evb.overlay new file mode 100644 index 00000000000..6c119b30017 --- /dev/null +++ b/tests/drivers/comparator/gpio_loopback/boards/it515xx_evb.overlay @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2025 ITE Technology Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +/ { + aliases { + test-comp = &vcmp1; + }; + + zephyr,user { + test-gpios = <&gpioa 1 GPIO_ACTIVE_HIGH>; + }; +}; + +&vcmp1 { + status = "okay"; + threshold-mv = <1500>; + scan-period = <0x4>; + io-channels = <&adc0 3>; +}; diff --git a/tests/drivers/comparator/gpio_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/tests/drivers/comparator/gpio_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay new file mode 100644 index 00000000000..831e235d4c7 --- /dev/null +++ b/tests/drivers/comparator/gpio_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +/* + * P1.30 looped back to P1.31 (AIN1) + */ + +/ { + aliases { + test-comp = ∁ + }; + + zephyr,user { + test-gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>; + }; +}; + +&gpio1 { + status = "okay"; +}; diff --git a/tests/drivers/comparator/gpio_loopback/snippets/nrf_comp/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/tests/drivers/comparator/gpio_loopback/snippets/nrf_comp/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay new file mode 100644 index 00000000000..2709df53195 --- /dev/null +++ b/tests/drivers/comparator/gpio_loopback/snippets/nrf_comp/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&comp { + main-mode = "SE"; + psel = "AIN1"; /* P1.31 */ + refsel = "INT_1V2"; + sp-mode = "HIGH"; + th-up = <63>; + th-down = <59>; + isource = "DISABLED"; + status = "okay"; +}; diff --git a/tests/drivers/comparator/gpio_loopback/snippets/nrf_comp/snippet.yml b/tests/drivers/comparator/gpio_loopback/snippets/nrf_comp/snippet.yml index 79fffefe7f4..9d876bfded0 100644 --- a/tests/drivers/comparator/gpio_loopback/snippets/nrf_comp/snippet.yml +++ b/tests/drivers/comparator/gpio_loopback/snippets/nrf_comp/snippet.yml @@ -4,15 +4,18 @@ name: gpio_loopback_nrf_comp boards: + nrf5340dk/nrf5340/cpuapp: + append: + EXTRA_DTC_OVERLAY_FILE: boards/nrf5340dk_nrf5340_cpuapp.overlay nrf54h20dk/nrf54h20/cpuapp: append: EXTRA_DTC_OVERLAY_FILE: boards/nrf54h20dk_nrf54h20_cpuapp.overlay nrf54l15dk/nrf54l15/cpuapp: append: EXTRA_DTC_OVERLAY_FILE: boards/nrf54l15dk_nrf54l15_cpuapp.overlay + nrf54lm20dk/nrf54lm20a/cpuapp: + append: + EXTRA_DTC_OVERLAY_FILE: boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay ophelia4ev/nrf54l15/cpuapp: append: EXTRA_DTC_OVERLAY_FILE: boards/nrf54l15dk_nrf54l15_cpuapp.overlay - nrf5340dk/nrf5340/cpuapp: - append: - EXTRA_DTC_OVERLAY_FILE: boards/nrf5340dk_nrf5340_cpuapp.overlay diff --git a/tests/drivers/comparator/gpio_loopback/snippets/nrf_lpcomp/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/tests/drivers/comparator/gpio_loopback/snippets/nrf_lpcomp/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay new file mode 100644 index 00000000000..0f51a9951a1 --- /dev/null +++ b/tests/drivers/comparator/gpio_loopback/snippets/nrf_lpcomp/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&comp { + compatible = "nordic,nrf-lpcomp"; + psel = "AIN1"; /* P1.31 */ + refsel = "VDD_4_8"; + status = "okay"; +}; diff --git a/tests/drivers/comparator/gpio_loopback/snippets/nrf_lpcomp/snippet.yml b/tests/drivers/comparator/gpio_loopback/snippets/nrf_lpcomp/snippet.yml index 82a32cb517e..c2a2005af4d 100644 --- a/tests/drivers/comparator/gpio_loopback/snippets/nrf_lpcomp/snippet.yml +++ b/tests/drivers/comparator/gpio_loopback/snippets/nrf_lpcomp/snippet.yml @@ -4,15 +4,18 @@ name: gpio_loopback_nrf_lpcomp boards: + nrf5340dk/nrf5340/cpuapp: + append: + EXTRA_DTC_OVERLAY_FILE: boards/nrf5340dk_nrf5340_cpuapp.overlay nrf54h20dk/nrf54h20/cpuapp: append: EXTRA_DTC_OVERLAY_FILE: boards/nrf54h20dk_nrf54h20_cpuapp.overlay nrf54l15dk/nrf54l15/cpuapp: append: EXTRA_DTC_OVERLAY_FILE: boards/nrf54l15dk_nrf54l15_cpuapp.overlay + nrf54lm20dk/nrf54lm20a/cpuapp: + append: + EXTRA_DTC_OVERLAY_FILE: boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay ophelia4ev/nrf54l15/cpuapp: append: EXTRA_DTC_OVERLAY_FILE: boards/nrf54l15dk_nrf54l15_cpuapp.overlay - nrf5340dk/nrf5340/cpuapp: - append: - EXTRA_DTC_OVERLAY_FILE: boards/nrf5340dk_nrf5340_cpuapp.overlay diff --git a/tests/drivers/comparator/gpio_loopback/testcase.yaml b/tests/drivers/comparator/gpio_loopback/testcase.yaml index cfeeabe3a69..bf0e7d127a0 100644 --- a/tests/drivers/comparator/gpio_loopback/testcase.yaml +++ b/tests/drivers/comparator/gpio_loopback/testcase.yaml @@ -20,15 +20,17 @@ tests: extra_args: - SNIPPET="gpio_loopback_nrf_comp" platform_allow: + - nrf5340dk/nrf5340/cpuapp - nrf54h20dk/nrf54h20/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf5340dk/nrf5340/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp drivers.comparator.gpio_loopback.nrf_lpcomp: extra_args: - SNIPPET="gpio_loopback_nrf_lpcomp" platform_allow: + - nrf5340dk/nrf5340/cpuapp - nrf54h20dk/nrf54h20/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf5340dk/nrf5340/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp diff --git a/tests/drivers/counter/counter_basic_api/boards/nrf54l20pdk_nrf54l20_common.dtsi b/tests/drivers/counter/counter_basic_api/boards/nrf54l20pdk_nrf54l20_common.dtsi deleted file mode 100644 index 72941675287..00000000000 --- a/tests/drivers/counter/counter_basic_api/boards/nrf54l20pdk_nrf54l20_common.dtsi +++ /dev/null @@ -1,36 +0,0 @@ -/* SPDX-License-Identifier: Apache-2.0 */ - -&timer00 { - prescaler = <6>; - status = "okay"; -}; - -&timer10 { - prescaler = <4>; - status = "okay"; -}; - -&timer20 { - prescaler = <4>; - status = "okay"; -}; - -&timer21 { - prescaler = <4>; - status = "okay"; -}; - -&timer22 { - prescaler = <4>; - status = "okay"; -}; - -&timer23 { - prescaler = <4>; - status = "okay"; -}; - -&timer24 { - prescaler = <4>; - status = "okay"; -}; diff --git a/tests/drivers/counter/counter_basic_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/counter/counter_basic_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index 42b2852a09f..00000000000 --- a/tests/drivers/counter/counter_basic_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,3 +0,0 @@ -/* SPDX-License-Identifier: Apache-2.0 */ - -#include "nrf54l20pdk_nrf54l20_common.dtsi" diff --git a/tests/drivers/counter/counter_basic_api/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay b/tests/drivers/counter/counter_basic_api/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay deleted file mode 100644 index 42b2852a09f..00000000000 --- a/tests/drivers/counter/counter_basic_api/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay +++ /dev/null @@ -1,3 +0,0 @@ -/* SPDX-License-Identifier: Apache-2.0 */ - -#include "nrf54l20pdk_nrf54l20_common.dtsi" diff --git a/tests/drivers/flash/common/boards/ek_ra8d1.overlay b/tests/drivers/flash/common/boards/ek_ra8d1.overlay index 8e42c66387c..ee45617b009 100644 --- a/tests/drivers/flash/common/boards/ek_ra8d1.overlay +++ b/tests/drivers/flash/common/boards/ek_ra8d1.overlay @@ -18,3 +18,7 @@ }; }; }; + +&s28hl512t { + status = "disabled"; +}; diff --git a/tests/drivers/flash/common/boards/ek_ra8d1_ospi_b_nor.conf b/tests/drivers/flash/common/boards/ek_ra8d1_ospi_b_nor.conf new file mode 100644 index 00000000000..349d703d783 --- /dev/null +++ b/tests/drivers/flash/common/boards/ek_ra8d1_ospi_b_nor.conf @@ -0,0 +1,4 @@ +# Copyright (c) 2025 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_TEST_DRIVER_FLASH_SIZE=67108864 diff --git a/tests/drivers/flash/common/boards/ek_ra8d1_ospi_b_nor.overlay b/tests/drivers/flash/common/boards/ek_ra8d1_ospi_b_nor.overlay new file mode 100644 index 00000000000..cb05c656afa --- /dev/null +++ b/tests/drivers/flash/common/boards/ek_ra8d1_ospi_b_nor.overlay @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +/delete-node/ &storage_partition; + +&s28hl512t { + status = "okay"; +}; diff --git a/tests/drivers/flash/common/boards/ek_ra8m1.overlay b/tests/drivers/flash/common/boards/ek_ra8m1.overlay index 8e42c66387c..ee45617b009 100644 --- a/tests/drivers/flash/common/boards/ek_ra8m1.overlay +++ b/tests/drivers/flash/common/boards/ek_ra8m1.overlay @@ -18,3 +18,7 @@ }; }; }; + +&s28hl512t { + status = "disabled"; +}; diff --git a/tests/drivers/flash/common/boards/ek_ra8m1_ospi_b_nor.conf b/tests/drivers/flash/common/boards/ek_ra8m1_ospi_b_nor.conf new file mode 100644 index 00000000000..349d703d783 --- /dev/null +++ b/tests/drivers/flash/common/boards/ek_ra8m1_ospi_b_nor.conf @@ -0,0 +1,4 @@ +# Copyright (c) 2025 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_TEST_DRIVER_FLASH_SIZE=67108864 diff --git a/tests/drivers/flash/common/boards/ek_ra8m1_ospi_b_nor.overlay b/tests/drivers/flash/common/boards/ek_ra8m1_ospi_b_nor.overlay new file mode 100644 index 00000000000..cb05c656afa --- /dev/null +++ b/tests/drivers/flash/common/boards/ek_ra8m1_ospi_b_nor.overlay @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +/delete-node/ &storage_partition; + +&s28hl512t { + status = "okay"; +}; diff --git a/tests/drivers/flash/common/boards/nrf54l20pdk_nrf54l20_cpuapp.conf b/tests/drivers/flash/common/boards/nrf54l20pdk_nrf54l20_cpuapp.conf deleted file mode 100644 index 821a5e77e5b..00000000000 --- a/tests/drivers/flash/common/boards/nrf54l20pdk_nrf54l20_cpuapp.conf +++ /dev/null @@ -1,4 +0,0 @@ -CONFIG_FCB=y -CONFIG_FLASH_MAP=y -CONFIG_SETTINGS=y -CONFIG_SETTINGS_FCB=y diff --git a/tests/drivers/watchdog/wdt_variables/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/flash/common/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay similarity index 91% rename from tests/drivers/watchdog/wdt_variables/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay rename to tests/drivers/flash/common/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay index dc1ea1a9ddc..8a5afda2ab0 100644 --- a/tests/drivers/watchdog/wdt_variables/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ b/tests/drivers/flash/common/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -4,6 +4,6 @@ * SPDX-License-Identifier: Apache-2.0 */ -&wdt31 { +&mx25r64 { status = "okay"; }; diff --git a/tests/drivers/flash/common/src/main.c b/tests/drivers/flash/common/src/main.c index fa2fd053fd8..ab0e63bb609 100644 --- a/tests/drivers/flash/common/src/main.c +++ b/tests/drivers/flash/common/src/main.c @@ -12,6 +12,8 @@ #if defined(CONFIG_NORDIC_QSPI_NOR) #define TEST_AREA_DEV_NODE DT_INST(0, nordic_qspi_nor) +#elif defined(CONFIG_FLASH_RENESAS_RA_OSPI_B) +#define TEST_AREA_DEV_NODE DT_INST(0, renesas_ra_ospi_b_nor) #elif defined(CONFIG_SPI_NOR) #define TEST_AREA_DEV_NODE DT_INST(0, jedec_spi_nor) #elif defined(CONFIG_FLASH_MSPI_NOR) @@ -32,12 +34,18 @@ #elif defined(TEST_AREA_DEV_NODE) #define TEST_AREA_DEVICE DEVICE_DT_GET(TEST_AREA_DEV_NODE) +#if defined CONFIG_FLASH_RENESAS_RA_OSPI_B +#define TEST_AREA_OFFSET 0x40000 +#else #define TEST_AREA_OFFSET 0xff000 +#endif #if DT_NODE_HAS_PROP(TEST_AREA_DEV_NODE, size_in_bytes) #define TEST_AREA_MAX DT_PROP(TEST_AREA_DEV_NODE, size_in_bytes) -#else +#elif DT_NODE_HAS_PROP(TEST_AREA_DEV_NODE, size) #define TEST_AREA_MAX (DT_PROP(TEST_AREA_DEV_NODE, size) / 8) +#else +#define TEST_AREA_MAX DT_REG_SIZE(TEST_AREA_DEV_NODE) #endif #else @@ -79,7 +87,8 @@ static void flash_driver_before(void *arg) TC_PRINT("No devices with erase requirement present\n"); erase_value = 0x55; page_info.start_offset = TEST_AREA_OFFSET; - page_info.size = TEST_AREA_MAX - TEST_AREA_OFFSET; + /* test_flash_copy uses 2 pages, so split the test area */ + page_info.size = (TEST_AREA_MAX - TEST_AREA_OFFSET) / 2; } @@ -103,6 +112,10 @@ static void flash_driver_before(void *arg) zassert_true((TEST_AREA_OFFSET + EXPECTED_SIZE) <= TEST_AREA_MAX, "Test area exceeds flash size"); + /* Check if test region is suitable for test_flash_copy */ + zassert_true((TEST_AREA_OFFSET + 2 * page_info.size) <= TEST_AREA_MAX, + "test_flash_copy needs 2 flash pages"); + /* Check if flash is cleared */ if (IS_ENABLED(CONFIG_FLASH_HAS_EXPLICIT_ERASE) && ebw_required) { bool is_buf_clear = true; diff --git a/tests/drivers/flash/common/testcase.yaml b/tests/drivers/flash/common/testcase.yaml index a46ecb50e11..0433d024ff1 100644 --- a/tests/drivers/flash/common/testcase.yaml +++ b/tests/drivers/flash/common/testcase.yaml @@ -37,6 +37,8 @@ tests: filter: ((CONFIG_FLASH_HAS_DRIVER_ENABLED and not CONFIG_TRUSTED_EXECUTION_NONSECURE) and (dt_label_with_parent_compat_enabled("storage_partition", "fixed-partitions") or dt_label_with_parent_compat_enabled("storage_partition", "nordic,owned-partitions"))) + platform_exclude: + - nrf54lm20dk/nrf54lm20a/cpuapp integration_platforms: - qemu_x86 - mimxrt1060_evk/mimxrt1062/qspi @@ -46,10 +48,13 @@ tests: - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l10/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - - nrf54lm20dk/nrf54lm20a/cpuapp - nrf54h20dk/nrf54h20/cpuapp - ophelia4ev/nrf54l15/cpuapp + drivers.flash.common.nrf54lm20a: + platform_allow: + - nrf54lm20dk/nrf54lm20a/cpuapp + harness_config: + fixture: external_flash drivers.flash.common.tfm_ns: build_only: true filter: (CONFIG_FLASH_HAS_DRIVER_ENABLED and CONFIG_TRUSTED_EXECUTION_NONSECURE @@ -139,3 +144,10 @@ tests: filter: dt_compat_enabled("soc-nv-flash") and dt_compat_enabled("jedec,spi-nor") extra_args: - CONFIG_SPI_NOR=n + drivers.flash.common.ra_ospi_b_nor: + platform_allow: + - ek_ra8m1 + - ek_ra8d1 + extra_args: + - DTC_OVERLAY_FILE="./boards/${BOARD}_ospi_b_nor.overlay" + - CONF_FILE="./prj.conf ./boards/${BOARD}_ospi_b_nor.conf" diff --git a/tests/drivers/flash/negative_tests/testcase.yaml b/tests/drivers/flash/negative_tests/testcase.yaml index 3321a0273ba..7a55212aa3f 100644 --- a/tests/drivers/flash/negative_tests/testcase.yaml +++ b/tests/drivers/flash/negative_tests/testcase.yaml @@ -5,9 +5,8 @@ common: tests: drivers.flash.negative_tests: platform_allow: + - nrf54h20dk/nrf54h20/cpuapp - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - - nrf54h20dk/nrf54h20/cpuapp - ophelia4ev/nrf54l15/cpuapp diff --git a/tests/drivers/gpio/gpio_basic_api/boards/nrf54l20pdk_nrf54l20_common.overlay b/tests/drivers/gpio/gpio_basic_api/boards/nrf54l20pdk_nrf54l20_common.overlay deleted file mode 100644 index 8eb1b3c9f9f..00000000000 --- a/tests/drivers/gpio/gpio_basic_api/boards/nrf54l20pdk_nrf54l20_common.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2024 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/ { - resources { - compatible = "test-gpio-basic-api"; - out-gpios = <&gpio1 10 0>; - in-gpios = <&gpio1 11 0>; - }; -}; - -&gpiote20 { - status = "okay"; -}; - -&gpio1 { - status = "okay"; -}; diff --git a/tests/drivers/gpio/gpio_basic_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/gpio/gpio_basic_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index 3ed56c4a6c8..00000000000 --- a/tests/drivers/gpio/gpio_basic_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (c) 2024 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include "nrf54l20pdk_nrf54l20_common.overlay" diff --git a/tests/drivers/gpio/gpio_basic_api/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay b/tests/drivers/gpio/gpio_basic_api/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay deleted file mode 100644 index 91c033f0f94..00000000000 --- a/tests/drivers/gpio/gpio_basic_api/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (c) 2025 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include "nrf54l20pdk_nrf54l20_common.overlay" diff --git a/tests/drivers/i2c/i2c_target_api/boards/nrf54l20pdk_nrf54l20_cpuapp.conf b/tests/drivers/i2c/i2c_target_api/boards/nrf54l20pdk_nrf54l20_cpuapp.conf deleted file mode 100644 index 2510d6673c1..00000000000 --- a/tests/drivers/i2c/i2c_target_api/boards/nrf54l20pdk_nrf54l20_cpuapp.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_I2C_NRFX_TWIS_BUF_SIZE=256 diff --git a/tests/drivers/i2c/i2c_target_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/i2c/i2c_target_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index f04022cf8f3..00000000000 --- a/tests/drivers/i2c/i2c_target_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,68 +0,0 @@ -/* - * SDA = P1.8 and P1.9 - * SCL = P1.14 and P1.15 - */ - -&pinctrl { - i2c21_default: i2c21_default { - group1 { - psels = , - ; - bias-pull-up; - }; - }; - - i2c21_sleep: i2c21_sleep { - group1 { - psels = , - ; - low-power-enable; - }; - }; - - i2c22_default: i2c22_default { - group1 { - psels = , - ; - bias-pull-up; - }; - }; - - i2c22_sleep: i2c22_sleep { - group1 { - psels = , - ; - low-power-enable; - }; - }; -}; - -&i2c21 { - pinctrl-0 = <&i2c21_default>; - pinctrl-1 = <&i2c21_sleep>; - pinctrl-names = "default", "sleep"; - zephyr,concat-buf-size = <256>; - status = "okay"; - - eeprom1: eeprom@56 { - compatible = "zephyr,i2c-target-eeprom"; - reg = <0x56>; - address-width = <8>; - size = <256>; - }; -}; - -&i2c22 { - compatible = "nordic,nrf-twis"; - pinctrl-0 = <&i2c22_default>; - pinctrl-1 = <&i2c22_sleep>; - pinctrl-names = "default", "sleep"; - status = "okay"; - - eeprom0: eeprom@54 { - compatible = "zephyr,i2c-target-eeprom"; - reg = <0x54>; - address-width = <8>; - size = <256>; - }; -}; diff --git a/tests/drivers/i2c/i2c_target_api/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/tests/drivers/i2c/i2c_target_api/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay index 3459599351b..f6d76c7253c 100644 --- a/tests/drivers/i2c/i2c_target_api/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay +++ b/tests/drivers/i2c/i2c_target_api/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + /* * SDA = P1.13 and P1.14 * SCL = P1.23 and P1.24 diff --git a/tests/drivers/i2c/i2c_target_api/testcase.yaml b/tests/drivers/i2c/i2c_target_api/testcase.yaml index 7f888f95e12..8c95390a72c 100644 --- a/tests/drivers/i2c/i2c_target_api/testcase.yaml +++ b/tests/drivers/i2c/i2c_target_api/testcase.yaml @@ -64,8 +64,8 @@ tests: - nrf5340dk/nrf5340/cpuapp - nrf54h20dk/nrf54h20/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp integration_platforms: - max32690evkit/max32690/m4 + - nrf54l15dk/nrf54l15/cpuapp diff --git a/tests/drivers/i2s/i2s_additional/boards/nrf54lm20pdk_nrf54lm20a_cpuapp.overlay b/tests/drivers/i2s/i2s_additional/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay similarity index 100% rename from tests/drivers/i2s/i2s_additional/boards/nrf54lm20pdk_nrf54lm20a_cpuapp.overlay rename to tests/drivers/i2s/i2s_additional/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay diff --git a/tests/drivers/i2s/i2s_additional/testcase.yaml b/tests/drivers/i2s/i2s_additional/testcase.yaml index c45a5482b7f..9dcb82d61f3 100644 --- a/tests/drivers/i2s/i2s_additional/testcase.yaml +++ b/tests/drivers/i2s/i2s_additional/testcase.yaml @@ -16,10 +16,12 @@ tests: - nrf52840dk/nrf52840 - nrf5340dk/nrf5340/cpuapp - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp integration_platforms: - nrf52840dk/nrf52840 - nrf5340dk/nrf5340/cpuapp - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp drivers.i2s.additional.gpio_loopback.54h: harness_config: diff --git a/tests/drivers/i2s/i2s_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/i2s/i2s_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index 09a2cb0459c..00000000000 --- a/tests/drivers/i2s/i2s_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2024 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/* i2s-node0 is the transmitter/receiver */ - -/ { - aliases { - i2s-node0 = &tdm; - }; -}; - -&pinctrl { - tdm_default_alt: tdm_default_alt { - group1 { - psels = , - , - , - ; - }; - }; -}; - -&tdm { - status = "okay"; - pinctrl-0 = <&tdm_default_alt>; - pinctrl-names = "default"; -}; diff --git a/tests/drivers/i2s/i2s_speed/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/i2s/i2s_speed/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index 09a2cb0459c..00000000000 --- a/tests/drivers/i2s/i2s_speed/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2024 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/* i2s-node0 is the transmitter/receiver */ - -/ { - aliases { - i2s-node0 = &tdm; - }; -}; - -&pinctrl { - tdm_default_alt: tdm_default_alt { - group1 { - psels = , - , - , - ; - }; - }; -}; - -&tdm { - status = "okay"; - pinctrl-0 = <&tdm_default_alt>; - pinctrl-names = "default"; -}; diff --git a/tests/drivers/pwm/pwm_gpio_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.conf b/tests/drivers/pwm/pwm_gpio_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.conf new file mode 100644 index 00000000000..795414a504a --- /dev/null +++ b/tests/drivers/pwm/pwm_gpio_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.conf @@ -0,0 +1 @@ +CONFIG_SKIP_EDGE_NUM=4 diff --git a/tests/drivers/pwm/pwm_gpio_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/tests/drivers/pwm/pwm_gpio_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay new file mode 100644 index 00000000000..89ff80dcb67 --- /dev/null +++ b/tests/drivers/pwm/pwm_gpio_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + * + * Test requires jumper between: + * - PWM20 OUT[0] at P1.29 <-> GPIO input at P1.00 + */ + +/ { + zephyr,user { + pwms = <&pwm20 0 160000 PWM_POLARITY_NORMAL>; + gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>; + }; +}; + +&pinctrl { + pwm20_alt: pwm20_alt { + group1 { + psels = ; + }; + }; + + pwm20_alt_sleep: pwm20_alt_sleep { + group1 { + psels = ; + low-power-enable; + }; + }; +}; + +&pwm20 { + status = "okay"; + pinctrl-0 = <&pwm20_alt>; + pinctrl-1 = <&pwm20_alt_sleep>; + pinctrl-names = "default", "sleep"; +}; diff --git a/tests/drivers/pwm/pwm_gpio_loopback/testcase.yaml b/tests/drivers/pwm/pwm_gpio_loopback/testcase.yaml index 7173c8c2720..99e22b54374 100644 --- a/tests/drivers/pwm/pwm_gpio_loopback/testcase.yaml +++ b/tests/drivers/pwm/pwm_gpio_loopback/testcase.yaml @@ -20,4 +20,5 @@ tests: platform_allow: - nrf54h20dk/nrf54h20/cpuapp - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp diff --git a/tests/drivers/retained_mem/api/boards/nrf54l20pdk_nrf54l20_cpuapp.conf b/tests/drivers/retained_mem/api/boards/nrf54l20pdk_nrf54l20_cpuapp.conf deleted file mode 100644 index c15ba3ed96d..00000000000 --- a/tests/drivers/retained_mem/api/boards/nrf54l20pdk_nrf54l20_cpuapp.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_POWEROFF=y diff --git a/tests/drivers/retained_mem/api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/retained_mem/api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index dc81069eca5..00000000000 --- a/tests/drivers/retained_mem/api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,25 +0,0 @@ -/ { - cpuapp_sram@2007ec00 { - compatible = "zephyr,memory-region", "mmio-sram"; - reg = <0x2007ec00 DT_SIZE_K(4)>; - zephyr,memory-region = "RetainedMem"; - status = "okay"; - - retainedmem0: retainedmem { - compatible = "zephyr,retained-ram"; - status = "okay"; - }; - }; - - aliases { - retainedmemtestdevice = &retainedmem0; - }; -}; - -&cpuapp_sram { - /* Shrink SRAM size to avoid overlap with retained memory region: - * 511 - 4 = 507KB = 0x7ec00 - */ - reg = <0x20000000 DT_SIZE_K(507)>; - ranges = <0x0 0x20000000 0x7ec00>; -}; diff --git a/tests/drivers/retained_mem/api/testcase.yaml b/tests/drivers/retained_mem/api/testcase.yaml index ddcc005a16a..88bd6ae16ff 100644 --- a/tests/drivers/retained_mem/api/testcase.yaml +++ b/tests/drivers/retained_mem/api/testcase.yaml @@ -14,7 +14,6 @@ tests: - nrf54l15dk/nrf54l05/cpuapp - nrf54l15dk/nrf54l10/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp integration_platforms: diff --git a/tests/drivers/sensor/temp_sensor/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/sensor/temp_sensor/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index b1f2a2b9ec5..00000000000 --- a/tests/drivers/sensor/temp_sensor/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) 2025 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -temp_sensor: &temp { - status = "okay"; -}; diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra2a1.conf b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra2a1.conf new file mode 100644 index 00000000000..d241d5b0956 --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra2a1.conf @@ -0,0 +1,6 @@ +# Copyright (c) 2025 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SPI_INTERRUPT=y +CONFIG_SPI_RA_DTC=y +CONFIG_TESTED_SPI_MODE=1 diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra2a1.overlay b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra2a1.overlay new file mode 100644 index 00000000000..d9660d950ac --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra2a1.overlay @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + spi0_default_alt: spi0_default_alt { + group1 { + /* MISO MOSI RSPCK */ + psels = , + , + ; + }; + }; + + spi1_default_alt: spi1_default_alt { + group1 { + /* MISO MOSI RSPCK */ + psels = , + , + ; + }; + }; +}; + +&spi0 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi0_default_alt>; + pinctrl-names = "default"; + cs-gpios = <&ioport1 12 GPIO_ACTIVE_LOW>; + interrupts = <24 1>, <25 1>, <26 1>, <27 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + + dut_spi_dt: test-spi-dev@0 { + compatible = "vnd,spi-device"; + reg = <0>; + spi-max-frequency = <1000000>; + }; +}; + +dut_spis: &spi1 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi1_default_alt>; + pinctrl-names = "default"; + cs-gpios = <&ioport2 6 GPIO_ACTIVE_LOW>; +}; diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra4m1.conf b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra4m1.conf new file mode 100644 index 00000000000..d241d5b0956 --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra4m1.conf @@ -0,0 +1,6 @@ +# Copyright (c) 2025 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SPI_INTERRUPT=y +CONFIG_SPI_RA_DTC=y +CONFIG_TESTED_SPI_MODE=1 diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra4m1.overlay b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra4m1.overlay new file mode 100644 index 00000000000..8efced0263c --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra4m1.overlay @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + spi0_default_alt: spi0_default_alt { + group1 { + /* MISO MOSI RSPCK */ + psels = , + , + ; + }; + }; + + spi1_default_alt: spi1_default_alt { + group1 { + /* MISO MOSI RSPCK SSL */ + psels = , + , + , + ; + }; + }; +}; + +&spi0 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi0_default_alt>; + pinctrl-names = "default"; + cs-gpios = <&ioport4 13 GPIO_ACTIVE_LOW>; + interrupts = <23 1>, <24 1>, <25 1>, <26 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + + dut_spi_dt: test-spi-dev@0 { + compatible = "vnd,spi-device"; + reg = <0>; + spi-max-frequency = <1000000>; + }; +}; + +dut_spis: &spi1 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi1_default_alt>; + pinctrl-names = "default"; +}; diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6e2.conf b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6e2.conf new file mode 100644 index 00000000000..d241d5b0956 --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6e2.conf @@ -0,0 +1,6 @@ +# Copyright (c) 2025 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SPI_INTERRUPT=y +CONFIG_SPI_RA_DTC=y +CONFIG_TESTED_SPI_MODE=1 diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6e2.overlay b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6e2.overlay new file mode 100644 index 00000000000..e58fa671a9a --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6e2.overlay @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + spi0_default_alt: spi0_default_alt { + group1 { + /* MISO MOSI RSPCK */ + psels = , + , + ; + }; + }; + + spi1_default_alt: spi1_default_alt { + group1 { + /* MISO MOSI RSPCK SSL */ + psels = , + , + , + ; + }; + }; +}; + +&ioport1 { + status = "okay"; +}; + +&spi0 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi0_default_alt>; + pinctrl-names = "default"; + cs-gpios = <&ioport3 1 GPIO_ACTIVE_LOW>; + + dut_spi_dt: test-spi-dev@0 { + compatible = "vnd,spi-device"; + reg = <0>; + spi-max-frequency = <1000000>; + }; +}; + +dut_spis: &spi1 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi1_default_alt>; + pinctrl-names = "default"; +}; diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m1.conf b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m1.conf new file mode 100644 index 00000000000..d241d5b0956 --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m1.conf @@ -0,0 +1,6 @@ +# Copyright (c) 2025 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SPI_INTERRUPT=y +CONFIG_SPI_RA_DTC=y +CONFIG_TESTED_SPI_MODE=1 diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m1.overlay b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m1.overlay new file mode 100644 index 00000000000..521edfef067 --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m1.overlay @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + spi0_default_alt: spi0_default_alt { + group1 { + /* MISO MOSI RSPCK */ + psels = , + , + ; + }; + }; + + spi1_default_alt: spi1_default_alt { + group1 { + /* MISO MOSI RSPCK SSL */ + psels = , + , + , + ; + }; + }; +}; + +&ioport1 { + status = "okay"; +}; + +&spi0 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi0_default_alt>; + pinctrl-names = "default"; + cs-gpios = <&ioport1 3 GPIO_ACTIVE_LOW>; + + dut_spi_dt: test-spi-dev@0 { + compatible = "vnd,spi-device"; + reg = <0>; + spi-max-frequency = <1000000>; + }; +}; + +dut_spis: &spi1 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi1_default_alt>; + pinctrl-names = "default"; + interrupts = <92 1>, <93 1>, <94 1>, <95 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; +}; diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m2.conf b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m2.conf new file mode 100644 index 00000000000..d241d5b0956 --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m2.conf @@ -0,0 +1,6 @@ +# Copyright (c) 2025 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SPI_INTERRUPT=y +CONFIG_SPI_RA_DTC=y +CONFIG_TESTED_SPI_MODE=1 diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m2.overlay b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m2.overlay new file mode 100644 index 00000000000..521edfef067 --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m2.overlay @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + spi0_default_alt: spi0_default_alt { + group1 { + /* MISO MOSI RSPCK */ + psels = , + , + ; + }; + }; + + spi1_default_alt: spi1_default_alt { + group1 { + /* MISO MOSI RSPCK SSL */ + psels = , + , + , + ; + }; + }; +}; + +&ioport1 { + status = "okay"; +}; + +&spi0 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi0_default_alt>; + pinctrl-names = "default"; + cs-gpios = <&ioport1 3 GPIO_ACTIVE_LOW>; + + dut_spi_dt: test-spi-dev@0 { + compatible = "vnd,spi-device"; + reg = <0>; + spi-max-frequency = <1000000>; + }; +}; + +dut_spis: &spi1 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi1_default_alt>; + pinctrl-names = "default"; + interrupts = <92 1>, <93 1>, <94 1>, <95 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; +}; diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m3.conf b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m3.conf new file mode 100644 index 00000000000..d241d5b0956 --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m3.conf @@ -0,0 +1,6 @@ +# Copyright (c) 2025 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SPI_INTERRUPT=y +CONFIG_SPI_RA_DTC=y +CONFIG_TESTED_SPI_MODE=1 diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m3.overlay b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m3.overlay new file mode 100644 index 00000000000..03de19136a1 --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m3.overlay @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + spi0_default_alt: spi0_default_alt { + group1 { + /* MISO MOSI RSPCK */ + psels = , + , + ; + }; + }; + + spi1_default_alt: spi1_default_alt { + group1 { + /* MISO MOSI RSPCK SSL */ + psels = , + , + , + ; + }; + }; +}; + +&ioport1 { + status = "okay"; +}; + +&spi0 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi0_default_alt>; + pinctrl-names = "default"; + cs-gpios = <&ioport1 3 GPIO_ACTIVE_LOW>; + + dut_spi_dt: test-spi-dev@0 { + compatible = "vnd,spi-device"; + reg = <0>; + spi-max-frequency = <1000000>; + }; +}; + +dut_spis: &spi1 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi1_default_alt>; + pinctrl-names = "default"; + interrupts = <92 1>, <93 1>, <94 1>, <95 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; +}; diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m4.conf b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m4.conf new file mode 100644 index 00000000000..d241d5b0956 --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m4.conf @@ -0,0 +1,6 @@ +# Copyright (c) 2025 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SPI_INTERRUPT=y +CONFIG_SPI_RA_DTC=y +CONFIG_TESTED_SPI_MODE=1 diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m4.overlay b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m4.overlay new file mode 100644 index 00000000000..1cf25c94f2b --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m4.overlay @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + spi0_default_alt: spi0_default_alt { + group1 { + /* MISO MOSI RSPCK */ + psels = , + , + ; + }; + }; + + spi1_default_alt: spi1_default_alt { + group1 { + /* MISO MOSI RSPCK SSL */ + psels = , + , + , + ; + }; + }; +}; + +&ioport1 { + status = "okay"; +}; + +&spi0 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi0_default_alt>; + pinctrl-names = "default"; + cs-gpios = <&ioport1 8 GPIO_ACTIVE_LOW>; + + dut_spi_dt: test-spi-dev@0 { + compatible = "vnd,spi-device"; + reg = <0>; + spi-max-frequency = <1000000>; + }; +}; + +dut_spis: &spi1 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi1_default_alt>; + pinctrl-names = "default"; +}; diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m5.conf b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m5.conf new file mode 100644 index 00000000000..d241d5b0956 --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m5.conf @@ -0,0 +1,6 @@ +# Copyright (c) 2025 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SPI_INTERRUPT=y +CONFIG_SPI_RA_DTC=y +CONFIG_TESTED_SPI_MODE=1 diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m5.overlay b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m5.overlay new file mode 100644 index 00000000000..1cf25c94f2b --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/ek_ra6m5.overlay @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + spi0_default_alt: spi0_default_alt { + group1 { + /* MISO MOSI RSPCK */ + psels = , + , + ; + }; + }; + + spi1_default_alt: spi1_default_alt { + group1 { + /* MISO MOSI RSPCK SSL */ + psels = , + , + , + ; + }; + }; +}; + +&ioport1 { + status = "okay"; +}; + +&spi0 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi0_default_alt>; + pinctrl-names = "default"; + cs-gpios = <&ioport1 8 GPIO_ACTIVE_LOW>; + + dut_spi_dt: test-spi-dev@0 { + compatible = "vnd,spi-device"; + reg = <0>; + spi-max-frequency = <1000000>; + }; +}; + +dut_spis: &spi1 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi1_default_alt>; + pinctrl-names = "default"; +}; diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/fpb_ra6e2.conf b/tests/drivers/spi/spi_controller_peripheral/boards/fpb_ra6e2.conf new file mode 100644 index 00000000000..d241d5b0956 --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/fpb_ra6e2.conf @@ -0,0 +1,6 @@ +# Copyright (c) 2025 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SPI_INTERRUPT=y +CONFIG_SPI_RA_DTC=y +CONFIG_TESTED_SPI_MODE=1 diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/fpb_ra6e2.overlay b/tests/drivers/spi/spi_controller_peripheral/boards/fpb_ra6e2.overlay new file mode 100644 index 00000000000..e58fa671a9a --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/fpb_ra6e2.overlay @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + spi0_default_alt: spi0_default_alt { + group1 { + /* MISO MOSI RSPCK */ + psels = , + , + ; + }; + }; + + spi1_default_alt: spi1_default_alt { + group1 { + /* MISO MOSI RSPCK SSL */ + psels = , + , + , + ; + }; + }; +}; + +&ioport1 { + status = "okay"; +}; + +&spi0 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi0_default_alt>; + pinctrl-names = "default"; + cs-gpios = <&ioport3 1 GPIO_ACTIVE_LOW>; + + dut_spi_dt: test-spi-dev@0 { + compatible = "vnd,spi-device"; + reg = <0>; + spi-max-frequency = <1000000>; + }; +}; + +dut_spis: &spi1 { + rx-dtc; + tx-dtc; + status = "okay"; + pinctrl-0 = <&spi1_default_alt>; + pinctrl-names = "default"; +}; diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/frdm_mcxa156.overlay b/tests/drivers/spi/spi_controller_peripheral/boards/frdm_mcxa156.overlay new file mode 100644 index 00000000000..c533c11b4fd --- /dev/null +++ b/tests/drivers/spi/spi_controller_peripheral/boards/frdm_mcxa156.overlay @@ -0,0 +1,31 @@ +/* + * Copyright 2025 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +/ { + zephyr,user { + peripheral-cs = <1>; + }; +}; + +&lpspi0 { + dut_spi_dt: test-spi-dev@0 { + compatible = "vnd,spi-device"; + reg = <0>; + spi-max-frequency = <10000000>; + }; + transfer-delay = <100>; + sck-pcs-delay = <10>; + pcs-sck-delay = <10>; + /* lower the master interrupt priority so slave can interrupt */ + interrupts = <28 1>; + label = "spi_master"; +}; + +dut_spis: &lpspi1 { + label = "spi_slave"; +}; diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/spi/spi_controller_peripheral/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index fe004aa7695..00000000000 --- a/tests/drivers/spi/spi_controller_peripheral/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2025 Nordic Semiconductor - * - * SPDX-License-Identifier: Apache-2.0 - */ - -&pinctrl { - spi22_default_alt: spi22_default_alt { - group1 { - psels = , - , - ; - }; - }; - - spi22_sleep_alt: spi22_sleep_alt { - group1 { - psels = , - , - ; - low-power-enable; - }; - }; - - spi21_default_alt: spi21_default_alt { - group1 { - psels = , - , - , - ; - }; - }; - - spi21_sleep_alt: spi21_sleep_alt { - group1 { - psels = , - , - , - ; - low-power-enable; - }; - }; - -}; - - -&gpio1 { - status = "okay"; -}; - -&spi22 { - status = "okay"; - pinctrl-0 = <&spi22_default_alt>; - pinctrl-1 = <&spi22_sleep_alt>; - pinctrl-names = "default", "sleep"; - overrun-character = <0x00>; - cs-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>; - zephyr,pm-device-runtime-auto; - dut_spi_dt: test-spi-dev@0 { - compatible = "vnd,spi-device"; - reg = <0>; - spi-max-frequency = ; - }; -}; - -dut_spis: &spi21 { - compatible = "nordic,nrf-spis"; - status = "okay"; - def-char = <0x00>; - pinctrl-0 = <&spi21_default_alt>; - pinctrl-1 = <&spi21_sleep_alt>; - pinctrl-names = "default", "sleep"; - /delete-property/rx-delay-supported; - /delete-property/rx-delay; -}; - -&uicr { - nfct-pins-as-gpios; -}; diff --git a/tests/drivers/spi/spi_controller_peripheral/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/tests/drivers/spi/spi_controller_peripheral/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay index 541fdbb96de..25d68cd4dfa 100644 --- a/tests/drivers/spi/spi_controller_peripheral/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay +++ b/tests/drivers/spi/spi_controller_peripheral/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -62,6 +62,7 @@ overrun-character = <0x00>; cs-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>; zephyr,pm-device-runtime-auto; + dut_spi_dt: test-spi-dev@0 { compatible = "vnd,spi-device"; reg = <0>; diff --git a/tests/drivers/spi/spi_controller_peripheral/src/main.c b/tests/drivers/spi/spi_controller_peripheral/src/main.c index 997e6f5f91f..04c6c27d11a 100644 --- a/tests/drivers/spi/spi_controller_peripheral/src/main.c +++ b/tests/drivers/spi/spi_controller_peripheral/src/main.c @@ -28,7 +28,8 @@ static struct spi_dt_spec spim = SPI_DT_SPEC_GET(DT_NODELABEL(dut_spi_dt), SPIM_OP, 0); static const struct device *spis_dev = DEVICE_DT_GET(DT_NODELABEL(dut_spis)); static const struct spi_config spis_config = { - .operation = SPIS_OP + .operation = SPIS_OP, + .slave = DT_PROP_OR(DT_PATH(zephyr_user), peripheral_cs, 0), }; static struct k_poll_signal async_sig = K_POLL_SIGNAL_INITIALIZER(async_sig); diff --git a/tests/drivers/spi/spi_controller_peripheral/testcase.yaml b/tests/drivers/spi/spi_controller_peripheral/testcase.yaml index 56f3545235e..ed9b4cf6e79 100644 --- a/tests/drivers/spi/spi_controller_peripheral/testcase.yaml +++ b/tests/drivers/spi/spi_controller_peripheral/testcase.yaml @@ -8,12 +8,11 @@ common: fixture: gpio_spi_loopback platform_allow: - nrf52840dk/nrf52840 - - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - - nrf54lm20dk/nrf54lm20a/cpuapp - nrf54h20dk/nrf54h20/cpuapp - nrf54h20dk/nrf54h20/cpurad - nrf54h20dk/nrf54h20/cpuppr + - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp tests: @@ -63,10 +62,9 @@ tests: extra_args: DTC_OVERLAY_FILE="boards/nrf54h20dk_nrf54h20_cpuapp_fast.overlay" platform_exclude: - nrf52840dk/nrf52840 - - nrf54l15dk/nrf54l15/cpuapp - nrf54h20dk/nrf54h20/cpurad - nrf54h20dk/nrf54h20/cpuppr - - nrf54l20pdk/nrf54l20/cpuapp + - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp @@ -77,10 +75,9 @@ tests: extra_args: DTC_OVERLAY_FILE="boards/nrf54h20dk_nrf54h20_cpuapp_fast_spis.overlay" platform_exclude: - nrf52840dk/nrf52840 - - nrf54l15dk/nrf54l15/cpuapp - nrf54h20dk/nrf54h20/cpurad - nrf54h20dk/nrf54h20/cpuppr - - nrf54l20pdk/nrf54l20/cpuapp + - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp diff --git a/tests/drivers/spi/spi_error_cases/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/spi/spi_error_cases/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index c723ff2cbd2..00000000000 --- a/tests/drivers/spi/spi_error_cases/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2025 Nordic Semiconductor - * - * SPDX-License-Identifier: Apache-2.0 - */ - -&pinctrl { - spi22_default_alt: spi22_default_alt { - group1 { - psels = , - , - ; - }; - }; - - spi22_sleep_alt: spi22_sleep_alt { - group1 { - psels = , - , - ; - low-power-enable; - }; - }; - - spi21_default_alt: spi21_default_alt { - group1 { - psels = , - , - , - ; - }; - }; - - spi21_sleep_alt: spi21_sleep_alt { - group1 { - psels = , - , - , - ; - low-power-enable; - }; - }; - -}; - - -&gpio1 { - status = "okay"; -}; - -&spi22 { - status = "okay"; - pinctrl-0 = <&spi22_default_alt>; - pinctrl-1 = <&spi22_sleep_alt>; - pinctrl-names = "default", "sleep"; - overrun-character = <0x00>; - cs-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>; - dut_spi_dt: test-spi-dev@0 { - compatible = "vnd,spi-device"; - reg = <0>; - spi-max-frequency = <4000000>; - }; -}; - -dut_spis: &spi21 { - compatible = "nordic,nrf-spis"; - status = "okay"; - def-char = <0x00>; - pinctrl-0 = <&spi21_default_alt>; - pinctrl-1 = <&spi21_sleep_alt>; - pinctrl-names = "default", "sleep"; - /delete-property/rx-delay-supported; - /delete-property/rx-delay; -}; - -&uicr { - nfct-pins-as-gpios; -}; diff --git a/tests/drivers/spi/spi_error_cases/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/tests/drivers/spi/spi_error_cases/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay index 541fdbb96de..25d68cd4dfa 100644 --- a/tests/drivers/spi/spi_error_cases/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay +++ b/tests/drivers/spi/spi_error_cases/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -62,6 +62,7 @@ overrun-character = <0x00>; cs-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>; zephyr,pm-device-runtime-auto; + dut_spi_dt: test-spi-dev@0 { compatible = "vnd,spi-device"; reg = <0>; diff --git a/tests/drivers/spi/spi_error_cases/testcase.yaml b/tests/drivers/spi/spi_error_cases/testcase.yaml index 8e5ae335edd..9ad509baddb 100644 --- a/tests/drivers/spi/spi_error_cases/testcase.yaml +++ b/tests/drivers/spi/spi_error_cases/testcase.yaml @@ -6,13 +6,13 @@ common: harness: ztest harness_config: fixture: gpio_spi_loopback + timeout: 30 tests: drivers.spi.spi_error_cases: platform_allow: - nrf52840dk/nrf52840 - nrf54l15dk/nrf54l15/cpuapp - nrf54h20dk/nrf54h20/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp integration_platforms: diff --git a/tests/drivers/spi/spi_loopback/boards/ek_ra2l1.conf b/tests/drivers/spi/spi_loopback/boards/ek_ra2l1.conf new file mode 100644 index 00000000000..65750ba3131 --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/ek_ra2l1.conf @@ -0,0 +1,3 @@ +CONFIG_SPI_LOOPBACK_MODE_LOOP=y +CONFIG_SPI_INTERRUPT=y +CONFIG_SPI_RA_DTC=y diff --git a/tests/drivers/spi/spi_loopback/boards/ek_ra2l1.overlay b/tests/drivers/spi/spi_loopback/boards/ek_ra2l1.overlay new file mode 100644 index 00000000000..b87c7818209 --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/ek_ra2l1.overlay @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&spi0 { + rx-dtc; + tx-dtc; + + slow@0 { + compatible = "test-spi-loopback-slow"; + reg = <0>; + spi-max-frequency = <2000000>; + }; + + fast@0 { + compatible = "test-spi-loopback-fast"; + reg = <0>; + spi-max-frequency = <3000000>; + }; +}; + +&pinctrl { + spi0_default: spi0_default { + group1 { + /* MISO MOSI RSPCK */ + psels = , + , + ; + }; + }; +}; + +&spi0 { + pinctrl-0 = <&spi0_default>; + pinctrl-names = "default"; + cs-gpios = <&ioport1 3 GPIO_ACTIVE_LOW>; + interrupts = <8 1>, <9 1>, <10 1>, <19 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + status = "okay"; +}; + +&ioport1 { + status = "okay"; +}; diff --git a/tests/drivers/spi/spi_loopback/boards/ek_ra8p1_r7ka8p1kflcac_cm85.conf b/tests/drivers/spi/spi_loopback/boards/ek_ra8p1_r7ka8p1kflcac_cm85.conf new file mode 100644 index 00000000000..9c7b8ccf32d --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/ek_ra8p1_r7ka8p1kflcac_cm85.conf @@ -0,0 +1,6 @@ +# Copyright (c) 2025 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SPI_LOOPBACK_MODE_LOOP=y +CONFIG_SPI_B_INTERRUPT=y +CONFIG_SPI_B_RA_DTC=y diff --git a/tests/drivers/spi/spi_loopback/boards/ek_ra8p1_r7ka8p1kflcac_cm85.overlay b/tests/drivers/spi/spi_loopback/boards/ek_ra8p1_r7ka8p1kflcac_cm85.overlay new file mode 100644 index 00000000000..69a4204a1ab --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/ek_ra8p1_r7ka8p1kflcac_cm85.overlay @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +&spi1 { + rx-dtc; + tx-dtc; + + slow@0 { + compatible = "test-spi-loopback-slow"; + reg = <0>; + spi-max-frequency = <2000000>; + }; + + fast@0 { + compatible = "test-spi-loopback-fast"; + reg = <0>; + spi-max-frequency = <3000000>; + }; +}; diff --git a/tests/drivers/spi/spi_loopback/boards/lp_em_cc2340r5.conf b/tests/drivers/spi/spi_loopback/boards/lp_em_cc2340r5.conf new file mode 100644 index 00000000000..469620fed4e --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/lp_em_cc2340r5.conf @@ -0,0 +1 @@ +CONFIG_SPI_LOOPBACK_MODE_LOOP=y diff --git a/tests/drivers/spi/spi_loopback/boards/lp_em_cc2340r5.overlay b/tests/drivers/spi/spi_loopback/boards/lp_em_cc2340r5.overlay new file mode 100644 index 00000000000..98594dcc472 --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/lp_em_cc2340r5.overlay @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024 BayLibre, SAS + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&spi0 { + slow@0 { + compatible = "test-spi-loopback-slow"; + reg = <0>; + spi-max-frequency = <2000000>; + }; + fast@0 { + compatible = "test-spi-loopback-fast"; + reg = <0>; + spi-max-frequency = <3000000>; + }; +}; diff --git a/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.conf b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.conf new file mode 100644 index 00000000000..87c673fcdaf --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.conf @@ -0,0 +1,6 @@ +# +# Copyright (c) 2024 Analog Devices, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +CONFIG_SPI_MAX32_INTERRUPT=y diff --git a/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.overlay b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.overlay new file mode 100644 index 00000000000..83a4a0b60da --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.overlay @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2024 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&dma1 { + status = "okay"; +}; + +&spi0 { + dmas = <&dma1 1 MAX32_DMA_SLOT_SPI_TX>, <&dma1 2 MAX32_DMA_SLOT_SPI_RX>; + dma-names = "tx", "rx"; + + slow@1 { + compatible = "test-spi-loopback-slow"; + reg = <1>; + spi-max-frequency = <128000>; + }; + fast@1 { + compatible = "test-spi-loopback-fast"; + reg = <1>; + spi-max-frequency = <500000>; + }; +}; diff --git a/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.conf b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.conf new file mode 100644 index 00000000000..87c673fcdaf --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.conf @@ -0,0 +1,6 @@ +# +# Copyright (c) 2024 Analog Devices, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +CONFIG_SPI_MAX32_INTERRUPT=y diff --git a/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.overlay b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.overlay new file mode 100644 index 00000000000..ee529c8bf48 --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.overlay @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&spi0 { + slow@1 { + compatible = "test-spi-loopback-slow"; + reg = <1>; + spi-max-frequency = <128000>; + }; + fast@1 { + compatible = "test-spi-loopback-fast"; + reg = <1>; + spi-max-frequency = <500000>; + }; +}; diff --git a/tests/drivers/spi/spi_loopback/boards/mimxrt1060_evk_mimxrt1062_qspi_C.overlay b/tests/drivers/spi/spi_loopback/boards/mimxrt1060_evk_mimxrt1062_qspi_C.overlay index 979062e18d9..328dd4198e0 100644 --- a/tests/drivers/spi/spi_loopback/boards/mimxrt1060_evk_mimxrt1062_qspi_C.overlay +++ b/tests/drivers/spi/spi_loopback/boards/mimxrt1060_evk_mimxrt1062_qspi_C.overlay @@ -4,6 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +/* Short J17-pin4 and J17-pin5, populate R356, R350,R346, R362 to enable Pins for SPI1. */ &lpspi1 { slow@0 { compatible = "test-spi-loopback-slow"; diff --git a/tests/drivers/spi/spi_loopback/boards/mimxrt1170_evk_mimxrt1176_cm7_A.overlay b/tests/drivers/spi/spi_loopback/boards/mimxrt1170_evk_mimxrt1176_cm7_A.overlay index bbddef98ad6..57f6c86b644 100644 --- a/tests/drivers/spi/spi_loopback/boards/mimxrt1170_evk_mimxrt1176_cm7_A.overlay +++ b/tests/drivers/spi/spi_loopback/boards/mimxrt1170_evk_mimxrt1176_cm7_A.overlay @@ -1,9 +1,10 @@ /* - * Copyright 2023 NXP + * Copyright 2023, 2025 NXP * * SPDX-License-Identifier: Apache-2.0 */ +/* Short J10-pin8 and J10-pin10. */ &lpspi1 { dmas = <&edma0 0 36>, <&edma0 1 37>; dma-names = "rx", "tx"; diff --git a/tests/drivers/spi/spi_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.conf b/tests/drivers/spi/spi_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.conf new file mode 100644 index 00000000000..ad922ab8d26 --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.conf @@ -0,0 +1 @@ +CONFIG_SPI_IDEAL_TRANSFER_DURATION_SCALING=12 diff --git a/tests/drivers/spi/spi_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/tests/drivers/spi/spi_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay index d6e037cdbdf..1dcb91c0f5b 100644 --- a/tests/drivers/spi/spi_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay +++ b/tests/drivers/spi/spi_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -34,11 +34,13 @@ pinctrl-names = "default", "sleep"; overrun-character = <0x00>; zephyr,pm-device-runtime-auto; + slow@0 { compatible = "test-spi-loopback-slow"; reg = <0>; spi-max-frequency = ; }; + dut_fast: fast@0 { compatible = "test-spi-loopback-fast"; reg = <0>; diff --git a/tests/drivers/spi/spi_loopback/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/spi/spi_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp_spi00.overlay similarity index 59% rename from tests/drivers/spi/spi_loopback/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay rename to tests/drivers/spi/spi_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp_spi00.overlay index 48840969d8e..2d1015eaf24 100644 --- a/tests/drivers/spi/spi_loopback/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ b/tests/drivers/spi/spi_loopback/boards/nrf54lm20dk_nrf54lm20a_cpuapp_spi00.overlay @@ -4,20 +4,28 @@ * SPDX-License-Identifier: Apache-2.0 */ +/* Test requires following loopback: + * P2.02 - P2.04 + */ + &pinctrl { spi00_default: spi00_default { group1 { - psels = , - , - ; + psels = ; + }; + + group2 { + psels = , + ; + nordic,drive-mode = ; }; }; spi00_sleep: spi00_sleep { group1 { - psels = , - , - ; + psels = , + , + ; low-power-enable; }; }; @@ -30,15 +38,17 @@ pinctrl-names = "default", "sleep"; overrun-character = <0x00>; zephyr,pm-device-runtime-auto; + slow@0 { compatible = "test-spi-loopback-slow"; reg = <0>; - spi-max-frequency = ; + spi-max-frequency = ; }; + dut_fast: fast@0 { compatible = "test-spi-loopback-fast"; reg = <0>; - spi-max-frequency = ; + spi-max-frequency = ; }; }; diff --git a/tests/drivers/spi/spi_loopback/boards/nucleo_c071rb.conf b/tests/drivers/spi/spi_loopback/boards/nucleo_c071rb.conf index 5e05f18f57a..093e1f09d89 100644 --- a/tests/drivers/spi/spi_loopback/boards/nucleo_c071rb.conf +++ b/tests/drivers/spi/spi_loopback/boards/nucleo_c071rb.conf @@ -1 +1,2 @@ -CONFIG_SPI_LARGE_BUFFER_SIZE=8000 +CONFIG_SPI_LARGE_BUFFER_SIZE=4500 +CONFIG_SPI_IDEAL_TRANSFER_DURATION_SCALING=20 diff --git a/tests/drivers/spi/spi_loopback/boards/nucleo_f746zg.conf b/tests/drivers/spi/spi_loopback/boards/nucleo_f746zg.conf index c448e14811f..72f64737820 100644 --- a/tests/drivers/spi/spi_loopback/boards/nucleo_f746zg.conf +++ b/tests/drivers/spi/spi_loopback/boards/nucleo_f746zg.conf @@ -1 +1,2 @@ CONFIG_NOCACHE_MEMORY=y +CONFIG_SPI_IDEAL_TRANSFER_DURATION_SCALING=10 diff --git a/tests/drivers/spi/spi_loopback/boards/nucleo_wb55rg.conf b/tests/drivers/spi/spi_loopback/boards/nucleo_wb55rg.conf new file mode 100644 index 00000000000..a527ab8f28d --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/nucleo_wb55rg.conf @@ -0,0 +1 @@ +CONFIG_SPI_IDEAL_TRANSFER_DURATION_SCALING=22 diff --git a/tests/drivers/spi/spi_loopback/boards/nucleo_wba55cg.conf b/tests/drivers/spi/spi_loopback/boards/nucleo_wba55cg.conf new file mode 100644 index 00000000000..1753e2d75c3 --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/nucleo_wba55cg.conf @@ -0,0 +1 @@ +CONFIG_SPI_IDEAL_TRANSFER_DURATION_SCALING=50 diff --git a/tests/drivers/spi/spi_loopback/boards/nucleo_wl55jc.conf b/tests/drivers/spi/spi_loopback/boards/nucleo_wl55jc.conf new file mode 100644 index 00000000000..725924348b5 --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/nucleo_wl55jc.conf @@ -0,0 +1 @@ +CONFIG_SPI_IDEAL_TRANSFER_DURATION_SCALING=15 diff --git a/tests/drivers/spi/spi_loopback/boards/rsk_rx130_512kb.overlay b/tests/drivers/spi/spi_loopback/boards/rsk_rx130_512kb.overlay new file mode 100644 index 00000000000..ae5393b8811 --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/rsk_rx130_512kb.overlay @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&rspi0 { + slow@0 { + compatible = "test-spi-loopback-slow"; + reg = <0>; + spi-max-frequency = <1000000>; + }; + fast@0 { + compatible = "test-spi-loopback-fast"; + reg = <0>; + spi-max-frequency = <3000000>; + }; +}; diff --git a/tests/drivers/spi/spi_loopback/boards/siwx917_rb4338a.conf b/tests/drivers/spi/spi_loopback/boards/siwx917_rb4338a.conf index 368ff560c98..940add570e6 100644 --- a/tests/drivers/spi/spi_loopback/boards/siwx917_rb4338a.conf +++ b/tests/drivers/spi/spi_loopback/boards/siwx917_rb4338a.conf @@ -1 +1,2 @@ CONFIG_SPI_SILABS_SIWX91X_GSPI_DMA=y +CONFIG_SPI_IDEAL_TRANSFER_DURATION_SCALING=24 diff --git a/tests/drivers/spi/spi_loopback/boards/stm32f3_disco.conf b/tests/drivers/spi/spi_loopback/boards/stm32f3_disco.conf index 469620fed4e..016bb0000d9 100644 --- a/tests/drivers/spi/spi_loopback/boards/stm32f3_disco.conf +++ b/tests/drivers/spi/spi_loopback/boards/stm32f3_disco.conf @@ -1 +1,2 @@ CONFIG_SPI_LOOPBACK_MODE_LOOP=y +CONFIG_SPI_IDEAL_TRANSFER_DURATION_SCALING=15 diff --git a/tests/drivers/spi/spi_loopback/overlay-stm32-spi-16bits-dma-dt-nocache-mem.conf b/tests/drivers/spi/spi_loopback/overlay-stm32-spi-16bits-dma-dt-nocache-mem.conf deleted file mode 100644 index 4bb96e35f58..00000000000 --- a/tests/drivers/spi/spi_loopback/overlay-stm32-spi-16bits-dma-dt-nocache-mem.conf +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (c) 2023 Graphcore Ltd, All rights reserved. -# -# SPDX-License-Identifier: Apache-2.0 -# - -# enable DMA mode for SPI loopback test -CONFIG_SPI_STM32_DMA=y -CONFIG_SPI_STM32_INTERRUPT=n -CONFIG_SPI_ASYNC=n -CONFIG_NOCACHE_MEMORY=n -CONFIG_DT_DEFINED_NOCACHE=y -CONFIG_DT_DEFINED_NOCACHE_NAME="SRAM2" -CONFIG_SPI_LOOPBACK_16BITS_FRAMES=y diff --git a/tests/drivers/spi/spi_loopback/overlay-stm32-spi-16bits-dma.conf b/tests/drivers/spi/spi_loopback/overlay-stm32-spi-16bits-dma.conf deleted file mode 100644 index c49efea868a..00000000000 --- a/tests/drivers/spi/spi_loopback/overlay-stm32-spi-16bits-dma.conf +++ /dev/null @@ -1,11 +0,0 @@ -# -# Copyright (c) 2023 Graphcore Ltd, All rights reserved. -# -# SPDX-License-Identifier: Apache-2.0 -# - -# enable DMA mode for SPI loopback test -CONFIG_SPI_STM32_DMA=y -CONFIG_SPI_STM32_INTERRUPT=n -CONFIG_SPI_ASYNC=n -CONFIG_SPI_LOOPBACK_16BITS_FRAMES=y diff --git a/tests/drivers/spi/spi_loopback/overlay-stm32-spi-16bits.conf b/tests/drivers/spi/spi_loopback/overlay-stm32-spi-16bits.conf deleted file mode 100644 index 00ca04782b4..00000000000 --- a/tests/drivers/spi/spi_loopback/overlay-stm32-spi-16bits.conf +++ /dev/null @@ -1,6 +0,0 @@ -# -# Copyright (c) 2023 Graphcore Ltd, All rights reserved. -# -# SPDX-License-Identifier: Apache-2.0 -# -CONFIG_SPI_LOOPBACK_16BITS_FRAMES=y diff --git a/tests/drivers/spi/spi_loopback/overlay-stm32-spi-16bits.overlay b/tests/drivers/spi/spi_loopback/overlay-stm32-spi-16bits.overlay deleted file mode 100644 index b2df25ac860..00000000000 --- a/tests/drivers/spi/spi_loopback/overlay-stm32-spi-16bits.overlay +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2023 Graphcore Ltd, All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/* Set div-q to get test clk freq into acceptable SPI freq range */ -&pll { - /delete-property/ div-q; - div-q = <8>; -}; - -&sram2 { - zephyr,memory-attr = < DT_MEM_ARM(ATTR_MPU_RAM_NOCACHE) >; -}; - -&spi1 { - dmas = <&dmamux1 0 38 (STM32_DMA_PERIPH_TX | STM32_DMA_PRIORITY_HIGH | STM32_DMA_MEM_16BITS | STM32_DMA_PERIPH_16BITS) - &dmamux1 1 37 (STM32_DMA_PERIPH_RX | STM32_DMA_PRIORITY_HIGH | STM32_DMA_MEM_16BITS | STM32_DMA_PERIPH_16BITS)>; - dma-names = "tx", "rx"; - slow@0 { - compatible = "test-spi-loopback-slow"; - reg = <0>; - spi-max-frequency = <500000>; - }; - fast@0 { - compatible = "test-spi-loopback-fast"; - reg = <0>; - spi-max-frequency = <16000000>; - }; -}; - -&dma1 { - status = "okay"; -}; - -&dma2 { - status = "okay"; -}; - -&dmamux1 { - status = "okay"; -}; diff --git a/tests/drivers/spi/spi_loopback/src/spi.c b/tests/drivers/spi/spi_loopback/src/spi.c index fd2302a4ec0..bb8b9d283b2 100644 --- a/tests/drivers/spi/spi_loopback/src/spi.c +++ b/tests/drivers/spi/spi_loopback/src/spi.c @@ -66,40 +66,49 @@ const struct gpio_dt_spec mosi_pin = GPIO_DT_SPEC_GET_OR(DT_PATH(zephyr_user), m ******************** */ -#if CONFIG_NOCACHE_MEMORY +#ifdef CONFIG_NOCACHE_MEMORY #define __NOCACHE __attribute__((__section__(".nocache"))) #elif defined(CONFIG_DT_DEFINED_NOCACHE) #define __NOCACHE __attribute__((__section__(CONFIG_DT_DEFINED_NOCACHE_NAME))) #else /* CONFIG_NOCACHE_MEMORY */ #define __NOCACHE +#if CONFIG_DCACHE_LINE_SIZE != 0 +#define __BUF_ALIGN __aligned(CONFIG_DCACHE_LINE_SIZE) +#else +#define __BUF_ALIGN __aligned(DT_PROP_OR(DT_PATH(cpus, cpu_0), d_cache_line_size, 32)) +#endif #endif /* CONFIG_NOCACHE_MEMORY */ +#ifndef __BUF_ALIGN +#define __BUF_ALIGN __aligned(32) +#endif + #define BUF_SIZE 18 static const char tx_data[BUF_SIZE] = "0123456789abcdef-\0"; -static __aligned(32) char buffer_tx[BUF_SIZE] __NOCACHE; -static __aligned(32) char buffer_rx[BUF_SIZE] __NOCACHE; +static __BUF_ALIGN char buffer_tx[BUF_SIZE] __NOCACHE; +static __BUF_ALIGN char buffer_rx[BUF_SIZE] __NOCACHE; #define BUF2_SIZE 36 static const char tx2_data[BUF2_SIZE] = "Thequickbrownfoxjumpsoverthelazydog\0"; -static __aligned(32) char buffer2_tx[BUF2_SIZE] __NOCACHE; -static __aligned(32) char buffer2_rx[BUF2_SIZE] __NOCACHE; +static __BUF_ALIGN char buffer2_tx[BUF2_SIZE] __NOCACHE; +static __BUF_ALIGN char buffer2_rx[BUF2_SIZE] __NOCACHE; #define BUF3_SIZE CONFIG_SPI_LARGE_BUFFER_SIZE static const char large_tx_data[BUF3_SIZE] = "Thequickbrownfoxjumpsoverthelazydog\0"; -static __aligned(32) char large_buffer_tx[BUF3_SIZE] __NOCACHE; -static __aligned(32) char large_buffer_rx[BUF3_SIZE] __NOCACHE; +static __BUF_ALIGN char large_buffer_tx[BUF3_SIZE] __NOCACHE; +static __BUF_ALIGN char large_buffer_rx[BUF3_SIZE] __NOCACHE; #define BUFWIDE_SIZE 12 static const uint16_t tx_data_16[] = {0x1234, 0x5678, 0x9ABC, 0xDEF0, 0xFF00, 0x00FF, 0xAAAA, 0x5555, 0xF0F0, 0x0F0F, 0xA5A5, 0x5A5A}; -static __aligned(32) uint16_t buffer_tx_16[BUFWIDE_SIZE] __NOCACHE; -static __aligned(32) uint16_t buffer_rx_16[BUFWIDE_SIZE] __NOCACHE; +static __BUF_ALIGN uint16_t buffer_tx_16[BUFWIDE_SIZE] __NOCACHE; +static __BUF_ALIGN uint16_t buffer_rx_16[BUFWIDE_SIZE] __NOCACHE; static const uint32_t tx_data_32[] = {0x12345678, 0x56781234, 0x9ABCDEF0, 0xDEF09ABC, 0xFFFF0000, 0x0000FFFF, 0x00FF00FF, 0xFF00FF00, 0xAAAA5555, 0x5555AAAA, 0xAA55AA55, 0x55AA55AA}; -static __aligned(32) uint32_t buffer_tx_32[BUFWIDE_SIZE] __NOCACHE; -static __aligned(32) uint32_t buffer_rx_32[BUFWIDE_SIZE] __NOCACHE; +static __BUF_ALIGN uint32_t buffer_tx_32[BUFWIDE_SIZE] __NOCACHE; +static __BUF_ALIGN uint32_t buffer_rx_32[BUFWIDE_SIZE] __NOCACHE; /* ******************** @@ -293,11 +302,19 @@ ZTEST(spi_loopback, test_spi_complete_multiple_timed) uint32_t start_time, end_time, cycles_spent; uint64_t time_spent_us, expected_transfer_time_us, latency_measurement; + /* + * spi_loopback_transceive() does an inline pm_device_runtime_get(), but since we are + * timing the transfer, we need to get the SPI controller before we start the measurement. + */ + zassert_ok(pm_device_runtime_get(spec->bus)); + /* since this is a test program, there shouldn't be much to interfere with measurement */ start_time = k_cycle_get_32(); spi_loopback_transceive(spec, &tx, &rx); end_time = k_cycle_get_32(); + zassert_ok(pm_device_runtime_put(spec->bus)); + if (end_time >= start_time) { cycles_spent = end_time - start_time; } else { @@ -559,11 +576,18 @@ ZTEST(spi_loopback, test_spi_null_rx_buf_set) { struct spi_dt_spec *spec = loopback_specs[spec_idx]; const struct spi_buf_set tx = spi_loopback_setup_xfer(tx_bufs_pool, 1, - NULL, BUF_SIZE); + buffer_tx, BUF_SIZE); spi_loopback_transceive(spec, &tx, NULL); } +ZTEST(spi_loopback, test_spi_null_tx_rx_buf_set) +{ + struct spi_dt_spec *spec = loopback_specs[spec_idx]; + + spi_loopback_transceive(spec, NULL, NULL); +} + ZTEST(spi_loopback, test_nop_nil_bufs) { struct spi_dt_spec *spec = loopback_specs[spec_idx]; @@ -575,18 +599,17 @@ ZTEST(spi_loopback, test_nop_nil_bufs) /* nothing really to check here, check is done in spi_loopback_transceive */ } -/* test using the same buffer for RX and TX will write same data back */ +/* test using the same buffer set for RX and TX will write same data back */ ZTEST(spi_loopback, test_spi_write_back) { struct spi_dt_spec *spec = loopback_specs[spec_idx]; - const struct spi_buf_set tx = spi_loopback_setup_xfer(rx_bufs_pool, 1, - buffer_rx, BUF_SIZE); - const struct spi_buf_set rx = spi_loopback_setup_xfer(rx_bufs_pool, 1, - buffer_rx, BUF_SIZE); + + struct spi_buf buf = {.buf = buffer_rx, .len = BUF_SIZE}; + struct spi_buf_set set = {.buffers = &buf, .count = 1}; memcpy(buffer_rx, tx_data, sizeof(tx_data)); - spi_loopback_transceive(spec, &tx, &rx); + spi_loopback_transceive(spec, &set, &set); spi_loopback_compare_bufs(tx_data, buffer_rx, BUF_SIZE, buffer_print_tx, buffer_print_rx); @@ -596,19 +619,25 @@ ZTEST(spi_loopback, test_spi_write_back) ZTEST(spi_loopback, test_spi_same_buf_cmd) { struct spi_dt_spec *spec = loopback_specs[spec_idx]; - const struct spi_buf_set tx = spi_loopback_setup_xfer(rx_bufs_pool, 2, - buffer_rx, 1, - NULL, BUF_SIZE - 1); - const struct spi_buf_set rx = spi_loopback_setup_xfer(rx_bufs_pool, 1, - NULL, BUF_SIZE - 1, - buffer_rx+(BUF_SIZE - 1), 1); - memcpy(buffer_rx, tx_data, sizeof(tx_data)); + struct spi_buf buf[2] = { + {.buf = buffer_rx, .len = 1}, + {.buf = buffer_rx+1, .len = BUF_SIZE - 1} + }; + + const struct spi_buf_set tx = {.buffers = buf, .count = 1}; + const struct spi_buf_set rx = {.buffers = buf, .count = 2}; + + memcpy(buffer_rx, tx_data, BUF_SIZE); spi_loopback_transceive(spec, &tx, &rx); - spi_loopback_compare_bufs(tx_data, buffer_rx, BUF_SIZE, + spi_loopback_compare_bufs(tx_data, buffer_rx, 1, buffer_print_tx, buffer_print_rx); + + char zeros[BUF_SIZE - 1] = {0}; + + zassert_ok(memcmp(buffer_rx+1, zeros, BUF_SIZE - 1)); } @@ -652,7 +681,7 @@ ZTEST(spi_loopback, test_spi_word_size_9) { struct spi_dt_spec *spec = loopback_specs[spec_idx]; - static __aligned(32) uint16_t tx_data_9[BUFWIDE_SIZE]; + static __BUF_ALIGN uint16_t tx_data_9[BUFWIDE_SIZE]; for (int i = 0; i < BUFWIDE_SIZE; i++) { tx_data_9[i] = tx_data_16[i] & 0x1FF; @@ -676,7 +705,7 @@ ZTEST(spi_loopback, test_spi_word_size_24) { struct spi_dt_spec *spec = loopback_specs[spec_idx]; - static __aligned(32) uint32_t tx_data_24[BUFWIDE_SIZE]; + static __BUF_ALIGN uint32_t tx_data_24[BUFWIDE_SIZE]; for (int i = 0; i < BUFWIDE_SIZE; i++) { tx_data_24[i] = tx_data_32[i] & 0xFFFFFF; @@ -702,8 +731,8 @@ static struct k_thread thread[3]; static K_SEM_DEFINE(thread_sem, 0, 3); static K_SEM_DEFINE(sync_sem, 0, 1); -static uint8_t __aligned(32) tx_buffer[3][32]; -static uint8_t __aligned(32) rx_buffer[3][32]; +static uint8_t __BUF_ALIGN tx_buffer[3][32] __NOCACHE; +static uint8_t __BUF_ALIGN rx_buffer[3][32] __NOCACHE; atomic_t thread_test_fails; @@ -993,6 +1022,8 @@ ZTEST(spi_extra_api_features, test_spi_hold_on_cs) early_exit: hold_spec->config.operation &= ~SPI_HOLD_ON_CS; zassert_false(ret, "SPI transceive failed, code %d", ret); + /* if there was no error then it was meant to be a skip at this point */ + ztest_test_skip(); } /* diff --git a/tests/drivers/spi/spi_loopback/testcase.yaml b/tests/drivers/spi/spi_loopback/testcase.yaml index ab3322a8d1f..746cc03c81a 100644 --- a/tests/drivers/spi/spi_loopback/testcase.yaml +++ b/tests/drivers/spi/spi_loopback/testcase.yaml @@ -51,17 +51,6 @@ tests: - robokit1 integration_platforms: - sam_e70_xplained/same70q21 - drivers.spi.stm32_spi_16bits_frames.loopback: - extra_args: - - EXTRA_CONF_FILE="overlay-stm32-spi-16bits.conf" - - DTC_OVERLAY_FILE="overlay-stm32-spi-16bits.overlay" - platform_allow: - - nucleo_h743zi - - nucleo_h753zi - - nucleo_h745zi_q/stm32h745xx/m4 - - nucleo_h745zi_q/stm32h745xx/m7 - integration_platforms: - - nucleo_h743zi drivers.spi.stm32_spi_dma.loopback: extra_args: EXTRA_CONF_FILE="overlay-stm32-spi-dma.conf" platform_allow: @@ -98,29 +87,6 @@ tests: - nucleo_h745zi_q/stm32h745xx/m7 integration_platforms: - nucleo_h743zi - drivers.spi.stm32_spi_16bits_frames_dma.loopback: - extra_args: - - EXTRA_CONF_FILE="overlay-stm32-spi-16bits-dma.conf" - - DTC_OVERLAY_FILE="overlay-stm32-spi-16bits.overlay" - platform_allow: - - nucleo_h743zi - - nucleo_h753zi - - nucleo_h745zi_q/stm32h745xx/m4 - - nucleo_h745zi_q/stm32h745xx/m7 - integration_platforms: - - nucleo_h743zi - drivers.spi.stm32_spi_16bits_frames_dma_dt_nocache_mem.loopback: - extra_args: - - EXTRA_CONF_FILE="overlay-stm32-spi-16bits-dma-dt-nocache-mem.conf" - - DTC_OVERLAY_FILE="overlay-stm32-spi-16bits.overlay" - filter: CONFIG_CPU_HAS_DCACHE - platform_allow: - - nucleo_h743zi - - nucleo_h753zi - - nucleo_h745zi_q/stm32h745xx/m4 - - nucleo_h745zi_q/stm32h745xx/m7 - integration_platforms: - - nucleo_h743zi drivers.spi.stm32_spi_interrupt.loopback: extra_args: EXTRA_CONF_FILE="overlay-stm32-spi-interrupt.conf" platform_allow: @@ -272,8 +238,6 @@ tests: extra_args: EXTRA_DTC_OVERLAY_FILE="boards/nrf_at_1mhz.overlay" platform_allow: - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - - nrf54lm20dk/nrf54lm20a/cpuapp harness: console harness_config: fixture: spi_loopback @@ -284,23 +248,26 @@ tests: extra_args: EXTRA_DTC_OVERLAY_FILE="boards/nrf_at_8mhz.overlay" platform_allow: - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp drivers.spi.nrf54l_16mhz: extra_args: EXTRA_DTC_OVERLAY_FILE="boards/nrf_at_16mhz.overlay" platform_allow: - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp drivers.spi.nrf54l_32mhz: extra_args: EXTRA_DTC_OVERLAY_FILE="boards/nrf_at_32mhz.overlay" platform_allow: - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp + drivers.spi.nrf54lm20_16mhz_32mhz: + harness: ztest + harness_config: + fixture: spi_fast_loopback + extra_args: + - DTC_OVERLAY_FILE="boards/nrf54lm20dk_nrf54lm20a_cpuapp_spi00.overlay" + platform_allow: + - nrf54lm20dk/nrf54lm20a/cpuapp drivers.spi.ke1xz_flexio_spi.loopback: extra_args: DTC_OVERLAY_FILE="boards/frdm_ke1xz_flexio_spi.overlay" filter: CONFIG_DT_HAS_NXP_FLEXIO_ENABLED and @@ -348,3 +315,10 @@ tests: filter: CONFIG_SOC_FAMILY_SILABS_SIWX91X platform_allow: - siwx917_rb4338a + drivers.spi.cc23x0.loopback.dma.no_async: + filter: CONFIG_SOC_FAMILY_TI_SIMPLELINK + platform_allow: + - lp_em_cc2340r5 + extra_configs: + - CONFIG_SPI_CC23X0_DMA_DRIVEN=y + - CONFIG_SPI_ASYNC=n diff --git a/tests/drivers/timer/nrf_grtc_timer/testcase.yaml b/tests/drivers/timer/nrf_grtc_timer/testcase.yaml index cd4f99daede..8d01344c49c 100644 --- a/tests/drivers/timer/nrf_grtc_timer/testcase.yaml +++ b/tests/drivers/timer/nrf_grtc_timer/testcase.yaml @@ -2,20 +2,18 @@ tests: drivers.timer.nrf_grtc_timer: tags: drivers platform_allow: + - nrf54h20dk/nrf54h20/cpuapp + - nrf54h20dk/nrf54h20/cpurad + - nrf54h20dk/nrf54h20/cpuppr - nrf54l09pdk/nrf54l09/cpuapp - nrf54l09pdk/nrf54l09/cpuflpr - nrf54l15dk/nrf54l15/cpuapp - nrf54l15dk/nrf54l15/cpuflpr - nrf54l15bsim/nrf54l15/cpuapp - - nrf54h20dk/nrf54h20/cpuapp - - nrf54h20dk/nrf54h20/cpurad - - nrf54h20dk/nrf54h20/cpuppr - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - - nrf54l20pdk/nrf54l20/cpuflpr - nrf54lm20dk/nrf54lm20a/cpuflpr - ophelia4ev/nrf54l15/cpuapp - ophelia4ev/nrf54l15/cpuflpr integration_platforms: - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp + timeout: 30 diff --git a/tests/drivers/uart/uart_async_api/boards/ek_ra8p1_r7ka8p1kflcac_cm85.overlay b/tests/drivers/uart/uart_async_api/boards/ek_ra8p1_r7ka8p1kflcac_cm85.overlay new file mode 100644 index 00000000000..ac9bd7768dd --- /dev/null +++ b/tests/drivers/uart/uart_async_api/boards/ek_ra8p1_r7ka8p1kflcac_cm85.overlay @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2025 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + sci2_default: sci2_default { + group1 { + /* tx */ + psels = ; + drive-strength = "medium"; + }; + + group2 { + /* rx */ + psels = ; + }; + }; +}; + +&sci2 { + interrupts = <30 1>, <31 1>, <32 1>, <33 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + pinctrl-0 = <&sci2_default>; + pinctrl-names = "default"; + status = "okay"; + + dut: uart { + current-speed = <115200>; + status = "okay"; + }; +}; diff --git a/tests/drivers/uart/uart_async_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/uart/uart_async_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index ed4a2de1891..00000000000 --- a/tests/drivers/uart/uart_async_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,26 +0,0 @@ -/* SPDX-License-Identifier: Apache-2.0 */ - -&pinctrl { - uart21_default_alt: uart21_default_alt { - group1 { - psels = , - ; - }; - }; - - uart21_sleep_alt: uart21_sleep_alt { - group1 { - psels = , - ; - low-power-enable; - }; - }; -}; - -dut: &uart21 { - status = "okay"; - pinctrl-0 = <&uart21_default_alt>; - pinctrl-1 = <&uart21_sleep_alt>; - pinctrl-names = "default", "sleep"; - current-speed = <115200>; -}; diff --git a/tests/drivers/uart/uart_async_api/boards/nrf54lm20dk_nrf54lm20_common.dtsi b/tests/drivers/uart/uart_async_api/boards/nrf54lm20dk_nrf54lm20_common.dtsi index ec39ed93ecf..8a8a0363b65 100644 --- a/tests/drivers/uart/uart_async_api/boards/nrf54lm20dk_nrf54lm20_common.dtsi +++ b/tests/drivers/uart/uart_async_api/boards/nrf54lm20dk_nrf54lm20_common.dtsi @@ -1,3 +1,9 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + /* Test requires following loopback: * P1.13 - P1.14 */ diff --git a/tests/drivers/uart/uart_async_api/boards/nrf54lm20dk_nrf54lm20a_cpuapp.conf b/tests/drivers/uart/uart_async_api/boards/nrf54lm20dk_nrf54lm20a_cpuapp.conf new file mode 100644 index 00000000000..d70069646c9 --- /dev/null +++ b/tests/drivers/uart/uart_async_api/boards/nrf54lm20dk_nrf54lm20a_cpuapp.conf @@ -0,0 +1 @@ +CONFIG_VAR_LENGTH_BUFFER_TEST_BUADRATE_LIMIT=57600 diff --git a/tests/drivers/uart/uart_async_api/boards/nrf54lm20dk_nrf54lm20a_cpuapp_uart00.overlay b/tests/drivers/uart/uart_async_api/boards/nrf54lm20dk_nrf54lm20a_cpuapp_uart00.overlay new file mode 100644 index 00000000000..5f129663e55 --- /dev/null +++ b/tests/drivers/uart/uart_async_api/boards/nrf54lm20dk_nrf54lm20a_cpuapp_uart00.overlay @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* Test requires following loopback: + * P2.02 - P2.00 + */ + +&pinctrl { + uart00_default_alt: uart00_default_alt { + group1 { + psels = ; + }; + + group2 { + psels = ; + bias-pull-up; + }; + }; + + uart00_sleep_alt: uart00_sleep_alt { + group1 { + psels = , + ; + low-power-enable; + }; + }; +}; + +dut: &uart00 { + status = "okay"; + pinctrl-0 = <&uart00_default_alt>; + pinctrl-1 = <&uart00_sleep_alt>; + pinctrl-names = "default", "sleep"; + current-speed = <4000000>; +}; + +&gpio2 { + status = "okay"; +}; diff --git a/tests/drivers/uart/uart_async_api/boards/nucleo_u385rg_q.overlay b/tests/drivers/uart/uart_async_api/boards/nucleo_u385rg_q.overlay new file mode 100644 index 00000000000..87bd131e1ca --- /dev/null +++ b/tests/drivers/uart/uart_async_api/boards/nucleo_u385rg_q.overlay @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2025 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +dut: &lpuart1 { + dmas = <&gpdma1 0 35 STM32_DMA_PERIPH_TX + &gpdma1 1 34 STM32_DMA_PERIPH_RX>; + dma-names = "tx", "rx"; +}; + +&gpdma1 { + status = "okay"; +}; diff --git a/tests/drivers/uart/uart_async_api/boards/nucleo_wba55cg.overlay b/tests/drivers/uart/uart_async_api/boards/nucleo_wba55cg.overlay index 9fc34bb26a2..df1b3856c1a 100644 --- a/tests/drivers/uart/uart_async_api/boards/nucleo_wba55cg.overlay +++ b/tests/drivers/uart/uart_async_api/boards/nucleo_wba55cg.overlay @@ -4,6 +4,11 @@ * SPDX-License-Identifier: Apache-2.0 */ +&rcc { + clocks = <&clk_hsi>; + clock-frequency = ; +}; + dut: &lpuart1 { dmas = <&gpdma1 0 16 STM32_DMA_PERIPH_TX &gpdma1 1 15 STM32_DMA_PERIPH_RX>; diff --git a/tests/drivers/uart/uart_async_api/src/test_uart_async.c b/tests/drivers/uart/uart_async_api/src/test_uart_async.c index e0861656643..936600c96fc 100644 --- a/tests/drivers/uart/uart_async_api/src/test_uart_async.c +++ b/tests/drivers/uart/uart_async_api/src/test_uart_async.c @@ -17,7 +17,7 @@ #define NOCACHE_MEM 0 #endif /* CONFIG_NOCACHE_MEMORY */ -K_SEM_DEFINE(tx_done, 0, 1); +K_SEM_DEFINE(tx_done, 0, 2); K_SEM_DEFINE(tx_aborted, 0, 1); K_SEM_DEFINE(rx_rdy, 0, 1); K_SEM_DEFINE(rx_buf_coherency, 0, 255); @@ -833,8 +833,8 @@ static void test_chained_write_callback(const struct device *dev, switch (evt->type) { case UART_TX_DONE: if (chained_write_next_buf) { - uart_tx(dev, chained_write_tx_bufs[1], 10, 100 * USEC_PER_MSEC); chained_write_next_buf = false; + uart_tx(dev, chained_write_tx_bufs[1], 10, 100 * USEC_PER_MSEC); } tx_sent = 1; k_sem_give(&tx_done); @@ -1068,7 +1068,12 @@ static void *var_buf_length_setup(void) static void test_uart_async_var_buf(size_t buf_len, size_t tx_len) { int ret; - uint8_t tx_buffer[VAR_LENGTH_TX_BUF_SIZE]; + +#if NOCACHE_MEM +static __aligned(sizeof(void *)) uint8_t tx_buffer[VAR_LENGTH_TX_BUF_SIZE] __used __NOCACHE; +#else +static ZTEST_BMEM uint8_t tx_buffer[VAR_LENGTH_TX_BUF_SIZE]; +#endif /* NOCACHE_MEM */ for (size_t i = 0; i < VAR_LENGTH_TX_BUF_SIZE; ++i) { tx_buffer[i] = tx_len; diff --git a/tests/drivers/uart/uart_async_api/testcase.yaml b/tests/drivers/uart/uart_async_api/testcase.yaml index efcf3af9453..7751418afa8 100644 --- a/tests/drivers/uart/uart_async_api/testcase.yaml +++ b/tests/drivers/uart/uart_async_api/testcase.yaml @@ -18,6 +18,15 @@ tests: - platform:mimxrt685_evk/mimxrt685s/cm33:"DTC_OVERLAY_FILE=nxp/dut_flexcomm4.overlay" - platform:mimxrt595_evk/mimxrt595s/cm33:"DTC_OVERLAY_FILE=nxp/dut_flexcomm12.overlay" - platform:frdm_rw612/rw612:"DTC_OVERLAY_FILE=nxp/dut_lpc_flexcomm0.overlay" + drivers.uart.async_api.fast: + filter: CONFIG_SERIAL_SUPPORT_ASYNC and not CONFIG_UART_MCUX_LPUART + harness: ztest + harness_config: + fixture: uart_fast_loopback + platform_allow: + - nrf54lm20dk/nrf54lm20a/cpuapp + extra_args: + - DTC_OVERLAY_FILE="boards/nrf54lm20dk_nrf54lm20a_cpuapp_uart00.overlay" drivers.uart.wide: filter: CONFIG_SERIAL_SUPPORT_ASYNC and not CONFIG_UART_MCUX_LPUART harness: ztest diff --git a/tests/drivers/uart/uart_elementary/boards/nrf54l15dk_nrf54l15_cpuflpr_dual_uart.overlay b/tests/drivers/uart/uart_elementary/boards/nrf54l15dk_nrf54l15_cpuflpr_dual_uart.overlay deleted file mode 100644 index 2031f7a2444..00000000000 --- a/tests/drivers/uart/uart_elementary/boards/nrf54l15dk_nrf54l15_cpuflpr_dual_uart.overlay +++ /dev/null @@ -1,51 +0,0 @@ -/* SPDX-License-Identifier: Apache-2.0 */ - -&pinctrl { - uart21_default: uart21_default { - group1 { - psels = , - ; - bias-pull-up; - }; - }; - - uart21_sleep: uart21_sleep { - group1 { - psels = , - ; - low-power-enable; - }; - }; - - uart22_default: uart22_default { - group1 { - psels = , - ; - bias-pull-up; - }; - }; - - uart22_sleep: uart22_sleep { - group1 { - psels = , - ; - low-power-enable; - }; - }; -}; - -dut: &uart21 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart21_default>; - pinctrl-1 = <&uart21_sleep>; - pinctrl-names = "default", "sleep"; -}; - -dut_aux: &uart22 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart22_default>; - pinctrl-1 = <&uart22_sleep>; - pinctrl-names = "default", "sleep"; -}; diff --git a/tests/drivers/uart/uart_elementary/boards/nrf54l15dk_nrf54l15_cpuapp_dual_uart.overlay b/tests/drivers/uart/uart_elementary/boards/nrf54l15dk_nrf54l15_dual_uart.overlay similarity index 100% rename from tests/drivers/uart/uart_elementary/boards/nrf54l15dk_nrf54l15_cpuapp_dual_uart.overlay rename to tests/drivers/uart/uart_elementary/boards/nrf54l15dk_nrf54l15_dual_uart.overlay diff --git a/tests/drivers/uart/uart_elementary/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/uart/uart_elementary/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index cf481b7a161..00000000000 --- a/tests/drivers/uart/uart_elementary/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,31 +0,0 @@ -/* SPDX-License-Identifier: Apache-2.0 */ - -&pinctrl { - uart21_default: uart21_default { - group1 { - psels = , - , - , - ; - }; - }; - - uart21_sleep: uart21_sleep { - group1 { - psels = , - , - , - ; - low-power-enable; - }; - }; -}; - -dut: &uart21 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart21_default>; - pinctrl-1 = <&uart21_sleep>; - pinctrl-names = "default", "sleep"; - hw-flow-control; -}; diff --git a/tests/drivers/uart/uart_elementary/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay b/tests/drivers/uart/uart_elementary/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay deleted file mode 100644 index cf481b7a161..00000000000 --- a/tests/drivers/uart/uart_elementary/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay +++ /dev/null @@ -1,31 +0,0 @@ -/* SPDX-License-Identifier: Apache-2.0 */ - -&pinctrl { - uart21_default: uart21_default { - group1 { - psels = , - , - , - ; - }; - }; - - uart21_sleep: uart21_sleep { - group1 { - psels = , - , - , - ; - low-power-enable; - }; - }; -}; - -dut: &uart21 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart21_default>; - pinctrl-1 = <&uart21_sleep>; - pinctrl-names = "default", "sleep"; - hw-flow-control; -}; diff --git a/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20_common.dtsi b/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20_common.dtsi index dd9f0b93be0..33d060d30ce 100644 --- a/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20_common.dtsi +++ b/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20_common.dtsi @@ -1,3 +1,10 @@ +/* SPDX-License-Identifier: Apache-2.0 */ + +/* Test requires loopbacks: + * P1.13 - P1.14 + * P1.23 - P1.24 + */ + &pinctrl { uart21_default: uart21_default { group1 { diff --git a/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay index 5210e41ef55..03676317e38 100644 --- a/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay +++ b/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -1 +1,3 @@ +/* SPDX-License-Identifier: Apache-2.0 */ + #include "nrf54lm20dk_nrf54lm20_common.dtsi" diff --git a/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20a_cpuflpr.overlay b/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20a_cpuflpr.overlay index 5210e41ef55..03676317e38 100644 --- a/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20a_cpuflpr.overlay +++ b/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20a_cpuflpr.overlay @@ -1 +1,3 @@ +/* SPDX-License-Identifier: Apache-2.0 */ + #include "nrf54lm20dk_nrf54lm20_common.dtsi" diff --git a/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20a_dual_uart.overlay b/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20a_dual_uart.overlay index 0dcede29d92..72e7e968d0b 100644 --- a/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20a_dual_uart.overlay +++ b/tests/drivers/uart/uart_elementary/boards/nrf54lm20dk_nrf54lm20a_dual_uart.overlay @@ -1,3 +1,10 @@ +/* SPDX-License-Identifier: Apache-2.0 */ + +/* Test requires loopbacks: + * P1.13 - P1.14 + * P1.23 - P1.24 + */ + &pinctrl { uart21_default: uart21_default { group1 { diff --git a/tests/drivers/uart/uart_elementary/testcase.yaml b/tests/drivers/uart/uart_elementary/testcase.yaml index 83aba78e828..de3d18a50ee 100644 --- a/tests/drivers/uart/uart_elementary/testcase.yaml +++ b/tests/drivers/uart/uart_elementary/testcase.yaml @@ -15,9 +15,7 @@ tests: - nrf54l09pdk/nrf54l09/cpuflpr - nrf54l15dk/nrf54l15/cpuapp - nrf54l15dk/nrf54l15/cpuflpr - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - - nrf54l20pdk/nrf54l20/cpuflpr - nrf54lm20dk/nrf54lm20a/cpuflpr - nrf5340dk/nrf5340/cpuapp - ophelia4ev/nrf54l15/cpuapp @@ -57,59 +55,45 @@ tests: drivers.uart.uart_elementary_dual_nrf54l: filter: CONFIG_SERIAL_SUPPORT_INTERRUPT platform_allow: + - nrf54l09pdk/nrf54l09/cpuapp + - nrf54l09pdk/nrf54l09/cpuflpr - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp + - nrf54l15dk/nrf54l15/cpuflpr - nrf54lm20dk/nrf54lm20a/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuflpr - ophelia4ev/nrf54l15/cpuapp - extra_args: DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuapp_dual_uart.overlay" + - ophelia4ev/nrf54l15/cpuflpr + extra_args: + - platform:nrf54l09pdk/nrf54l09/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54l09pdk_nrf54l09_dual_uart.overlay" + - platform:nrf54l09pdk/nrf54l09/cpuflpr:"DTC_OVERLAY_FILE=boards/nrf54l09pdk_nrf54l09_dual_uart.overlay" + - platform:nrf54l15dk/nrf54l15/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54l15dk_nrf54l15_dual_uart.overlay" + - platform:nrf54l15dk/nrf54l15/cpuflpr:"DTC_OVERLAY_FILE=boards/nrf54l15dk_nrf54l15_dual_uart.overlay" + - platform:nrf54lm20dk/nrf54lm20a/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54lm20dk_nrf54lm20a_dual_uart.overlay" + - platform:nrf54lm20dk/nrf54lm20a/cpuflpr:"DTC_OVERLAY_FILE=boards/nrf54lm20dk_nrf54lm20a_dual_uart.overlay" + - platform:ophelia4ev/nrf54l15/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54l15dk_nrf54l15_dual_uart.overlay" + - platform:ophelia4ev/nrf54l15/cpuflpr:"DTC_OVERLAY_FILE=boards/nrf54l15dk_nrf54l15_dual_uart.overlay" extra_configs: - CONFIG_DUAL_UART_TEST=y drivers.uart.uart_elementary_dual_setup_mismatch_nrf54l: filter: CONFIG_SERIAL_SUPPORT_INTERRUPT platform_allow: + - nrf54l09pdk/nrf54l09/cpuapp + - nrf54l09pdk/nrf54l09/cpuflpr - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - - nrf54lm20dk/nrf54lm20a/cpuapp - - ophelia4ev/nrf54l15/cpuapp - extra_args: DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuapp_dual_uart.overlay" - extra_configs: - - CONFIG_DUAL_UART_TEST=y - - CONFIG_SETUP_MISMATCH_TEST=y - drivers.uart.uart_elementary_dual_nrf54l_cpuflpr: - filter: CONFIG_SERIAL_SUPPORT_INTERRUPT - platform_allow: - - nrf54l15dk/nrf54l15/cpuflpr - - nrf54l20pdk/nrf54l20/cpuflpr - - nrf54lm20dk/nrf54lm20a/cpuflpr - - ophelia4ev/nrf54l15/cpuflpr - extra_args: DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuflpr_dual_uart.overlay" - extra_configs: - - CONFIG_DUAL_UART_TEST=y - drivers.uart.uart_elementary_dual_setup_mismatch_nrf54l_cpuflpr: - filter: CONFIG_SERIAL_SUPPORT_INTERRUPT - platform_allow: - nrf54l15dk/nrf54l15/cpuflpr - - nrf54l20pdk/nrf54l20/cpuflpr + - nrf54lm20dk/nrf54lm20a/cpuapp - nrf54lm20dk/nrf54lm20a/cpuflpr + - ophelia4ev/nrf54l15/cpuapp - ophelia4ev/nrf54l15/cpuflpr - extra_args: DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuflpr_dual_uart.overlay" - extra_configs: - - CONFIG_DUAL_UART_TEST=y - - CONFIG_SETUP_MISMATCH_TEST=y - drivers.uart.uart_elementary_dual_nrf54l09: - filter: CONFIG_SERIAL_SUPPORT_INTERRUPT - platform_allow: - - nrf54l09pdk/nrf54l09/cpuapp - - nrf54l09pdk/nrf54l09/cpuflpr - extra_args: DTC_OVERLAY_FILE="boards/nrf54l09pdk_nrf54l09_dual_uart.overlay" - extra_configs: - - CONFIG_DUAL_UART_TEST=y - drivers.uart.uart_elementary_dual_setup_mismatch_nrf54l09: - filter: CONFIG_SERIAL_SUPPORT_INTERRUPT - platform_allow: - - nrf54l09pdk/nrf54l09/cpuapp - - nrf54l09pdk/nrf54l09/cpuflpr - extra_args: DTC_OVERLAY_FILE="boards/nrf54l09pdk_nrf54l09_dual_uart.overlay" + extra_args: + - platform:nrf54l09pdk/nrf54l09/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54l09pdk_nrf54l09_dual_uart.overlay" + - platform:nrf54l09pdk/nrf54l09/cpuflpr:"DTC_OVERLAY_FILE=boards/nrf54l09pdk_nrf54l09_dual_uart.overlay" + - platform:nrf54l15dk/nrf54l15/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54l15dk_nrf54l15_dual_uart.overlay" + - platform:nrf54l15dk/nrf54l15/cpuflpr:"DTC_OVERLAY_FILE=boards/nrf54l15dk_nrf54l15_dual_uart.overlay" + - platform:nrf54lm20dk/nrf54lm20a/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54lm20dk_nrf54lm20a_dual_uart.overlay" + - platform:nrf54lm20dk/nrf54lm20a/cpuflpr:"DTC_OVERLAY_FILE=boards/nrf54lm20dk_nrf54lm20a_dual_uart.overlay" + - platform:ophelia4ev/nrf54l15/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54l15dk_nrf54l15_dual_uart.overlay" + - platform:ophelia4ev/nrf54l15/cpuflpr:"DTC_OVERLAY_FILE=boards/nrf54l15dk_nrf54l15_dual_uart.overlay" extra_configs: - CONFIG_DUAL_UART_TEST=y - CONFIG_SETUP_MISMATCH_TEST=y diff --git a/tests/drivers/uart/uart_errors/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/uart/uart_errors/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index babbc740133..00000000000 --- a/tests/drivers/uart/uart_errors/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,54 +0,0 @@ -/* SPDX-License-Identifier: Apache-2.0 */ - -&pinctrl { - uart21_default: uart21_default { - group1 { - psels = , - ; - }; - }; - - uart21_sleep: uart21_sleep { - group1 { - psels = , - ; - low-power-enable; - }; - }; - - uart22_default: uart22_default { - group1 { - psels = - ; - bias-pull-up; - }; - group2 { - psels = ; - }; - }; - - uart22_sleep: uart22_sleep { - group1 { - psels = , - ; - low-power-enable; - }; - }; -}; - -dut: &uart21 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart21_default>; - pinctrl-1 = <&uart21_sleep>; - pinctrl-names = "default", "sleep"; -}; - -dut_aux: &uart22 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart22_default>; - pinctrl-1 = <&uart22_sleep>; - pinctrl-names = "default", "sleep"; - disable-rx; -}; diff --git a/tests/drivers/uart/uart_errors/testcase.yaml b/tests/drivers/uart/uart_errors/testcase.yaml index 522935adcca..c17f071b853 100644 --- a/tests/drivers/uart/uart_errors/testcase.yaml +++ b/tests/drivers/uart/uart_errors/testcase.yaml @@ -6,13 +6,13 @@ common: harness: ztest harness_config: fixture: gpio_loopback + timeout: 30 tests: drivers.uart.uart_errors.int_driven: filter: CONFIG_SERIAL_SUPPORT_INTERRUPT platform_allow: - nrf54h20dk/nrf54h20/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - nrf5340dk/nrf5340/cpuapp - ophelia4ev/nrf54l15/cpuapp @@ -21,7 +21,6 @@ tests: platform_allow: - nrf54h20dk/nrf54h20/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - nrf5340dk/nrf5340/cpuapp - ophelia4ev/nrf54l15/cpuapp diff --git a/tests/drivers/uart/uart_mix_fifo_poll/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/uart/uart_mix_fifo_poll/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index 945b8628e7a..00000000000 --- a/tests/drivers/uart/uart_mix_fifo_poll/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2024 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -&pinctrl { - uart21_default: uart21_default { - group1 { - psels = , - , - , - ; - }; - }; - - uart21_sleep: uart21_sleep { - group1 { - psels = , - , - , - ; - low-power-enable; - }; - }; -}; - -dut: &uart21 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart21_default>; - pinctrl-1 = <&uart21_sleep>; - pinctrl-names = "default", "sleep"; - hw-flow-control; -}; - -counter_dev: &timer00 { - status = "okay"; -}; - -&grtc { - interrupts = <228 2>; -}; diff --git a/tests/drivers/uart/uart_mix_fifo_poll/testcase.yaml b/tests/drivers/uart/uart_mix_fifo_poll/testcase.yaml index a901abda9e4..90ab0bf7b71 100644 --- a/tests/drivers/uart/uart_mix_fifo_poll/testcase.yaml +++ b/tests/drivers/uart/uart_mix_fifo_poll/testcase.yaml @@ -5,19 +5,18 @@ common: depends_on: gpio harness: ztest platform_allow: + - nrf52_bsim - nrf52840dk/nrf52840 - nrf9160dk/nrf9160 - nrf5340dk/nrf5340/cpuapp - nrf5340bsim/nrf5340/cpuapp + - nrf54h20dk/nrf54h20/cpuapp + - nrf54h20dk/nrf54h20/cpurad - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - - nrf54lm20dk/nrf54lm20a/cpuapp - nrf54l15bsim/nrf54l15/cpuapp - - nrf54h20dk/nrf54h20/cpuapp - - nrf54h20dk/nrf54h20/cpurad + - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp - - nrf52_bsim integration_platforms: - nrf52840dk/nrf52840 harness_config: diff --git a/tests/drivers/uart/uart_pm/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/uart/uart_pm/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index 033aab401ac..00000000000 --- a/tests/drivers/uart/uart_pm/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2024 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -&pinctrl { - uart21_default: uart21_default { - group1 { - psels = , - ; - }; - }; - - uart21_sleep: uart21_sleep { - group1 { - psels = , - ; - low-power-enable; - }; - }; -}; - -/ { - chosen { - zephyr,console = &uart20; - }; -}; - -dut: &uart21 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart21_default>; - pinctrl-1 = <&uart21_sleep>; - pinctrl-names = "default", "sleep"; -}; diff --git a/tests/drivers/uart/uart_pm/testcase.yaml b/tests/drivers/uart/uart_pm/testcase.yaml index 9bb36067757..0cab9dc6a44 100644 --- a/tests/drivers/uart/uart_pm/testcase.yaml +++ b/tests/drivers/uart/uart_pm/testcase.yaml @@ -4,15 +4,14 @@ common: - uart harness: ztest platform_allow: + - nrf52_bsim - nrf52840dk/nrf52840 + - nrf5340bsim/nrf5340/cpuapp + - nrf54h20dk/nrf54h20/cpuapp - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - - nrf54lm20dk/nrf54lm20a/cpuapp - nrf54l15bsim/nrf54l15/cpuapp - - nrf54h20dk/nrf54h20/cpuapp - - nrf52_bsim - - nrf5340bsim/nrf5340/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp harness_config: fixture: gpio_loopback @@ -33,14 +32,13 @@ tests: - CONFIG_UART_0_ENHANCED_POLL_OUT=n extra_args: DTC_OVERLAY_FILE="boards/nrf52840dk_nrf52840.overlay;nrf_rx_disable.overlay" platform_exclude: + - nrf52_bsim + - nrf5340bsim/nrf5340/cpuapp + - nrf54h20dk/nrf54h20/cpuapp - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - - nrf54lm20dk/nrf54lm20a/cpuapp - nrf54l15bsim/nrf54l15/cpuapp - - nrf54h20dk/nrf54h20/cpuapp - - nrf52_bsim - - nrf5340bsim/nrf5340/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp drivers.uart.pm.enhanced_poll: @@ -49,11 +47,10 @@ tests: - CONFIG_UART_ASYNC_API=n - CONFIG_UART_0_ENHANCED_POLL_OUT=y platform_exclude: + - nrf54h20dk/nrf54h20/cpuapp - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - - nrf54h20dk/nrf54h20/cpuapp - ophelia4ev/nrf54l15/cpuapp drivers.uart.pm.int_driven: @@ -70,11 +67,10 @@ tests: - CONFIG_UART_ASYNC_API=n - CONFIG_UART_0_ENHANCED_POLL_OUT=y platform_exclude: + - nrf54h20dk/nrf54h20/cpuapp - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - - nrf54h20dk/nrf54h20/cpuapp - ophelia4ev/nrf54l15/cpuapp drivers.uart.pm.async: @@ -91,9 +87,8 @@ tests: - CONFIG_UART_0_ASYNC=y - CONFIG_UART_0_ENHANCED_POLL_OUT=y platform_exclude: + - nrf54h20dk/nrf54h20/cpuapp - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - - nrf54h20dk/nrf54h20/cpuapp - ophelia4ev/nrf54l15/cpuapp diff --git a/tests/drivers/watchdog/wdt_basic_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/watchdog/wdt_basic_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index 8d3dce3b380..00000000000 --- a/tests/drivers/watchdog/wdt_basic_api/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) 2024 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -&wdt31 { - status = "okay"; -}; diff --git a/tests/drivers/watchdog/wdt_basic_api/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay b/tests/drivers/watchdog/wdt_basic_api/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay deleted file mode 100644 index dc1ea1a9ddc..00000000000 --- a/tests/drivers/watchdog/wdt_basic_api/boards/nrf54l20pdk_nrf54l20_cpuflpr.overlay +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) 2025 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -&wdt31 { - status = "okay"; -}; diff --git a/tests/drivers/watchdog/wdt_error_cases/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/watchdog/wdt_error_cases/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay deleted file mode 100644 index 8d3dce3b380..00000000000 --- a/tests/drivers/watchdog/wdt_error_cases/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) 2024 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -&wdt31 { - status = "okay"; -}; diff --git a/tests/drivers/watchdog/wdt_error_cases/testcase.yaml b/tests/drivers/watchdog/wdt_error_cases/testcase.yaml index 951afe9034e..f8da32ca72d 100644 --- a/tests/drivers/watchdog/wdt_error_cases/testcase.yaml +++ b/tests/drivers/watchdog/wdt_error_cases/testcase.yaml @@ -10,11 +10,10 @@ tests: platform_allow: - nrf5340dk/nrf5340/cpuapp - nrf54l09pdk/nrf54l09/cpuapp - - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - - nrf54lm20dk/nrf54lm20a/cpuapp - nrf54h20dk/nrf54h20/cpuapp - nrf54h20dk/nrf54h20/cpurad + - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp - nrf9280pdk/nrf9280/cpuapp - nrf9280pdk/nrf9280/cpurad - ophelia4ev/nrf54l15/cpuapp diff --git a/tests/boards/nrf/hwinfo/reset_cause/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay b/tests/drivers/watchdog/wdt_variables/boards/nrf54lm20dk_nrf54lm20a_cpuflpr.overlay similarity index 100% rename from tests/boards/nrf/hwinfo/reset_cause/boards/nrf54l20pdk_nrf54l20_cpuapp.overlay rename to tests/drivers/watchdog/wdt_variables/boards/nrf54lm20dk_nrf54lm20a_cpuflpr.overlay diff --git a/tests/drivers/watchdog/wdt_variables/testcase.yaml b/tests/drivers/watchdog/wdt_variables/testcase.yaml index d033e4f255e..b504cb5b6b8 100644 --- a/tests/drivers/watchdog/wdt_variables/testcase.yaml +++ b/tests/drivers/watchdog/wdt_variables/testcase.yaml @@ -16,8 +16,8 @@ tests: - nrf54h20dk/nrf54h20/cpuppr - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuflpr - ophelia4ev/nrf54l15/cpuapp integration_platforms: - nrf54l15dk/nrf54l15/cpuapp diff --git a/tests/kernel/timer/timer_behavior/boards/nrf54l20pdk_nrf54l20_cpuapp.conf b/tests/kernel/timer/timer_behavior/boards/nrf54l20pdk_nrf54l20_cpuapp.conf deleted file mode 100644 index 4b13bc80c7f..00000000000 --- a/tests/kernel/timer/timer_behavior/boards/nrf54l20pdk_nrf54l20_cpuapp.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_SYS_CLOCK_TICKS_PER_SEC=10000 diff --git a/tests/subsys/fs/fcb/testcase.yaml b/tests/subsys/fs/fcb/testcase.yaml index bd5067eccce..c915dd56840 100644 --- a/tests/subsys/fs/fcb/testcase.yaml +++ b/tests/subsys/fs/fcb/testcase.yaml @@ -14,7 +14,6 @@ tests: platform_allow: - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - - nrf54l20pdk/nrf54l20/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp - native_sim