Skip to content

[v2025.12] Cherry-pick upstream PRs#11

Merged
Johan Hedberg (jhedberg) merged 30 commits into
SiliconLabsSoftware:silabs/v2025.12from
Martinhoff-maker:backport-20260217
Feb 18, 2026
Merged

[v2025.12] Cherry-pick upstream PRs#11
Johan Hedberg (jhedberg) merged 30 commits into
SiliconLabsSoftware:silabs/v2025.12from
Martinhoff-maker:backport-20260217

Conversation

@Martinhoff-maker

@Martinhoff-maker Martin Hoff (Martinhoff-maker) commented Feb 17, 2026

Copy link
Copy Markdown

Cherry-pick bugfixes from 18 upstream PRs.

@jhedberg Johan Hedberg (jhedberg) changed the title Cherry-pick upstream PRs [v2025.12] Cherry-pick upstream PRs Feb 17, 2026
@Martinhoff-maker

Martin Hoff (Martinhoff-maker) commented Feb 18, 2026

Copy link
Copy Markdown
Author

Added 8 commit to make the uart_async_dual test work. See this during my sanity test.

@Martinhoff-maker Martin Hoff (Martinhoff-maker) force-pushed the backport-20260217 branch 2 times, most recently from 685eeda to 0707a19 Compare February 18, 2026 09:30
@Martinhoff-maker

Copy link
Copy Markdown
Author

Removed the last PR that I tried to add for the uart_async_dual test because it creates too much compliance failure. uart_asyn_dual is then a non working testcase (because of how the test is written)

SiWx917 does not support concurrent read and write on the flash.
sli_mv_m4_app_from_flash_to_ram() ensure that requirement. Especially, it
disable the Zephyr scheduler. However, to guaranty the instruction cache
won't access to the flash, this function has to be located in RAM.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
(cherry picked from commit de64c00)
Upstream-status: available
Without this change, the fix introduced in commit 189fa5f ("modules:
silabs: Force sli_mv_m4_app_from_flash_to_ram() to be in RAM") is not
active.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
(cherry picked from commit df01f03)
Upstream-status: available
Update the GSPI DMA configuration to conditionally register the DMA
callback based on transfer direction and RX buffer presence. The
callback is enabled for TX-only transfers when the RX buffer is NULL
and for RX transfers when a valid RX buffer is provided.

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
(cherry picked from commit 84a5255)
Upstream-status: available
The Siwx91x GSPI controller requires the FIFO reset bits to be
held high for a minimum of one GSPI bus clock cycle.
Currently, the driver asserts and deasserts the reset back-to-back,
which may result in an insufficient reset pulse width at higher
frequencies.
Add a small, frequency-based delay after asserting the FIFO reset
bits to guarantee the minimum reset duration, ensuring reliable
FIFO reset behavior.

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
(cherry picked from commit 5052511)
Upstream-status: available
Reduce the transfer duration scaling used by
test_spi_complete_multiple_timed. The recent increase in QSPI frequency
improves overall siwx91x performance, resulting in faster SPI transfers.

Adjust the scaling factor to keep the test timing expectations aligned
with the updated SPI transfer rates.

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
(cherry picked from commit ef4237b)
Upstream-status: available
Doing this increases the QSPI peripheral clock from 40 MHz to 80 MHz.
This improves flash access throughput and overall performance
on siwx91x devices, as QSPI is used for external flash operations.

Signed-off-by: Sai Santhosh Malae <Santhosh.Malae@silabs.com>
(cherry picked from commit 2ed5082)
Upstream-status: available
When an async transfer finished quickly, the internal state of
the driver could come out of sync with the hardware. The tx/rx
enabled flag and PM lock was taken after starting the DMA
transaction, which caused issues if the DMA complete callback
was called before the flags were updated. Set the flag and take
the PM lock prior to starting the DMA transaction to avoid this.

Also release the PM rx lock upon successful completion of a
transfer. The lock was previously only released when the user
manually called `uart_rx_disable()`.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
(cherry picked from commit 54bc315)
Upstream-status: available
Enable two-uart test for xg24_rb4187c. Modify the pinout for
the uart_loopback fixture to support two complete UARTs including
flow control by connecting pins EXP[4,6,8,10] with EXP[7,9,11,13]
on the expansion header.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
(cherry picked from commit e995e0c)
Upstream-status: available
Update the expected network coprocessor (nwp) firmware version.

Signed-off-by: Martin Hoff <martin.hoff@silabs.com>
Upstream-status: n/a
Make sure that arch.mode is set with appropriate flags before setting up
the privileged stack start.

Fixes zephyrproject-rtos#99895

Signed-off-by: Sudan Landge <sudan.landge@arm.com>
(cherry picked from commit 9962bc1)
Upstream-status: available
Fixes an issue where input events which have the sync flag set but are
neither X/Y coordiante updates nor press/release updates triggers a false
reporting of input to LVGL.

Signed-off-by: Fabian Blatz <fabianblatz@gmail.com>
(cherry picked from commit 25d96b2)
Upstream-status: available
Depending on the IP's `IC_TX_CMD_BLOCK_DEFAULT` parameter, we
might have to clear the `TX_CMD_BLOCK` bit on init so that
Controller mode works.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
(cherry picked from commit a028d8f)
Upstream-status: available
Enable PWM tests on xg24_rb4187c.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
(cherry picked from commit 8e6c936)
Upstream-status: available
Change the spi_loopback fixture to connect EXP4 to EXP7 instead
of EXP6 to be consistent with other loopback fixtures for this
board.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
(cherry picked from commit cc46fc2)
Upstream-status: available
Add overlay to enable test on xg24_rb4187c.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
(cherry picked from commit b7767e9)
Upstream-status: available
The GPIO port test modifies the state of the entire port (gpio
controller) associated with the test pin (typically a LED).

Support running GPIO port tests on a port that is also used for
other functions by saving and restoring the output state of the
GPIO port between each testcase.

This is required on certain Silicon Labs boards where the LED
used for the test is on the same port as the GPIO used to enable
console output ("vcom enable"). If the port state isn't restored
after the test, subsequent console output isn't received by the
debugger.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
(cherry picked from commit 1d398ae)
Upstream-status: available
The FW loader reports and manages exactly two slots:
 - slot 0: this is the slot for the application code to update
 - slot 1: this is the slot, in which the FW loader is placed

The slot 1 is reported, so tools can fetch metadata about the
FW loader installed on the device.
Unfortunately, currently SMP-based FW loader allows to issue slot erase
command for the slot 1, effectively erasing the FW loader code that is
being executed.

This change correctly identifies the slot 1 as an active one, marking it
as used and blocking erase operation on that slot.

Signed-off-by: Tomasz Chyrowicz <tomasz.chyrowicz@nordicsemi.no>
(cherry picked from commit 26128ab)
Upstream-status: available
…down

In case network interface goes down, all underlying TCP contexts are
being dereferenced, however they are not released until application
dereferences them as well (i.e. closed the socket). If the application
does not do so however timely, and network interface goes down again,
the TCP context would still be present on the active contexts list and
could've been dereferenced for the second time.

Fix this by checking the context state before dereferencing it on the
stack behalf. Non-listening TCP context are being set to CLOSED state
upon dereferencing.  For the listening contexts, the TCP context has
only one ref from the application side, so use the `accept_cb` pointer
value as an indicator that the accept callback, indicating an error,
has already been called for the context.

Additionally, add a mutex lock when releasing listening context on
network down even, to avoid potential races with yet unprocessed
incoming packets.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
(cherry picked from commit 913fae5)
Upstream-status: available
If the underlying listening TCP context reported an error, it's no
longer usable, therefore accept() call for such a socket should report
an error as well, otherwise it may block indefinitely.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
(cherry picked from commit 1a2d9f7)
Upstream-status: available
The mdns_responder sample has a simple TCP echo server running, however
the accept() function errors were ignored, making the server defunct in
case server socket started to report errors (for example when network
went down).

Update the sample to restart the echo server in case of accept() errors
to make the sample more reliable.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
(cherry picked from commit 735f16f)
Upstream-status: available
According to the docs the millis were in the format `.SSSSSS`. In
reality though, it only accepted exactly `.SSS`, not `.SS` or `.SSSS`
and specifically also not `.SSSSSS`, contrary to the docs. Further, it did
not fail with an error message but simply produced the wrong value.

With this change it accepts everything from `.` to `.SSSSSS` and
produces the correct result. This is compatible with the previous
behavior, with the documentation and with everything in between.

Signed-off-by: Martin Stumpf <finomnis@gmail.com>
(cherry picked from commit ffb046b)
Upstream-status: available
Chris Friedt and others added 9 commits February 18, 2026 11:12
The "check warns" workflow in CI warned over the use of `unsigned` as a
shorthand for `unsigned int` in several locations in
`lib/libc/minimal/include/ctype.h`.

```
 UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'
File:lib/libc/minimal/include/ctype.h
```

Adjust `unsigned` to `unsigned int` to avoid linter warnings.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
(cherry picked from commit 8a2442f)
Upstream-status: available
Based on review feedback, it was suggested to express ctype
character checks in a more direct fashion, rather than using
arithmetic, and allow the compiler to optimize as it sees fit.

https://github.com/zephyrproject-rtos/zephyr/pull/99451#\
discussion_r2530339430

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
(cherry picked from commit 6b393c7)
Upstream-status: available
A review comment in the PR below requested that unnecessary casts were
removed from ctype.h in the PR below.

zephyrproject-rtos#99451

Tested with manual compilation in C and C++ mode with the arguments
```shell
gcc -Wconversion -Werror -Wall -Wextra -Wint-conversion
clang -Wconversion -Werror -Wall -Wextra -Wint-conversion
gcc -Wconversion -Werror -Wall -Wimplicit--Wextra
clang++ -Wconversion -Werror -Wall -Wextra
```

and also with `-- -DCONFIG_COMPILER_WARNINGS_AS_ERRORS=y`

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
(cherry picked from commit 6b6a259)
Upstream-status: available
Add the functions below to the minimal libc ctype.h since they are
missing, and are required as of C89 (C99 for `isblank()`)

* `isblank()`
* `islower()`
* `ispunct()`

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
(cherry picked from commit de91735)
Upstream-status: available
A regression in 936d027 introduced a
subtle bug in the way that escaped expressions were handled.

The regression originated with the assumption that test data (originally
adapted from a 3rd-party testsuite) was correct when it was in fact
flawed.

Specifically, `fnmatch("[[?*\\]", "\\", 0)` should fail (`FNM_NOMATCH`),
since the "\\" sequence (a single backslash after compilation) escapes
the following ']' character, thus leaving the bracket expression
incomplete.

As @keith-packard  has pointed out,
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/\
V3_chap02.html#tag_18_13_01 says that a bracket expression is only
interpreted as a bracket expression, when a proper bracket expression
is formed.

Therefore, the pattern is interpreted as the sequence
`'['`, `'['`, `'?'`, `*` (wildcard), `']'` and the call should return
`FNM_NOMATCH` to indicate failure rather than 0 to indicate success.

Added new test cases from zephyrproject-rtos#98827 and some commentary for subsequent
reviewers.

This change does not completely fix zephyrproject-rtos#55186 but is related to it.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
(cherry picked from commit 637080e)
Upstream-status: available
A couple of tests were inconsistent with glibc and picolibc.

Significant rework done to the `fnmatch()` implementation which included
refreshing that and the `rangematch()` implementations from commit

0a3b2e376d150258c8294c12a85bec99546ab84b

in https://github.com/lattera/freebsd

Removed `match_posix_class()` and implemented that functionality as
`rangematch_cc()`, which uses 64-bit integer comparison for matching
`[:alnum:]` et al instead of string comparison. That likely only works
for the "C" locale.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
Signed-off-by: Harun Spago <harun.spago.code@gmail.com>
(cherry picked from commit de2d0c9)
Upstream-status: available
The tolower() function takes an int parameter. LLVM compilers generate a
warning if a char is passed instead.

Signed-off-by: Keith Short <keithshort@google.com>
(cherry picked from commit 4d81bdb)
Upstream-status: available
xg24_rb4187c has an external SPI NOR flash in addition to the
internal flash. Disable the NOR flash to make the test run on
the internal flash.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
(cherry picked from commit 15a43f6)
Upstream-status: available
Enable DMA tests on xg24_rb4187c.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
(cherry picked from commit ec072cb)
Upstream-status: available
@jhedberg Johan Hedberg (jhedberg) merged commit af205b8 into SiliconLabsSoftware:silabs/v2025.12 Feb 18, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.