Commit graph zephyr/drivers/spi
Author SHA1 Message Date
Raffael Rostagno
a23d5c192b drivers: spi: esp32: Attach sleep retention modules
Attach sleep retention modules to effectively enable TOP PD power down.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-07-21 10:12:17 -04:00
Flavio Ceolin
791069f814 spi: Remove redundant casts in syscall handlers
The syscall handler functions forward parameters with identical casts
that are redundant since the variables already have those types.  Drop
the casts to let the compiler type-check the arguments unobstructed.

Signed-off-by: Flavio Ceolin <flavio@hubble.com>
2026-07-15 19:04:12 -04:00
cyliang tw
765153a292 drivers: spi: fix numaker uspi driver without FIFO buffer
On USCI the shallow buffer is not SPI FIFO buffers RX words.
The pipelined pattern can't work. So revised spi_numaker_usci_txrx.
More, USCI SPI only supports 4–16 bit words, not accepts 24/32.

Signed-off-by: cyliang tw <cyliang@nuvoton.com>
2026-07-14 09:53:31 -04:00
Jérôme Pouiller
68a29687b4 drivers: spi: siwx91x: Fix busy loop
The siwx91x SPI driver required to wait for a very small amouth of time
(100ns to 50µs).

When CONFIG_PM is enabled, the granularity of k_busy_wait() is not
sufficient (~32µs). So, the driver implement a raw busy loop.

This busy loop depends on the frequency of the CPU. This was wrongly
retrieved from CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC.
DT_PROP(DT_NODELABEL(cpu0), clock_frequency) is more accurate.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
2026-07-09 10:11:52 +01:00
Jérôme Pouiller
7b34527b36 drivers: spi: siwx91x: CS released too early
When the SPI hardware block is use to send data (without receiving any
data), the DMA callback is called when the data are transmitted to the SPI
controller, but before the data are actually sent over the wire.

Then, the chip-select signal could be released while the Tx was still in
progress.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
2026-07-09 10:11:52 +01:00
Camille BAUD
a0473c3a2f drivers: bflb: extend shared drivers with BL616CL support
Add support for BL616CL in shared drivers

Signed-off-by: Camille BAUD <mail@massdriver.space>
2026-07-08 10:01:48 +02:00
Collins Culbert
b45cef16db drivers: spi: stm32: add Kconfig help for SPI_STM32_BUSY_FLAG_TIMEOUT
The SPI_STM32_BUSY_FLAG_TIMEOUT option had no help text, leaving
users with no explanation of its purpose when browsing menuconfig. Add
a description that documents how long the driver polls for the BSY flag
to clear after a DMA transfer on STM32F7 and STM32L4 devices affected
by the busy-flag errata.

Assisted-by: OpenAI Codex:gpt-5
Signed-off-by: Collins Culbert <coculbert@icloud.com>
2026-07-07 13:38:52 +02:00
Etienne Carriere
b0b25c35c9 drivers: use <> to include Zephyr headers instead of ""
Use <> operator to include a Zephyr header file instead of "" that
is intended to local header files, not header files relative to
specifically defined search paths.

This change was made running the sed shell command below:
$ sed -i -E 's/#include "zephyr\/([^"]+)\.h"/#include <zephyr\/\1.h>/g' \
    `grep -rsl "#include \"zephyr/" drivers/`

Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
2026-06-30 06:49:18 -04:00
Guillaume Gautier
af71b820a7 drivers: spi: stm32: fix h7 stuck in interrupt
This commit deploys a workaround for errata 2.21.3 from ES0491 (and similar
for other H7 SoCs).
This prevent the SPI interrupt to fire when SPI is disabled, by disabling
the EOT and TXP interrupt before disabling the SPI.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-06-30 06:49:00 -04:00
Marvin Gnad
eb9c31a992 drivers: spi: spi_mcux_ecspi: derive SCLK idle level from CPOL
The NXP ECSPI represents clock polarity with two separate fields:
channelConfig.polarity (SCLK_POL), the active polarity, and
channelConfig.clockInactiveState (SCLK_CTL), the level SCLK idles at
between bursts. spi_mcux_configure() set polarity from the CPOL bit but
left clockInactiveState at the kECSPI_ClockInactiveStateLow default
applied by ECSPI_MasterGetDefaultConfig().

As a result, transfers to CPOL=1 devices (SPI modes 2 and 3) ran with an
inconsistent clock: the active polarity was inverted as requested while
the idle SCLK level stayed low. Drive clockInactiveState from the same
CPOL bit so the idle level matches the configured mode.

Signed-off-by: Marvin Gnad <marvin.gnad@gmail.com>
2026-06-29 11:31:27 +02:00
Marvin Gnad
bd47b8cc8c drivers: spi: spi_mcux_ecspi: use channel 0 for GPIO chip select
When a SPI device uses a GPIO chip select, spi_mcux_configure() initialises
the controller on ECSPI channel 0. However spi_mcux_transfer_next_packet()
started every transfer on transfer.channel = ctx->config->slave.

A device with reg != 0 transfers on an ECSPI channel that was never
configured.

Select the transfer channel the same way spi_mcux_configure() already does:
channel 0 when the chip select is a GPIO, and the slave number only for
native chip selects.

Signed-off-by: Marvin Gnad <marvin.gnad@gmail.com>
2026-06-26 07:46:12 -04:00
Guillaume Gautier
29396ff5fb drivers: spi: stm32: rtio: check buffer length and data size concordance
Check that the buffer length is a multiple of the data size, and return
an error if it's not the case.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-06-24 13:57:19 -04:00
Guillaume Gautier
3a50cbfd03 drivers: spi: stm32: rtio: do not store stack-allocated pointer
Do not store stack-allocated pointers in the SPI data structure.
Set current_tx and current_rx to NULL since they are not used in RTIO
anyway.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-06-24 13:57:19 -04:00
Guillaume Gautier
0632d1917f drivers: spi: stm32: make rtio work in both dma and interrupt modes
Adapt the STM32 SPI driver so that in RTIO, transactions can be done either
in interrupt or in DMA mode, for different instances (until now, once
CONFIG_SPI_STM32_DMA was enabled, all transactions had to be done with
DMA).
Also use the asynchronous DMA callback for RTIO since it shares a lot of
code.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-06-24 13:57:19 -04:00
Guillaume Gautier
e0ef139751 drivers: spi: stm32: factorize transceive functions
The transceive and transceive_dma functions had some similar code.
Factorize them to reduce code duplication. transceive_dma is now called
from the transceive function, and only the latter is called from the
.transceive and .transceive_async API functions.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-06-24 13:57:19 -04:00
Guillaume Gautier
8e5edbf619 drivers: spi: stm32: fix slave mode for non-st,stm32h7-spi compatibles
This commit fixes issues that could arise notably when only the slave was
sending data (and the master was only receiving). By keeping track of bytes
transmitted in both directions (the context may not keep track of a
direction if the associated buffer is NULL or the length is 0), we prevent
the master side to abort the transmission prematurely.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-06-24 13:57:19 -04:00
Guillaume Gautier
a963a50054 drivers: spi: stm32: fix slave mode for st,stm32h7-spi compatible
Fixes the slave mode for st,stm32h7-spi compatibles by setting the
transfer size also for the slave device, and also waiting for SPI to not be
busy before calling the "complete" function (or else the transaction might
end too early in case where only the slave sends data).

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-06-24 13:57:19 -04:00
Ričards Poriņš
aa9604b2f4 drivers: spi: sam: add 9-16 bit word size support
The SAM SPI peripheral natively supports 8-16 bit word sizes via
the SPI_CSR.BITS field, but the driver rejects anything other than
8-bit with -ENOTSUP.

Remove the 8-bit-only restriction and map word_size to the BITS
field. Add 16-bit-wide fast-path transfer functions (TX, RX, TXRX)
for word sizes > 8, where each word occupies a uint16_t in the
buffer. The spi_sam_fast_{tx,rx,txrx} wrappers added in the
previous commit now dispatch to the 8-bit or 16-bit variant based
on the configured word size.

This enables MIPI DBI Type C (3-wire 9-bit SPI) displays and other
peripherals that require non-8-bit word sizes on SAM MCUs.

Tested on SAM4S with a 9-bit SPI display (ILI9806 via MIPI DBI).

Signed-off-by: Ričards Poriņš <ricards.porins@gmail.com>
2026-06-23 11:28:12 +02:00
Ričards Poriņš
4878231789 drivers: spi: sam: factor fast paths through a wrapper
Rename spi_sam_fast_{tx,rx,txrx} to *_8 to make the 8-bit nature
explicit, and introduce thin wrappers with the original names that
take a device handle and delegate to the _8 variant. Update the
callers in spi_sam_{tx,rx,txrx} to pass the device handle through.

This is a pure refactor with no functional change; it sets up the
follow-up patch that adds 9-16 bit word size support by dispatching
to a 16-bit variant inside the wrapper.

Signed-off-by: Ričards Poriņš <ricards.porins@gmail.com>
2026-06-23 11:28:12 +02:00
Fin Maaß
9014541b98 drivers: spi: intel: pw: select PCIE
select PCIE if the controller is
on a pcie bus.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-06-19 22:39:12 +02:00
Bjarki Arge Andreasen
500d54f357 drivers: spi: nrf_spim_common: init sck pin using nrf gpio
The SPI SCK pin needs to be initialized to match the current SPI
transfer CPOL setting. The SPIM peripheral is enabled after CS is
toggled, thus all pins need to be configured to drive correct
initial state using gpio. Since the SCK pin is defined in pinctrl
rather than as a gpio pin, nrfy is used to get the pin number and
set the pin rather than gpio peripheral driver.

Without this addition, CPOL=1 may cause an incorrect clock to be
registered at the start of the transfer, shifting the data 1 bit.

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
2026-06-19 11:10:21 +02:00
Sylvio Alves
43d7de48c1 drivers: spi: esp32: add spi target mode support
Add target (peripheral) mode to the Espressif SPI driver. The scattered
transfer buffers are coalesced into one FIFO transfer and the received
data is scattered back on completion. Socs with the integrated SPI-DMA
use DMA, as their CPU/FIFO slave path drops the final received byte.

Also fix the controller chip-select hold to track the remaining length
so trailing zero-length buffers no longer keep the line asserted.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-06-18 08:56:35 -04:00
Pete Johanson
eeef2b9042 drivers: spi: max32: Initialize driver state early
To avoid MXC_SPI_Shutdown having an invalid state (for DMA channels,
specifically), add a call to initialize the internal state of the SPI
driver before calling shutdown. This avoids a bug with DMA channels being
released that shouldn't be by shutdown.

Signed-off-by: Pete Johanson <pete.johanson@analog.com>
2026-06-18 08:56:08 -04:00
Pete Johanson
7cd6fc4880 drivers: spi: max32: Refactor check for assigned DMA channels
Pull the code for checking if a given peripheral has DMA channels assigned
into a shared inline function.

Signed-off-by: Pete Johanson <pete.johanson@analog.com>
2026-06-18 08:56:08 -04:00
Pete Johanson
d43516e3b9 drivers: spi: max32: Use dedicated dummy buffers for TX/RX
To avoid accidentally sending bogus data placed into the dummy buffer
during an RX, use dedicated two-byte buffers for TX/RX each.

Signed-off-by: Pete Johanson <pete.johanson@analog.com>
2026-06-18 08:56:08 -04:00
Pete Johanson
6094fe5981 drivers: spi: max32: Add target support
Add support for target mode for the MAX32 SPI peripheral, including testing
support for the APARD32690 board.

Signed-off-by: Pete Johanson <pete.johanson@analog.com>
2026-06-18 08:56:08 -04:00
Pete Johanson
3e7d763b7a drivers: spi: Properly support half duplex mode on MAX32 with interrupts
Fixes for properly setting half duplex mode for the SPI peripheral, and
handle fifo/interrupts properly for that mode of operation.

Signed-off-by: Pete Johanson <pete.johanson@analog.com>
2026-06-18 08:56:08 -04:00
minyuan xue
b0382397dc drivers: spi: add ameba spi driver support
Add realtek ameba spi driver.

Signed-off-by: minyuan xue <minyuan_xue@realsil.com.cn>
2026-06-18 08:55:59 -04:00
Fin Maaß
120784014c drivers: select CACHE_MANAGEMENT if DCACHE
CACHE_MANAGEMENT depends on DCACHE,
therfore we should also only select it, if it is
enabled and not just if the cache exists, as the
user could disable DCACHE and then there
would be a problem.
DCACHE btw depends on CPU_HAS_DCACHE
and is enabled by default.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-06-18 05:35:01 -04:00
Bjarki Arge Andreasen
52ba8bb82a Revert "drivers: spi: nrfx_spim: chunk transfers exceeding EasyDMA MAXCNT"
This reverts commit 8c2a903829.

Chunk transfers are now handled in spi_nrfx_spim_common.c to support
both DMM, RAM and EasyDMA limits for spim and spim_rtio drivers.

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
2026-06-17 16:35:23 -04:00
Bjarki Arge Andreasen
29719b830b drivers: spi: nrfx_spim: split large buffers in common code
The nrfx_spim drivers need to handle transfers larger than the
internal buffers and DMA capabilities by splitting them into chunks.

Additionally, DMM and RAM buffers are mutually exclusive.

Update the common code to split the transfer internally, and update
the event callback to include the result of the transfer, since the
transfer can now fail. Update the spim and spim_rtio drivers to use
the new callback. Add new kconfig for DMM chunk size and update both
common code and kconfig to make it clear DMM and RAM buf are mutually
exclusive.

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
2026-06-17 16:35:23 -04:00
Bjarki Arge Andreasen
875beefedc drivers: spi: nrfx_spim_common: Build assert DMM region defined
Add build assert which validates that memory region has been defined
for SPIM instance if HAS_NORDIC_DMM is enabled.

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
2026-06-17 16:35:23 -04:00
Bjarki Arge Andreasen
62f200f4b8 drivers: spi: nrfx_spim_common: remove RAM_BUF linker placement
Since nordic DMM has been introduced, the SPIM RAM buffer is no
longer used in case DMM is enabled. Before DMM the SPIM RAM buffer
was manually placed in the DMM linker section, now the driver
allocates a buffer from the DMM linker section dynamically instead.

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
2026-06-17 16:35:23 -04:00
Anas Nashif
ea1fbf3588 driver: fix various typos
Fixed various typos under drivers/

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2026-06-17 10:12:27 -04:00
Michael Zimmermann
8a7ae0bed1 modules: hal_silabs: rename gecko kconfigs
- Kconfigs in modules/ should not define configs with an SOC_ prefix.
  Furthermore, these options are SDK specific, not SoC specific.
- The simplicity_sdk configs do the same.

Signed-off-by: Michael Zimmermann <michael.zimmermann@sevenlab.de>
2026-06-17 08:05:45 +02:00
Guillaume Gautier
d4972dc2ed drivers: spi: stm32: fix for stm32h7 in rtio
For STM32H7, disable IRQ in RTIO when tranfer is completed to prevent
spurious IRQ to stall the system.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-06-16 17:45:15 +02:00
Guillaume Gautier
f35c46b7be drivers: spi: stm32: remove fifo-enable
For st,stm32h7-spi compatible, always use the TSIZE register and the FIFO
for polling and interrupt mode. This increases performance compared to not
using it, and it reduces code complexity. This removes the need for the
fifo-enable property.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-06-16 17:45:15 +02:00
Guillaume Gautier
1628f86398 drivers: spi: stm32: simplify the use of fifo for st,stm32h7-spi compat
For st,stm32h7-spi compatibles, when fifo-enable property is set, the
driver was setting the TSIZE register with the size of each buffer in the
transaction, leading to several disable/enable of the SPI instance.
Now, it sets the complete size of the transaction without intempestive
disabling of the SPI.

To add flexibility, the FIFO threshold is now configurable from a dts
property.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-06-16 17:45:15 +02:00
Guillaume Gautier
7e23b63959 drivers: spi: stm32: rework dma transfer
This commit simplifies the flow of the STM32 SPI DMA transfer.

For the "st,stm32h7-spi" compatible, do not set the TSIZE register for a
DMA transfer (to define the size of the transfer). This setting was
leading to several disable/enable of the SPI instance in case multiple
buffers were used in the transaction, and it didn't bring noticeable
performance benefit. At the same time, do not use the SPI FIFO because
it's a hurdle to use without the TSIZE.

Rework the flow of initial operation to better match the procedure
described in the Reference Manuals.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-06-16 17:45:15 +02:00
Guillaume Gautier
ab34f00777 drivers: spi: stm32: wait for both dma tx and rx done
When waiting for DMA transfer done, wait for both TX and RX, instead of
only one of them.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-06-16 17:45:15 +02:00
Aksel Skauge Mellbye
110985ae58 drivers: spi: silabs: Disable EUSART transceiver when idle
Disable the EUSART transmitter and receiver immediately upon
completion of a transfer, rather than deferring it to PM Device
Runtime suspend.

The transmitter and receiver are always re-enabled as part of
configuring a new transfer.

This fixes an issue when CONFIG_PM=y where the driver would
not block deep sleep when it was idle, but would wake up with
an inconsistent internal shift register state. Safely shut down
the transmitter and receiver whenever they are not used to
avoid this scenario.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2026-06-11 15:03:51 -04:00
Eliott Speyser
2747b03a8b drivers: spi: stm32: add log level config
When CONFIG_LOG_DEFAULT_LEVEL is set to 4 and SPI driver is used,
it will log debug messages idependently of CONFIG_SPI_LOG_LEVEL.
This allows disabling debug logs with the SPI log level config.

Signed-off-by: Eliott Speyser <eliott.speyser@st.com>
2026-06-09 20:01:47 +02:00
Bjarki Arge Andreasen
b8ead74673 drivers: spi: spi_nrfx_spim: patch to support nothread
The spi_nrfx_spim device driver is used in nothread bootloaders, the
wake implementation waits on a k_sem, patch to poll a volatile bool
variable if CONFIG_MULTITHREADING=n

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
2026-06-09 19:58:47 +02:00
Chaitanya Tata
8c2a903829 drivers: spi: nrfx_spim: chunk transfers exceeding EasyDMA MAXCNT
The reworked SPIM driver passes the whole continuous chunk returned by
spi_context_max_continuous_chunk() straight to the common transfer
layer, which rejects anything larger than the controller MAXCNT with
-EINVAL. On SoCs with a small EasyDMA MAXCNT (e.g. nRF91 SPIM with 13
bits, max 8191 bytes) a transfer of 8192 bytes or more fails outright.

The old monolithic driver used to cap the chunk to the MAXCNT limit and
let the event handler walk the rest of the buffer. That behaviour was
lost in the rework, so any caller pushing a buffer larger than MAXCNT
now breaks. One example is the nRF70 firmware patch download, which
copies the patch in 8192 byte chunks and ends up corrupting RPU memory,
leading to a boot signature mismatch.

Restore the cap in transfer_start() so an oversized chunk is split
across multiple EasyDMA transfers, with the remainder handled by the
next call from the event handler once the current chunk completes.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
Assisted-by: Cursor:Opus4.8
2026-06-09 11:56:44 +02:00
Ofir Shemesh
ee1034e60d spi: dw: promote fifo_depth to uint16_t to support 256-entry FIFOs
The DTS binding documents fifo-depth range as 2-256, but the
struct field is uint8_t which silently overflows 256 to 0.
Widen to uint16_t so the full hardware range is representable.

Signed-off-by: Ofir Shemesh <ofirshemesh777@gmail.com>
2026-06-07 19:17:52 +02:00
Sylvio Alves
5e5d574dfa drivers: spi: esp32: add axi gdma slot and cache maintenance
On SoCs with AXI GDMA, derive the DMA slot from the trigger
peripheral ID base. Flush the tx buffer and invalidate the rx
buffer around the transfer so CPU and DMA see coherent data.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-06-03 18:27:15 -04:00
Jérôme Pouiller
233545d1e6 drivers: spi: siwx91x: Simplify DMA configuration
SPI_SILABS_SIWX91X_GSPI_DMA and SPI_SILABS_SIWX91X_GSPI_DMA_MAX_BLOCKS are
redundant. We can achieve the same by checking if
SPI_SILABS_SIWX91X_GSPI_DMA_MAX_BLOCKS > 0.

Then, rather than pulling the DMA if one device use it, automatically use
the DMA it exist (the user can still disable it by settings DMA_MAX_BLOCKS
== 0).

Thanks to that change, we can remove allthe #ifdef in the SPI driver.
A test in spi_siwx91x_is_dma_enabled_instance() is sufficient to make the
DMA relative functions orphans.

Then, we can enable the dma instances in the board DTS, so the user just
have to set DMA=y to enable DMA in the drivers.

The two errors cases are:
  - DMA=y while referenced DMA instance in the DT is disabled. The user get
    a compilation error
  - DMA=n (or DMA driver is disabled) but the user explicitly set
    DMA_MAX_BLOCKS > 0. The user get an error during runtime.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
2026-06-03 13:05:03 +02:00
Jérôme Pouiller
7b8aadcade drivers: spi: siwx91x: No longer need to split the descriptors
Until now, the SPI driver had to take care about the size of the blocks
sent to the DMA. There were several drawbacks:
  - The SPI driver need to know the DMA internal parameter and the SPI
    driver has configured for a specific DMA hardware block.
  - For large transfer, the user has to allocate a large number of
    descriptor in the SPI driver. The user had to know the DMA block size
    of set the right parameter and the descriptors were duplicated with the
    DMA driver (which store them in the hardware format).

However, our DMA drivers now automatically split the large blocks. So the
SPI driver no longer need to do that.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
2026-06-03 13:05:03 +02:00
Shan Pen
9436dad631 drivers: spi: renesas_ra8: add RTIO submit fallback
Add the default SPI RTIO submit hook for RA8 SPI-B.

Signed-off-by: Shan Pen <bricle031@gmail.com>
2026-06-03 08:26:24 +02:00
Amneesh Singh
9969745801 drivers: update interrupt handling to use "flags" instead of "sense"
Update all drivers to use "flags" instead of "sense" when accessing
interrupt properties from device tree. This aligns with the updated
interrupt controller bindings that now consistently use "flags" as
the cell name for the IRQ type field.

Signed-off-by: Amneesh Singh <amneesh@ti.com>
2026-06-01 12:38:26 -04:00