Commit graph

703 commits

Author SHA1 Message Date
Sai Santhosh Malae
8d3bb53495 drivers: dma: siwx91x: Add chan_filter API for DMA channel assignment
This new API allows the assignment of desired DMA channels for
peripheral transfers, enhancing flexibility and control over DMA
operations.

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
2025-04-03 11:07:12 +02:00
Sai Santhosh Malae
8930aed8d4 drivers: dma: siwx91x: Integrate dma_context features
Refactored the driver code to ensure compatibility with the
dma_context API, improving maintainability and consistency
with other DMA drivers in the Zephyr project.

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
2025-04-03 11:07:12 +02:00
Sai Santhosh Malae
ab57d54bb0 drivers: dma: siwx91x: Fix burst length processing
1. Corrected the burst length processing to be handled in bytes
   for the siwx917 DMA drivers.
2. Removed overlay and configuration files associated with the
   chan_blen_transfer test application. The chan_blen_transfer
   test application attempted to use 8 and 16 byte bursts, which
   are not supported by the siwx91x UDMA.

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
2025-04-03 11:07:12 +02:00
Tom Hughes
d5d12f43f8 drivers: dma_wch: Add __used instead of disabling unused function warning
#84065 replaced diagnostic pragmas with TOOLCHAIN_* macros, but we don't
need to use that here since __used is a cleaner way to indicate that the
function is used and will also prevent it from being optimized away at
link time if LTO is enabled.

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-04-03 06:24:44 +02:00
Raffael Rostagno
fa6a9aef7b drivers: dma: esp32: Update for interrupt allocator
Update driver for unified interrupt allocator (Xtensa/RISCV),
to allow using shared interrupts.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2025-04-02 19:02:27 +02:00
Raffael Rostagno
4b8dc5f3ff drivers: esp32: Update for shared intc
Drivers update to use shared interrupt allocator for Xtensa
and RISCV devices.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2025-04-02 19:02:27 +02:00
Julien Panis
d8dbf5653e drivers: dma: Add support for cc23x0 DMA
Add support for 8-channel configurable DMA controller. The driver
supports the following features:
- memory to peripheral (ch0 to ch5)
- peripheral to memory (ch0 to ch5)
- memory to memory (ch6 and ch7)

Each DMA channel is multiplexed between two or more trigger sources:
- ch0 -> SPI0_TX or UART0_RX
- ch1 -> SPI0_RX or UART0_TX
- ch2 -> LRFD or UART0_TX
- ch3 -> ADC0 or UART0_RX
- ch4 -> AES_A or LRFD
- ch5 -> AES_B or ADC0
- ch6 -> Software Event Channel 0
- ch7 -> Software Event Channel 1

Signed-off-by: Julien Panis <jpanis@baylibre.com>
2025-03-31 08:05:52 +02:00
Zhaoxiang Jin
7ed7cd191a modules: hal_nxp: Move hal_nxp glue layer to zephyr repo
Move hal_nxp glue layer to zephyr repo.
Fix build warnings and failures caused by hal_nxp upgrade.
Update manifest to contain hal_nxp changes.

Signed-off-by: Zhaoxiang Jin <Zhaoxiang.Jin_1@nxp.com>
2025-03-26 16:26:34 +01:00
Mahesh Mahadevan
d4d81637fb drivers: nxp: Fix selection of NOCACHE_MEMORY
Update how NOCACHE_MEMORY Kconfig is selected to
be based on CPU_HAS_DCACHE Kconfig.

Signed-off-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>
2025-03-21 06:31:56 +01:00
Tom Hughes
11d70c61e5 everywhere: Replace diagnostic pragmas with TOOLCHAIN_* macros
The TOOLCHAIN_DISABLE_WARNING/TOOLCHAIN_ENABLE_WARNING macros are easier
to read and compiler agnostic.

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-03-20 21:57:47 +01:00
Daniel Baluta
43a48d4630 drivers: dma: sdma: Update buffer descriptor count
Some SDMA scripts (e.g multi-fifo) updates the buffer descriptor
count field after a transfer is complete.

Re-initialize the buffer descriptor to point to the correct
transfer size for the next transfer.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2025-03-14 17:53:37 +01:00
Daniel Baluta
380ce33b2d dma: nxp: sdma: Enable multi fifo config for PDM
With PDM device NXP HAL uses multi-fifo script. In order
for this script to properly work we need to initialize
multi fifo and SW done configuration.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2025-03-14 17:53:37 +01:00
Tien Nguyen
342d2d7954 drivers: dma: Initial support for RZ/G3S
Add DMA driver support for Renesas RZ/G3S

Signed-off-by: Tien Nguyen <tien.nguyen.zg@renesas.com>
Signed-off-by: Nhut Nguyen <nhut.nguyen.kc@renesas.com>
2025-03-14 09:16:42 +01:00
Marcio Ribeiro
233d6b1bf5 drivers: dma: esp32: remove block size limitation
Removes block size limitation from dma rx and tx configuration

Signed-off-by: Marcio Ribeiro <marcio.ribeiro@espressif.com>
2025-03-12 07:13:06 +01:00
Paul Wedeck
1cfec8c19a drivers: dma_wch: add support for the WCH DMA controller
This patch adds an initial driver for the WCH DMA
controller. All hardware features and most interface
features are implemented.

Signed-off-by: Paul Wedeck <paulwedeck@gmail.com>
2025-03-10 21:32:27 +01:00
Martin Hoff
5efaf9d8c1 drivers: dma: silabs: fix warning when compiling without assert
Fix warning compilation when CONFIG_ASSERT is set to no.

Signed-off-by: Martin Hoff <martin.hoff@silabs.com>
2025-02-28 18:30:19 +01:00
David Leach
3fb8a94a79 dma: dma_mcux_lpc: fix scatter/gather src/dst increment
The logic for setting the src_inc and dst_inc would improperly set
these to zero when gatter/scatter was enabled but the respective
gatther_interval/scatter_interval was zero (which would imply
continuous operation).

Fixes: #85403

Signed-off-by: David Leach <david.leach@nxp.com>
2025-02-20 21:04:17 +01:00
Sai Santhosh Malae
6a0efa1647 drivers: dma: siwx917: dma_rom_buff variable rename
Rename dma_rom_buff to udma_handle

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
2025-02-20 15:10:16 +00:00
Sai Santhosh Malae
1d5b72458f drivers: dma: siwx917: Updated device instantiation
Placed instance numbers at end of names

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
2025-02-20 15:10:16 +00:00
Sai Santhosh Malae
020cae49cb drivers: dma: siwx917: siwx917_channel_config prototype change
Remove chan_info as input argument for siwx917_channel_config()

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
2025-02-20 15:10:16 +00:00
Sai Santhosh Malae
b9f5010a80 drivers: dma: siwx917: peripheral req & burst length function changes
- siwx917_is_peripheral_request -> siwx917_transfer_direction
- siwx917_burst_length -> siwx917_is_burst_length_valid
- siwx917_burst_length return type changed to bool
- Added enum for siwx917_transfer_direction return values

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
2025-02-20 15:10:16 +00:00
Sai Santhosh Malae
41e8df7afe drivers: dma: siwx917: Uniform function naming conventions
-Prefixed Zephyr driver functions with 'siwx917_dma' for consistency
-Added 'siwx917_' prefix to local functions
-Removed inline declaration for param validation functions

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
2025-02-20 15:10:16 +00:00
Sai Santhosh Malae
984b0ea255 drivers: dma: siwx917: Declare config parameters as const
Marked DMA configuration parameters(passed from application) as `const`

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
2025-02-20 15:10:16 +00:00
Sai Santhosh Malae
3071190f20 drivers: dma: siwx917: Apply cosmetic changes
1. Updated multi-line comments
2. Grouping logical blocks by adding vertical spaces

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
2025-02-20 15:10:16 +00:00
Sai Santhosh Malae
b1ec724e14 drivers: dma: siwx917: Use accessors for HW reg access
Replaced direct hardware register access with appropriate accessors

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
2025-02-20 15:10:16 +00:00
Sai Santhosh Malae
a5501575f7 drivers: dma: siwx917: Fix bug in registering application callbacks
Resolved an issue where application callbacks were not being properly
registered in the DMA driver.

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
2025-02-20 15:10:16 +00:00
Tom Hughes
538b525ef1 drivers: dma: Remove unused function
Building with clang warns:

drivers/dma/dma_emul.c:73:20: error: unused function
'dma_emul_xfer_is_error_status' [-Werror,-Wunused-function]
static inline bool dma_emul_xfer_is_error_status(int status)
                   ^

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-02-13 03:27:32 +01:00
Martin Hoff
b8272cc348 drivers: dma: silabs: implementation of chan_filter and chan_release
Implementation of chan_filter and chan_release allows to maintain
synchronization about DMA channel allocation between hal DMA driver and
zephyr DMA driver.

Signed-off-by: Martin Hoff <martin.hoff@silabs.com>
2025-02-12 16:03:39 +01:00
Andriy Gelman
00c3528515 drivers: dma: dma_xmc4xxx: Add cyclic support
Adds cyclic support, where a multi-block transfer is automatically
reloaded to the first block after the multi-block transfer completes.

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
2025-02-12 02:26:20 +01:00
Andriy Gelman
51f3422192 drivers: dma: dma_xmc4xxx: Add multi-block support
Adds dma multi-block support xmc4xxx SoCs.

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
2025-02-12 02:26:20 +01:00
Andriy Gelman
57d77ac03e drivers: dma_xmc4xxx: Fix pending_length in stat when source_data_size > 1
Block_ts stores the number of transfers from DMA source, not the
transferred length in bytes.

Regression from 9c4cd3057d.

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
2025-02-12 02:26:20 +01:00
Andriy Gelman
ccdf23a941 drivers: dma: xmc4xxx: Add support for enabling fifo_mode_control
Adds fifo_mode_control option.

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
2025-02-12 02:26:20 +01:00
Jérôme Pouiller
124c79dd23 drivers: dma: Introduce support for SiWx91x
Implement DMA driver for siwx917 using UDMA peripheral. For now,
Scatter/Gather DMA is not yet supported.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
2025-02-11 22:07:11 +01:00
Guillaume Gautier
12d950b3b1 drivers: dma: configure channel in secure execution mode
Configure the DMA so it works in secure execution mode

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2025-02-11 03:07:12 +01:00
Martin Hoff
6f1debe6e7 driver: dma: silabs: Add silabs_ldma_block_append function
This function allows to not restart DMA engine for driver that gives
new buffer to the DMA engine while a transfer is ongoing.

Signed-off-by: Martin Hoff <martin.hoff@silabs.com>
2025-02-05 15:02:35 +01:00
Martin Hoff
c901551825 driver: dma: silabs: Add signal binding to support P2M and M2P transfer
Improve the silabs ldma driver to support P2M and M2P transfer. It also
adds signal binding to support source request binding in the dts.

Signed-off-by: Martin Hoff <martin.hoff@silabs.com>
2025-02-05 15:02:35 +01:00
Gerson Fernando Budke
427749fe29 drivers: dma: sam0: Fix crc reset
The #83556 fixes an error related to DMA initialization which resets
the DMA CRC part. However, the samd/e5x do not have this module inside
DMA controller which causes a compile error. This fixes the issue
checking if the DMAC_CTRL_CRCENABLE macro is defined.

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
2025-01-29 20:33:56 +01:00
Pieter De Gendt
f1c4760304 drivers: Update APIs to use DEVICE_API macro
Some drivers APIs were not wrapped using the DEVICE_API macro.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2025-01-24 01:15:19 +01:00
Fabrice DJIATSA
7b379f47fa drivers: dma: add linked list in dmau5 driver
- Init linked list node and structure
- configure source and destination address
- Setting gpdma request mode
- Configure linked list node and structure for
continous transfer, enable half transfert irq.

Signed-off-by: Fabrice DJIATSA <fabrice.djiatsa-ext@st.com>
co-authored-by: Lubos Koudelka <lubos.koudelka@st.com>
2025-01-21 19:29:03 +01:00
Fabrice DJIATSA
ed92eeb3c8 drivers: dma: cyclic dma handling
keeping the stream busy when cyclic DMA is used.

Signed-off-by: Fabrice DJIATSA <fabrice.djiatsa-ext@st.com>
2025-01-21 19:29:03 +01:00
Andriy Gelman
f5bf7df50c drivers: dma_xmc4xxx: Support calling dma_stop() after dma_config()
In the dma loop_transfer test (test_loop_repeated_start_stop()), the
order of calls is dma_config() -> dma_stop() -> dma_start().  This
currently does not work on xmc4xxx because after calling dma_stop(), the
dma would be in a suspended state. Fix this by leaving the suspended state
before exiting dma_stop().

Also don't clear the context (dma_channel->dlr_line and dma_channel->cb)
that was setup by dma_config().

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
2025-01-15 01:36:59 +01:00
Andriy Gelman
9c4cd3057d drivers: dma_xmc4xxx: Use DAR instead of CTL.BLOCK_TS to set pending_length
When quering the DMA status we need to return the number of pending bytes
left in the transfer. Currently this is inferred by calling
XMC_DMA_CH_GetTransferredData(). However, this function actually returns
the number of items read from the source peripheral (via CTL.BLOCK_TS).
It doesn't guarantee that the last item was fully transferred to the
destination.

When using the ADDR_ADJ_INCREMENT/DECREMENT options it is better to use
DAR register to infer the number of transferred bytes. This points to the
memory address where the next data will be written. It only increments
after the ongoing transfer from source to destination is completed.

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
2025-01-15 01:36:59 +01:00
Lucien Zhao
605ade6bc4 drivers: dma: dma_mcux_edma: support EDMA IP in edma drivers
Multi channels share one IRQ, add channels-shared-irq-mask on RT1180
attribution to describe the channel shared status, and add code
implementation to register the handler function for each channel
in different interrupts.

Fix legacy building warning issue

Signed-off-by: Lucien Zhao <lucien.zhao@nxp.com>
2025-01-13 10:08:36 +01:00
Nazar Palamar
01252ad877 drivers: dma: initial implementation CAT1 DMA driver
Initial implementation of DMA driver for CAT1 device

Signed-off-by: Nazar Palamar <nazar.palamar@infineon.com>
2025-01-10 14:48:24 +01:00
Dong Wang
6ab5c00336 drivers: sedi: Update device definition macros to use DT_INST variants
Updated various device definition macros to use the DT_INST variants for
consistency and improved readability.

Signed-off-by: Dong Wang <dong.d.wang@intel.com>
2025-01-08 19:10:52 +01:00
Tristen Pierson
f634401f5c drivers: dma: sam0: Reset DMA during initialization.
Fixes issue #83555, where UART transmit operations fail in Zephyr
sysbuild projects using MCUboot and the asynchronous UART API
(`CONFIG_UART_ASYNC_API=y`) on SAM0 devices such as the
ATSAMC21G18A.

The issue occurs because the DMA controller is not reset during
initialization, causing `BASEADDR` and `WRBADDR` registers to retain
MCUboot's configuration. This prevents the application from reconfiguring
these registers to its own RAM addresses, leading to UART transmit
timeouts and triggering the `UART_TX_ABORTED` callback.

This patch resolves the issue by resetting the DMA controller during
initialization in `dma_sam0.c`. The following actions are performed:
- Disables the DMA and CRC modules.
- Applies a software reset to ensure a clean state for reconfiguration.

With this change, UART transmit operations work as expected, improving
stability and compatibility between MCUboot and the application.

Signed-off-by: Tristen Pierson <tpierson@electrohire.com>
2025-01-08 01:29:29 +01:00
Andrew Featherstone
b6b38e6808 drivers: dma: rpi_pico: Refactor DMA files for Raspberry Pi SoCs
Avoid referring to Pico 2 (the name of a board). In this context,
RPI_PICO is used to refer to the (Zephyr) `SOC_FAMILY` rather than the
Pico 1 board. This clarifies common numerical values between the RP2040
and RP2350 SoC series, and enables existing DTS files to be used with
RP2350-based boards with fewer changes.

Remove the use of Zehpyr's `CONFIG_` macros from the device tree files,
and replace them with `SOC_SERIES`-specific files. Update the driver
implementation to conditionally include the correct file. Update
documentation and samples to match.

Signed-off-by: Andrew Featherstone <andrew.featherstone@gmail.com>
2024-12-23 23:57:57 +01:00
Daniel Baluta
e94c86f395 drivers: dma: Add initial support for NXP SDMA
This adds initial support for NXP SDMA controller. We make use
of NXP HAL to configure the IP.

SDMA uses BD (buffer descriptors) to describe a transfer. We create
a cyclic list of descriptors and trigger them manually at start and
later when data is available.

This is tested using Sound Open Firmware app on top of Zephyr.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2024-12-23 17:11:09 +01:00
Sara Touqan
bc6c07b432 drivers: Add shared IRQ support for STM32U0 series in DMA driver.
This commit Modifies the DMA STM32 Kconfig to enable shared IRQ
support for the STM32U0 series.
This change ensures DMA channels with shared IRQs are properly
configured for stm32u0 devices.

Signed-off-by: Mohammad Badawi <zephyr@exalt.ps>
Signed-off-by: Sara Touqan <zephyr@exalt.ps>
2024-12-19 15:19:56 +01:00
Derek Snell
b3d8766126 drivers: dma: dma_mcux_edma: fix previous TCD index
fixes issue calculating index of previous TCD in circular list.

Signed-off-by: Derek Snell <derek.snell@nxp.com>
2024-12-17 20:54:58 +01:00