Commit graph

136,983 commits

Author SHA1 Message Date
Andy Ross
750eb4fcb4 arch/arm: Remove unused Cortex M thread struct elements
When USE_SWITCH=y, the thread struct is now mostly degenerate.  Only
the two words for ICI/IT state tracking are required.  Eliminate all
the extra fields when not needed and save a bunch of SRAM.

Note a handful of spots in coredump/debug that need a location for the
new stack pointer (stored as the switch handle now) are also updated.

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
89296edf30 arch/arm: Split Cortex M PendSV vector from SVC
The new switch code no longer needs PendSV, but still calls the SVC
vector.  Split them into separate files for hygiene and a few
microseconds of build time.

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
e4dee4347b arch/arm: Use an open coded lock and not arch_irq_lock()
Micro-optimization: We don't need a full arch_irq_lock(), which is a
~6-instruction sequence on Cortex M.  The lock will be dropped
unconditionally on interrupt exit, so take it unconditionally.

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
8638ed12f5 kernel/sched: Add optimized next switch handle wrapper
z_get_next_switch_handle() is a clean API, but implementing it as a
(comparatively large) callable function requires significant
entry/exit boilerplate and hides the very common "no switch needed"
early exit condition from the enclosing C code that calls it.  (Most
architectures call this from assembly though and don't notice).

Provide an unwrapped version for the specific needs non-SMP builds.
It's compatible in all other ways.

Slightly ugly, but the gains are significant (like a dozen cycles or
so).

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
c67a1dfe77 tests/benchmarks/thread_metric: Don't select IRQ_OFFLOAD_NESTED
This is a mistake.  IRQ_OFFLOAD_NESTED is not intended to be an app
tunable. It reflects whether or not platform layer irq_offload()
implementation supports its use from within an ISR (i.e. to invoke a
nested interrupt for testing purposes).  Not all architectures can do
that (and I know of at least one Xtensa soc that didn't give a
software interrupt the right priority and can't either).  Basically
this should have been a "ARCH_HAS_" kind of kconfig, it's just named
funny.

And in any case the thread_metric tests don't do nested interrupts,
which as I understand it aren't even possible in the FreeRTOS
environment it was written on.

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
afae0c6e2e tests/benchmarks/swap: Add interrupt cases too
This microbenchmark has been super-useful.  Add similar cases looking
at targetting interupt latency:

+ "IRQ" tests the cycles taken from the instant of an interrupt
  trigger (as implemented, it's an arch_irq_lock() being released with
  a timer interrupt pending) through a noop ISR (a k_timer callback),
  and back to the interrupting thread.

+ "IRQ_P" is a similar preemption test: it measures the time taken
   from the same trigger, into a higher-priority thread that
   timestamps the instant of its wakeup (in this case as a return from
   k_sem_take()).

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
a58bd2c627 tests/benchmarks/thread_metric: Turn off CONFIG_MPU explicitly
This gets turned on at the platform layer by a handful of boards,
despite note being used for anything in the test.  It has performance
impact, so really shouldn't be here.

Note that ARM_MPU also needs an =n, as that will select MPU, seemingly
incorrectly.

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
305b7227cc samples/openamp: Bump stack size
Running this with USE_SWITCH=y takes more space as expected, but it
oddly seems variable.  Even at 2kb, I still see fairly regular
failures.  It wants 3kb to be stable.  Maybe the non-determinism of
the two-qemu setup is involved?  Requests batch up and are handled
recursively?  Too much code in the third party stack to make it easy
to tell.

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
39ccfb3588 arch/arm: Work around gcc codegen oddity in arch_switch()
GCC/gas has a code generation bugglet on thumb.  The R7 register is
the ABI-defined frame pointer, though it's usually unused in zephyr
due to -fomit-frame-pointer (and the fact the DWARF on ARM doesn't
really need it).  But when it IS enabled, which sometimes seems to
happen due to toolchain internals, GCC is unable to allow its use in
the clobber list of an asm() block (I guess it can't generate
spill/fill code without using the frame?).

There is existing protection for this problem that sets
-fomit-frame-pointer unconditionally on the two files (sched.c and
init.c) that require it.  But even with that, gcc sometimes gets
kicked back into "framed mode" due to internal state.  Provide a
kconfig workaround that does an explicit spill/fill on the one
test/platform where we have trouble.

(I checked, btw: an ARM clang build appears not to have this
misfeature)

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
b86e04a9e9 tests/benchmarks: Add a tiny microbenchmark for z_swap()
Benchmarking context switch in the absence of other polluting factors
is actually really hard.  I wanted a microbenchmark of just z_swap()
for tuning the ARM arch_switch() code, and nothing we have is very
useful.  This one works well, measuring ONLY the time taken for a
thread to enter z_swap(), switch to another thread already suspended
in z_swap(), and return to a timestamp on the other side.  It runs a
few thousand iterations and reporting average and standard deviation.

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
d535d17cbc kernel: Minor optimizations to z_swap()
Pick some low hanging fruit on non-SMP code paths:

+ The scheduler spinlock is always taken, but as we're already in an
  irqlocked state that's a noop.  But the optmizer can't tell, because
  arch_irq_lock() involves an asm block it can't see inside.  Elide
  the call when possible.

+ The z_swap_next_thread() function evaluates to just a single load of
  _kernel.ready_q.cache when !SMP, but wasn't being inlined because of
  function location.  Move that test up into do_swap() so it's always
  done correctly.

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
eedd2446c6 arch/arm: Handle multi-cycle instruction in USE_SWITCH
ARM Cortex M has what amounts to a design bug.  The architecture
inherits several unpipelined/microcoded "ICI/IT" instruction forms
that take many cycles to complete (LDM/STM and the Thumb "IT"
conditional frame are the big ones).  But out of a desire to minimize
interrupt latency, the CPU is allowed to halt and resume these
instructions mid-flight while they are partially completed.  The
relevant bits of state are stored in the EPSR fields of the xPSR
register (see ARMv7-M manual B1.4.2).  But (and this is the design
bug) those bits CANNOT BE WRITTEN BY SOFTWARE.  They can only be
modified by exception return.

This means that if a Zephyr thread takes an interrupt
mid-ICI/IT-instruction, then switches to another thread on exit, and
then that thread is resumed by a cooperative switch and not an
interrupt, the instruction will lose the state and restart from
scratch.  For LDM/STM that's generally idempotent for memory (but not
MMIO!), but for IT that means that the restart will re-execute
arbitrary instructions that may not be idempotent (e.g. "addeq r0, r0,

The fix is to check for this condition (which is very rare) on
interrupt exit when we are switching, and if we discover we've
interrupted such an instruction we swap the return address with a
trampoline that uses a UDF instruction to immediately trap to the
undefined instruction handler, which then recognizes the fixup address
as special and immediately returns back into the thread with the
correct EPSR value and resume PC (which have been stashed in the
thread struct).  The overhead for the normal case is just a few cycles
for the test.

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
e2e5542d14 arch/arm: Platform integration for new Cortex M arch_switch()
Integrate the new context layer, allowing it to be selected via the
pre-existing CONFIG_USE_SWITCH.  Not a lot of changes, but notable
ones:

+ There was code in the MPU layer to adjust PSP on exception exit at a
  stack overflow so that it remained inside the defined stack bounds.
  With the new context layer though, exception exit will rewrite the
  stack frame in a larger format, and needs PSP to be adjusted to make
  room.

+ There was no such treatment in the PSPLIM case (the hardware prents
  the SP from going that low), so I had to add similar code to
  validate PSP at exit from fault handling.

+ The various return paths for fault/svc assembly handlers need to
  call out to the switch code to do the needed scheduler work.  Really
  almost all of these can be replaced with C now, only userspace
  syscall entry (which has to "return" into the privileged stack)
  needs special treatment.

+ There is a gcc bug that prevents the arch_switch() inline assembly
  from building when frame pointers are enabled (which they almost
  never are on ARM): it disallows you from touching r7 (the thumb
  frame pointer) entirely.  But it's a context switch, we need to!
  Worked around by enforcing -fomit-frame-pointer even in the two
  scheduler files that can swap when NO_OPTIMIZATIONS=y.

Signed-off-by: Andy Ross <andyross@google.com>
Signed-off-by: Sudan Landge <sudan.landge@arm.com>
2026-03-10 17:24:10 +01:00
Andy Ross
3fb0b32847 tests/arch/arm: Add unit test for new arch_switch() implementation
This is a standalone unit test of the new context code, which builds
in isolation as a MULTITHREADING=n binary.  No integration with the
core arch layer is required.

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
2d1252e006 arch/arm: New arch_switch() based context layer for Cortex M:
1. Mostly complete.  Supports MPU, userspace, PSPLIM-based stack
guards, and FPU/DSP features.  ARMv8-M secure mode "should" work but I
don't know how to test it.

2. Designed with an eye to uncompromising/best-in-industry cooperative
context switch performance.  No PendSV exception nor hardware
stacking/unstacking, just a traditional "musical chairs" switch.
Context gets saved on process stacks only instead of split between
there and the thread struct.  No branches in the core integer switch
code (and just one in the FPU bits that can't be avoided).

3. Minimal assembly use; arch_switch() itself is ALWAYS_INLINE, there
is an assembly stub for exception exit, and that's it beyond one/two
instruction inlines elsewhere.

4. Selectable at build time, interoperable with existing code.  Just
use the pre-existing CONFIG_USE_SWITCH=y flag to enable it.  Or turn
it off to evade regressions as this stabilizes.

5. Exception/interrupt returns in the common case need only a single C
function to be called at the tail, and then return naturally.
Effectively "all interrupts are direct now".  This isn't a benefit
currently because the existing stubs haven't been removed (see #4),
but in the long term we can look at exploiting this.  The boilerplate
previously required is now (mostly) empty.

6. No support for ARMv6 (Cortex M0 et. al.) thumb code.  The expanded
instruction encodings in ARMv7 are a big (big) win, so the older cores
really need a separate port to avoid impacting newer hardware.
Thankfully there isn't that much code to port (see #3), so this should
be doable.

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
6dac3c467c tests/arch/arm_thread_swap: Skip if USE_SWITCH=y
This is a low-level/whitebox test of the older context layer and can't
pass with the new code (which has its own unit test).

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
6f7ba27af3 tests/kernel/mutex_api: Fix logic in PI race test
This test seemed confused.  Per the description, it's trying to create
a priority boost situation where a low priority thread (the main ztest
thread running test_mutex_timeout_race_during_priority_inversion())
holds a mutex and is boosted by a high priority thread (running
tThread_mutex_lock_should_fail()) trying to lock the mutex.

But that's not what the code was doing.  It was creating the thread at
a LOWER priority, so no priority inheritance was happening.  The test
would pass simply because the thread ordering via the natural
scheduler caused the spawned thread to run first.  Fix the priorities
to be explicit.  And add some comments explaining what's happening.

Also clean up the timeout whiteboxing, which apparently an attempt to
evade userspace protections on the stack.  Just use a shared pointer
to ZTEST_DMEM.  And remove a voodoo "align to tick boundary" sleep;
that's needless here as the timeout is explicitly constructed to be
simultaneous, we don't care when we go to sleep, only that we wake up
out of the same ISR.

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Andy Ross
e62e92fa2b arch: Remove FPU_SHARING dependence on MULTITHREADING
This was just a pedantic setting.  I mean, of course it makes no sense
to have thread FPU management state features built when you aren't
including the scheduler in the build.

...unless you want to unit-test the context switch code without
tripping over itself on the way into the test code.  In fact lots of
unit testing of low level primitives can be done with
MULTITHREADING=n.

Remove the dependency.  It isn't actually doing anything useful.

Signed-off-by: Andy Ross <andyross@google.com>
2026-03-10 17:24:10 +01:00
Bjarki Arge Andreasen
e56e06020c arch: kconfig: ISR_TABLES_LOCAL_DECLARATION depend on IRQ vector table
ISR_TABLES_LOCAL_DECLARATION depends on GEN_IRQ_VECTOR_TABLE but
this is not enforced in Kconfig.

Building without the GEN_IRQ_VECTOR_TABLE and with LOCAL_DECLARATION
will produce the following misleading static assertion error:

  "CONFIG_IRQ_VECTOR_TABLE_JUMP_BY_{ADDRESS,CODE} not set"

As the LOCAL_DECLARATION macros expect GEN_IRQ_VECTOR_TABLE to be
enabled. LOCAL_DECLARATION also depends on GEN_ISR_TABLES but that
is a dependency of GEN_IRQ_VECTOR_TABLE already.

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
2026-03-10 15:11:51 +01:00
Alexander Roodt
d4c84cd07b soc: infineon: enable DWT unit for PSOC6 devices with Cortex-M4 core
Add missing Kconfig selection to enable the Data Watch and Trace unit for
the PSOC6 family of devices using a Cortex-M4 core.

Signed-off-by: Alexander Roodt <alexander.roodt@deepgate.ai>
2026-03-10 15:11:20 +01:00
Harini T
d9220b8286 watchdog: wdt_xilinx_wwdt: Add explicit state validation in feed
Add software state check (!data->wdt_started) to wdt_feed() validation
to ensure feed operations are only allowed after wdt_setup() has been
called.

Signed-off-by: Harini T <harini.t@amd.com>
2026-03-10 15:10:22 +01:00
Joakim Andersson
973ff30ce5 tests: optee: fix heap buffer overflow in mock SMC callbacks
The test's mock SMC callbacks were requesting shared memory allocations
of only 1 byte, but subsequently writing full optee_msg_arg structures
(~64 bytes) to these buffers, causing heap buffer overflows.

This heap corruption was latent and only manifested as a crash when
unrelated changes (such as increasing BSS size) altered the heap layout
enough for the overflow to corrupt critical data structures like the
optee_notify linked list nodes.

Fix by:
- Requesting the correct allocation size using OPTEE_MSG_GET_ARG_SIZE()
  to match the number of parameters being written
- Adding assertions to verify the shared memory buffer is large enough
  before writing to it, to catch similar issues in the future

Signed-off-by: Joakim Andersson <joerchan@gmail.com>
2026-03-10 15:09:45 +01:00
Raffael Rostagno
d2b3f4521b samples: boards: esp32: deep_sleep: Update test
Update test with PM developments.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Raffael Rostagno
378c1e9e54 samples: boards: esp32: light_sleep: Update test
Update test after PM interface is fixed.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Raffael Rostagno
893f9337f0 tests: uart_elementary: Fix overlays config for PM
Add pinctrl settings for pins sleep state. Necessary after
board's DTS is updated with default pinctrl sleep config.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Raffael Rostagno
1dd41b7a0b drivers: gpio: esp32: Add pull support for wakeup
Add pull-up/down support to RTCIO pins for wakeup function.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Raffael Rostagno
f25243cf7a drivers: gpio: esp32: Add wakeup support
Add support to GPIO_INT_WAKEUP flag at config() event.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Raffael Rostagno
53fe964473 drivers: gpio: esp32: Add device PM
Add device PM to ESP32 GPIO driver.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Raffael Rostagno
14acf0cab1 drivers: counter: rtc: esp32: Add device PM
Add device PM to ESP32 RTC counter driver.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Raffael Rostagno
30b4abab11 boards: esp32: uart: Add sleep pin states
Add sleep pin states for UART.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Raffael Rostagno
5250dc705a drivers: uart: esp32: Add device PM
Add device PM to ESP32 UART driver.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Raffael Rostagno
af76ef1162 drivers: systimer: esp32: Add systimer compensation
Add systimer compensation for time spent in light sleep while stalled.
Add sys_clock_idle_exit() for dticks announcement when leaving
light sleep.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Raffael Rostagno
d6c4ed90f4 pm: soc: esp32: Fix PM interface
Fix implementation so that sleep start routine is called at
pm_state_set() (entry) instead of pm_state_exit_post_ops().
Add RTC timer wakeup management, as well as code for deep
sleep.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Raffael Rostagno
9cc3028b39 soc: espressif: pm: CCOUNT compensation, ticks rounding
Add defconfig setting to enable CCOUNT compensation for low power mode
(light sleep). Enable ceil rounding for exit latency ticks calculation
for RISC-V chips.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Raffael Rostagno
046346905a dts: soc: pm: esp32: Adjust power states
Adjust PM residency times to more realistic values. Add power
states to ESP32-C2. Mark soft-off state as disabled, as it must
be called explicitly by application.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Raffael Rostagno
d73bddc87e west.yml: hal_espressif: Update for PM
Update HAL for ESP32 power management.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-10 15:09:30 +01:00
Alexis Czezar Torreno
840f1991a2 drivers: stepper: adi_tmc: add TMCM-3216 driver
Add driver for the Trinamic TMCM-3216 3-axis stepper motor controller
module with RS485 communication interface.

RS485 Bus Layer:
- 9-byte TMCL datagram TX/RX with checksum validation
- Half-duplex echo handling with timeout detection
- GPIO-based DE (Driver Enable) pin control

TMCM-3216 Driver:
- Implements Zephyr stepper API (enable/disable, microstep resolution,
  absolute/relative positioning, continuous rotation)
- SAP/GAP (Set/Get Axis Parameter) commands
- MVP (Move to Position) and ROR/ROL (Rotate Right/Left) commands
- Position reached flag and velocity-based motion detection
- Event callbacks for step completion
- Semaphore-protected bus access for thread safety

Public API:
- tmcm3216_set_max_velocity / tmcm3216_get_max_velocity
- tmcm3216_set_max_acceleration
- tmcm3216_get_actual_velocity
- tmcm3216_get_status

Build System:
- Kconfig options for controller, stepper_ctrl, and stepper_driver
- RS485 bus automatically selected when TMCM-3216 is enabled

Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
2026-03-10 15:07:27 +01:00
Alexis Czezar Torreno
f2c8336ef6 dts: bindings: add Trinamic TMCM-3216 stepper controller
Add devicetree binding for the Trinamic TMCM-3216 3-axis stepper
motor controller. The TMCM-3216 communicates over RS485 using the
TMCL protocol and supports up to 3 stepper motors.

Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
2026-03-10 15:07:27 +01:00
Jay Beavers
b2bc53aab8 logging: swo: drain hardware pipeline in panic handler
The SWO backend's panic() handler was a no-op. When LOG_PANIC() is
called (e.g., before a bootloader jumps to an app, or during a fatal
error), the logging subsystem flushes software buffers to the ITM
FIFO, but the TPIU hardware pipeline still has bytes in-flight on
the SWO pin. The debug probe loses these final messages.

Spin on ITM_TCR.BUSY until the formatter is idle, then busy-wait
for the TPIU output stage to clock remaining bytes out at the
configured SWO baud rate.

Signed-off-by: Jay Beavers <jay@tolttechnologies.com>
2026-03-10 15:05:20 +01:00
Alain Volmat
f5d0e87ea3 shields: raspberry_pi_camera_module_2: add stm32n6 configs files
Add board specific .conf files for the stm32n6 based boards.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2026-03-10 15:04:02 +01:00
Josuah Demangeon
9bdafcd39c boards: shields: introduce the Raspberry Pi Camera Module 2
Add a shield for the Raspberry Pi Camera Module 2, featuring the IMX219
sensor. This module is suitable for bot the "normal" and "No IR" (no
infra-red) variants and uses the rasapberry pi connector.

Signed-off-by: Josuah Demangeon <me@josuah.net>
Co-authored-by: Alain Volmat <alain.volmat@foss.st.com>
2026-03-10 15:04:02 +01:00
Alain Volmat
26e8c406f5 boards: st: nucleo_n657x0_q: add csi_capture_port label
Add the csi_capture_port label in order to be able to use
camera shield with this board.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2026-03-10 15:04:02 +01:00
Alain Volmat
46b9c2537a boards: st: use csi_capture_port as alias instead of pipe_main
Introduce a node alias called csi_capture_port in order to allow
having non ST shield using the chosen csi_capture_port to indicate
the camera interface.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2026-03-10 15:04:02 +01:00
Josuah Demangeon
143dc6092e tests: drivers: build_all: video: add IMX219
Build the IMX219 image sensor driver on the build-all tests.
No interconnection with any other device is done, which is not mandatory
at the time as no link-related parameter is used.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2026-03-10 15:04:02 +01:00
Alain Volmat
1db6b3dcc4 tests: drivers: build_all: video: correct sensor i2c address
Correct the address to which each sensor is set on the test
i2c bus.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2026-03-10 15:04:02 +01:00
Josuah Demangeon
4282f14306 drivers: video: introduce Sony IMX219 sensor driver
Add support for the Sony IMX219 CSI sensor.
This sensor supports resolution of 3280x2464 in RGGB bayer format
either 8 or 10 bits and using 2 or 4 CSI lanes.
Only 10 bits on 2 CSI lanes is currently supported, and only in
1920x1080 pixel resolution using cropping using the video_set_format(),
and will need to be converted to video_set_selection() instead.

Signed-off-by: Josuah Demangeon <me@josuah.net>
Co-authored-by: Alan Shaju <alanshaju@rideltech.com>
Co-authored-by: Alain Volmat <alain.volmat@foss.st.com>
2026-03-10 15:04:02 +01:00
Josuah Demangeon
591d6e3d17 drivers: video: sort CMakeLists.txt/Kconfig imports
Switch to zephyr-keep-sorted-start/stop to keep checking the new
driver imports are always sorted, which reduces chances of git
conflict while adding new drivers from separate branches.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2026-03-10 15:04:02 +01:00
Josuah Demangeon
70e1f96cb6 driver: video: ctrls: add VIDEO_CID_DIGITAL_GAIN
Only VIDEO_CID_ANALOGUE_GAIN and VIDEO_CID_GAIN were defined. Also add
the complementary VIDEO_CID_DIGITAL_GAIN.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2026-03-10 15:04:02 +01:00
Jordan Yates
cc53c73263 mgmt: mcumgr: img_mgmt: typo fix
Fix `Faled` -> `Failed`.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2026-03-10 12:39:23 +01:00
Jani Hirsimäki
3eeff9e1ef net: ipv6: check on-link prefix before falling back to default router
When routing packets, check if the destination address matches an
on-link prefix on any interface before using the default router.
This ensures packets destined for on-link prefixes are not
incorrectly sent to the default router.

Signed-off-by: Jani Hirsimäki <jani.hirsimaki@nordicsemi.no>
2026-03-10 12:39:06 +01:00