Commit graph

29,119 commits

Author SHA1 Message Date
Sylvio Alves
1059586c4a drivers: cache: esp32: add stubs for whole-cache ops
The cache driver API requires cache_data_flush_all(),
cache_data_invd_all() and cache_data_flush_and_invd_all() to be
defined whenever CONFIG_DCACHE is selected. Without these symbols,
any image that pulls in the generic cache API fails to link on
ESP32 SoCs with the cache driver enabled, for example:

  tests/kernel/cache on esp32s2_devkitc
  tests/kernel/cache on esp32s3_devkitc/procpu

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-05-24 18:36:12 -07:00
Yuzhuo Liu
ef185cbe6a drivers: gpio: fix bee gpio direction detection
The GPIO_DDR register uses 1 for output mode and 0 for input mode.
The previous implementation incorrectly swapped these values, causing
gpio_pin_is_input() and gpio_pin_is_output() to return wrong results.

Also mask out unconnected pins using connect_pin to ensure
disconnected GPIOs are not reported as either input or output.

Fixes gpio_get_direction test failures on RTL87x2G and RTL8752H series.

Signed-off-by: Yuzhuo Liu <yuzhuo_liu@realsil.com.cn>
2026-05-24 18:35:47 -07:00
Seppo Takalo
78cf53f4a3 modem: cellular: Delay redialing when PPP dies
When network is temporary lost, we might receive
PPP_DEAD event just before parsing "+CEREG: ..."

Therefore immediately redialing might lead to out-of-sync
states.

Delay the redial script by the PERIODIC_SCRIPT_TIMEOUT
as any other script failures do.

Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no>
2026-05-23 17:15:46 -07:00
Way Young
8aa84961d3 drivers: usb_c: tcpc: fix non-SOP* check in transmit_data
In tcpci_tcpm_transmit_data() the gate that decides whether the packet
is a non-SOP* transmission (Hard Reset, Cable Reset, BIST) was checking
msg->header.message_type, the 5-bit PD header message type ID. That
field overlaps the SOP* range: any standard SOP message whose header
message_type is >= NUM_SOP_STAR_TYPES (e.g. PS_RDY = 6, PR_Swap = 10,
DR_Swap = 11, ...) was misclassified as non-SOP* and written to the
TRANSMIT register without retries, undermining PD negotiation
reliability against CC-line noise.

The TRANSMIT register's type field is enum pd_packet_type, which is
carried in msg->type. Use msg->type for both the gate and the
TCPC_REG_TRANSMIT_SET_WITHOUT_RETRY() argument, matching the retry
path further down the function which already uses msg->type.

Signed-off-by: Way Young <wayyoung@gmail.com>
2026-05-23 17:15:21 -07:00
Ryan McClelland
935bfe705c drivers: i3c: cdns: calculate transfer timeout from message length
Replace the fixed 1-second transfer timeout with a value derived from
the actual number of SCL cycles required for the transfer, plus a
configurable margin (I3C_CADENCE_TRANSFER_TIMEOUT_MARGIN_US, default
10000 us).

Three helpers cover each transfer type:
- cdns_i3c_calc_timeout_i3c: SDR (broadcast header + 9 bits/byte) and
  HDR-DDR (ENTHDR0 preamble + DDR word count at 8 SCL cycles/word,
  including command header and CRC words)
- cdns_i3c_calc_timeout_i2c: 7-bit (9 bits) or 10-bit (18 bits)
  address frame + 9 bits per data byte, using the I2C SCL frequency
- cdns_i3c_calc_timeout_ccc: broadcast addr + CCC command byte +
  optional broadcast data + per-target address and data

Signed-off-by: Ryan McClelland <rymcclel@gmail.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2026-05-23 17:14:56 -07:00
Maksim Salau
cce752f808 sensor: Add more device checks to shell-battery
The battery alias is verified to be a sensor device before use.
Also the commit fixes incorrect use of `argv[1]` instead of `dev->name`.

Signed-off-by: Maksim Salau <maksim.salau@gmail.com>
2026-05-23 17:14:36 -07:00
Stefan Giroux
63325cb465 drivers: uart: sam0: Fix interrupt handling in uart_sam0.c
allow txc_cache to be set for non-SERCOM_REV500 peripherals

see https://github.com/zephyrproject-rtos/zephyr/issues/87210 for more details

Signed-off-by: Stefan Giroux <stefan.g@feniex.com>
2026-05-23 17:12:25 -07:00
Riadh Ghaddab
8736e2121a flash: nrf_mram: limit Ready register check only to nrf54h series
Ready registers are defined for the nrf54h series but not necesssary for
other soc families.
Limit the Ready register check only to this family of socs.

Signed-off-by: Riadh Ghaddab <riadh.ghaddab@nordicsemi.no>
2026-05-22 21:57:04 +02:00
Aaron Kim
0d4f781476 drivers: sensor: tad2144: Add tad2144 support
Use official TDK Invensense driver for tad2144 sensor in tdk_hal module.

Signed-off-by: Aaron Kim <aaron.kim@tdk.com>
2026-05-22 21:55:54 +02:00
Jimmy Zheng
612ac730c0 drivers: flash: unify andestech,qspi-nor compatible string
Remove the 'andestech,qspi-nor-xip' compatible string and unify both
flash_andes_qspi.c and flash_andes_qspi_xip.c flash drivers use
'andestech,qspi-nor' compatible string.

The driver selection is now handled via Kconfig logic.
CONFIG_FLASH_ANDES_QSPI_XIP is strickly depends on XIP is enabled and
the 'zephyr,flash' chosen node is compatible with 'andestech,qspi-nor'.

Since these two driver variants cannot coexist, the application is
responsible for enabling the appropriate driver Kconfig.

Signed-off-by: Jimmy Zheng <jimmyzhe@andestech.com>
2026-05-22 18:27:15 +02:00
cyliang tw
28a3113d97 drivers: spi: support Nuvoton numaker usci-spi
Add Nuvoton numaker series usci-spi controller.

Signed-off-by: cyliang tw <cyliang@nuvoton.com>
2026-05-22 18:26:30 +02:00
Carlo Caione
f5240318d4 drivers: buzzer: add PWM backend for passive piezos
Add the pwm-buzzer compatible and the corresponding driver in
drivers/buzzer/buzzer_pwm.c. The PWM channel period sets the audio
frequency and the duty cycle sets the perceived volume (50% is
loudest for piezos; the driver maps the linear 0..100% volume
percentage to a triangular 0..50% duty curve so 100% volume gives
maximum loudness).

Signed-off-by: Carlo Caione <ccaione@baylibre.com>
2026-05-22 18:25:17 +02:00
Carlo Caione
67dfcf17a0 drivers: buzzer: add GPIO backend for active buzzers
Add the gpio-buzzer compatible and the corresponding driver in
drivers/buzzer/buzzer_gpio.c. Active buzzers contain their own
oscillator and produce a fixed tone whenever they are powered.

Signed-off-by: Carlo Caione <ccaione@baylibre.com>
2026-05-22 18:25:17 +02:00
Carlo Caione
2734ec44f3 drivers: buzzer: add buzzer subsystem core API
Introduce a consumer-facing buzzer API for boards that have a buzzer
wired through a PWM channel or a single GPIO. Apps drive buzzers via
buzzer_tone(), buzzer_beep() (plays the device's natural frequency
encoded in DT), buzzer_set_volume(), and buzzer_stop().

Signed-off-by: Carlo Caione <ccaione@baylibre.com>
2026-05-22 18:25:17 +02:00
Fin Maaß
342de448fd drivers: net: nsos: add spinlock
add spinlock for thread safety in socket operations. I noticed that
the native_sim would otherwise crash
under high network load.

Signed-off-by: Fin Maaß <info@finmaass.de>
2026-05-22 18:24:07 +02:00
Sudarshan Iyengar
6593588562 drivers: spi: dw: add frequency validation in configuration path
Validate the SPI bus frequency supplied via spi_config before it is
used to compute the baud-rate clock divider to prevent the following
faults:

- A zero frequency causes an integer division-by-zero when computing
  the clock divider, resulting in a hardware fault or an undefined
  value being written to the SPI_BAUDR register.

- A frequency exceeding half of the input core clock produces a
  divider value less than the minimum of 2 required by the
  DesignWare SSI databook (section 6.2.2), overclocking the
  peripheral and causing undefined bus behaviour.

Return -EINVAL for a zero frequency and -EINVAL for a frequency
greater than clk_hz / 2, surfacing the error to the caller rather
than silently misconfiguring the hardware.

Assisted-by: Claude:claude-opus-4.6
Signed-off-by: Sudarshan Iyengar <sudarshan.iyengar@alifsemi.com>
2026-05-22 18:24:00 +02:00
Bjarki Arge Andreasen
b2085e6cd6 drivers: spi: nrfx_spim_common: Limit freq by max_freq of controller
When configuring the nRF SPIM, the frequency needs to be limited by
the max frequency of the SPIM, which is specified in the devicetree.

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
2026-05-22 18:23:57 +02:00
Fin Maaß
6834dc4e0b drivers: ethernet: phy: move genphy_*_plca_* function
These functions are from phy_oa_tc14_plca.c, which
is only a helper for phys to implement the set_plca_cfg,
get_plca_cfg and get_plca_sts functions of the ethernet_phy
api, therefore they should be internal.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-05-22 18:23:46 +02:00
Rick Tsao
19606761aa drivers: spi: atcspi200: fix SPI clock change during DMA and build error
Fix SPI clock frequency being modified during DMA transfers.

Fix regression in DMA configuration structure update.

Signed-off-by: Rick Tsao <rick592@andestech.com>
2026-05-22 18:23:36 +02:00
Rick Tsao
35596683d2 drivers: spi: atcspi200: fix non-8-bit word size and NULL buffer handling
Fix incorrect behavior for non-8-bit SPI word sizes.

Fix the handling when both TX and RX buffers are NULL.

Signed-off-by: Rick Tsao <rick592@andestech.com>
2026-05-22 18:23:36 +02:00
Zhaoxiang Jin
532e6e2e23 pinctrl: nxp: iocon: deassert reset from devicetree
deassert reset from devicetree

Signed-off-by: Zhaoxiang Jin <Zhaoxiang.Jin_1@nxp.com>
2026-05-22 18:23:27 +02:00
Zhaoxiang Jin
afefde1f80 gpio: mcux: add reset controller support
add reset controller support

Signed-off-by: Zhaoxiang Jin <Zhaoxiang.Jin_1@nxp.com>
2026-05-22 18:23:27 +02:00
Zhaoxiang Jin
9168d59600 pinctrl: lpc_iocon: enable clocks from devicetree
Enable IOCON clocks from the devicetree clocks property during
pinctrl initialization.

Keep the existing LPC path intact and only use the clock control
flow when a clock is described in devicetree.

Signed-off-by: Zhaoxiang Jin <Zhaoxiang.Jin_1@nxp.com>
2026-05-22 18:23:27 +02:00
Zhaoxiang Jin
5d2ebdbe2a clock_control: mcux_syscon: add RT7xx IOCON gates
Add RT7xx IOCON clock IDs to the MCUX SYSCON clock bindings and
handle them in the shared clock control driver.

This provides the common gate support needed for RT7xx IOCON
instances to be managed through the clock control API.

Signed-off-by: Zhaoxiang Jin <Zhaoxiang.Jin_1@nxp.com>
2026-05-22 18:23:27 +02:00
Zhaoxiang Jin
f488ca84c7 gpio: mcux: enable clocks from devicetree
Use the optional clocks property to request the GPIO port clock
during driver initialization.

This lets RT7xx GPIO instances rely on the common clock control
path instead of board-specific clock enabling.

Signed-off-by: Zhaoxiang Jin <Zhaoxiang.Jin_1@nxp.com>
2026-05-22 18:23:27 +02:00
Zhaoxiang Jin
fbfce13aa4 clock_control: mcux_syscon: add RT7xx GPIO gates
Add RT7xx GPIO clock IDs to the MCUX SYSCON clock bindings and
handle them in the shared clock control driver.

This provides the common GPIO gate support needed for RT7xx
GPIO instances to be managed through the clock control API.

Signed-off-by: Zhaoxiang Jin <Zhaoxiang.Jin_1@nxp.com>
2026-05-22 18:23:27 +02:00
Pieter De Gendt
39074bc976 drivers: espi: emul: Use DEVICE_API_EXTENDS for emul_espi_driver_api
The emulated ESPI driver API is an extension of the actual ESPI driver API.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-05-22 18:23:14 +02:00
Pieter De Gendt
1d1e40641f drivers: mspi: emul: Use DEVICE_API_EXTENDS for emul_mspi_driver_api
The emulated MSPI driver API is an extension of the actual MSPI driver API.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-05-22 18:23:14 +02:00
Shan Pen
a62bf26bd7 drivers: sdhc: renesas_ra: copy full CMD6 status
The RA SDHC driver handles SD_SWITCH/CMD6 through

r_sdhi_read_and_block(), then copies the returned status from the

FSP aligned buffer into the Zephyr request buffer.

CMD6 switch status is a 64-byte data block. The driver copied only

8 bytes, which is the SCR size used by ACMD51. This left byte 13

uninitialized or stale, so the SD core could read bus_speed as 0.

With bus_speed misread, the SD core skipped high-speed setup. Since

the current init flow switches to 4-bit width after high-speed setup,

ACMD6 bus-width switching was also skipped despite host and card

both advertising 4-bit support.

Copy ra_cmd.sector_size bytes instead, matching the requested data

block size. For CMD6 this preserves the full 64-byte switch status.

Signed-off-by: Shan Pen <bricle031@gmail.com>
2026-05-22 10:49:03 +02:00
Richard Mc Sweeney
f27c33544b drivers: Add CTB support for PSE84
Added autanalog CTB support for PSE84 device.

This implementation uses the autnonomous controller (MFD)
that is shared with other autanalog drivers.

The CTB stands for Continuous Time Block. It is a set of opamps
residing inside the autonomous (aut) analog subsystem. It is
controlled using the autonomous controller (AC), which is a
programmable state machine. The AC is shared across all autonomous
analog peripherals including the SAR, PRB, PTComp, CTB, and CTDAC.

Each CTB block contains two opamps, which need to be configured
together and accessed using the AC. A CTB MFD is used to bring
together the two opamp configurations. AC MFD then references the
combined CTB MFD configuration, and brings together all other
autanalog peripherals into a single AC setup for the application.

Assisted-by: Claude:claude-opus-4.6
Signed-off-by: Richard Mc Sweeney <Richard.McSweeney@infineon.com>
2026-05-22 10:45:52 +02:00
Ren Chen
e6da91ce96 drivers: i3c: i3cs_it51xxx: add disable read abort mechanism support
This commit adds support for disabling the read abort mechanism.

Signed-off-by: Ren Chen <Ren.Chen@ite.com.tw>
2026-05-22 10:43:15 +02:00
Ren Chen
584af80351 drivers: i3c: i3cs_it51xxx: return missing errno on ibi
The missing errno return in ibi path causes the function
to return 0 (success) when raising ibi times out.
This patch addresses this issue.

Signed-off-by: Ren Chen <Ren.Chen@ite.com.tw>
2026-05-22 10:43:15 +02:00
Nick Ward
74ff7d3913 drivers: sensor: use shell_print for command output
shell_info is intended for informational side-notes, not for printing
command result data. Use shell_print instead, consistent with other
Zephyr driver shell implementations (rtc_shell, gpio_shell, i2c_shell,
eeprom_shell).

Signed-off-by: Nick Ward <nix.ward@gmail.com>
Assisted-by: Claude:claude-sonnet-4-6
2026-05-21 17:04:13 -04:00
Francois Ramu
91bce9f8e2 drivers: flash: stm32 ospi driver with TimeOut in MemoryMapped mode
When the TimeOut is enabled in MemoryMapped mode, the TO irq callback
has not to give any sem, because the read operation is done with
memcopy(). No sem was taken, nothing to release.

Signed-off-by: Francois Ramu <francois.ramu@st.com>
2026-05-21 17:03:40 -04:00
Michał Stasiak
514798d384 drivers: audio: dmic_pdm_nrfx: used defined gain symbols
Avoid using magic numbers for gain values,
use defined symbols instead.

Signed-off-by: Michał Stasiak <michal.stasiak@nordicsemi.no>
2026-05-21 17:03:31 -04:00
Peter Allenspach
6fbe4ec6bf drivers: i2s: stm32 i2s configure DMA for 4 byte operation when needed
When using a 32-bit based I2S peripheral such as a PCM1809, the default
DMA configuration of 16 bit doesn't work; due to the incorrect length,
the I2S buffers are filled with only zeroes. Rather than hardcode 16 bit
length, check for word size and set the DMA configuration accordingly.

Signed-off-by: Peter Allenspach <uberrice@pm.me>
2026-05-21 17:02:15 -04:00
Bjarki Arge Andreasen
cf4859484d drivers: clock_control: nrf: patch lfclk_spinwait lost irq wakeup
The function lfclk_spinwait in the clock_control_nrf.c driver uses
k_cpu_atomic_idle() to idle until the CLOCK IRQ caused by the
LFCLKSTARTED event is triggered.

The implementation of the (check -> set -> idle) loop breaks if
unrelated clock events like XOSTARTED and XOTUNED occur concurrently,
since they trigger the the CLOCK IRQ as well. This can wake up the
CPU before LFCLKSTART event, which means NVIC_ClearPendingIRQ() is
not called before we enter idle again.

Solve the race condition between

  (critical section -> check -> set -> maybe clear pending -> idle)

by refactoring it to

  (critical section -> clear pending -> check -> set -> idle)

Which ensures the LFCLKSTARTED event is not lost if it occurs during
the (check -> set -> idle) flow.

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
2026-05-21 17:00:40 -04:00
Vladimir Zidar
cc1fa0dffe usb: usb_c: update ucpd_stm32 driver to allow building for stm32h5xx soc
Use LL_PWR_* APIs to handle UCPD_DBDIS flags in portable way.
Fix ucpd_params.psc_ucpdclk value.

Signed-off-by: Vladimir Zidar <vladimir.zidar@ars-es.com>
2026-05-21 17:00:13 -04:00
Kate Wang
566862d149 dma: mcux: edma: preserve burst length for peripheral-triggered transfers
When a DMA channel is routed through the channel mux (dma_slot != 0), each
minor loop is paced by the peripheral request signal. In this case, the
caller-chosen burst length must be preserved to ensure correct operation.

Previously, the driver would collapse the minor loop into the whole block
for all memory-to-memory transfers without source chaining, but this logic
should only apply to genuine software-triggered transfers. Peripheral-
triggered transfers (e.g., FlexIO LCDIF) expect one minor loop per shifter
round, and collapsing the loop breaks this requirement.

Add a check for dma_slot == 0 to ensure burst length collapsing only occurs
for software-triggered transfers, not peripheral-triggered ones.

Signed-off-by: Kate Wang <yumeng.wang@nxp.com>
2026-05-21 15:13:51 +02:00
Thomas Fischer
554d07b01f drivers: flash driver: added support for W25Q128JV-IQ/IN flash
Added support for W25Q128JV-IQ/IN flash by adding vendor id specific LUT.
Fixes #107306

Signed-off-by: Thomas Fischer <thomas.fischer@jumo.net>
2026-05-21 15:11:19 +02:00
Sergei Ovchinnikov
76c4765a3b drivers: watchdog: nPM10 Series Watchdog driver
Nordic's nPM10 Series PMIC watchdog driver implementation and devicetree
bindings.

Signed-off-by: Sergei Ovchinnikov <sergei.ovchinnikov@nordicsemi.no>
2026-05-21 06:33:15 -04:00
Sergei Ovchinnikov
3135899ffb drivers: mfd: npm10xx: add timer support
Add timer support to the nPM10 Series MFD driver. This can be used as a
general purpose timer, wakeup timer for hibernation modes and as watchdog.

Signed-off-by: Sergei Ovchinnikov <sergei.ovchinnikov@nordicsemi.no>
2026-05-21 06:33:15 -04:00
Jordan Yates
5719853314 modem: at_user_pipe: drain pipe on claim
Drain any pending bytes on the pipe when `modem_at_user_pipe_claim` is
called, as these will either be unsolicited notifications or messages
from previous users of the pipe. Draining the pipe on claim prevents
this data appearing in unexpected places.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2026-05-21 06:32:30 -04:00
Jordan Yates
2f4c24b2a2 modem: at_user_pipe: timeout on modem_at_user_pipe_claim
Add a timeout parameter to `modem_at_user_pipe_claim` to enable blocking
for a duration on pipe availability.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2026-05-21 06:32:30 -04:00
Jordan Yates
71f5379643 modem: at_user_pipe: attach on claim
Update the AT user pipe API so that the initialisation does not require
the modem chat instance. This enables sharing the user pipe abstraction
between multiple users at runtime.

One consequence of this is that `modem_chat_attach` is deferred until
the user calls `modem_at_user_pipe_claim`.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2026-05-21 06:32:30 -04:00
Sunil Abraham
e9621a8008 drivers: dma: microchip: add g3 driver for PIC32CZ_CA family
Add DMA g3 driver support.

Signed-off-by: Sunil Abraham <Sunil.Abraham@microchip.com>
2026-05-21 06:32:09 -04:00
Fabrice DJIATSA
eb9c50c97e drivers: pwm: stm32: Missing LL_TIM_TRGO_UPDATE for WB0x series
LL_TIM_TRGO_UPDATE isn't yet implemented on STM32WB0x series.

Exclude WB0x series from using LL_TIM_TRGO_UPDATE.

This is addressed by testing HAS_MASTERMODE_SUPPORT that is disabled
for platforms not defining LL_TIM_TRGO_UPDATE.

Signed-off-by: Fabrice DJIATSA <fabrice.djiatsa-ext@st.com>
2026-05-21 06:31:31 -04:00
Khai Cao
9af3d78af9 drivers: crc: renesas: fix issue of CRC16 reflect is not accepted
The CRC16 reflect issue is not accepted by the Renesas RA driver,
even though it is supported by the HWIP.

Signed-off-by: Khai Cao <khai.cao.xk@renesas.com>
2026-05-21 06:30:42 -04:00
Sylvio Alves
26bcd68a40 drivers: esp32: use zephyr cache api for dma coherency
Replace direct esp_cache_msync() calls in the ESP32 GDMA and
SPI master drivers with the portable sys_cache_data_*() API.

Zephyr's API is a compile-time no-op when CACHE_MANAGEMENT is
disabled, so the same source compiles cleanly on every ESP32
SoC and stays cost-free where there is no writeback cache.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-05-20 19:22:10 -07:00
Sylvio Alves
b8af14f7b6 drivers: cache: add espressif esp32 data cache driver
Map the generic sys_cache_data_* API onto esp_cache_msync()
from hal_espressif. The driver is SoC-agnostic and activates on
any Espressif chip that selects CPU_HAS_DCACHE and enables
CACHE_MANAGEMENT, keeping PSRAM and DMA buffers coherent from
portable Zephyr code.

Instruction-cache and enable/disable entries are no-ops since
the bootloader brings the cache up before Zephyr runs.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-05-20 19:22:10 -07:00