Commit graph zephyr/drivers
Author SHA1 Message Date
Liwen Wu
39ac521351 drivers: i2c: dw: support 64-bit MMIO addresses
Use mm_reg_t for DesignWare I2C MMIO register addresses to avoid
truncating addresses above 4 GiB on 64-bit systems.

Keep register values as uint32_t since the controller still uses
32-bit register accesses.

Signed-off-by: Liwen Wu <liwen.wu@spacemit.com>
2026-08-18 17:33:03 -04:00
Fabin V Martin
8163602bcd drivers: i2c: mchp: check target callback return values and NACK on error
- handled return value of target callbacks.
- Rename tgt_rx_data to tgt_xfer_data for clarity.

Signed-off-by: Fabin V Martin <Fabinv.Martin@microchip.com>
2026-08-18 17:30:12 -04:00
Nicolas Pitre
e2783c6941 drivers: timer: esp32_sys_timer: use the generic timer core
The systimer is a free-running counter plus a one-shot alarm, so a
COMPARE_ORDERED backend. The driver keeps the counter read and the alarm
write, now timer_driver_cycle_get() and timer_driver_set_compare(), and
the core takes over the tick accounting: last_count, the elapsed-ticks
helper, the tick-aligned deadline computation with its round-up and the
range clamp all go.

The unit counter is 52 bits wide, so the driver states that width and the
core masks its deltas at the counter's true wrap.

The driver's own cycle getters go. Both were guarded against a read after
sys_clock_disable() deinitialized the HAL; that guard now lives in
timer_driver_cycle_get(), which the core's getters go through, and the
arming primitive carries it too. It reports the counter value sampled at
disable rather than zero, so a read landing after it holds the elapsed
span instead of stepping the counter backwards.

MIN_DELAY goes. Every SoC this driver builds for defines
SYSTIMER_LL_ALARM_MISS_COMPENSATE, which is the peripheral raising an
alarm armed at or behind the counter rather than losing it, so a target
that is close or already passed needs no push forward. Espressif's own
systimer_hal_set_alarm_target() writes the target bare on those parts and
keeps a write-and-recheck loop only for the ones without the bit, none of
which this driver covers. Dropping the floor also takes a counter read
off every arm, which on this HAL is a snapshot request, a spin on the
valid bit and a triple read.

The low-power handoff moves from the idle argument of
sys_clock_set_timeout() to sys_clock_idle_enter(), which arms the wakeup
through the core and then hands over to the LPM hook.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2026-08-18 17:29:01 -04:00
Daniel M'BOUYOU
9ee04727b3 drivers: video: fix Kconfig help reference to the region name option
The help text of VIDEO_BUFFER_POOL_ZEPHYR_REGION points the reader at
CONFIG_VIDEO_BUFFER_ZEPHYR_REGION_NAME, which does not exist. The option
is declared two lines below as VIDEO_BUFFER_POOL_ZEPHYR_REGION_NAME and
is the name used everywhere else: subsys/video/buffer.c and the board
defconfigs for stm32h7s78_dk and stm32n6570_dk.

Fix the name in the help text so it matches the declared option.

Signed-off-by: Daniel M'BOUYOU <danielmbouyou@gmail.com>
2026-08-18 17:28:43 -04:00
Benjamin Cabé
ba1977ed6a drivers: input: cf1133: probe the controller before arming interrupt
cf1133_init() registers the GPIO callback and configures the interrupt,
or starts the polling timer, before calling cf1133_ts_init(), which is
the only assigner of data->pixel_length. When it fails, init returns with
the callback still registered and the timer still running.

cf1133_process() sizes its read as 1 + SUPPORTED_POINT * pixel_length,
one byte when pixel_length is 0, then unconditionally dereferences
buffer[1..3] for the valid bit and both coordinates. A transient NAK at
boot therefore leaves every subsequent interrupt edge, or every 10 ms
timer tick, decoding uninitialized stack: whenever bit 7 of the garbage
is set the driver emits BTN_TOUCH=1 with a random coordinate for the life
of the system. The same window exists at startup before ts_init() runs.

Probe the controller first, right after k_work_init(); it only needs the
I2C bus, which is already validated. Nothing that can fail then follows
the arming step.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
Assisted-by: Claude:fable-5
2026-08-18 17:28:11 -04:00
Flavio Ceolin
d7faf323d5 peci: validate user data in the transfer verifier
Check embedded memory in peci_msg before using it to avoid
a user thread to read and write arbitrary kernel memory through
the syscall.

Signed-off-by: Flavio Ceolin <flavio@hubble.com>
2026-08-18 17:28:04 -04:00
Aksel Skauge Mellbye
4af55807dc drivers: bluetooth: hci: siwx91x: Set power profile at boot
Set the NWP power profile at boot, rather than postponing it until
Bluetooth is enabled. The workaround to postpone it is no longer
needed, as recent NWP firmware versions support setting power
profile prior to configuring Bluetooth TX power.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2026-08-18 17:23:03 -04:00
Aksel Skauge Mellbye
ac768a845e modules: hal_silabs: Adapt to wiseconnect 4.1.0
Update build system to work with WiSeConnect 4.1.0 HAL.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2026-08-18 17:23:03 -04:00
Aksel Skauge Mellbye
2fd09a065c drivers: dma: silabs: Use DMA manager HAL
The DMADRV HAL is deprecated, switch to DMA manager HAL for
channel allocation bookkeeping.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2026-08-18 17:23:03 -04:00
Aksel Skauge Mellbye
d5e241f33a drivers: bluetooth: hci: silabs: Adapt to HAL changes
Adapt Series 2 HCI driver to changes in SiSDK v2026.6.0. The
functions to send and receive events have been renamed, and
the buffer memory is configured in a different way.

The radio also requires PHY configuration files to be separately
compiled, they are no longer built in to the library.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2026-08-18 17:23:03 -04:00
Tony Han
69a9dba482 drivers: interrupt_controller: mchp_aic: fix a compile warning
Fix "warning: suggest parentheses around comparison in operand
of '&' [-Wparentheses]" by adding the parentheses.

Signed-off-by: Tony Han <tony.han@microchip.com>
2026-08-18 17:20:08 -04:00
Tony Han
71a994f06f drivers: serial: mchp: add UART driver for sama5d2 SoC
Add driver for sama5d2's UART (Universal Asynchronous Receiver
Transmitter).

Signed-off-by: Tony Han <tony.han@microchip.com>
2026-08-18 17:20:08 -04:00
Tony Han
d8e551cee2 drivers: timer: mchp: add PIT driver for kernel work in tickful mode
Add driver for PIT (Periodic Interval Timer), only supports tickful
kernel mode (CONFIG_TICKLESS_KERNEL=n).

Signed-off-by: Tony Han <tony.han@microchip.com>
2026-08-18 17:20:08 -04:00
Sudarshan Iyengar
e7ae602b5c drivers: sensor: ms5637: Add async sensor API support
Implement SENSOR_ASYNC_API for the MS5637 driver using RTIO
submission chains for non-blocking pressure/temperature reads.

- Add RTIO SQE chain helper (ms5637_prep_conv_chain) to
  reduce duplication between pressure and temperature paths
- Add sensor data decoder with q31 output format
- Refactor ms5637_compensate to accept calibration struct
  and output reading pointer, eliminating dependency on the
  full ms5637_data struct for use in decoder context
- Add Kconfig selections for I2C_RTIO and RTIO_OP_DELAY
  when SENSOR_ASYNC_API is enabled
- Fix CMakeLists.txt to use CONFIG_SENSOR_ASYNC_API

Signed-off-by: Sudarshan Iyengar <sudarshan.iyengar@alifsemi.com>
Assisted-by: Claude:claude-opus-4.7
2026-08-18 17:18:08 -04:00
Muhammad Waleed Badar
967b76a1a1 drivers: display: rpi_bcm2711_fb: add pixel-format dt-property
Allow the Raspberry Pi BCM2711 framebuffer driver to configure the
initial pixel format through devicetree. Add support for ARGB8888
and ABGR8888 formats.

Signed-off-by: Muhammad Waleed Badar <walid.badar@gmail.com>
2026-08-18 19:16:07 +01:00
Takumi Ando
3ccde63baa drivers: sdhc: xlnx: Maintain DMA cache coherency
Perform the required cache maintenance before and after ADMA
transfers when the data cache is enabled.

Direct DMA read buffers must be aligned to the data cache line size because
invalidating a partial cache line may discard unrelated dirty data.

Use a cache-line-aligned bounce buffer for small reads whose transfer
size is not a multiple of the cache line size. This allows commands
such as the 4-byte MMC SEND_WRITE_PROT command to use ADMA safely.

Set the SDHC buffer alignment to the greater of the configured
data cache line size and the controller's minimum 32-byte
alignment requirement.

Signed-off-by: Takumi Ando <takumi@spacecubics.com>
2026-08-18 19:14:58 +01:00
Johann Fischer
bf3ccdd656 drivers: usb: uhc_dwc2: do not write back outdated GUSBCFG
dwc2_core_init_host_gusbcfg() reads GUSBCFG register value, modifies the
register to force host mode but does not read the actual register value
back. Using an outdated value later the dwc2_core_init_host_gusbcfg()
reverts to device mode. The bug is only observable on boards with
ID-pin not grounded.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2026-08-18 19:12:43 +01:00
Radhika Changela
3d9cccbb87 drivers: neochrom_gpu2d: add NeoChrom GPU2D driver
Add initial support for the NeoChrom GPU2D hardware accelerator.

This driver provides basic initialization and configuration of
the GPU2D engine.

Enables hardware-accelerated 2D rendering support for use with higher-level
graphics subsystems such as LVGL.

Signed-off-by: Radhika Changela <radhika.changela@siliconsignals.io>
2026-08-18 19:12:26 +01:00
Fin Maaß
f9305cb819 drivers: gpio: silabs: use DT_INST_FOREACH_STATUS_OKAY
use DT_INST_FOREACH_STATUS_OKAY for the
ports instead of
DT_INST_FOREACH_CHILD_STATUS_OKAY.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
f5ff367644 drivers: gpio: cypress: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
34758b515b drivers: gpio: infineon: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
766fcbb06e drivers: gpio: efinix: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
9afa6a47e7 drivers: gpio: gecko: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
b23c8fe9b7 drivers: gpio: ite: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
dfdef06f45 drivers: gpio: max22190: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
9936afff2b drivers: gpio: max14917: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
29a17f1b18 drivers: gpio: nxp: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
4ed42fea6b drivers: gpio: sedi: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
9d1e5c2082 drivers: gpio: stmpe1600: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
e1f047842a drivers: gpio: renesas: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
6d3e211210 drivers: gpio: rt1718s: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
945beb4a83 drivers: gpio: si32: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
9066212c03 drivers: gpio: mfxstm32l152: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
8101477de3 drivers: gpio: nuvoton: use GPIO_COMMON_CONFIG_FROM_DT_INST
use GPIO_COMMON_CONFIG_FROM_DT_INST

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Fin Maaß
4ad8541198 drivers: gpio: sy1xx: add the mandatory common structs
gpio drivers need to have struct gpio_driver_config and
struct gpio_driver_data at the first position of the data
and config struct.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-08-18 19:07:16 +01:00
Roman Pustobaiev
dbeff96f4c drivers: video: ov2640 driver: Enhancing ov2640 driver
Enabling proper zoom/scaling for windowed resolutions;
e.g. smaller than uxga
That makes camera's ISP to downscale frame to a desired resolution

Signed-off-by: Roman Pustobaiev <romanpustobayev@gmail.com>
Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2026-08-18 19:05:41 +01:00
Mateusz Michalek
ed2b7a5797 drivers: clock_control: nrf: skip sleep w/o multithreading
NVM size optimization. Spares about 1k for 54L's

Signed-off-by: Mateusz Michalek <mateusz.michalek@nordicsemi.no>
2026-08-18 10:27:05 +01:00
Andrew Fantino
502968d79e dts: bindings: cpu: Add vendor defined cpu enable-method
There is no standard way to launch a secondary CPU out of its quiescent
state. While ARM Cortex-A cores use standardized secondary cpu launch
methods like PSCI or spin-tables, other multi-core SoC's (eg.
raspberrypi rp2350, nxp lpc55s69, etc) enable-methods are entirely
vendor-specific.

The devicetree specification section 3.8.1 describes the enable-method
property of a cpus/cpu* node. It may have the value "[vendor],[method]"
which describes the vendors-specific method by which a CPU is released
from a disabled state.

Remove enum from enable-method binding and update DT macros that relied
on enable-method being an enum type property.

Document the [vendor],[method] value in the enable-method property of
cpu.yaml.

Signed-off-by: Andrew Fantino <fantino@qti.qualcomm.com>
2026-08-18 10:26:56 +01:00
Etienne Carriere
3ab5b0f6b1 drivers: i2c: stm32: Select I2C_STM32_INTERRUPT upon I2C_RTIO
CONFIG_I2C_RTIO=y enables CONFIG_I2C_STM32_INTERRUPT since STM32 I2C RTIO
drivers are only supported with interrupts enabled.

Remove the sentence in I2C_STM32_V2 config symbol description about
I2C_STM32_INTERRUPT selection since it is already explicitly stated by
the 'select' command and makes I2C_STM32_V2 description more consistent
regarding I2C_STM32_V1 description.

Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
2026-08-18 10:26:31 +01:00
Sylvio Alves
9b2adc1344 drivers: bluetooth: add esp-hosted-mcu hci driver
Add the HCI driver that carries Bluetooth traffic over the
esp-hosted-mcu transport core, so Wi-Fi and Bluetooth share the
single link to the coprocessor. The driver asks the coprocessor
to initialise and enable its controller, then acts as a raw H4
bridge.

Received frames are copied into a slab slot on the shared receive
thread and rebuilt on a dedicated delivery thread, so waiting on
a host buffer pool cannot stall the Wi-Fi path. The framed
transport adds call depth on the tx processor thread, which runs
the driver send path, so its stack default is raised.

The coprocessor firmware advertises the controller to host flow
control commands but rejects them, so the binding sets the
no-flow-control quirk by default.

Extended advertising is left to the application. The coprocessor
is a separate part whose Bluetooth generation is not known when
the host is built: an esp32 provides Bluetooth 4.2 and has none,
while the riscv parts provide 5.0. Keep the legacy advertising
commands available so either generation works.

Assisted-by: Claude:opus-4-8
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-08-18 10:23:22 +01:00
Sylvio Alves
2afd7ef33d drivers: wifi: add esp-hosted-mcu wi-fi driver
Add the Wi-Fi driver for an Espressif coprocessor running
esp-hosted-mcu firmware. The driver registers station and access point
interfaces with the network stack and carries their frames over the
esp-hosted-mcu transport core.

Management operations are driven over RPC against the coprocessor
esp_wifi API: scan, connect and disconnect, access point enable and
disable, mode and channel, power save, connected access point details
and station deauthentication. Connection results and station events
are reported asynchronously from the coprocessor event stream.

Assisted-by: Claude Code:opus-4-8
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-08-18 10:23:22 +01:00
Sylvio Alves
cf0859f6fb drivers: misc: add esp-hosted-mcu transport core
Add the transport core shared by the esp-hosted-mcu Wi-Fi and
Bluetooth drivers. The core owns the framing, the checksum, the
sequence counter and the RPC request and response matching, and it
demuxes received frames to the registered interface consumers.

Transports are pure byte movers behind a four function vtable, so the
protocol handling stays in one place. Both an sdio backend, driving
the coprocessor SLC register window, and a full duplex spi backend
with reset, handshake and data-ready lines are provided; the transport
is selected at build time from devicetree.

At init the core asks the coprocessor for its firmware version and
logs it, falling back to the version carried in the boot event when
the firmware is too old to answer. The expected version is only a
Kconfig declaration: the firmware is flashed to a separate chip, so
a mismatch is warned about and never fails init.

The boot event also carries the SDIO datapath mode. When the
coprocessor aggregates frames it pads each one to a four-byte
boundary, so the receive walk reads the advertised mode and steps by
the aligned stride; a byte-tight coprocessor is unaffected.

Assisted-by: Claude Code:opus-4-8
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-08-18 10:23:22 +01:00
Shankar Ramasamy
b4148a2f26 drivers: flash: microchip: flash G2 driver for PIC32CM
Addition of Flash G2 driver implementation
to support PIC32CM series

Signed-off-by: Shankar Ramasamy <shankar.ramasamy@microchip.com>
2026-08-18 10:22:31 +01:00
Hieu Nguyen
f112c1080f drivers: dma: Initial support for RZ/A2M
Add DMA driver support for Renesas RZ/A2M

Signed-off-by: Hieu Nguyen <hieu.nguyen.ym@bp.renesas.com>
2026-08-18 09:21:27 +02:00
Eden Frosst
7b2a3c0cca drivers: serial: stm32: release the RX wake lock on hardware timeout
A UART that woke the SoC keeps PM_STATE_SUSPEND_TO_IDLE locked forever
once the hardware receiver timeout is in use.

The WKUP interrupt takes the lock and sets rx_woken. The IDLE arm of
uart_stm32_isr() would release it, but set_timeout_itr() disables the
IDLE interrupt when it programs RTOR, so the RTO arm reports the end of
reception instead and only clears the flag and flushes. The lock is never
released, so the system never enters a Stop state again.

Move acquire and release into helpers and call them from both paths, so
the behaviour at the end of reception is consistent.

Also move enable_wakeup_line out of the block with the PM policy helpers.

Tested on a nucleo_l476rg, cyclic asynchronous reception with PM enabled.

Fixes: #116273
Signed-off-by: Eden Frosst <eden.frosst@rbr-global.com>
2026-08-17 20:51:00 -05:00
Daniel Schultz
e587299baf drivers: flash: Add Aesc Silicon SPI Flash Controller
Add a driver for the Aesc Silicon SPI XIP controller, exposing the
execute-in-place mapped SPI NOR flash as a Zephyr flash device. The
flash region is a soc-nv-flash child of the "aesc,spi-flash-controller"
node.

Reads are served from the memory-mapped XIP window. Programming is not
supported yet, so write() and erase() return -ENOSYS.

When the "aesc,quad-mode" property is set, the driver switches the
controller and flash to quad read mode at init, skipping the
reconfigure when a bootloader already enabled it.

Signed-off-by: Daniel Schultz <dnltz@aesc-silicon.de>
2026-08-17 20:50:07 -05:00
Nicolas Pitre
edc09eb9ef drivers: timer: xtensa_sys_timer: use the generic timer core
Convert the Xtensa CCOUNT/CCOMPARE timer to system_timer_generic.h.
CCOMPARE fires only on CCOUNT == CCOMPARE, so an already-past target is
missed until CCOUNT wraps: that is the COMPARE_EXACT backend, whose
verify loop replaces the minimum-delay bump the driver applied by hand.
The driver keeps timer_driver_cycle_get() (CCOUNT) and
timer_driver_set_compare() (CCOMPARE), and the core takes over the tick
accounting: the last_count baseline, the tickful re-arm and the
sys_clock_elapsed()/set_timeout() tick math all go. smp_timer_init()
primes the per-CPU timer through timer_core_smp_prime().

ccount() still adds the low-power compensation offset, so the cycle count
and every announced delta pick it up. The Espressif LPM hook
(CONFIG_XTENSA_TIMER_LPM_TIMER_HOOK) moves to sys_clock_idle_enter() and
folds the missed cycles into that offset; the non-low-power idle path
drops to the weak sys_clock_idle_enter() default, which arms through
sys_clock_set_timeout().

The low-power exit hands its recovered span to the core directly rather
than folding it into the counter for the announce to find. CCOUNT is 32
bits, so a sleep can outrun what the masked delta resolves, which at
240 MHz is under nine seconds. The compensation still takes the same
span, so the counter stays in step and what CCOUNT did see is left for
the next announce.

kernel.timer.sloppy_idle gains qemu_xtensa/dc233c: with nothing pending
the core arms the longest interval it allows, so the time base keeps
running.

timer_api, context, sleep and tickless pass on qemu_xtensa/dc233c.
Build-verified on esp32 with the LPM hook (CONFIG_PM=y) and with SMP.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2026-08-17 16:32:43 -04:00
Nicolas Pitre
2f017912e2 drivers: timer: xtensa_sys_timer: disarm the compare in the ISR
Writing CCOMPARE is what clears the pending timer interrupt. The ISR
never wrote it in tickless mode, relying on sys_clock_set_timeout()
being reached after the announce to do so.

That holds only as long as something does call it. On SMP each CPU has
its own CCOMPARE, but sys_clock_announce_locked() returns early on all
but the announcing one, so the rest return from the ISR with the
interrupt still pending and take it again immediately. Nothing
guarantees a new deadline is armed on UP either: with no timeout pending
the kernel may legitimately choose not to.

Write a compare one behind the current count on entry. That clears the
interrupt, and since the match is on equality it also puts the next one a
whole counter period away, which is as far as a 32-bit comparator
reaches. The arming path overwrites it in the normal case.

Split the raw CCOUNT read out of ccount() so the ISR can form that value
without the low-power compensation the cycle domain carries.

Fixes: #115442
Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2026-08-17 16:32:43 -04:00
Aksel Skauge Mellbye
f6d41635f0 drivers: gpio: silabs: Support not having EM4 wakeup on all ports
The implementation of EM4 wakeup pin support assumed all ports
have at least one EM4WU capable pin. Support the case where
EM4WU pins may not be available on every port.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2026-08-17 16:30:37 -04:00
Aksel Skauge Mellbye
a2bdcbb6f4 drivers: entropy: silabs: Remove unused include
Remove unused include from the entropy_gecko_se driver.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2026-08-17 16:30:25 -04:00